From ad28ad18f9f4b83c1cff402785298a2f658d491c Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Sun, 8 Dec 2019 15:16:32 +0100 Subject: [PATCH] A very early grid bob. --- src/test/kc/complex/prebob/grid-bobs.kc | 53 +- src/test/ref/complex/prebob/grid-bobs.asm | 358 +- src/test/ref/complex/prebob/grid-bobs.cfg | 633 +- src/test/ref/complex/prebob/grid-bobs.log | 7523 +++++++++------------ src/test/ref/complex/prebob/grid-bobs.sym | 295 +- 5 files changed, 3842 insertions(+), 5020 deletions(-) diff --git a/src/test/kc/complex/prebob/grid-bobs.kc b/src/test/kc/complex/prebob/grid-bobs.kc index 34d7dcc94..07fcd379e 100644 --- a/src/test/kc/complex/prebob/grid-bobs.kc +++ b/src/test/kc/complex/prebob/grid-bobs.kc @@ -29,9 +29,9 @@ signed char[0x140] align(0x40) SIN = kickasm {{ signed char* COS = SIN+$40; // sin(x) = cos(x+PI/2) // The BASIC screen -const char* SCREEN_BASIC = 0x0400; +const char* BASIC_SCREEN = 0x0400; // The BASIC charset -const char* CHARSET_BASIC = 0x1000; +const char* BASIC_CHARSET = 0x1000; // The BOB screen const char* BOB_SCREEN = 0x2800; // The BOB charset @@ -48,7 +48,7 @@ const char BOB_SHIFTS_Y = 8; const char BOB_SUBTABLE_SIZE = BOB_SHIFTS_X*BOB_SHIFTS_Y; // The number of BOBs to render -const char NUM_BOBS = 20; +const char NUM_BOBS = 25; void main() { mulf_init(); @@ -58,25 +58,38 @@ void main() { *D018 = toD018(BOB_SCREEN, BOB_CHARSET); // Clear screen memset(BOB_SCREEN, 0x00, 1000); - // Render Rotated BOBs - char angle = 0; + + // Origin point + int origX = 0x0a00; + int origY = 0x0a00; + // Row and column offset vectors + int rowOffsetX = 0x0c00; + int rowOffsetY = 0x0100; + int colOffsetX = 0x0100; + int colOffsetY = 0x1800; + // Render Grid of BOBs while(true) { do { } while (*RASTER<$f8); *BORDERCOL = 0xf; renderBobCleanup(); - signed char r = 30; - char a = angle; - for(char i: 0..NUM_BOBS-1) { - //kickasm {{ .break }} - *BORDERCOL = 1; - int x = mulf8s(r, COS[a]) + 75*0x100; - int y = mulf8s(r, SIN[a])*2 + 90*0x100; - *BORDERCOL = 2; - a += 98; - r += 3; - renderBob(>x, >y); + int rowX = origX; + int rowY = origY; + for(char col: 0..4) { + int x = rowX; + int y = rowY; + for(char row: 0..4) { + //kickasm {{ .break }} + *BORDERCOL = 1; + renderBob(>x, >y); + x += rowOffsetX; + y += rowOffsetY; + *BORDERCOL = 2; + } + rowX += colOffsetX; + rowY += colOffsetY; } - angle += 3; + origX += 0x0100; + rowOffsetY += 0x0080; *BORDERCOL = 0; if(keyboard_key_pressed(KEY_SPACE)) { break; @@ -85,8 +98,8 @@ void main() { // Wait for space release while(keyboard_key_pressed(KEY_SPACE)) {} // Return to BASIC - vicSelectGfxBank(SCREEN_BASIC); - *D018 = toD018(SCREEN_BASIC, CHARSET_BASIC); + vicSelectGfxBank(BASIC_SCREEN); + *D018 = toD018(BASIC_SCREEN, BASIC_CHARSET); } // Table used for deleting rendered BOB's. Contains pointers to first char of each BOB. @@ -148,7 +161,7 @@ void renderBobCleanup() { // Creates the pre-shifted bobs into BOB_CHARSET and populates the BOB_TABLES // Modifies PROTO_BOB by shifting it around void prepareBobs() { - progress_init(SCREEN_BASIC); + progress_init(BASIC_SCREEN); bob_charset_next_id = 0; // Ensure that glyph #0 is empty charsetFindOrAddGlyph(PROTO_BOB+48, BOB_CHARSET); diff --git a/src/test/ref/complex/prebob/grid-bobs.asm b/src/test/ref/complex/prebob/grid-bobs.asm index 84bfb6adc..8df3da641 100644 --- a/src/test/ref/complex/prebob/grid-bobs.asm +++ b/src/test/ref/complex/prebob/grid-bobs.asm @@ -15,9 +15,9 @@ .label CIA2_PORT_A_DDR = $dd02 .const KEY_SPACE = $3c // The BASIC screen - .label SCREEN_BASIC = $400 + .label BASIC_SCREEN = $400 // The BASIC charset - .label CHARSET_BASIC = $1000 + .label BASIC_CHARSET = $1000 // The BOB screen .label BOB_SCREEN = $2800 // The BOB charset @@ -29,33 +29,37 @@ // The size of a sub-table of BOB_TABLES .const BOB_SUBTABLE_SIZE = BOB_SHIFTS_X*BOB_SHIFTS_Y // The number of BOBs to render - .const NUM_BOBS = $14 + .const NUM_BOBS = $19 .const SIZEOF_POINTER = 2 - .label COS = SIN+$40 // BOB charset ID of the next glyph to be added - .label bob_charset_next_id = $d + .label bob_charset_next_id = $e // Current index within the progress cursor (0-7) - .label progress_idx = 3 + .label progress_idx = 9 // Current position of the progress cursor - .label progress_cursor = $b + .label progress_cursor = $17 // Pointer to the next clean-up to add // Prepare for next clean-up - .label renderBobCleanupNext = 6 + .label renderBobCleanupNext = $a main: { + .const origY = $a00 + // Row and column offset vectors + .const rowOffsetX = $c00 + .const colOffsetX = $100 + .const colOffsetY = $1800 .const vicSelectGfxBank1_toDd001_return = 3 .const vicSelectGfxBank2_toDd001_return = 3 .const toD0181_return = (>(BOB_SCREEN&$3fff)*4)|(>BOB_CHARSET)/4&$f - .const toD0182_return = (>(SCREEN_BASIC&$3fff)*4)|(>CHARSET_BASIC)/4&$f - .label __10 = $b - .label __12 = $b - .label __13 = $b - .label x = 8 - .label y = $b - .label a = 4 - .label r = 3 - .label i = 5 - // Render Rotated BOBs - .label angle = 2 + .const toD0182_return = (>(BASIC_SCREEN&$3fff)*4)|(>BASIC_CHARSET)/4&$f + .label x = $13 + .label y = 3 + .label x_1 = 5 + .label y_1 = 7 + .label rowX = $13 + .label rowY = 3 + .label col = 2 + // Origin point + .label origX = $15 + .label rowOffsetY = $17 jsr mulf_init jsr prepareBobs jsr renderBobInit @@ -66,8 +70,15 @@ main: { lda #toD0181_return sta D018 jsr memset - lda #0 - sta.z angle + lda #<$100 + sta.z rowOffsetY + lda #>$100 + sta.z rowOffsetY+1 + lda #<$a00 + sta.z origX + lda #>$a00 + sta.z origX+1 + // Render Grid of BOBs __b2: lda RASTER cmp #$f8 @@ -75,75 +86,101 @@ main: { lda #$f sta BORDERCOL jsr renderBobCleanup - lda.z angle - sta.z a + lda.z origX + sta.z x + lda.z origX+1 + sta.z x+1 lda #0 - sta.z i + sta.z col lda #RENDERBOB_CLEANUP sta.z renderBobCleanupNext+1 - lda #$1e - sta.z r + lda #origY + sta.z y+1 __b4: + lda.z x + sta.z x_1 + lda.z x+1 + sta.z x_1+1 + lda.z y + sta.z y_1 + lda.z y+1 + sta.z y_1+1 + ldx #0 + __b5: //kickasm {{ .break }} lda #1 sta BORDERCOL - lda.z r - ldy.z a - ldx COS,y - jsr mulf8s - lda.z __10 + lda.z x_1+1 + sta.z renderBob.xpos + lda.z y_1+1 + sta.z renderBob.ypos + jsr renderBob clc - adc #<$4b*$100 - sta.z x - lda.z __10+1 - adc #>$4b*$100 - sta.z x+1 - lda.z r - ldy.z a - ldx SIN,y - jsr mulf8s - asl.z __13 - rol.z __13+1 + lda.z x_1 + adc #rowOffsetX + sta.z x_1+1 + lda.z y_1 clc - lda.z y - adc #<$5a*$100 - sta.z y - lda.z y+1 - adc #>$5a*$100 - sta.z y+1 + adc.z rowOffsetY + sta.z y_1 + lda.z y_1+1 + adc.z rowOffsetY+1 + sta.z y_1+1 lda #2 sta BORDERCOL - lax.z a - axs #-[$62] - stx.z a - lax.z r - axs #-[3] - stx.z r - lda.z x+1 - sta.z renderBob.xpos - lda.z y+1 - tax - jsr renderBob - inc.z i - lda #NUM_BOBS-1+1 - cmp.z i + inx + cpx #5 + bne __b5 + clc + lda.z rowX + adc #colOffsetX + sta.z rowX+1 + clc + lda.z rowY + adc #colOffsetY + sta.z rowY+1 + inc.z col + lda #5 + cmp.z col bne __b4 - lax.z angle - axs #-[3] - stx.z angle + clc + lda.z origX + adc #<$100 + sta.z origX + lda.z origX+1 + adc #>$100 + sta.z origX+1 + clc + lda.z rowOffsetY + adc #<$80 + sta.z rowOffsetY + lda.z rowOffsetY+1 + adc #>$80 + sta.z rowOffsetY+1 lda #0 sta BORDERCOL jsr keyboard_key_pressed cmp #0 - bne __b6 + bne __b8 jmp __b2 // Wait for space release - __b6: + __b8: jsr keyboard_key_pressed cmp #0 - bne __b6 + bne __b8 lda #3 sta CIA2_PORT_A_DDR lda #vicSelectGfxBank2_toDd001_return @@ -178,19 +215,21 @@ keyboard_matrix_read: { // Render a single BOB at a given x/y-position // X-position is 0-151. Each x-position is 2 pixels wide. // Y-position is 0-183. Each y-position is 1 pixel high. -// renderBob(byte zeropage($e) xpos, byte register(X) ypos) +// renderBob(byte zeropage($d) xpos, byte zeropage($e) ypos) renderBob: { - .label __2 = $b - .label __5 = $d - .label xpos = $e - .label x_char_offset = $a - .label y_offset = $b - .label screen = $b + .label __2 = $10 + .label __5 = $12 + .label xpos = $d + .label ypos = $e + .label x_char_offset = $f + .label y_offset = $10 + .label screen = $10 + .label bob_table_idx = $12 lda.z xpos lsr lsr sta.z x_char_offset - txa + lda.z ypos lsr lsr lsr @@ -214,16 +253,16 @@ renderBob: { bcc !+ inc.z screen+1 !: - txa - and #7 + lda #7 + and.z ypos asl asl sta.z __5 lda #3 and.z xpos clc - adc.z __5 - tax + adc.z bob_table_idx + sta.z bob_table_idx ldy #0 lda.z screen sta (renderBobCleanupNext),y @@ -237,112 +276,47 @@ renderBob: { bcc !+ inc.z renderBobCleanupNext+1 !: - lda BOB_TABLES,x + ldy.z bob_table_idx + lda BOB_TABLES,y ldy #0 sta (screen),y - lda BOB_TABLES+1*BOB_SUBTABLE_SIZE,x + ldy.z bob_table_idx + lda BOB_TABLES+1*BOB_SUBTABLE_SIZE,y ldy #$28 sta (screen),y - lda BOB_TABLES+2*BOB_SUBTABLE_SIZE,x + ldy.z bob_table_idx + lda BOB_TABLES+2*BOB_SUBTABLE_SIZE,y ldy #$50 sta (screen),y - lda BOB_TABLES+3*BOB_SUBTABLE_SIZE,x + ldy.z bob_table_idx + lda BOB_TABLES+3*BOB_SUBTABLE_SIZE,y ldy #1 sta (screen),y - lda BOB_TABLES+4*BOB_SUBTABLE_SIZE,x + ldy.z bob_table_idx + lda BOB_TABLES+4*BOB_SUBTABLE_SIZE,y ldy #$29 sta (screen),y - lda BOB_TABLES+5*BOB_SUBTABLE_SIZE,x + ldy.z bob_table_idx + lda BOB_TABLES+5*BOB_SUBTABLE_SIZE,y ldy #$51 sta (screen),y - lda BOB_TABLES+6*BOB_SUBTABLE_SIZE,x + ldy.z bob_table_idx + lda BOB_TABLES+6*BOB_SUBTABLE_SIZE,y ldy #2 sta (screen),y - lda BOB_TABLES+7*BOB_SUBTABLE_SIZE,x + ldy.z bob_table_idx + lda BOB_TABLES+7*BOB_SUBTABLE_SIZE,y ldy #$2a sta (screen),y - lda BOB_TABLES+8*BOB_SUBTABLE_SIZE,x + ldy.z bob_table_idx + lda BOB_TABLES+8*BOB_SUBTABLE_SIZE,y ldy #$52 sta (screen),y rts } -// Fast multiply two signed bytes to a word result -// mulf8s(signed byte register(A) a, signed byte register(X) b) -mulf8s: { - .label return = $b - jsr mulf8u_prepare - stx.z mulf8s_prepared.b - jsr mulf8s_prepared - rts -} -// Calculate fast multiply with a prepared unsigned byte to a word result -// The prepared number is set by calling mulf8s_prepare(byte a) -// mulf8s_prepared(signed byte zeropage($e) b) -mulf8s_prepared: { - .label memA = $fd - .label m = $b - .label b = $e - lda.z b - jsr mulf8u_prepared - lda memA - cmp #0 - bpl __b1 - lda.z m+1 - sec - sbc.z b - sta.z m+1 - __b1: - lda.z b - cmp #0 - bpl __b2 - lda.z m+1 - sec - sbc memA - sta.z m+1 - __b2: - rts -} -// Calculate fast multiply with a prepared unsigned byte to a word result -// The prepared number is set by calling mulf8u_prepare(byte a) -// mulf8u_prepared(byte register(A) b) -mulf8u_prepared: { - .label resL = $fe - .label memB = $ff - .label return = $b - sta memB - tax - sec - sm1: - lda mulf_sqr1_lo,x - sm2: - sbc mulf_sqr2_lo,x - sta resL - sm3: - lda mulf_sqr1_hi,x - sm4: - sbc mulf_sqr2_hi,x - sta memB - lda resL - sta.z return - lda memB - sta.z return+1 - rts -} -// Prepare for fast multiply with an unsigned byte to a word result -// mulf8u_prepare(byte register(A) a) -mulf8u_prepare: { - .label memA = $fd - sta memA - sta mulf8u_prepared.sm1+1 - sta mulf8u_prepared.sm3+1 - eor #$ff - sta mulf8u_prepared.sm2+1 - sta mulf8u_prepared.sm4+1 - rts -} // Clean Up the rendered BOB's renderBobCleanup: { - .label screen = $f + .label screen = $13 ldx #0 __b1: txa @@ -382,7 +356,7 @@ memset: { .const c = 0 .const num = $3e8 .label end = str+num - .label dst = 6 + .label dst = $15 lda #str @@ -407,10 +381,10 @@ memset: { } // Initialize the tables used by renderBob() renderBobInit: { - .label __0 = $f - .label __1 = $f - .label __6 = $11 - .label __7 = $f + .label __0 = $15 + .label __1 = $15 + .label __6 = $17 + .label __7 = $15 ldx #0 __b1: txa @@ -465,13 +439,13 @@ renderBobInit: { // Creates the pre-shifted bobs into BOB_CHARSET and populates the BOB_TABLES // Modifies PROTO_BOB by shifting it around prepareBobs: { - .label bob_table = $f + .label bob_table = 3 .label shift_y = 2 // Populate charset and tables - .label bob_glyph = 6 - .label cell = $a - .label bob_table_idx = 4 - .label shift_x = 5 + .label bob_glyph = $13 + .label cell = $12 + .label bob_table_idx = $c + .label shift_x = $d jsr progress_init lda #SCREEN_BASIC + lda #>BASIC_SCREEN sta.z progress_cursor+1 lda #0 sta.z shift_y @@ -580,10 +554,10 @@ progress_inc: { } // Looks through a charset to find a glyph if present. If not present it is added. // Returns the glyph ID -// charsetFindOrAddGlyph(byte* zeropage(6) glyph) +// charsetFindOrAddGlyph(byte* zeropage($13) glyph) charsetFindOrAddGlyph: { - .label glyph = 6 - .label glyph_cursor = $11 + .label glyph = $13 + .label glyph_cursor = 5 lda #BOB_CHARSET @@ -636,8 +610,8 @@ charsetFindOrAddGlyph: { } // Shift PROTO_BOB right one X pixel protoBobShiftRight: { - .label carry = $e - .label i = $a + .label carry = $f + .label i = $12 ldy #0 ldx #0 txa @@ -708,17 +682,17 @@ progress_init: { // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { // x/2 - .label c = $d + .label c = 9 // Counter used for determining x%2==0 - .label sqr1_hi = $f + .label sqr1_hi = $a // Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4 - .label sqr = $b - .label sqr1_lo = 6 + .label sqr = $15 + .label sqr1_lo = 7 // Decrease or increase x_255 - initially we decrease - .label sqr2_hi = 8 - .label sqr2_lo = $11 + .label sqr2_hi = $13 + .label sqr2_lo = $10 //Start with g(0)=f(255) - .label dir = $e + .label dir = $c ldx #0 lda #round($7fff*sin(i*2*PI/256)) - // Tables containing the char to use for a specific cell of a shifted BOB. // char_id = BOB_TABLES[cell*BOB_SUBTABLE_SIZE + shift_y*BOB_SHIFTS_X + shift_x]; BOB_TABLES: .fill 9*8*4, 0 diff --git a/src/test/ref/complex/prebob/grid-bobs.cfg b/src/test/ref/complex/prebob/grid-bobs.cfg index 5dc29688c..e62cc685e 100644 --- a/src/test/ref/complex/prebob/grid-bobs.cfg +++ b/src/test/ref/complex/prebob/grid-bobs.cfg @@ -12,16 +12,16 @@ main: scope:[main] from @1 [4] phi() [5] call mulf_init - to:main::@9 -main::@9: scope:[main] from main + to:main::@11 +main::@11: scope:[main] from main [6] phi() [7] call prepareBobs - to:main::@10 -main::@10: scope:[main] from main::@9 + to:main::@12 +main::@12: scope:[main] from main::@11 [8] phi() [9] call renderBobInit to:main::vicSelectGfxBank1 -main::vicSelectGfxBank1: scope:[main] from main::@10 +main::vicSelectGfxBank1: scope:[main] from main::@12 [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 to:main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 @@ -32,13 +32,14 @@ main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 to:main::toD0181 main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1 [13] phi() - to:main::@7 -main::@7: scope:[main] from main::toD0181 + to:main::@9 +main::@9: scope:[main] from main::toD0181 [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [15] call memset to:main::@1 -main::@1: scope:[main] from main::@15 main::@7 - [16] (byte) main::angle#8 ← phi( main::@7/(byte) 0 main::@15/(byte) main::angle#1 ) +main::@1: scope:[main] from main::@15 main::@9 + [16] (signed word) main::rowOffsetY#10 ← phi( main::@9/(signed word) $100 main::@15/(signed word) main::rowOffsetY#1 ) + [16] (signed word) main::origX#8 ← phi( main::@9/(signed word) $a00 main::@15/(signed word) main::origX#1 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 @@ -46,532 +47,460 @@ main::@2: scope:[main] from main::@1 main::@2 main::@3: scope:[main] from main::@2 [18] *((const byte*) BORDERCOL) ← (byte) $f [19] call renderBobCleanup - to:main::@11 -main::@11: scope:[main] from main::@3 - [20] (byte) main::a#6 ← (byte) main::angle#8 - to:main::@4 -main::@4: scope:[main] from main::@11 main::@14 - [21] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@14/(byte) main::i#1 ) - [21] (byte**) renderBobCleanupNext#17 ← phi( main::@11/(const byte**) RENDERBOB_CLEANUP main::@14/(byte**) renderBobCleanupNext#13 ) - [21] (byte) main::a#2 ← phi( main::@11/(byte) main::a#6 main::@14/(byte) main::a#1 ) - [21] (signed byte) main::r#2 ← phi( main::@11/(signed byte) $1e main::@14/(signed byte) main::r#1 ) - [22] *((const byte*) BORDERCOL) ← (byte) 1 - [23] (signed byte) mulf8s::a#0 ← (signed byte) main::r#2 - [24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2) - [25] call mulf8s - [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 - to:main::@12 -main::@12: scope:[main] from main::@4 - [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 - [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 - [29] (signed byte) mulf8s::a#1 ← (signed byte) main::r#2 - [30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2) - [31] call mulf8s - [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 to:main::@13 -main::@13: scope:[main] from main::@12 - [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 - [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 - [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 - [36] *((const byte*) BORDERCOL) ← (byte) 2 - [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 - [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 - [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 - [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 - [41] call renderBob - to:main::@14 -main::@14: scope:[main] from main::@13 - [42] (byte) main::i#1 ← ++ (byte) main::i#2 - [43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4 +main::@13: scope:[main] from main::@3 + [20] (signed word) main::x#4 ← (signed word) main::origX#8 + to:main::@4 +main::@4: scope:[main] from main::@13 main::@6 + [21] (byte) main::col#5 ← phi( main::@13/(byte) 0 main::@6/(byte) main::col#1 ) + [21] (byte**) renderBobCleanupNext#21 ← phi( main::@13/(const byte**) RENDERBOB_CLEANUP main::@6/(byte**) renderBobCleanupNext#13 ) + [21] (signed word) main::y#0 ← phi( main::@13/(const signed word) main::origY main::@6/(signed word) main::rowY#1 ) + [21] (signed word) main::x#0 ← phi( main::@13/(signed word) main::x#4 main::@6/(signed word) main::rowX#1 ) + [22] (signed word) main::x#7 ← (signed word) main::x#0 + [23] (signed word) main::y#6 ← (signed word) main::y#0 to:main::@5 -main::@5: scope:[main] from main::@14 - [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 - [45] *((const byte*) BORDERCOL) ← (byte) 0 - [46] call keyboard_key_pressed - [47] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 +main::@5: scope:[main] from main::@14 main::@4 + [24] (byte) main::row#2 ← phi( main::@14/(byte) main::row#1 main::@4/(byte) 0 ) + [24] (byte**) renderBobCleanupNext#17 ← phi( main::@14/(byte**) renderBobCleanupNext#13 main::@4/(byte**) renderBobCleanupNext#21 ) + [24] (signed word) main::y#2 ← phi( main::@14/(signed word) main::y#1 main::@4/(signed word) main::y#6 ) + [24] (signed word) main::x#2 ← phi( main::@14/(signed word) main::x#1 main::@4/(signed word) main::x#7 ) + [25] *((const byte*) BORDERCOL) ← (byte) 1 + [26] (byte) renderBob::xpos#0 ← > (signed word) main::x#2 + [27] (byte) renderBob::ypos#0 ← > (signed word) main::y#2 + [28] call renderBob + to:main::@14 +main::@14: scope:[main] from main::@5 + [29] (signed word) main::x#1 ← (signed word) main::x#2 + (const signed word) main::rowOffsetX + [30] (signed word) main::y#1 ← (signed word) main::y#2 + (signed word) main::rowOffsetY#10 + [31] *((const byte*) BORDERCOL) ← (byte) 2 + [32] (byte) main::row#1 ← ++ (byte) main::row#2 + [33] if((byte) main::row#1!=(byte) 5) goto main::@5 + to:main::@6 +main::@6: scope:[main] from main::@14 + [34] (signed word) main::rowX#1 ← (signed word) main::x#0 + (const signed word) main::colOffsetX + [35] (signed word) main::rowY#1 ← (signed word) main::y#0 + (const signed word) main::colOffsetY + [36] (byte) main::col#1 ← ++ (byte) main::col#5 + [37] if((byte) main::col#1!=(byte) 5) goto main::@4 + to:main::@7 +main::@7: scope:[main] from main::@6 + [38] (signed word) main::origX#1 ← (signed word) main::origX#8 + (signed word) $100 + [39] (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#10 + (signed word) $80 + [40] *((const byte*) BORDERCOL) ← (byte) 0 + [41] call keyboard_key_pressed + [42] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 to:main::@15 -main::@15: scope:[main] from main::@5 - [48] (byte~) main::$19 ← (byte) keyboard_key_pressed::return#2 - [49] if((byte) 0!=(byte~) main::$19) goto main::@6 +main::@15: scope:[main] from main::@7 + [43] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 + [44] if((byte) 0!=(byte~) main::$15) goto main::@8 to:main::@1 -main::@6: scope:[main] from main::@15 main::@16 - [50] phi() - [51] call keyboard_key_pressed - [52] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 +main::@8: scope:[main] from main::@15 main::@16 + [45] phi() + [46] call keyboard_key_pressed + [47] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 to:main::@16 -main::@16: scope:[main] from main::@6 - [53] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#3 - [54] if((byte) 0!=(byte~) main::$21) goto main::@6 +main::@16: scope:[main] from main::@8 + [48] (byte~) main::$17 ← (byte) keyboard_key_pressed::return#3 + [49] if((byte) 0!=(byte~) main::$17) goto main::@8 to:main::vicSelectGfxBank2 main::vicSelectGfxBank2: scope:[main] from main::@16 - [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 + [50] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 to:main::vicSelectGfxBank2_toDd001 main::vicSelectGfxBank2_toDd001: scope:[main] from main::vicSelectGfxBank2 - [56] phi() + [51] phi() to:main::vicSelectGfxBank2_@1 main::vicSelectGfxBank2_@1: scope:[main] from main::vicSelectGfxBank2_toDd001 - [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 + [52] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 to:main::toD0182 main::toD0182: scope:[main] from main::vicSelectGfxBank2_@1 - [58] phi() - to:main::@8 -main::@8: scope:[main] from main::toD0182 - [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 + [53] phi() + to:main::@10 +main::@10: scope:[main] from main::toD0182 + [54] *((const byte*) D018) ← (const byte) main::toD0182_return#0 to:main::@return -main::@return: scope:[main] from main::@8 - [60] return +main::@return: scope:[main] from main::@10 + [55] return to:@return (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@5 main::@6 - [61] phi() - [62] call keyboard_matrix_read - [63] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 +keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@7 main::@8 + [56] phi() + [57] call keyboard_matrix_read + [58] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_key_pressed::@1 keyboard_key_pressed::@1: scope:[keyboard_key_pressed] from keyboard_key_pressed - [64] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - [65] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0) + [59] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + [60] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0) to:keyboard_key_pressed::@return keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@1 - [66] return + [61] return to:@return (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed - [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) - [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) + [62] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) + [63] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) to:keyboard_matrix_read::@return keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read - [69] return + [64] return to:@return (void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos) -renderBob: scope:[renderBob] from main::@13 - [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 - [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 - [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 - [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) - [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 - [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 - [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 - [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 - [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 - [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 - [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 - [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER - [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) - [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) +renderBob: scope:[renderBob] from main::@5 + [65] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 + [66] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 + [67] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 + [68] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) + [69] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 + [70] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 + [71] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 + [72] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 + [73] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 + [74] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 + [75] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 + [76] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER + [77] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) + [78] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [79] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [80] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [81] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [82] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [83] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [84] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [85] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) to:renderBob::@return renderBob::@return: scope:[renderBob] from renderBob - [91] return - to:@return - -(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) -mulf8s: scope:[mulf8s] from main::@12 main::@4 - [92] (signed byte) mulf8s::b#2 ← phi( main::@12/(signed byte) mulf8s::b#1 main::@4/(signed byte) mulf8s::b#0 ) - [92] (signed byte) mulf8s::mulf8s_prepare1_a#0 ← phi( main::@12/(signed byte) mulf8s::a#1 main::@4/(signed byte) mulf8s::a#0 ) - to:mulf8s::mulf8s_prepare1 -mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s - [93] (byte) mulf8u_prepare::a#0 ← (byte)(signed byte) mulf8s::mulf8s_prepare1_a#0 - [94] call mulf8u_prepare - to:mulf8s::@1 -mulf8s::@1: scope:[mulf8s] from mulf8s::mulf8s_prepare1 - [95] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#2 - [96] call mulf8s_prepared - to:mulf8s::@2 -mulf8s::@2: scope:[mulf8s] from mulf8s::@1 - [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 - to:mulf8s::@return -mulf8s::@return: scope:[mulf8s] from mulf8s::@2 - [98] return - to:@return - -(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@1 - [99] (byte) mulf8u_prepared::b#0 ← (byte)(signed byte) mulf8s_prepared::b#0 - [100] call mulf8u_prepared - [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 - to:mulf8s_prepared::@5 -mulf8s_prepared::@5: scope:[mulf8s_prepared] from mulf8s_prepared - [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 - [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 - to:mulf8s_prepared::@3 -mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@5 - [104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 - [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 - [106] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 - to:mulf8s_prepared::@1 -mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@5 - [107] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@5/(word) mulf8s_prepared::m#0 ) - [108] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 - to:mulf8s_prepared::@4 -mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - [109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 - [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) - [111] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 - to:mulf8s_prepared::@2 -mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - [112] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) - to:mulf8s_prepared::@return -mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - [113] return - to:@return - -(word()) mulf8u_prepared((byte) mulf8u_prepared::b) -mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared - [114] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#0 - asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) - to:mulf8u_prepared::@return -mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - [117] return - to:@return - -(void()) mulf8u_prepare((byte) mulf8u_prepare::a) -mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1 - [118] *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#0 - asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } - to:mulf8u_prepare::@return -mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - [120] return + [86] return to:@return (void()) renderBobCleanup() renderBobCleanup: scope:[renderBobCleanup] from main::@3 - [121] phi() + [87] phi() to:renderBobCleanup::@1 renderBobCleanup::@1: scope:[renderBobCleanup] from renderBobCleanup renderBobCleanup::@1 - [122] (byte) renderBobCleanup::i#2 ← phi( renderBobCleanup/(byte) 0 renderBobCleanup::@1/(byte) renderBobCleanup::i#1 ) - [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 - [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) - [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 - [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 - [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 - [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 - [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 - [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 - [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 - [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 - [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 - [134] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2 - [135] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1 + [88] (byte) renderBobCleanup::i#2 ← phi( renderBobCleanup/(byte) 0 renderBobCleanup::@1/(byte) renderBobCleanup::i#1 ) + [89] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 + [90] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) + [91] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 + [92] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 + [93] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 + [94] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 + [95] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 + [96] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 + [97] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 + [98] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 + [99] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 + [100] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2 + [101] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1 to:renderBobCleanup::@return renderBobCleanup::@return: scope:[renderBobCleanup] from renderBobCleanup::@1 - [136] return + [102] return to:@return (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) -memset: scope:[memset] from main::@7 - [137] phi() +memset: scope:[memset] from main::@9 + [103] phi() to:memset::@1 memset::@1: scope:[memset] from memset memset::@2 - [138] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 ) - [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 + [104] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 ) + [105] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 to:memset::@return memset::@return: scope:[memset] from memset::@1 - [140] return + [106] return to:@return memset::@2: scope:[memset] from memset::@1 - [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 - [142] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [107] *((byte*) memset::dst#2) ← (const byte) memset::c#0 + [108] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 to:memset::@1 (void()) renderBobInit() -renderBobInit: scope:[renderBobInit] from main::@10 - [143] phi() +renderBobInit: scope:[renderBobInit] from main::@12 + [109] phi() to:renderBobInit::@1 renderBobInit::@1: scope:[renderBobInit] from renderBobInit renderBobInit::@1 - [144] (byte) renderBobInit::y#2 ← phi( renderBobInit/(byte) 0 renderBobInit::@1/(byte) renderBobInit::y#1 ) - [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 - [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 - [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 - [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 - [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 - [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 - [151] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2 - [152] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1 + [110] (byte) renderBobInit::y#2 ← phi( renderBobInit/(byte) 0 renderBobInit::@1/(byte) renderBobInit::y#1 ) + [111] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 + [112] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 + [113] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 + [114] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 + [115] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 + [116] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 + [117] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2 + [118] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1 to:renderBobInit::@2 renderBobInit::@2: scope:[renderBobInit] from renderBobInit::@1 renderBobInit::@2 - [153] (byte) renderBobInit::i#2 ← phi( renderBobInit::@1/(byte) 0 renderBobInit::@2/(byte) renderBobInit::i#1 ) - [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 - [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN - [156] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2 - [157] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2 + [119] (byte) renderBobInit::i#2 ← phi( renderBobInit::@1/(byte) 0 renderBobInit::@2/(byte) renderBobInit::i#1 ) + [120] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 + [121] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN + [122] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2 + [123] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2 to:renderBobInit::@return renderBobInit::@return: scope:[renderBobInit] from renderBobInit::@2 - [158] return + [124] return to:@return (void()) prepareBobs() -prepareBobs: scope:[prepareBobs] from main::@9 - [159] phi() - [160] call progress_init +prepareBobs: scope:[prepareBobs] from main::@11 + [125] phi() + [126] call progress_init to:prepareBobs::@8 prepareBobs::@8: scope:[prepareBobs] from prepareBobs - [161] phi() - [162] call charsetFindOrAddGlyph + [127] phi() + [128] call charsetFindOrAddGlyph to:prepareBobs::@1 prepareBobs::@1: scope:[prepareBobs] from prepareBobs::@8 prepareBobs::@9 - [163] (byte) prepareBobs::bob_table_idx#6 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::bob_table_idx#12 ) - [163] (byte) bob_charset_next_id#14 ← phi( prepareBobs::@8/(byte) bob_charset_next_id#16 prepareBobs::@9/(byte) bob_charset_next_id#30 ) - [163] (byte) progress_idx#16 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) progress_idx#31 ) - [163] (byte*) progress_cursor#15 ← phi( prepareBobs::@8/(const byte*) SCREEN_BASIC prepareBobs::@9/(byte*) progress_cursor#31 ) - [163] (byte) prepareBobs::shift_y#2 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::shift_y#1 ) - [164] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2 + [129] (byte) prepareBobs::bob_table_idx#6 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::bob_table_idx#12 ) + [129] (byte) bob_charset_next_id#14 ← phi( prepareBobs::@8/(byte) bob_charset_next_id#16 prepareBobs::@9/(byte) bob_charset_next_id#30 ) + [129] (byte) progress_idx#16 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) progress_idx#31 ) + [129] (byte*) progress_cursor#15 ← phi( prepareBobs::@8/(const byte*) BASIC_SCREEN prepareBobs::@9/(byte*) progress_cursor#31 ) + [129] (byte) prepareBobs::shift_y#2 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::shift_y#1 ) + [130] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2 to:prepareBobs::@return prepareBobs::@return: scope:[prepareBobs] from prepareBobs::@1 - [165] return + [131] return to:@return prepareBobs::@2: scope:[prepareBobs] from prepareBobs::@1 prepareBobs::@13 - [166] (byte) progress_idx#31 ← phi( prepareBobs::@1/(byte) progress_idx#16 prepareBobs::@13/(byte) progress_idx#25 ) - [166] (byte*) progress_cursor#31 ← phi( prepareBobs::@1/(byte*) progress_cursor#15 prepareBobs::@13/(byte*) progress_cursor#24 ) - [166] (byte) bob_charset_next_id#30 ← phi( prepareBobs::@1/(byte) bob_charset_next_id#14 prepareBobs::@13/(byte) bob_charset_next_id#21 ) - [166] (byte) prepareBobs::bob_table_idx#12 ← phi( prepareBobs::@1/(byte) prepareBobs::bob_table_idx#6 prepareBobs::@13/(byte) prepareBobs::bob_table_idx#1 ) - [166] (byte) prepareBobs::shift_x#2 ← phi( prepareBobs::@1/(byte) 0 prepareBobs::@13/(byte) prepareBobs::shift_x#1 ) - [167] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@3 + [132] (byte) progress_idx#31 ← phi( prepareBobs::@1/(byte) progress_idx#16 prepareBobs::@13/(byte) progress_idx#25 ) + [132] (byte*) progress_cursor#31 ← phi( prepareBobs::@1/(byte*) progress_cursor#15 prepareBobs::@13/(byte*) progress_cursor#24 ) + [132] (byte) bob_charset_next_id#30 ← phi( prepareBobs::@1/(byte) bob_charset_next_id#14 prepareBobs::@13/(byte) bob_charset_next_id#21 ) + [132] (byte) prepareBobs::bob_table_idx#12 ← phi( prepareBobs::@1/(byte) prepareBobs::bob_table_idx#6 prepareBobs::@13/(byte) prepareBobs::bob_table_idx#1 ) + [132] (byte) prepareBobs::shift_x#2 ← phi( prepareBobs::@1/(byte) 0 prepareBobs::@13/(byte) prepareBobs::shift_x#1 ) + [133] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@3 to:prepareBobs::@4 prepareBobs::@4: scope:[prepareBobs] from prepareBobs::@2 - [168] phi() - [169] call protoBobShiftDown + [134] phi() + [135] call protoBobShiftDown to:prepareBobs::@9 prepareBobs::@9: scope:[prepareBobs] from prepareBobs::@4 - [170] (byte) prepareBobs::shift_y#1 ← ++ (byte) prepareBobs::shift_y#2 + [136] (byte) prepareBobs::shift_y#1 ← ++ (byte) prepareBobs::shift_y#2 to:prepareBobs::@1 prepareBobs::@3: scope:[prepareBobs] from prepareBobs::@2 - [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 + [137] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 to:prepareBobs::@5 prepareBobs::@5: scope:[prepareBobs] from prepareBobs::@11 prepareBobs::@3 - [172] (byte*) progress_cursor#24 ← phi( prepareBobs::@11/(byte*) progress_cursor#17 prepareBobs::@3/(byte*) progress_cursor#31 ) - [172] (byte) progress_idx#25 ← phi( prepareBobs::@11/(byte) progress_idx#10 prepareBobs::@3/(byte) progress_idx#31 ) - [172] (byte*) prepareBobs::bob_table#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_table#1 prepareBobs::@3/(byte*) prepareBobs::bob_table#0 ) - [172] (byte) bob_charset_next_id#21 ← phi( prepareBobs::@11/(byte) bob_charset_next_id#16 prepareBobs::@3/(byte) bob_charset_next_id#30 ) - [172] (byte*) prepareBobs::bob_glyph#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_glyph#1 prepareBobs::@3/(const byte*) PROTO_BOB ) - [172] (byte) prepareBobs::cell#2 ← phi( prepareBobs::@11/(byte) prepareBobs::cell#1 prepareBobs::@3/(byte) 0 ) - [173] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6 + [138] (byte*) progress_cursor#24 ← phi( prepareBobs::@11/(byte*) progress_cursor#17 prepareBobs::@3/(byte*) progress_cursor#31 ) + [138] (byte) progress_idx#25 ← phi( prepareBobs::@11/(byte) progress_idx#10 prepareBobs::@3/(byte) progress_idx#31 ) + [138] (byte*) prepareBobs::bob_table#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_table#1 prepareBobs::@3/(byte*) prepareBobs::bob_table#0 ) + [138] (byte) bob_charset_next_id#21 ← phi( prepareBobs::@11/(byte) bob_charset_next_id#16 prepareBobs::@3/(byte) bob_charset_next_id#30 ) + [138] (byte*) prepareBobs::bob_glyph#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_glyph#1 prepareBobs::@3/(const byte*) PROTO_BOB ) + [138] (byte) prepareBobs::cell#2 ← phi( prepareBobs::@11/(byte) prepareBobs::cell#1 prepareBobs::@3/(byte) 0 ) + [139] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6 to:prepareBobs::@7 prepareBobs::@7: scope:[prepareBobs] from prepareBobs::@5 - [174] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12 - [175] call protoBobShiftRight + [140] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12 + [141] call protoBobShiftRight to:prepareBobs::@12 prepareBobs::@12: scope:[prepareBobs] from prepareBobs::@7 - [176] phi() - [177] call protoBobShiftRight + [142] phi() + [143] call protoBobShiftRight to:prepareBobs::@13 prepareBobs::@13: scope:[prepareBobs] from prepareBobs::@12 - [178] (byte) prepareBobs::shift_x#1 ← ++ (byte) prepareBobs::shift_x#2 + [144] (byte) prepareBobs::shift_x#1 ← ++ (byte) prepareBobs::shift_x#2 to:prepareBobs::@2 prepareBobs::@6: scope:[prepareBobs] from prepareBobs::@5 - [179] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 - [180] call charsetFindOrAddGlyph - [181] (byte) charsetFindOrAddGlyph::return#1 ← (byte) charsetFindOrAddGlyph::glyph_id#11 + [145] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + [146] call charsetFindOrAddGlyph + [147] (byte) charsetFindOrAddGlyph::return#1 ← (byte) charsetFindOrAddGlyph::glyph_id#11 to:prepareBobs::@10 prepareBobs::@10: scope:[prepareBobs] from prepareBobs::@6 - [182] (byte~) prepareBobs::$6 ← (byte) charsetFindOrAddGlyph::return#1 - [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 - [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 - [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y - [186] call progress_inc + [148] (byte~) prepareBobs::$6 ← (byte) charsetFindOrAddGlyph::return#1 + [149] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 + [150] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 + [151] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y + [152] call progress_inc to:prepareBobs::@11 prepareBobs::@11: scope:[prepareBobs] from prepareBobs::@10 - [187] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2 + [153] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2 to:prepareBobs::@5 (void()) progress_inc() progress_inc: scope:[progress_inc] from prepareBobs::@10 - [188] (byte) progress_idx#8 ← ++ (byte) progress_idx#25 - [189] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1 + [154] (byte) progress_idx#8 ← ++ (byte) progress_idx#25 + [155] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1 to:progress_inc::@2 progress_inc::@2: scope:[progress_inc] from progress_inc - [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) - [191] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24 + [156] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) + [157] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24 to:progress_inc::@1 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 - [192] (byte*) progress_cursor#17 ← phi( progress_inc/(byte*) progress_cursor#24 progress_inc::@2/(byte*) progress_cursor#8 ) - [192] (byte) progress_idx#10 ← phi( progress_inc/(byte) progress_idx#8 progress_inc::@2/(byte) 0 ) - [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) + [158] (byte*) progress_cursor#17 ← phi( progress_inc/(byte*) progress_cursor#24 progress_inc::@2/(byte*) progress_cursor#8 ) + [158] (byte) progress_idx#10 ← phi( progress_inc/(byte) progress_idx#8 progress_inc::@2/(byte) 0 ) + [159] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) to:progress_inc::@return progress_inc::@return: scope:[progress_inc] from progress_inc::@1 - [194] return + [160] return to:@return (byte()) charsetFindOrAddGlyph((byte*) charsetFindOrAddGlyph::glyph , (byte*) charsetFindOrAddGlyph::charset) charsetFindOrAddGlyph: scope:[charsetFindOrAddGlyph] from prepareBobs::@6 prepareBobs::@8 - [195] (byte*) charsetFindOrAddGlyph::glyph#10 ← phi( prepareBobs::@8/(const byte*) PROTO_BOB+(byte) $30 prepareBobs::@6/(byte*) charsetFindOrAddGlyph::glyph#1 ) - [195] (byte) bob_charset_next_id#23 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@6/(byte) bob_charset_next_id#21 ) + [161] (byte*) charsetFindOrAddGlyph::glyph#10 ← phi( prepareBobs::@8/(const byte*) PROTO_BOB+(byte) $30 prepareBobs::@6/(byte*) charsetFindOrAddGlyph::glyph#1 ) + [161] (byte) bob_charset_next_id#23 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@6/(byte) bob_charset_next_id#21 ) to:charsetFindOrAddGlyph::@1 charsetFindOrAddGlyph::@1: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph charsetFindOrAddGlyph::@6 - [196] (byte*) charsetFindOrAddGlyph::glyph_cursor#11 ← phi( charsetFindOrAddGlyph/(const byte*) BOB_CHARSET charsetFindOrAddGlyph::@6/(byte*) charsetFindOrAddGlyph::glyph_cursor#1 ) - [196] (byte) charsetFindOrAddGlyph::glyph_id#11 ← phi( charsetFindOrAddGlyph/(byte) 0 charsetFindOrAddGlyph::@6/(byte) charsetFindOrAddGlyph::glyph_id#1 ) - [197] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2 + [162] (byte*) charsetFindOrAddGlyph::glyph_cursor#11 ← phi( charsetFindOrAddGlyph/(const byte*) BOB_CHARSET charsetFindOrAddGlyph::@6/(byte*) charsetFindOrAddGlyph::glyph_cursor#1 ) + [162] (byte) charsetFindOrAddGlyph::glyph_id#11 ← phi( charsetFindOrAddGlyph/(byte) 0 charsetFindOrAddGlyph::@6/(byte) charsetFindOrAddGlyph::glyph_id#1 ) + [163] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2 to:charsetFindOrAddGlyph::@7 charsetFindOrAddGlyph::@7: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@1 charsetFindOrAddGlyph::@8 - [198] (byte) charsetFindOrAddGlyph::i1#2 ← phi( charsetFindOrAddGlyph::@8/(byte) charsetFindOrAddGlyph::i1#1 charsetFindOrAddGlyph::@1/(byte) 0 ) - [199] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@8 + [164] (byte) charsetFindOrAddGlyph::i1#2 ← phi( charsetFindOrAddGlyph::@8/(byte) charsetFindOrAddGlyph::i1#1 charsetFindOrAddGlyph::@1/(byte) 0 ) + [165] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@8 to:charsetFindOrAddGlyph::@9 charsetFindOrAddGlyph::@9: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@7 - [200] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23 + [166] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23 to:charsetFindOrAddGlyph::@return charsetFindOrAddGlyph::@return: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@9 - [201] (byte) bob_charset_next_id#16 ← phi( charsetFindOrAddGlyph::@5/(byte) bob_charset_next_id#23 charsetFindOrAddGlyph::@9/(byte) bob_charset_next_id#8 ) - [202] return + [167] (byte) bob_charset_next_id#16 ← phi( charsetFindOrAddGlyph::@5/(byte) bob_charset_next_id#23 charsetFindOrAddGlyph::@9/(byte) bob_charset_next_id#8 ) + [168] return to:@return charsetFindOrAddGlyph::@8: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@7 - [203] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) - [204] (byte) charsetFindOrAddGlyph::i1#1 ← ++ (byte) charsetFindOrAddGlyph::i1#2 + [169] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) + [170] (byte) charsetFindOrAddGlyph::i1#1 ← ++ (byte) charsetFindOrAddGlyph::i1#2 to:charsetFindOrAddGlyph::@7 charsetFindOrAddGlyph::@2: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@1 charsetFindOrAddGlyph::@4 - [205] (byte) charsetFindOrAddGlyph::i#2 ← phi( charsetFindOrAddGlyph::@1/(byte) 0 charsetFindOrAddGlyph::@4/(byte) charsetFindOrAddGlyph::i#1 ) - [206] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@3 + [171] (byte) charsetFindOrAddGlyph::i#2 ← phi( charsetFindOrAddGlyph::@1/(byte) 0 charsetFindOrAddGlyph::@4/(byte) charsetFindOrAddGlyph::i#1 ) + [172] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@3 to:charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@3: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@2 - [207] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 + [173] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 to:charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@5: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@2 charsetFindOrAddGlyph::@3 - [208] (byte) charsetFindOrAddGlyph::found#2 ← phi( charsetFindOrAddGlyph::@3/(byte) 0 charsetFindOrAddGlyph::@2/(byte) 1 ) - [209] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@6 + [174] (byte) charsetFindOrAddGlyph::found#2 ← phi( charsetFindOrAddGlyph::@3/(byte) 0 charsetFindOrAddGlyph::@2/(byte) 1 ) + [175] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@6 to:charsetFindOrAddGlyph::@return charsetFindOrAddGlyph::@6: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@5 - [210] (byte) charsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) charsetFindOrAddGlyph::glyph_id#11 - [211] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 + [176] (byte) charsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) charsetFindOrAddGlyph::glyph_id#11 + [177] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 to:charsetFindOrAddGlyph::@1 charsetFindOrAddGlyph::@4: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@3 - [212] (byte) charsetFindOrAddGlyph::i#1 ← ++ (byte) charsetFindOrAddGlyph::i#2 + [178] (byte) charsetFindOrAddGlyph::i#1 ← ++ (byte) charsetFindOrAddGlyph::i#2 to:charsetFindOrAddGlyph::@2 (void()) protoBobShiftRight() protoBobShiftRight: scope:[protoBobShiftRight] from prepareBobs::@12 prepareBobs::@7 - [213] phi() + [179] phi() to:protoBobShiftRight::@1 protoBobShiftRight::@1: scope:[protoBobShiftRight] from protoBobShiftRight protoBobShiftRight::@6 - [214] (byte) protoBobShiftRight::carry#2 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::carry#10 ) - [214] (byte) protoBobShiftRight::j#3 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::j#10 ) - [214] (byte) protoBobShiftRight::i#2 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::i#1 ) - [215] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2 + [180] (byte) protoBobShiftRight::carry#2 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::carry#10 ) + [180] (byte) protoBobShiftRight::j#3 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::j#10 ) + [180] (byte) protoBobShiftRight::i#2 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::i#1 ) + [181] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2 to:protoBobShiftRight::@return protoBobShiftRight::@return: scope:[protoBobShiftRight] from protoBobShiftRight::@1 - [216] return + [182] return to:@return protoBobShiftRight::@2: scope:[protoBobShiftRight] from protoBobShiftRight::@1 - [217] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 - [218] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@3 + [183] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 + [184] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@3 to:protoBobShiftRight::@4 protoBobShiftRight::@3: scope:[protoBobShiftRight] from protoBobShiftRight::@2 - [219] phi() + [185] phi() to:protoBobShiftRight::@4 protoBobShiftRight::@4: scope:[protoBobShiftRight] from protoBobShiftRight::@2 protoBobShiftRight::@3 - [220] (byte) protoBobShiftRight::carry#1 ← phi( protoBobShiftRight::@3/(byte) $80 protoBobShiftRight::@2/(byte) 0 ) - [221] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 - [222] (byte~) protoBobShiftRight::$6 ← (byte) protoBobShiftRight::carry#2 | (byte~) protoBobShiftRight::$5 - [223] *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) ← (byte~) protoBobShiftRight::$6 - [224] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@5 + [186] (byte) protoBobShiftRight::carry#1 ← phi( protoBobShiftRight::@3/(byte) $80 protoBobShiftRight::@2/(byte) 0 ) + [187] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 + [188] (byte~) protoBobShiftRight::$6 ← (byte) protoBobShiftRight::carry#2 | (byte~) protoBobShiftRight::$5 + [189] *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) ← (byte~) protoBobShiftRight::$6 + [190] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@5 to:protoBobShiftRight::@7 protoBobShiftRight::@7: scope:[protoBobShiftRight] from protoBobShiftRight::@4 - [225] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 + [191] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 to:protoBobShiftRight::@6 protoBobShiftRight::@6: scope:[protoBobShiftRight] from protoBobShiftRight::@5 protoBobShiftRight::@7 - [226] (byte) protoBobShiftRight::j#10 ← phi( protoBobShiftRight::@7/(byte) protoBobShiftRight::j#2 protoBobShiftRight::@5/(byte) protoBobShiftRight::j#1 ) - [227] (byte) protoBobShiftRight::i#1 ← ++ (byte) protoBobShiftRight::i#2 - [228] (byte) protoBobShiftRight::carry#10 ← (byte) protoBobShiftRight::carry#1 + [192] (byte) protoBobShiftRight::j#10 ← phi( protoBobShiftRight::@7/(byte) protoBobShiftRight::j#2 protoBobShiftRight::@5/(byte) protoBobShiftRight::j#1 ) + [193] (byte) protoBobShiftRight::i#1 ← ++ (byte) protoBobShiftRight::i#2 + [194] (byte) protoBobShiftRight::carry#10 ← (byte) protoBobShiftRight::carry#1 to:protoBobShiftRight::@1 protoBobShiftRight::@5: scope:[protoBobShiftRight] from protoBobShiftRight::@4 - [229] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f + [195] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f to:protoBobShiftRight::@6 (void()) protoBobShiftDown() protoBobShiftDown: scope:[protoBobShiftDown] from prepareBobs::@4 - [230] phi() + [196] phi() to:protoBobShiftDown::@1 protoBobShiftDown::@1: scope:[protoBobShiftDown] from protoBobShiftDown protoBobShiftDown::@2 - [231] (byte) protoBobShiftDown::i#2 ← phi( protoBobShiftDown/(byte) $17 protoBobShiftDown::@2/(byte) protoBobShiftDown::i#1 ) - [232] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2 + [197] (byte) protoBobShiftDown::i#2 ← phi( protoBobShiftDown/(byte) $17 protoBobShiftDown::@2/(byte) protoBobShiftDown::i#1 ) + [198] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2 to:protoBobShiftDown::@3 protoBobShiftDown::@3: scope:[protoBobShiftDown] from protoBobShiftDown::@1 - [233] *((const byte*) PROTO_BOB) ← (byte) 0 - [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 - [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 + [199] *((const byte*) PROTO_BOB) ← (byte) 0 + [200] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 + [201] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 to:protoBobShiftDown::@return protoBobShiftDown::@return: scope:[protoBobShiftDown] from protoBobShiftDown::@3 - [236] return + [202] return to:@return protoBobShiftDown::@2: scope:[protoBobShiftDown] from protoBobShiftDown::@1 - [237] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) - [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) - [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 - [240] (byte) protoBobShiftDown::i#1 ← -- (byte) protoBobShiftDown::i#2 + [203] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) + [204] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) + [205] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 + [206] (byte) protoBobShiftDown::i#1 ← -- (byte) protoBobShiftDown::i#2 to:protoBobShiftDown::@1 (void()) progress_init((byte*) progress_init::line) progress_init: scope:[progress_init] from prepareBobs - [241] phi() + [207] phi() to:progress_init::@return progress_init::@return: scope:[progress_init] from progress_init - [242] return + [208] return to:@return (void()) mulf_init() mulf_init: scope:[mulf_init] from main - [243] phi() + [209] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@3 - [244] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 ) - [244] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 ) - [244] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 ) - [244] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 ) - [244] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 ) - [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 + [210] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 ) + [210] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 ) + [210] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 ) + [210] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 ) + [210] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 ) + [211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 mulf_init::@8 - [246] (byte) mulf_init::dir#2 ← phi( mulf_init::@8/(byte) mulf_init::dir#4 mulf_init::@1/(byte) $ff ) - [246] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_hi#1 mulf_init::@1/(const byte*) mulf_sqr2_hi ) - [246] (byte) mulf_init::x_255#2 ← phi( mulf_init::@8/(byte) mulf_init::x_255#1 mulf_init::@1/(byte) -1 ) - [246] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_lo#1 mulf_init::@1/(const byte*) mulf_sqr2_lo ) - [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 + [212] (byte) mulf_init::dir#2 ← phi( mulf_init::@8/(byte) mulf_init::dir#4 mulf_init::@1/(byte) $ff ) + [212] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_hi#1 mulf_init::@1/(const byte*) mulf_sqr2_hi ) + [212] (byte) mulf_init::x_255#2 ← phi( mulf_init::@8/(byte) mulf_init::x_255#1 mulf_init::@1/(byte) -1 ) + [212] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_lo#1 mulf_init::@1/(const byte*) mulf_sqr2_lo ) + [213] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 to:mulf_init::@7 mulf_init::@7: scope:[mulf_init] from mulf_init::@5 - [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) - [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) + [214] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) + [215] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@7 - [250] return + [216] return to:@return mulf_init::@6: scope:[mulf_init] from mulf_init::@5 - [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) - [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) - [253] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [254] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [255] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 + [217] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) + [218] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) + [219] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [220] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [221] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 to:mulf_init::@8 mulf_init::@9: scope:[mulf_init] from mulf_init::@6 - [256] phi() + [222] phi() to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@6 mulf_init::@9 - [257] (byte) mulf_init::dir#4 ← phi( mulf_init::@9/(byte) mulf_init::dir#2 mulf_init::@6/(byte) 1 ) - [258] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [223] (byte) mulf_init::dir#4 ← phi( mulf_init::@9/(byte) mulf_init::dir#2 mulf_init::@6/(byte) 1 ) + [224] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 to:mulf_init::@5 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 - [259] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 - [261] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 + [225] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [226] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 + [227] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@2 - [262] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [263] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [228] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [229] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [264] (byte) mulf_init::x_2#2 ← phi( mulf_init::@2/(byte) mulf_init::x_2#3 mulf_init::@4/(byte) mulf_init::x_2#1 ) - [264] (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#4 mulf_init::@4/(word) mulf_init::sqr#2 ) - [265] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 - [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 - [267] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 - [268] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 - [269] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [270] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [271] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [230] (byte) mulf_init::x_2#2 ← phi( mulf_init::@2/(byte) mulf_init::x_2#3 mulf_init::@4/(byte) mulf_init::x_2#1 ) + [230] (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#4 mulf_init::@4/(word) mulf_init::sqr#2 ) + [231] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 + [232] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 + [233] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 + [234] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 + [235] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [236] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [237] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 to:mulf_init::@1 diff --git a/src/test/ref/complex/prebob/grid-bobs.log b/src/test/ref/complex/prebob/grid-bobs.log index 92dba5ee5..35b8da49f 100644 --- a/src/test/ref/complex/prebob/grid-bobs.log +++ b/src/test/ref/complex/prebob/grid-bobs.log @@ -14,19 +14,23 @@ Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_lines: Warning! Adding boolean cast to non-boolean condition (byte) print_str_lines::ch Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str) Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str) -Warning! Adding boolean cast to non-boolean condition (byte~) main::$21 +Warning! Adding boolean cast to non-boolean condition (byte~) main::$17 Warning! Adding boolean cast to non-boolean condition (number~) protoBobShiftRight::$1 Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch -Warning! Adding boolean cast to non-boolean sub-expression (byte~) main::$19 +Warning! Adding boolean cast to non-boolean sub-expression (byte~) main::$15 Warning! Adding boolean cast to non-boolean sub-expression (byte) charsetFindOrAddGlyph::found Identified constant variable (byte*) HEAP_TOP Identified constant variable (signed byte*) COS +Identified constant variable (signed word) main::origY +Identified constant variable (signed word) main::rowOffsetX +Identified constant variable (signed word) main::colOffsetX +Identified constant variable (signed word) main::colOffsetY Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Inlined call call mulf8s_prepare (signed byte) mulf8s::a Inlined call call vicSelectGfxBank (const byte*) BOB_SCREEN Inlined call (byte~) main::$4 ← call toD018 (const byte*) BOB_SCREEN (const byte*) BOB_CHARSET -Inlined call call vicSelectGfxBank (const byte*) SCREEN_BASIC -Inlined call (byte~) main::$7 ← call toD018 (const byte*) SCREEN_BASIC (const byte*) CHARSET_BASIC +Inlined call call vicSelectGfxBank (const byte*) BASIC_SCREEN +Inlined call (byte~) main::$7 ← call toD018 (const byte*) BASIC_SCREEN (const byte*) BASIC_CHARSET Culled Empty Block (label) @1 Culled Empty Block (label) @2 Culled Empty Block (label) @3 @@ -91,14 +95,10 @@ Culled Empty Block (label) mulf_init::@14 Culled Empty Block (label) mulf_init::@16 Culled Empty Block (label) @50 Culled Empty Block (label) @51 -Culled Empty Block (label) mulf8u_prepared::@1 Culled Empty Block (label) @52 Culled Empty Block (label) @53 Culled Empty Block (label) @54 -Culled Empty Block (label) mulf8s_prepared::@5 Culled Empty Block (label) @55 -Culled Empty Block (label) mulf8s::mulf8s_prepare1_@return -Culled Empty Block (label) mulf8s::@1 Culled Empty Block (label) @56 Culled Empty Block (label) @57 Culled Empty Block (label) @58 @@ -106,21 +106,21 @@ Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@1 Culled Empty Block (label) main::vicSelectGfxBank1_@return Culled Empty Block (label) main::toD0181_@1 Culled Empty Block (label) main::@2 -Culled Empty Block (label) main::@12 -Culled Empty Block (label) main::@3 -Culled Empty Block (label) main::@13 -Culled Empty Block (label) main::@10 -Culled Empty Block (label) main::@8 -Culled Empty Block (label) main::@11 -Culled Empty Block (label) main::@9 Culled Empty Block (label) main::@14 +Culled Empty Block (label) main::@3 +Culled Empty Block (label) main::@15 +Culled Empty Block (label) main::@12 +Culled Empty Block (label) main::@10 +Culled Empty Block (label) main::@13 +Culled Empty Block (label) main::@11 Culled Empty Block (label) main::@16 Culled Empty Block (label) main::@18 +Culled Empty Block (label) main::@20 Culled Empty Block (label) main::vicSelectGfxBank2_toDd001_@1 Culled Empty Block (label) main::vicSelectGfxBank2_@return Culled Empty Block (label) main::toD0182_@1 -Culled Empty Block (label) main::@19 -Culled Empty Block (label) main::@20 +Culled Empty Block (label) main::@21 +Culled Empty Block (label) main::@22 Culled Empty Block (label) renderBobInit::@4 Culled Empty Block (label) @60 Culled Empty Block (label) @61 @@ -167,10 +167,10 @@ CONTROL FLOW GRAPH SSA to:@59 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) -memset: scope:[memset] from main::@22 - (byte) memset::c#4 ← phi( main::@22/(byte) memset::c#0 ) - (void*) memset::str#3 ← phi( main::@22/(void*) memset::str#0 ) - (word) memset::num#1 ← phi( main::@22/(word) memset::num#0 ) +memset: scope:[memset] from main::@24 + (byte) memset::c#4 ← phi( main::@24/(byte) memset::c#0 ) + (void*) memset::str#3 ← phi( main::@24/(void*) memset::str#0 ) + (word) memset::num#1 ← phi( main::@24/(word) memset::num#0 ) (bool~) memset::$0 ← (word) memset::num#1 > (number) 0 (bool~) memset::$1 ← ! (bool~) memset::$0 if((bool~) memset::$1) goto memset::@1 @@ -225,8 +225,8 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri to:@return (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@15 main::@7 - (byte) keyboard_key_pressed::key#2 ← phi( main::@15/(byte) keyboard_key_pressed::key#1 main::@7/(byte) keyboard_key_pressed::key#0 ) +keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@17 main::@9 + (byte) keyboard_key_pressed::key#2 ← phi( main::@17/(byte) keyboard_key_pressed::key#1 main::@9/(byte) keyboard_key_pressed::key#0 ) (number~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#2 & (number) 7 (byte) keyboard_key_pressed::colidx#0 ← (number~) keyboard_key_pressed::$0 (byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key#2 >> (number) 3 @@ -350,114 +350,6 @@ mulf_init::@return: scope:[mulf_init] from mulf_init::@11 return to:@return -(void()) mulf8u_prepare((byte) mulf8u_prepare::a) -mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1 - (byte) mulf8u_prepare::a#1 ← phi( mulf8s::mulf8s_prepare1/(byte) mulf8u_prepare::a#0 ) - *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#1 - asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } - to:mulf8u_prepare::@return -mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - return - to:@return - -(word()) mulf8u_prepared((byte) mulf8u_prepared::b) -mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared - (byte) mulf8u_prepared::b#1 ← phi( mulf8s_prepared/(byte) mulf8u_prepared::b#0 ) - *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#1 - asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - (word) mulf8u_prepared::return#0 ← ((word)) { *((const byte*) mulf8u_prepared::memB), *((const byte*) mulf8u_prepared::resL) } - to:mulf8u_prepared::@return -mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - (word) mulf8u_prepared::return#3 ← phi( mulf8u_prepared/(word) mulf8u_prepared::return#0 ) - (word) mulf8u_prepared::return#1 ← (word) mulf8u_prepared::return#3 - return - to:@return - -(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@2 - (signed byte) mulf8s_prepared::b#1 ← phi( mulf8s::@2/(signed byte) mulf8s_prepared::b#0 ) - (byte~) mulf8s_prepared::$0 ← ((byte)) (signed byte) mulf8s_prepared::b#1 - (byte) mulf8u_prepared::b#0 ← (byte~) mulf8s_prepared::$0 - call mulf8u_prepared - (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#1 - to:mulf8s_prepared::@6 -mulf8s_prepared::@6: scope:[mulf8s_prepared] from mulf8s_prepared - (signed byte) mulf8s_prepared::b#4 ← phi( mulf8s_prepared/(signed byte) mulf8s_prepared::b#1 ) - (word) mulf8u_prepared::return#4 ← phi( mulf8s_prepared/(word) mulf8u_prepared::return#2 ) - (word~) mulf8s_prepared::$1 ← (word) mulf8u_prepared::return#4 - (word) mulf8s_prepared::m#0 ← (word~) mulf8s_prepared::$1 - (bool~) mulf8s_prepared::$2 ← *((const signed byte*) mulf8s_prepared::memA) < (number) 0 - (bool~) mulf8s_prepared::$3 ← ! (bool~) mulf8s_prepared::$2 - if((bool~) mulf8s_prepared::$3) goto mulf8s_prepared::@1 - to:mulf8s_prepared::@3 -mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@6 - (word) mulf8s_prepared::m#6 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) - (signed byte) mulf8s_prepared::b#2 ← phi( mulf8s_prepared::@3/(signed byte) mulf8s_prepared::b#3 mulf8s_prepared::@6/(signed byte) mulf8s_prepared::b#4 ) - (bool~) mulf8s_prepared::$4 ← (signed byte) mulf8s_prepared::b#2 < (number) 0 - (bool~) mulf8s_prepared::$5 ← ! (bool~) mulf8s_prepared::$4 - if((bool~) mulf8s_prepared::$5) goto mulf8s_prepared::@2 - to:mulf8s_prepared::@4 -mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 - (signed byte) mulf8s_prepared::b#3 ← phi( mulf8s_prepared::@6/(signed byte) mulf8s_prepared::b#4 ) - (word) mulf8s_prepared::m#3 ← phi( mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) - (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#3 - (byte~) mulf8s_prepared::$9 ← ((byte)) (signed byte) mulf8s_prepared::b#3 - (byte~) mulf8s_prepared::$10 ← (byte~) mulf8s_prepared::$8 - (byte~) mulf8s_prepared::$9 - (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$10 - (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#3 hi= (byte~) mulf8s_prepared::$15 - to:mulf8s_prepared::@1 -mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#6 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) - (signed word~) mulf8s_prepared::$6 ← ((signed word)) (word) mulf8s_prepared::m#4 - (signed word) mulf8s_prepared::return#0 ← (signed word~) mulf8s_prepared::$6 - to:mulf8s_prepared::@return -mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#6 ) - (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 - (byte~) mulf8s_prepared::$13 ← ((byte)) *((const signed byte*) mulf8s_prepared::memA) - (byte~) mulf8s_prepared::$14 ← (byte~) mulf8s_prepared::$12 - (byte~) mulf8s_prepared::$13 - (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$14 - (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 - to:mulf8s_prepared::@2 -mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - (signed word) mulf8s_prepared::return#3 ← phi( mulf8s_prepared::@2/(signed word) mulf8s_prepared::return#0 ) - (signed word) mulf8s_prepared::return#1 ← (signed word) mulf8s_prepared::return#3 - return - to:@return - -(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) -mulf8s: scope:[mulf8s] from main::@30 main::@6 - (signed byte) mulf8s::b#5 ← phi( main::@30/(signed byte) mulf8s::b#1 main::@6/(signed byte) mulf8s::b#0 ) - (signed byte) mulf8s::a#2 ← phi( main::@30/(signed byte) mulf8s::a#1 main::@6/(signed byte) mulf8s::a#0 ) - (signed byte) mulf8s::mulf8s_prepare1_a#0 ← (signed byte) mulf8s::a#2 - to:mulf8s::mulf8s_prepare1 -mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s - (signed byte) mulf8s::b#4 ← phi( mulf8s/(signed byte) mulf8s::b#5 ) - (signed byte) mulf8s::mulf8s_prepare1_a#1 ← phi( mulf8s/(signed byte) mulf8s::mulf8s_prepare1_a#0 ) - (byte~) mulf8s::mulf8s_prepare1_$0 ← ((byte)) (signed byte) mulf8s::mulf8s_prepare1_a#1 - (byte) mulf8u_prepare::a#0 ← (byte~) mulf8s::mulf8s_prepare1_$0 - call mulf8u_prepare - to:mulf8s::@3 -mulf8s::@3: scope:[mulf8s] from mulf8s::mulf8s_prepare1 - (signed byte) mulf8s::b#3 ← phi( mulf8s::mulf8s_prepare1/(signed byte) mulf8s::b#4 ) - to:mulf8s::@2 -mulf8s::@2: scope:[mulf8s] from mulf8s::@3 - (signed byte) mulf8s::b#2 ← phi( mulf8s::@3/(signed byte) mulf8s::b#3 ) - (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#2 - call mulf8s_prepared - (signed word) mulf8s_prepared::return#2 ← (signed word) mulf8s_prepared::return#1 - to:mulf8s::@4 -mulf8s::@4: scope:[mulf8s] from mulf8s::@2 - (signed word) mulf8s_prepared::return#4 ← phi( mulf8s::@2/(signed word) mulf8s_prepared::return#2 ) - (signed word~) mulf8s::$1 ← (signed word) mulf8s_prepared::return#4 - (signed word) mulf8s::return#0 ← (signed word~) mulf8s::$1 - to:mulf8s::@return -mulf8s::@return: scope:[mulf8s] from mulf8s::@4 - (signed word) mulf8s::return#4 ← phi( mulf8s::@4/(signed word) mulf8s::return#0 ) - (signed word) mulf8s::return#1 ← (signed word) mulf8s::return#4 - return - to:@return - (void()) main() main: scope:[main] from @68 (byte**) renderBobCleanupNext#50 ← phi( @68/(byte**) renderBobCleanupNext#19 ) @@ -465,37 +357,37 @@ main: scope:[main] from @68 (byte) progress_idx#28 ← phi( @68/(byte) progress_idx#27 ) (byte*) progress_cursor#28 ← phi( @68/(byte*) progress_cursor#27 ) call mulf_init - to:main::@25 -main::@25: scope:[main] from main + to:main::@27 +main::@27: scope:[main] from main (byte**) renderBobCleanupNext#49 ← phi( main/(byte**) renderBobCleanupNext#50 ) (byte) bob_charset_next_id#19 ← phi( main/(byte) bob_charset_next_id#28 ) (byte) progress_idx#22 ← phi( main/(byte) progress_idx#28 ) (byte*) progress_cursor#21 ← phi( main/(byte*) progress_cursor#28 ) call prepareBobs - to:main::@26 -main::@26: scope:[main] from main::@25 - (byte**) renderBobCleanupNext#48 ← phi( main::@25/(byte**) renderBobCleanupNext#49 ) - (byte) bob_charset_next_id#10 ← phi( main::@25/(byte) bob_charset_next_id#5 ) - (byte) progress_idx#12 ← phi( main::@25/(byte) progress_idx#4 ) - (byte*) progress_cursor#11 ← phi( main::@25/(byte*) progress_cursor#4 ) + to:main::@28 +main::@28: scope:[main] from main::@27 + (byte**) renderBobCleanupNext#48 ← phi( main::@27/(byte**) renderBobCleanupNext#49 ) + (byte) bob_charset_next_id#10 ← phi( main::@27/(byte) bob_charset_next_id#5 ) + (byte) progress_idx#12 ← phi( main::@27/(byte) progress_idx#4 ) + (byte*) progress_cursor#11 ← phi( main::@27/(byte*) progress_cursor#4 ) (byte*) progress_cursor#0 ← (byte*) progress_cursor#11 (byte) progress_idx#0 ← (byte) progress_idx#12 (byte) bob_charset_next_id#0 ← (byte) bob_charset_next_id#10 call renderBobInit - to:main::@27 -main::@27: scope:[main] from main::@26 - (byte) bob_charset_next_id#77 ← phi( main::@26/(byte) bob_charset_next_id#0 ) - (byte) progress_idx#69 ← phi( main::@26/(byte) progress_idx#0 ) - (byte*) progress_cursor#69 ← phi( main::@26/(byte*) progress_cursor#0 ) - (byte**) renderBobCleanupNext#47 ← phi( main::@26/(byte**) renderBobCleanupNext#48 ) + to:main::@29 +main::@29: scope:[main] from main::@28 + (byte) bob_charset_next_id#77 ← phi( main::@28/(byte) bob_charset_next_id#0 ) + (byte) progress_idx#69 ← phi( main::@28/(byte) progress_idx#0 ) + (byte*) progress_cursor#69 ← phi( main::@28/(byte*) progress_cursor#0 ) + (byte**) renderBobCleanupNext#47 ← phi( main::@28/(byte**) renderBobCleanupNext#48 ) (byte*) main::vicSelectGfxBank1_gfx#0 ← (const byte*) BOB_SCREEN to:main::vicSelectGfxBank1 -main::vicSelectGfxBank1: scope:[main] from main::@27 - (byte) bob_charset_next_id#76 ← phi( main::@27/(byte) bob_charset_next_id#77 ) - (byte) progress_idx#68 ← phi( main::@27/(byte) progress_idx#69 ) - (byte*) progress_cursor#68 ← phi( main::@27/(byte*) progress_cursor#69 ) - (byte**) renderBobCleanupNext#46 ← phi( main::@27/(byte**) renderBobCleanupNext#47 ) - (byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main::@27/(byte*) main::vicSelectGfxBank1_gfx#0 ) +main::vicSelectGfxBank1: scope:[main] from main::@29 + (byte) bob_charset_next_id#76 ← phi( main::@29/(byte) bob_charset_next_id#77 ) + (byte) progress_idx#68 ← phi( main::@29/(byte) progress_idx#69 ) + (byte*) progress_cursor#68 ← phi( main::@29/(byte*) progress_cursor#69 ) + (byte**) renderBobCleanupNext#46 ← phi( main::@29/(byte**) renderBobCleanupNext#47 ) + (byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main::@29/(byte*) main::vicSelectGfxBank1_gfx#0 ) *((const byte*) CIA2_PORT_A_DDR) ← (number) 3 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) main::vicSelectGfxBank1_gfx#1 to:main::vicSelectGfxBank1_toDd001 @@ -527,8 +419,8 @@ main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@ (byte) main::vicSelectGfxBank1_toDd001_return#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) main::vicSelectGfxBank1_toDd001_return#1 ) (byte~) main::vicSelectGfxBank1_$0 ← (byte) main::vicSelectGfxBank1_toDd001_return#3 *((const byte*) CIA2_PORT_A) ← (byte~) main::vicSelectGfxBank1_$0 - to:main::@21 -main::@21: scope:[main] from main::vicSelectGfxBank1_@1 + to:main::@23 +main::@23: scope:[main] from main::vicSelectGfxBank1_@1 (byte) bob_charset_next_id#68 ← phi( main::vicSelectGfxBank1_@1/(byte) bob_charset_next_id#70 ) (byte) progress_idx#60 ← phi( main::vicSelectGfxBank1_@1/(byte) progress_idx#62 ) (byte*) progress_cursor#60 ← phi( main::vicSelectGfxBank1_@1/(byte*) progress_cursor#62 ) @@ -536,13 +428,13 @@ main::@21: scope:[main] from main::vicSelectGfxBank1_@1 (byte*) main::toD0181_screen#0 ← (const byte*) BOB_SCREEN (byte*) main::toD0181_gfx#0 ← (const byte*) BOB_CHARSET to:main::toD0181 -main::toD0181: scope:[main] from main::@21 - (byte) bob_charset_next_id#66 ← phi( main::@21/(byte) bob_charset_next_id#68 ) - (byte) progress_idx#58 ← phi( main::@21/(byte) progress_idx#60 ) - (byte*) progress_cursor#58 ← phi( main::@21/(byte*) progress_cursor#60 ) - (byte**) renderBobCleanupNext#36 ← phi( main::@21/(byte**) renderBobCleanupNext#38 ) - (byte*) main::toD0181_gfx#1 ← phi( main::@21/(byte*) main::toD0181_gfx#0 ) - (byte*) main::toD0181_screen#1 ← phi( main::@21/(byte*) main::toD0181_screen#0 ) +main::toD0181: scope:[main] from main::@23 + (byte) bob_charset_next_id#66 ← phi( main::@23/(byte) bob_charset_next_id#68 ) + (byte) progress_idx#58 ← phi( main::@23/(byte) progress_idx#60 ) + (byte*) progress_cursor#58 ← phi( main::@23/(byte*) progress_cursor#60 ) + (byte**) renderBobCleanupNext#36 ← phi( main::@23/(byte**) renderBobCleanupNext#38 ) + (byte*) main::toD0181_gfx#1 ← phi( main::@23/(byte*) main::toD0181_gfx#0 ) + (byte*) main::toD0181_screen#1 ← phi( main::@23/(byte*) main::toD0181_screen#0 ) (word~) main::toD0181_$0 ← ((word)) (byte*) main::toD0181_screen#1 (number~) main::toD0181_$1 ← (word~) main::toD0181_$0 & (number) $3fff (number~) main::toD0181_$2 ← (number~) main::toD0181_$1 * (number) 4 @@ -561,8 +453,8 @@ main::toD0181_@return: scope:[main] from main::toD0181 (byte**) renderBobCleanupNext#34 ← phi( main::toD0181/(byte**) renderBobCleanupNext#36 ) (byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 ) (byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2 - to:main::@22 -main::@22: scope:[main] from main::toD0181_@return + to:main::@24 +main::@24: scope:[main] from main::toD0181_@return (byte) bob_charset_next_id#62 ← phi( main::toD0181_@return/(byte) bob_charset_next_id#64 ) (byte) progress_idx#54 ← phi( main::toD0181_@return/(byte) progress_idx#56 ) (byte*) progress_cursor#54 ← phi( main::toD0181_@return/(byte*) progress_cursor#56 ) @@ -575,27 +467,30 @@ main::@22: scope:[main] from main::toD0181_@return (word) memset::num#0 ← (number) $3e8 call memset (void*) memset::return#2 ← (void*) memset::return#1 - to:main::@28 -main::@28: scope:[main] from main::@22 - (byte) bob_charset_next_id#60 ← phi( main::@22/(byte) bob_charset_next_id#62 ) - (byte) progress_idx#52 ← phi( main::@22/(byte) progress_idx#54 ) - (byte*) progress_cursor#52 ← phi( main::@22/(byte*) progress_cursor#54 ) - (byte**) renderBobCleanupNext#28 ← phi( main::@22/(byte**) renderBobCleanupNext#31 ) - (byte) main::angle#0 ← (number) 0 + to:main::@30 +main::@30: scope:[main] from main::@24 + (byte) bob_charset_next_id#60 ← phi( main::@24/(byte) bob_charset_next_id#62 ) + (byte) progress_idx#52 ← phi( main::@24/(byte) progress_idx#54 ) + (byte*) progress_cursor#52 ← phi( main::@24/(byte*) progress_cursor#54 ) + (byte**) renderBobCleanupNext#28 ← phi( main::@24/(byte**) renderBobCleanupNext#31 ) + (signed word) main::origX#0 ← (number) $a00 + (signed word) main::rowOffsetY#0 ← (number) $100 to:main::@1 -main::@1: scope:[main] from main::@28 main::@33 - (byte) bob_charset_next_id#58 ← phi( main::@28/(byte) bob_charset_next_id#60 main::@33/(byte) bob_charset_next_id#59 ) - (byte) progress_idx#50 ← phi( main::@28/(byte) progress_idx#52 main::@33/(byte) progress_idx#51 ) - (byte*) progress_cursor#50 ← phi( main::@28/(byte*) progress_cursor#52 main::@33/(byte*) progress_cursor#51 ) - (byte) main::angle#8 ← phi( main::@28/(byte) main::angle#0 main::@33/(byte) main::angle#10 ) - (byte**) renderBobCleanupNext#24 ← phi( main::@28/(byte**) renderBobCleanupNext#28 main::@33/(byte**) renderBobCleanupNext#29 ) +main::@1: scope:[main] from main::@30 main::@33 + (byte) bob_charset_next_id#58 ← phi( main::@30/(byte) bob_charset_next_id#60 main::@33/(byte) bob_charset_next_id#59 ) + (byte) progress_idx#50 ← phi( main::@30/(byte) progress_idx#52 main::@33/(byte) progress_idx#51 ) + (byte*) progress_cursor#50 ← phi( main::@30/(byte*) progress_cursor#52 main::@33/(byte*) progress_cursor#51 ) + (signed word) main::rowOffsetY#10 ← phi( main::@30/(signed word) main::rowOffsetY#0 main::@33/(signed word) main::rowOffsetY#11 ) + (signed word) main::origX#8 ← phi( main::@30/(signed word) main::origX#0 main::@33/(signed word) main::origX#10 ) + (byte**) renderBobCleanupNext#24 ← phi( main::@30/(byte**) renderBobCleanupNext#28 main::@33/(byte**) renderBobCleanupNext#29 ) if(true) goto main::@4 - to:main::@15 + to:main::@17 main::@4: scope:[main] from main::@1 main::@4 (byte) bob_charset_next_id#75 ← phi( main::@1/(byte) bob_charset_next_id#58 main::@4/(byte) bob_charset_next_id#75 ) (byte) progress_idx#67 ← phi( main::@1/(byte) progress_idx#50 main::@4/(byte) progress_idx#67 ) (byte*) progress_cursor#67 ← phi( main::@1/(byte*) progress_cursor#50 main::@4/(byte*) progress_cursor#67 ) - (byte) main::angle#6 ← phi( main::@1/(byte) main::angle#8 main::@4/(byte) main::angle#6 ) + (signed word) main::rowOffsetY#9 ← phi( main::@1/(signed word) main::rowOffsetY#10 main::@4/(signed word) main::rowOffsetY#9 ) + (signed word) main::origX#6 ← phi( main::@1/(signed word) main::origX#8 main::@4/(signed word) main::origX#6 ) (byte**) renderBobCleanupNext#20 ← phi( main::@1/(byte**) renderBobCleanupNext#24 main::@4/(byte**) renderBobCleanupNext#20 ) (bool~) main::$8 ← *((const byte*) RASTER) < (number) $f8 if((bool~) main::$8) goto main::@4 @@ -604,118 +499,123 @@ main::@5: scope:[main] from main::@4 (byte) bob_charset_next_id#73 ← phi( main::@4/(byte) bob_charset_next_id#75 ) (byte) progress_idx#65 ← phi( main::@4/(byte) progress_idx#67 ) (byte*) progress_cursor#65 ← phi( main::@4/(byte*) progress_cursor#67 ) - (byte) main::angle#4 ← phi( main::@4/(byte) main::angle#6 ) + (signed word) main::rowOffsetY#8 ← phi( main::@4/(signed word) main::rowOffsetY#9 ) + (signed word) main::origX#4 ← phi( main::@4/(signed word) main::origX#6 ) (byte**) renderBobCleanupNext#16 ← phi( main::@4/(byte**) renderBobCleanupNext#20 ) *((const byte*) BORDERCOL) ← (number) $f call renderBobCleanup - to:main::@29 -main::@29: scope:[main] from main::@5 + to:main::@31 +main::@31: scope:[main] from main::@5 (byte) bob_charset_next_id#71 ← phi( main::@5/(byte) bob_charset_next_id#73 ) (byte) progress_idx#63 ← phi( main::@5/(byte) progress_idx#65 ) (byte*) progress_cursor#63 ← phi( main::@5/(byte*) progress_cursor#65 ) - (byte) main::angle#2 ← phi( main::@5/(byte) main::angle#4 ) + (signed word) main::rowOffsetY#7 ← phi( main::@5/(signed word) main::rowOffsetY#8 ) + (signed word) main::origX#2 ← phi( main::@5/(signed word) main::origX#4 ) (byte**) renderBobCleanupNext#9 ← phi( main::@5/(byte**) renderBobCleanupNext#7 ) (byte**) renderBobCleanupNext#0 ← (byte**) renderBobCleanupNext#9 - (signed byte) main::r#0 ← (number) $1e - (byte) main::a#0 ← (byte) main::angle#2 - (byte) main::i#0 ← (byte) 0 + (signed word) main::rowX#0 ← (signed word) main::origX#2 + (signed word) main::rowY#0 ← (const signed word) main::origY + (byte) main::col#0 ← (byte) 0 to:main::@6 -main::@6: scope:[main] from main::@29 main::@32 - (byte) bob_charset_next_id#69 ← phi( main::@29/(byte) bob_charset_next_id#71 main::@32/(byte) bob_charset_next_id#63 ) - (byte) progress_idx#61 ← phi( main::@29/(byte) progress_idx#63 main::@32/(byte) progress_idx#55 ) - (byte*) progress_cursor#61 ← phi( main::@29/(byte*) progress_cursor#63 main::@32/(byte*) progress_cursor#55 ) - (byte) main::angle#11 ← phi( main::@29/(byte) main::angle#2 main::@32/(byte) main::angle#5 ) - (byte) main::i#5 ← phi( main::@29/(byte) main::i#0 main::@32/(byte) main::i#1 ) - (byte**) renderBobCleanupNext#25 ← phi( main::@29/(byte**) renderBobCleanupNext#0 main::@32/(byte**) renderBobCleanupNext#1 ) - (byte) main::a#2 ← phi( main::@29/(byte) main::a#0 main::@32/(byte) main::a#5 ) - (signed byte) main::r#2 ← phi( main::@29/(signed byte) main::r#0 main::@32/(signed byte) main::r#5 ) +main::@6: scope:[main] from main::@31 main::@8 + (byte) bob_charset_next_id#69 ← phi( main::@31/(byte) bob_charset_next_id#71 main::@8/(byte) bob_charset_next_id#63 ) + (byte) progress_idx#61 ← phi( main::@31/(byte) progress_idx#63 main::@8/(byte) progress_idx#55 ) + (byte*) progress_cursor#61 ← phi( main::@31/(byte*) progress_cursor#63 main::@8/(byte*) progress_cursor#55 ) + (signed word) main::origX#11 ← phi( main::@31/(signed word) main::origX#2 main::@8/(signed word) main::origX#5 ) + (byte) main::col#5 ← phi( main::@31/(byte) main::col#0 main::@8/(byte) main::col#1 ) + (signed word) main::rowOffsetY#6 ← phi( main::@31/(signed word) main::rowOffsetY#7 main::@8/(signed word) main::rowOffsetY#5 ) + (byte**) renderBobCleanupNext#21 ← phi( main::@31/(byte**) renderBobCleanupNext#0 main::@8/(byte**) renderBobCleanupNext#25 ) + (signed word) main::rowY#2 ← phi( main::@31/(signed word) main::rowY#0 main::@8/(signed word) main::rowY#1 ) + (signed word) main::rowX#2 ← phi( main::@31/(signed word) main::rowX#0 main::@8/(signed word) main::rowX#1 ) + (signed word) main::x#0 ← (signed word) main::rowX#2 + (signed word) main::y#0 ← (signed word) main::rowY#2 + (byte) main::row#0 ← (byte) 0 + to:main::@7 +main::@7: scope:[main] from main::@32 main::@6 + (byte) bob_charset_next_id#67 ← phi( main::@32/(byte) bob_charset_next_id#65 main::@6/(byte) bob_charset_next_id#69 ) + (byte) progress_idx#59 ← phi( main::@32/(byte) progress_idx#57 main::@6/(byte) progress_idx#61 ) + (byte*) progress_cursor#59 ← phi( main::@32/(byte*) progress_cursor#57 main::@6/(byte*) progress_cursor#61 ) + (signed word) main::origX#9 ← phi( main::@32/(signed word) main::origX#7 main::@6/(signed word) main::origX#11 ) + (byte) main::col#4 ← phi( main::@32/(byte) main::col#3 main::@6/(byte) main::col#5 ) + (signed word) main::rowY#5 ← phi( main::@32/(signed word) main::rowY#4 main::@6/(signed word) main::rowY#2 ) + (signed word) main::rowX#5 ← phi( main::@32/(signed word) main::rowX#4 main::@6/(signed word) main::rowX#2 ) + (byte) main::row#3 ← phi( main::@32/(byte) main::row#1 main::@6/(byte) main::row#0 ) + (signed word) main::rowOffsetY#4 ← phi( main::@32/(signed word) main::rowOffsetY#2 main::@6/(signed word) main::rowOffsetY#6 ) + (byte**) renderBobCleanupNext#17 ← phi( main::@32/(byte**) renderBobCleanupNext#1 main::@6/(byte**) renderBobCleanupNext#21 ) + (signed word) main::y#2 ← phi( main::@32/(signed word) main::y#1 main::@6/(signed word) main::y#0 ) + (signed word) main::x#2 ← phi( main::@32/(signed word) main::x#1 main::@6/(signed word) main::x#0 ) *((const byte*) BORDERCOL) ← (number) 1 - (signed byte) mulf8s::a#0 ← (signed byte) main::r#2 - (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2) - call mulf8s - (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#1 - to:main::@30 -main::@30: scope:[main] from main::@6 - (byte) bob_charset_next_id#67 ← phi( main::@6/(byte) bob_charset_next_id#69 ) - (byte) progress_idx#59 ← phi( main::@6/(byte) progress_idx#61 ) - (byte*) progress_cursor#59 ← phi( main::@6/(byte*) progress_cursor#61 ) - (byte) main::angle#9 ← phi( main::@6/(byte) main::angle#11 ) - (byte) main::i#4 ← phi( main::@6/(byte) main::i#5 ) - (byte**) renderBobCleanupNext#21 ← phi( main::@6/(byte**) renderBobCleanupNext#25 ) - (byte) main::a#3 ← phi( main::@6/(byte) main::a#2 ) - (signed byte) main::r#3 ← phi( main::@6/(signed byte) main::r#2 ) - (signed word) mulf8s::return#5 ← phi( main::@6/(signed word) mulf8s::return#2 ) - (signed word~) main::$10 ← (signed word) mulf8s::return#5 - (number~) main::$11 ← (signed word~) main::$10 + (number) $4b*(number) $100 - (signed word) main::x#0 ← (number~) main::$11 - (signed byte) mulf8s::a#1 ← (signed byte) main::r#3 - (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#3) - call mulf8s - (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#1 - to:main::@31 -main::@31: scope:[main] from main::@30 - (byte) bob_charset_next_id#65 ← phi( main::@30/(byte) bob_charset_next_id#67 ) - (byte) progress_idx#57 ← phi( main::@30/(byte) progress_idx#59 ) - (byte*) progress_cursor#57 ← phi( main::@30/(byte*) progress_cursor#59 ) - (byte) main::angle#7 ← phi( main::@30/(byte) main::angle#9 ) - (byte) main::i#3 ← phi( main::@30/(byte) main::i#4 ) - (byte**) renderBobCleanupNext#17 ← phi( main::@30/(byte**) renderBobCleanupNext#21 ) - (signed word) main::x#1 ← phi( main::@30/(signed word) main::x#0 ) - (signed byte) main::r#4 ← phi( main::@30/(signed byte) main::r#3 ) - (byte) main::a#4 ← phi( main::@30/(byte) main::a#3 ) - (signed word) mulf8s::return#6 ← phi( main::@30/(signed word) mulf8s::return#3 ) - (signed word~) main::$12 ← (signed word) mulf8s::return#6 - (number~) main::$13 ← (signed word~) main::$12 * (number) 2 - (number~) main::$14 ← (number~) main::$13 + (number) $5a*(number) $100 - (signed word) main::y#0 ← (number~) main::$14 - *((const byte*) BORDERCOL) ← (number) 2 - (byte) main::a#1 ← (byte) main::a#4 + (number) $62 - (signed byte) main::r#1 ← (signed byte) main::r#4 + (number) 3 - (byte~) main::$15 ← > (signed word) main::x#1 - (byte~) main::$16 ← > (signed word) main::y#0 - (byte) renderBob::xpos#0 ← (byte~) main::$15 - (byte) renderBob::ypos#0 ← (byte~) main::$16 + (byte~) main::$10 ← > (signed word) main::x#2 + (byte~) main::$11 ← > (signed word) main::y#2 + (byte) renderBob::xpos#0 ← (byte~) main::$10 + (byte) renderBob::ypos#0 ← (byte~) main::$11 call renderBob to:main::@32 -main::@32: scope:[main] from main::@31 - (byte) bob_charset_next_id#63 ← phi( main::@31/(byte) bob_charset_next_id#65 ) - (byte) progress_idx#55 ← phi( main::@31/(byte) progress_idx#57 ) - (byte*) progress_cursor#55 ← phi( main::@31/(byte*) progress_cursor#57 ) - (byte) main::angle#5 ← phi( main::@31/(byte) main::angle#7 ) - (byte) main::a#5 ← phi( main::@31/(byte) main::a#1 ) - (signed byte) main::r#5 ← phi( main::@31/(signed byte) main::r#1 ) - (byte) main::i#2 ← phi( main::@31/(byte) main::i#3 ) - (byte**) renderBobCleanupNext#10 ← phi( main::@31/(byte**) renderBobCleanupNext#5 ) +main::@32: scope:[main] from main::@7 + (byte) bob_charset_next_id#65 ← phi( main::@7/(byte) bob_charset_next_id#67 ) + (byte) progress_idx#57 ← phi( main::@7/(byte) progress_idx#59 ) + (byte*) progress_cursor#57 ← phi( main::@7/(byte*) progress_cursor#59 ) + (signed word) main::origX#7 ← phi( main::@7/(signed word) main::origX#9 ) + (byte) main::col#3 ← phi( main::@7/(byte) main::col#4 ) + (signed word) main::rowY#4 ← phi( main::@7/(signed word) main::rowY#5 ) + (signed word) main::rowX#4 ← phi( main::@7/(signed word) main::rowX#5 ) + (byte) main::row#2 ← phi( main::@7/(byte) main::row#3 ) + (signed word) main::rowOffsetY#2 ← phi( main::@7/(signed word) main::rowOffsetY#4 ) + (signed word) main::y#3 ← phi( main::@7/(signed word) main::y#2 ) + (signed word) main::x#3 ← phi( main::@7/(signed word) main::x#2 ) + (byte**) renderBobCleanupNext#10 ← phi( main::@7/(byte**) renderBobCleanupNext#5 ) (byte**) renderBobCleanupNext#1 ← (byte**) renderBobCleanupNext#10 - (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,NUM_BOBS-1) - (bool~) main::$18 ← (byte) main::i#1 != rangelast(0,NUM_BOBS-1) - if((bool~) main::$18) goto main::@6 - to:main::@7 -main::@7: scope:[main] from main::@32 - (byte) bob_charset_next_id#61 ← phi( main::@32/(byte) bob_charset_next_id#63 ) - (byte) progress_idx#53 ← phi( main::@32/(byte) progress_idx#55 ) - (byte*) progress_cursor#53 ← phi( main::@32/(byte*) progress_cursor#55 ) - (byte**) renderBobCleanupNext#32 ← phi( main::@32/(byte**) renderBobCleanupNext#1 ) - (byte) main::angle#3 ← phi( main::@32/(byte) main::angle#5 ) - (byte) main::angle#1 ← (byte) main::angle#3 + (number) 3 + (signed word) main::x#1 ← (signed word) main::x#3 + (const signed word) main::rowOffsetX + (signed word) main::y#1 ← (signed word) main::y#3 + (signed word) main::rowOffsetY#2 + *((const byte*) BORDERCOL) ← (number) 2 + (byte) main::row#1 ← (byte) main::row#2 + rangenext(0,4) + (bool~) main::$13 ← (byte) main::row#1 != rangelast(0,4) + if((bool~) main::$13) goto main::@7 + to:main::@8 +main::@8: scope:[main] from main::@32 + (byte) bob_charset_next_id#63 ← phi( main::@32/(byte) bob_charset_next_id#65 ) + (byte) progress_idx#55 ← phi( main::@32/(byte) progress_idx#57 ) + (byte*) progress_cursor#55 ← phi( main::@32/(byte*) progress_cursor#57 ) + (byte**) renderBobCleanupNext#25 ← phi( main::@32/(byte**) renderBobCleanupNext#1 ) + (signed word) main::rowOffsetY#5 ← phi( main::@32/(signed word) main::rowOffsetY#2 ) + (signed word) main::origX#5 ← phi( main::@32/(signed word) main::origX#7 ) + (byte) main::col#2 ← phi( main::@32/(byte) main::col#3 ) + (signed word) main::rowY#3 ← phi( main::@32/(signed word) main::rowY#4 ) + (signed word) main::rowX#3 ← phi( main::@32/(signed word) main::rowX#4 ) + (signed word) main::rowX#1 ← (signed word) main::rowX#3 + (const signed word) main::colOffsetX + (signed word) main::rowY#1 ← (signed word) main::rowY#3 + (const signed word) main::colOffsetY + (byte) main::col#1 ← (byte) main::col#2 + rangenext(0,4) + (bool~) main::$14 ← (byte) main::col#1 != rangelast(0,4) + if((bool~) main::$14) goto main::@6 + to:main::@9 +main::@9: scope:[main] from main::@8 + (byte) bob_charset_next_id#61 ← phi( main::@8/(byte) bob_charset_next_id#63 ) + (byte) progress_idx#53 ← phi( main::@8/(byte) progress_idx#55 ) + (byte*) progress_cursor#53 ← phi( main::@8/(byte*) progress_cursor#55 ) + (byte**) renderBobCleanupNext#32 ← phi( main::@8/(byte**) renderBobCleanupNext#25 ) + (signed word) main::rowOffsetY#3 ← phi( main::@8/(signed word) main::rowOffsetY#5 ) + (signed word) main::origX#3 ← phi( main::@8/(signed word) main::origX#5 ) + (signed word) main::origX#1 ← (signed word) main::origX#3 + (number) $100 + (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#3 + (number) $80 *((const byte*) BORDERCOL) ← (number) 0 (byte) keyboard_key_pressed::key#0 ← (const byte) KEY_SPACE call keyboard_key_pressed (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#1 to:main::@33 -main::@33: scope:[main] from main::@7 - (byte) bob_charset_next_id#59 ← phi( main::@7/(byte) bob_charset_next_id#61 ) - (byte) progress_idx#51 ← phi( main::@7/(byte) progress_idx#53 ) - (byte*) progress_cursor#51 ← phi( main::@7/(byte*) progress_cursor#53 ) - (byte) main::angle#10 ← phi( main::@7/(byte) main::angle#1 ) - (byte**) renderBobCleanupNext#29 ← phi( main::@7/(byte**) renderBobCleanupNext#32 ) - (byte) keyboard_key_pressed::return#5 ← phi( main::@7/(byte) keyboard_key_pressed::return#2 ) - (byte~) main::$19 ← (byte) keyboard_key_pressed::return#5 - (bool~) main::$23 ← (number) 0 != (byte~) main::$19 - (bool~) main::$20 ← ! (bool~) main::$23 - if((bool~) main::$20) goto main::@1 - to:main::@15 -main::@15: scope:[main] from main::@1 main::@33 main::@34 +main::@33: scope:[main] from main::@9 + (byte) bob_charset_next_id#59 ← phi( main::@9/(byte) bob_charset_next_id#61 ) + (byte) progress_idx#51 ← phi( main::@9/(byte) progress_idx#53 ) + (byte*) progress_cursor#51 ← phi( main::@9/(byte*) progress_cursor#53 ) + (signed word) main::rowOffsetY#11 ← phi( main::@9/(signed word) main::rowOffsetY#1 ) + (signed word) main::origX#10 ← phi( main::@9/(signed word) main::origX#1 ) + (byte**) renderBobCleanupNext#29 ← phi( main::@9/(byte**) renderBobCleanupNext#32 ) + (byte) keyboard_key_pressed::return#5 ← phi( main::@9/(byte) keyboard_key_pressed::return#2 ) + (byte~) main::$15 ← (byte) keyboard_key_pressed::return#5 + (bool~) main::$19 ← (number) 0 != (byte~) main::$15 + (bool~) main::$16 ← ! (bool~) main::$19 + if((bool~) main::$16) goto main::@1 + to:main::@17 +main::@17: scope:[main] from main::@1 main::@33 main::@34 (byte**) renderBobCleanupNext#45 ← phi( main::@1/(byte**) renderBobCleanupNext#24 main::@33/(byte**) renderBobCleanupNext#29 main::@34/(byte**) renderBobCleanupNext#43 ) (byte) bob_charset_next_id#57 ← phi( main::@1/(byte) bob_charset_next_id#58 main::@33/(byte) bob_charset_next_id#59 main::@34/(byte) bob_charset_next_id#56 ) (byte) progress_idx#49 ← phi( main::@1/(byte) progress_idx#50 main::@33/(byte) progress_idx#51 main::@34/(byte) progress_idx#48 ) @@ -724,29 +624,29 @@ main::@15: scope:[main] from main::@1 main::@33 main::@34 call keyboard_key_pressed (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#1 to:main::@34 -main::@34: scope:[main] from main::@15 - (byte**) renderBobCleanupNext#43 ← phi( main::@15/(byte**) renderBobCleanupNext#45 ) - (byte) bob_charset_next_id#56 ← phi( main::@15/(byte) bob_charset_next_id#57 ) - (byte) progress_idx#48 ← phi( main::@15/(byte) progress_idx#49 ) - (byte*) progress_cursor#48 ← phi( main::@15/(byte*) progress_cursor#49 ) - (byte) keyboard_key_pressed::return#6 ← phi( main::@15/(byte) keyboard_key_pressed::return#3 ) - (byte~) main::$21 ← (byte) keyboard_key_pressed::return#6 - (bool~) main::$22 ← (number) 0 != (byte~) main::$21 - if((bool~) main::$22) goto main::@15 - to:main::@17 -main::@17: scope:[main] from main::@34 +main::@34: scope:[main] from main::@17 + (byte**) renderBobCleanupNext#43 ← phi( main::@17/(byte**) renderBobCleanupNext#45 ) + (byte) bob_charset_next_id#56 ← phi( main::@17/(byte) bob_charset_next_id#57 ) + (byte) progress_idx#48 ← phi( main::@17/(byte) progress_idx#49 ) + (byte*) progress_cursor#48 ← phi( main::@17/(byte*) progress_cursor#49 ) + (byte) keyboard_key_pressed::return#6 ← phi( main::@17/(byte) keyboard_key_pressed::return#3 ) + (byte~) main::$17 ← (byte) keyboard_key_pressed::return#6 + (bool~) main::$18 ← (number) 0 != (byte~) main::$17 + if((bool~) main::$18) goto main::@17 + to:main::@19 +main::@19: scope:[main] from main::@34 (byte**) renderBobCleanupNext#41 ← phi( main::@34/(byte**) renderBobCleanupNext#43 ) (byte) bob_charset_next_id#55 ← phi( main::@34/(byte) bob_charset_next_id#56 ) (byte) progress_idx#47 ← phi( main::@34/(byte) progress_idx#48 ) (byte*) progress_cursor#47 ← phi( main::@34/(byte*) progress_cursor#48 ) - (byte*) main::vicSelectGfxBank2_gfx#0 ← (const byte*) SCREEN_BASIC + (byte*) main::vicSelectGfxBank2_gfx#0 ← (const byte*) BASIC_SCREEN to:main::vicSelectGfxBank2 -main::vicSelectGfxBank2: scope:[main] from main::@17 - (byte**) renderBobCleanupNext#39 ← phi( main::@17/(byte**) renderBobCleanupNext#41 ) - (byte) bob_charset_next_id#54 ← phi( main::@17/(byte) bob_charset_next_id#55 ) - (byte) progress_idx#46 ← phi( main::@17/(byte) progress_idx#47 ) - (byte*) progress_cursor#46 ← phi( main::@17/(byte*) progress_cursor#47 ) - (byte*) main::vicSelectGfxBank2_gfx#1 ← phi( main::@17/(byte*) main::vicSelectGfxBank2_gfx#0 ) +main::vicSelectGfxBank2: scope:[main] from main::@19 + (byte**) renderBobCleanupNext#39 ← phi( main::@19/(byte**) renderBobCleanupNext#41 ) + (byte) bob_charset_next_id#54 ← phi( main::@19/(byte) bob_charset_next_id#55 ) + (byte) progress_idx#46 ← phi( main::@19/(byte) progress_idx#47 ) + (byte*) progress_cursor#46 ← phi( main::@19/(byte*) progress_cursor#47 ) + (byte*) main::vicSelectGfxBank2_gfx#1 ← phi( main::@19/(byte*) main::vicSelectGfxBank2_gfx#0 ) *((const byte*) CIA2_PORT_A_DDR) ← (number) 3 (byte*) main::vicSelectGfxBank2_toDd001_gfx#0 ← (byte*) main::vicSelectGfxBank2_gfx#1 to:main::vicSelectGfxBank2_toDd001 @@ -778,22 +678,22 @@ main::vicSelectGfxBank2_@1: scope:[main] from main::vicSelectGfxBank2_toDd001_@ (byte) main::vicSelectGfxBank2_toDd001_return#3 ← phi( main::vicSelectGfxBank2_toDd001_@return/(byte) main::vicSelectGfxBank2_toDd001_return#1 ) (byte~) main::vicSelectGfxBank2_$0 ← (byte) main::vicSelectGfxBank2_toDd001_return#3 *((const byte*) CIA2_PORT_A) ← (byte~) main::vicSelectGfxBank2_$0 - to:main::@23 -main::@23: scope:[main] from main::vicSelectGfxBank2_@1 + to:main::@25 +main::@25: scope:[main] from main::vicSelectGfxBank2_@1 (byte**) renderBobCleanupNext#30 ← phi( main::vicSelectGfxBank2_@1/(byte**) renderBobCleanupNext#33 ) (byte) bob_charset_next_id#42 ← phi( main::vicSelectGfxBank2_@1/(byte) bob_charset_next_id#47 ) (byte) progress_idx#36 ← phi( main::vicSelectGfxBank2_@1/(byte) progress_idx#39 ) (byte*) progress_cursor#36 ← phi( main::vicSelectGfxBank2_@1/(byte*) progress_cursor#39 ) - (byte*) main::toD0182_screen#0 ← (const byte*) SCREEN_BASIC - (byte*) main::toD0182_gfx#0 ← (const byte*) CHARSET_BASIC + (byte*) main::toD0182_screen#0 ← (const byte*) BASIC_SCREEN + (byte*) main::toD0182_gfx#0 ← (const byte*) BASIC_CHARSET to:main::toD0182 -main::toD0182: scope:[main] from main::@23 - (byte**) renderBobCleanupNext#26 ← phi( main::@23/(byte**) renderBobCleanupNext#30 ) - (byte) bob_charset_next_id#36 ← phi( main::@23/(byte) bob_charset_next_id#42 ) - (byte) progress_idx#33 ← phi( main::@23/(byte) progress_idx#36 ) - (byte*) progress_cursor#33 ← phi( main::@23/(byte*) progress_cursor#36 ) - (byte*) main::toD0182_gfx#1 ← phi( main::@23/(byte*) main::toD0182_gfx#0 ) - (byte*) main::toD0182_screen#1 ← phi( main::@23/(byte*) main::toD0182_screen#0 ) +main::toD0182: scope:[main] from main::@25 + (byte**) renderBobCleanupNext#26 ← phi( main::@25/(byte**) renderBobCleanupNext#30 ) + (byte) bob_charset_next_id#36 ← phi( main::@25/(byte) bob_charset_next_id#42 ) + (byte) progress_idx#33 ← phi( main::@25/(byte) progress_idx#36 ) + (byte*) progress_cursor#33 ← phi( main::@25/(byte*) progress_cursor#36 ) + (byte*) main::toD0182_gfx#1 ← phi( main::@25/(byte*) main::toD0182_gfx#0 ) + (byte*) main::toD0182_screen#1 ← phi( main::@25/(byte*) main::toD0182_screen#0 ) (word~) main::toD0182_$0 ← ((word)) (byte*) main::toD0182_screen#1 (number~) main::toD0182_$1 ← (word~) main::toD0182_$0 & (number) $3fff (number~) main::toD0182_$2 ← (number~) main::toD0182_$1 * (number) 4 @@ -812,8 +712,8 @@ main::toD0182_@return: scope:[main] from main::toD0182 (byte*) progress_cursor#29 ← phi( main::toD0182/(byte*) progress_cursor#33 ) (byte) main::toD0182_return#2 ← phi( main::toD0182/(byte) main::toD0182_return#0 ) (byte) main::toD0182_return#1 ← (byte) main::toD0182_return#2 - to:main::@24 -main::@24: scope:[main] from main::toD0182_@return + to:main::@26 +main::@26: scope:[main] from main::toD0182_@return (byte**) renderBobCleanupNext#18 ← phi( main::toD0182_@return/(byte**) renderBobCleanupNext#22 ) (byte) bob_charset_next_id#20 ← phi( main::toD0182_@return/(byte) bob_charset_next_id#29 ) (byte) progress_idx#23 ← phi( main::toD0182_@return/(byte) progress_idx#29 ) @@ -822,11 +722,11 @@ main::@24: scope:[main] from main::toD0182_@return (byte~) main::$7 ← (byte) main::toD0182_return#3 *((const byte*) D018) ← (byte~) main::$7 to:main::@return -main::@return: scope:[main] from main::@24 - (byte**) renderBobCleanupNext#11 ← phi( main::@24/(byte**) renderBobCleanupNext#18 ) - (byte) bob_charset_next_id#11 ← phi( main::@24/(byte) bob_charset_next_id#20 ) - (byte) progress_idx#13 ← phi( main::@24/(byte) progress_idx#23 ) - (byte*) progress_cursor#12 ← phi( main::@24/(byte*) progress_cursor#22 ) +main::@return: scope:[main] from main::@26 + (byte**) renderBobCleanupNext#11 ← phi( main::@26/(byte**) renderBobCleanupNext#18 ) + (byte) bob_charset_next_id#11 ← phi( main::@26/(byte) bob_charset_next_id#20 ) + (byte) progress_idx#13 ← phi( main::@26/(byte) progress_idx#23 ) + (byte*) progress_cursor#12 ← phi( main::@26/(byte*) progress_cursor#22 ) (byte*) progress_cursor#1 ← (byte*) progress_cursor#12 (byte) progress_idx#1 ← (byte) progress_idx#13 (byte) bob_charset_next_id#1 ← (byte) bob_charset_next_id#11 @@ -838,7 +738,7 @@ main::@return: scope:[main] from main::@24 to:@65 (void()) renderBobInit() -renderBobInit: scope:[renderBobInit] from main::@26 +renderBobInit: scope:[renderBobInit] from main::@28 (byte) renderBobInit::y#0 ← (byte) 0 to:renderBobInit::@1 renderBobInit::@1: scope:[renderBobInit] from renderBobInit renderBobInit::@1 @@ -867,10 +767,10 @@ renderBobInit::@return: scope:[renderBobInit] from renderBobInit::@3 to:@return (void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos) -renderBob: scope:[renderBob] from main::@31 - (byte**) renderBobCleanupNext#12 ← phi( main::@31/(byte**) renderBobCleanupNext#17 ) - (byte) renderBob::ypos#1 ← phi( main::@31/(byte) renderBob::ypos#0 ) - (byte) renderBob::xpos#1 ← phi( main::@31/(byte) renderBob::xpos#0 ) +renderBob: scope:[renderBob] from main::@7 + (byte**) renderBobCleanupNext#12 ← phi( main::@7/(byte**) renderBobCleanupNext#17 ) + (byte) renderBob::ypos#1 ← phi( main::@7/(byte) renderBob::ypos#0 ) + (byte) renderBob::xpos#1 ← phi( main::@7/(byte) renderBob::xpos#0 ) (byte~) renderBob::$0 ← (byte) renderBob::xpos#1 / (const byte) BOB_SHIFTS_X (byte) renderBob::x_char_offset#0 ← (byte~) renderBob::$0 (byte~) renderBob::$1 ← (byte) renderBob::ypos#1 / (const byte) BOB_SHIFTS_Y @@ -934,10 +834,10 @@ renderBobCleanup::@return: scope:[renderBobCleanup] from renderBobCleanup::@2 to:@return (void()) prepareBobs() -prepareBobs: scope:[prepareBobs] from main::@25 - (byte) progress_idx#24 ← phi( main::@25/(byte) progress_idx#22 ) - (byte*) progress_cursor#23 ← phi( main::@25/(byte*) progress_cursor#21 ) - (byte*) progress_init::line#0 ← (const byte*) SCREEN_BASIC +prepareBobs: scope:[prepareBobs] from main::@27 + (byte) progress_idx#24 ← phi( main::@27/(byte) progress_idx#22 ) + (byte*) progress_cursor#23 ← phi( main::@27/(byte*) progress_cursor#21 ) + (byte*) progress_init::line#0 ← (const byte*) BASIC_SCREEN call progress_init to:prepareBobs::@19 prepareBobs::@19: scope:[prepareBobs] from prepareBobs @@ -1406,6 +1306,8 @@ SYMBOL TABLE SSA (label) @69 (label) @begin (label) @end +(const byte*) BASIC_CHARSET = (byte*)(number) $1000 +(const byte*) BASIC_SCREEN = (byte*)(number) $400 (const byte*) BOB_CHARSET = (byte*)(number) $2000 (const byte*) BOB_SCREEN = (byte*)(number) $2800 (const byte) BOB_SHIFTS_X = (number) 4 @@ -1413,16 +1315,14 @@ SYMBOL TABLE SSA (const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y (const byte*) BOB_TABLES = { fill( 9*8*4, 0) } (const byte*) BORDERCOL = (byte*)(number) $d020 -(const byte*) CHARSET_BASIC = (byte*)(number) $1000 (const byte*) CIA1_PORT_A = (byte*)(number) $dc00 (const byte*) CIA1_PORT_B = (byte*)(number) $dc01 (const byte*) CIA2_PORT_A = (byte*)(number) $dd00 (const byte*) CIA2_PORT_A_DDR = (byte*)(number) $dd02 -(const signed byte*) COS = (const signed byte*) SIN+(number) $40 (const byte*) D018 = (byte*)(number) $d018 (const byte) KEY_SPACE = (number) $3c (const word*) MUL40 = { fill( $20, 0) } -(const byte) NUM_BOBS = (number) $14 +(const byte) NUM_BOBS = (number) $19 (const byte*) PROTO_BOB = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff)) .for (var x=0;x<3; x++) .for (var y=0; y<24; y++) @@ -1434,10 +1334,6 @@ SYMBOL TABLE SSA (const byte) RADIX::OCTAL = (number) 8 (const byte*) RASTER = (byte*)(number) $d012 (const byte**) RENDERBOB_CLEANUP = { fill( NUM_BOBS, 0) } -(const byte*) SCREEN_BASIC = (byte*)(number) $400 -(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++) - .byte >round($7fff*sin(i*2*PI/256)) - }} (const byte) SIZEOF_POINTER = (byte) 2 (const byte) SIZEOF_WORD = (byte) 2 (byte) bob_charset_next_id @@ -1657,27 +1553,21 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid#1 (const byte*) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } (void()) main() -(signed word~) main::$10 -(number~) main::$11 -(signed word~) main::$12 -(number~) main::$13 -(number~) main::$14 +(byte~) main::$10 +(byte~) main::$11 +(bool~) main::$13 +(bool~) main::$14 (byte~) main::$15 -(byte~) main::$16 +(bool~) main::$16 +(byte~) main::$17 (bool~) main::$18 -(byte~) main::$19 -(bool~) main::$20 -(byte~) main::$21 -(bool~) main::$22 -(bool~) main::$23 +(bool~) main::$19 (byte~) main::$4 (byte~) main::$7 (bool~) main::$8 (label) main::@1 -(label) main::@15 (label) main::@17 -(label) main::@21 -(label) main::@22 +(label) main::@19 (label) main::@23 (label) main::@24 (label) main::@25 @@ -1694,41 +1584,65 @@ SYMBOL TABLE SSA (label) main::@5 (label) main::@6 (label) main::@7 +(label) main::@8 +(label) main::@9 (label) main::@return -(byte) main::a -(byte) main::a#0 -(byte) main::a#1 -(byte) main::a#2 -(byte) main::a#3 -(byte) main::a#4 -(byte) main::a#5 -(byte) main::angle -(byte) main::angle#0 -(byte) main::angle#1 -(byte) main::angle#10 -(byte) main::angle#11 -(byte) main::angle#2 -(byte) main::angle#3 -(byte) main::angle#4 -(byte) main::angle#5 -(byte) main::angle#6 -(byte) main::angle#7 -(byte) main::angle#8 -(byte) main::angle#9 -(byte) main::i -(byte) main::i#0 -(byte) main::i#1 -(byte) main::i#2 -(byte) main::i#3 -(byte) main::i#4 -(byte) main::i#5 -(signed byte) main::r -(signed byte) main::r#0 -(signed byte) main::r#1 -(signed byte) main::r#2 -(signed byte) main::r#3 -(signed byte) main::r#4 -(signed byte) main::r#5 +(byte) main::col +(byte) main::col#0 +(byte) main::col#1 +(byte) main::col#2 +(byte) main::col#3 +(byte) main::col#4 +(byte) main::col#5 +(const signed word) main::colOffsetX = (signed word) $100 +(const signed word) main::colOffsetY = (signed word) $1800 +(signed word) main::origX +(signed word) main::origX#0 +(signed word) main::origX#1 +(signed word) main::origX#10 +(signed word) main::origX#11 +(signed word) main::origX#2 +(signed word) main::origX#3 +(signed word) main::origX#4 +(signed word) main::origX#5 +(signed word) main::origX#6 +(signed word) main::origX#7 +(signed word) main::origX#8 +(signed word) main::origX#9 +(const signed word) main::origY = (signed word) $a00 +(byte) main::row +(byte) main::row#0 +(byte) main::row#1 +(byte) main::row#2 +(byte) main::row#3 +(const signed word) main::rowOffsetX = (signed word) $c00 +(signed word) main::rowOffsetY +(signed word) main::rowOffsetY#0 +(signed word) main::rowOffsetY#1 +(signed word) main::rowOffsetY#10 +(signed word) main::rowOffsetY#11 +(signed word) main::rowOffsetY#2 +(signed word) main::rowOffsetY#3 +(signed word) main::rowOffsetY#4 +(signed word) main::rowOffsetY#5 +(signed word) main::rowOffsetY#6 +(signed word) main::rowOffsetY#7 +(signed word) main::rowOffsetY#8 +(signed word) main::rowOffsetY#9 +(signed word) main::rowX +(signed word) main::rowX#0 +(signed word) main::rowX#1 +(signed word) main::rowX#2 +(signed word) main::rowX#3 +(signed word) main::rowX#4 +(signed word) main::rowX#5 +(signed word) main::rowY +(signed word) main::rowY#0 +(signed word) main::rowY#1 +(signed word) main::rowY#2 +(signed word) main::rowY#3 +(signed word) main::rowY#4 +(signed word) main::rowY#5 (label) main::toD0181 (word~) main::toD0181_$0 (number~) main::toD0181_$1 @@ -1816,8 +1730,13 @@ SYMBOL TABLE SSA (signed word) main::x (signed word) main::x#0 (signed word) main::x#1 +(signed word) main::x#2 +(signed word) main::x#3 (signed word) main::y (signed word) main::y#0 +(signed word) main::y#1 +(signed word) main::y#2 +(signed word) main::y#3 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (bool~) memset::$0 (bool~) memset::$1 @@ -1860,98 +1779,6 @@ SYMBOL TABLE SSA (void*) memset::str#3 (void*) memset::str#4 (void*) memset::str#5 -(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) -(signed word~) mulf8s::$1 -(label) mulf8s::@2 -(label) mulf8s::@3 -(label) mulf8s::@4 -(label) mulf8s::@return -(signed byte) mulf8s::a -(signed byte) mulf8s::a#0 -(signed byte) mulf8s::a#1 -(signed byte) mulf8s::a#2 -(signed byte) mulf8s::b -(signed byte) mulf8s::b#0 -(signed byte) mulf8s::b#1 -(signed byte) mulf8s::b#2 -(signed byte) mulf8s::b#3 -(signed byte) mulf8s::b#4 -(signed byte) mulf8s::b#5 -(label) mulf8s::mulf8s_prepare1 -(byte~) mulf8s::mulf8s_prepare1_$0 -(signed byte) mulf8s::mulf8s_prepare1_a -(signed byte) mulf8s::mulf8s_prepare1_a#0 -(signed byte) mulf8s::mulf8s_prepare1_a#1 -(signed word) mulf8s::return -(signed word) mulf8s::return#0 -(signed word) mulf8s::return#1 -(signed word) mulf8s::return#2 -(signed word) mulf8s::return#3 -(signed word) mulf8s::return#4 -(signed word) mulf8s::return#5 -(signed word) mulf8s::return#6 -(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$0 -(word~) mulf8s_prepared::$1 -(byte~) mulf8s_prepared::$10 -(byte~) mulf8s_prepared::$12 -(byte~) mulf8s_prepared::$13 -(byte~) mulf8s_prepared::$14 -(byte~) mulf8s_prepared::$15 -(byte~) mulf8s_prepared::$16 -(bool~) mulf8s_prepared::$2 -(bool~) mulf8s_prepared::$3 -(bool~) mulf8s_prepared::$4 -(bool~) mulf8s_prepared::$5 -(signed word~) mulf8s_prepared::$6 -(byte~) mulf8s_prepared::$8 -(byte~) mulf8s_prepared::$9 -(label) mulf8s_prepared::@1 -(label) mulf8s_prepared::@2 -(label) mulf8s_prepared::@3 -(label) mulf8s_prepared::@4 -(label) mulf8s_prepared::@6 -(label) mulf8s_prepared::@return -(signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 -(signed byte) mulf8s_prepared::b#1 -(signed byte) mulf8s_prepared::b#2 -(signed byte) mulf8s_prepared::b#3 -(signed byte) mulf8s_prepared::b#4 -(word) mulf8s_prepared::m -(word) mulf8s_prepared::m#0 -(word) mulf8s_prepared::m#1 -(word) mulf8s_prepared::m#2 -(word) mulf8s_prepared::m#3 -(word) mulf8s_prepared::m#4 -(word) mulf8s_prepared::m#5 -(word) mulf8s_prepared::m#6 -(const signed byte*) mulf8s_prepared::memA = (signed byte*)(number) $fd -(signed word) mulf8s_prepared::return -(signed word) mulf8s_prepared::return#0 -(signed word) mulf8s_prepared::return#1 -(signed word) mulf8s_prepared::return#2 -(signed word) mulf8s_prepared::return#3 -(signed word) mulf8s_prepared::return#4 -(void()) mulf8u_prepare((byte) mulf8u_prepare::a) -(label) mulf8u_prepare::@return -(byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#0 -(byte) mulf8u_prepare::a#1 -(const byte*) mulf8u_prepare::memA = (byte*)(number) $fd -(word()) mulf8u_prepared((byte) mulf8u_prepared::b) -(label) mulf8u_prepared::@return -(byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 -(byte) mulf8u_prepared::b#1 -(const byte*) mulf8u_prepared::memB = (byte*)(number) $ff -(const byte*) mulf8u_prepared::resL = (byte*)(number) $fe -(word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 -(word) mulf8u_prepared::return#1 -(word) mulf8u_prepared::return#2 -(word) mulf8u_prepared::return#3 -(word) mulf8u_prepared::return#4 (void()) mulf_init() (bool~) mulf_init::$0 (number~) mulf_init::$1 @@ -2460,9 +2287,6 @@ SYMBOL TABLE SSA (byte) renderBobInit::y#1 (byte) renderBobInit::y#2 -Fixing inline constructor with mulf8u_prepared::$0 ← (byte)*(mulf8u_prepared::memB) w= (byte)*(mulf8u_prepared::resL) -Successful SSA optimization Pass2FixInlineConstructors -Adding number conversion cast (unumber) $40 in Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0 Adding number conversion cast (unumber) 7 in (number~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#2 & (number) 7 Adding number conversion cast (unumber) keyboard_key_pressed::$0 in (number~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#2 & (unumber)(number) 7 @@ -2484,8 +2308,6 @@ Adding number conversion cast (unumber) $1ff in *((const byte*) mulf_sqr2_lo+(nu Adding number conversion cast (unumber) $100 in *((const byte*) mulf_sqr2_hi+(number) $1ff) ← *((const byte*) mulf_sqr1_hi+(number) $100) Adding number conversion cast (unumber) $1ff in *((const byte*) mulf_sqr2_hi+(number) $1ff) ← *((const byte*) mulf_sqr1_hi+(unumber)(number) $100) Adding number conversion cast (unumber) 1 in (byte) mulf_init::dir#1 ← (number) 1 -Adding number conversion cast (snumber) 0 in (bool~) mulf8s_prepared::$2 ← *((const signed byte*) mulf8s_prepared::memA) < (number) 0 -Adding number conversion cast (snumber) 0 in (bool~) mulf8s_prepared::$4 ← (signed byte) mulf8s_prepared::b#2 < (number) 0 Adding number conversion cast (unumber) 3 in *((const byte*) CIA2_PORT_A_DDR) ← (number) 3 Adding number conversion cast (unumber) $40 in (number~) main::vicSelectGfxBank1_toDd001_$2 ← (byte~) main::vicSelectGfxBank1_toDd001_$1 / (number) $40 Adding number conversion cast (unumber) main::vicSelectGfxBank1_toDd001_$2 in (number~) main::vicSelectGfxBank1_toDd001_$2 ← (byte~) main::vicSelectGfxBank1_toDd001_$1 / (unumber)(number) $40 @@ -2503,25 +2325,17 @@ Adding number conversion cast (unumber) main::toD0181_$7 in (number~) main::toD0 Adding number conversion cast (unumber) main::toD0181_$8 in (number~) main::toD0181_$8 ← (unumber~) main::toD0181_$3 | (unumber~) main::toD0181_$7 Adding number conversion cast (unumber) 0 in (byte) memset::c#0 ← (number) 0 Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number) $3e8 -Adding number conversion cast (unumber) 0 in (byte) main::angle#0 ← (number) 0 +Adding number conversion cast (snumber) $a00 in (signed word) main::origX#0 ← (number) $a00 +Adding number conversion cast (snumber) $100 in (signed word) main::rowOffsetY#0 ← (number) $100 Adding number conversion cast (unumber) $f8 in (bool~) main::$8 ← *((const byte*) RASTER) < (number) $f8 Adding number conversion cast (unumber) $f in *((const byte*) BORDERCOL) ← (number) $f -Adding number conversion cast (snumber) $1e in (signed byte) main::r#0 ← (number) $1e Adding number conversion cast (unumber) 1 in *((const byte*) BORDERCOL) ← (number) 1 -Adding number conversion cast (snumber) $4b*$100 in (number~) main::$11 ← (signed word~) main::$10 + (number) $4b*(number) $100 -Adding number conversion cast (snumber) main::$11 in (number~) main::$11 ← (signed word~) main::$10 + (snumber)(number) $4b*(number) $100 -Adding number conversion cast (snumber) 2 in (number~) main::$13 ← (signed word~) main::$12 * (number) 2 -Adding number conversion cast (snumber) main::$13 in (number~) main::$13 ← (signed word~) main::$12 * (snumber)(number) 2 -Adding number conversion cast (snumber) $5a*$100 in (number~) main::$14 ← (snumber~) main::$13 + (number) $5a*(number) $100 -Adding number conversion cast (snumber) main::$14 in (number~) main::$14 ← (snumber~) main::$13 + (snumber)(number) $5a*(number) $100 Adding number conversion cast (unumber) 2 in *((const byte*) BORDERCOL) ← (number) 2 -Adding number conversion cast (unumber) $62 in (byte) main::a#1 ← (byte) main::a#4 + (number) $62 -Adding number conversion cast (snumber) 3 in (signed byte) main::r#1 ← (signed byte) main::r#4 + (number) 3 -Adding number conversion cast (unumber) 1 in (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,NUM_BOBS-1) -Adding number conversion cast (unumber) 3 in (byte) main::angle#1 ← (byte) main::angle#3 + (number) 3 +Adding number conversion cast (snumber) $100 in (signed word) main::origX#1 ← (signed word) main::origX#3 + (number) $100 +Adding number conversion cast (snumber) $80 in (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#3 + (number) $80 Adding number conversion cast (unumber) 0 in *((const byte*) BORDERCOL) ← (number) 0 -Adding number conversion cast (unumber) 0 in (bool~) main::$23 ← (number) 0 != (byte~) main::$19 -Adding number conversion cast (unumber) 0 in (bool~) main::$22 ← (number) 0 != (byte~) main::$21 +Adding number conversion cast (unumber) 0 in (bool~) main::$19 ← (number) 0 != (byte~) main::$15 +Adding number conversion cast (unumber) 0 in (bool~) main::$18 ← (number) 0 != (byte~) main::$17 Adding number conversion cast (unumber) 3 in *((const byte*) CIA2_PORT_A_DDR) ← (number) 3 Adding number conversion cast (unumber) $40 in (number~) main::vicSelectGfxBank2_toDd001_$2 ← (byte~) main::vicSelectGfxBank2_toDd001_$1 / (number) $40 Adding number conversion cast (unumber) main::vicSelectGfxBank2_toDd001_$2 in (number~) main::vicSelectGfxBank2_toDd001_$2 ← (byte~) main::vicSelectGfxBank2_toDd001_$1 / (unumber)(number) $40 @@ -2645,20 +2459,15 @@ Inlining cast (byte) mulf_init::x_2#0 ← (unumber)(number) 0 Inlining cast (byte) mulf_init::c#0 ← (unumber)(number) 0 Inlining cast (byte) mulf_init::dir#0 ← (unumber)(number) $ff Inlining cast (byte) mulf_init::dir#1 ← (unumber)(number) 1 -Inlining cast (byte~) mulf8s_prepared::$0 ← (byte)(signed byte) mulf8s_prepared::b#1 -Inlining cast (byte~) mulf8s_prepared::$9 ← (byte)(signed byte) mulf8s_prepared::b#3 -Inlining cast (signed word~) mulf8s_prepared::$6 ← (signed word)(word) mulf8s_prepared::m#4 -Inlining cast (byte~) mulf8s_prepared::$13 ← (byte)*((const signed byte*) mulf8s_prepared::memA) -Inlining cast (byte~) mulf8s::mulf8s_prepare1_$0 ← (byte)(signed byte) mulf8s::mulf8s_prepare1_a#1 Inlining cast *((const byte*) CIA2_PORT_A_DDR) ← (unumber)(number) 3 Inlining cast (word~) main::vicSelectGfxBank1_toDd001_$0 ← (word)(byte*) main::vicSelectGfxBank1_toDd001_gfx#1 Inlining cast (word~) main::toD0181_$0 ← (word)(byte*) main::toD0181_screen#1 Inlining cast (word~) main::toD0181_$4 ← (word)(byte*) main::toD0181_gfx#1 Inlining cast (byte) memset::c#0 ← (unumber)(number) 0 Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8 -Inlining cast (byte) main::angle#0 ← (unumber)(number) 0 +Inlining cast (signed word) main::origX#0 ← (snumber)(number) $a00 +Inlining cast (signed word) main::rowOffsetY#0 ← (snumber)(number) $100 Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) $f -Inlining cast (signed byte) main::r#0 ← (snumber)(number) $1e Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 1 Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 2 Inlining cast *((const byte*) BORDERCOL) ← (unumber)(number) 0 @@ -2720,10 +2529,6 @@ Simplifying constant integer cast $10 Simplifying constant integer cast $20 Simplifying constant integer cast $40 Simplifying constant integer cast $80 -Simplifying constant pointer cast (byte*) 253 -Simplifying constant pointer cast (byte*) 254 -Simplifying constant pointer cast (byte*) 255 -Simplifying constant pointer cast (signed byte*) 253 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 4096 Simplifying constant pointer cast (byte*) 10240 @@ -2737,7 +2542,6 @@ Simplifying constant integer cast $f6 Simplifying constant integer cast $e7 Simplifying constant integer cast $ea Simplifying constant integer cast $e0 -Simplifying constant integer cast $40 Simplifying constant integer cast 0 Simplifying constant integer cast 7 Simplifying constant integer cast 3 @@ -2758,10 +2562,6 @@ Simplifying constant integer cast $1ff Simplifying constant integer cast $100 Simplifying constant integer cast $1ff Simplifying constant integer cast 1 -Simplifying constant integer cast *((const byte*) mulf8u_prepared::memB) -Simplifying constant integer cast *((const byte*) mulf8u_prepared::resL) -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 Simplifying constant integer cast 3 Simplifying constant integer cast $40 Simplifying constant integer cast 3 @@ -2771,17 +2571,14 @@ Simplifying constant integer cast 4 Simplifying constant integer cast $f Simplifying constant integer cast 0 Simplifying constant integer cast $3e8 -Simplifying constant integer cast 0 +Simplifying constant integer cast $a00 +Simplifying constant integer cast $100 Simplifying constant integer cast $f8 Simplifying constant integer cast $f -Simplifying constant integer cast $1e Simplifying constant integer cast 1 Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast $62 -Simplifying constant integer cast 3 -Simplifying constant integer cast 1 -Simplifying constant integer cast 3 +Simplifying constant integer cast $100 +Simplifying constant integer cast $80 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -2886,7 +2683,6 @@ Simplifying constant integer cast 8 Simplifying constant integer cast 8 Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification -Finalized unsigned number type (byte) $40 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 7 Finalized unsigned number type (byte) 3 @@ -2906,8 +2702,6 @@ Finalized unsigned number type (word) $1ff Finalized unsigned number type (word) $100 Finalized unsigned number type (word) $1ff Finalized unsigned number type (byte) 1 -Finalized signed number type (signed byte) 0 -Finalized signed number type (signed byte) 0 Finalized unsigned number type (byte) 3 Finalized unsigned number type (byte) $40 Finalized unsigned number type (byte) 3 @@ -2917,17 +2711,14 @@ Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) $f Finalized unsigned number type (byte) 0 Finalized unsigned number type (word) $3e8 -Finalized unsigned number type (byte) 0 +Finalized signed number type (signed word) $a00 +Finalized signed number type (signed word) $100 Finalized unsigned number type (byte) $f8 Finalized unsigned number type (byte) $f -Finalized signed number type (signed byte) $1e Finalized unsigned number type (byte) 1 -Finalized signed number type (signed byte) 2 Finalized unsigned number type (byte) 2 -Finalized unsigned number type (byte) $62 -Finalized signed number type (signed byte) 3 -Finalized unsigned number type (byte) 1 -Finalized unsigned number type (byte) 3 +Finalized signed number type (signed word) $100 +Finalized signed number type (signed word) $80 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 @@ -3033,9 +2824,6 @@ Inferred type updated to byte in (unumber~) main::toD0181_$3 ← > (word~) main: Inferred type updated to byte in (unumber~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (byte) 4 Inferred type updated to byte in (unumber~) main::toD0181_$7 ← (byte~) main::toD0181_$6 & (byte) $f Inferred type updated to byte in (unumber~) main::toD0181_$8 ← (byte~) main::toD0181_$3 | (byte~) main::toD0181_$7 -Inferred type updated to signed word in (snumber~) main::$11 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 -Inferred type updated to signed word in (snumber~) main::$13 ← (signed word~) main::$12 * (signed byte) 2 -Inferred type updated to signed word in (snumber~) main::$14 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 Inferred type updated to byte in (unumber~) main::vicSelectGfxBank2_toDd001_$2 ← (byte~) main::vicSelectGfxBank2_toDd001_$1 / (byte) $40 Inferred type updated to byte in (unumber~) main::vicSelectGfxBank2_toDd001_$3 ← (byte) 3 ^ (byte~) main::vicSelectGfxBank2_toDd001_$2 Inferred type updated to word in (unumber~) main::toD0182_$1 ← (word~) main::toD0182_$0 & (word) $3fff @@ -3053,12 +2841,10 @@ Inferred type updated to byte in (unumber~) protoBobShiftRight::$1 ← *((const Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Inversing boolean not [55] (bool~) mulf_init::$3 ← (byte~) mulf_init::$1 != (byte) 0 from [54] (bool~) mulf_init::$2 ← (byte~) mulf_init::$1 == (byte) 0 Inversing boolean not [83] (bool~) mulf_init::$10 ← (byte) mulf_init::x_255#1 != (byte) 0 from [82] (bool~) mulf_init::$9 ← (byte) mulf_init::x_255#1 == (byte) 0 -Inversing boolean not [113] (bool~) mulf8s_prepared::$3 ← *((const signed byte*) mulf8s_prepared::memA) >= (signed byte) 0 from [112] (bool~) mulf8s_prepared::$2 ← *((const signed byte*) mulf8s_prepared::memA) < (signed byte) 0 -Inversing boolean not [117] (bool~) mulf8s_prepared::$5 ← (signed byte) mulf8s_prepared::b#2 >= (signed byte) 0 from [116] (bool~) mulf8s_prepared::$4 ← (signed byte) mulf8s_prepared::b#2 < (signed byte) 0 -Inversing boolean not [259] (bool~) main::$20 ← (byte) 0 == (byte~) main::$19 from [258] (bool~) main::$23 ← (byte) 0 != (byte~) main::$19 -Inversing boolean not [500] (bool~) charsetFindOrAddGlyph::$3 ← *((byte*) charsetFindOrAddGlyph::glyph_cursor#2 + (byte) charsetFindOrAddGlyph::i#3) == *((byte*) charsetFindOrAddGlyph::glyph#2 + (byte) charsetFindOrAddGlyph::i#3) from [499] (bool~) charsetFindOrAddGlyph::$2 ← *((byte*) charsetFindOrAddGlyph::glyph_cursor#2 + (byte) charsetFindOrAddGlyph::i#3) != *((byte*) charsetFindOrAddGlyph::glyph#2 + (byte) charsetFindOrAddGlyph::i#3) -Inversing boolean not [508] (bool~) charsetFindOrAddGlyph::$4 ← (byte) 0 == (byte) charsetFindOrAddGlyph::found#2 from [507] (bool~) charsetFindOrAddGlyph::$6 ← (byte) 0 != (byte) charsetFindOrAddGlyph::found#2 -Inversing boolean not [541] (bool~) progress_inc::$1 ← (byte) progress_idx#8 != (byte) 8 from [540] (bool~) progress_inc::$0 ← (byte) progress_idx#8 == (byte) 8 +Inversing boolean not [192] (bool~) main::$16 ← (byte) 0 == (byte~) main::$15 from [191] (bool~) main::$19 ← (byte) 0 != (byte~) main::$15 +Inversing boolean not [433] (bool~) charsetFindOrAddGlyph::$3 ← *((byte*) charsetFindOrAddGlyph::glyph_cursor#2 + (byte) charsetFindOrAddGlyph::i#3) == *((byte*) charsetFindOrAddGlyph::glyph#2 + (byte) charsetFindOrAddGlyph::i#3) from [432] (bool~) charsetFindOrAddGlyph::$2 ← *((byte*) charsetFindOrAddGlyph::glyph_cursor#2 + (byte) charsetFindOrAddGlyph::i#3) != *((byte*) charsetFindOrAddGlyph::glyph#2 + (byte) charsetFindOrAddGlyph::i#3) +Inversing boolean not [441] (bool~) charsetFindOrAddGlyph::$4 ← (byte) 0 == (byte) charsetFindOrAddGlyph::found#2 from [440] (bool~) charsetFindOrAddGlyph::$6 ← (byte) 0 != (byte) charsetFindOrAddGlyph::found#2 +Inversing boolean not [474] (bool~) progress_inc::$1 ← (byte) progress_idx#8 != (byte) 8 from [473] (bool~) progress_inc::$0 ← (byte) progress_idx#8 == (byte) 8 Successful SSA optimization Pass2UnaryNotSimplification Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 Alias (void*) memset::str#2 = (void*) memset::str#3 @@ -3087,20 +2873,6 @@ Alias (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#3 Alias (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 Alias (byte) mulf_init::x_255#1 = (byte~) mulf_init::$8 (byte) mulf_init::x_255#5 Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#5 -Alias (word) mulf8u_prepared::return#0 = (word~) mulf8u_prepared::$0 (word) mulf8u_prepared::return#3 (word) mulf8u_prepared::return#1 -Alias (byte) mulf8u_prepared::b#0 = (byte~) mulf8s_prepared::$0 -Alias (word) mulf8u_prepared::return#2 = (word) mulf8u_prepared::return#4 -Alias (signed byte) mulf8s_prepared::b#1 = (signed byte) mulf8s_prepared::b#4 (signed byte) mulf8s_prepared::b#3 -Alias (word) mulf8s_prepared::m#0 = (word~) mulf8s_prepared::$1 (word) mulf8s_prepared::m#3 -Alias (byte~) mulf8s_prepared::$15 = (byte~) mulf8s_prepared::$10 -Alias (signed word) mulf8s_prepared::return#0 = (signed word~) mulf8s_prepared::$6 (signed word) mulf8s_prepared::return#3 (signed word) mulf8s_prepared::return#1 -Alias (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#6 -Alias (byte~) mulf8s_prepared::$16 = (byte~) mulf8s_prepared::$14 -Alias (signed byte) mulf8s::mulf8s_prepare1_a#0 = (signed byte) mulf8s::a#2 (signed byte) mulf8s::mulf8s_prepare1_a#1 -Alias (signed byte) mulf8s::b#2 = (signed byte) mulf8s::b#4 (signed byte) mulf8s::b#5 (signed byte) mulf8s::b#3 -Alias (byte) mulf8u_prepare::a#0 = (byte~) mulf8s::mulf8s_prepare1_$0 -Alias (signed word) mulf8s_prepared::return#2 = (signed word) mulf8s_prepared::return#4 -Alias (signed word) mulf8s::return#0 = (signed word~) mulf8s::$1 (signed word) mulf8s::return#4 (signed word) mulf8s::return#1 Alias (byte*) progress_cursor#21 = (byte*) progress_cursor#28 Alias (byte) progress_idx#22 = (byte) progress_idx#28 Alias (byte) bob_charset_next_id#19 = (byte) bob_charset_next_id#28 @@ -3114,30 +2886,31 @@ Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$4 Alias (byte**) renderBobCleanupNext#16 = (byte**) renderBobCleanupNext#20 -Alias (byte) main::angle#2 = (byte) main::angle#4 (byte) main::angle#6 (byte) main::a#0 +Alias (signed word) main::origX#2 = (signed word) main::origX#4 (signed word) main::origX#6 (signed word) main::rowX#0 +Alias (signed word) main::rowOffsetY#7 = (signed word) main::rowOffsetY#8 (signed word) main::rowOffsetY#9 Alias (byte*) progress_cursor#63 = (byte*) progress_cursor#65 (byte*) progress_cursor#67 Alias (byte) progress_idx#63 = (byte) progress_idx#65 (byte) progress_idx#67 Alias (byte) bob_charset_next_id#71 = (byte) bob_charset_next_id#73 (byte) bob_charset_next_id#75 Alias (byte**) renderBobCleanupNext#0 = (byte**) renderBobCleanupNext#9 -Alias (signed word) mulf8s::return#2 = (signed word) mulf8s::return#5 -Alias (signed byte) main::r#2 = (signed byte) main::r#3 (signed byte) main::r#4 -Alias (byte) main::a#2 = (byte) main::a#3 (byte) main::a#4 -Alias (byte**) renderBobCleanupNext#17 = (byte**) renderBobCleanupNext#21 (byte**) renderBobCleanupNext#25 -Alias (byte) main::i#2 = (byte) main::i#4 (byte) main::i#5 (byte) main::i#3 -Alias (byte) main::angle#11 = (byte) main::angle#9 (byte) main::angle#7 (byte) main::angle#5 (byte) main::angle#3 -Alias (byte*) progress_cursor#51 = (byte*) progress_cursor#59 (byte*) progress_cursor#61 (byte*) progress_cursor#57 (byte*) progress_cursor#55 (byte*) progress_cursor#53 -Alias (byte) progress_idx#51 = (byte) progress_idx#59 (byte) progress_idx#61 (byte) progress_idx#57 (byte) progress_idx#55 (byte) progress_idx#53 -Alias (byte) bob_charset_next_id#59 = (byte) bob_charset_next_id#67 (byte) bob_charset_next_id#69 (byte) bob_charset_next_id#65 (byte) bob_charset_next_id#63 (byte) bob_charset_next_id#61 -Alias (signed word) main::x#0 = (signed word~) main::$11 (signed word) main::x#1 -Alias (signed word) mulf8s::return#3 = (signed word) mulf8s::return#6 -Alias (signed word) main::y#0 = (signed word~) main::$14 -Alias (byte) renderBob::xpos#0 = (byte~) main::$15 -Alias (byte) renderBob::ypos#0 = (byte~) main::$16 -Alias (signed byte) main::r#1 = (signed byte) main::r#5 -Alias (byte) main::a#1 = (byte) main::a#5 -Alias (byte**) renderBobCleanupNext#1 = (byte**) renderBobCleanupNext#10 (byte**) renderBobCleanupNext#32 (byte**) renderBobCleanupNext#29 +Alias (signed word) main::x#0 = (signed word) main::rowX#2 +Alias (signed word) main::y#0 = (signed word) main::rowY#2 +Alias (byte) renderBob::xpos#0 = (byte~) main::$10 +Alias (byte) renderBob::ypos#0 = (byte~) main::$11 +Alias (signed word) main::x#2 = (signed word) main::x#3 +Alias (signed word) main::y#2 = (signed word) main::y#3 +Alias (signed word) main::rowOffsetY#2 = (signed word) main::rowOffsetY#4 (signed word) main::rowOffsetY#5 (signed word) main::rowOffsetY#3 +Alias (byte) main::row#2 = (byte) main::row#3 +Alias (signed word) main::rowX#3 = (signed word) main::rowX#4 (signed word) main::rowX#5 +Alias (signed word) main::rowY#3 = (signed word) main::rowY#4 (signed word) main::rowY#5 +Alias (byte) main::col#2 = (byte) main::col#3 (byte) main::col#4 +Alias (signed word) main::origX#3 = (signed word) main::origX#7 (signed word) main::origX#9 (signed word) main::origX#5 +Alias (byte*) progress_cursor#51 = (byte*) progress_cursor#57 (byte*) progress_cursor#59 (byte*) progress_cursor#55 (byte*) progress_cursor#53 +Alias (byte) progress_idx#51 = (byte) progress_idx#57 (byte) progress_idx#59 (byte) progress_idx#55 (byte) progress_idx#53 +Alias (byte) bob_charset_next_id#59 = (byte) bob_charset_next_id#65 (byte) bob_charset_next_id#67 (byte) bob_charset_next_id#63 (byte) bob_charset_next_id#61 +Alias (byte**) renderBobCleanupNext#1 = (byte**) renderBobCleanupNext#10 (byte**) renderBobCleanupNext#25 (byte**) renderBobCleanupNext#32 (byte**) renderBobCleanupNext#29 Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#5 -Alias (byte) main::angle#1 = (byte) main::angle#10 +Alias (signed word) main::origX#1 = (signed word) main::origX#10 +Alias (signed word) main::rowOffsetY#1 = (signed word) main::rowOffsetY#11 Alias (byte) keyboard_key_pressed::return#3 = (byte) keyboard_key_pressed::return#6 Alias (byte*) progress_cursor#1 = (byte*) progress_cursor#48 (byte*) progress_cursor#49 (byte*) progress_cursor#47 (byte*) progress_cursor#46 (byte*) progress_cursor#44 (byte*) progress_cursor#42 (byte*) progress_cursor#39 (byte*) progress_cursor#36 (byte*) progress_cursor#33 (byte*) progress_cursor#29 (byte*) progress_cursor#22 (byte*) progress_cursor#12 Alias (byte) progress_idx#1 = (byte) progress_idx#48 (byte) progress_idx#49 (byte) progress_idx#47 (byte) progress_idx#46 (byte) progress_idx#44 (byte) progress_idx#42 (byte) progress_idx#39 (byte) progress_idx#36 (byte) progress_idx#33 (byte) progress_idx#29 (byte) progress_idx#23 (byte) progress_idx#13 @@ -3234,7 +3007,6 @@ Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#4 Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#4 Alias (byte) mulf_init::x_255#1 = (byte) mulf_init::x_255#4 Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#4 -Alias (signed byte) mulf8s_prepared::b#1 = (signed byte) mulf8s_prepared::b#2 Alias (byte) protoBobShiftRight::j#3 = (byte) protoBobShiftRight::j#4 Alias (byte) protoBobShiftRight::carry#2 = (byte) protoBobShiftRight::carry#3 Alias (byte) protoBobShiftRight::i#2 = (byte) protoBobShiftRight::i#4 (byte) protoBobShiftRight::i#3 @@ -3251,9 +3023,6 @@ Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0 Identical Phi Values (void*) memset::str#4 (void*) memset::str#2 Identical Phi Values (byte) memset::c#1 (byte) memset::c#3 Identical Phi Values (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0 -Identical Phi Values (byte) mulf8u_prepare::a#1 (byte) mulf8u_prepare::a#0 -Identical Phi Values (byte) mulf8u_prepared::b#1 (byte) mulf8u_prepared::b#0 -Identical Phi Values (signed byte) mulf8s_prepared::b#1 (signed byte) mulf8s_prepared::b#0 Identical Phi Values (byte*) progress_cursor#21 (byte*) progress_cursor#27 Identical Phi Values (byte) progress_idx#22 (byte) progress_idx#27 Identical Phi Values (byte) bob_charset_next_id#19 (byte) bob_charset_next_id#27 @@ -3262,15 +3031,20 @@ Identical Phi Values (byte*) progress_cursor#0 (byte*) progress_cursor#15 Identical Phi Values (byte) progress_idx#0 (byte) progress_idx#16 Identical Phi Values (byte) bob_charset_next_id#0 (byte) bob_charset_next_id#14 Identical Phi Values (byte**) renderBobCleanupNext#16 (byte**) renderBobCleanupNext#24 -Identical Phi Values (byte) main::angle#2 (byte) main::angle#8 +Identical Phi Values (signed word) main::origX#2 (signed word) main::origX#8 +Identical Phi Values (signed word) main::rowOffsetY#7 (signed word) main::rowOffsetY#10 Identical Phi Values (byte*) progress_cursor#63 (byte*) progress_cursor#50 Identical Phi Values (byte) progress_idx#63 (byte) progress_idx#50 Identical Phi Values (byte) bob_charset_next_id#71 (byte) bob_charset_next_id#58 Identical Phi Values (byte**) renderBobCleanupNext#0 (byte**) renderBobCleanupNext#14 -Identical Phi Values (byte) main::angle#11 (byte) main::angle#2 -Identical Phi Values (byte*) progress_cursor#51 (byte*) progress_cursor#63 -Identical Phi Values (byte) progress_idx#51 (byte) progress_idx#63 -Identical Phi Values (byte) bob_charset_next_id#59 (byte) bob_charset_next_id#71 +Identical Phi Values (signed word) main::rowOffsetY#2 (signed word) main::rowOffsetY#6 +Identical Phi Values (signed word) main::rowX#3 (signed word) main::x#0 +Identical Phi Values (signed word) main::rowY#3 (signed word) main::y#0 +Identical Phi Values (byte) main::col#2 (byte) main::col#5 +Identical Phi Values (signed word) main::origX#3 (signed word) main::origX#11 +Identical Phi Values (byte*) progress_cursor#51 (byte*) progress_cursor#61 +Identical Phi Values (byte) progress_idx#51 (byte) progress_idx#61 +Identical Phi Values (byte) bob_charset_next_id#59 (byte) bob_charset_next_id#69 Identical Phi Values (byte**) renderBobCleanupNext#1 (byte**) renderBobCleanupNext#13 Identical Phi Values (byte) renderBob::xpos#1 (byte) renderBob::xpos#0 Identical Phi Values (byte) renderBob::ypos#1 (byte) renderBob::ypos#0 @@ -3304,16 +3078,22 @@ Identical Phi Values (byte) bob_charset_next_id#18 (byte) bob_charset_next_id#1 Identical Phi Values (byte**) renderBobCleanupNext#15 (byte**) renderBobCleanupNext#11 Successful SSA optimization Pass2IdenticalPhiElimination Identical Phi Values (void*) memset::return#0 (void*) memset::str#0 +Identical Phi Values (signed word) main::rowOffsetY#6 (signed word) main::rowOffsetY#10 +Identical Phi Values (signed word) main::origX#11 (signed word) main::origX#8 +Identical Phi Values (byte*) progress_cursor#61 (byte*) progress_cursor#50 +Identical Phi Values (byte) progress_idx#61 (byte) progress_idx#50 +Identical Phi Values (byte) bob_charset_next_id#69 (byte) bob_charset_next_id#58 +Identical Phi Values (byte) prepareBobs::shift_y#12 (byte) prepareBobs::shift_y#2 +Identical Phi Values (byte) bob_charset_next_id#15 (byte) bob_charset_next_id#23 +Identical Phi Values (byte*) charsetFindOrAddGlyph::glyph#6 (byte*) charsetFindOrAddGlyph::glyph#10 +Identical Phi Values (byte) charsetFindOrAddGlyph::return#3 (byte) charsetFindOrAddGlyph::glyph_id#11 +Successful SSA optimization Pass2IdenticalPhiElimination Identical Phi Values (byte*) progress_cursor#50 (byte*) progress_cursor#15 Identical Phi Values (byte) progress_idx#50 (byte) progress_idx#16 Identical Phi Values (byte) bob_charset_next_id#58 (byte) bob_charset_next_id#14 Identical Phi Values (byte*) progress_cursor#1 (byte*) progress_cursor#50 Identical Phi Values (byte) progress_idx#1 (byte) progress_idx#50 Identical Phi Values (byte) bob_charset_next_id#1 (byte) bob_charset_next_id#58 -Identical Phi Values (byte) prepareBobs::shift_y#12 (byte) prepareBobs::shift_y#2 -Identical Phi Values (byte) bob_charset_next_id#15 (byte) bob_charset_next_id#23 -Identical Phi Values (byte*) charsetFindOrAddGlyph::glyph#6 (byte*) charsetFindOrAddGlyph::glyph#10 -Identical Phi Values (byte) charsetFindOrAddGlyph::return#3 (byte) charsetFindOrAddGlyph::glyph_id#11 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) memset::$1 [3] if((word) memset::num#0<=(byte) 0) goto memset::@1 Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 @@ -3321,30 +3101,29 @@ Simple Condition (bool~) mulf_init::$0 [50] if((byte*) mulf_init::sqr1_lo#2!=(co Simple Condition (bool~) mulf_init::$3 [56] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@4 Simple Condition (bool~) mulf_init::$7 [75] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@10 Simple Condition (bool~) mulf_init::$10 [84] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@12 -Simple Condition (bool~) mulf8s_prepared::$3 [114] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 -Simple Condition (bool~) mulf8s_prepared::$5 [118] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -Simple Condition (bool~) main::$8 [209] if(*((const byte*) RASTER)<(byte) $f8) goto main::@4 -Simple Condition (bool~) main::$18 [249] if((byte) main::i#1!=rangelast(0,NUM_BOBS-1)) goto main::@6 -Simple Condition (bool~) main::$20 [260] if((byte) 0==(byte~) main::$19) goto main::@1 -Simple Condition (bool~) main::$22 [268] if((byte) 0!=(byte~) main::$21) goto main::@15 -Simple Condition (bool~) renderBobInit::$2 [319] if((byte) renderBobInit::y#1!=rangelast(0,$1f)) goto renderBobInit::@1 -Simple Condition (bool~) renderBobInit::$3 [326] if((byte) renderBobInit::i#1!=rangelast(0,NUM_BOBS-1)) goto renderBobInit::@3 -Simple Condition (bool~) renderBobCleanup::$0 [372] if((byte) renderBobCleanup::i#1!=rangelast(0,NUM_BOBS-1)) goto renderBobCleanup::@1 -Simple Condition (bool~) prepareBobs::$2 [394] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2 -Simple Condition (bool~) prepareBobs::$3 [399] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@5 -Simple Condition (bool~) prepareBobs::$5 [411] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@8 -Simple Condition (bool~) protoBobShiftRight::$0 [445] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2 -Simple Condition (bool~) protoBobShiftRight::$8 [449] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@4 -Simple Condition (bool~) protoBobShiftRight::$7 [461] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@7 -Simple Condition (bool~) protoBobShiftDown::$0 [472] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2 -Simple Condition (bool~) charsetFindOrAddGlyph::$0 [489] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2 -Simple Condition (bool~) charsetFindOrAddGlyph::$1 [497] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@5 -Simple Condition (bool~) charsetFindOrAddGlyph::$3 [501] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@7 -Simple Condition (bool~) charsetFindOrAddGlyph::$4 [509] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@16 -Simple Condition (bool~) charsetFindOrAddGlyph::$5 [521] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@21 -Simple Condition (bool~) progress_inc::$1 [542] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1 +Simple Condition (bool~) main::$8 [148] if(*((const byte*) RASTER)<(byte) $f8) goto main::@4 +Simple Condition (bool~) main::$13 [175] if((byte) main::row#1!=rangelast(0,4)) goto main::@7 +Simple Condition (bool~) main::$14 [181] if((byte) main::col#1!=rangelast(0,4)) goto main::@6 +Simple Condition (bool~) main::$16 [193] if((byte) 0==(byte~) main::$15) goto main::@1 +Simple Condition (bool~) main::$18 [201] if((byte) 0!=(byte~) main::$17) goto main::@17 +Simple Condition (bool~) renderBobInit::$2 [252] if((byte) renderBobInit::y#1!=rangelast(0,$1f)) goto renderBobInit::@1 +Simple Condition (bool~) renderBobInit::$3 [259] if((byte) renderBobInit::i#1!=rangelast(0,NUM_BOBS-1)) goto renderBobInit::@3 +Simple Condition (bool~) renderBobCleanup::$0 [305] if((byte) renderBobCleanup::i#1!=rangelast(0,NUM_BOBS-1)) goto renderBobCleanup::@1 +Simple Condition (bool~) prepareBobs::$2 [327] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2 +Simple Condition (bool~) prepareBobs::$3 [332] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@5 +Simple Condition (bool~) prepareBobs::$5 [344] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@8 +Simple Condition (bool~) protoBobShiftRight::$0 [378] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2 +Simple Condition (bool~) protoBobShiftRight::$8 [382] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@4 +Simple Condition (bool~) protoBobShiftRight::$7 [394] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@7 +Simple Condition (bool~) protoBobShiftDown::$0 [405] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2 +Simple Condition (bool~) charsetFindOrAddGlyph::$0 [422] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2 +Simple Condition (bool~) charsetFindOrAddGlyph::$1 [430] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@5 +Simple Condition (bool~) charsetFindOrAddGlyph::$3 [434] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@7 +Simple Condition (bool~) charsetFindOrAddGlyph::$4 [442] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@16 +Simple Condition (bool~) charsetFindOrAddGlyph::$5 [454] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@21 +Simple Condition (bool~) progress_inc::$1 [475] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Negating conditional jump and destination [260] if((byte) 0!=(byte~) main::$19) goto main::@15 +Negating conditional jump and destination [193] if((byte) 0!=(byte~) main::$15) goto main::@17 Successful SSA optimization Pass2ConditionalJumpSequenceImprovement Constant (const word) mulf_init::sqr#0 = 0 Constant (const byte) mulf_init::x_2#0 = 0 @@ -3362,20 +3141,22 @@ Constant (const byte*) main::toD0181_gfx#0 = BOB_CHARSET Constant (const void*) memset::str#0 = (void*)BOB_SCREEN Constant (const byte) memset::c#0 = 0 Constant (const word) memset::num#0 = $3e8 -Constant (const byte) main::angle#0 = 0 -Constant (const signed byte) main::r#0 = $1e -Constant (const byte) main::i#0 = 0 +Constant (const signed word) main::origX#0 = $a00 +Constant (const signed word) main::rowOffsetY#0 = $100 +Constant (const signed word) main::rowY#0 = main::origY +Constant (const byte) main::col#0 = 0 +Constant (const byte) main::row#0 = 0 Constant (const byte) keyboard_key_pressed::key#0 = KEY_SPACE Constant (const byte) keyboard_key_pressed::key#1 = KEY_SPACE -Constant (const byte*) main::vicSelectGfxBank2_gfx#0 = SCREEN_BASIC -Constant (const byte*) main::toD0182_screen#0 = SCREEN_BASIC -Constant (const byte*) main::toD0182_gfx#0 = CHARSET_BASIC +Constant (const byte*) main::vicSelectGfxBank2_gfx#0 = BASIC_SCREEN +Constant (const byte*) main::toD0182_screen#0 = BASIC_SCREEN +Constant (const byte*) main::toD0182_gfx#0 = BASIC_CHARSET Constant (const byte**) renderBobCleanupNext#19 = (byte**) 0 Constant (const byte) renderBobInit::y#0 = 0 Constant (const byte) renderBobInit::i#0 = 0 Constant (const byte) renderBobCleanup::i#0 = 0 Constant (const byte**) renderBobCleanupNext#14 = RENDERBOB_CLEANUP -Constant (const byte*) progress_init::line#0 = SCREEN_BASIC +Constant (const byte*) progress_init::line#0 = BASIC_SCREEN Constant (const byte) bob_charset_next_id#2 = 0 Constant (const byte*) charsetFindOrAddGlyph::glyph#0 = PROTO_BOB+$30 Constant (const byte*) charsetFindOrAddGlyph::charset#0 = BOB_CHARSET @@ -3414,27 +3195,29 @@ Constant (const word) main::toD0182_$4 = (word)main::toD0182_gfx#0 Constant (const byte*) progress_cursor#16 = progress_init::line#0 Successful SSA optimization Pass2ConstantIdentification if() condition always false - eliminating [3] if((const word) memset::num#0<=(byte) 0) goto memset::@1 -Removing PHI-reference to removed block (main::@1) in block main::@15 -if() condition always true - replacing block destination [206] if(true) goto main::@4 +Removing PHI-reference to removed block (main::@1) in block main::@17 +if() condition always true - replacing block destination [145] if(true) goto main::@4 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [247] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [249] if(main::i#1!=rangelast(0,NUM_BOBS-1)) goto main::@6 to (const byte) NUM_BOBS-(byte) 1+(number) 1 -Resolved ranged next value [317] renderBobInit::y#1 ← ++ renderBobInit::y#2 to ++ -Resolved ranged comparison value [319] if(renderBobInit::y#1!=rangelast(0,$1f)) goto renderBobInit::@1 to (number) $20 -Resolved ranged next value [324] renderBobInit::i#1 ← ++ renderBobInit::i#2 to ++ -Resolved ranged comparison value [326] if(renderBobInit::i#1!=rangelast(0,NUM_BOBS-1)) goto renderBobInit::@3 to (const byte) NUM_BOBS-(byte) 1+(number) 1 -Resolved ranged next value [370] renderBobCleanup::i#1 ← ++ renderBobCleanup::i#2 to ++ -Resolved ranged comparison value [372] if(renderBobCleanup::i#1!=rangelast(0,NUM_BOBS-1)) goto renderBobCleanup::@1 to (const byte) NUM_BOBS-(byte) 1+(number) 1 -Simplifying constant evaluating to zero (byte) 0*(const byte) BOB_SUBTABLE_SIZE in [345] *((byte*) renderBob::screen#0 + (byte) 0) ← *((const byte*) BOB_TABLES+(byte) 0*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) +Resolved ranged next value [173] main::row#1 ← ++ main::row#2 to ++ +Resolved ranged comparison value [175] if(main::row#1!=rangelast(0,4)) goto main::@7 to (number) 5 +Resolved ranged next value [179] main::col#1 ← ++ main::col#5 to ++ +Resolved ranged comparison value [181] if(main::col#1!=rangelast(0,4)) goto main::@6 to (number) 5 +Resolved ranged next value [250] renderBobInit::y#1 ← ++ renderBobInit::y#2 to ++ +Resolved ranged comparison value [252] if(renderBobInit::y#1!=rangelast(0,$1f)) goto renderBobInit::@1 to (number) $20 +Resolved ranged next value [257] renderBobInit::i#1 ← ++ renderBobInit::i#2 to ++ +Resolved ranged comparison value [259] if(renderBobInit::i#1!=rangelast(0,NUM_BOBS-1)) goto renderBobInit::@3 to (const byte) NUM_BOBS-(byte) 1+(number) 1 +Resolved ranged next value [303] renderBobCleanup::i#1 ← ++ renderBobCleanup::i#2 to ++ +Resolved ranged comparison value [305] if(renderBobCleanup::i#1!=rangelast(0,NUM_BOBS-1)) goto renderBobCleanup::@1 to (const byte) NUM_BOBS-(byte) 1+(number) 1 +Simplifying constant evaluating to zero (byte) 0*(const byte) BOB_SUBTABLE_SIZE in [278] *((byte*) renderBob::screen#0 + (byte) 0) ← *((const byte*) BOB_TABLES+(byte) 0*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) Successful SSA optimization PassNSimplifyConstantZero -Simplifying expression containing zero BOB_TABLES in [345] *((byte*) renderBob::screen#0 + (byte) 0) ← *((const byte*) BOB_TABLES+(byte) 0 + (byte) renderBob::bob_table_idx#0) -Simplifying expression containing zero renderBob::screen#0 in [345] *((byte*) renderBob::screen#0 + (byte) 0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) -Simplifying expression containing zero renderBobCleanup::screen#0 in [361] *((byte*) renderBobCleanup::screen#0 + (byte) 0) ← (byte) 0 -Simplifying expression containing zero PROTO_BOB in [478] *((const byte*) PROTO_BOB + (byte) 0) ← (byte) 0 +Simplifying expression containing zero BOB_TABLES in [278] *((byte*) renderBob::screen#0 + (byte) 0) ← *((const byte*) BOB_TABLES+(byte) 0 + (byte) renderBob::bob_table_idx#0) +Simplifying expression containing zero renderBob::screen#0 in [278] *((byte*) renderBob::screen#0 + (byte) 0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) +Simplifying expression containing zero renderBobCleanup::screen#0 in [294] *((byte*) renderBobCleanup::screen#0 + (byte) 0) ← (byte) 0 +Simplifying expression containing zero PROTO_BOB in [411] *((const byte*) PROTO_BOB + (byte) 0) ← (byte) 0 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable - keeping the phi block (byte**) renderBobCleanupNext#24 Eliminating unused variable - keeping the phi block (byte**) renderBobCleanupNext#11 -Eliminating unused variable (byte) charsetFindOrAddGlyph::return#0 and assignment [199] (byte) charsetFindOrAddGlyph::return#0 ← (byte) charsetFindOrAddGlyph::glyph_id#11 +Eliminating unused variable (byte) charsetFindOrAddGlyph::return#0 and assignment [159] (byte) charsetFindOrAddGlyph::return#0 ← (byte) charsetFindOrAddGlyph::glyph_id#11 Eliminating unused constant (const void*) memset::return#2 Eliminating unused constant (const byte) bob_charset_next_id#27 Eliminating unused constant (const byte*) progress_cursor#27 @@ -3442,34 +3225,35 @@ Eliminating unused constant (const byte) progress_idx#27 Successful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const byte**) renderBobCleanupNext#19 Successful SSA optimization PassNEliminateUnusedVars -Adding number conversion cast (unumber) NUM_BOBS-1+1 in if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(number) 1) goto main::@6 -Adding number conversion cast (unumber) 1 in if((byte) main::i#1!=(unumber)(const byte) NUM_BOBS-(byte) 1+(number) 1) goto main::@6 +Adding number conversion cast (unumber) 5 in if((byte) main::row#1!=(number) 5) goto main::@7 +Adding number conversion cast (unumber) 5 in if((byte) main::col#1!=(number) 5) goto main::@6 Adding number conversion cast (unumber) $20 in if((byte) renderBobInit::y#1!=(number) $20) goto renderBobInit::@1 Adding number conversion cast (unumber) NUM_BOBS-1+1 in if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(number) 1) goto renderBobInit::@3 Adding number conversion cast (unumber) 1 in if((byte) renderBobInit::i#1!=(unumber)(const byte) NUM_BOBS-(byte) 1+(number) 1) goto renderBobInit::@3 Adding number conversion cast (unumber) NUM_BOBS-1+1 in if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(number) 1) goto renderBobCleanup::@1 Adding number conversion cast (unumber) 1 in if((byte) renderBobCleanup::i#1!=(unumber)(const byte) NUM_BOBS-(byte) 1+(number) 1) goto renderBobCleanup::@1 Successful SSA optimization PassNAddNumberTypeConversions -Simplifying constant integer cast (const byte) NUM_BOBS-(byte) 1+(unumber)(number) 1 -Simplifying constant integer cast 1 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 Simplifying constant integer cast $20 Simplifying constant integer cast (const byte) NUM_BOBS-(byte) 1+(unumber)(number) 1 Simplifying constant integer cast 1 Simplifying constant integer cast (const byte) NUM_BOBS-(byte) 1+(unumber)(number) 1 Simplifying constant integer cast 1 Successful SSA optimization PassNCastSimplification -Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 5 +Finalized unsigned number type (byte) 5 Finalized unsigned number type (byte) $20 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Constant right-side identified [0] (byte*) memset::end#0 ← (const byte*) memset::$2 + (const word) memset::num#0 -Constant right-side identified [82] (byte~) main::vicSelectGfxBank1_toDd001_$1 ← > (const word) main::vicSelectGfxBank1_toDd001_$0 -Constant right-side identified [86] (word~) main::toD0181_$1 ← (const word) main::toD0181_$0 & (word) $3fff -Constant right-side identified [89] (byte~) main::toD0181_$5 ← > (const word) main::toD0181_$4 -Constant right-side identified [134] (byte~) main::vicSelectGfxBank2_toDd001_$1 ← > (const word) main::vicSelectGfxBank2_toDd001_$0 -Constant right-side identified [138] (word~) main::toD0182_$1 ← (const word) main::toD0182_$0 & (word) $3fff -Constant right-side identified [141] (byte~) main::toD0182_$5 ← > (const word) main::toD0182_$4 +Constant right-side identified [49] (byte~) main::vicSelectGfxBank1_toDd001_$1 ← > (const word) main::vicSelectGfxBank1_toDd001_$0 +Constant right-side identified [53] (word~) main::toD0181_$1 ← (const word) main::toD0181_$0 & (word) $3fff +Constant right-side identified [56] (byte~) main::toD0181_$5 ← > (const word) main::toD0181_$4 +Constant right-side identified [94] (byte~) main::vicSelectGfxBank2_toDd001_$1 ← > (const word) main::vicSelectGfxBank2_toDd001_$0 +Constant right-side identified [98] (word~) main::toD0182_$1 ← (const word) main::toD0182_$0 & (word) $3fff +Constant right-side identified [101] (byte~) main::toD0182_$5 ← > (const word) main::toD0182_$4 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) memset::end#0 = memset::$2+memset::num#0 Constant (const byte) main::vicSelectGfxBank1_toDd001_$1 = >main::vicSelectGfxBank1_toDd001_$0 @@ -3479,12 +3263,12 @@ Constant (const byte) main::vicSelectGfxBank2_toDd001_$1 = >main::vicSelectGfxBa Constant (const word) main::toD0182_$1 = main::toD0182_$0&$3fff Constant (const byte) main::toD0182_$5 = >main::toD0182_$4 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [81] (byte~) main::vicSelectGfxBank1_toDd001_$2 ← (const byte) main::vicSelectGfxBank1_toDd001_$1 / (byte) $40 -Constant right-side identified [84] (word~) main::toD0181_$2 ← (const word) main::toD0181_$1 * (byte) 4 -Constant right-side identified [86] (byte~) main::toD0181_$6 ← (const byte) main::toD0181_$5 / (byte) 4 -Constant right-side identified [129] (byte~) main::vicSelectGfxBank2_toDd001_$2 ← (const byte) main::vicSelectGfxBank2_toDd001_$1 / (byte) $40 -Constant right-side identified [132] (word~) main::toD0182_$2 ← (const word) main::toD0182_$1 * (byte) 4 -Constant right-side identified [134] (byte~) main::toD0182_$6 ← (const byte) main::toD0182_$5 / (byte) 4 +Constant right-side identified [48] (byte~) main::vicSelectGfxBank1_toDd001_$2 ← (const byte) main::vicSelectGfxBank1_toDd001_$1 / (byte) $40 +Constant right-side identified [51] (word~) main::toD0181_$2 ← (const word) main::toD0181_$1 * (byte) 4 +Constant right-side identified [53] (byte~) main::toD0181_$6 ← (const byte) main::toD0181_$5 / (byte) 4 +Constant right-side identified [89] (byte~) main::vicSelectGfxBank2_toDd001_$2 ← (const byte) main::vicSelectGfxBank2_toDd001_$1 / (byte) $40 +Constant right-side identified [92] (word~) main::toD0182_$2 ← (const word) main::toD0182_$1 * (byte) 4 +Constant right-side identified [94] (byte~) main::toD0182_$6 ← (const byte) main::toD0182_$5 / (byte) 4 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::vicSelectGfxBank1_toDd001_$2 = main::vicSelectGfxBank1_toDd001_$1/$40 Constant (const word) main::toD0181_$2 = main::toD0181_$1*4 @@ -3496,8 +3280,8 @@ Successful SSA optimization Pass2ConstantIdentification Simplifying constant evaluating to zero (const byte) main::vicSelectGfxBank1_toDd001_$1/(byte) $40 in Simplifying constant evaluating to zero (const byte) main::vicSelectGfxBank2_toDd001_$1/(byte) $40 in Successful SSA optimization PassNSimplifyConstantZero -Simplifying expression containing zero 3 in [82] (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte) 3 ^ (const byte) main::vicSelectGfxBank1_toDd001_$2 -Simplifying expression containing zero 3 in [130] (byte) main::vicSelectGfxBank2_toDd001_return#0 ← (byte) 3 ^ (const byte) main::vicSelectGfxBank2_toDd001_$2 +Simplifying expression containing zero 3 in [49] (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte) 3 ^ (const byte) main::vicSelectGfxBank1_toDd001_$2 +Simplifying expression containing zero 3 in [90] (byte) main::vicSelectGfxBank2_toDd001_return#0 ← (byte) 3 ^ (const byte) main::vicSelectGfxBank2_toDd001_$2 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) main::vicSelectGfxBank1_toDd001_$1 Eliminating unused constant (const byte) main::vicSelectGfxBank2_toDd001_$1 @@ -3510,10 +3294,10 @@ Successful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const byte*) main::vicSelectGfxBank1_gfx#0 Eliminating unused constant (const byte*) main::vicSelectGfxBank2_gfx#0 Successful SSA optimization PassNEliminateUnusedVars -Constant right-side identified [83] (byte~) main::toD0181_$3 ← > (const word) main::toD0181_$2 -Constant right-side identified [84] (byte~) main::toD0181_$7 ← (const byte) main::toD0181_$6 & (byte) $f -Constant right-side identified [128] (byte~) main::toD0182_$3 ← > (const word) main::toD0182_$2 -Constant right-side identified [129] (byte~) main::toD0182_$7 ← (const byte) main::toD0182_$6 & (byte) $f +Constant right-side identified [50] (byte~) main::toD0181_$3 ← > (const word) main::toD0181_$2 +Constant right-side identified [51] (byte~) main::toD0181_$7 ← (const byte) main::toD0181_$6 & (byte) $f +Constant right-side identified [88] (byte~) main::toD0182_$3 ← > (const word) main::toD0182_$2 +Constant right-side identified [89] (byte~) main::toD0182_$7 ← (const byte) main::toD0182_$6 & (byte) $f Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3 Constant (const byte) main::toD0181_$3 = >main::toD0181_$2 @@ -3522,27 +3306,20 @@ Constant (const byte) main::vicSelectGfxBank2_toDd001_return#0 = 3 Constant (const byte) main::toD0182_$3 = >main::toD0182_$2 Constant (const byte) main::toD0182_$7 = main::toD0182_$6&$f Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [82] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3 | (const byte) main::toD0181_$7 -Constant right-side identified [124] (byte) main::toD0182_return#0 ← (const byte) main::toD0182_$3 | (const byte) main::toD0182_$7 +Constant right-side identified [49] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3 | (const byte) main::toD0181_$7 +Constant right-side identified [84] (byte) main::toD0182_return#0 ← (const byte) main::toD0182_$3 | (const byte) main::toD0182_$7 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::toD0181_return#0 = main::toD0181_$3|main::toD0181_$7 Constant (const byte) main::toD0182_return#0 = main::toD0182_$3|main::toD0182_$7 Successful SSA optimization Pass2ConstantIdentification -Inlining Noop Cast [59] (byte~) mulf8s_prepared::$9 ← (byte)(signed byte) mulf8s_prepared::b#0 keeping mulf8s_prepared::b#0 -Inlining Noop Cast [63] (signed word) mulf8s_prepared::return#0 ← (signed word)(word) mulf8s_prepared::m#4 keeping mulf8s_prepared::m#4 -Inlining Noop Cast [65] (byte~) mulf8s_prepared::$13 ← (byte)*((const signed byte*) mulf8s_prepared::memA) keeping *(mulf8s_prepared::memA) -Successful SSA optimization Pass2NopCastInlining -Inlining Noop Cast [74] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 keeping mulf8s_prepared::m#4 -Successful SSA optimization Pass2NopCastInlining -Rewriting multiplication to use shift [101] (signed word~) main::$13 ← (signed word~) main::$12 * (signed byte) 2 -Rewriting multiplication to use shift and addition[127] (word~) renderBobInit::$1 ← (word~) renderBobInit::$0 * (byte) $28 -Rewriting multiplication to use shift [128] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 * (const byte) SIZEOF_WORD -Rewriting multiplication to use shift [133] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 * (const byte) SIZEOF_POINTER -Rewriting division to use shift [138] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 / (const byte) BOB_SHIFTS_X -Rewriting division to use shift [139] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 / (const byte) BOB_SHIFTS_Y -Rewriting multiplication to use shift [140] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 * (const byte) SIZEOF_WORD -Rewriting multiplication to use shift [145] (byte~) renderBob::$5 ← (byte~) renderBob::$4 * (const byte) BOB_SHIFTS_X -Rewriting multiplication to use shift [161] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 * (const byte) SIZEOF_POINTER +Rewriting multiplication to use shift and addition[87] (word~) renderBobInit::$1 ← (word~) renderBobInit::$0 * (byte) $28 +Rewriting multiplication to use shift [88] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [93] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 * (const byte) SIZEOF_POINTER +Rewriting division to use shift [98] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 / (const byte) BOB_SHIFTS_X +Rewriting division to use shift [99] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 / (const byte) BOB_SHIFTS_Y +Rewriting multiplication to use shift [100] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [105] (byte~) renderBob::$5 ← (byte~) renderBob::$4 * (const byte) BOB_SHIFTS_X +Rewriting multiplication to use shift [121] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 * (const byte) SIZEOF_POINTER Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const byte*) memset::dst#0 Inlining constant with var siblings (const byte) keyboard_key_pressed::key#0 @@ -3557,9 +3334,11 @@ Inlining constant with var siblings (const byte) mulf_init::dir#0 Inlining constant with var siblings (const byte*) mulf_init::sqr2_hi#0 Inlining constant with var siblings (const byte*) mulf_init::sqr2_lo#0 Inlining constant with var siblings (const byte) mulf_init::dir#1 -Inlining constant with var siblings (const byte) main::angle#0 -Inlining constant with var siblings (const signed byte) main::r#0 -Inlining constant with var siblings (const byte) main::i#0 +Inlining constant with var siblings (const signed word) main::origX#0 +Inlining constant with var siblings (const signed word) main::rowOffsetY#0 +Inlining constant with var siblings (const signed word) main::rowY#0 +Inlining constant with var siblings (const byte) main::col#0 +Inlining constant with var siblings (const byte) main::row#0 Inlining constant with var siblings (const byte) renderBobInit::y#0 Inlining constant with var siblings (const byte) renderBobInit::i#0 Inlining constant with var siblings (const byte) renderBobCleanup::i#0 @@ -3585,18 +3364,21 @@ Inlining constant with var siblings (const byte) progress_idx#9 Inlining constant with var siblings (const byte*) progress_cursor#16 Constant inlined mulf_init::sqr2_lo#0 = (const byte*) mulf_sqr2_lo Constant inlined charsetFindOrAddGlyph::i#0 = (byte) 0 +Constant inlined main::col#0 = (byte) 0 Constant inlined prepareBobs::bob_table_idx#0 = (byte) 0 Constant inlined charsetFindOrAddGlyph::i1#0 = (byte) 0 Constant inlined mulf_init::sqr2_hi#0 = (const byte*) mulf_sqr2_hi -Constant inlined main::toD0182_$4 = (word)(const byte*) CHARSET_BASIC -Constant inlined main::toD0182_$5 = >(word)(const byte*) CHARSET_BASIC -Constant inlined main::toD0182_$6 = >(word)(const byte*) CHARSET_BASIC/(byte) 4 -Constant inlined main::toD0182_$7 = >(word)(const byte*) CHARSET_BASIC/(byte) 4&(byte) $f -Constant inlined main::toD0182_$0 = (word)(const byte*) SCREEN_BASIC -Constant inlined main::toD0182_$1 = (word)(const byte*) SCREEN_BASIC&(word) $3fff -Constant inlined main::toD0182_$2 = (word)(const byte*) SCREEN_BASIC&(word) $3fff*(byte) 4 +Constant inlined main::toD0182_$4 = (word)(const byte*) BASIC_CHARSET +Constant inlined main::toD0182_$5 = >(word)(const byte*) BASIC_CHARSET +Constant inlined main::toD0182_$6 = >(word)(const byte*) BASIC_CHARSET/(byte) 4 +Constant inlined main::toD0182_$7 = >(word)(const byte*) BASIC_CHARSET/(byte) 4&(byte) $f +Constant inlined main::toD0182_$0 = (word)(const byte*) BASIC_SCREEN +Constant inlined main::toD0182_$1 = (word)(const byte*) BASIC_SCREEN&(word) $3fff +Constant inlined main::row#0 = (byte) 0 +Constant inlined main::toD0182_$2 = (word)(const byte*) BASIC_SCREEN&(word) $3fff*(byte) 4 Constant inlined protoBobShiftRight::j#0 = (byte) 0 -Constant inlined main::toD0182_$3 = >(word)(const byte*) SCREEN_BASIC&(word) $3fff*(byte) 4 +Constant inlined main::toD0182_$3 = >(word)(const byte*) BASIC_SCREEN&(word) $3fff*(byte) 4 +Constant inlined main::rowOffsetY#0 = (signed word) $100 Constant inlined mulf_init::dir#1 = (byte) 1 Constant inlined mulf_init::dir#0 = (byte) $ff Constant inlined bob_charset_next_id#2 = (byte) 0 @@ -3608,7 +3390,7 @@ Constant inlined mulf_init::x_2#0 = (byte) 0 Constant inlined keyboard_key_pressed::key#0 = (const byte) KEY_SPACE Constant inlined keyboard_key_pressed::key#1 = (const byte) KEY_SPACE Constant inlined main::toD0181_$7 = >(word)(const byte*) BOB_CHARSET/(byte) 4&(byte) $f -Constant inlined main::toD0182_gfx#0 = (const byte*) CHARSET_BASIC +Constant inlined main::toD0182_gfx#0 = (const byte*) BASIC_CHARSET Constant inlined prepareBobs::shift_x#0 = (byte) 0 Constant inlined progress_idx#9 = (byte) 0 Constant inlined main::toD0181_$2 = (word)(const byte*) BOB_SCREEN&(word) $3fff*(byte) 4 @@ -3623,19 +3405,19 @@ Constant inlined prepareBobs::cell#0 = (byte) 0 Constant inlined renderBobCleanupNext#14 = (const byte**) RENDERBOB_CLEANUP Constant inlined mulf_init::sqr1_lo#0 = (const byte*) mulf_sqr1_lo+(byte) 1 Constant inlined memset::dst#0 = (byte*)(const void*) memset::str#0 +Constant inlined main::rowY#0 = (const signed word) main::origY Constant inlined charsetFindOrAddGlyph::glyph#0 = (const byte*) PROTO_BOB+(byte) $30 Constant inlined mulf_init::c#0 = (byte) 0 Constant inlined main::toD0181_screen#0 = (const byte*) BOB_SCREEN Constant inlined main::toD0181_gfx#0 = (const byte*) BOB_CHARSET Constant inlined protoBobShiftRight::carry#0 = (byte) 0 -Constant inlined progress_init::line#0 = (const byte*) SCREEN_BASIC +Constant inlined main::origX#0 = (signed word) $a00 +Constant inlined progress_init::line#0 = (const byte*) BASIC_SCREEN Constant inlined protoBobShiftRight::i#0 = (byte) 0 Constant inlined memset::$2 = (byte*)(const void*) memset::str#0 -Constant inlined progress_cursor#16 = (const byte*) SCREEN_BASIC +Constant inlined progress_cursor#16 = (const byte*) BASIC_SCREEN Constant inlined prepareBobs::bob_glyph#0 = (const byte*) PROTO_BOB -Constant inlined main::i#0 = (byte) 0 Constant inlined renderBobCleanup::i#0 = (byte) 0 -Constant inlined main::r#0 = (signed byte) $1e Constant inlined prepareBobs::shift_y#0 = (byte) 0 Constant inlined mulf_init::sqr#0 = (byte) 0 Constant inlined charsetFindOrAddGlyph::charset#0 = (const byte*) BOB_CHARSET @@ -3645,8 +3427,7 @@ Constant inlined progress_idx#17 = (byte) 0 Constant inlined renderBobInit::y#0 = (byte) 0 Constant inlined charsetFindOrAddGlyph::found#1 = (byte) 0 Constant inlined charsetFindOrAddGlyph::found#0 = (byte) 1 -Constant inlined main::angle#0 = (byte) 0 -Constant inlined main::toD0182_screen#0 = (const byte*) SCREEN_BASIC +Constant inlined main::toD0182_screen#0 = (const byte*) BASIC_SCREEN Constant inlined renderBobInit::i#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in *(PROTO_BOB+$18) @@ -3675,10 +3456,9 @@ Consolidated array index constant in *(keyboard_matrix_col_bitmask+keyboard_key_ Successful SSA optimization Pass2ConstantAdditionElimination Added new block during phi lifting mulf_init::@17(between mulf_init::@2 and mulf_init::@4) Added new block during phi lifting mulf_init::@18(between mulf_init::@10 and mulf_init::@12) -Added new block during phi lifting mulf8s_prepared::@7(between mulf8s_prepared::@6 and mulf8s_prepared::@1) -Added new block during phi lifting mulf8s_prepared::@8(between mulf8s_prepared::@1 and mulf8s_prepared::@2) Added new block during phi lifting main::@35(between main::@33 and main::@1) -Added new block during phi lifting main::@36(between main::@32 and main::@6) +Added new block during phi lifting main::@36(between main::@8 and main::@6) +Added new block during phi lifting main::@37(between main::@32 and main::@7) Added new block during phi lifting renderBobInit::@5(between renderBobInit::@1 and renderBobInit::@1) Added new block during phi lifting renderBobInit::@6(between renderBobInit::@3 and renderBobInit::@3) Added new block during phi lifting renderBobCleanup::@3(between renderBobCleanup::@1 and renderBobCleanup::@1) @@ -3691,24 +3471,23 @@ Adding NOP phi() at start of @68 Adding NOP phi() at start of @69 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@25 -Adding NOP phi() at start of main::@26 Adding NOP phi() at start of main::@27 +Adding NOP phi() at start of main::@28 +Adding NOP phi() at start of main::@29 Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001_@return -Adding NOP phi() at start of main::@21 +Adding NOP phi() at start of main::@23 Adding NOP phi() at start of main::toD0181 Adding NOP phi() at start of main::toD0181_@return -Adding NOP phi() at start of main::@28 -Adding NOP phi() at start of main::@15 +Adding NOP phi() at start of main::@30 Adding NOP phi() at start of main::@17 +Adding NOP phi() at start of main::@19 Adding NOP phi() at start of main::vicSelectGfxBank2_toDd001 Adding NOP phi() at start of main::vicSelectGfxBank2_toDd001_@return -Adding NOP phi() at start of main::@23 +Adding NOP phi() at start of main::@25 Adding NOP phi() at start of main::toD0182 Adding NOP phi() at start of main::toD0182_@return Adding NOP phi() at start of keyboard_key_pressed -Adding NOP phi() at start of mulf8s::@3 Adding NOP phi() at start of renderBobCleanup Adding NOP phi() at start of renderBobCleanup::@2 Adding NOP phi() at start of memset @@ -3733,106 +3512,102 @@ Adding NOP phi() at start of mulf_init::@3 Adding NOP phi() at start of mulf_init::@15 CALL GRAPH Calls in [] to main:5 -Calls in [main] to mulf_init:9 prepareBobs:11 renderBobInit:13 memset:23 renderBobCleanup:28 mulf8s:36 mulf8s:44 renderBob:54 keyboard_key_pressed:59 keyboard_key_pressed:65 -Calls in [keyboard_key_pressed] to keyboard_matrix_read:84 -Calls in [mulf8s] to mulf8u_prepare:116 mulf8s_prepared:119 -Calls in [mulf8s_prepared] to mulf8u_prepared:123 -Calls in [prepareBobs] to progress_init:195 charsetFindOrAddGlyph:197 protoBobShiftDown:209 protoBobShiftRight:224 protoBobShiftRight:226 charsetFindOrAddGlyph:236 progress_inc:242 +Calls in [main] to mulf_init:9 prepareBobs:11 renderBobInit:13 memset:23 renderBobCleanup:28 renderBob:38 keyboard_key_pressed:51 keyboard_key_pressed:58 +Calls in [keyboard_key_pressed] to keyboard_matrix_read:81 +Calls in [prepareBobs] to progress_init:158 charsetFindOrAddGlyph:160 protoBobShiftDown:172 protoBobShiftRight:187 protoBobShiftRight:189 charsetFindOrAddGlyph:199 progress_inc:205 -Created 57 initial phi equivalence classes -Not coalescing [29] main::a#6 ← main::angle#8 -Coalesced [34] mulf8s::mulf8s_prepare1_a#3 ← mulf8s::a#0 -Coalesced [35] mulf8s::b#7 ← mulf8s::b#0 -Coalesced [42] mulf8s::mulf8s_prepare1_a#2 ← mulf8s::a#1 -Coalesced [43] mulf8s::b#6 ← mulf8s::b#1 -Coalesced [63] main::angle#12 ← main::angle#1 -Coalesced [79] main::r#6 ← main::r#1 -Coalesced [80] main::a#7 ← main::a#1 -Coalesced [81] renderBobCleanupNext#51 ← renderBobCleanupNext#13 -Coalesced [82] main::i#6 ← main::i#1 -Coalesced [130] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1 -Coalesced [136] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2 -Coalesced [139] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5 -Coalesced [140] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0 -Coalesced [165] renderBobCleanup::i#3 ← renderBobCleanup::i#1 -Coalesced [174] memset::dst#4 ← memset::dst#1 -Coalesced [192] renderBobInit::i#3 ← renderBobInit::i#1 -Coalesced [193] renderBobInit::y#3 ← renderBobInit::y#1 -Coalesced [198] bob_charset_next_id#78 ← bob_charset_next_id#16 -Coalesced [202] prepareBobs::bob_table_idx#16 ← prepareBobs::bob_table_idx#6 -Coalesced [203] bob_charset_next_id#80 ← bob_charset_next_id#14 -Coalesced [204] progress_cursor#71 ← progress_cursor#15 -Coalesced [205] progress_idx#71 ← progress_idx#16 -Coalesced [211] prepareBobs::shift_y#15 ← prepareBobs::shift_y#1 -Coalesced (already) [212] progress_cursor#70 ← progress_cursor#31 -Coalesced (already) [213] progress_idx#70 ← progress_idx#31 -Coalesced (already) [214] bob_charset_next_id#79 ← bob_charset_next_id#30 -Coalesced (already) [215] prepareBobs::bob_table_idx#15 ← prepareBobs::bob_table_idx#12 -Coalesced [217] bob_charset_next_id#83 ← bob_charset_next_id#30 -Coalesced [218] prepareBobs::bob_table#7 ← prepareBobs::bob_table#0 -Coalesced [219] progress_idx#74 ← progress_idx#31 -Coalesced [220] progress_cursor#74 ← progress_cursor#31 -Coalesced [228] prepareBobs::shift_x#11 ← prepareBobs::shift_x#1 -Coalesced [229] prepareBobs::bob_table_idx#17 ← prepareBobs::bob_table_idx#1 -Coalesced (already) [230] bob_charset_next_id#81 ← bob_charset_next_id#21 -Coalesced (already) [231] progress_cursor#72 ← progress_cursor#24 -Coalesced (already) [232] progress_idx#72 ← progress_idx#25 -Coalesced [234] bob_charset_next_id#84 ← bob_charset_next_id#21 -Coalesced [235] charsetFindOrAddGlyph::glyph#14 ← charsetFindOrAddGlyph::glyph#1 -Coalesced [244] prepareBobs::cell#6 ← prepareBobs::cell#1 -Coalesced [245] prepareBobs::bob_glyph#6 ← prepareBobs::bob_glyph#1 -Coalesced (already) [246] bob_charset_next_id#82 ← bob_charset_next_id#16 -Coalesced [247] prepareBobs::bob_table#6 ← prepareBobs::bob_table#1 -Coalesced [248] progress_idx#73 ← progress_idx#10 -Coalesced [249] progress_cursor#73 ← progress_cursor#17 -Coalesced [254] progress_cursor#76 ← progress_cursor#8 -Coalesced [258] progress_idx#75 ← progress_idx#8 -Coalesced (already) [259] progress_cursor#75 ← progress_cursor#24 -Coalesced [267] bob_charset_next_id#86 ← bob_charset_next_id#8 -Coalesced [272] charsetFindOrAddGlyph::i1#4 ← charsetFindOrAddGlyph::i1#1 -Coalesced (already) [278] bob_charset_next_id#85 ← bob_charset_next_id#23 -Coalesced [281] charsetFindOrAddGlyph::glyph_id#15 ← charsetFindOrAddGlyph::glyph_id#1 -Coalesced [282] charsetFindOrAddGlyph::glyph_cursor#13 ← charsetFindOrAddGlyph::glyph_cursor#1 -Coalesced [286] charsetFindOrAddGlyph::i#5 ← charsetFindOrAddGlyph::i#1 -Coalesced [300] protoBobShiftRight::j#12 ← protoBobShiftRight::j#2 -Coalesced [303] protoBobShiftRight::i#10 ← protoBobShiftRight::i#1 -Coalesced [304] protoBobShiftRight::j#11 ← protoBobShiftRight::j#10 -Not coalescing [305] protoBobShiftRight::carry#10 ← protoBobShiftRight::carry#1 -Coalesced [307] protoBobShiftRight::j#13 ← protoBobShiftRight::j#1 -Coalesced [320] protoBobShiftDown::i#4 ← protoBobShiftDown::i#1 -Coalesced [340] mulf_init::sqr2_lo#6 ← mulf_init::sqr2_lo#1 -Coalesced [341] mulf_init::x_255#6 ← mulf_init::x_255#1 -Coalesced [342] mulf_init::sqr2_hi#6 ← mulf_init::sqr2_hi#1 -Coalesced [343] mulf_init::dir#5 ← mulf_init::dir#4 -Coalesced (already) [344] mulf_init::dir#6 ← mulf_init::dir#2 -Coalesced [350] mulf_init::sqr#9 ← mulf_init::sqr#2 -Coalesced [351] mulf_init::x_2#8 ← mulf_init::x_2#1 -Coalesced [360] mulf_init::sqr1_lo#6 ← mulf_init::sqr1_lo#1 -Coalesced [361] mulf_init::c#6 ← mulf_init::c#1 -Coalesced [362] mulf_init::sqr#7 ← mulf_init::sqr#1 -Coalesced [363] mulf_init::sqr1_hi#6 ← mulf_init::sqr1_hi#1 -Coalesced [364] mulf_init::x_2#6 ← mulf_init::x_2#2 -Coalesced [365] mulf_init::sqr#8 ← mulf_init::sqr#4 -Coalesced (already) [366] mulf_init::x_2#7 ← mulf_init::x_2#3 -Coalesced down to 41 phi equivalence classes +Created 58 initial phi equivalence classes +Not coalescing [29] main::x#4 ← main::origX#8 +Not coalescing [31] main::x#7 ← main::x#0 +Not coalescing [32] main::y#6 ← main::y#0 +Coalesced [33] renderBobCleanupNext#53 ← renderBobCleanupNext#21 +Coalesced [55] main::origX#12 ← main::origX#1 +Coalesced [56] main::rowOffsetY#12 ← main::rowOffsetY#1 +Coalesced [72] main::x#5 ← main::rowX#1 +Coalesced [73] main::y#4 ← main::rowY#1 +Coalesced [74] renderBobCleanupNext#51 ← renderBobCleanupNext#13 +Coalesced [75] main::col#6 ← main::col#1 +Coalesced [76] main::x#6 ← main::x#1 +Coalesced [77] main::y#5 ← main::y#1 +Coalesced (already) [78] renderBobCleanupNext#52 ← renderBobCleanupNext#13 +Coalesced [79] main::row#4 ← main::row#1 +Coalesced [128] renderBobCleanup::i#3 ← renderBobCleanup::i#1 +Coalesced [137] memset::dst#4 ← memset::dst#1 +Coalesced [155] renderBobInit::i#3 ← renderBobInit::i#1 +Coalesced [156] renderBobInit::y#3 ← renderBobInit::y#1 +Coalesced [161] bob_charset_next_id#78 ← bob_charset_next_id#16 +Coalesced [165] prepareBobs::bob_table_idx#16 ← prepareBobs::bob_table_idx#6 +Coalesced [166] bob_charset_next_id#80 ← bob_charset_next_id#14 +Coalesced [167] progress_cursor#71 ← progress_cursor#15 +Coalesced [168] progress_idx#71 ← progress_idx#16 +Coalesced [174] prepareBobs::shift_y#15 ← prepareBobs::shift_y#1 +Coalesced (already) [175] progress_cursor#70 ← progress_cursor#31 +Coalesced (already) [176] progress_idx#70 ← progress_idx#31 +Coalesced (already) [177] bob_charset_next_id#79 ← bob_charset_next_id#30 +Coalesced (already) [178] prepareBobs::bob_table_idx#15 ← prepareBobs::bob_table_idx#12 +Coalesced [180] bob_charset_next_id#83 ← bob_charset_next_id#30 +Coalesced [181] prepareBobs::bob_table#7 ← prepareBobs::bob_table#0 +Coalesced [182] progress_idx#74 ← progress_idx#31 +Coalesced [183] progress_cursor#74 ← progress_cursor#31 +Coalesced [191] prepareBobs::shift_x#11 ← prepareBobs::shift_x#1 +Coalesced [192] prepareBobs::bob_table_idx#17 ← prepareBobs::bob_table_idx#1 +Coalesced (already) [193] bob_charset_next_id#81 ← bob_charset_next_id#21 +Coalesced (already) [194] progress_cursor#72 ← progress_cursor#24 +Coalesced (already) [195] progress_idx#72 ← progress_idx#25 +Coalesced [197] bob_charset_next_id#84 ← bob_charset_next_id#21 +Coalesced [198] charsetFindOrAddGlyph::glyph#14 ← charsetFindOrAddGlyph::glyph#1 +Coalesced [207] prepareBobs::cell#6 ← prepareBobs::cell#1 +Coalesced [208] prepareBobs::bob_glyph#6 ← prepareBobs::bob_glyph#1 +Coalesced (already) [209] bob_charset_next_id#82 ← bob_charset_next_id#16 +Coalesced [210] prepareBobs::bob_table#6 ← prepareBobs::bob_table#1 +Coalesced [211] progress_idx#73 ← progress_idx#10 +Coalesced [212] progress_cursor#73 ← progress_cursor#17 +Coalesced [217] progress_cursor#76 ← progress_cursor#8 +Coalesced [221] progress_idx#75 ← progress_idx#8 +Coalesced (already) [222] progress_cursor#75 ← progress_cursor#24 +Coalesced [230] bob_charset_next_id#86 ← bob_charset_next_id#8 +Coalesced [235] charsetFindOrAddGlyph::i1#4 ← charsetFindOrAddGlyph::i1#1 +Coalesced (already) [241] bob_charset_next_id#85 ← bob_charset_next_id#23 +Coalesced [244] charsetFindOrAddGlyph::glyph_id#15 ← charsetFindOrAddGlyph::glyph_id#1 +Coalesced [245] charsetFindOrAddGlyph::glyph_cursor#13 ← charsetFindOrAddGlyph::glyph_cursor#1 +Coalesced [249] charsetFindOrAddGlyph::i#5 ← charsetFindOrAddGlyph::i#1 +Coalesced [263] protoBobShiftRight::j#12 ← protoBobShiftRight::j#2 +Coalesced [266] protoBobShiftRight::i#10 ← protoBobShiftRight::i#1 +Coalesced [267] protoBobShiftRight::j#11 ← protoBobShiftRight::j#10 +Not coalescing [268] protoBobShiftRight::carry#10 ← protoBobShiftRight::carry#1 +Coalesced [270] protoBobShiftRight::j#13 ← protoBobShiftRight::j#1 +Coalesced [283] protoBobShiftDown::i#4 ← protoBobShiftDown::i#1 +Coalesced [303] mulf_init::sqr2_lo#6 ← mulf_init::sqr2_lo#1 +Coalesced [304] mulf_init::x_255#6 ← mulf_init::x_255#1 +Coalesced [305] mulf_init::sqr2_hi#6 ← mulf_init::sqr2_hi#1 +Coalesced [306] mulf_init::dir#5 ← mulf_init::dir#4 +Coalesced (already) [307] mulf_init::dir#6 ← mulf_init::dir#2 +Coalesced [313] mulf_init::sqr#9 ← mulf_init::sqr#2 +Coalesced [314] mulf_init::x_2#8 ← mulf_init::x_2#1 +Coalesced [323] mulf_init::sqr1_lo#6 ← mulf_init::sqr1_lo#1 +Coalesced [324] mulf_init::c#6 ← mulf_init::c#1 +Coalesced [325] mulf_init::sqr#7 ← mulf_init::sqr#1 +Coalesced [326] mulf_init::sqr1_hi#6 ← mulf_init::sqr1_hi#1 +Coalesced [327] mulf_init::x_2#6 ← mulf_init::x_2#2 +Coalesced [328] mulf_init::sqr#8 ← mulf_init::sqr#4 +Coalesced (already) [329] mulf_init::x_2#7 ← mulf_init::x_2#3 +Coalesced down to 42 phi equivalence classes Culled Empty Block (label) @59 Culled Empty Block (label) @65 Culled Empty Block (label) @66 Culled Empty Block (label) @69 -Culled Empty Block (label) main::@27 +Culled Empty Block (label) main::@29 Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return -Culled Empty Block (label) main::@21 -Culled Empty Block (label) main::toD0181_@return -Culled Empty Block (label) main::@28 -Culled Empty Block (label) main::@35 -Culled Empty Block (label) main::@17 -Culled Empty Block (label) main::vicSelectGfxBank2_toDd001_@return Culled Empty Block (label) main::@23 +Culled Empty Block (label) main::toD0181_@return +Culled Empty Block (label) main::@30 +Culled Empty Block (label) main::@35 +Culled Empty Block (label) main::@19 +Culled Empty Block (label) main::vicSelectGfxBank2_toDd001_@return +Culled Empty Block (label) main::@25 Culled Empty Block (label) main::toD0182_@return Culled Empty Block (label) main::@36 -Culled Empty Block (label) mulf8s::@3 -Culled Empty Block (label) mulf8s_prepared::@8 -Culled Empty Block (label) mulf8s_prepared::@7 +Culled Empty Block (label) main::@37 Culled Empty Block (label) renderBobCleanup::@2 Culled Empty Block (label) renderBobCleanup::@3 Culled Empty Block (label) memset::@2 @@ -3862,20 +3637,17 @@ Renumbering block mulf_init::@10 to mulf_init::@6 Renumbering block mulf_init::@11 to mulf_init::@7 Renumbering block mulf_init::@12 to mulf_init::@8 Renumbering block mulf_init::@18 to mulf_init::@9 -Renumbering block mulf8s_prepared::@6 to mulf8s_prepared::@5 -Renumbering block mulf8s::@2 to mulf8s::@1 -Renumbering block mulf8s::@4 to mulf8s::@2 Renumbering block main::@4 to main::@2 Renumbering block main::@5 to main::@3 Renumbering block main::@6 to main::@4 Renumbering block main::@7 to main::@5 -Renumbering block main::@15 to main::@6 -Renumbering block main::@22 to main::@7 -Renumbering block main::@24 to main::@8 -Renumbering block main::@25 to main::@9 +Renumbering block main::@8 to main::@6 +Renumbering block main::@9 to main::@7 +Renumbering block main::@17 to main::@8 +Renumbering block main::@24 to main::@9 Renumbering block main::@26 to main::@10 -Renumbering block main::@29 to main::@11 -Renumbering block main::@30 to main::@12 +Renumbering block main::@27 to main::@11 +Renumbering block main::@28 to main::@12 Renumbering block main::@31 to main::@13 Renumbering block main::@32 to main::@14 Renumbering block main::@33 to main::@15 @@ -3910,11 +3682,11 @@ Adding NOP phi() at start of @begin Adding NOP phi() at start of @1 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@9 -Adding NOP phi() at start of main::@10 +Adding NOP phi() at start of main::@11 +Adding NOP phi() at start of main::@12 Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 Adding NOP phi() at start of main::toD0181 -Adding NOP phi() at start of main::@6 +Adding NOP phi() at start of main::@8 Adding NOP phi() at start of main::vicSelectGfxBank2_toDd001 Adding NOP phi() at start of main::toD0182 Adding NOP phi() at start of keyboard_key_pressed @@ -3947,16 +3719,16 @@ FINAL CONTROL FLOW GRAPH main: scope:[main] from @1 [4] phi() [5] call mulf_init - to:main::@9 -main::@9: scope:[main] from main + to:main::@11 +main::@11: scope:[main] from main [6] phi() [7] call prepareBobs - to:main::@10 -main::@10: scope:[main] from main::@9 + to:main::@12 +main::@12: scope:[main] from main::@11 [8] phi() [9] call renderBobInit to:main::vicSelectGfxBank1 -main::vicSelectGfxBank1: scope:[main] from main::@10 +main::vicSelectGfxBank1: scope:[main] from main::@12 [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 to:main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 @@ -3967,13 +3739,14 @@ main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 to:main::toD0181 main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1 [13] phi() - to:main::@7 -main::@7: scope:[main] from main::toD0181 + to:main::@9 +main::@9: scope:[main] from main::toD0181 [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [15] call memset to:main::@1 -main::@1: scope:[main] from main::@15 main::@7 - [16] (byte) main::angle#8 ← phi( main::@7/(byte) 0 main::@15/(byte) main::angle#1 ) +main::@1: scope:[main] from main::@15 main::@9 + [16] (signed word) main::rowOffsetY#10 ← phi( main::@9/(signed word) $100 main::@15/(signed word) main::rowOffsetY#1 ) + [16] (signed word) main::origX#8 ← phi( main::@9/(signed word) $a00 main::@15/(signed word) main::origX#1 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 @@ -3981,534 +3754,462 @@ main::@2: scope:[main] from main::@1 main::@2 main::@3: scope:[main] from main::@2 [18] *((const byte*) BORDERCOL) ← (byte) $f [19] call renderBobCleanup - to:main::@11 -main::@11: scope:[main] from main::@3 - [20] (byte) main::a#6 ← (byte) main::angle#8 - to:main::@4 -main::@4: scope:[main] from main::@11 main::@14 - [21] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@14/(byte) main::i#1 ) - [21] (byte**) renderBobCleanupNext#17 ← phi( main::@11/(const byte**) RENDERBOB_CLEANUP main::@14/(byte**) renderBobCleanupNext#13 ) - [21] (byte) main::a#2 ← phi( main::@11/(byte) main::a#6 main::@14/(byte) main::a#1 ) - [21] (signed byte) main::r#2 ← phi( main::@11/(signed byte) $1e main::@14/(signed byte) main::r#1 ) - [22] *((const byte*) BORDERCOL) ← (byte) 1 - [23] (signed byte) mulf8s::a#0 ← (signed byte) main::r#2 - [24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2) - [25] call mulf8s - [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 - to:main::@12 -main::@12: scope:[main] from main::@4 - [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 - [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 - [29] (signed byte) mulf8s::a#1 ← (signed byte) main::r#2 - [30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2) - [31] call mulf8s - [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 to:main::@13 -main::@13: scope:[main] from main::@12 - [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 - [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 - [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 - [36] *((const byte*) BORDERCOL) ← (byte) 2 - [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 - [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 - [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 - [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 - [41] call renderBob - to:main::@14 -main::@14: scope:[main] from main::@13 - [42] (byte) main::i#1 ← ++ (byte) main::i#2 - [43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4 +main::@13: scope:[main] from main::@3 + [20] (signed word) main::x#4 ← (signed word) main::origX#8 + to:main::@4 +main::@4: scope:[main] from main::@13 main::@6 + [21] (byte) main::col#5 ← phi( main::@13/(byte) 0 main::@6/(byte) main::col#1 ) + [21] (byte**) renderBobCleanupNext#21 ← phi( main::@13/(const byte**) RENDERBOB_CLEANUP main::@6/(byte**) renderBobCleanupNext#13 ) + [21] (signed word) main::y#0 ← phi( main::@13/(const signed word) main::origY main::@6/(signed word) main::rowY#1 ) + [21] (signed word) main::x#0 ← phi( main::@13/(signed word) main::x#4 main::@6/(signed word) main::rowX#1 ) + [22] (signed word) main::x#7 ← (signed word) main::x#0 + [23] (signed word) main::y#6 ← (signed word) main::y#0 to:main::@5 -main::@5: scope:[main] from main::@14 - [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 - [45] *((const byte*) BORDERCOL) ← (byte) 0 - [46] call keyboard_key_pressed - [47] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 +main::@5: scope:[main] from main::@14 main::@4 + [24] (byte) main::row#2 ← phi( main::@14/(byte) main::row#1 main::@4/(byte) 0 ) + [24] (byte**) renderBobCleanupNext#17 ← phi( main::@14/(byte**) renderBobCleanupNext#13 main::@4/(byte**) renderBobCleanupNext#21 ) + [24] (signed word) main::y#2 ← phi( main::@14/(signed word) main::y#1 main::@4/(signed word) main::y#6 ) + [24] (signed word) main::x#2 ← phi( main::@14/(signed word) main::x#1 main::@4/(signed word) main::x#7 ) + [25] *((const byte*) BORDERCOL) ← (byte) 1 + [26] (byte) renderBob::xpos#0 ← > (signed word) main::x#2 + [27] (byte) renderBob::ypos#0 ← > (signed word) main::y#2 + [28] call renderBob + to:main::@14 +main::@14: scope:[main] from main::@5 + [29] (signed word) main::x#1 ← (signed word) main::x#2 + (const signed word) main::rowOffsetX + [30] (signed word) main::y#1 ← (signed word) main::y#2 + (signed word) main::rowOffsetY#10 + [31] *((const byte*) BORDERCOL) ← (byte) 2 + [32] (byte) main::row#1 ← ++ (byte) main::row#2 + [33] if((byte) main::row#1!=(byte) 5) goto main::@5 + to:main::@6 +main::@6: scope:[main] from main::@14 + [34] (signed word) main::rowX#1 ← (signed word) main::x#0 + (const signed word) main::colOffsetX + [35] (signed word) main::rowY#1 ← (signed word) main::y#0 + (const signed word) main::colOffsetY + [36] (byte) main::col#1 ← ++ (byte) main::col#5 + [37] if((byte) main::col#1!=(byte) 5) goto main::@4 + to:main::@7 +main::@7: scope:[main] from main::@6 + [38] (signed word) main::origX#1 ← (signed word) main::origX#8 + (signed word) $100 + [39] (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#10 + (signed word) $80 + [40] *((const byte*) BORDERCOL) ← (byte) 0 + [41] call keyboard_key_pressed + [42] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 to:main::@15 -main::@15: scope:[main] from main::@5 - [48] (byte~) main::$19 ← (byte) keyboard_key_pressed::return#2 - [49] if((byte) 0!=(byte~) main::$19) goto main::@6 +main::@15: scope:[main] from main::@7 + [43] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 + [44] if((byte) 0!=(byte~) main::$15) goto main::@8 to:main::@1 -main::@6: scope:[main] from main::@15 main::@16 - [50] phi() - [51] call keyboard_key_pressed - [52] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 +main::@8: scope:[main] from main::@15 main::@16 + [45] phi() + [46] call keyboard_key_pressed + [47] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 to:main::@16 -main::@16: scope:[main] from main::@6 - [53] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#3 - [54] if((byte) 0!=(byte~) main::$21) goto main::@6 +main::@16: scope:[main] from main::@8 + [48] (byte~) main::$17 ← (byte) keyboard_key_pressed::return#3 + [49] if((byte) 0!=(byte~) main::$17) goto main::@8 to:main::vicSelectGfxBank2 main::vicSelectGfxBank2: scope:[main] from main::@16 - [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 + [50] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 to:main::vicSelectGfxBank2_toDd001 main::vicSelectGfxBank2_toDd001: scope:[main] from main::vicSelectGfxBank2 - [56] phi() + [51] phi() to:main::vicSelectGfxBank2_@1 main::vicSelectGfxBank2_@1: scope:[main] from main::vicSelectGfxBank2_toDd001 - [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 + [52] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 to:main::toD0182 main::toD0182: scope:[main] from main::vicSelectGfxBank2_@1 - [58] phi() - to:main::@8 -main::@8: scope:[main] from main::toD0182 - [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 + [53] phi() + to:main::@10 +main::@10: scope:[main] from main::toD0182 + [54] *((const byte*) D018) ← (const byte) main::toD0182_return#0 to:main::@return -main::@return: scope:[main] from main::@8 - [60] return +main::@return: scope:[main] from main::@10 + [55] return to:@return (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@5 main::@6 - [61] phi() - [62] call keyboard_matrix_read - [63] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 +keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@7 main::@8 + [56] phi() + [57] call keyboard_matrix_read + [58] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_key_pressed::@1 keyboard_key_pressed::@1: scope:[keyboard_key_pressed] from keyboard_key_pressed - [64] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - [65] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0) + [59] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + [60] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0) to:keyboard_key_pressed::@return keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@1 - [66] return + [61] return to:@return (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed - [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) - [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) + [62] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) + [63] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) to:keyboard_matrix_read::@return keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read - [69] return + [64] return to:@return (void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos) -renderBob: scope:[renderBob] from main::@13 - [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 - [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 - [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 - [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) - [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 - [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 - [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 - [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 - [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 - [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 - [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 - [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER - [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) - [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) - [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) +renderBob: scope:[renderBob] from main::@5 + [65] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 + [66] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 + [67] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 + [68] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) + [69] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 + [70] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 + [71] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 + [72] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 + [73] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 + [74] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 + [75] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 + [76] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER + [77] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) + [78] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [79] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [80] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [81] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [82] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [83] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [84] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) + [85] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) to:renderBob::@return renderBob::@return: scope:[renderBob] from renderBob - [91] return - to:@return - -(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) -mulf8s: scope:[mulf8s] from main::@12 main::@4 - [92] (signed byte) mulf8s::b#2 ← phi( main::@12/(signed byte) mulf8s::b#1 main::@4/(signed byte) mulf8s::b#0 ) - [92] (signed byte) mulf8s::mulf8s_prepare1_a#0 ← phi( main::@12/(signed byte) mulf8s::a#1 main::@4/(signed byte) mulf8s::a#0 ) - to:mulf8s::mulf8s_prepare1 -mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s - [93] (byte) mulf8u_prepare::a#0 ← (byte)(signed byte) mulf8s::mulf8s_prepare1_a#0 - [94] call mulf8u_prepare - to:mulf8s::@1 -mulf8s::@1: scope:[mulf8s] from mulf8s::mulf8s_prepare1 - [95] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#2 - [96] call mulf8s_prepared - to:mulf8s::@2 -mulf8s::@2: scope:[mulf8s] from mulf8s::@1 - [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 - to:mulf8s::@return -mulf8s::@return: scope:[mulf8s] from mulf8s::@2 - [98] return - to:@return - -(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@1 - [99] (byte) mulf8u_prepared::b#0 ← (byte)(signed byte) mulf8s_prepared::b#0 - [100] call mulf8u_prepared - [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 - to:mulf8s_prepared::@5 -mulf8s_prepared::@5: scope:[mulf8s_prepared] from mulf8s_prepared - [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 - [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 - to:mulf8s_prepared::@3 -mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@5 - [104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 - [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 - [106] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 - to:mulf8s_prepared::@1 -mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@5 - [107] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@5/(word) mulf8s_prepared::m#0 ) - [108] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 - to:mulf8s_prepared::@4 -mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - [109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 - [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) - [111] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 - to:mulf8s_prepared::@2 -mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - [112] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) - to:mulf8s_prepared::@return -mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - [113] return - to:@return - -(word()) mulf8u_prepared((byte) mulf8u_prepared::b) -mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared - [114] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#0 - asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) - to:mulf8u_prepared::@return -mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - [117] return - to:@return - -(void()) mulf8u_prepare((byte) mulf8u_prepare::a) -mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1 - [118] *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#0 - asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } - to:mulf8u_prepare::@return -mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - [120] return + [86] return to:@return (void()) renderBobCleanup() renderBobCleanup: scope:[renderBobCleanup] from main::@3 - [121] phi() + [87] phi() to:renderBobCleanup::@1 renderBobCleanup::@1: scope:[renderBobCleanup] from renderBobCleanup renderBobCleanup::@1 - [122] (byte) renderBobCleanup::i#2 ← phi( renderBobCleanup/(byte) 0 renderBobCleanup::@1/(byte) renderBobCleanup::i#1 ) - [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 - [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) - [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 - [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 - [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 - [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 - [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 - [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 - [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 - [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 - [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 - [134] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2 - [135] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1 + [88] (byte) renderBobCleanup::i#2 ← phi( renderBobCleanup/(byte) 0 renderBobCleanup::@1/(byte) renderBobCleanup::i#1 ) + [89] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 + [90] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) + [91] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 + [92] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 + [93] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 + [94] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 + [95] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 + [96] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 + [97] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 + [98] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 + [99] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 + [100] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2 + [101] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1 to:renderBobCleanup::@return renderBobCleanup::@return: scope:[renderBobCleanup] from renderBobCleanup::@1 - [136] return + [102] return to:@return (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) -memset: scope:[memset] from main::@7 - [137] phi() +memset: scope:[memset] from main::@9 + [103] phi() to:memset::@1 memset::@1: scope:[memset] from memset memset::@2 - [138] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 ) - [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 + [104] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 ) + [105] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 to:memset::@return memset::@return: scope:[memset] from memset::@1 - [140] return + [106] return to:@return memset::@2: scope:[memset] from memset::@1 - [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 - [142] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [107] *((byte*) memset::dst#2) ← (const byte) memset::c#0 + [108] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 to:memset::@1 (void()) renderBobInit() -renderBobInit: scope:[renderBobInit] from main::@10 - [143] phi() +renderBobInit: scope:[renderBobInit] from main::@12 + [109] phi() to:renderBobInit::@1 renderBobInit::@1: scope:[renderBobInit] from renderBobInit renderBobInit::@1 - [144] (byte) renderBobInit::y#2 ← phi( renderBobInit/(byte) 0 renderBobInit::@1/(byte) renderBobInit::y#1 ) - [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 - [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 - [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 - [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 - [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 - [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 - [151] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2 - [152] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1 + [110] (byte) renderBobInit::y#2 ← phi( renderBobInit/(byte) 0 renderBobInit::@1/(byte) renderBobInit::y#1 ) + [111] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 + [112] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 + [113] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 + [114] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 + [115] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 + [116] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 + [117] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2 + [118] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1 to:renderBobInit::@2 renderBobInit::@2: scope:[renderBobInit] from renderBobInit::@1 renderBobInit::@2 - [153] (byte) renderBobInit::i#2 ← phi( renderBobInit::@1/(byte) 0 renderBobInit::@2/(byte) renderBobInit::i#1 ) - [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 - [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN - [156] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2 - [157] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2 + [119] (byte) renderBobInit::i#2 ← phi( renderBobInit::@1/(byte) 0 renderBobInit::@2/(byte) renderBobInit::i#1 ) + [120] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 + [121] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN + [122] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2 + [123] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2 to:renderBobInit::@return renderBobInit::@return: scope:[renderBobInit] from renderBobInit::@2 - [158] return + [124] return to:@return (void()) prepareBobs() -prepareBobs: scope:[prepareBobs] from main::@9 - [159] phi() - [160] call progress_init +prepareBobs: scope:[prepareBobs] from main::@11 + [125] phi() + [126] call progress_init to:prepareBobs::@8 prepareBobs::@8: scope:[prepareBobs] from prepareBobs - [161] phi() - [162] call charsetFindOrAddGlyph + [127] phi() + [128] call charsetFindOrAddGlyph to:prepareBobs::@1 prepareBobs::@1: scope:[prepareBobs] from prepareBobs::@8 prepareBobs::@9 - [163] (byte) prepareBobs::bob_table_idx#6 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::bob_table_idx#12 ) - [163] (byte) bob_charset_next_id#14 ← phi( prepareBobs::@8/(byte) bob_charset_next_id#16 prepareBobs::@9/(byte) bob_charset_next_id#30 ) - [163] (byte) progress_idx#16 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) progress_idx#31 ) - [163] (byte*) progress_cursor#15 ← phi( prepareBobs::@8/(const byte*) SCREEN_BASIC prepareBobs::@9/(byte*) progress_cursor#31 ) - [163] (byte) prepareBobs::shift_y#2 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::shift_y#1 ) - [164] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2 + [129] (byte) prepareBobs::bob_table_idx#6 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::bob_table_idx#12 ) + [129] (byte) bob_charset_next_id#14 ← phi( prepareBobs::@8/(byte) bob_charset_next_id#16 prepareBobs::@9/(byte) bob_charset_next_id#30 ) + [129] (byte) progress_idx#16 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) progress_idx#31 ) + [129] (byte*) progress_cursor#15 ← phi( prepareBobs::@8/(const byte*) BASIC_SCREEN prepareBobs::@9/(byte*) progress_cursor#31 ) + [129] (byte) prepareBobs::shift_y#2 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::shift_y#1 ) + [130] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2 to:prepareBobs::@return prepareBobs::@return: scope:[prepareBobs] from prepareBobs::@1 - [165] return + [131] return to:@return prepareBobs::@2: scope:[prepareBobs] from prepareBobs::@1 prepareBobs::@13 - [166] (byte) progress_idx#31 ← phi( prepareBobs::@1/(byte) progress_idx#16 prepareBobs::@13/(byte) progress_idx#25 ) - [166] (byte*) progress_cursor#31 ← phi( prepareBobs::@1/(byte*) progress_cursor#15 prepareBobs::@13/(byte*) progress_cursor#24 ) - [166] (byte) bob_charset_next_id#30 ← phi( prepareBobs::@1/(byte) bob_charset_next_id#14 prepareBobs::@13/(byte) bob_charset_next_id#21 ) - [166] (byte) prepareBobs::bob_table_idx#12 ← phi( prepareBobs::@1/(byte) prepareBobs::bob_table_idx#6 prepareBobs::@13/(byte) prepareBobs::bob_table_idx#1 ) - [166] (byte) prepareBobs::shift_x#2 ← phi( prepareBobs::@1/(byte) 0 prepareBobs::@13/(byte) prepareBobs::shift_x#1 ) - [167] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@3 + [132] (byte) progress_idx#31 ← phi( prepareBobs::@1/(byte) progress_idx#16 prepareBobs::@13/(byte) progress_idx#25 ) + [132] (byte*) progress_cursor#31 ← phi( prepareBobs::@1/(byte*) progress_cursor#15 prepareBobs::@13/(byte*) progress_cursor#24 ) + [132] (byte) bob_charset_next_id#30 ← phi( prepareBobs::@1/(byte) bob_charset_next_id#14 prepareBobs::@13/(byte) bob_charset_next_id#21 ) + [132] (byte) prepareBobs::bob_table_idx#12 ← phi( prepareBobs::@1/(byte) prepareBobs::bob_table_idx#6 prepareBobs::@13/(byte) prepareBobs::bob_table_idx#1 ) + [132] (byte) prepareBobs::shift_x#2 ← phi( prepareBobs::@1/(byte) 0 prepareBobs::@13/(byte) prepareBobs::shift_x#1 ) + [133] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@3 to:prepareBobs::@4 prepareBobs::@4: scope:[prepareBobs] from prepareBobs::@2 - [168] phi() - [169] call protoBobShiftDown + [134] phi() + [135] call protoBobShiftDown to:prepareBobs::@9 prepareBobs::@9: scope:[prepareBobs] from prepareBobs::@4 - [170] (byte) prepareBobs::shift_y#1 ← ++ (byte) prepareBobs::shift_y#2 + [136] (byte) prepareBobs::shift_y#1 ← ++ (byte) prepareBobs::shift_y#2 to:prepareBobs::@1 prepareBobs::@3: scope:[prepareBobs] from prepareBobs::@2 - [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 + [137] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 to:prepareBobs::@5 prepareBobs::@5: scope:[prepareBobs] from prepareBobs::@11 prepareBobs::@3 - [172] (byte*) progress_cursor#24 ← phi( prepareBobs::@11/(byte*) progress_cursor#17 prepareBobs::@3/(byte*) progress_cursor#31 ) - [172] (byte) progress_idx#25 ← phi( prepareBobs::@11/(byte) progress_idx#10 prepareBobs::@3/(byte) progress_idx#31 ) - [172] (byte*) prepareBobs::bob_table#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_table#1 prepareBobs::@3/(byte*) prepareBobs::bob_table#0 ) - [172] (byte) bob_charset_next_id#21 ← phi( prepareBobs::@11/(byte) bob_charset_next_id#16 prepareBobs::@3/(byte) bob_charset_next_id#30 ) - [172] (byte*) prepareBobs::bob_glyph#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_glyph#1 prepareBobs::@3/(const byte*) PROTO_BOB ) - [172] (byte) prepareBobs::cell#2 ← phi( prepareBobs::@11/(byte) prepareBobs::cell#1 prepareBobs::@3/(byte) 0 ) - [173] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6 + [138] (byte*) progress_cursor#24 ← phi( prepareBobs::@11/(byte*) progress_cursor#17 prepareBobs::@3/(byte*) progress_cursor#31 ) + [138] (byte) progress_idx#25 ← phi( prepareBobs::@11/(byte) progress_idx#10 prepareBobs::@3/(byte) progress_idx#31 ) + [138] (byte*) prepareBobs::bob_table#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_table#1 prepareBobs::@3/(byte*) prepareBobs::bob_table#0 ) + [138] (byte) bob_charset_next_id#21 ← phi( prepareBobs::@11/(byte) bob_charset_next_id#16 prepareBobs::@3/(byte) bob_charset_next_id#30 ) + [138] (byte*) prepareBobs::bob_glyph#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_glyph#1 prepareBobs::@3/(const byte*) PROTO_BOB ) + [138] (byte) prepareBobs::cell#2 ← phi( prepareBobs::@11/(byte) prepareBobs::cell#1 prepareBobs::@3/(byte) 0 ) + [139] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6 to:prepareBobs::@7 prepareBobs::@7: scope:[prepareBobs] from prepareBobs::@5 - [174] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12 - [175] call protoBobShiftRight + [140] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12 + [141] call protoBobShiftRight to:prepareBobs::@12 prepareBobs::@12: scope:[prepareBobs] from prepareBobs::@7 - [176] phi() - [177] call protoBobShiftRight + [142] phi() + [143] call protoBobShiftRight to:prepareBobs::@13 prepareBobs::@13: scope:[prepareBobs] from prepareBobs::@12 - [178] (byte) prepareBobs::shift_x#1 ← ++ (byte) prepareBobs::shift_x#2 + [144] (byte) prepareBobs::shift_x#1 ← ++ (byte) prepareBobs::shift_x#2 to:prepareBobs::@2 prepareBobs::@6: scope:[prepareBobs] from prepareBobs::@5 - [179] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 - [180] call charsetFindOrAddGlyph - [181] (byte) charsetFindOrAddGlyph::return#1 ← (byte) charsetFindOrAddGlyph::glyph_id#11 + [145] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + [146] call charsetFindOrAddGlyph + [147] (byte) charsetFindOrAddGlyph::return#1 ← (byte) charsetFindOrAddGlyph::glyph_id#11 to:prepareBobs::@10 prepareBobs::@10: scope:[prepareBobs] from prepareBobs::@6 - [182] (byte~) prepareBobs::$6 ← (byte) charsetFindOrAddGlyph::return#1 - [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 - [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 - [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y - [186] call progress_inc + [148] (byte~) prepareBobs::$6 ← (byte) charsetFindOrAddGlyph::return#1 + [149] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 + [150] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 + [151] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y + [152] call progress_inc to:prepareBobs::@11 prepareBobs::@11: scope:[prepareBobs] from prepareBobs::@10 - [187] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2 + [153] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2 to:prepareBobs::@5 (void()) progress_inc() progress_inc: scope:[progress_inc] from prepareBobs::@10 - [188] (byte) progress_idx#8 ← ++ (byte) progress_idx#25 - [189] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1 + [154] (byte) progress_idx#8 ← ++ (byte) progress_idx#25 + [155] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1 to:progress_inc::@2 progress_inc::@2: scope:[progress_inc] from progress_inc - [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) - [191] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24 + [156] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) + [157] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24 to:progress_inc::@1 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 - [192] (byte*) progress_cursor#17 ← phi( progress_inc/(byte*) progress_cursor#24 progress_inc::@2/(byte*) progress_cursor#8 ) - [192] (byte) progress_idx#10 ← phi( progress_inc/(byte) progress_idx#8 progress_inc::@2/(byte) 0 ) - [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) + [158] (byte*) progress_cursor#17 ← phi( progress_inc/(byte*) progress_cursor#24 progress_inc::@2/(byte*) progress_cursor#8 ) + [158] (byte) progress_idx#10 ← phi( progress_inc/(byte) progress_idx#8 progress_inc::@2/(byte) 0 ) + [159] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) to:progress_inc::@return progress_inc::@return: scope:[progress_inc] from progress_inc::@1 - [194] return + [160] return to:@return (byte()) charsetFindOrAddGlyph((byte*) charsetFindOrAddGlyph::glyph , (byte*) charsetFindOrAddGlyph::charset) charsetFindOrAddGlyph: scope:[charsetFindOrAddGlyph] from prepareBobs::@6 prepareBobs::@8 - [195] (byte*) charsetFindOrAddGlyph::glyph#10 ← phi( prepareBobs::@8/(const byte*) PROTO_BOB+(byte) $30 prepareBobs::@6/(byte*) charsetFindOrAddGlyph::glyph#1 ) - [195] (byte) bob_charset_next_id#23 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@6/(byte) bob_charset_next_id#21 ) + [161] (byte*) charsetFindOrAddGlyph::glyph#10 ← phi( prepareBobs::@8/(const byte*) PROTO_BOB+(byte) $30 prepareBobs::@6/(byte*) charsetFindOrAddGlyph::glyph#1 ) + [161] (byte) bob_charset_next_id#23 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@6/(byte) bob_charset_next_id#21 ) to:charsetFindOrAddGlyph::@1 charsetFindOrAddGlyph::@1: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph charsetFindOrAddGlyph::@6 - [196] (byte*) charsetFindOrAddGlyph::glyph_cursor#11 ← phi( charsetFindOrAddGlyph/(const byte*) BOB_CHARSET charsetFindOrAddGlyph::@6/(byte*) charsetFindOrAddGlyph::glyph_cursor#1 ) - [196] (byte) charsetFindOrAddGlyph::glyph_id#11 ← phi( charsetFindOrAddGlyph/(byte) 0 charsetFindOrAddGlyph::@6/(byte) charsetFindOrAddGlyph::glyph_id#1 ) - [197] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2 + [162] (byte*) charsetFindOrAddGlyph::glyph_cursor#11 ← phi( charsetFindOrAddGlyph/(const byte*) BOB_CHARSET charsetFindOrAddGlyph::@6/(byte*) charsetFindOrAddGlyph::glyph_cursor#1 ) + [162] (byte) charsetFindOrAddGlyph::glyph_id#11 ← phi( charsetFindOrAddGlyph/(byte) 0 charsetFindOrAddGlyph::@6/(byte) charsetFindOrAddGlyph::glyph_id#1 ) + [163] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2 to:charsetFindOrAddGlyph::@7 charsetFindOrAddGlyph::@7: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@1 charsetFindOrAddGlyph::@8 - [198] (byte) charsetFindOrAddGlyph::i1#2 ← phi( charsetFindOrAddGlyph::@8/(byte) charsetFindOrAddGlyph::i1#1 charsetFindOrAddGlyph::@1/(byte) 0 ) - [199] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@8 + [164] (byte) charsetFindOrAddGlyph::i1#2 ← phi( charsetFindOrAddGlyph::@8/(byte) charsetFindOrAddGlyph::i1#1 charsetFindOrAddGlyph::@1/(byte) 0 ) + [165] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@8 to:charsetFindOrAddGlyph::@9 charsetFindOrAddGlyph::@9: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@7 - [200] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23 + [166] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23 to:charsetFindOrAddGlyph::@return charsetFindOrAddGlyph::@return: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@9 - [201] (byte) bob_charset_next_id#16 ← phi( charsetFindOrAddGlyph::@5/(byte) bob_charset_next_id#23 charsetFindOrAddGlyph::@9/(byte) bob_charset_next_id#8 ) - [202] return + [167] (byte) bob_charset_next_id#16 ← phi( charsetFindOrAddGlyph::@5/(byte) bob_charset_next_id#23 charsetFindOrAddGlyph::@9/(byte) bob_charset_next_id#8 ) + [168] return to:@return charsetFindOrAddGlyph::@8: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@7 - [203] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) - [204] (byte) charsetFindOrAddGlyph::i1#1 ← ++ (byte) charsetFindOrAddGlyph::i1#2 + [169] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) + [170] (byte) charsetFindOrAddGlyph::i1#1 ← ++ (byte) charsetFindOrAddGlyph::i1#2 to:charsetFindOrAddGlyph::@7 charsetFindOrAddGlyph::@2: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@1 charsetFindOrAddGlyph::@4 - [205] (byte) charsetFindOrAddGlyph::i#2 ← phi( charsetFindOrAddGlyph::@1/(byte) 0 charsetFindOrAddGlyph::@4/(byte) charsetFindOrAddGlyph::i#1 ) - [206] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@3 + [171] (byte) charsetFindOrAddGlyph::i#2 ← phi( charsetFindOrAddGlyph::@1/(byte) 0 charsetFindOrAddGlyph::@4/(byte) charsetFindOrAddGlyph::i#1 ) + [172] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@3 to:charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@3: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@2 - [207] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 + [173] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 to:charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@5: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@2 charsetFindOrAddGlyph::@3 - [208] (byte) charsetFindOrAddGlyph::found#2 ← phi( charsetFindOrAddGlyph::@3/(byte) 0 charsetFindOrAddGlyph::@2/(byte) 1 ) - [209] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@6 + [174] (byte) charsetFindOrAddGlyph::found#2 ← phi( charsetFindOrAddGlyph::@3/(byte) 0 charsetFindOrAddGlyph::@2/(byte) 1 ) + [175] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@6 to:charsetFindOrAddGlyph::@return charsetFindOrAddGlyph::@6: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@5 - [210] (byte) charsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) charsetFindOrAddGlyph::glyph_id#11 - [211] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 + [176] (byte) charsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) charsetFindOrAddGlyph::glyph_id#11 + [177] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 to:charsetFindOrAddGlyph::@1 charsetFindOrAddGlyph::@4: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@3 - [212] (byte) charsetFindOrAddGlyph::i#1 ← ++ (byte) charsetFindOrAddGlyph::i#2 + [178] (byte) charsetFindOrAddGlyph::i#1 ← ++ (byte) charsetFindOrAddGlyph::i#2 to:charsetFindOrAddGlyph::@2 (void()) protoBobShiftRight() protoBobShiftRight: scope:[protoBobShiftRight] from prepareBobs::@12 prepareBobs::@7 - [213] phi() + [179] phi() to:protoBobShiftRight::@1 protoBobShiftRight::@1: scope:[protoBobShiftRight] from protoBobShiftRight protoBobShiftRight::@6 - [214] (byte) protoBobShiftRight::carry#2 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::carry#10 ) - [214] (byte) protoBobShiftRight::j#3 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::j#10 ) - [214] (byte) protoBobShiftRight::i#2 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::i#1 ) - [215] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2 + [180] (byte) protoBobShiftRight::carry#2 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::carry#10 ) + [180] (byte) protoBobShiftRight::j#3 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::j#10 ) + [180] (byte) protoBobShiftRight::i#2 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::i#1 ) + [181] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2 to:protoBobShiftRight::@return protoBobShiftRight::@return: scope:[protoBobShiftRight] from protoBobShiftRight::@1 - [216] return + [182] return to:@return protoBobShiftRight::@2: scope:[protoBobShiftRight] from protoBobShiftRight::@1 - [217] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 - [218] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@3 + [183] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 + [184] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@3 to:protoBobShiftRight::@4 protoBobShiftRight::@3: scope:[protoBobShiftRight] from protoBobShiftRight::@2 - [219] phi() + [185] phi() to:protoBobShiftRight::@4 protoBobShiftRight::@4: scope:[protoBobShiftRight] from protoBobShiftRight::@2 protoBobShiftRight::@3 - [220] (byte) protoBobShiftRight::carry#1 ← phi( protoBobShiftRight::@3/(byte) $80 protoBobShiftRight::@2/(byte) 0 ) - [221] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 - [222] (byte~) protoBobShiftRight::$6 ← (byte) protoBobShiftRight::carry#2 | (byte~) protoBobShiftRight::$5 - [223] *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) ← (byte~) protoBobShiftRight::$6 - [224] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@5 + [186] (byte) protoBobShiftRight::carry#1 ← phi( protoBobShiftRight::@3/(byte) $80 protoBobShiftRight::@2/(byte) 0 ) + [187] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 + [188] (byte~) protoBobShiftRight::$6 ← (byte) protoBobShiftRight::carry#2 | (byte~) protoBobShiftRight::$5 + [189] *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) ← (byte~) protoBobShiftRight::$6 + [190] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@5 to:protoBobShiftRight::@7 protoBobShiftRight::@7: scope:[protoBobShiftRight] from protoBobShiftRight::@4 - [225] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 + [191] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 to:protoBobShiftRight::@6 protoBobShiftRight::@6: scope:[protoBobShiftRight] from protoBobShiftRight::@5 protoBobShiftRight::@7 - [226] (byte) protoBobShiftRight::j#10 ← phi( protoBobShiftRight::@7/(byte) protoBobShiftRight::j#2 protoBobShiftRight::@5/(byte) protoBobShiftRight::j#1 ) - [227] (byte) protoBobShiftRight::i#1 ← ++ (byte) protoBobShiftRight::i#2 - [228] (byte) protoBobShiftRight::carry#10 ← (byte) protoBobShiftRight::carry#1 + [192] (byte) protoBobShiftRight::j#10 ← phi( protoBobShiftRight::@7/(byte) protoBobShiftRight::j#2 protoBobShiftRight::@5/(byte) protoBobShiftRight::j#1 ) + [193] (byte) protoBobShiftRight::i#1 ← ++ (byte) protoBobShiftRight::i#2 + [194] (byte) protoBobShiftRight::carry#10 ← (byte) protoBobShiftRight::carry#1 to:protoBobShiftRight::@1 protoBobShiftRight::@5: scope:[protoBobShiftRight] from protoBobShiftRight::@4 - [229] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f + [195] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f to:protoBobShiftRight::@6 (void()) protoBobShiftDown() protoBobShiftDown: scope:[protoBobShiftDown] from prepareBobs::@4 - [230] phi() + [196] phi() to:protoBobShiftDown::@1 protoBobShiftDown::@1: scope:[protoBobShiftDown] from protoBobShiftDown protoBobShiftDown::@2 - [231] (byte) protoBobShiftDown::i#2 ← phi( protoBobShiftDown/(byte) $17 protoBobShiftDown::@2/(byte) protoBobShiftDown::i#1 ) - [232] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2 + [197] (byte) protoBobShiftDown::i#2 ← phi( protoBobShiftDown/(byte) $17 protoBobShiftDown::@2/(byte) protoBobShiftDown::i#1 ) + [198] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2 to:protoBobShiftDown::@3 protoBobShiftDown::@3: scope:[protoBobShiftDown] from protoBobShiftDown::@1 - [233] *((const byte*) PROTO_BOB) ← (byte) 0 - [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 - [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 + [199] *((const byte*) PROTO_BOB) ← (byte) 0 + [200] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 + [201] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 to:protoBobShiftDown::@return protoBobShiftDown::@return: scope:[protoBobShiftDown] from protoBobShiftDown::@3 - [236] return + [202] return to:@return protoBobShiftDown::@2: scope:[protoBobShiftDown] from protoBobShiftDown::@1 - [237] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) - [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) - [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 - [240] (byte) protoBobShiftDown::i#1 ← -- (byte) protoBobShiftDown::i#2 + [203] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) + [204] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) + [205] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 + [206] (byte) protoBobShiftDown::i#1 ← -- (byte) protoBobShiftDown::i#2 to:protoBobShiftDown::@1 (void()) progress_init((byte*) progress_init::line) progress_init: scope:[progress_init] from prepareBobs - [241] phi() + [207] phi() to:progress_init::@return progress_init::@return: scope:[progress_init] from progress_init - [242] return + [208] return to:@return (void()) mulf_init() mulf_init: scope:[mulf_init] from main - [243] phi() + [209] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@3 - [244] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 ) - [244] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 ) - [244] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 ) - [244] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 ) - [244] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 ) - [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 + [210] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 ) + [210] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 ) + [210] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 ) + [210] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 ) + [210] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 ) + [211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 mulf_init::@8 - [246] (byte) mulf_init::dir#2 ← phi( mulf_init::@8/(byte) mulf_init::dir#4 mulf_init::@1/(byte) $ff ) - [246] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_hi#1 mulf_init::@1/(const byte*) mulf_sqr2_hi ) - [246] (byte) mulf_init::x_255#2 ← phi( mulf_init::@8/(byte) mulf_init::x_255#1 mulf_init::@1/(byte) -1 ) - [246] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_lo#1 mulf_init::@1/(const byte*) mulf_sqr2_lo ) - [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 + [212] (byte) mulf_init::dir#2 ← phi( mulf_init::@8/(byte) mulf_init::dir#4 mulf_init::@1/(byte) $ff ) + [212] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_hi#1 mulf_init::@1/(const byte*) mulf_sqr2_hi ) + [212] (byte) mulf_init::x_255#2 ← phi( mulf_init::@8/(byte) mulf_init::x_255#1 mulf_init::@1/(byte) -1 ) + [212] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_lo#1 mulf_init::@1/(const byte*) mulf_sqr2_lo ) + [213] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 to:mulf_init::@7 mulf_init::@7: scope:[mulf_init] from mulf_init::@5 - [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) - [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) + [214] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) + [215] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@7 - [250] return + [216] return to:@return mulf_init::@6: scope:[mulf_init] from mulf_init::@5 - [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) - [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) - [253] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [254] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [255] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 + [217] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) + [218] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) + [219] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [220] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [221] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 to:mulf_init::@8 mulf_init::@9: scope:[mulf_init] from mulf_init::@6 - [256] phi() + [222] phi() to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@6 mulf_init::@9 - [257] (byte) mulf_init::dir#4 ← phi( mulf_init::@9/(byte) mulf_init::dir#2 mulf_init::@6/(byte) 1 ) - [258] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [223] (byte) mulf_init::dir#4 ← phi( mulf_init::@9/(byte) mulf_init::dir#2 mulf_init::@6/(byte) 1 ) + [224] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 to:mulf_init::@5 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 - [259] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 - [261] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 + [225] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [226] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 + [227] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@2 - [262] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [263] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [228] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [229] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [264] (byte) mulf_init::x_2#2 ← phi( mulf_init::@2/(byte) mulf_init::x_2#3 mulf_init::@4/(byte) mulf_init::x_2#1 ) - [264] (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#4 mulf_init::@4/(word) mulf_init::sqr#2 ) - [265] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 - [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 - [267] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 - [268] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 - [269] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [270] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [271] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [230] (byte) mulf_init::x_2#2 ← phi( mulf_init::@2/(byte) mulf_init::x_2#3 mulf_init::@4/(byte) mulf_init::x_2#1 ) + [230] (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#4 mulf_init::@4/(word) mulf_init::sqr#2 ) + [231] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 + [232] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 + [233] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 + [234] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 + [235] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [236] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [237] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 to:mulf_init::@1 @@ -4557,24 +4258,24 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (void()) main() -(signed word~) main::$10 202.0 -(signed word~) main::$12 202.0 -(signed word~) main::$13 202.0 -(byte~) main::$19 22.0 -(byte~) main::$21 22.0 -(byte) main::a -(byte) main::a#1 28.857142857142858 -(byte) main::a#2 25.9375 -(byte) main::a#6 22.0 -(byte) main::angle -(byte) main::angle#1 3.6666666666666665 -(byte) main::angle#8 1.1785714285714286 -(byte) main::i -(byte) main::i#1 151.5 -(byte) main::i#2 9.619047619047619 -(signed byte) main::r -(signed byte) main::r#1 33.666666666666664 -(signed byte) main::r#2 23.764705882352942 +(byte~) main::$15 22.0 +(byte~) main::$17 22.0 +(byte) main::col +(byte) main::col#1 151.5 +(byte) main::col#5 13.466666666666667 +(signed word) main::origX +(signed word) main::origX#1 3.142857142857143 +(signed word) main::origX#8 1.5 +(byte) main::row +(byte) main::row#1 1501.5 +(byte) main::row#2 250.25 +(signed word) main::rowOffsetY +(signed word) main::rowOffsetY#1 3.6666666666666665 +(signed word) main::rowOffsetY#10 44.47826086956522 +(signed word) main::rowX +(signed word) main::rowX#1 50.5 +(signed word) main::rowY +(signed word) main::rowY#1 67.33333333333333 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen @@ -4588,9 +4289,16 @@ VARIABLE REGISTER WEIGHTS (byte*) main::vicSelectGfxBank2_toDd001_gfx (byte) main::vicSelectGfxBank2_toDd001_return (signed word) main::x -(signed word) main::x#0 18.363636363636363 +(signed word) main::x#0 24.153846153846153 +(signed word) main::x#1 400.4 +(signed word) main::x#2 620.8 +(signed word) main::x#4 22.0 +(signed word) main::x#7 101.0 (signed word) main::y -(signed word) main::y#0 40.4 +(signed word) main::y#0 21.642857142857142 +(signed word) main::y#1 500.5 +(signed word) main::y#2 517.3333333333334 +(signed word) main::y#6 202.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst @@ -4600,43 +4308,6 @@ VARIABLE REGISTER WEIGHTS (word) memset::num (void*) memset::return (void*) memset::str -(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) -(signed byte) mulf8s::a -(signed byte) mulf8s::a#0 101.0 -(signed byte) mulf8s::a#1 101.0 -(signed byte) mulf8s::b -(signed byte) mulf8s::b#0 202.0 -(signed byte) mulf8s::b#1 202.0 -(signed byte) mulf8s::b#2 68.0 -(signed byte) mulf8s::mulf8s_prepare1_a -(signed byte) mulf8s::mulf8s_prepare1_a#0 202.0 -(signed word) mulf8s::return -(signed word) mulf8s::return#0 51.0 -(signed word) mulf8s::return#2 202.0 -(signed word) mulf8s::return#3 202.0 -(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 4.0 -(byte~) mulf8s_prepared::$15 4.0 -(byte~) mulf8s_prepared::$16 4.0 -(byte~) mulf8s_prepared::$8 4.0 -(signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 0.4 -(word) mulf8s_prepared::m -(word) mulf8s_prepared::m#0 2.0 -(word) mulf8s_prepared::m#1 4.0 -(word) mulf8s_prepared::m#2 4.0 -(word) mulf8s_prepared::m#4 1.3333333333333333 -(word) mulf8s_prepared::m#5 2.5 -(signed word) mulf8s_prepared::return -(void()) mulf8u_prepare((byte) mulf8u_prepare::a) -(byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#0 4.0 -(word()) mulf8u_prepared((byte) mulf8u_prepared::b) -(byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 4.0 -(word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 1.3333333333333333 -(word) mulf8u_prepared::return#2 4.0 (void()) mulf_init() (byte~) mulf_init::$1 22.0 (byte~) mulf_init::$4 22.0 @@ -4742,13 +4413,13 @@ VARIABLE REGISTER WEIGHTS (byte) renderBob::x_char_offset (byte) renderBob::x_char_offset#0 0.8 (byte) renderBob::xpos -(byte) renderBob::xpos#0 10.499999999999998 +(byte) renderBob::xpos#0 100.5 (byte) renderBob::y_char_offset (byte) renderBob::y_char_offset#0 4.0 (word) renderBob::y_offset (word) renderBob::y_offset#0 4.0 (byte) renderBob::ypos -(byte) renderBob::ypos#0 15.000000000000002 +(byte) renderBob::ypos#0 143.57142857142856 (void()) renderBobCleanup() (byte~) renderBobCleanup::$1 202.0 (byte) renderBobCleanup::i @@ -4757,8 +4428,9 @@ VARIABLE REGISTER WEIGHTS (byte*) renderBobCleanup::screen (byte*) renderBobCleanup::screen#0 112.22222222222223 (byte**) renderBobCleanupNext -(byte**) renderBobCleanupNext#13 7.357142857142858 -(byte**) renderBobCleanupNext#17 3.3870967741935485 +(byte**) renderBobCleanupNext#13 52.57142857142857 +(byte**) renderBobCleanupNext#17 73.73333333333335 +(byte**) renderBobCleanupNext#21 67.33333333333333 (void()) renderBobInit() (word~) renderBobInit::$0 16.5 (word~) renderBobInit::$1 11.0 @@ -4774,14 +4446,15 @@ VARIABLE REGISTER WEIGHTS (byte) renderBobInit::y#2 4.714285714285714 Initial phi equivalence classes -[ main::angle#8 main::angle#1 ] -[ main::r#2 main::r#1 ] -[ main::a#2 main::a#6 main::a#1 ] -[ renderBobCleanupNext#17 renderBobCleanupNext#13 ] -[ main::i#2 main::i#1 ] -[ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] -[ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] -[ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] +[ main::origX#8 main::origX#1 ] +[ main::rowOffsetY#10 main::rowOffsetY#1 ] +[ main::x#0 main::x#4 main::rowX#1 ] +[ main::y#0 main::rowY#1 ] +[ main::col#5 main::col#1 ] +[ main::x#2 main::x#1 main::x#7 ] +[ main::y#2 main::y#1 main::y#6 ] +[ renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] +[ main::row#2 main::row#1 ] [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] [ memset::dst#2 memset::dst#1 ] [ renderBobInit::y#2 renderBobInit::y#1 ] @@ -4815,19 +4488,12 @@ Initial phi equivalence classes [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] [ mulf_init::dir#2 mulf_init::dir#4 ] [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] -Added variable mulf8s::return#2 to zero page equivalence class [ mulf8s::return#2 ] -Added variable main::$10 to zero page equivalence class [ main::$10 ] -Added variable main::x#0 to zero page equivalence class [ main::x#0 ] -Added variable mulf8s::return#3 to zero page equivalence class [ mulf8s::return#3 ] -Added variable main::$12 to zero page equivalence class [ main::$12 ] -Added variable main::$13 to zero page equivalence class [ main::$13 ] -Added variable main::y#0 to zero page equivalence class [ main::y#0 ] Added variable renderBob::xpos#0 to zero page equivalence class [ renderBob::xpos#0 ] Added variable renderBob::ypos#0 to zero page equivalence class [ renderBob::ypos#0 ] Added variable keyboard_key_pressed::return#2 to zero page equivalence class [ keyboard_key_pressed::return#2 ] -Added variable main::$19 to zero page equivalence class [ main::$19 ] +Added variable main::$15 to zero page equivalence class [ main::$15 ] Added variable keyboard_key_pressed::return#3 to zero page equivalence class [ keyboard_key_pressed::return#3 ] -Added variable main::$21 to zero page equivalence class [ main::$21 ] +Added variable main::$17 to zero page equivalence class [ main::$17 ] Added variable keyboard_matrix_read::return#2 to zero page equivalence class [ keyboard_matrix_read::return#2 ] Added variable keyboard_key_pressed::$2 to zero page equivalence class [ keyboard_key_pressed::$2 ] Added variable keyboard_key_pressed::return#0 to zero page equivalence class [ keyboard_key_pressed::return#0 ] @@ -4842,16 +4508,6 @@ Added variable renderBob::$4 to zero page equivalence class [ renderBob::$4 ] Added variable renderBob::$5 to zero page equivalence class [ renderBob::$5 ] Added variable renderBob::$6 to zero page equivalence class [ renderBob::$6 ] Added variable renderBob::bob_table_idx#0 to zero page equivalence class [ renderBob::bob_table_idx#0 ] -Added variable mulf8u_prepare::a#0 to zero page equivalence class [ mulf8u_prepare::a#0 ] -Added variable mulf8s_prepared::b#0 to zero page equivalence class [ mulf8s_prepared::b#0 ] -Added variable mulf8s::return#0 to zero page equivalence class [ mulf8s::return#0 ] -Added variable mulf8u_prepared::b#0 to zero page equivalence class [ mulf8u_prepared::b#0 ] -Added variable mulf8u_prepared::return#2 to zero page equivalence class [ mulf8u_prepared::return#2 ] -Added variable mulf8s_prepared::$8 to zero page equivalence class [ mulf8s_prepared::$8 ] -Added variable mulf8s_prepared::$15 to zero page equivalence class [ mulf8s_prepared::$15 ] -Added variable mulf8s_prepared::$12 to zero page equivalence class [ mulf8s_prepared::$12 ] -Added variable mulf8s_prepared::$16 to zero page equivalence class [ mulf8s_prepared::$16 ] -Added variable mulf8u_prepared::return#0 to zero page equivalence class [ mulf8u_prepared::return#0 ] Added variable renderBobCleanup::$1 to zero page equivalence class [ renderBobCleanup::$1 ] Added variable renderBobCleanup::screen#0 to zero page equivalence class [ renderBobCleanup::screen#0 ] Added variable renderBobInit::$0 to zero page equivalence class [ renderBobInit::$0 ] @@ -4869,14 +4525,15 @@ Added variable mulf_init::$1 to zero page equivalence class [ mulf_init::$1 ] Added variable mulf_init::$4 to zero page equivalence class [ mulf_init::$4 ] Added variable mulf_init::$5 to zero page equivalence class [ mulf_init::$5 ] Complete equivalence classes -[ main::angle#8 main::angle#1 ] -[ main::r#2 main::r#1 ] -[ main::a#2 main::a#6 main::a#1 ] -[ renderBobCleanupNext#17 renderBobCleanupNext#13 ] -[ main::i#2 main::i#1 ] -[ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] -[ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] -[ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] +[ main::origX#8 main::origX#1 ] +[ main::rowOffsetY#10 main::rowOffsetY#1 ] +[ main::x#0 main::x#4 main::rowX#1 ] +[ main::y#0 main::rowY#1 ] +[ main::col#5 main::col#1 ] +[ main::x#2 main::x#1 main::x#7 ] +[ main::y#2 main::y#1 main::y#6 ] +[ renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] +[ main::row#2 main::row#1 ] [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] [ memset::dst#2 memset::dst#1 ] [ renderBobInit::y#2 renderBobInit::y#1 ] @@ -4910,19 +4567,12 @@ Complete equivalence classes [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] [ mulf_init::dir#2 mulf_init::dir#4 ] [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] -[ mulf8s::return#2 ] -[ main::$10 ] -[ main::x#0 ] -[ mulf8s::return#3 ] -[ main::$12 ] -[ main::$13 ] -[ main::y#0 ] [ renderBob::xpos#0 ] [ renderBob::ypos#0 ] [ keyboard_key_pressed::return#2 ] -[ main::$19 ] +[ main::$15 ] [ keyboard_key_pressed::return#3 ] -[ main::$21 ] +[ main::$17 ] [ keyboard_matrix_read::return#2 ] [ keyboard_key_pressed::$2 ] [ keyboard_key_pressed::return#0 ] @@ -4937,16 +4587,6 @@ Complete equivalence classes [ renderBob::$5 ] [ renderBob::$6 ] [ renderBob::bob_table_idx#0 ] -[ mulf8u_prepare::a#0 ] -[ mulf8s_prepared::b#0 ] -[ mulf8s::return#0 ] -[ mulf8u_prepared::b#0 ] -[ mulf8u_prepared::return#2 ] -[ mulf8s_prepared::$8 ] -[ mulf8s_prepared::$15 ] -[ mulf8s_prepared::$12 ] -[ mulf8s_prepared::$16 ] -[ mulf8u_prepared::return#0 ] [ renderBobCleanup::$1 ] [ renderBobCleanup::screen#0 ] [ renderBobInit::$0 ] @@ -4963,100 +4603,84 @@ Complete equivalence classes [ mulf_init::$1 ] [ mulf_init::$4 ] [ mulf_init::$5 ] -Allocated zp[1]:2 [ main::angle#8 main::angle#1 ] -Allocated zp[1]:3 [ main::r#2 main::r#1 ] -Allocated zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] -Allocated zp[2]:5 [ renderBobCleanupNext#17 renderBobCleanupNext#13 ] -Allocated zp[1]:7 [ main::i#2 main::i#1 ] -Allocated zp[1]:8 [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] -Allocated zp[1]:9 [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] -Allocated zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] -Allocated zp[1]:12 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] -Allocated zp[2]:13 [ memset::dst#2 memset::dst#1 ] -Allocated zp[1]:15 [ renderBobInit::y#2 renderBobInit::y#1 ] -Allocated zp[1]:16 [ renderBobInit::i#2 renderBobInit::i#1 ] -Allocated zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Allocated zp[2]:18 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] -Allocated zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] -Allocated zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] -Allocated zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -Allocated zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Allocated zp[2]:24 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] -Allocated zp[2]:26 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] -Allocated zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] -Allocated zp[2]:29 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] -Allocated zp[1]:31 [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] -Allocated zp[2]:32 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] -Allocated zp[1]:34 [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] -Allocated zp[1]:35 [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] -Allocated zp[1]:36 [ charsetFindOrAddGlyph::found#2 ] -Allocated zp[1]:37 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] -Allocated zp[1]:38 [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] -Allocated zp[1]:39 [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] -Allocated zp[1]:40 [ protoBobShiftRight::carry#1 ] -Allocated zp[1]:41 [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] -Allocated zp[2]:42 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] -Allocated zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] -Allocated zp[2]:45 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Allocated zp[1]:47 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Allocated zp[2]:48 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] -Allocated zp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Allocated zp[2]:51 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] -Allocated zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] -Allocated zp[2]:54 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] -Allocated zp[2]:56 [ mulf8s::return#2 ] -Allocated zp[2]:58 [ main::$10 ] -Allocated zp[2]:60 [ main::x#0 ] -Allocated zp[2]:62 [ mulf8s::return#3 ] -Allocated zp[2]:64 [ main::$12 ] -Allocated zp[2]:66 [ main::$13 ] -Allocated zp[2]:68 [ main::y#0 ] -Allocated zp[1]:70 [ renderBob::xpos#0 ] -Allocated zp[1]:71 [ renderBob::ypos#0 ] -Allocated zp[1]:72 [ keyboard_key_pressed::return#2 ] -Allocated zp[1]:73 [ main::$19 ] -Allocated zp[1]:74 [ keyboard_key_pressed::return#3 ] -Allocated zp[1]:75 [ main::$21 ] -Allocated zp[1]:76 [ keyboard_matrix_read::return#2 ] -Allocated zp[1]:77 [ keyboard_key_pressed::$2 ] -Allocated zp[1]:78 [ keyboard_key_pressed::return#0 ] -Allocated zp[1]:79 [ keyboard_matrix_read::return#0 ] -Allocated zp[1]:80 [ renderBob::x_char_offset#0 ] -Allocated zp[1]:81 [ renderBob::y_char_offset#0 ] -Allocated zp[1]:82 [ renderBob::$8 ] -Allocated zp[2]:83 [ renderBob::y_offset#0 ] -Allocated zp[2]:85 [ renderBob::$2 ] -Allocated zp[2]:87 [ renderBob::screen#0 ] -Allocated zp[1]:89 [ renderBob::$4 ] -Allocated zp[1]:90 [ renderBob::$5 ] -Allocated zp[1]:91 [ renderBob::$6 ] -Allocated zp[1]:92 [ renderBob::bob_table_idx#0 ] -Allocated zp[1]:93 [ mulf8u_prepare::a#0 ] -Allocated zp[1]:94 [ mulf8s_prepared::b#0 ] -Allocated zp[2]:95 [ mulf8s::return#0 ] -Allocated zp[1]:97 [ mulf8u_prepared::b#0 ] -Allocated zp[2]:98 [ mulf8u_prepared::return#2 ] -Allocated zp[1]:100 [ mulf8s_prepared::$8 ] -Allocated zp[1]:101 [ mulf8s_prepared::$15 ] -Allocated zp[1]:102 [ mulf8s_prepared::$12 ] -Allocated zp[1]:103 [ mulf8s_prepared::$16 ] -Allocated zp[2]:104 [ mulf8u_prepared::return#0 ] -Allocated zp[1]:106 [ renderBobCleanup::$1 ] -Allocated zp[2]:107 [ renderBobCleanup::screen#0 ] -Allocated zp[2]:109 [ renderBobInit::$0 ] -Allocated zp[2]:111 [ renderBobInit::$6 ] -Allocated zp[2]:113 [ renderBobInit::$7 ] -Allocated zp[2]:115 [ renderBobInit::$1 ] -Allocated zp[1]:117 [ renderBobInit::$4 ] -Allocated zp[1]:118 [ renderBobInit::$5 ] -Allocated zp[1]:119 [ charsetFindOrAddGlyph::return#1 ] -Allocated zp[1]:120 [ prepareBobs::$6 ] -Allocated zp[1]:121 [ protoBobShiftRight::$1 ] -Allocated zp[1]:122 [ protoBobShiftRight::$5 ] -Allocated zp[1]:123 [ protoBobShiftRight::$6 ] -Allocated zp[1]:124 [ mulf_init::$1 ] -Allocated zp[1]:125 [ mulf_init::$4 ] -Allocated zp[1]:126 [ mulf_init::$5 ] +Allocated zp[2]:2 [ main::origX#8 main::origX#1 ] +Allocated zp[2]:4 [ main::rowOffsetY#10 main::rowOffsetY#1 ] +Allocated zp[2]:6 [ main::x#0 main::x#4 main::rowX#1 ] +Allocated zp[2]:8 [ main::y#0 main::rowY#1 ] +Allocated zp[1]:10 [ main::col#5 main::col#1 ] +Allocated zp[2]:11 [ main::x#2 main::x#1 main::x#7 ] +Allocated zp[2]:13 [ main::y#2 main::y#1 main::y#6 ] +Allocated zp[2]:15 [ renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] +Allocated zp[1]:17 [ main::row#2 main::row#1 ] +Allocated zp[1]:18 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] +Allocated zp[2]:19 [ memset::dst#2 memset::dst#1 ] +Allocated zp[1]:21 [ renderBobInit::y#2 renderBobInit::y#1 ] +Allocated zp[1]:22 [ renderBobInit::i#2 renderBobInit::i#1 ] +Allocated zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Allocated zp[2]:24 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] +Allocated zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] +Allocated zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] +Allocated zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] +Allocated zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] +Allocated zp[2]:30 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] +Allocated zp[2]:32 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] +Allocated zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] +Allocated zp[2]:35 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] +Allocated zp[1]:37 [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] +Allocated zp[2]:38 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] +Allocated zp[1]:40 [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] +Allocated zp[1]:41 [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] +Allocated zp[1]:42 [ charsetFindOrAddGlyph::found#2 ] +Allocated zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] +Allocated zp[1]:44 [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] +Allocated zp[1]:45 [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] +Allocated zp[1]:46 [ protoBobShiftRight::carry#1 ] +Allocated zp[1]:47 [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] +Allocated zp[2]:48 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] +Allocated zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] +Allocated zp[2]:51 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Allocated zp[1]:53 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Allocated zp[2]:54 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] +Allocated zp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Allocated zp[2]:57 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] +Allocated zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] +Allocated zp[2]:60 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] +Allocated zp[1]:62 [ renderBob::xpos#0 ] +Allocated zp[1]:63 [ renderBob::ypos#0 ] +Allocated zp[1]:64 [ keyboard_key_pressed::return#2 ] +Allocated zp[1]:65 [ main::$15 ] +Allocated zp[1]:66 [ keyboard_key_pressed::return#3 ] +Allocated zp[1]:67 [ main::$17 ] +Allocated zp[1]:68 [ keyboard_matrix_read::return#2 ] +Allocated zp[1]:69 [ keyboard_key_pressed::$2 ] +Allocated zp[1]:70 [ keyboard_key_pressed::return#0 ] +Allocated zp[1]:71 [ keyboard_matrix_read::return#0 ] +Allocated zp[1]:72 [ renderBob::x_char_offset#0 ] +Allocated zp[1]:73 [ renderBob::y_char_offset#0 ] +Allocated zp[1]:74 [ renderBob::$8 ] +Allocated zp[2]:75 [ renderBob::y_offset#0 ] +Allocated zp[2]:77 [ renderBob::$2 ] +Allocated zp[2]:79 [ renderBob::screen#0 ] +Allocated zp[1]:81 [ renderBob::$4 ] +Allocated zp[1]:82 [ renderBob::$5 ] +Allocated zp[1]:83 [ renderBob::$6 ] +Allocated zp[1]:84 [ renderBob::bob_table_idx#0 ] +Allocated zp[1]:85 [ renderBobCleanup::$1 ] +Allocated zp[2]:86 [ renderBobCleanup::screen#0 ] +Allocated zp[2]:88 [ renderBobInit::$0 ] +Allocated zp[2]:90 [ renderBobInit::$6 ] +Allocated zp[2]:92 [ renderBobInit::$7 ] +Allocated zp[2]:94 [ renderBobInit::$1 ] +Allocated zp[1]:96 [ renderBobInit::$4 ] +Allocated zp[1]:97 [ renderBobInit::$5 ] +Allocated zp[1]:98 [ charsetFindOrAddGlyph::return#1 ] +Allocated zp[1]:99 [ prepareBobs::$6 ] +Allocated zp[1]:100 [ protoBobShiftRight::$1 ] +Allocated zp[1]:101 [ protoBobShiftRight::$5 ] +Allocated zp[1]:102 [ protoBobShiftRight::$6 ] +Allocated zp[1]:103 [ mulf_init::$1 ] +Allocated zp[1]:104 [ mulf_init::$4 ] +Allocated zp[1]:105 [ mulf_init::$5 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -5080,9 +4704,9 @@ Target platform is c64basic / MOS6502X .label CIA2_PORT_A_DDR = $dd02 .const KEY_SPACE = $3c // The BASIC screen - .label SCREEN_BASIC = $400 + .label BASIC_SCREEN = $400 // The BASIC charset - .label CHARSET_BASIC = $1000 + .label BASIC_CHARSET = $1000 // The BOB screen .label BOB_SCREEN = $2800 // The BOB charset @@ -5094,18 +4718,17 @@ Target platform is c64basic / MOS6502X // The size of a sub-table of BOB_TABLES .const BOB_SUBTABLE_SIZE = BOB_SHIFTS_X*BOB_SHIFTS_Y // The number of BOBs to render - .const NUM_BOBS = $14 + .const NUM_BOBS = $19 .const SIZEOF_POINTER = 2 - .label COS = SIN+$40 // BOB charset ID of the next glyph to be added - .label bob_charset_next_id = $1c + .label bob_charset_next_id = $22 // Current index within the progress cursor (0-7) - .label progress_idx = $14 + .label progress_idx = $1a // Current position of the progress cursor - .label progress_cursor = $12 + .label progress_cursor = $18 // Pointer to the next clean-up to add // Prepare for next clean-up - .label renderBobCleanupNext = 5 + .label renderBobCleanupNext = $f // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -5124,43 +4747,49 @@ __bend_from___b1: __bend: // main main: { + .const origY = $a00 + // Row and column offset vectors + .const rowOffsetX = $c00 + .const colOffsetX = $100 + .const colOffsetY = $1800 .const vicSelectGfxBank1_toDd001_return = 3 .const vicSelectGfxBank2_toDd001_return = 3 .const toD0181_return = (>(BOB_SCREEN&$3fff)*4)|(>BOB_CHARSET)/4&$f - .const toD0182_return = (>(SCREEN_BASIC&$3fff)*4)|(>CHARSET_BASIC)/4&$f - .label __10 = $3a - .label __12 = $40 - .label __13 = $42 - .label __19 = $49 - .label __21 = $4b - .label x = $3c - .label y = $44 - .label a = 4 - .label r = 3 - .label i = 7 - // Render Rotated BOBs - .label angle = 2 + .const toD0182_return = (>(BASIC_SCREEN&$3fff)*4)|(>BASIC_CHARSET)/4&$f + .label __15 = $41 + .label __17 = $43 + .label x = 6 + .label y = 8 + .label x_1 = $b + .label y_1 = $d + .label row = $11 + .label rowX = 6 + .label rowY = 8 + .label col = $a + // Origin point + .label origX = 2 + .label rowOffsetY = 4 // [5] call mulf_init - // [243] phi from main to mulf_init [phi:main->mulf_init] + // [209] phi from main to mulf_init [phi:main->mulf_init] mulf_init_from_main: jsr mulf_init - // [6] phi from main to main::@9 [phi:main->main::@9] - __b9_from_main: - jmp __b9 - // main::@9 - __b9: + // [6] phi from main to main::@11 [phi:main->main::@11] + __b11_from_main: + jmp __b11 + // main::@11 + __b11: // [7] call prepareBobs - // [159] phi from main::@9 to prepareBobs [phi:main::@9->prepareBobs] - prepareBobs_from___b9: + // [125] phi from main::@11 to prepareBobs [phi:main::@11->prepareBobs] + prepareBobs_from___b11: jsr prepareBobs - // [8] phi from main::@9 to main::@10 [phi:main::@9->main::@10] - __b10_from___b9: - jmp __b10 - // main::@10 - __b10: + // [8] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + __b12_from___b11: + jmp __b12 + // main::@12 + __b12: // [9] call renderBobInit - // [143] phi from main::@10 to renderBobInit [phi:main::@10->renderBobInit] - renderBobInit_from___b10: + // [109] phi from main::@12 to renderBobInit [phi:main::@12->renderBobInit] + renderBobInit_from___b12: jsr renderBobInit jmp vicSelectGfxBank1 // main::vicSelectGfxBank1 @@ -5184,22 +4813,30 @@ main: { jmp toD0181 // main::toD0181 toD0181: - jmp __b7 - // main::@7 - __b7: + jmp __b9 + // main::@9 + __b9: // [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 // [15] call memset - // [137] phi from main::@7 to memset [phi:main::@7->memset] - memset_from___b7: + // [103] phi from main::@9 to memset [phi:main::@9->memset] + memset_from___b9: jsr memset - // [16] phi from main::@7 to main::@1 [phi:main::@7->main::@1] - __b1_from___b7: - // [16] phi (byte) main::angle#8 = (byte) 0 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1 - lda #0 - sta.z angle + // [16] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + __b1_from___b9: + // [16] phi (signed word) main::rowOffsetY#10 = (signed word) $100 [phi:main::@9->main::@1#0] -- vwsz1=vwsc1 + lda #<$100 + sta.z rowOffsetY + lda #>$100 + sta.z rowOffsetY+1 + // [16] phi (signed word) main::origX#8 = (signed word) $a00 [phi:main::@9->main::@1#1] -- vwsz1=vwsc1 + lda #<$a00 + sta.z origX + lda #>$a00 + sta.z origX+1 jmp __b1 + // Render Grid of BOBs // main::@1 __b1: jmp __b2 @@ -5216,208 +4853,211 @@ main: { lda #$f sta BORDERCOL // [19] call renderBobCleanup - // [121] phi from main::@3 to renderBobCleanup [phi:main::@3->renderBobCleanup] + // [87] phi from main::@3 to renderBobCleanup [phi:main::@3->renderBobCleanup] renderBobCleanup_from___b3: jsr renderBobCleanup - jmp __b11 - // main::@11 - __b11: - // [20] (byte) main::a#6 ← (byte) main::angle#8 -- vbuz1=vbuz2 - lda.z angle - sta.z a - // [21] phi from main::@11 to main::@4 [phi:main::@11->main::@4] - __b4_from___b11: - // [21] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@4#0] -- vbuz1=vbuc1 + jmp __b13 + // main::@13 + __b13: + // [20] (signed word) main::x#4 ← (signed word) main::origX#8 -- vwsz1=vwsz2 + lda.z origX + sta.z x + lda.z origX+1 + sta.z x+1 + // [21] phi from main::@13 to main::@4 [phi:main::@13->main::@4] + __b4_from___b13: + // [21] phi (byte) main::col#5 = (byte) 0 [phi:main::@13->main::@4#0] -- vbuz1=vbuc1 lda #0 - sta.z i - // [21] phi (byte**) renderBobCleanupNext#17 = (const byte**) RENDERBOB_CLEANUP [phi:main::@11->main::@4#1] -- pptz1=pptc1 + sta.z col + // [21] phi (byte**) renderBobCleanupNext#21 = (const byte**) RENDERBOB_CLEANUP [phi:main::@13->main::@4#1] -- pptz1=pptc1 lda #RENDERBOB_CLEANUP sta.z renderBobCleanupNext+1 - // [21] phi (byte) main::a#2 = (byte) main::a#6 [phi:main::@11->main::@4#2] -- register_copy - // [21] phi (signed byte) main::r#2 = (signed byte) $1e [phi:main::@11->main::@4#3] -- vbsz1=vbsc1 - lda #$1e - sta.z r + // [21] phi (signed word) main::y#0 = (const signed word) main::origY [phi:main::@13->main::@4#2] -- vwsz1=vwsc1 + lda #origY + sta.z y+1 + // [21] phi (signed word) main::x#0 = (signed word) main::x#4 [phi:main::@13->main::@4#3] -- register_copy jmp __b4 - // [21] phi from main::@14 to main::@4 [phi:main::@14->main::@4] - __b4_from___b14: - // [21] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@14->main::@4#0] -- register_copy - // [21] phi (byte**) renderBobCleanupNext#17 = (byte**) renderBobCleanupNext#13 [phi:main::@14->main::@4#1] -- register_copy - // [21] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@14->main::@4#2] -- register_copy - // [21] phi (signed byte) main::r#2 = (signed byte) main::r#1 [phi:main::@14->main::@4#3] -- register_copy + // [21] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + __b4_from___b6: + // [21] phi (byte) main::col#5 = (byte) main::col#1 [phi:main::@6->main::@4#0] -- register_copy + // [21] phi (byte**) renderBobCleanupNext#21 = (byte**) renderBobCleanupNext#13 [phi:main::@6->main::@4#1] -- register_copy + // [21] phi (signed word) main::y#0 = (signed word) main::rowY#1 [phi:main::@6->main::@4#2] -- register_copy + // [21] phi (signed word) main::x#0 = (signed word) main::rowX#1 [phi:main::@6->main::@4#3] -- register_copy jmp __b4 // main::@4 __b4: - // [22] *((const byte*) BORDERCOL) ← (byte) 1 -- _deref_pbuc1=vbuc2 + // [22] (signed word) main::x#7 ← (signed word) main::x#0 -- vwsz1=vwsz2 + lda.z x + sta.z x_1 + lda.z x+1 + sta.z x_1+1 + // [23] (signed word) main::y#6 ← (signed word) main::y#0 -- vwsz1=vwsz2 + lda.z y + sta.z y_1 + lda.z y+1 + sta.z y_1+1 + // [24] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + __b5_from___b4: + // [24] phi (byte) main::row#2 = (byte) 0 [phi:main::@4->main::@5#0] -- vbuz1=vbuc1 + lda #0 + sta.z row + // [24] phi (byte**) renderBobCleanupNext#17 = (byte**) renderBobCleanupNext#21 [phi:main::@4->main::@5#1] -- register_copy + // [24] phi (signed word) main::y#2 = (signed word) main::y#6 [phi:main::@4->main::@5#2] -- register_copy + // [24] phi (signed word) main::x#2 = (signed word) main::x#7 [phi:main::@4->main::@5#3] -- register_copy + jmp __b5 + // [24] phi from main::@14 to main::@5 [phi:main::@14->main::@5] + __b5_from___b14: + // [24] phi (byte) main::row#2 = (byte) main::row#1 [phi:main::@14->main::@5#0] -- register_copy + // [24] phi (byte**) renderBobCleanupNext#17 = (byte**) renderBobCleanupNext#13 [phi:main::@14->main::@5#1] -- register_copy + // [24] phi (signed word) main::y#2 = (signed word) main::y#1 [phi:main::@14->main::@5#2] -- register_copy + // [24] phi (signed word) main::x#2 = (signed word) main::x#1 [phi:main::@14->main::@5#3] -- register_copy + jmp __b5 + // main::@5 + __b5: + // [25] *((const byte*) BORDERCOL) ← (byte) 1 -- _deref_pbuc1=vbuc2 //kickasm {{ .break }} lda #1 sta BORDERCOL - // [23] (signed byte) mulf8s::a#0 ← (signed byte) main::r#2 -- vbsz1=vbsz2 - lda.z r - sta.z mulf8s.a - // [24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2) -- vbsz1=pbsc1_derefidx_vbuz2 - ldy.z a - lda COS,y - sta.z mulf8s.b - // [25] call mulf8s - // [92] phi from main::@4 to mulf8s [phi:main::@4->mulf8s] - mulf8s_from___b4: - // [92] phi (signed byte) mulf8s::b#2 = (signed byte) mulf8s::b#0 [phi:main::@4->mulf8s#0] -- register_copy - // [92] phi (signed byte) mulf8s::mulf8s_prepare1_a#0 = (signed byte) mulf8s::a#0 [phi:main::@4->mulf8s#1] -- register_copy - jsr mulf8s - // [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 -- vwsz1=vwsz2 - lda.z mulf8s.return - sta.z mulf8s.return_1 - lda.z mulf8s.return+1 - sta.z mulf8s.return_1+1 - jmp __b12 - // main::@12 - __b12: - // [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 -- vwsz1=vwsz2 - lda.z mulf8s.return_1 - sta.z __10 - lda.z mulf8s.return_1+1 - sta.z __10+1 - // [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 -- vwsz1=vwsz2_plus_vwsc1 - lda.z __10 - clc - adc #<$4b*$100 - sta.z x - lda.z __10+1 - adc #>$4b*$100 - sta.z x+1 - // [29] (signed byte) mulf8s::a#1 ← (signed byte) main::r#2 -- vbsz1=vbsz2 - lda.z r - sta.z mulf8s.a - // [30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2) -- vbsz1=pbsc1_derefidx_vbuz2 - ldy.z a - lda SIN,y - sta.z mulf8s.b - // [31] call mulf8s - // [92] phi from main::@12 to mulf8s [phi:main::@12->mulf8s] - mulf8s_from___b12: - // [92] phi (signed byte) mulf8s::b#2 = (signed byte) mulf8s::b#1 [phi:main::@12->mulf8s#0] -- register_copy - // [92] phi (signed byte) mulf8s::mulf8s_prepare1_a#0 = (signed byte) mulf8s::a#1 [phi:main::@12->mulf8s#1] -- register_copy - jsr mulf8s - // [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 -- vwsz1=vwsz2 - lda.z mulf8s.return - sta.z mulf8s.return_2 - lda.z mulf8s.return+1 - sta.z mulf8s.return_2+1 - jmp __b13 - // main::@13 - __b13: - // [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 -- vwsz1=vwsz2 - lda.z mulf8s.return_2 - sta.z __12 - lda.z mulf8s.return_2+1 - sta.z __12+1 - // [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 -- vwsz1=vwsz2_rol_1 - lda.z __12 - asl - sta.z __13 - lda.z __12+1 - rol - sta.z __13+1 - // [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 -- vwsz1=vwsz2_plus_vwsc1 - lda.z __13 - clc - adc #<$5a*$100 - sta.z y - lda.z __13+1 - adc #>$5a*$100 - sta.z y+1 - // [36] *((const byte*) BORDERCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 - lda #2 - sta BORDERCOL - // [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 -- vbuz1=vbuz1_plus_vbuc1 - lax.z a - axs #-[$62] - stx.z a - // [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 -- vbsz1=vbsz1_plus_vbsc1 - lax.z r - axs #-[3] - stx.z r - // [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 -- vbuz1=_hi_vwsz2 - lda.z x+1 + // [26] (byte) renderBob::xpos#0 ← > (signed word) main::x#2 -- vbuz1=_hi_vwsz2 + lda.z x_1+1 sta.z renderBob.xpos - // [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 -- vbuz1=_hi_vwsz2 - lda.z y+1 + // [27] (byte) renderBob::ypos#0 ← > (signed word) main::y#2 -- vbuz1=_hi_vwsz2 + lda.z y_1+1 sta.z renderBob.ypos - // [41] call renderBob + // [28] call renderBob jsr renderBob jmp __b14 // main::@14 __b14: - // [42] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 - inc.z i - // [43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 - lda #NUM_BOBS-1+1 - cmp.z i - bne __b4_from___b14 - jmp __b5 - // main::@5 - __b5: - // [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 - lax.z angle - axs #-[3] - stx.z angle - // [45] *((const byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [29] (signed word) main::x#1 ← (signed word) main::x#2 + (const signed word) main::rowOffsetX -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z x_1 + adc #rowOffsetX + sta.z x_1+1 + // [30] (signed word) main::y#1 ← (signed word) main::y#2 + (signed word) main::rowOffsetY#10 -- vwsz1=vwsz1_plus_vwsz2 + lda.z y_1 + clc + adc.z rowOffsetY + sta.z y_1 + lda.z y_1+1 + adc.z rowOffsetY+1 + sta.z y_1+1 + // [31] *((const byte*) BORDERCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 + lda #2 + sta BORDERCOL + // [32] (byte) main::row#1 ← ++ (byte) main::row#2 -- vbuz1=_inc_vbuz1 + inc.z row + // [33] if((byte) main::row#1!=(byte) 5) goto main::@5 -- vbuz1_neq_vbuc1_then_la1 + lda #5 + cmp.z row + bne __b5_from___b14 + jmp __b6 + // main::@6 + __b6: + // [34] (signed word) main::rowX#1 ← (signed word) main::x#0 + (const signed word) main::colOffsetX -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z rowX + adc #colOffsetX + sta.z rowX+1 + // [35] (signed word) main::rowY#1 ← (signed word) main::y#0 + (const signed word) main::colOffsetY -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z rowY + adc #colOffsetY + sta.z rowY+1 + // [36] (byte) main::col#1 ← ++ (byte) main::col#5 -- vbuz1=_inc_vbuz1 + inc.z col + // [37] if((byte) main::col#1!=(byte) 5) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 + lda #5 + cmp.z col + bne __b4_from___b6 + jmp __b7 + // main::@7 + __b7: + // [38] (signed word) main::origX#1 ← (signed word) main::origX#8 + (signed word) $100 -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z origX + adc #<$100 + sta.z origX + lda.z origX+1 + adc #>$100 + sta.z origX+1 + // [39] (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#10 + (signed word) $80 -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z rowOffsetY + adc #<$80 + sta.z rowOffsetY + lda.z rowOffsetY+1 + adc #>$80 + sta.z rowOffsetY+1 + // [40] *((const byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - // [46] call keyboard_key_pressed - // [61] phi from main::@5 to keyboard_key_pressed [phi:main::@5->keyboard_key_pressed] - keyboard_key_pressed_from___b5: + // [41] call keyboard_key_pressed + // [56] phi from main::@7 to keyboard_key_pressed [phi:main::@7->keyboard_key_pressed] + keyboard_key_pressed_from___b7: jsr keyboard_key_pressed - // [47] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + // [42] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda.z keyboard_key_pressed.return sta.z keyboard_key_pressed.return_1 jmp __b15 // main::@15 __b15: - // [48] (byte~) main::$19 ← (byte) keyboard_key_pressed::return#2 -- vbuz1=vbuz2 + // [43] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 -- vbuz1=vbuz2 lda.z keyboard_key_pressed.return_1 - sta.z __19 - // [49] if((byte) 0!=(byte~) main::$19) goto main::@6 -- vbuc1_neq_vbuz1_then_la1 + sta.z __15 + // [44] if((byte) 0!=(byte~) main::$15) goto main::@8 -- vbuc1_neq_vbuz1_then_la1 lda #0 - cmp.z __19 - bne __b6_from___b15 + cmp.z __15 + bne __b8_from___b15 // [16] phi from main::@15 to main::@1 [phi:main::@15->main::@1] __b1_from___b15: - // [16] phi (byte) main::angle#8 = (byte) main::angle#1 [phi:main::@15->main::@1#0] -- register_copy + // [16] phi (signed word) main::rowOffsetY#10 = (signed word) main::rowOffsetY#1 [phi:main::@15->main::@1#0] -- register_copy + // [16] phi (signed word) main::origX#8 = (signed word) main::origX#1 [phi:main::@15->main::@1#1] -- register_copy jmp __b1 // Wait for space release - // [50] phi from main::@15 main::@16 to main::@6 [phi:main::@15/main::@16->main::@6] - __b6_from___b15: - __b6_from___b16: - jmp __b6 - // main::@6 - __b6: - // [51] call keyboard_key_pressed - // [61] phi from main::@6 to keyboard_key_pressed [phi:main::@6->keyboard_key_pressed] - keyboard_key_pressed_from___b6: + // [45] phi from main::@15 main::@16 to main::@8 [phi:main::@15/main::@16->main::@8] + __b8_from___b15: + __b8_from___b16: + jmp __b8 + // main::@8 + __b8: + // [46] call keyboard_key_pressed + // [56] phi from main::@8 to keyboard_key_pressed [phi:main::@8->keyboard_key_pressed] + keyboard_key_pressed_from___b8: jsr keyboard_key_pressed - // [52] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + // [47] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda.z keyboard_key_pressed.return sta.z keyboard_key_pressed.return_2 jmp __b16 // main::@16 __b16: - // [53] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#3 -- vbuz1=vbuz2 + // [48] (byte~) main::$17 ← (byte) keyboard_key_pressed::return#3 -- vbuz1=vbuz2 lda.z keyboard_key_pressed.return_2 - sta.z __21 - // [54] if((byte) 0!=(byte~) main::$21) goto main::@6 -- vbuc1_neq_vbuz1_then_la1 + sta.z __17 + // [49] if((byte) 0!=(byte~) main::$17) goto main::@8 -- vbuc1_neq_vbuz1_then_la1 lda #0 - cmp.z __21 - bne __b6_from___b16 + cmp.z __17 + bne __b8_from___b16 jmp vicSelectGfxBank2 // main::vicSelectGfxBank2 vicSelectGfxBank2: - // [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 -- _deref_pbuc1=vbuc2 + // [50] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - // [56] phi from main::vicSelectGfxBank2 to main::vicSelectGfxBank2_toDd001 [phi:main::vicSelectGfxBank2->main::vicSelectGfxBank2_toDd001] + // [51] phi from main::vicSelectGfxBank2 to main::vicSelectGfxBank2_toDd001 [phi:main::vicSelectGfxBank2->main::vicSelectGfxBank2_toDd001] vicSelectGfxBank2_toDd001_from_vicSelectGfxBank2: jmp vicSelectGfxBank2_toDd001 // main::vicSelectGfxBank2_toDd001 @@ -5425,24 +5065,24 @@ main: { jmp vicSelectGfxBank2___b1 // main::vicSelectGfxBank2_@1 vicSelectGfxBank2___b1: - // [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 -- _deref_pbuc1=vbuc2 + // [52] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank2_toDd001_return sta CIA2_PORT_A - // [58] phi from main::vicSelectGfxBank2_@1 to main::toD0182 [phi:main::vicSelectGfxBank2_@1->main::toD0182] + // [53] phi from main::vicSelectGfxBank2_@1 to main::toD0182 [phi:main::vicSelectGfxBank2_@1->main::toD0182] toD0182_from_vicSelectGfxBank2___b1: jmp toD0182 // main::toD0182 toD0182: - jmp __b8 - // main::@8 - __b8: - // [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 + jmp __b10 + // main::@10 + __b10: + // [54] *((const byte*) D018) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 lda #toD0182_return sta D018 jmp __breturn // main::@return __breturn: - // [60] return + // [55] return rts } // keyboard_key_pressed @@ -5453,29 +5093,29 @@ main: { keyboard_key_pressed: { .const colidx = KEY_SPACE&7 .label rowidx = KEY_SPACE>>3 - .label __2 = $4d - .label return = $4e - .label return_1 = $48 - .label return_2 = $4a - // [62] call keyboard_matrix_read + .label __2 = $45 + .label return = $46 + .label return_1 = $40 + .label return_2 = $42 + // [57] call keyboard_matrix_read jsr keyboard_matrix_read - // [63] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + // [58] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 lda.z keyboard_matrix_read.return sta.z keyboard_matrix_read.return_1 jmp __b1 // keyboard_key_pressed::@1 __b1: - // [64] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + // [59] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda.z keyboard_matrix_read.return_1 sta.z __2 - // [65] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0) -- vbuz1=vbuz2_band__deref_pbuc1 + // [60] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0) -- vbuz1=vbuz2_band__deref_pbuc1 lda keyboard_matrix_col_bitmask+colidx and.z __2 sta.z return jmp __breturn // keyboard_key_pressed::@return __breturn: - // [66] return + // [61] return rts } // keyboard_matrix_read @@ -5485,61 +5125,61 @@ keyboard_key_pressed: { // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - .label return = $4f - .label return_1 = $4c - // [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) -- _deref_pbuc1=_deref_pbuc2 + .label return = $47 + .label return_1 = $44 + // [62] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) -- _deref_pbuc1=_deref_pbuc2 lda keyboard_matrix_row_bitmask+keyboard_key_pressed.rowidx sta CIA1_PORT_A - // [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) -- vbuz1=_bnot__deref_pbuc1 + // [63] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) -- vbuz1=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff sta.z return jmp __breturn // keyboard_matrix_read::@return __breturn: - // [69] return + // [64] return rts } // renderBob // Render a single BOB at a given x/y-position // X-position is 0-151. Each x-position is 2 pixels wide. // Y-position is 0-183. Each y-position is 1 pixel high. -// renderBob(byte zeropage($46) xpos, byte zeropage($47) ypos) +// renderBob(byte zeropage($3e) xpos, byte zeropage($3f) ypos) renderBob: { - .label __2 = $55 - .label __4 = $59 - .label __5 = $5a - .label __6 = $5b - .label __8 = $52 - .label xpos = $46 - .label ypos = $47 - .label x_char_offset = $50 - .label y_char_offset = $51 - .label y_offset = $53 - .label screen = $57 - .label bob_table_idx = $5c - // [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 -- vbuz1=vbuz2_ror_2 + .label __2 = $4d + .label __4 = $51 + .label __5 = $52 + .label __6 = $53 + .label __8 = $4a + .label xpos = $3e + .label ypos = $3f + .label x_char_offset = $48 + .label y_char_offset = $49 + .label y_offset = $4b + .label screen = $4f + .label bob_table_idx = $54 + // [65] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 -- vbuz1=vbuz2_ror_2 lda.z xpos lsr lsr sta.z x_char_offset - // [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 -- vbuz1=vbuz2_ror_3 + // [66] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 -- vbuz1=vbuz2_ror_3 lda.z ypos lsr lsr lsr sta.z y_char_offset - // [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [67] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z y_char_offset asl sta.z __8 - // [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) -- vwuz1=pwuc1_derefidx_vbuz2 + // [68] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) -- vwuz1=pwuc1_derefidx_vbuz2 ldy.z __8 lda MUL40,y sta.z y_offset lda MUL40+1,y sta.z y_offset+1 - // [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 -- pbuz1=pbuc1_plus_vwuz2 + // [69] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 -- pbuz1=pbuc1_plus_vwuz2 lda.z y_offset clc adc #BOB_SCREEN sta.z __2+1 - // [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 -- pbuz1=pbuz2_plus_vbuz3 + // [70] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 -- pbuz1=pbuz2_plus_vbuz3 lda.z x_char_offset clc adc.z __2 @@ -5555,32 +5195,32 @@ renderBob: { lda #0 adc.z __2+1 sta.z screen+1 - // [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 + // [71] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and.z ypos sta.z __4 - // [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 -- vbuz1=vbuz2_rol_2 + // [72] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda.z __4 asl asl sta.z __5 - // [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 -- vbuz1=vbuz2_band_vbuc1 + // [73] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 -- vbuz1=vbuz2_band_vbuc1 lda #3 and.z xpos sta.z __6 - // [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 -- vbuz1=vbuz2_plus_vbuz3 + // [74] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 -- vbuz1=vbuz2_plus_vbuz3 lda.z __5 clc adc.z __6 sta.z bob_table_idx - // [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 -- _deref_pptz1=pbuz2 + // [75] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 -- _deref_pptz1=pbuz2 ldy #0 lda.z screen sta (renderBobCleanupNext),y iny lda.z screen+1 sta (renderBobCleanupNext),y - // [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER -- pptz1=pptz1_plus_vbuc1 + // [76] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER -- pptz1=pptz1_plus_vbuc1 lda #SIZEOF_POINTER clc adc.z renderBobCleanupNext @@ -5588,47 +5228,47 @@ renderBob: { bcc !+ inc.z renderBobCleanupNext+1 !: - // [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + // [77] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy.z bob_table_idx lda BOB_TABLES,y ldy #0 sta (screen),y - // [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + // [78] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 ldy.z bob_table_idx lda BOB_TABLES+1*BOB_SUBTABLE_SIZE,y ldy #$28 sta (screen),y - // [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + // [79] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 ldy.z bob_table_idx lda BOB_TABLES+2*BOB_SUBTABLE_SIZE,y ldy #$50 sta (screen),y - // [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + // [80] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 ldy.z bob_table_idx lda BOB_TABLES+3*BOB_SUBTABLE_SIZE,y ldy #1 sta (screen),y - // [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + // [81] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 ldy.z bob_table_idx lda BOB_TABLES+4*BOB_SUBTABLE_SIZE,y ldy #$29 sta (screen),y - // [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + // [82] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 ldy.z bob_table_idx lda BOB_TABLES+5*BOB_SUBTABLE_SIZE,y ldy #$51 sta (screen),y - // [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + // [83] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 ldy.z bob_table_idx lda BOB_TABLES+6*BOB_SUBTABLE_SIZE,y ldy #2 sta (screen),y - // [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + // [84] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 ldy.z bob_table_idx lda BOB_TABLES+7*BOB_SUBTABLE_SIZE,y ldy #$2a sta (screen),y - // [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + // [85] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 ldy.z bob_table_idx lda BOB_TABLES+8*BOB_SUBTABLE_SIZE,y ldy #$52 @@ -5636,268 +5276,83 @@ renderBob: { jmp __breturn // renderBob::@return __breturn: - // [91] return - rts -} - // mulf8s -// Fast multiply two signed bytes to a word result -// mulf8s(signed byte zeropage(8) a, signed byte zeropage(9) b) -mulf8s: { - .label mulf8s_prepare1_a = 8 - .label return = $5f - .label a = 8 - .label b = 9 - .label return_1 = $38 - .label return_2 = $3e - jmp mulf8s_prepare1 - // mulf8s::mulf8s_prepare1 - mulf8s_prepare1: - // [93] (byte) mulf8u_prepare::a#0 ← (byte)(signed byte) mulf8s::mulf8s_prepare1_a#0 -- vbuz1=vbuz2 - lda.z mulf8s_prepare1_a - sta.z mulf8u_prepare.a - // [94] call mulf8u_prepare - jsr mulf8u_prepare - jmp __b1 - // mulf8s::@1 - __b1: - // [95] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#2 -- vbsz1=vbsz2 - lda.z b - sta.z mulf8s_prepared.b - // [96] call mulf8s_prepared - jsr mulf8s_prepared - jmp __b2 - // mulf8s::@2 - __b2: - // [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 - lda.z mulf8s_prepared.m - sta.z return - lda.z mulf8s_prepared.m+1 - sta.z return+1 - jmp __breturn - // mulf8s::@return - __breturn: - // [98] return - rts -} - // mulf8s_prepared -// Calculate fast multiply with a prepared unsigned byte to a word result -// The prepared number is set by calling mulf8s_prepare(byte a) -// mulf8s_prepared(signed byte zeropage($5e) b) -mulf8s_prepared: { - .label memA = $fd - .label __8 = $64 - .label __12 = $66 - .label __15 = $65 - .label __16 = $67 - .label m = $a - .label b = $5e - // [99] (byte) mulf8u_prepared::b#0 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2 - lda.z b - sta.z mulf8u_prepared.b - // [100] call mulf8u_prepared - jsr mulf8u_prepared - // [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 - lda.z mulf8u_prepared.return - sta.z mulf8u_prepared.return_1 - lda.z mulf8u_prepared.return+1 - sta.z mulf8u_prepared.return_1+1 - jmp __b5 - // mulf8s_prepared::@5 - __b5: - // [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 - lda.z mulf8u_prepared.return_1 - sta.z m - lda.z mulf8u_prepared.return_1+1 - sta.z m+1 - // [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 - lda memA - cmp #0 - bpl __b1_from___b5 - jmp __b3 - // mulf8s_prepared::@3 - __b3: - // [104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 - lda.z m+1 - sta.z __8 - // [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2_minus_vbuz3 - lda.z __8 - sec - sbc.z b - sta.z __15 - // [106] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 - lda.z __15 - sta.z m+1 - // [107] phi from mulf8s_prepared::@3 mulf8s_prepared::@5 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1] - __b1_from___b3: - __b1_from___b5: - // [107] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1#0] -- register_copy - jmp __b1 - // mulf8s_prepared::@1 - __b1: - // [108] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 - lda.z b - cmp #0 - bpl __b2_from___b1 - jmp __b4 - // mulf8s_prepared::@4 - __b4: - // [109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 - lda.z m+1 - sta.z __12 - // [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) -- vbuz1=vbuz2_minus__deref_pbuc1 - lda.z __12 - sec - sbc memA - sta.z __16 - // [111] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 - lda.z __16 - sta.z m+1 - // [112] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] - __b2_from___b1: - __b2_from___b4: - // [112] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy - jmp __b2 - // mulf8s_prepared::@2 - __b2: - jmp __breturn - // mulf8s_prepared::@return - __breturn: - // [113] return - rts -} - // mulf8u_prepared -// Calculate fast multiply with a prepared unsigned byte to a word result -// The prepared number is set by calling mulf8u_prepare(byte a) -// mulf8u_prepared(byte zeropage($61) b) -mulf8u_prepared: { - .label resL = $fe - .label memB = $ff - .label return = $68 - .label b = $61 - .label return_1 = $62 - // [114] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#0 -- _deref_pbuc1=vbuz1 - lda.z b - sta memB - // asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - ldx memB - sec - sm1: - lda mulf_sqr1_lo,x - sm2: - sbc mulf_sqr2_lo,x - sta resL - sm3: - lda mulf_sqr1_hi,x - sm4: - sbc mulf_sqr2_hi,x - sta memB - // [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 - lda resL - sta.z return - lda memB - sta.z return+1 - jmp __breturn - // mulf8u_prepared::@return - __breturn: - // [117] return - rts -} - // mulf8u_prepare -// Prepare for fast multiply with an unsigned byte to a word result -// mulf8u_prepare(byte zeropage($5d) a) -mulf8u_prepare: { - .label memA = $fd - .label a = $5d - // [118] *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#0 -- _deref_pbuc1=vbuz1 - lda.z a - sta memA - // asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } - lda memA - sta mulf8u_prepared.sm1+1 - sta mulf8u_prepared.sm3+1 - eor #$ff - sta mulf8u_prepared.sm2+1 - sta mulf8u_prepared.sm4+1 - jmp __breturn - // mulf8u_prepare::@return - __breturn: - // [120] return + // [86] return rts } // renderBobCleanup // Clean Up the rendered BOB's renderBobCleanup: { - .label __1 = $6a - .label screen = $6b - .label i = $c - // [122] phi from renderBobCleanup to renderBobCleanup::@1 [phi:renderBobCleanup->renderBobCleanup::@1] + .label __1 = $55 + .label screen = $56 + .label i = $12 + // [88] phi from renderBobCleanup to renderBobCleanup::@1 [phi:renderBobCleanup->renderBobCleanup::@1] __b1_from_renderBobCleanup: - // [122] phi (byte) renderBobCleanup::i#2 = (byte) 0 [phi:renderBobCleanup->renderBobCleanup::@1#0] -- vbuz1=vbuc1 + // [88] phi (byte) renderBobCleanup::i#2 = (byte) 0 [phi:renderBobCleanup->renderBobCleanup::@1#0] -- vbuz1=vbuc1 lda #0 sta.z i jmp __b1 - // [122] phi from renderBobCleanup::@1 to renderBobCleanup::@1 [phi:renderBobCleanup::@1->renderBobCleanup::@1] + // [88] phi from renderBobCleanup::@1 to renderBobCleanup::@1 [phi:renderBobCleanup::@1->renderBobCleanup::@1] __b1_from___b1: - // [122] phi (byte) renderBobCleanup::i#2 = (byte) renderBobCleanup::i#1 [phi:renderBobCleanup::@1->renderBobCleanup::@1#0] -- register_copy + // [88] phi (byte) renderBobCleanup::i#2 = (byte) renderBobCleanup::i#1 [phi:renderBobCleanup::@1->renderBobCleanup::@1#0] -- register_copy jmp __b1 // renderBobCleanup::@1 __b1: - // [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [89] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl sta.z __1 - // [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) -- pbuz1=pptc1_derefidx_vbuz2 + // [90] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) -- pbuz1=pptc1_derefidx_vbuz2 ldy.z __1 lda RENDERBOB_CLEANUP,y sta.z screen lda RENDERBOB_CLEANUP+1,y sta.z screen+1 - // [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 -- _deref_pbuz1=vbuc1 + // [91] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (screen),y - // [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [92] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #$28 sta (screen),y - // [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [93] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #$50 sta (screen),y - // [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [94] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #1 sta (screen),y - // [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [95] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #$29 sta (screen),y - // [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [96] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #$51 sta (screen),y - // [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [97] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #2 sta (screen),y - // [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [98] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #$2a sta (screen),y - // [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [99] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #$52 sta (screen),y - // [134] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2 -- vbuz1=_inc_vbuz1 + // [100] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [135] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1 -- vbuz1_neq_vbuc1_then_la1 + // [101] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_BOBS-1+1 cmp.z i bne __b1_from___b1 jmp __breturn // renderBobCleanup::@return __breturn: - // [136] return + // [102] return rts } // memset @@ -5907,10 +5362,10 @@ memset: { .const c = 0 .const num = $3e8 .label end = str+num - .label dst = $d - // [138] phi from memset to memset::@1 [phi:memset->memset::@1] + .label dst = $13 + // [104] phi from memset to memset::@1 [phi:memset->memset::@1] __b1_from_memset: - // [138] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 + // [104] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 lda #str @@ -5918,7 +5373,7 @@ memset: { jmp __b1 // memset::@1 __b1: - // [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 + // [105] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z dst+1 cmp #>end bne __b2 @@ -5928,53 +5383,53 @@ memset: { jmp __breturn // memset::@return __breturn: - // [140] return + // [106] return rts // memset::@2 __b2: - // [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 + // [107] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 lda #c ldy #0 sta (dst),y - // [142] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [108] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 !: - // [138] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1] + // [104] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1] __b1_from___b2: - // [138] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy + // [104] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy jmp __b1 } // renderBobInit // Initialize the tables used by renderBob() renderBobInit: { - .label __0 = $6d - .label __1 = $73 - .label __4 = $75 - .label __5 = $76 - .label y = $f - .label i = $10 - .label __6 = $6f - .label __7 = $71 - // [144] phi from renderBobInit to renderBobInit::@1 [phi:renderBobInit->renderBobInit::@1] + .label __0 = $58 + .label __1 = $5e + .label __4 = $60 + .label __5 = $61 + .label y = $15 + .label i = $16 + .label __6 = $5a + .label __7 = $5c + // [110] phi from renderBobInit to renderBobInit::@1 [phi:renderBobInit->renderBobInit::@1] __b1_from_renderBobInit: - // [144] phi (byte) renderBobInit::y#2 = (byte) 0 [phi:renderBobInit->renderBobInit::@1#0] -- vbuz1=vbuc1 + // [110] phi (byte) renderBobInit::y#2 = (byte) 0 [phi:renderBobInit->renderBobInit::@1#0] -- vbuz1=vbuc1 lda #0 sta.z y jmp __b1 - // [144] phi from renderBobInit::@1 to renderBobInit::@1 [phi:renderBobInit::@1->renderBobInit::@1] + // [110] phi from renderBobInit::@1 to renderBobInit::@1 [phi:renderBobInit::@1->renderBobInit::@1] __b1_from___b1: - // [144] phi (byte) renderBobInit::y#2 = (byte) renderBobInit::y#1 [phi:renderBobInit::@1->renderBobInit::@1#0] -- register_copy + // [110] phi (byte) renderBobInit::y#2 = (byte) renderBobInit::y#1 [phi:renderBobInit::@1->renderBobInit::@1#0] -- register_copy jmp __b1 // renderBobInit::@1 __b1: - // [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 -- vwuz1=_word_vbuz2 + // [111] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 -- vwuz1=_word_vbuz2 lda.z y sta.z __0 lda #0 sta.z __0+1 - // [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + // [112] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda.z __0 asl sta.z __6 @@ -5983,7 +5438,7 @@ renderBobInit: { sta.z __6+1 asl.z __6 rol.z __6+1 - // [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 -- vwuz1=vwuz2_plus_vwuz3 + // [113] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 -- vwuz1=vwuz2_plus_vwuz3 lda.z __6 clc adc.z __0 @@ -5991,7 +5446,7 @@ renderBobInit: { lda.z __6+1 adc.z __0+1 sta.z __7+1 - // [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 -- vwuz1=vwuz2_rol_3 + // [114] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda.z __7 asl sta.z __1 @@ -6002,159 +5457,159 @@ renderBobInit: { rol.z __1+1 asl.z __1 rol.z __1+1 - // [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [115] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z y asl sta.z __4 - // [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 -- pwuc1_derefidx_vbuz1=vwuz2 + // [116] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 -- pwuc1_derefidx_vbuz1=vwuz2 ldy.z __4 lda.z __1 sta MUL40,y lda.z __1+1 sta MUL40+1,y - // [151] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2 -- vbuz1=_inc_vbuz1 + // [117] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2 -- vbuz1=_inc_vbuz1 inc.z y - // [152] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1 -- vbuz1_neq_vbuc1_then_la1 + // [118] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$20 cmp.z y bne __b1_from___b1 - // [153] phi from renderBobInit::@1 to renderBobInit::@2 [phi:renderBobInit::@1->renderBobInit::@2] + // [119] phi from renderBobInit::@1 to renderBobInit::@2 [phi:renderBobInit::@1->renderBobInit::@2] __b2_from___b1: - // [153] phi (byte) renderBobInit::i#2 = (byte) 0 [phi:renderBobInit::@1->renderBobInit::@2#0] -- vbuz1=vbuc1 + // [119] phi (byte) renderBobInit::i#2 = (byte) 0 [phi:renderBobInit::@1->renderBobInit::@2#0] -- vbuz1=vbuc1 lda #0 sta.z i jmp __b2 - // [153] phi from renderBobInit::@2 to renderBobInit::@2 [phi:renderBobInit::@2->renderBobInit::@2] + // [119] phi from renderBobInit::@2 to renderBobInit::@2 [phi:renderBobInit::@2->renderBobInit::@2] __b2_from___b2: - // [153] phi (byte) renderBobInit::i#2 = (byte) renderBobInit::i#1 [phi:renderBobInit::@2->renderBobInit::@2#0] -- register_copy + // [119] phi (byte) renderBobInit::i#2 = (byte) renderBobInit::i#1 [phi:renderBobInit::@2->renderBobInit::@2#0] -- register_copy jmp __b2 // renderBobInit::@2 __b2: - // [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [120] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl sta.z __5 - // [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN -- pptc1_derefidx_vbuz1=pbuc2 + // [121] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN -- pptc1_derefidx_vbuz1=pbuc2 ldy.z __5 lda #BOB_SCREEN sta RENDERBOB_CLEANUP+1,y - // [156] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2 -- vbuz1=_inc_vbuz1 + // [122] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [157] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2 -- vbuz1_neq_vbuc1_then_la1 + // [123] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_BOBS-1+1 cmp.z i bne __b2_from___b2 jmp __breturn // renderBobInit::@return __breturn: - // [158] return + // [124] return rts } // prepareBobs // Creates the pre-shifted bobs into BOB_CHARSET and populates the BOB_TABLES // Modifies PROTO_BOB by shifting it around prepareBobs: { - .label __6 = $78 - .label bob_table = $1a - .label shift_y = $11 + .label __6 = $63 + .label bob_table = $20 + .label shift_y = $17 // Populate charset and tables - .label bob_glyph = $18 - .label cell = $17 - .label bob_table_idx = $15 - .label shift_x = $16 - // [160] call progress_init - // [241] phi from prepareBobs to progress_init [phi:prepareBobs->progress_init] + .label bob_glyph = $1e + .label cell = $1d + .label bob_table_idx = $1b + .label shift_x = $1c + // [126] call progress_init + // [207] phi from prepareBobs to progress_init [phi:prepareBobs->progress_init] progress_init_from_prepareBobs: jsr progress_init - // [161] phi from prepareBobs to prepareBobs::@8 [phi:prepareBobs->prepareBobs::@8] + // [127] phi from prepareBobs to prepareBobs::@8 [phi:prepareBobs->prepareBobs::@8] __b8_from_prepareBobs: jmp __b8 // prepareBobs::@8 __b8: - // [162] call charsetFindOrAddGlyph - // [195] phi from prepareBobs::@8 to charsetFindOrAddGlyph [phi:prepareBobs::@8->charsetFindOrAddGlyph] + // [128] call charsetFindOrAddGlyph + // [161] phi from prepareBobs::@8 to charsetFindOrAddGlyph [phi:prepareBobs::@8->charsetFindOrAddGlyph] charsetFindOrAddGlyph_from___b8: - // [195] phi (byte*) charsetFindOrAddGlyph::glyph#10 = (const byte*) PROTO_BOB+(byte) $30 [phi:prepareBobs::@8->charsetFindOrAddGlyph#0] -- pbuz1=pbuc1 + // [161] phi (byte*) charsetFindOrAddGlyph::glyph#10 = (const byte*) PROTO_BOB+(byte) $30 [phi:prepareBobs::@8->charsetFindOrAddGlyph#0] -- pbuz1=pbuc1 lda #PROTO_BOB+$30 sta.z charsetFindOrAddGlyph.glyph+1 - // [195] phi (byte) bob_charset_next_id#23 = (byte) 0 [phi:prepareBobs::@8->charsetFindOrAddGlyph#1] -- vbuz1=vbuc1 + // [161] phi (byte) bob_charset_next_id#23 = (byte) 0 [phi:prepareBobs::@8->charsetFindOrAddGlyph#1] -- vbuz1=vbuc1 lda #0 sta.z bob_charset_next_id jsr charsetFindOrAddGlyph - // [163] phi from prepareBobs::@8 to prepareBobs::@1 [phi:prepareBobs::@8->prepareBobs::@1] + // [129] phi from prepareBobs::@8 to prepareBobs::@1 [phi:prepareBobs::@8->prepareBobs::@1] __b1_from___b8: - // [163] phi (byte) prepareBobs::bob_table_idx#6 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#0] -- vbuz1=vbuc1 + // [129] phi (byte) prepareBobs::bob_table_idx#6 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#0] -- vbuz1=vbuc1 lda #0 sta.z bob_table_idx - // [163] phi (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#16 [phi:prepareBobs::@8->prepareBobs::@1#1] -- register_copy - // [163] phi (byte) progress_idx#16 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#2] -- vbuz1=vbuc1 + // [129] phi (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#16 [phi:prepareBobs::@8->prepareBobs::@1#1] -- register_copy + // [129] phi (byte) progress_idx#16 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#2] -- vbuz1=vbuc1 lda #0 sta.z progress_idx - // [163] phi (byte*) progress_cursor#15 = (const byte*) SCREEN_BASIC [phi:prepareBobs::@8->prepareBobs::@1#3] -- pbuz1=pbuc1 - lda #prepareBobs::@1#3] -- pbuz1=pbuc1 + lda #SCREEN_BASIC + lda #>BASIC_SCREEN sta.z progress_cursor+1 - // [163] phi (byte) prepareBobs::shift_y#2 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#4] -- vbuz1=vbuc1 + // [129] phi (byte) prepareBobs::shift_y#2 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#4] -- vbuz1=vbuc1 lda #0 sta.z shift_y jmp __b1 // prepareBobs::@1 __b1: - // [164] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2 -- vbuz1_lt_vbuc1_then_la1 + // [130] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2 -- vbuz1_lt_vbuc1_then_la1 lda.z shift_y cmp #BOB_SHIFTS_Y bcc __b2_from___b1 jmp __breturn // prepareBobs::@return __breturn: - // [165] return + // [131] return rts - // [166] phi from prepareBobs::@1 to prepareBobs::@2 [phi:prepareBobs::@1->prepareBobs::@2] + // [132] phi from prepareBobs::@1 to prepareBobs::@2 [phi:prepareBobs::@1->prepareBobs::@2] __b2_from___b1: - // [166] phi (byte) progress_idx#31 = (byte) progress_idx#16 [phi:prepareBobs::@1->prepareBobs::@2#0] -- register_copy - // [166] phi (byte*) progress_cursor#31 = (byte*) progress_cursor#15 [phi:prepareBobs::@1->prepareBobs::@2#1] -- register_copy - // [166] phi (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#14 [phi:prepareBobs::@1->prepareBobs::@2#2] -- register_copy - // [166] phi (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#6 [phi:prepareBobs::@1->prepareBobs::@2#3] -- register_copy - // [166] phi (byte) prepareBobs::shift_x#2 = (byte) 0 [phi:prepareBobs::@1->prepareBobs::@2#4] -- vbuz1=vbuc1 + // [132] phi (byte) progress_idx#31 = (byte) progress_idx#16 [phi:prepareBobs::@1->prepareBobs::@2#0] -- register_copy + // [132] phi (byte*) progress_cursor#31 = (byte*) progress_cursor#15 [phi:prepareBobs::@1->prepareBobs::@2#1] -- register_copy + // [132] phi (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#14 [phi:prepareBobs::@1->prepareBobs::@2#2] -- register_copy + // [132] phi (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#6 [phi:prepareBobs::@1->prepareBobs::@2#3] -- register_copy + // [132] phi (byte) prepareBobs::shift_x#2 = (byte) 0 [phi:prepareBobs::@1->prepareBobs::@2#4] -- vbuz1=vbuc1 lda #0 sta.z shift_x jmp __b2 // prepareBobs::@2 __b2: - // [167] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@3 -- vbuz1_lt_vbuc1_then_la1 + // [133] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@3 -- vbuz1_lt_vbuc1_then_la1 lda.z shift_x cmp #BOB_SHIFTS_X bcc __b3 - // [168] phi from prepareBobs::@2 to prepareBobs::@4 [phi:prepareBobs::@2->prepareBobs::@4] + // [134] phi from prepareBobs::@2 to prepareBobs::@4 [phi:prepareBobs::@2->prepareBobs::@4] __b4_from___b2: jmp __b4 // prepareBobs::@4 __b4: - // [169] call protoBobShiftDown - // [230] phi from prepareBobs::@4 to protoBobShiftDown [phi:prepareBobs::@4->protoBobShiftDown] + // [135] call protoBobShiftDown + // [196] phi from prepareBobs::@4 to protoBobShiftDown [phi:prepareBobs::@4->protoBobShiftDown] protoBobShiftDown_from___b4: jsr protoBobShiftDown jmp __b9 // prepareBobs::@9 __b9: - // [170] (byte) prepareBobs::shift_y#1 ← ++ (byte) prepareBobs::shift_y#2 -- vbuz1=_inc_vbuz1 + // [136] (byte) prepareBobs::shift_y#1 ← ++ (byte) prepareBobs::shift_y#2 -- vbuz1=_inc_vbuz1 inc.z shift_y - // [163] phi from prepareBobs::@9 to prepareBobs::@1 [phi:prepareBobs::@9->prepareBobs::@1] + // [129] phi from prepareBobs::@9 to prepareBobs::@1 [phi:prepareBobs::@9->prepareBobs::@1] __b1_from___b9: - // [163] phi (byte) prepareBobs::bob_table_idx#6 = (byte) prepareBobs::bob_table_idx#12 [phi:prepareBobs::@9->prepareBobs::@1#0] -- register_copy - // [163] phi (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#30 [phi:prepareBobs::@9->prepareBobs::@1#1] -- register_copy - // [163] phi (byte) progress_idx#16 = (byte) progress_idx#31 [phi:prepareBobs::@9->prepareBobs::@1#2] -- register_copy - // [163] phi (byte*) progress_cursor#15 = (byte*) progress_cursor#31 [phi:prepareBobs::@9->prepareBobs::@1#3] -- register_copy - // [163] phi (byte) prepareBobs::shift_y#2 = (byte) prepareBobs::shift_y#1 [phi:prepareBobs::@9->prepareBobs::@1#4] -- register_copy + // [129] phi (byte) prepareBobs::bob_table_idx#6 = (byte) prepareBobs::bob_table_idx#12 [phi:prepareBobs::@9->prepareBobs::@1#0] -- register_copy + // [129] phi (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#30 [phi:prepareBobs::@9->prepareBobs::@1#1] -- register_copy + // [129] phi (byte) progress_idx#16 = (byte) progress_idx#31 [phi:prepareBobs::@9->prepareBobs::@1#2] -- register_copy + // [129] phi (byte*) progress_cursor#15 = (byte*) progress_cursor#31 [phi:prepareBobs::@9->prepareBobs::@1#3] -- register_copy + // [129] phi (byte) prepareBobs::shift_y#2 = (byte) prepareBobs::shift_y#1 [phi:prepareBobs::@9->prepareBobs::@1#4] -- register_copy jmp __b1 // prepareBobs::@3 __b3: - // [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 -- pbuz1=pbuc1_plus_vbuz2 + // [137] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 -- pbuz1=pbuc1_plus_vbuz2 lda.z bob_table_idx clc adc #BOB_TABLES adc #0 sta.z bob_table+1 - // [172] phi from prepareBobs::@3 to prepareBobs::@5 [phi:prepareBobs::@3->prepareBobs::@5] + // [138] phi from prepareBobs::@3 to prepareBobs::@5 [phi:prepareBobs::@3->prepareBobs::@5] __b5_from___b3: - // [172] phi (byte*) progress_cursor#24 = (byte*) progress_cursor#31 [phi:prepareBobs::@3->prepareBobs::@5#0] -- register_copy - // [172] phi (byte) progress_idx#25 = (byte) progress_idx#31 [phi:prepareBobs::@3->prepareBobs::@5#1] -- register_copy - // [172] phi (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#0 [phi:prepareBobs::@3->prepareBobs::@5#2] -- register_copy - // [172] phi (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#30 [phi:prepareBobs::@3->prepareBobs::@5#3] -- register_copy - // [172] phi (byte*) prepareBobs::bob_glyph#2 = (const byte*) PROTO_BOB [phi:prepareBobs::@3->prepareBobs::@5#4] -- pbuz1=pbuc1 + // [138] phi (byte*) progress_cursor#24 = (byte*) progress_cursor#31 [phi:prepareBobs::@3->prepareBobs::@5#0] -- register_copy + // [138] phi (byte) progress_idx#25 = (byte) progress_idx#31 [phi:prepareBobs::@3->prepareBobs::@5#1] -- register_copy + // [138] phi (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#0 [phi:prepareBobs::@3->prepareBobs::@5#2] -- register_copy + // [138] phi (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#30 [phi:prepareBobs::@3->prepareBobs::@5#3] -- register_copy + // [138] phi (byte*) prepareBobs::bob_glyph#2 = (const byte*) PROTO_BOB [phi:prepareBobs::@3->prepareBobs::@5#4] -- pbuz1=pbuc1 lda #PROTO_BOB sta.z bob_glyph+1 - // [172] phi (byte) prepareBobs::cell#2 = (byte) 0 [phi:prepareBobs::@3->prepareBobs::@5#5] -- vbuz1=vbuc1 + // [138] phi (byte) prepareBobs::cell#2 = (byte) 0 [phi:prepareBobs::@3->prepareBobs::@5#5] -- vbuz1=vbuc1 lda #0 sta.z cell jmp __b5 // prepareBobs::@5 __b5: - // [173] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6 -- vbuz1_lt_vbuc1_then_la1 + // [139] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6 -- vbuz1_lt_vbuc1_then_la1 lda.z cell cmp #9 bcc __b6 jmp __b7 // prepareBobs::@7 __b7: - // [174] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12 -- vbuz1=_inc_vbuz1 + // [140] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12 -- vbuz1=_inc_vbuz1 inc.z bob_table_idx - // [175] call protoBobShiftRight - // [213] phi from prepareBobs::@7 to protoBobShiftRight [phi:prepareBobs::@7->protoBobShiftRight] + // [141] call protoBobShiftRight + // [179] phi from prepareBobs::@7 to protoBobShiftRight [phi:prepareBobs::@7->protoBobShiftRight] protoBobShiftRight_from___b7: jsr protoBobShiftRight - // [176] phi from prepareBobs::@7 to prepareBobs::@12 [phi:prepareBobs::@7->prepareBobs::@12] + // [142] phi from prepareBobs::@7 to prepareBobs::@12 [phi:prepareBobs::@7->prepareBobs::@12] __b12_from___b7: jmp __b12 // prepareBobs::@12 __b12: - // [177] call protoBobShiftRight - // [213] phi from prepareBobs::@12 to protoBobShiftRight [phi:prepareBobs::@12->protoBobShiftRight] + // [143] call protoBobShiftRight + // [179] phi from prepareBobs::@12 to protoBobShiftRight [phi:prepareBobs::@12->protoBobShiftRight] protoBobShiftRight_from___b12: jsr protoBobShiftRight jmp __b13 // prepareBobs::@13 __b13: - // [178] (byte) prepareBobs::shift_x#1 ← ++ (byte) prepareBobs::shift_x#2 -- vbuz1=_inc_vbuz1 + // [144] (byte) prepareBobs::shift_x#1 ← ++ (byte) prepareBobs::shift_x#2 -- vbuz1=_inc_vbuz1 inc.z shift_x - // [166] phi from prepareBobs::@13 to prepareBobs::@2 [phi:prepareBobs::@13->prepareBobs::@2] + // [132] phi from prepareBobs::@13 to prepareBobs::@2 [phi:prepareBobs::@13->prepareBobs::@2] __b2_from___b13: - // [166] phi (byte) progress_idx#31 = (byte) progress_idx#25 [phi:prepareBobs::@13->prepareBobs::@2#0] -- register_copy - // [166] phi (byte*) progress_cursor#31 = (byte*) progress_cursor#24 [phi:prepareBobs::@13->prepareBobs::@2#1] -- register_copy - // [166] phi (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#21 [phi:prepareBobs::@13->prepareBobs::@2#2] -- register_copy - // [166] phi (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#1 [phi:prepareBobs::@13->prepareBobs::@2#3] -- register_copy - // [166] phi (byte) prepareBobs::shift_x#2 = (byte) prepareBobs::shift_x#1 [phi:prepareBobs::@13->prepareBobs::@2#4] -- register_copy + // [132] phi (byte) progress_idx#31 = (byte) progress_idx#25 [phi:prepareBobs::@13->prepareBobs::@2#0] -- register_copy + // [132] phi (byte*) progress_cursor#31 = (byte*) progress_cursor#24 [phi:prepareBobs::@13->prepareBobs::@2#1] -- register_copy + // [132] phi (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#21 [phi:prepareBobs::@13->prepareBobs::@2#2] -- register_copy + // [132] phi (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#1 [phi:prepareBobs::@13->prepareBobs::@2#3] -- register_copy + // [132] phi (byte) prepareBobs::shift_x#2 = (byte) prepareBobs::shift_x#1 [phi:prepareBobs::@13->prepareBobs::@2#4] -- register_copy jmp __b2 // prepareBobs::@6 __b6: - // [179] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 -- pbuz1=pbuz2 + // [145] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 -- pbuz1=pbuz2 lda.z bob_glyph sta.z charsetFindOrAddGlyph.glyph lda.z bob_glyph+1 sta.z charsetFindOrAddGlyph.glyph+1 - // [180] call charsetFindOrAddGlyph - // [195] phi from prepareBobs::@6 to charsetFindOrAddGlyph [phi:prepareBobs::@6->charsetFindOrAddGlyph] + // [146] call charsetFindOrAddGlyph + // [161] phi from prepareBobs::@6 to charsetFindOrAddGlyph [phi:prepareBobs::@6->charsetFindOrAddGlyph] charsetFindOrAddGlyph_from___b6: - // [195] phi (byte*) charsetFindOrAddGlyph::glyph#10 = (byte*) charsetFindOrAddGlyph::glyph#1 [phi:prepareBobs::@6->charsetFindOrAddGlyph#0] -- register_copy - // [195] phi (byte) bob_charset_next_id#23 = (byte) bob_charset_next_id#21 [phi:prepareBobs::@6->charsetFindOrAddGlyph#1] -- register_copy + // [161] phi (byte*) charsetFindOrAddGlyph::glyph#10 = (byte*) charsetFindOrAddGlyph::glyph#1 [phi:prepareBobs::@6->charsetFindOrAddGlyph#0] -- register_copy + // [161] phi (byte) bob_charset_next_id#23 = (byte) bob_charset_next_id#21 [phi:prepareBobs::@6->charsetFindOrAddGlyph#1] -- register_copy jsr charsetFindOrAddGlyph - // [181] (byte) charsetFindOrAddGlyph::return#1 ← (byte) charsetFindOrAddGlyph::glyph_id#11 -- vbuz1=vbuz2 + // [147] (byte) charsetFindOrAddGlyph::return#1 ← (byte) charsetFindOrAddGlyph::glyph_id#11 -- vbuz1=vbuz2 lda.z charsetFindOrAddGlyph.glyph_id sta.z charsetFindOrAddGlyph.return jmp __b10 // prepareBobs::@10 __b10: - // [182] (byte~) prepareBobs::$6 ← (byte) charsetFindOrAddGlyph::return#1 -- vbuz1=vbuz2 + // [148] (byte~) prepareBobs::$6 ← (byte) charsetFindOrAddGlyph::return#1 -- vbuz1=vbuz2 lda.z charsetFindOrAddGlyph.return sta.z __6 - // [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 -- _deref_pbuz1=vbuz2 + // [149] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 -- _deref_pbuz1=vbuz2 // Look for an existing char in BOB_CHARSET lda.z __6 ldy #0 sta (bob_table),y - // [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 -- pbuz1=pbuz1_plus_vbuc1 + // [150] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 -- pbuz1=pbuz1_plus_vbuc1 // Move to the next glyph lda #8 clc @@ -6250,7 +5705,7 @@ prepareBobs: { bcc !+ inc.z bob_glyph+1 !: - // [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y -- pbuz1=pbuz1_plus_vbuc1 + // [151] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y -- pbuz1=pbuz1_plus_vbuc1 // Move to the next sub-table lda #BOB_SHIFTS_X*BOB_SHIFTS_Y clc @@ -6259,60 +5714,60 @@ prepareBobs: { bcc !+ inc.z bob_table+1 !: - // [186] call progress_inc + // [152] call progress_inc jsr progress_inc jmp __b11 // prepareBobs::@11 __b11: - // [187] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2 -- vbuz1=_inc_vbuz1 + // [153] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2 -- vbuz1=_inc_vbuz1 inc.z cell - // [172] phi from prepareBobs::@11 to prepareBobs::@5 [phi:prepareBobs::@11->prepareBobs::@5] + // [138] phi from prepareBobs::@11 to prepareBobs::@5 [phi:prepareBobs::@11->prepareBobs::@5] __b5_from___b11: - // [172] phi (byte*) progress_cursor#24 = (byte*) progress_cursor#17 [phi:prepareBobs::@11->prepareBobs::@5#0] -- register_copy - // [172] phi (byte) progress_idx#25 = (byte) progress_idx#10 [phi:prepareBobs::@11->prepareBobs::@5#1] -- register_copy - // [172] phi (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#1 [phi:prepareBobs::@11->prepareBobs::@5#2] -- register_copy - // [172] phi (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#16 [phi:prepareBobs::@11->prepareBobs::@5#3] -- register_copy - // [172] phi (byte*) prepareBobs::bob_glyph#2 = (byte*) prepareBobs::bob_glyph#1 [phi:prepareBobs::@11->prepareBobs::@5#4] -- register_copy - // [172] phi (byte) prepareBobs::cell#2 = (byte) prepareBobs::cell#1 [phi:prepareBobs::@11->prepareBobs::@5#5] -- register_copy + // [138] phi (byte*) progress_cursor#24 = (byte*) progress_cursor#17 [phi:prepareBobs::@11->prepareBobs::@5#0] -- register_copy + // [138] phi (byte) progress_idx#25 = (byte) progress_idx#10 [phi:prepareBobs::@11->prepareBobs::@5#1] -- register_copy + // [138] phi (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#1 [phi:prepareBobs::@11->prepareBobs::@5#2] -- register_copy + // [138] phi (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#16 [phi:prepareBobs::@11->prepareBobs::@5#3] -- register_copy + // [138] phi (byte*) prepareBobs::bob_glyph#2 = (byte*) prepareBobs::bob_glyph#1 [phi:prepareBobs::@11->prepareBobs::@5#4] -- register_copy + // [138] phi (byte) prepareBobs::cell#2 = (byte) prepareBobs::cell#1 [phi:prepareBobs::@11->prepareBobs::@5#5] -- register_copy jmp __b5 } // progress_inc // Increase PETSCII progress one bit // Done by increasing the character until the idx is 8 and then moving to the next char progress_inc: { - // [188] (byte) progress_idx#8 ← ++ (byte) progress_idx#25 -- vbuz1=_inc_vbuz1 + // [154] (byte) progress_idx#8 ← ++ (byte) progress_idx#25 -- vbuz1=_inc_vbuz1 inc.z progress_idx - // [189] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 + // [155] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp.z progress_idx bne __b1_from_progress_inc jmp __b2 // progress_inc::@2 __b2: - // [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) -- _deref_pbuz1=_deref_pbuc1 + // [156] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) -- _deref_pbuz1=_deref_pbuc1 lda progress_chars+8 ldy #0 sta (progress_cursor),y - // [191] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24 -- pbuz1=_inc_pbuz1 + // [157] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24 -- pbuz1=_inc_pbuz1 inc.z progress_cursor bne !+ inc.z progress_cursor+1 !: - // [192] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] + // [158] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] __b1_from___b2: - // [192] phi (byte*) progress_cursor#17 = (byte*) progress_cursor#8 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy - // [192] phi (byte) progress_idx#10 = (byte) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 + // [158] phi (byte*) progress_cursor#17 = (byte*) progress_cursor#8 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy + // [158] phi (byte) progress_idx#10 = (byte) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 lda #0 sta.z progress_idx jmp __b1 - // [192] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] + // [158] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] __b1_from_progress_inc: - // [192] phi (byte*) progress_cursor#17 = (byte*) progress_cursor#24 [phi:progress_inc->progress_inc::@1#0] -- register_copy - // [192] phi (byte) progress_idx#10 = (byte) progress_idx#8 [phi:progress_inc->progress_inc::@1#1] -- register_copy + // [158] phi (byte*) progress_cursor#17 = (byte*) progress_cursor#24 [phi:progress_inc->progress_inc::@1#0] -- register_copy + // [158] phi (byte) progress_idx#10 = (byte) progress_idx#8 [phi:progress_inc->progress_inc::@1#1] -- register_copy jmp __b1 // progress_inc::@1 __b1: - // [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + // [159] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy.z progress_idx lda progress_chars,y ldy #0 @@ -6320,7 +5775,7 @@ progress_inc: { jmp __breturn // progress_inc::@return __breturn: - // [194] return + // [160] return rts // Progress characters progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0 @@ -6328,114 +5783,114 @@ progress_inc: { // charsetFindOrAddGlyph // Looks through a charset to find a glyph if present. If not present it is added. // Returns the glyph ID -// charsetFindOrAddGlyph(byte* zeropage($1d) glyph) +// charsetFindOrAddGlyph(byte* zeropage($23) glyph) charsetFindOrAddGlyph: { - .label glyph = $1d - .label return = $77 - .label i = $23 - .label glyph_id = $1f - .label glyph_cursor = $20 - .label i1 = $22 - .label found = $24 - // [196] phi from charsetFindOrAddGlyph to charsetFindOrAddGlyph::@1 [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1] + .label glyph = $23 + .label return = $62 + .label i = $29 + .label glyph_id = $25 + .label glyph_cursor = $26 + .label i1 = $28 + .label found = $2a + // [162] phi from charsetFindOrAddGlyph to charsetFindOrAddGlyph::@1 [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1] __b1_from_charsetFindOrAddGlyph: - // [196] phi (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (const byte*) BOB_CHARSET [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1#0] -- pbuz1=pbuc1 + // [162] phi (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (const byte*) BOB_CHARSET [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1#0] -- pbuz1=pbuc1 lda #BOB_CHARSET sta.z glyph_cursor+1 - // [196] phi (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) 0 [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1#1] -- vbuz1=vbuc1 + // [162] phi (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) 0 [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1#1] -- vbuz1=vbuc1 lda #0 sta.z glyph_id jmp __b1 // charsetFindOrAddGlyph::@1 __b1: - // [197] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2 -- vbuz1_neq_vbuz2_then_la1 + // [163] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2 -- vbuz1_neq_vbuz2_then_la1 lda.z glyph_id cmp.z bob_charset_next_id bne __b2_from___b1 - // [198] phi from charsetFindOrAddGlyph::@1 to charsetFindOrAddGlyph::@7 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@7] + // [164] phi from charsetFindOrAddGlyph::@1 to charsetFindOrAddGlyph::@7 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@7] __b7_from___b1: - // [198] phi (byte) charsetFindOrAddGlyph::i1#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@7#0] -- vbuz1=vbuc1 + // [164] phi (byte) charsetFindOrAddGlyph::i1#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@7#0] -- vbuz1=vbuc1 lda #0 sta.z i1 jmp __b7 // Not found - add it // charsetFindOrAddGlyph::@7 __b7: - // [199] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@8 -- vbuz1_lt_vbuc1_then_la1 + // [165] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@8 -- vbuz1_lt_vbuc1_then_la1 lda.z i1 cmp #8 bcc __b8 jmp __b9 // charsetFindOrAddGlyph::@9 __b9: - // [200] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23 -- vbuz1=_inc_vbuz1 + // [166] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23 -- vbuz1=_inc_vbuz1 inc.z bob_charset_next_id - // [201] phi from charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@9 to charsetFindOrAddGlyph::@return [phi:charsetFindOrAddGlyph::@5/charsetFindOrAddGlyph::@9->charsetFindOrAddGlyph::@return] + // [167] phi from charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@9 to charsetFindOrAddGlyph::@return [phi:charsetFindOrAddGlyph::@5/charsetFindOrAddGlyph::@9->charsetFindOrAddGlyph::@return] __breturn_from___b5: __breturn_from___b9: - // [201] phi (byte) bob_charset_next_id#16 = (byte) bob_charset_next_id#23 [phi:charsetFindOrAddGlyph::@5/charsetFindOrAddGlyph::@9->charsetFindOrAddGlyph::@return#0] -- register_copy + // [167] phi (byte) bob_charset_next_id#16 = (byte) bob_charset_next_id#23 [phi:charsetFindOrAddGlyph::@5/charsetFindOrAddGlyph::@9->charsetFindOrAddGlyph::@return#0] -- register_copy jmp __breturn // charsetFindOrAddGlyph::@return __breturn: - // [202] return + // [168] return rts // charsetFindOrAddGlyph::@8 __b8: - // [203] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) -- pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuz2 + // [169] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) -- pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuz2 ldy.z i1 lda (glyph),y sta (glyph_cursor),y - // [204] (byte) charsetFindOrAddGlyph::i1#1 ← ++ (byte) charsetFindOrAddGlyph::i1#2 -- vbuz1=_inc_vbuz1 + // [170] (byte) charsetFindOrAddGlyph::i1#1 ← ++ (byte) charsetFindOrAddGlyph::i1#2 -- vbuz1=_inc_vbuz1 inc.z i1 - // [198] phi from charsetFindOrAddGlyph::@8 to charsetFindOrAddGlyph::@7 [phi:charsetFindOrAddGlyph::@8->charsetFindOrAddGlyph::@7] + // [164] phi from charsetFindOrAddGlyph::@8 to charsetFindOrAddGlyph::@7 [phi:charsetFindOrAddGlyph::@8->charsetFindOrAddGlyph::@7] __b7_from___b8: - // [198] phi (byte) charsetFindOrAddGlyph::i1#2 = (byte) charsetFindOrAddGlyph::i1#1 [phi:charsetFindOrAddGlyph::@8->charsetFindOrAddGlyph::@7#0] -- register_copy + // [164] phi (byte) charsetFindOrAddGlyph::i1#2 = (byte) charsetFindOrAddGlyph::i1#1 [phi:charsetFindOrAddGlyph::@8->charsetFindOrAddGlyph::@7#0] -- register_copy jmp __b7 - // [205] phi from charsetFindOrAddGlyph::@1 to charsetFindOrAddGlyph::@2 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@2] + // [171] phi from charsetFindOrAddGlyph::@1 to charsetFindOrAddGlyph::@2 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@2] __b2_from___b1: - // [205] phi (byte) charsetFindOrAddGlyph::i#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@2#0] -- vbuz1=vbuc1 + // [171] phi (byte) charsetFindOrAddGlyph::i#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@2#0] -- vbuz1=vbuc1 lda #0 sta.z i jmp __b2 // charsetFindOrAddGlyph::@2 __b2: - // [206] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@3 -- vbuz1_lt_vbuc1_then_la1 + // [172] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@3 -- vbuz1_lt_vbuc1_then_la1 lda.z i cmp #8 bcc __b3 - // [208] phi from charsetFindOrAddGlyph::@2 to charsetFindOrAddGlyph::@5 [phi:charsetFindOrAddGlyph::@2->charsetFindOrAddGlyph::@5] + // [174] phi from charsetFindOrAddGlyph::@2 to charsetFindOrAddGlyph::@5 [phi:charsetFindOrAddGlyph::@2->charsetFindOrAddGlyph::@5] __b5_from___b2: - // [208] phi (byte) charsetFindOrAddGlyph::found#2 = (byte) 1 [phi:charsetFindOrAddGlyph::@2->charsetFindOrAddGlyph::@5#0] -- vbuz1=vbuc1 + // [174] phi (byte) charsetFindOrAddGlyph::found#2 = (byte) 1 [phi:charsetFindOrAddGlyph::@2->charsetFindOrAddGlyph::@5#0] -- vbuz1=vbuc1 lda #1 sta.z found jmp __b5 // charsetFindOrAddGlyph::@3 __b3: - // [207] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 -- pbuz1_derefidx_vbuz2_eq_pbuz3_derefidx_vbuz2_then_la1 + // [173] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 -- pbuz1_derefidx_vbuz2_eq_pbuz3_derefidx_vbuz2_then_la1 ldy.z i lda (glyph_cursor),y cmp (glyph),y beq __b4 - // [208] phi from charsetFindOrAddGlyph::@3 to charsetFindOrAddGlyph::@5 [phi:charsetFindOrAddGlyph::@3->charsetFindOrAddGlyph::@5] + // [174] phi from charsetFindOrAddGlyph::@3 to charsetFindOrAddGlyph::@5 [phi:charsetFindOrAddGlyph::@3->charsetFindOrAddGlyph::@5] __b5_from___b3: - // [208] phi (byte) charsetFindOrAddGlyph::found#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@3->charsetFindOrAddGlyph::@5#0] -- vbuz1=vbuc1 + // [174] phi (byte) charsetFindOrAddGlyph::found#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@3->charsetFindOrAddGlyph::@5#0] -- vbuz1=vbuc1 lda #0 sta.z found jmp __b5 // charsetFindOrAddGlyph::@5 __b5: - // [209] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@6 -- vbuc1_eq_vbuz1_then_la1 + // [175] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@6 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z found beq __b6 jmp __breturn_from___b5 // charsetFindOrAddGlyph::@6 __b6: - // [210] (byte) charsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) charsetFindOrAddGlyph::glyph_id#11 -- vbuz1=_inc_vbuz1 + // [176] (byte) charsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) charsetFindOrAddGlyph::glyph_id#11 -- vbuz1=_inc_vbuz1 inc.z glyph_id - // [211] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 -- pbuz1=pbuz1_plus_vbuc1 + // [177] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 -- pbuz1=pbuz1_plus_vbuc1 lda #8 clc adc.z glyph_cursor @@ -6443,98 +5898,98 @@ charsetFindOrAddGlyph: { bcc !+ inc.z glyph_cursor+1 !: - // [196] phi from charsetFindOrAddGlyph::@6 to charsetFindOrAddGlyph::@1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1] + // [162] phi from charsetFindOrAddGlyph::@6 to charsetFindOrAddGlyph::@1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1] __b1_from___b6: - // [196] phi (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (byte*) charsetFindOrAddGlyph::glyph_cursor#1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1#0] -- register_copy - // [196] phi (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) charsetFindOrAddGlyph::glyph_id#1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1#1] -- register_copy + // [162] phi (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (byte*) charsetFindOrAddGlyph::glyph_cursor#1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1#0] -- register_copy + // [162] phi (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) charsetFindOrAddGlyph::glyph_id#1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1#1] -- register_copy jmp __b1 // charsetFindOrAddGlyph::@4 __b4: - // [212] (byte) charsetFindOrAddGlyph::i#1 ← ++ (byte) charsetFindOrAddGlyph::i#2 -- vbuz1=_inc_vbuz1 + // [178] (byte) charsetFindOrAddGlyph::i#1 ← ++ (byte) charsetFindOrAddGlyph::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [205] phi from charsetFindOrAddGlyph::@4 to charsetFindOrAddGlyph::@2 [phi:charsetFindOrAddGlyph::@4->charsetFindOrAddGlyph::@2] + // [171] phi from charsetFindOrAddGlyph::@4 to charsetFindOrAddGlyph::@2 [phi:charsetFindOrAddGlyph::@4->charsetFindOrAddGlyph::@2] __b2_from___b4: - // [205] phi (byte) charsetFindOrAddGlyph::i#2 = (byte) charsetFindOrAddGlyph::i#1 [phi:charsetFindOrAddGlyph::@4->charsetFindOrAddGlyph::@2#0] -- register_copy + // [171] phi (byte) charsetFindOrAddGlyph::i#2 = (byte) charsetFindOrAddGlyph::i#1 [phi:charsetFindOrAddGlyph::@4->charsetFindOrAddGlyph::@2#0] -- register_copy jmp __b2 } // protoBobShiftRight // Shift PROTO_BOB right one X pixel protoBobShiftRight: { - .label __1 = $79 - .label __5 = $7a - .label __6 = $7b - .label carry = $28 - .label j = $26 - .label i = $25 - .label carry_1 = $27 - // [214] phi from protoBobShiftRight to protoBobShiftRight::@1 [phi:protoBobShiftRight->protoBobShiftRight::@1] + .label __1 = $64 + .label __5 = $65 + .label __6 = $66 + .label carry = $2e + .label j = $2c + .label i = $2b + .label carry_1 = $2d + // [180] phi from protoBobShiftRight to protoBobShiftRight::@1 [phi:protoBobShiftRight->protoBobShiftRight::@1] __b1_from_protoBobShiftRight: - // [214] phi (byte) protoBobShiftRight::carry#2 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#0] -- vbuz1=vbuc1 + // [180] phi (byte) protoBobShiftRight::carry#2 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#0] -- vbuz1=vbuc1 lda #0 sta.z carry_1 - // [214] phi (byte) protoBobShiftRight::j#3 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#1] -- vbuz1=vbuc1 + // [180] phi (byte) protoBobShiftRight::j#3 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#1] -- vbuz1=vbuc1 lda #0 sta.z j - // [214] phi (byte) protoBobShiftRight::i#2 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#2] -- vbuz1=vbuc1 + // [180] phi (byte) protoBobShiftRight::i#2 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#2] -- vbuz1=vbuc1 lda #0 sta.z i jmp __b1 // protoBobShiftRight::@1 __b1: - // [215] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2 -- vbuz1_lt_vbuc1_then_la1 + // [181] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2 -- vbuz1_lt_vbuc1_then_la1 lda.z i cmp #3*3*8 bcc __b2 jmp __breturn // protoBobShiftRight::@return __breturn: - // [216] return + // [182] return rts // protoBobShiftRight::@2 __b2: - // [217] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 -- vbuz1=pbuc1_derefidx_vbuz2_band_vbuc2 + // [183] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 -- vbuz1=pbuc1_derefidx_vbuz2_band_vbuc2 lda #1 ldy.z j and PROTO_BOB,y sta.z __1 - // [218] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@3 -- vbuc1_neq_vbuz1_then_la1 + // [184] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@3 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z __1 bne __b3_from___b2 - // [220] phi from protoBobShiftRight::@2 to protoBobShiftRight::@4 [phi:protoBobShiftRight::@2->protoBobShiftRight::@4] + // [186] phi from protoBobShiftRight::@2 to protoBobShiftRight::@4 [phi:protoBobShiftRight::@2->protoBobShiftRight::@4] __b4_from___b2: - // [220] phi (byte) protoBobShiftRight::carry#1 = (byte) 0 [phi:protoBobShiftRight::@2->protoBobShiftRight::@4#0] -- vbuz1=vbuc1 + // [186] phi (byte) protoBobShiftRight::carry#1 = (byte) 0 [phi:protoBobShiftRight::@2->protoBobShiftRight::@4#0] -- vbuz1=vbuc1 lda #0 sta.z carry jmp __b4 - // [219] phi from protoBobShiftRight::@2 to protoBobShiftRight::@3 [phi:protoBobShiftRight::@2->protoBobShiftRight::@3] + // [185] phi from protoBobShiftRight::@2 to protoBobShiftRight::@3 [phi:protoBobShiftRight::@2->protoBobShiftRight::@3] __b3_from___b2: jmp __b3 // protoBobShiftRight::@3 __b3: - // [220] phi from protoBobShiftRight::@3 to protoBobShiftRight::@4 [phi:protoBobShiftRight::@3->protoBobShiftRight::@4] + // [186] phi from protoBobShiftRight::@3 to protoBobShiftRight::@4 [phi:protoBobShiftRight::@3->protoBobShiftRight::@4] __b4_from___b3: - // [220] phi (byte) protoBobShiftRight::carry#1 = (byte) $80 [phi:protoBobShiftRight::@3->protoBobShiftRight::@4#0] -- vbuz1=vbuc1 + // [186] phi (byte) protoBobShiftRight::carry#1 = (byte) $80 [phi:protoBobShiftRight::@3->protoBobShiftRight::@4#0] -- vbuz1=vbuc1 lda #$80 sta.z carry jmp __b4 // protoBobShiftRight::@4 __b4: - // [221] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 -- vbuz1=pbuc1_derefidx_vbuz2_ror_1 + // [187] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 -- vbuz1=pbuc1_derefidx_vbuz2_ror_1 ldy.z j lda PROTO_BOB,y lsr sta.z __5 - // [222] (byte~) protoBobShiftRight::$6 ← (byte) protoBobShiftRight::carry#2 | (byte~) protoBobShiftRight::$5 -- vbuz1=vbuz2_bor_vbuz3 + // [188] (byte~) protoBobShiftRight::$6 ← (byte) protoBobShiftRight::carry#2 | (byte~) protoBobShiftRight::$5 -- vbuz1=vbuz2_bor_vbuz3 lda.z carry_1 ora.z __5 sta.z __6 - // [223] *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) ← (byte~) protoBobShiftRight::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + // [189] *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) ← (byte~) protoBobShiftRight::$6 -- pbuc1_derefidx_vbuz1=vbuz2 // Shift value and add old carry lda.z __6 ldy.z j sta PROTO_BOB,y - // [224] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@5 -- vbuz1_ge_vbuc1_then_la1 + // [190] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@5 -- vbuz1_ge_vbuc1_then_la1 // Increment j to iterate over the PROTO_BOB left-to-right, top-to-bottom (0, 24, 48, 1, 25, 49, ...) lda.z j cmp #$30 @@ -6542,31 +5997,31 @@ protoBobShiftRight: { jmp __b7 // protoBobShiftRight::@7 __b7: - // [225] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + // [191] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax.z j axs #-[$18] stx.z j - // [226] phi from protoBobShiftRight::@5 protoBobShiftRight::@7 to protoBobShiftRight::@6 [phi:protoBobShiftRight::@5/protoBobShiftRight::@7->protoBobShiftRight::@6] + // [192] phi from protoBobShiftRight::@5 protoBobShiftRight::@7 to protoBobShiftRight::@6 [phi:protoBobShiftRight::@5/protoBobShiftRight::@7->protoBobShiftRight::@6] __b6_from___b5: __b6_from___b7: - // [226] phi (byte) protoBobShiftRight::j#10 = (byte) protoBobShiftRight::j#1 [phi:protoBobShiftRight::@5/protoBobShiftRight::@7->protoBobShiftRight::@6#0] -- register_copy + // [192] phi (byte) protoBobShiftRight::j#10 = (byte) protoBobShiftRight::j#1 [phi:protoBobShiftRight::@5/protoBobShiftRight::@7->protoBobShiftRight::@6#0] -- register_copy jmp __b6 // protoBobShiftRight::@6 __b6: - // [227] (byte) protoBobShiftRight::i#1 ← ++ (byte) protoBobShiftRight::i#2 -- vbuz1=_inc_vbuz1 + // [193] (byte) protoBobShiftRight::i#1 ← ++ (byte) protoBobShiftRight::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [228] (byte) protoBobShiftRight::carry#10 ← (byte) protoBobShiftRight::carry#1 -- vbuz1=vbuz2 + // [194] (byte) protoBobShiftRight::carry#10 ← (byte) protoBobShiftRight::carry#1 -- vbuz1=vbuz2 lda.z carry sta.z carry_1 - // [214] phi from protoBobShiftRight::@6 to protoBobShiftRight::@1 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1] + // [180] phi from protoBobShiftRight::@6 to protoBobShiftRight::@1 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1] __b1_from___b6: - // [214] phi (byte) protoBobShiftRight::carry#2 = (byte) protoBobShiftRight::carry#10 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#0] -- register_copy - // [214] phi (byte) protoBobShiftRight::j#3 = (byte) protoBobShiftRight::j#10 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#1] -- register_copy - // [214] phi (byte) protoBobShiftRight::i#2 = (byte) protoBobShiftRight::i#1 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#2] -- register_copy + // [180] phi (byte) protoBobShiftRight::carry#2 = (byte) protoBobShiftRight::carry#10 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#0] -- register_copy + // [180] phi (byte) protoBobShiftRight::j#3 = (byte) protoBobShiftRight::j#10 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#1] -- register_copy + // [180] phi (byte) protoBobShiftRight::i#2 = (byte) protoBobShiftRight::i#1 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#2] -- register_copy jmp __b1 // protoBobShiftRight::@5 __b5: - // [229] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f -- vbuz1=vbuz1_minus_vbuc1 + // [195] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f -- vbuz1=vbuz1_minus_vbuc1 lax.z j axs #$2f stx.z j @@ -6576,54 +6031,54 @@ protoBobShiftRight: { // Shift PROTO_BOB down one Y pixel // At the same time restore PROTO_BOB X by shifting 8 pixels left protoBobShiftDown: { - .label i = $29 - // [231] phi from protoBobShiftDown to protoBobShiftDown::@1 [phi:protoBobShiftDown->protoBobShiftDown::@1] + .label i = $2f + // [197] phi from protoBobShiftDown to protoBobShiftDown::@1 [phi:protoBobShiftDown->protoBobShiftDown::@1] __b1_from_protoBobShiftDown: - // [231] phi (byte) protoBobShiftDown::i#2 = (byte) $17 [phi:protoBobShiftDown->protoBobShiftDown::@1#0] -- vbuz1=vbuc1 + // [197] phi (byte) protoBobShiftDown::i#2 = (byte) $17 [phi:protoBobShiftDown->protoBobShiftDown::@1#0] -- vbuz1=vbuc1 lda #$17 sta.z i jmp __b1 // protoBobShiftDown::@1 __b1: - // [232] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2 -- vbuz1_gt_0_then_la1 + // [198] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2 -- vbuz1_gt_0_then_la1 lda.z i bne __b2 jmp __b3 // protoBobShiftDown::@3 __b3: - // [233] *((const byte*) PROTO_BOB) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [199] *((const byte*) PROTO_BOB) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta PROTO_BOB - // [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [200] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta PROTO_BOB+$18 - // [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [201] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta PROTO_BOB+$30 jmp __breturn // protoBobShiftDown::@return __breturn: - // [236] return + // [202] return rts // protoBobShiftDown::@2 __b2: - // [237] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + // [203] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy.z i lda PROTO_BOB+$17,y sta PROTO_BOB,y - // [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + // [204] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy.z i lda PROTO_BOB+$2f,y sta PROTO_BOB+$18,y - // [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + // [205] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy.z i sta PROTO_BOB+$30,y - // [240] (byte) protoBobShiftDown::i#1 ← -- (byte) protoBobShiftDown::i#2 -- vbuz1=_dec_vbuz1 + // [206] (byte) protoBobShiftDown::i#1 ← -- (byte) protoBobShiftDown::i#2 -- vbuz1=_dec_vbuz1 dec.z i - // [231] phi from protoBobShiftDown::@2 to protoBobShiftDown::@1 [phi:protoBobShiftDown::@2->protoBobShiftDown::@1] + // [197] phi from protoBobShiftDown::@2 to protoBobShiftDown::@1 [phi:protoBobShiftDown::@2->protoBobShiftDown::@1] __b1_from___b2: - // [231] phi (byte) protoBobShiftDown::i#2 = (byte) protoBobShiftDown::i#1 [phi:protoBobShiftDown::@2->protoBobShiftDown::@1#0] -- register_copy + // [197] phi (byte) protoBobShiftDown::i#2 = (byte) protoBobShiftDown::i#1 [phi:protoBobShiftDown::@2->protoBobShiftDown::@1#0] -- register_copy jmp __b1 } // progress_init @@ -6632,51 +6087,51 @@ progress_init: { jmp __breturn // progress_init::@return __breturn: - // [242] return + // [208] return rts } // mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { - .label __1 = $7c - .label __4 = $7d - .label __5 = $7e + .label __1 = $67 + .label __4 = $68 + .label __5 = $69 // x/2 - .label c = $2c + .label c = $32 // Counter used for determining x%2==0 - .label sqr1_hi = $2d + .label sqr1_hi = $33 // Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4 - .label sqr = $36 - .label sqr1_lo = $2a + .label sqr = $3c + .label sqr1_lo = $30 // sqr = (x*x)/4 - .label x_2 = $2f + .label x_2 = $35 // Decrease or increase x_255 - initially we decrease - .label sqr2_hi = $33 + .label sqr2_hi = $39 // Fill mulf_sqr2 = g(x) = f(x-255) : If x-255<0 then g(x)=f(255-x) (because x*x = -x*-x) // g(0) = f(255), g(1) = f(254), ..., g(254) = f(1), g(255) = f(0), g(256) = f(1), ..., g(510) = f(255), g(511) = f(256) - .label x_255 = $32 - .label sqr2_lo = $30 + .label x_255 = $38 + .label sqr2_lo = $36 //Start with g(0)=f(255) - .label dir = $35 - // [244] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + .label dir = $3b + // [210] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] __b1_from_mulf_init: - // [244] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + // [210] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta.z x_2 - // [244] phi (byte*) mulf_init::sqr1_hi#2 = (const byte*) mulf_sqr1_hi+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + // [210] phi (byte*) mulf_init::sqr1_hi#2 = (const byte*) mulf_sqr1_hi+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta.z sqr1_hi+1 - // [244] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1 + // [210] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1 lda #<0 sta.z sqr lda #>0 sta.z sqr+1 - // [244] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 + // [210] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 lda #0 sta.z c - // [244] phi (byte*) mulf_init::sqr1_lo#2 = (const byte*) mulf_sqr1_lo+(byte) 1 [phi:mulf_init->mulf_init::@1#4] -- pbuz1=pbuc1 + // [210] phi (byte*) mulf_init::sqr1_lo#2 = (const byte*) mulf_sqr1_lo+(byte) 1 [phi:mulf_init->mulf_init::@1#4] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 @@ -6684,27 +6139,27 @@ mulf_init: { jmp __b1 // mulf_init::@1 __b1: - // [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 -- pbuz1_neq_pbuc1_then_la1 + // [211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne __b2 lda.z sqr1_lo cmp #mulf_init::@5] + // [212] phi from mulf_init::@1 to mulf_init::@5 [phi:mulf_init::@1->mulf_init::@5] __b5_from___b1: - // [246] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 + // [212] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 lda #$ff sta.z dir - // [246] phi (byte*) mulf_init::sqr2_hi#2 = (const byte*) mulf_sqr2_hi [phi:mulf_init::@1->mulf_init::@5#1] -- pbuz1=pbuc1 + // [212] phi (byte*) mulf_init::sqr2_hi#2 = (const byte*) mulf_sqr2_hi [phi:mulf_init::@1->mulf_init::@5#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta.z sqr2_hi+1 - // [246] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuz1=vbuc1 + // [212] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuz1=vbuc1 lda #-1 sta.z x_255 - // [246] phi (byte*) mulf_init::sqr2_lo#2 = (const byte*) mulf_sqr2_lo [phi:mulf_init::@1->mulf_init::@5#3] -- pbuz1=pbuc1 + // [212] phi (byte*) mulf_init::sqr2_lo#2 = (const byte*) mulf_sqr2_lo [phi:mulf_init::@1->mulf_init::@5#3] -- pbuz1=pbuc1 lda #mulf_sqr2_lo @@ -6712,7 +6167,7 @@ mulf_init: { jmp __b5 // mulf_init::@5 __b5: - // [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 -- pbuz1_neq_pbuc1_then_la1 + // [213] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 -- pbuz1_neq_pbuc1_then_la1 lda.z sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne __b6 @@ -6722,123 +6177,123 @@ mulf_init: { jmp __b7 // mulf_init::@7 __b7: - // [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) -- _deref_pbuc1=_deref_pbuc2 + // [214] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) -- _deref_pbuc1=_deref_pbuc2 // Set the very last value g(511) = f(256) lda mulf_sqr1_lo+$100 sta mulf_sqr2_lo+$1ff - // [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) -- _deref_pbuc1=_deref_pbuc2 + // [215] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) -- _deref_pbuc1=_deref_pbuc2 lda mulf_sqr1_hi+$100 sta mulf_sqr2_hi+$1ff jmp __breturn // mulf_init::@return __breturn: - // [250] return + // [216] return rts // mulf_init::@6 __b6: - // [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + // [217] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy.z x_255 lda mulf_sqr1_lo,y ldy #0 sta (sqr2_lo),y - // [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + // [218] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy.z x_255 lda mulf_sqr1_hi,y ldy #0 sta (sqr2_hi),y - // [253] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + // [219] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc.z sqr2_hi bne !+ inc.z sqr2_hi+1 !: - // [254] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + // [220] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 lda.z x_255 clc adc.z dir sta.z x_255 - // [255] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuz1_neq_0_then_la1 + // [221] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuz1_neq_0_then_la1 lda.z x_255 cmp #0 bne __b9_from___b6 - // [257] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8] + // [223] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8] __b8_from___b6: - // [257] phi (byte) mulf_init::dir#4 = (byte) 1 [phi:mulf_init::@6->mulf_init::@8#0] -- vbuz1=vbuc1 + // [223] phi (byte) mulf_init::dir#4 = (byte) 1 [phi:mulf_init::@6->mulf_init::@8#0] -- vbuz1=vbuc1 lda #1 sta.z dir jmp __b8 - // [256] phi from mulf_init::@6 to mulf_init::@9 [phi:mulf_init::@6->mulf_init::@9] + // [222] phi from mulf_init::@6 to mulf_init::@9 [phi:mulf_init::@6->mulf_init::@9] __b9_from___b6: jmp __b9 // mulf_init::@9 __b9: - // [257] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8] + // [223] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8] __b8_from___b9: - // [257] phi (byte) mulf_init::dir#4 = (byte) mulf_init::dir#2 [phi:mulf_init::@9->mulf_init::@8#0] -- register_copy + // [223] phi (byte) mulf_init::dir#4 = (byte) mulf_init::dir#2 [phi:mulf_init::@9->mulf_init::@8#0] -- register_copy jmp __b8 // mulf_init::@8 __b8: - // [258] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + // [224] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc.z sqr2_lo bne !+ inc.z sqr2_lo+1 !: - // [246] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5] + // [212] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5] __b5_from___b8: - // [246] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy - // [246] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy - // [246] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy - // [246] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@8->mulf_init::@5#3] -- register_copy + // [212] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy + // [212] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy + // [212] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy + // [212] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@8->mulf_init::@5#3] -- register_copy jmp __b5 // mulf_init::@2 __b2: - // [259] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + // [225] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc.z c - // [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + // [226] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and.z c sta.z __1 - // [261] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 -- vbuz1_neq_0_then_la1 + // [227] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 -- vbuz1_neq_0_then_la1 lda.z __1 cmp #0 bne __b3_from___b2 jmp __b4 // mulf_init::@4 __b4: - // [262] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + // [228] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc.z x_2 - // [263] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + // [229] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc.z sqr bne !+ inc.z sqr+1 !: - // [264] phi from mulf_init::@2 mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3] + // [230] phi from mulf_init::@2 mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3] __b3_from___b2: __b3_from___b4: - // [264] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#0] -- register_copy - // [264] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#1] -- register_copy + // [230] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#0] -- register_copy + // [230] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#1] -- register_copy jmp __b3 // mulf_init::@3 __b3: - // [265] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + // [231] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda.z sqr sta.z __4 - // [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 -- _deref_pbuz1=vbuz2 + // [232] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 -- _deref_pbuz1=vbuz2 lda.z __4 ldy #0 sta (sqr1_lo),y - // [267] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + // [233] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda.z sqr+1 sta.z __5 - // [268] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 + // [234] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 lda.z __5 ldy #0 sta (sqr1_hi),y - // [269] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + // [235] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc.z sqr1_hi bne !+ inc.z sqr1_hi+1 !: - // [270] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + // [236] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda.z x_2 clc adc.z sqr @@ -6846,18 +6301,18 @@ mulf_init: { bcc !+ inc.z sqr+1 !: - // [271] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + // [237] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc.z sqr1_lo bne !+ inc.z sqr1_lo+1 !: - // [244] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1] + // [210] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1] __b1_from___b3: - // [244] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy - // [244] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy - // [244] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy - // [244] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy - // [244] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@3->mulf_init::@1#4] -- register_copy + // [210] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy + // [210] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy + // [210] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy + // [210] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy + // [210] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@3->mulf_init::@1#4] -- register_copy jmp __b1 } // File Data @@ -6889,14 +6344,6 @@ PROTO_BOB: .for (var y=0; y<24; y++) .byte pic.getSinglecolorByte(x,y) - // Sine and Cosine tables - // Angles: $00=0, $80=PI,$100=2*PI - // Sine/Cosine: signed fixed [-$7f,$7f] - .align $40 -SIN: -.for(var i=0;i<$140;i++) - .byte >round($7fff*sin(i*2*PI/256)) - // Tables containing the char to use for a specific cell of a shifted BOB. // char_id = BOB_TABLES[cell*BOB_SUBTABLE_SIZE + shift_y*BOB_SHIFTS_X + shift_x]; BOB_TABLES: .fill 9*8*4, 0 @@ -6909,639 +6356,446 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::angle#8 ] ( main:2 [ main::angle#8 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::angle#8 main::angle#1 ] -Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::angle#8 ] ( main:2 [ main::angle#8 ] ) always clobbers reg byte a -Statement [22] *((const byte*) BORDERCOL) ← (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::r#2 main::r#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::i#2 main::i#1 ] -Statement [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ) always clobbers reg byte a -Statement [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ) always clobbers reg byte a -Statement [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ) always clobbers reg byte a -Statement [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ) always clobbers reg byte a -Statement [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ) always clobbers reg byte a -Statement [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ) always clobbers reg byte a -Statement [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [36] *((const byte*) BORDERCOL) ← (byte) 2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::y#0 renderBob::xpos#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::y#0 renderBob::xpos#0 ] ) always clobbers reg byte a -Statement [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 renderBob::xpos#0 renderBob::ypos#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 renderBob::xpos#0 renderBob::ypos#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:70 [ renderBob::xpos#0 ] -Statement [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a -Statement [45] *((const byte*) BORDERCOL) ← (byte) 0 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a -Statement [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 ] main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ ] ) always clobbers reg byte a -Statement [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:71 [ renderBob::ypos#0 ] -Statement [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:80 [ renderBob::x_char_offset#0 ] -Statement [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ) always clobbers reg byte a -Statement [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ) always clobbers reg byte a -Statement [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ) always clobbers reg byte a -Statement [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ) always clobbers reg byte a -Statement [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ) always clobbers reg byte a -Statement [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ) always clobbers reg byte a -Statement [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:90 [ renderBob::$5 ] -Statement [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::angle#8 main::angle#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::i#2 main::i#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::r#2 main::r#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:92 [ renderBob::bob_table_idx#0 ] -Removing always clobbered register reg byte y as potential for zp[1]:92 [ renderBob::bob_table_idx#0 ] -Statement [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a reg byte y -Statement [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mulf8s:25 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#0 ] main:2::mulf8s:31 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:94 [ mulf8s_prepared::b#0 ] -Statement [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a -Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x -Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::angle#8 main::angle#1 ] -Removing always clobbered register reg byte x as potential for zp[1]:3 [ main::r#2 main::r#1 ] -Removing always clobbered register reg byte x as potential for zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] -Removing always clobbered register reg byte x as potential for zp[1]:7 [ main::i#2 main::i#1 ] -Removing always clobbered register reg byte x as potential for zp[1]:94 [ mulf8s_prepared::b#0 ] -Statement [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mulf8s:31::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a -Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:9 [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] -Statement [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:12 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] -Statement [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a -Statement [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:12 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] -Statement [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 ] ) always clobbers reg byte a reg byte y -Statement [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:15 [ renderBobInit::y#2 renderBobInit::y#1 ] -Statement [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ) always clobbers reg byte a -Statement [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] ) always clobbers reg byte a -Statement [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] ) always clobbers reg byte a -Statement [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ) always clobbers reg byte a -Statement [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] ) always clobbers reg byte a -Statement [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:16 [ renderBobInit::i#2 renderBobInit::i#1 ] -Statement [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] ) always clobbers reg byte a -Statement [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] -Removing always clobbered register reg byte a as potential for zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] -Removing always clobbered register reg byte a as potential for zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -Statement [179] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Statement [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] -Removing always clobbered register reg byte y as potential for zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] -Removing always clobbered register reg byte y as potential for zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Statement [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ) always clobbers reg byte a -Statement [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ) always clobbers reg byte a -Statement [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] ) always clobbers reg byte a reg byte y -Statement [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] ) always clobbers reg byte a reg byte y -Statement [203] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:162 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:31 [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:34 [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] -Statement [207] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:162 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:35 [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] -Statement [211] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:162 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ) always clobbers reg byte a -Statement [217] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ( main:2::prepareBobs:7::protoBobShiftRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] main:2::prepareBobs:7::protoBobShiftRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:37 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:38 [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:39 [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] -Statement [221] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ( main:2::prepareBobs:7::protoBobShiftRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] main:2::prepareBobs:7::protoBobShiftRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:40 [ protoBobShiftRight::carry#1 ] -Statement [225] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ( main:2::prepareBobs:7::protoBobShiftRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] main:2::prepareBobs:7::protoBobShiftRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ) always clobbers reg byte a -Statement [229] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ( main:2::prepareBobs:7::protoBobShiftRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] main:2::prepareBobs:7::protoBobShiftRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ) always clobbers reg byte a -Statement [233] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [237] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:41 [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] -Statement [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:47 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [254] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [265] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$4 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$4 ] ) always clobbers reg byte a -Statement [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:47 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [267] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [268] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [270] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::origX#8 main::rowOffsetY#10 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 ] ) always clobbers reg byte a +Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::origX#8 main::rowOffsetY#10 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 ] ) always clobbers reg byte a +Statement [20] (signed word) main::x#4 ← (signed word) main::origX#8 [ main::origX#8 main::rowOffsetY#10 main::x#4 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#4 ] ) always clobbers reg byte a +Statement [22] (signed word) main::x#7 ← (signed word) main::x#0 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::col#5 main::col#1 ] +Statement [23] (signed word) main::y#6 ← (signed word) main::y#0 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 main::y#6 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 main::y#6 ] ) always clobbers reg byte a +Statement [25] *((const byte*) BORDERCOL) ← (byte) 1 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:17 [ main::row#2 main::row#1 ] +Statement [26] (byte) renderBob::xpos#0 ← > (signed word) main::x#2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 ] ) always clobbers reg byte a +Statement [27] (byte) renderBob::ypos#0 ← > (signed word) main::y#2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 renderBob::ypos#0 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 renderBob::ypos#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:62 [ renderBob::xpos#0 ] +Statement [29] (signed word) main::x#1 ← (signed word) main::x#2 + (const signed word) main::rowOffsetX [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::y#2 main::row#2 main::x#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::y#2 main::row#2 main::x#1 ] ) always clobbers reg byte a +Statement [30] (signed word) main::y#1 ← (signed word) main::y#2 + (signed word) main::rowOffsetY#10 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ) always clobbers reg byte a +Statement [31] *((const byte*) BORDERCOL) ← (byte) 2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ) always clobbers reg byte a +Statement [34] (signed word) main::rowX#1 ← (signed word) main::x#0 + (const signed word) main::colOffsetX [ main::origX#8 main::rowOffsetY#10 main::y#0 main::col#5 main::rowX#1 renderBobCleanupNext#13 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::y#0 main::col#5 main::rowX#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a +Statement [35] (signed word) main::rowY#1 ← (signed word) main::y#0 + (const signed word) main::colOffsetY [ main::origX#8 main::rowOffsetY#10 main::col#5 main::rowX#1 main::rowY#1 renderBobCleanupNext#13 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::col#5 main::rowX#1 main::rowY#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a +Statement [38] (signed word) main::origX#1 ← (signed word) main::origX#8 + (signed word) $100 [ main::rowOffsetY#10 main::origX#1 ] ( main:2 [ main::rowOffsetY#10 main::origX#1 ] ) always clobbers reg byte a +Statement [39] (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#10 + (signed word) $80 [ main::origX#1 main::rowOffsetY#1 ] ( main:2 [ main::origX#1 main::rowOffsetY#1 ] ) always clobbers reg byte a +Statement [40] *((const byte*) BORDERCOL) ← (byte) 0 [ main::origX#1 main::rowOffsetY#1 ] ( main:2 [ main::origX#1 main::rowOffsetY#1 ] ) always clobbers reg byte a +Statement [50] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [52] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [54] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [62] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:41::keyboard_matrix_read:57 [ main::origX#1 main::rowOffsetY#1 ] main:2::keyboard_key_pressed:46::keyboard_matrix_read:57 [ ] ) always clobbers reg byte a +Statement [63] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:41::keyboard_matrix_read:57 [ main::origX#1 main::rowOffsetY#1 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:46::keyboard_matrix_read:57 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [65] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:63 [ renderBob::ypos#0 ] +Statement [66] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:72 [ renderBob::x_char_offset#0 ] +Statement [67] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ) always clobbers reg byte a +Statement [68] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ) always clobbers reg byte a +Statement [69] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ) always clobbers reg byte a +Statement [70] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ) always clobbers reg byte a +Statement [71] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ) always clobbers reg byte a +Statement [72] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ) always clobbers reg byte a +Statement [73] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:82 [ renderBob::$5 ] +Statement [74] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a +Statement [75] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:10 [ main::col#5 main::col#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:17 [ main::row#2 main::row#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:84 [ renderBob::bob_table_idx#0 ] +Removing always clobbered register reg byte y as potential for zp[1]:84 [ renderBob::bob_table_idx#0 ] +Statement [76] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a +Statement [77] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [78] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [79] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [80] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [81] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [82] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [84] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [85] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 ] ) always clobbers reg byte a reg byte y +Statement [89] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:18 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] +Statement [90] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a +Statement [91] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:18 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] +Statement [92] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [93] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [94] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [95] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [96] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [97] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [98] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [99] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 ] ) always clobbers reg byte a reg byte y +Statement [105] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a +Statement [107] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [111] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:21 [ renderBobInit::y#2 renderBobInit::y#1 ] +Statement [112] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ) always clobbers reg byte a +Statement [113] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] ) always clobbers reg byte a +Statement [114] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] ) always clobbers reg byte a +Statement [115] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ) always clobbers reg byte a +Statement [116] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] ) always clobbers reg byte a +Statement [120] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:22 [ renderBobInit::i#2 renderBobInit::i#1 ] +Statement [121] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] ) always clobbers reg byte a +Statement [137] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] +Removing always clobbered register reg byte a as potential for zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] +Removing always clobbered register reg byte a as potential for zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] +Statement [145] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] +Statement [149] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] +Removing always clobbered register reg byte y as potential for zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] +Removing always clobbered register reg byte y as potential for zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] +Statement [150] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ) always clobbers reg byte a +Statement [151] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ) always clobbers reg byte a +Statement [156] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:152 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] ) always clobbers reg byte a reg byte y +Statement [159] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:152 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] ) always clobbers reg byte a reg byte y +Statement [169] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:37 [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:40 [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] +Statement [173] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:41 [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] +Statement [177] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ) always clobbers reg byte a +Statement [183] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:44 [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:45 [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] +Statement [187] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:46 [ protoBobShiftRight::carry#1 ] +Statement [191] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ) always clobbers reg byte a +Statement [195] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ) always clobbers reg byte a +Statement [199] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a +Statement [200] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a +Statement [201] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a +Statement [203] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:47 [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] +Statement [204] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a +Statement [205] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a +Statement [211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:53 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Statement [213] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] +Statement [214] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a +Statement [215] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a +Statement [217] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] +Statement [218] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [220] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [226] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a +Statement [231] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$4 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$4 ] ) always clobbers reg byte a +Statement [232] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:53 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Statement [233] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [234] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [236] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a Statement [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::angle#8 ] ( main:2 [ main::angle#8 ] ) always clobbers reg byte a -Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::angle#8 ] ( main:2 [ main::angle#8 ] ) always clobbers reg byte a -Statement [20] (byte) main::a#6 ← (byte) main::angle#8 [ main::angle#8 main::a#6 ] ( main:2 [ main::angle#8 main::a#6 ] ) always clobbers reg byte a -Statement [22] *((const byte*) BORDERCOL) ← (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ) always clobbers reg byte a -Statement [24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2) [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::a#0 mulf8s::b#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::a#0 mulf8s::b#0 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:8 [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] -Statement [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ) always clobbers reg byte a -Statement [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ) always clobbers reg byte a -Statement [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ) always clobbers reg byte a -Statement [30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2) [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::a#1 mulf8s::b#1 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::a#1 mulf8s::b#1 ] ) always clobbers reg byte y -Statement [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ) always clobbers reg byte a -Statement [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ) always clobbers reg byte a -Statement [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ) always clobbers reg byte a -Statement [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [36] *((const byte*) BORDERCOL) ← (byte) 2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ) always clobbers reg byte a reg byte x -Statement [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ) always clobbers reg byte a reg byte x -Statement [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::y#0 renderBob::xpos#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::y#0 renderBob::xpos#0 ] ) always clobbers reg byte a -Statement [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 renderBob::xpos#0 renderBob::ypos#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 renderBob::xpos#0 renderBob::ypos#0 ] ) always clobbers reg byte a -Statement [43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4 [ main::angle#8 main::r#1 main::a#1 renderBobCleanupNext#13 main::i#1 ] ( main:2 [ main::angle#8 main::r#1 main::a#1 renderBobCleanupNext#13 main::i#1 ] ) always clobbers reg byte a -Statement [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a reg byte x -Statement [45] *((const byte*) BORDERCOL) ← (byte) 0 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a -Statement [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 ] main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ ] ) always clobbers reg byte a -Statement [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ) always clobbers reg byte a -Statement [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ) always clobbers reg byte a -Statement [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ) always clobbers reg byte a -Statement [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ) always clobbers reg byte a -Statement [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ) always clobbers reg byte a -Statement [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ) always clobbers reg byte a -Statement [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ) always clobbers reg byte a -Statement [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ) always clobbers reg byte a -Statement [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ) always clobbers reg byte a -Statement [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a reg byte y -Statement [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mulf8s:25 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#0 ] main:2::mulf8s:31 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a -Statement [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a -Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x -Statement [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mulf8s:31::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a -Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a -Statement [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::$1 ] ) always clobbers reg byte a -Statement [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a -Statement [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 ] ) always clobbers reg byte a reg byte y -Statement [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] ) always clobbers reg byte a -Statement [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ) always clobbers reg byte a -Statement [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] ) always clobbers reg byte a -Statement [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] ) always clobbers reg byte a -Statement [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ) always clobbers reg byte a -Statement [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] ) always clobbers reg byte a -Statement [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] ) always clobbers reg byte a -Statement [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] ) always clobbers reg byte a -Statement [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ) always clobbers reg byte a -Statement [179] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ) always clobbers reg byte a -Statement [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ) always clobbers reg byte y -Statement [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ) always clobbers reg byte a -Statement [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ) always clobbers reg byte a -Statement [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] ) always clobbers reg byte a reg byte y -Statement [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] ) always clobbers reg byte a reg byte y -Statement [203] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:162 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ) always clobbers reg byte a -Statement [207] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:162 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ) always clobbers reg byte a -Statement [211] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:162 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ) always clobbers reg byte a -Statement [217] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ( main:2::prepareBobs:7::protoBobShiftRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] main:2::prepareBobs:7::protoBobShiftRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ) always clobbers reg byte a -Statement [221] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ( main:2::prepareBobs:7::protoBobShiftRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] main:2::prepareBobs:7::protoBobShiftRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ) always clobbers reg byte a -Statement [225] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ( main:2::prepareBobs:7::protoBobShiftRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] main:2::prepareBobs:7::protoBobShiftRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ) always clobbers reg byte a -Statement [229] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ( main:2::prepareBobs:7::protoBobShiftRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] main:2::prepareBobs:7::protoBobShiftRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ) always clobbers reg byte a -Statement [233] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [237] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Statement [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Statement [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [254] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [265] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$4 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$4 ] ) always clobbers reg byte a -Statement [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [267] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [268] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [270] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::angle#8 ] ( main:2 [ main::angle#8 ] ) always clobbers reg byte a -Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::angle#8 ] ( main:2 [ main::angle#8 ] ) always clobbers reg byte a -Statement [20] (byte) main::a#6 ← (byte) main::angle#8 [ main::angle#8 main::a#6 ] ( main:2 [ main::angle#8 main::a#6 ] ) always clobbers reg byte a -Statement [22] *((const byte*) BORDERCOL) ← (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ) always clobbers reg byte a -Statement [24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2) [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::a#0 mulf8s::b#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::a#0 mulf8s::b#0 ] ) always clobbers reg byte y -Statement [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ) always clobbers reg byte a -Statement [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ) always clobbers reg byte a -Statement [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ) always clobbers reg byte a -Statement [30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2) [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::a#1 mulf8s::b#1 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::a#1 mulf8s::b#1 ] ) always clobbers reg byte y -Statement [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ) always clobbers reg byte a -Statement [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ) always clobbers reg byte a -Statement [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ) always clobbers reg byte a -Statement [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [36] *((const byte*) BORDERCOL) ← (byte) 2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ) always clobbers reg byte a reg byte x -Statement [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ) always clobbers reg byte a reg byte x -Statement [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::y#0 renderBob::xpos#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::y#0 renderBob::xpos#0 ] ) always clobbers reg byte a -Statement [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 renderBob::xpos#0 renderBob::ypos#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 renderBob::xpos#0 renderBob::ypos#0 ] ) always clobbers reg byte a -Statement [43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4 [ main::angle#8 main::r#1 main::a#1 renderBobCleanupNext#13 main::i#1 ] ( main:2 [ main::angle#8 main::r#1 main::a#1 renderBobCleanupNext#13 main::i#1 ] ) always clobbers reg byte a -Statement [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a reg byte x -Statement [45] *((const byte*) BORDERCOL) ← (byte) 0 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a -Statement [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 ] main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ ] ) always clobbers reg byte a -Statement [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ) always clobbers reg byte a -Statement [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ) always clobbers reg byte a -Statement [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ) always clobbers reg byte a -Statement [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ) always clobbers reg byte a -Statement [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ) always clobbers reg byte a -Statement [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ) always clobbers reg byte a -Statement [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ) always clobbers reg byte a -Statement [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ) always clobbers reg byte a -Statement [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ) always clobbers reg byte a -Statement [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a reg byte y -Statement [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mulf8s:25 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#0 ] main:2::mulf8s:31 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a -Statement [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a -Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x -Statement [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mulf8s:31::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a -Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a -Statement [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::$1 ] ) always clobbers reg byte a -Statement [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a -Statement [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 ] ) always clobbers reg byte a reg byte y -Statement [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] ) always clobbers reg byte a -Statement [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ) always clobbers reg byte a -Statement [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] ) always clobbers reg byte a -Statement [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] ) always clobbers reg byte a -Statement [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ) always clobbers reg byte a -Statement [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] ) always clobbers reg byte a -Statement [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] ) always clobbers reg byte a -Statement [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] ) always clobbers reg byte a -Statement [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ) always clobbers reg byte a -Statement [179] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ) always clobbers reg byte a -Statement [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ) always clobbers reg byte y -Statement [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ) always clobbers reg byte a -Statement [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ) always clobbers reg byte a -Statement [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] ) always clobbers reg byte a reg byte y -Statement [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] ) always clobbers reg byte a reg byte y -Statement [203] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:162 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ) always clobbers reg byte a -Statement [207] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:162 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ) always clobbers reg byte a -Statement [211] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:162 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ) always clobbers reg byte a -Statement [217] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ( main:2::prepareBobs:7::protoBobShiftRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] main:2::prepareBobs:7::protoBobShiftRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ) always clobbers reg byte a -Statement [221] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ( main:2::prepareBobs:7::protoBobShiftRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] main:2::prepareBobs:7::protoBobShiftRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ) always clobbers reg byte a -Statement [225] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ( main:2::prepareBobs:7::protoBobShiftRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] main:2::prepareBobs:7::protoBobShiftRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ) always clobbers reg byte a -Statement [229] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ( main:2::prepareBobs:7::protoBobShiftRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] main:2::prepareBobs:7::protoBobShiftRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ) always clobbers reg byte a -Statement [233] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [237] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Statement [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Statement [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [254] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [265] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$4 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$4 ] ) always clobbers reg byte a -Statement [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [267] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [268] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [270] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Potential registers zp[1]:2 [ main::angle#8 main::angle#1 ] : zp[1]:2 , -Potential registers zp[1]:3 [ main::r#2 main::r#1 ] : zp[1]:3 , -Potential registers zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] : zp[1]:4 , -Potential registers zp[2]:5 [ renderBobCleanupNext#17 renderBobCleanupNext#13 ] : zp[2]:5 , -Potential registers zp[1]:7 [ main::i#2 main::i#1 ] : zp[1]:7 , -Potential registers zp[1]:8 [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] : zp[1]:8 , reg byte a , reg byte x , -Potential registers zp[1]:9 [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] : zp[1]:9 , reg byte x , reg byte y , -Potential registers zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] : zp[2]:10 , -Potential registers zp[1]:12 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] : zp[1]:12 , reg byte x , -Potential registers zp[2]:13 [ memset::dst#2 memset::dst#1 ] : zp[2]:13 , -Potential registers zp[1]:15 [ renderBobInit::y#2 renderBobInit::y#1 ] : zp[1]:15 , reg byte x , reg byte y , -Potential registers zp[1]:16 [ renderBobInit::i#2 renderBobInit::i#1 ] : zp[1]:16 , reg byte x , reg byte y , -Potential registers zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] : zp[1]:17 , reg byte x , -Potential registers zp[2]:18 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] : zp[2]:18 , -Potential registers zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] : zp[1]:20 , reg byte x , -Potential registers zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] : zp[1]:21 , reg byte x , -Potential registers zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] : zp[1]:22 , reg byte x , -Potential registers zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] : zp[1]:23 , reg byte x , -Potential registers zp[2]:24 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] : zp[2]:24 , -Potential registers zp[2]:26 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] : zp[2]:26 , -Potential registers zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] : zp[1]:28 , reg byte x , -Potential registers zp[2]:29 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] : zp[2]:29 , -Potential registers zp[1]:31 [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] : zp[1]:31 , reg byte x , reg byte y , -Potential registers zp[2]:32 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] : zp[2]:32 , -Potential registers zp[1]:34 [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] : zp[1]:34 , reg byte x , reg byte y , -Potential registers zp[1]:35 [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] : zp[1]:35 , reg byte x , reg byte y , -Potential registers zp[1]:36 [ charsetFindOrAddGlyph::found#2 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:37 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] : zp[1]:37 , reg byte x , reg byte y , -Potential registers zp[1]:38 [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] : zp[1]:38 , reg byte x , reg byte y , -Potential registers zp[1]:39 [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] : zp[1]:39 , reg byte x , reg byte y , -Potential registers zp[1]:40 [ protoBobShiftRight::carry#1 ] : zp[1]:40 , reg byte x , reg byte y , -Potential registers zp[1]:41 [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] : zp[1]:41 , reg byte x , reg byte y , -Potential registers zp[2]:42 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] : zp[2]:42 , -Potential registers zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] : zp[1]:44 , reg byte x , -Potential registers zp[2]:45 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] : zp[2]:45 , -Potential registers zp[1]:47 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] : zp[1]:47 , reg byte x , -Potential registers zp[2]:48 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] : zp[2]:48 , -Potential registers zp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] : zp[1]:50 , reg byte x , -Potential registers zp[2]:51 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] : zp[2]:51 , -Potential registers zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] : zp[1]:53 , reg byte x , -Potential registers zp[2]:54 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] : zp[2]:54 , -Potential registers zp[2]:56 [ mulf8s::return#2 ] : zp[2]:56 , -Potential registers zp[2]:58 [ main::$10 ] : zp[2]:58 , -Potential registers zp[2]:60 [ main::x#0 ] : zp[2]:60 , -Potential registers zp[2]:62 [ mulf8s::return#3 ] : zp[2]:62 , -Potential registers zp[2]:64 [ main::$12 ] : zp[2]:64 , -Potential registers zp[2]:66 [ main::$13 ] : zp[2]:66 , -Potential registers zp[2]:68 [ main::y#0 ] : zp[2]:68 , -Potential registers zp[1]:70 [ renderBob::xpos#0 ] : zp[1]:70 , reg byte x , reg byte y , -Potential registers zp[1]:71 [ renderBob::ypos#0 ] : zp[1]:71 , reg byte x , reg byte y , -Potential registers zp[1]:72 [ keyboard_key_pressed::return#2 ] : zp[1]:72 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:73 [ main::$19 ] : zp[1]:73 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:74 [ keyboard_key_pressed::return#3 ] : zp[1]:74 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:75 [ main::$21 ] : zp[1]:75 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:76 [ keyboard_matrix_read::return#2 ] : zp[1]:76 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:77 [ keyboard_key_pressed::$2 ] : zp[1]:77 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:78 [ keyboard_key_pressed::return#0 ] : zp[1]:78 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:79 [ keyboard_matrix_read::return#0 ] : zp[1]:79 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:80 [ renderBob::x_char_offset#0 ] : zp[1]:80 , reg byte x , reg byte y , -Potential registers zp[1]:81 [ renderBob::y_char_offset#0 ] : zp[1]:81 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:82 [ renderBob::$8 ] : zp[1]:82 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:83 [ renderBob::y_offset#0 ] : zp[2]:83 , -Potential registers zp[2]:85 [ renderBob::$2 ] : zp[2]:85 , -Potential registers zp[2]:87 [ renderBob::screen#0 ] : zp[2]:87 , -Potential registers zp[1]:89 [ renderBob::$4 ] : zp[1]:89 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:90 [ renderBob::$5 ] : zp[1]:90 , reg byte x , reg byte y , -Potential registers zp[1]:91 [ renderBob::$6 ] : zp[1]:91 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:92 [ renderBob::bob_table_idx#0 ] : zp[1]:92 , reg byte x , -Potential registers zp[1]:93 [ mulf8u_prepare::a#0 ] : zp[1]:93 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:94 [ mulf8s_prepared::b#0 ] : zp[1]:94 , reg byte y , -Potential registers zp[2]:95 [ mulf8s::return#0 ] : zp[2]:95 , -Potential registers zp[1]:97 [ mulf8u_prepared::b#0 ] : zp[1]:97 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:98 [ mulf8u_prepared::return#2 ] : zp[2]:98 , -Potential registers zp[1]:100 [ mulf8s_prepared::$8 ] : zp[1]:100 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:101 [ mulf8s_prepared::$15 ] : zp[1]:101 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:102 [ mulf8s_prepared::$12 ] : zp[1]:102 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:103 [ mulf8s_prepared::$16 ] : zp[1]:103 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:104 [ mulf8u_prepared::return#0 ] : zp[2]:104 , -Potential registers zp[1]:106 [ renderBobCleanup::$1 ] : zp[1]:106 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:107 [ renderBobCleanup::screen#0 ] : zp[2]:107 , -Potential registers zp[2]:109 [ renderBobInit::$0 ] : zp[2]:109 , -Potential registers zp[2]:111 [ renderBobInit::$6 ] : zp[2]:111 , -Potential registers zp[2]:113 [ renderBobInit::$7 ] : zp[2]:113 , -Potential registers zp[2]:115 [ renderBobInit::$1 ] : zp[2]:115 , -Potential registers zp[1]:117 [ renderBobInit::$4 ] : zp[1]:117 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:118 [ renderBobInit::$5 ] : zp[1]:118 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:119 [ charsetFindOrAddGlyph::return#1 ] : zp[1]:119 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:120 [ prepareBobs::$6 ] : zp[1]:120 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:121 [ protoBobShiftRight::$1 ] : zp[1]:121 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:122 [ protoBobShiftRight::$5 ] : zp[1]:122 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:123 [ protoBobShiftRight::$6 ] : zp[1]:123 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:124 [ mulf_init::$1 ] : zp[1]:124 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:125 [ mulf_init::$4 ] : zp[1]:125 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:126 [ mulf_init::$5 ] : zp[1]:126 , reg byte a , reg byte x , reg byte y , +Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::origX#8 main::rowOffsetY#10 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 ] ) always clobbers reg byte a +Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::origX#8 main::rowOffsetY#10 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 ] ) always clobbers reg byte a +Statement [20] (signed word) main::x#4 ← (signed word) main::origX#8 [ main::origX#8 main::rowOffsetY#10 main::x#4 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#4 ] ) always clobbers reg byte a +Statement [22] (signed word) main::x#7 ← (signed word) main::x#0 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 ] ) always clobbers reg byte a +Statement [23] (signed word) main::y#6 ← (signed word) main::y#0 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 main::y#6 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 main::y#6 ] ) always clobbers reg byte a +Statement [25] *((const byte*) BORDERCOL) ← (byte) 1 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 ] ) always clobbers reg byte a +Statement [26] (byte) renderBob::xpos#0 ← > (signed word) main::x#2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 ] ) always clobbers reg byte a +Statement [27] (byte) renderBob::ypos#0 ← > (signed word) main::y#2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 renderBob::ypos#0 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 renderBob::ypos#0 ] ) always clobbers reg byte a +Statement [29] (signed word) main::x#1 ← (signed word) main::x#2 + (const signed word) main::rowOffsetX [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::y#2 main::row#2 main::x#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::y#2 main::row#2 main::x#1 ] ) always clobbers reg byte a +Statement [30] (signed word) main::y#1 ← (signed word) main::y#2 + (signed word) main::rowOffsetY#10 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ) always clobbers reg byte a +Statement [31] *((const byte*) BORDERCOL) ← (byte) 2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ) always clobbers reg byte a +Statement [34] (signed word) main::rowX#1 ← (signed word) main::x#0 + (const signed word) main::colOffsetX [ main::origX#8 main::rowOffsetY#10 main::y#0 main::col#5 main::rowX#1 renderBobCleanupNext#13 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::y#0 main::col#5 main::rowX#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a +Statement [35] (signed word) main::rowY#1 ← (signed word) main::y#0 + (const signed word) main::colOffsetY [ main::origX#8 main::rowOffsetY#10 main::col#5 main::rowX#1 main::rowY#1 renderBobCleanupNext#13 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::col#5 main::rowX#1 main::rowY#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a +Statement [38] (signed word) main::origX#1 ← (signed word) main::origX#8 + (signed word) $100 [ main::rowOffsetY#10 main::origX#1 ] ( main:2 [ main::rowOffsetY#10 main::origX#1 ] ) always clobbers reg byte a +Statement [39] (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#10 + (signed word) $80 [ main::origX#1 main::rowOffsetY#1 ] ( main:2 [ main::origX#1 main::rowOffsetY#1 ] ) always clobbers reg byte a +Statement [40] *((const byte*) BORDERCOL) ← (byte) 0 [ main::origX#1 main::rowOffsetY#1 ] ( main:2 [ main::origX#1 main::rowOffsetY#1 ] ) always clobbers reg byte a +Statement [50] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [52] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [54] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [62] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:41::keyboard_matrix_read:57 [ main::origX#1 main::rowOffsetY#1 ] main:2::keyboard_key_pressed:46::keyboard_matrix_read:57 [ ] ) always clobbers reg byte a +Statement [63] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:41::keyboard_matrix_read:57 [ main::origX#1 main::rowOffsetY#1 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:46::keyboard_matrix_read:57 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [65] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ) always clobbers reg byte a +Statement [66] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ) always clobbers reg byte a +Statement [67] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ) always clobbers reg byte a +Statement [68] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ) always clobbers reg byte a +Statement [69] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ) always clobbers reg byte a +Statement [70] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ) always clobbers reg byte a +Statement [71] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ) always clobbers reg byte a +Statement [72] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ) always clobbers reg byte a +Statement [73] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ) always clobbers reg byte a +Statement [74] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a +Statement [75] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [76] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a +Statement [77] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [78] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [79] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [80] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [81] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [82] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [84] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [85] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 ] ) always clobbers reg byte a reg byte y +Statement [89] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::$1 ] ) always clobbers reg byte a +Statement [90] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a +Statement [91] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [92] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [93] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [94] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [95] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [96] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [97] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [98] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [99] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 ] ) always clobbers reg byte a reg byte y +Statement [105] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a +Statement [107] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [111] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] ) always clobbers reg byte a +Statement [112] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ) always clobbers reg byte a +Statement [113] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] ) always clobbers reg byte a +Statement [114] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] ) always clobbers reg byte a +Statement [115] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ) always clobbers reg byte a +Statement [116] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] ) always clobbers reg byte a +Statement [120] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] ) always clobbers reg byte a +Statement [121] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] ) always clobbers reg byte a +Statement [137] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ) always clobbers reg byte a +Statement [145] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ) always clobbers reg byte a +Statement [149] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ) always clobbers reg byte y +Statement [150] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ) always clobbers reg byte a +Statement [151] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ) always clobbers reg byte a +Statement [156] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:152 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] ) always clobbers reg byte a reg byte y +Statement [159] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:152 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] ) always clobbers reg byte a reg byte y +Statement [169] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ) always clobbers reg byte a +Statement [173] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ) always clobbers reg byte a +Statement [177] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ) always clobbers reg byte a +Statement [183] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ) always clobbers reg byte a +Statement [187] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ) always clobbers reg byte a +Statement [191] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ) always clobbers reg byte a +Statement [195] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ) always clobbers reg byte a +Statement [199] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a +Statement [200] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a +Statement [201] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a +Statement [203] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a +Statement [204] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a +Statement [205] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a +Statement [211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a +Statement [213] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a +Statement [214] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a +Statement [215] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a +Statement [217] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [218] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [220] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [226] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a +Statement [231] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$4 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$4 ] ) always clobbers reg byte a +Statement [232] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [233] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [234] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [236] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Potential registers zp[2]:2 [ main::origX#8 main::origX#1 ] : zp[2]:2 , +Potential registers zp[2]:4 [ main::rowOffsetY#10 main::rowOffsetY#1 ] : zp[2]:4 , +Potential registers zp[2]:6 [ main::x#0 main::x#4 main::rowX#1 ] : zp[2]:6 , +Potential registers zp[2]:8 [ main::y#0 main::rowY#1 ] : zp[2]:8 , +Potential registers zp[1]:10 [ main::col#5 main::col#1 ] : zp[1]:10 , reg byte x , +Potential registers zp[2]:11 [ main::x#2 main::x#1 main::x#7 ] : zp[2]:11 , +Potential registers zp[2]:13 [ main::y#2 main::y#1 main::y#6 ] : zp[2]:13 , +Potential registers zp[2]:15 [ renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] : zp[2]:15 , +Potential registers zp[1]:17 [ main::row#2 main::row#1 ] : zp[1]:17 , reg byte x , +Potential registers zp[1]:18 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] : zp[1]:18 , reg byte x , +Potential registers zp[2]:19 [ memset::dst#2 memset::dst#1 ] : zp[2]:19 , +Potential registers zp[1]:21 [ renderBobInit::y#2 renderBobInit::y#1 ] : zp[1]:21 , reg byte x , reg byte y , +Potential registers zp[1]:22 [ renderBobInit::i#2 renderBobInit::i#1 ] : zp[1]:22 , reg byte x , reg byte y , +Potential registers zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] : zp[1]:23 , reg byte x , +Potential registers zp[2]:24 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] : zp[2]:24 , +Potential registers zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] : zp[1]:26 , reg byte x , +Potential registers zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] : zp[1]:27 , reg byte x , +Potential registers zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] : zp[1]:28 , reg byte x , +Potential registers zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] : zp[1]:29 , reg byte x , +Potential registers zp[2]:30 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] : zp[2]:30 , +Potential registers zp[2]:32 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] : zp[2]:32 , +Potential registers zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] : zp[1]:34 , reg byte x , +Potential registers zp[2]:35 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] : zp[2]:35 , +Potential registers zp[1]:37 [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] : zp[1]:37 , reg byte x , reg byte y , +Potential registers zp[2]:38 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] : zp[2]:38 , +Potential registers zp[1]:40 [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] : zp[1]:40 , reg byte x , reg byte y , +Potential registers zp[1]:41 [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] : zp[1]:41 , reg byte x , reg byte y , +Potential registers zp[1]:42 [ charsetFindOrAddGlyph::found#2 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] : zp[1]:43 , reg byte x , reg byte y , +Potential registers zp[1]:44 [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] : zp[1]:44 , reg byte x , reg byte y , +Potential registers zp[1]:45 [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] : zp[1]:45 , reg byte x , reg byte y , +Potential registers zp[1]:46 [ protoBobShiftRight::carry#1 ] : zp[1]:46 , reg byte x , reg byte y , +Potential registers zp[1]:47 [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] : zp[1]:47 , reg byte x , reg byte y , +Potential registers zp[2]:48 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] : zp[2]:48 , +Potential registers zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] : zp[1]:50 , reg byte x , +Potential registers zp[2]:51 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] : zp[2]:51 , +Potential registers zp[1]:53 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] : zp[1]:53 , reg byte x , +Potential registers zp[2]:54 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] : zp[2]:54 , +Potential registers zp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] : zp[1]:56 , reg byte x , +Potential registers zp[2]:57 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] : zp[2]:57 , +Potential registers zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] : zp[1]:59 , reg byte x , +Potential registers zp[2]:60 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] : zp[2]:60 , +Potential registers zp[1]:62 [ renderBob::xpos#0 ] : zp[1]:62 , reg byte x , reg byte y , +Potential registers zp[1]:63 [ renderBob::ypos#0 ] : zp[1]:63 , reg byte x , reg byte y , +Potential registers zp[1]:64 [ keyboard_key_pressed::return#2 ] : zp[1]:64 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:65 [ main::$15 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:66 [ keyboard_key_pressed::return#3 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:67 [ main::$17 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:68 [ keyboard_matrix_read::return#2 ] : zp[1]:68 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:69 [ keyboard_key_pressed::$2 ] : zp[1]:69 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:70 [ keyboard_key_pressed::return#0 ] : zp[1]:70 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:71 [ keyboard_matrix_read::return#0 ] : zp[1]:71 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:72 [ renderBob::x_char_offset#0 ] : zp[1]:72 , reg byte x , reg byte y , +Potential registers zp[1]:73 [ renderBob::y_char_offset#0 ] : zp[1]:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:74 [ renderBob::$8 ] : zp[1]:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:75 [ renderBob::y_offset#0 ] : zp[2]:75 , +Potential registers zp[2]:77 [ renderBob::$2 ] : zp[2]:77 , +Potential registers zp[2]:79 [ renderBob::screen#0 ] : zp[2]:79 , +Potential registers zp[1]:81 [ renderBob::$4 ] : zp[1]:81 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:82 [ renderBob::$5 ] : zp[1]:82 , reg byte x , reg byte y , +Potential registers zp[1]:83 [ renderBob::$6 ] : zp[1]:83 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:84 [ renderBob::bob_table_idx#0 ] : zp[1]:84 , reg byte x , +Potential registers zp[1]:85 [ renderBobCleanup::$1 ] : zp[1]:85 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:86 [ renderBobCleanup::screen#0 ] : zp[2]:86 , +Potential registers zp[2]:88 [ renderBobInit::$0 ] : zp[2]:88 , +Potential registers zp[2]:90 [ renderBobInit::$6 ] : zp[2]:90 , +Potential registers zp[2]:92 [ renderBobInit::$7 ] : zp[2]:92 , +Potential registers zp[2]:94 [ renderBobInit::$1 ] : zp[2]:94 , +Potential registers zp[1]:96 [ renderBobInit::$4 ] : zp[1]:96 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:97 [ renderBobInit::$5 ] : zp[1]:97 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:98 [ charsetFindOrAddGlyph::return#1 ] : zp[1]:98 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:99 [ prepareBobs::$6 ] : zp[1]:99 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:100 [ protoBobShiftRight::$1 ] : zp[1]:100 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:101 [ protoBobShiftRight::$5 ] : zp[1]:101 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:102 [ protoBobShiftRight::$6 ] : zp[1]:102 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:103 [ mulf_init::$1 ] : zp[1]:103 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:104 [ mulf_init::$4 ] : zp[1]:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:105 [ mulf_init::$5 ] : zp[1]:105 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [charsetFindOrAddGlyph] 366,670.33: zp[1]:35 [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] 36,670.33: zp[1]:34 [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] 30,002.31: zp[2]:32 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] 11,938.75: zp[1]:31 [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] 10,001: zp[1]:36 [ charsetFindOrAddGlyph::found#2 ] 9,402.2: zp[2]:29 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] 2,002: zp[1]:119 [ charsetFindOrAddGlyph::return#1 ] -Uplift Scope [protoBobShiftRight] 5,705.7: zp[1]:38 [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] 2,288: zp[1]:39 [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] 2,002: zp[1]:121 [ protoBobShiftRight::$1 ] 2,002: zp[1]:122 [ protoBobShiftRight::$5 ] 2,002: zp[1]:123 [ protoBobShiftRight::$6 ] 1,232: zp[1]:37 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] 111.22: zp[1]:40 [ protoBobShiftRight::carry#1 ] -Uplift Scope [prepareBobs] 2,302.3: zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] 2,002: zp[1]:120 [ prepareBobs::$6 ] 1,257.33: zp[2]:26 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] 929.5: zp[2]:24 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] 218.83: zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] 70.52: zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] 23.43: zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Uplift Scope [] 2,729.71: zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] 338.4: zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] 324.85: zp[2]:18 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] 10.74: zp[2]:5 [ renderBobCleanupNext#17 renderBobCleanupNext#13 ] -Uplift Scope [mulf8s] 472: zp[1]:9 [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] 404: zp[1]:8 [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] 202: zp[2]:56 [ mulf8s::return#2 ] 202: zp[2]:62 [ mulf8s::return#3 ] 51: zp[2]:95 [ mulf8s::return#0 ] -Uplift Scope [main] 202: zp[2]:58 [ main::$10 ] 202: zp[2]:64 [ main::$12 ] 202: zp[2]:66 [ main::$13 ] 161.12: zp[1]:7 [ main::i#2 main::i#1 ] 76.79: zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] 57.43: zp[1]:3 [ main::r#2 main::r#1 ] 40.4: zp[2]:68 [ main::y#0 ] 22: zp[1]:73 [ main::$19 ] 22: zp[1]:75 [ main::$21 ] 18.36: zp[2]:60 [ main::x#0 ] 4.85: zp[1]:2 [ main::angle#8 main::angle#1 ] -Uplift Scope [renderBobCleanup] 202: zp[1]:106 [ renderBobCleanup::$1 ] 176.75: zp[1]:12 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] 112.22: zp[2]:107 [ renderBobCleanup::screen#0 ] -Uplift Scope [protoBobShiftDown] 363.6: zp[1]:41 [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] -Uplift Scope [mulf_init] 47.67: zp[2]:54 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp[2]:48 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp[2]:42 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp[1]:47 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp[1]:124 [ mulf_init::$1 ] 22: zp[1]:125 [ mulf_init::$4 ] 22: zp[1]:126 [ mulf_init::$5 ] 15.4: zp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp[2]:51 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp[2]:45 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Uplift Scope [renderBobInit] 27.5: zp[1]:16 [ renderBobInit::i#2 renderBobInit::i#1 ] 22: zp[2]:111 [ renderBobInit::$6 ] 22: zp[2]:113 [ renderBobInit::$7 ] 22: zp[1]:117 [ renderBobInit::$4 ] 22: zp[1]:118 [ renderBobInit::$5 ] 21.21: zp[1]:15 [ renderBobInit::y#2 renderBobInit::y#1 ] 16.5: zp[2]:109 [ renderBobInit::$0 ] 11: zp[2]:115 [ renderBobInit::$1 ] -Uplift Scope [renderBob] 15: zp[1]:71 [ renderBob::ypos#0 ] 10.5: zp[1]:70 [ renderBob::xpos#0 ] 4: zp[1]:81 [ renderBob::y_char_offset#0 ] 4: zp[1]:82 [ renderBob::$8 ] 4: zp[2]:83 [ renderBob::y_offset#0 ] 4: zp[2]:85 [ renderBob::$2 ] 4: zp[1]:89 [ renderBob::$4 ] 4: zp[1]:91 [ renderBob::$6 ] 2: zp[1]:90 [ renderBob::$5 ] 1.82: zp[1]:92 [ renderBob::bob_table_idx#0 ] 1.47: zp[2]:87 [ renderBob::screen#0 ] 0.8: zp[1]:80 [ renderBob::x_char_offset#0 ] -Uplift Scope [keyboard_key_pressed] 22: zp[1]:72 [ keyboard_key_pressed::return#2 ] 22: zp[1]:74 [ keyboard_key_pressed::return#3 ] 6: zp[1]:78 [ keyboard_key_pressed::return#0 ] 4: zp[1]:77 [ keyboard_key_pressed::$2 ] -Uplift Scope [memset] 36.67: zp[2]:13 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [mulf8s_prepared] 13.83: zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp[1]:100 [ mulf8s_prepared::$8 ] 4: zp[1]:101 [ mulf8s_prepared::$15 ] 4: zp[1]:102 [ mulf8s_prepared::$12 ] 4: zp[1]:103 [ mulf8s_prepared::$16 ] 0.4: zp[1]:94 [ mulf8s_prepared::b#0 ] -Uplift Scope [mulf8u_prepared] 4: zp[1]:97 [ mulf8u_prepared::b#0 ] 4: zp[2]:98 [ mulf8u_prepared::return#2 ] 1.33: zp[2]:104 [ mulf8u_prepared::return#0 ] -Uplift Scope [keyboard_matrix_read] 4: zp[1]:76 [ keyboard_matrix_read::return#2 ] 1.33: zp[1]:79 [ keyboard_matrix_read::return#0 ] -Uplift Scope [mulf8u_prepare] 4: zp[1]:93 [ mulf8u_prepare::a#0 ] +Uplift Scope [charsetFindOrAddGlyph] 366,670.33: zp[1]:41 [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] 36,670.33: zp[1]:40 [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] 30,002.31: zp[2]:38 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] 11,938.75: zp[1]:37 [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] 10,001: zp[1]:42 [ charsetFindOrAddGlyph::found#2 ] 9,402.2: zp[2]:35 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] 2,002: zp[1]:98 [ charsetFindOrAddGlyph::return#1 ] +Uplift Scope [protoBobShiftRight] 5,705.7: zp[1]:44 [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] 2,288: zp[1]:45 [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] 2,002: zp[1]:100 [ protoBobShiftRight::$1 ] 2,002: zp[1]:101 [ protoBobShiftRight::$5 ] 2,002: zp[1]:102 [ protoBobShiftRight::$6 ] 1,232: zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] 111.22: zp[1]:46 [ protoBobShiftRight::carry#1 ] +Uplift Scope [prepareBobs] 2,302.3: zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] 2,002: zp[1]:99 [ prepareBobs::$6 ] 1,257.33: zp[2]:32 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] 929.5: zp[2]:30 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] 218.83: zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] 70.52: zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] 23.43: zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Uplift Scope [main] 1,751.75: zp[1]:17 [ main::row#2 main::row#1 ] 1,219.83: zp[2]:13 [ main::y#2 main::y#1 main::y#6 ] 1,122.2: zp[2]:11 [ main::x#2 main::x#1 main::x#7 ] 164.97: zp[1]:10 [ main::col#5 main::col#1 ] 96.65: zp[2]:6 [ main::x#0 main::x#4 main::rowX#1 ] 88.98: zp[2]:8 [ main::y#0 main::rowY#1 ] 48.14: zp[2]:4 [ main::rowOffsetY#10 main::rowOffsetY#1 ] 22: zp[1]:65 [ main::$15 ] 22: zp[1]:67 [ main::$17 ] 4.64: zp[2]:2 [ main::origX#8 main::origX#1 ] +Uplift Scope [] 2,729.71: zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] 338.4: zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] 324.85: zp[2]:24 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] 193.64: zp[2]:15 [ renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] +Uplift Scope [renderBobCleanup] 202: zp[1]:85 [ renderBobCleanup::$1 ] 176.75: zp[1]:18 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] 112.22: zp[2]:86 [ renderBobCleanup::screen#0 ] +Uplift Scope [protoBobShiftDown] 363.6: zp[1]:47 [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] +Uplift Scope [renderBob] 143.57: zp[1]:63 [ renderBob::ypos#0 ] 100.5: zp[1]:62 [ renderBob::xpos#0 ] 4: zp[1]:73 [ renderBob::y_char_offset#0 ] 4: zp[1]:74 [ renderBob::$8 ] 4: zp[2]:75 [ renderBob::y_offset#0 ] 4: zp[2]:77 [ renderBob::$2 ] 4: zp[1]:81 [ renderBob::$4 ] 4: zp[1]:83 [ renderBob::$6 ] 2: zp[1]:82 [ renderBob::$5 ] 1.82: zp[1]:84 [ renderBob::bob_table_idx#0 ] 1.47: zp[2]:79 [ renderBob::screen#0 ] 0.8: zp[1]:72 [ renderBob::x_char_offset#0 ] +Uplift Scope [mulf_init] 47.67: zp[2]:60 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp[2]:54 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp[2]:48 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp[1]:53 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp[1]:103 [ mulf_init::$1 ] 22: zp[1]:104 [ mulf_init::$4 ] 22: zp[1]:105 [ mulf_init::$5 ] 15.4: zp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp[2]:57 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp[2]:51 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [renderBobInit] 27.5: zp[1]:22 [ renderBobInit::i#2 renderBobInit::i#1 ] 22: zp[2]:90 [ renderBobInit::$6 ] 22: zp[2]:92 [ renderBobInit::$7 ] 22: zp[1]:96 [ renderBobInit::$4 ] 22: zp[1]:97 [ renderBobInit::$5 ] 21.21: zp[1]:21 [ renderBobInit::y#2 renderBobInit::y#1 ] 16.5: zp[2]:88 [ renderBobInit::$0 ] 11: zp[2]:94 [ renderBobInit::$1 ] +Uplift Scope [keyboard_key_pressed] 22: zp[1]:64 [ keyboard_key_pressed::return#2 ] 22: zp[1]:66 [ keyboard_key_pressed::return#3 ] 6: zp[1]:70 [ keyboard_key_pressed::return#0 ] 4: zp[1]:69 [ keyboard_key_pressed::$2 ] +Uplift Scope [memset] 36.67: zp[2]:19 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [keyboard_matrix_read] 4: zp[1]:68 [ keyboard_matrix_read::return#2 ] 1.33: zp[1]:71 [ keyboard_matrix_read::return#0 ] Uplift Scope [RADIX] Uplift Scope [progress_init] Uplift Scope [progress_inc] -Uplifting [charsetFindOrAddGlyph] best 4014542 combination reg byte y [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] reg byte y [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] zp[2]:32 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] reg byte x [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] reg byte a [ charsetFindOrAddGlyph::found#2 ] zp[2]:29 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] zp[1]:119 [ charsetFindOrAddGlyph::return#1 ] +Uplifting [charsetFindOrAddGlyph] best 4099890 combination reg byte y [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] reg byte y [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] zp[2]:38 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] reg byte x [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] reg byte a [ charsetFindOrAddGlyph::found#2 ] zp[2]:35 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] zp[1]:98 [ charsetFindOrAddGlyph::return#1 ] Limited combination testing to 100 combinations of 432 possible. -Uplifting [protoBobShiftRight] best 3976542 combination reg byte x [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] reg byte y [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] reg byte a [ protoBobShiftRight::$1 ] reg byte a [ protoBobShiftRight::$5 ] zp[1]:123 [ protoBobShiftRight::$6 ] zp[1]:37 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] zp[1]:40 [ protoBobShiftRight::carry#1 ] +Uplifting [protoBobShiftRight] best 4061890 combination reg byte x [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] reg byte y [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] reg byte a [ protoBobShiftRight::$1 ] reg byte a [ protoBobShiftRight::$5 ] zp[1]:102 [ protoBobShiftRight::$6 ] zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] zp[1]:46 [ protoBobShiftRight::carry#1 ] Limited combination testing to 100 combinations of 5184 possible. -Uplifting [prepareBobs] best 3970542 combination zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] reg byte a [ prepareBobs::$6 ] zp[2]:26 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] zp[2]:24 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Uplifting [] best 3970542 combination zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] zp[2]:18 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] zp[2]:5 [ renderBobCleanupNext#17 renderBobCleanupNext#13 ] -Uplifting [mulf8s] best 3969336 combination reg byte x [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] reg byte a [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] zp[2]:56 [ mulf8s::return#2 ] zp[2]:62 [ mulf8s::return#3 ] zp[2]:95 [ mulf8s::return#0 ] -Uplifting [main] best 3969216 combination zp[2]:58 [ main::$10 ] zp[2]:64 [ main::$12 ] zp[2]:66 [ main::$13 ] zp[1]:7 [ main::i#2 main::i#1 ] zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] zp[1]:3 [ main::r#2 main::r#1 ] zp[2]:68 [ main::y#0 ] reg byte a [ main::$19 ] reg byte a [ main::$21 ] zp[2]:60 [ main::x#0 ] zp[1]:2 [ main::angle#8 main::angle#1 ] -Uplifting [renderBobCleanup] best 3967816 combination reg byte a [ renderBobCleanup::$1 ] reg byte x [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] zp[2]:107 [ renderBobCleanup::screen#0 ] -Uplifting [protoBobShiftDown] best 3966216 combination reg byte x [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] -Uplifting [mulf_init] best 3965966 combination zp[2]:54 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:48 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:42 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:51 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:45 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Limited combination testing to 100 combinations of 1024 possible. -Uplifting [renderBobInit] best 3965676 combination reg byte x [ renderBobInit::i#2 renderBobInit::i#1 ] zp[2]:111 [ renderBobInit::$6 ] zp[2]:113 [ renderBobInit::$7 ] reg byte a [ renderBobInit::$4 ] reg byte a [ renderBobInit::$5 ] reg byte x [ renderBobInit::y#2 renderBobInit::y#1 ] zp[2]:109 [ renderBobInit::$0 ] zp[2]:115 [ renderBobInit::$1 ] -Limited combination testing to 100 combinations of 144 possible. -Uplifting [renderBob] best 3965562 combination reg byte x [ renderBob::ypos#0 ] zp[1]:70 [ renderBob::xpos#0 ] reg byte a [ renderBob::y_char_offset#0 ] reg byte a [ renderBob::$8 ] zp[2]:83 [ renderBob::y_offset#0 ] zp[2]:85 [ renderBob::$2 ] zp[1]:89 [ renderBob::$4 ] zp[1]:91 [ renderBob::$6 ] zp[1]:90 [ renderBob::$5 ] zp[1]:92 [ renderBob::bob_table_idx#0 ] zp[2]:87 [ renderBob::screen#0 ] zp[1]:80 [ renderBob::x_char_offset#0 ] +Uplifting [prepareBobs] best 4055890 combination zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] reg byte a [ prepareBobs::$6 ] zp[2]:32 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] zp[2]:30 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Uplifting [main] best 4046770 combination reg byte x [ main::row#2 main::row#1 ] zp[2]:13 [ main::y#2 main::y#1 main::y#6 ] zp[2]:11 [ main::x#2 main::x#1 main::x#7 ] zp[1]:10 [ main::col#5 main::col#1 ] zp[2]:6 [ main::x#0 main::x#4 main::rowX#1 ] zp[2]:8 [ main::y#0 main::rowY#1 ] zp[2]:4 [ main::rowOffsetY#10 main::rowOffsetY#1 ] reg byte a [ main::$15 ] reg byte a [ main::$17 ] zp[2]:2 [ main::origX#8 main::origX#1 ] +Uplifting [] best 4046770 combination zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] zp[2]:24 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] zp[2]:15 [ renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] +Uplifting [renderBobCleanup] best 4045370 combination reg byte a [ renderBobCleanup::$1 ] reg byte x [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] zp[2]:86 [ renderBobCleanup::screen#0 ] +Uplifting [protoBobShiftDown] best 4043770 combination reg byte x [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] +Uplifting [renderBob] best 4043760 combination zp[1]:63 [ renderBob::ypos#0 ] zp[1]:62 [ renderBob::xpos#0 ] reg byte a [ renderBob::y_char_offset#0 ] reg byte a [ renderBob::$8 ] zp[2]:75 [ renderBob::y_offset#0 ] zp[2]:77 [ renderBob::$2 ] zp[1]:81 [ renderBob::$4 ] zp[1]:83 [ renderBob::$6 ] zp[1]:82 [ renderBob::$5 ] zp[1]:84 [ renderBob::bob_table_idx#0 ] zp[2]:79 [ renderBob::screen#0 ] zp[1]:72 [ renderBob::x_char_offset#0 ] Limited combination testing to 100 combinations of 41472 possible. -Uplifting [keyboard_key_pressed] best 3965373 combination reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#3 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::$2 ] +Uplifting [mulf_init] best 4043510 combination zp[2]:60 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:54 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:48 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:57 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:51 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Limited combination testing to 100 combinations of 1024 possible. +Uplifting [renderBobInit] best 4043220 combination reg byte x [ renderBobInit::i#2 renderBobInit::i#1 ] zp[2]:90 [ renderBobInit::$6 ] zp[2]:92 [ renderBobInit::$7 ] reg byte a [ renderBobInit::$4 ] reg byte a [ renderBobInit::$5 ] reg byte x [ renderBobInit::y#2 renderBobInit::y#1 ] zp[2]:88 [ renderBobInit::$0 ] zp[2]:94 [ renderBobInit::$1 ] +Limited combination testing to 100 combinations of 144 possible. +Uplifting [keyboard_key_pressed] best 4043031 combination reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#3 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::$2 ] Limited combination testing to 100 combinations of 256 possible. -Uplifting [memset] best 3965373 combination zp[2]:13 [ memset::dst#2 memset::dst#1 ] -Uplifting [mulf8s_prepared] best 3965349 combination zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] reg byte a [ mulf8s_prepared::$8 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$12 ] reg byte a [ mulf8s_prepared::$16 ] zp[1]:94 [ mulf8s_prepared::b#0 ] -Limited combination testing to 100 combinations of 512 possible. -Uplifting [mulf8u_prepared] best 3965343 combination reg byte a [ mulf8u_prepared::b#0 ] zp[2]:98 [ mulf8u_prepared::return#2 ] zp[2]:104 [ mulf8u_prepared::return#0 ] -Uplifting [keyboard_matrix_read] best 3965331 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [mulf8u_prepare] best 3965325 combination reg byte a [ mulf8u_prepare::a#0 ] -Uplifting [RADIX] best 3965325 combination -Uplifting [progress_init] best 3965325 combination -Uplifting [progress_inc] best 3965325 combination -Attempting to uplift remaining variables inzp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] -Uplifting [] best 3965325 combination zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] -Attempting to uplift remaining variables inzp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Uplifting [prepareBobs] best 3965325 combination zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Attempting to uplift remaining variables inzp[1]:119 [ charsetFindOrAddGlyph::return#1 ] -Uplifting [charsetFindOrAddGlyph] best 3961325 combination reg byte a [ charsetFindOrAddGlyph::return#1 ] -Attempting to uplift remaining variables inzp[1]:123 [ protoBobShiftRight::$6 ] -Uplifting [protoBobShiftRight] best 3955325 combination reg byte a [ protoBobShiftRight::$6 ] -Attempting to uplift remaining variables inzp[1]:37 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] -Uplifting [protoBobShiftRight] best 3955325 combination zp[1]:37 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] -Attempting to uplift remaining variables inzp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] -Uplifting [] best 3955325 combination zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] -Attempting to uplift remaining variables inzp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -Uplifting [prepareBobs] best 3955325 combination zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -Attempting to uplift remaining variables inzp[1]:7 [ main::i#2 main::i#1 ] -Uplifting [main] best 3955325 combination zp[1]:7 [ main::i#2 main::i#1 ] -Attempting to uplift remaining variables inzp[1]:40 [ protoBobShiftRight::carry#1 ] -Uplifting [protoBobShiftRight] best 3955325 combination zp[1]:40 [ protoBobShiftRight::carry#1 ] -Attempting to uplift remaining variables inzp[1]:4 [ main::a#2 main::a#6 main::a#1 ] -Uplifting [main] best 3955325 combination zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] -Attempting to uplift remaining variables inzp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] -Uplifting [prepareBobs] best 3955325 combination zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] -Attempting to uplift remaining variables inzp[1]:3 [ main::r#2 main::r#1 ] -Uplifting [main] best 3955325 combination zp[1]:3 [ main::r#2 main::r#1 ] -Attempting to uplift remaining variables inzp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Uplifting [prepareBobs] best 3955325 combination zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Attempting to uplift remaining variables inzp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 3955185 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Attempting to uplift remaining variables inzp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] -Uplifting [mulf_init] best 3955185 combination zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] -Attempting to uplift remaining variables inzp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] -Uplifting [mulf_init] best 3955185 combination zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] -Attempting to uplift remaining variables inzp[1]:70 [ renderBob::xpos#0 ] -Uplifting [renderBob] best 3955185 combination zp[1]:70 [ renderBob::xpos#0 ] -Attempting to uplift remaining variables inzp[1]:2 [ main::angle#8 main::angle#1 ] -Uplifting [main] best 3955185 combination zp[1]:2 [ main::angle#8 main::angle#1 ] -Attempting to uplift remaining variables inzp[1]:89 [ renderBob::$4 ] -Uplifting [renderBob] best 3955181 combination reg byte a [ renderBob::$4 ] -Attempting to uplift remaining variables inzp[1]:91 [ renderBob::$6 ] -Uplifting [renderBob] best 3955175 combination reg byte a [ renderBob::$6 ] -Attempting to uplift remaining variables inzp[1]:90 [ renderBob::$5 ] -Uplifting [renderBob] best 3955175 combination zp[1]:90 [ renderBob::$5 ] -Attempting to uplift remaining variables inzp[1]:92 [ renderBob::bob_table_idx#0 ] -Uplifting [renderBob] best 3955147 combination reg byte x [ renderBob::bob_table_idx#0 ] -Attempting to uplift remaining variables inzp[1]:80 [ renderBob::x_char_offset#0 ] -Uplifting [renderBob] best 3955147 combination zp[1]:80 [ renderBob::x_char_offset#0 ] -Attempting to uplift remaining variables inzp[1]:94 [ mulf8s_prepared::b#0 ] -Uplifting [mulf8s_prepared] best 3955147 combination zp[1]:94 [ mulf8s_prepared::b#0 ] -Coalescing zero page register [ zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] ] with [ zp[2]:95 [ mulf8s::return#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 ] ] with [ zp[2]:98 [ mulf8u_prepared::return#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:24 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] ] with [ zp[2]:29 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:56 [ mulf8s::return#2 ] ] with [ zp[2]:58 [ main::$10 ] ] - score: 1 -Coalescing zero page register [ zp[2]:62 [ mulf8s::return#3 ] ] with [ zp[2]:64 [ main::$12 ] ] - score: 1 -Coalescing zero page register [ zp[2]:66 [ main::$13 ] ] with [ zp[2]:68 [ main::y#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:83 [ renderBob::y_offset#0 ] ] with [ zp[2]:85 [ renderBob::$2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:109 [ renderBobInit::$0 ] ] with [ zp[2]:113 [ renderBobInit::$7 ] ] - score: 1 -Coalescing zero page register [ zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#2 ] ] with [ zp[2]:56 [ mulf8s::return#2 main::$10 ] ] - score: 1 -Coalescing zero page register [ zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#2 mulf8s::return#2 main::$10 ] ] with [ zp[2]:62 [ mulf8s::return#3 main::$12 ] ] - score: 1 -Coalescing zero page register [ zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#2 mulf8s::return#2 main::$10 mulf8s::return#3 main::$12 ] ] with [ zp[2]:104 [ mulf8u_prepared::return#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:83 [ renderBob::y_offset#0 renderBob::$2 ] ] with [ zp[2]:87 [ renderBob::screen#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:109 [ renderBobInit::$0 renderBobInit::$7 ] ] with [ zp[2]:115 [ renderBobInit::$1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#2 mulf8s::return#2 main::$10 mulf8s::return#3 main::$12 mulf8u_prepared::return#0 ] ] with [ zp[2]:66 [ main::$13 main::y#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:13 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:5 [ renderBobCleanupNext#17 renderBobCleanupNext#13 ] ] -Coalescing zero page register [ zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] ] with [ zp[1]:2 [ main::angle#8 main::angle#1 ] ] -Coalescing zero page register [ zp[2]:18 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] ] with [ zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#2 mulf8s::return#2 main::$10 mulf8s::return#3 main::$12 mulf8u_prepared::return#0 main::$13 main::y#0 ] ] -Coalescing zero page register [ zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] ] with [ zp[1]:3 [ main::r#2 main::r#1 ] ] -Coalescing zero page register [ zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] ] with [ zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] ] -Coalescing zero page register [ zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] ] with [ zp[1]:7 [ main::i#2 main::i#1 ] ] -Coalescing zero page register [ zp[1]:37 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] ] with [ zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] ] -Coalescing zero page register [ zp[2]:42 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] with [ zp[2]:24 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] ] -Coalescing zero page register [ zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] ] with [ zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] ] -Coalescing zero page register [ zp[2]:45 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ] with [ zp[2]:26 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] ] -Coalescing zero page register [ zp[2]:48 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] with [ zp[2]:32 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] ] -Coalescing zero page register [ zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] ] with [ zp[1]:40 [ protoBobShiftRight::carry#1 ] ] -Coalescing zero page register [ zp[2]:60 [ main::x#0 ] ] with [ zp[2]:51 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ] -Coalescing zero page register [ zp[2]:83 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 ] ] with [ zp[2]:54 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ] -Coalescing zero page register [ zp[1]:94 [ mulf8s_prepared::b#0 ] ] with [ zp[1]:70 [ renderBob::xpos#0 ] ] -Coalescing zero page register [ zp[2]:109 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 ] ] with [ zp[2]:107 [ renderBobCleanup::screen#0 ] ] -Coalescing zero page register [ zp[2]:42 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] ] with [ zp[2]:13 [ memset::dst#2 memset::dst#1 renderBobCleanupNext#17 renderBobCleanupNext#13 ] ] -Coalescing zero page register [ zp[1]:80 [ renderBob::x_char_offset#0 ] ] with [ zp[1]:37 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 prepareBobs::cell#2 prepareBobs::cell#1 ] ] -Coalescing zero page register [ zp[2]:83 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ] with [ zp[2]:18 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#2 mulf8s::return#2 main::$10 mulf8s::return#3 main::$12 mulf8u_prepared::return#0 main::$13 main::y#0 ] ] -Coalescing zero page register [ zp[1]:90 [ renderBob::$5 ] ] with [ zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] ] -Coalescing zero page register [ zp[1]:94 [ mulf8s_prepared::b#0 renderBob::xpos#0 ] ] with [ zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 protoBobShiftRight::carry#1 ] ] -Coalescing zero page register [ zp[2]:109 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 renderBobCleanup::screen#0 ] ] with [ zp[2]:45 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] ] -Coalescing zero page register [ zp[2]:111 [ renderBobInit::$6 ] ] with [ zp[2]:48 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] ] -Allocated (was zp[1]:17) zp[1]:2 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 main::angle#8 main::angle#1 ] -Allocated (was zp[1]:20) zp[1]:3 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 main::r#2 main::r#1 ] -Allocated (was zp[1]:21) zp[1]:4 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 main::a#2 main::a#6 main::a#1 ] -Allocated (was zp[1]:22) zp[1]:5 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 main::i#2 main::i#1 ] -Allocated (was zp[2]:42) zp[2]:6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 memset::dst#2 memset::dst#1 renderBobCleanupNext#17 renderBobCleanupNext#13 ] -Allocated (was zp[2]:60) zp[2]:8 [ main::x#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] -Allocated (was zp[1]:80) zp[1]:10 [ renderBob::x_char_offset#0 protoBobShiftRight::i#2 protoBobShiftRight::i#1 prepareBobs::cell#2 prepareBobs::cell#1 ] -Allocated (was zp[2]:83) zp[2]:11 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#2 mulf8s::return#2 main::$10 mulf8s::return#3 main::$12 mulf8u_prepared::return#0 main::$13 main::y#0 ] -Allocated (was zp[1]:90) zp[1]:13 [ renderBob::$5 mulf_init::c#2 mulf_init::c#1 bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] -Allocated (was zp[1]:94) zp[1]:14 [ mulf8s_prepared::b#0 renderBob::xpos#0 mulf_init::dir#2 mulf_init::dir#4 protoBobShiftRight::carry#1 ] -Allocated (was zp[2]:109) zp[2]:15 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 renderBobCleanup::screen#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] -Allocated (was zp[2]:111) zp[2]:17 [ renderBobInit::$6 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] +Uplifting [memset] best 4043031 combination zp[2]:19 [ memset::dst#2 memset::dst#1 ] +Uplifting [keyboard_matrix_read] best 4043019 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#0 ] +Uplifting [RADIX] best 4043019 combination +Uplifting [progress_init] best 4043019 combination +Uplifting [progress_inc] best 4043019 combination +Attempting to uplift remaining variables inzp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] +Uplifting [] best 4043019 combination zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] +Attempting to uplift remaining variables inzp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] +Uplifting [prepareBobs] best 4043019 combination zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] +Attempting to uplift remaining variables inzp[1]:98 [ charsetFindOrAddGlyph::return#1 ] +Uplifting [charsetFindOrAddGlyph] best 4039019 combination reg byte a [ charsetFindOrAddGlyph::return#1 ] +Attempting to uplift remaining variables inzp[1]:102 [ protoBobShiftRight::$6 ] +Uplifting [protoBobShiftRight] best 4033019 combination reg byte a [ protoBobShiftRight::$6 ] +Attempting to uplift remaining variables inzp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] +Uplifting [protoBobShiftRight] best 4033019 combination zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] +Attempting to uplift remaining variables inzp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] +Uplifting [] best 4033019 combination zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] +Attempting to uplift remaining variables inzp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] +Uplifting [prepareBobs] best 4033019 combination zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] +Attempting to uplift remaining variables inzp[1]:10 [ main::col#5 main::col#1 ] +Uplifting [main] best 4033019 combination zp[1]:10 [ main::col#5 main::col#1 ] +Attempting to uplift remaining variables inzp[1]:63 [ renderBob::ypos#0 ] +Uplifting [renderBob] best 4033019 combination zp[1]:63 [ renderBob::ypos#0 ] +Attempting to uplift remaining variables inzp[1]:46 [ protoBobShiftRight::carry#1 ] +Uplifting [protoBobShiftRight] best 4033019 combination zp[1]:46 [ protoBobShiftRight::carry#1 ] +Attempting to uplift remaining variables inzp[1]:62 [ renderBob::xpos#0 ] +Uplifting [renderBob] best 4033019 combination zp[1]:62 [ renderBob::xpos#0 ] +Attempting to uplift remaining variables inzp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] +Uplifting [prepareBobs] best 4033019 combination zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] +Attempting to uplift remaining variables inzp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Uplifting [prepareBobs] best 4033019 combination zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Attempting to uplift remaining variables inzp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 4032879 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Attempting to uplift remaining variables inzp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] +Uplifting [mulf_init] best 4032879 combination zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] +Attempting to uplift remaining variables inzp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] +Uplifting [mulf_init] best 4032879 combination zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] +Attempting to uplift remaining variables inzp[1]:81 [ renderBob::$4 ] +Uplifting [renderBob] best 4032873 combination reg byte a [ renderBob::$4 ] +Attempting to uplift remaining variables inzp[1]:83 [ renderBob::$6 ] +Uplifting [renderBob] best 4032867 combination reg byte a [ renderBob::$6 ] +Attempting to uplift remaining variables inzp[1]:82 [ renderBob::$5 ] +Uplifting [renderBob] best 4032867 combination zp[1]:82 [ renderBob::$5 ] +Attempting to uplift remaining variables inzp[1]:84 [ renderBob::bob_table_idx#0 ] +Uplifting [renderBob] best 4032867 combination zp[1]:84 [ renderBob::bob_table_idx#0 ] +Attempting to uplift remaining variables inzp[1]:72 [ renderBob::x_char_offset#0 ] +Uplifting [renderBob] best 4032867 combination zp[1]:72 [ renderBob::x_char_offset#0 ] +Coalescing zero page register [ zp[2]:30 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] ] with [ zp[2]:35 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:75 [ renderBob::y_offset#0 ] ] with [ zp[2]:77 [ renderBob::$2 ] ] - score: 1 +Coalescing zero page register [ zp[1]:82 [ renderBob::$5 ] ] with [ zp[1]:84 [ renderBob::bob_table_idx#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:88 [ renderBobInit::$0 ] ] with [ zp[2]:92 [ renderBobInit::$7 ] ] - score: 1 +Coalescing zero page register [ zp[2]:75 [ renderBob::y_offset#0 renderBob::$2 ] ] with [ zp[2]:79 [ renderBob::screen#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:88 [ renderBobInit::$0 renderBobInit::$7 ] ] with [ zp[2]:94 [ renderBobInit::$1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:19 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:2 [ main::origX#8 main::origX#1 ] ] +Coalescing zero page register [ zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] ] with [ zp[1]:10 [ main::col#5 main::col#1 ] ] +Coalescing zero page register [ zp[2]:24 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] ] with [ zp[2]:4 [ main::rowOffsetY#10 main::rowOffsetY#1 ] ] +Coalescing zero page register [ zp[2]:30 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] ] with [ zp[2]:6 [ main::x#0 main::x#4 main::rowX#1 ] ] +Coalescing zero page register [ zp[2]:32 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] ] with [ zp[2]:8 [ main::y#0 main::rowY#1 ] ] +Coalescing zero page register [ zp[2]:38 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] ] with [ zp[2]:11 [ main::x#2 main::x#1 main::x#7 ] ] +Coalescing zero page register [ zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] ] with [ zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] ] +Coalescing zero page register [ zp[2]:48 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] with [ zp[2]:13 [ main::y#2 main::y#1 main::y#6 ] ] +Coalescing zero page register [ zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] ] with [ zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] ] +Coalescing zero page register [ zp[2]:51 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ] with [ zp[2]:15 [ renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] ] +Coalescing zero page register [ zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] ] with [ zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] ] +Coalescing zero page register [ zp[1]:62 [ renderBob::xpos#0 ] ] with [ zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] ] +Coalescing zero page register [ zp[1]:63 [ renderBob::ypos#0 ] ] with [ zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] ] +Coalescing zero page register [ zp[1]:72 [ renderBob::x_char_offset#0 ] ] with [ zp[1]:46 [ protoBobShiftRight::carry#1 ] ] +Coalescing zero page register [ zp[2]:75 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 ] ] with [ zp[2]:54 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] +Coalescing zero page register [ zp[2]:86 [ renderBobCleanup::screen#0 ] ] with [ zp[2]:57 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ] +Coalescing zero page register [ zp[2]:88 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 ] ] with [ zp[2]:60 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ] +Coalescing zero page register [ zp[1]:82 [ renderBob::$5 renderBob::bob_table_idx#0 ] ] with [ zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 prepareBobs::cell#2 prepareBobs::cell#1 ] ] +Coalescing zero page register [ zp[2]:86 [ renderBobCleanup::screen#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ] with [ zp[2]:30 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 main::x#0 main::x#4 main::rowX#1 ] ] +Coalescing zero page register [ zp[2]:88 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ] with [ zp[2]:19 [ memset::dst#2 memset::dst#1 main::origX#8 main::origX#1 ] ] +Coalescing zero page register [ zp[2]:90 [ renderBobInit::$6 ] ] with [ zp[2]:24 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 main::rowOffsetY#10 main::rowOffsetY#1 ] ] +Allocated (was zp[1]:23) zp[1]:2 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 main::col#5 main::col#1 ] +Allocated (was zp[2]:32) zp[2]:3 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 main::y#0 main::rowY#1 ] +Allocated (was zp[2]:38) zp[2]:5 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 main::x#2 main::x#1 main::x#7 ] +Allocated (was zp[2]:48) zp[2]:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 main::y#2 main::y#1 main::y#6 ] +Allocated (was zp[1]:50) zp[1]:9 [ mulf_init::c#2 mulf_init::c#1 progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] +Allocated (was zp[2]:51) zp[2]:10 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] +Allocated (was zp[1]:59) zp[1]:12 [ mulf_init::dir#2 mulf_init::dir#4 prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] +Allocated (was zp[1]:62) zp[1]:13 [ renderBob::xpos#0 prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] +Allocated (was zp[1]:63) zp[1]:14 [ renderBob::ypos#0 bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] +Allocated (was zp[1]:72) zp[1]:15 [ renderBob::x_char_offset#0 protoBobShiftRight::carry#1 ] +Allocated (was zp[2]:75) zp[2]:16 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] +Allocated (was zp[1]:82) zp[1]:18 [ renderBob::$5 renderBob::bob_table_idx#0 protoBobShiftRight::i#2 protoBobShiftRight::i#1 prepareBobs::cell#2 prepareBobs::cell#1 ] +Allocated (was zp[2]:86) zp[2]:19 [ renderBobCleanup::screen#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 main::x#0 main::x#4 main::rowX#1 ] +Allocated (was zp[2]:88) zp[2]:21 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 memset::dst#2 memset::dst#1 main::origX#8 main::origX#1 ] +Allocated (was zp[2]:90) zp[2]:23 [ renderBobInit::$6 progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 main::rowOffsetY#10 main::rowOffsetY#1 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -7564,9 +6818,9 @@ ASSEMBLER BEFORE OPTIMIZATION .label CIA2_PORT_A_DDR = $dd02 .const KEY_SPACE = $3c // The BASIC screen - .label SCREEN_BASIC = $400 + .label BASIC_SCREEN = $400 // The BASIC charset - .label CHARSET_BASIC = $1000 + .label BASIC_CHARSET = $1000 // The BOB screen .label BOB_SCREEN = $2800 // The BOB charset @@ -7578,18 +6832,17 @@ ASSEMBLER BEFORE OPTIMIZATION // The size of a sub-table of BOB_TABLES .const BOB_SUBTABLE_SIZE = BOB_SHIFTS_X*BOB_SHIFTS_Y // The number of BOBs to render - .const NUM_BOBS = $14 + .const NUM_BOBS = $19 .const SIZEOF_POINTER = 2 - .label COS = SIN+$40 // BOB charset ID of the next glyph to be added - .label bob_charset_next_id = $d + .label bob_charset_next_id = $e // Current index within the progress cursor (0-7) - .label progress_idx = 3 + .label progress_idx = 9 // Current position of the progress cursor - .label progress_cursor = $b + .label progress_cursor = $17 // Pointer to the next clean-up to add // Prepare for next clean-up - .label renderBobCleanupNext = 6 + .label renderBobCleanupNext = $a // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -7608,41 +6861,46 @@ __bend_from___b1: __bend: // main main: { + .const origY = $a00 + // Row and column offset vectors + .const rowOffsetX = $c00 + .const colOffsetX = $100 + .const colOffsetY = $1800 .const vicSelectGfxBank1_toDd001_return = 3 .const vicSelectGfxBank2_toDd001_return = 3 .const toD0181_return = (>(BOB_SCREEN&$3fff)*4)|(>BOB_CHARSET)/4&$f - .const toD0182_return = (>(SCREEN_BASIC&$3fff)*4)|(>CHARSET_BASIC)/4&$f - .label __10 = $b - .label __12 = $b - .label __13 = $b - .label x = 8 - .label y = $b - .label a = 4 - .label r = 3 - .label i = 5 - // Render Rotated BOBs - .label angle = 2 + .const toD0182_return = (>(BASIC_SCREEN&$3fff)*4)|(>BASIC_CHARSET)/4&$f + .label x = $13 + .label y = 3 + .label x_1 = 5 + .label y_1 = 7 + .label rowX = $13 + .label rowY = 3 + .label col = 2 + // Origin point + .label origX = $15 + .label rowOffsetY = $17 // [5] call mulf_init - // [243] phi from main to mulf_init [phi:main->mulf_init] + // [209] phi from main to mulf_init [phi:main->mulf_init] mulf_init_from_main: jsr mulf_init - // [6] phi from main to main::@9 [phi:main->main::@9] - __b9_from_main: - jmp __b9 - // main::@9 - __b9: + // [6] phi from main to main::@11 [phi:main->main::@11] + __b11_from_main: + jmp __b11 + // main::@11 + __b11: // [7] call prepareBobs - // [159] phi from main::@9 to prepareBobs [phi:main::@9->prepareBobs] - prepareBobs_from___b9: + // [125] phi from main::@11 to prepareBobs [phi:main::@11->prepareBobs] + prepareBobs_from___b11: jsr prepareBobs - // [8] phi from main::@9 to main::@10 [phi:main::@9->main::@10] - __b10_from___b9: - jmp __b10 - // main::@10 - __b10: + // [8] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + __b12_from___b11: + jmp __b12 + // main::@12 + __b12: // [9] call renderBobInit - // [143] phi from main::@10 to renderBobInit [phi:main::@10->renderBobInit] - renderBobInit_from___b10: + // [109] phi from main::@12 to renderBobInit [phi:main::@12->renderBobInit] + renderBobInit_from___b12: jsr renderBobInit jmp vicSelectGfxBank1 // main::vicSelectGfxBank1 @@ -7666,22 +6924,30 @@ main: { jmp toD0181 // main::toD0181 toD0181: - jmp __b7 - // main::@7 - __b7: + jmp __b9 + // main::@9 + __b9: // [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 // [15] call memset - // [137] phi from main::@7 to memset [phi:main::@7->memset] - memset_from___b7: + // [103] phi from main::@9 to memset [phi:main::@9->memset] + memset_from___b9: jsr memset - // [16] phi from main::@7 to main::@1 [phi:main::@7->main::@1] - __b1_from___b7: - // [16] phi (byte) main::angle#8 = (byte) 0 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1 - lda #0 - sta.z angle + // [16] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + __b1_from___b9: + // [16] phi (signed word) main::rowOffsetY#10 = (signed word) $100 [phi:main::@9->main::@1#0] -- vwsz1=vwsc1 + lda #<$100 + sta.z rowOffsetY + lda #>$100 + sta.z rowOffsetY+1 + // [16] phi (signed word) main::origX#8 = (signed word) $a00 [phi:main::@9->main::@1#1] -- vwsz1=vwsc1 + lda #<$a00 + sta.z origX + lda #>$a00 + sta.z origX+1 jmp __b1 + // Render Grid of BOBs // main::@1 __b1: jmp __b2 @@ -7698,174 +6964,199 @@ main: { lda #$f sta BORDERCOL // [19] call renderBobCleanup - // [121] phi from main::@3 to renderBobCleanup [phi:main::@3->renderBobCleanup] + // [87] phi from main::@3 to renderBobCleanup [phi:main::@3->renderBobCleanup] renderBobCleanup_from___b3: jsr renderBobCleanup - jmp __b11 - // main::@11 - __b11: - // [20] (byte) main::a#6 ← (byte) main::angle#8 -- vbuz1=vbuz2 - lda.z angle - sta.z a - // [21] phi from main::@11 to main::@4 [phi:main::@11->main::@4] - __b4_from___b11: - // [21] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@4#0] -- vbuz1=vbuc1 + jmp __b13 + // main::@13 + __b13: + // [20] (signed word) main::x#4 ← (signed word) main::origX#8 -- vwsz1=vwsz2 + lda.z origX + sta.z x + lda.z origX+1 + sta.z x+1 + // [21] phi from main::@13 to main::@4 [phi:main::@13->main::@4] + __b4_from___b13: + // [21] phi (byte) main::col#5 = (byte) 0 [phi:main::@13->main::@4#0] -- vbuz1=vbuc1 lda #0 - sta.z i - // [21] phi (byte**) renderBobCleanupNext#17 = (const byte**) RENDERBOB_CLEANUP [phi:main::@11->main::@4#1] -- pptz1=pptc1 + sta.z col + // [21] phi (byte**) renderBobCleanupNext#21 = (const byte**) RENDERBOB_CLEANUP [phi:main::@13->main::@4#1] -- pptz1=pptc1 lda #RENDERBOB_CLEANUP sta.z renderBobCleanupNext+1 - // [21] phi (byte) main::a#2 = (byte) main::a#6 [phi:main::@11->main::@4#2] -- register_copy - // [21] phi (signed byte) main::r#2 = (signed byte) $1e [phi:main::@11->main::@4#3] -- vbsz1=vbsc1 - lda #$1e - sta.z r + // [21] phi (signed word) main::y#0 = (const signed word) main::origY [phi:main::@13->main::@4#2] -- vwsz1=vwsc1 + lda #origY + sta.z y+1 + // [21] phi (signed word) main::x#0 = (signed word) main::x#4 [phi:main::@13->main::@4#3] -- register_copy jmp __b4 - // [21] phi from main::@14 to main::@4 [phi:main::@14->main::@4] - __b4_from___b14: - // [21] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@14->main::@4#0] -- register_copy - // [21] phi (byte**) renderBobCleanupNext#17 = (byte**) renderBobCleanupNext#13 [phi:main::@14->main::@4#1] -- register_copy - // [21] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@14->main::@4#2] -- register_copy - // [21] phi (signed byte) main::r#2 = (signed byte) main::r#1 [phi:main::@14->main::@4#3] -- register_copy + // [21] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + __b4_from___b6: + // [21] phi (byte) main::col#5 = (byte) main::col#1 [phi:main::@6->main::@4#0] -- register_copy + // [21] phi (byte**) renderBobCleanupNext#21 = (byte**) renderBobCleanupNext#13 [phi:main::@6->main::@4#1] -- register_copy + // [21] phi (signed word) main::y#0 = (signed word) main::rowY#1 [phi:main::@6->main::@4#2] -- register_copy + // [21] phi (signed word) main::x#0 = (signed word) main::rowX#1 [phi:main::@6->main::@4#3] -- register_copy jmp __b4 // main::@4 __b4: - // [22] *((const byte*) BORDERCOL) ← (byte) 1 -- _deref_pbuc1=vbuc2 + // [22] (signed word) main::x#7 ← (signed word) main::x#0 -- vwsz1=vwsz2 + lda.z x + sta.z x_1 + lda.z x+1 + sta.z x_1+1 + // [23] (signed word) main::y#6 ← (signed word) main::y#0 -- vwsz1=vwsz2 + lda.z y + sta.z y_1 + lda.z y+1 + sta.z y_1+1 + // [24] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + __b5_from___b4: + // [24] phi (byte) main::row#2 = (byte) 0 [phi:main::@4->main::@5#0] -- vbuxx=vbuc1 + ldx #0 + // [24] phi (byte**) renderBobCleanupNext#17 = (byte**) renderBobCleanupNext#21 [phi:main::@4->main::@5#1] -- register_copy + // [24] phi (signed word) main::y#2 = (signed word) main::y#6 [phi:main::@4->main::@5#2] -- register_copy + // [24] phi (signed word) main::x#2 = (signed word) main::x#7 [phi:main::@4->main::@5#3] -- register_copy + jmp __b5 + // [24] phi from main::@14 to main::@5 [phi:main::@14->main::@5] + __b5_from___b14: + // [24] phi (byte) main::row#2 = (byte) main::row#1 [phi:main::@14->main::@5#0] -- register_copy + // [24] phi (byte**) renderBobCleanupNext#17 = (byte**) renderBobCleanupNext#13 [phi:main::@14->main::@5#1] -- register_copy + // [24] phi (signed word) main::y#2 = (signed word) main::y#1 [phi:main::@14->main::@5#2] -- register_copy + // [24] phi (signed word) main::x#2 = (signed word) main::x#1 [phi:main::@14->main::@5#3] -- register_copy + jmp __b5 + // main::@5 + __b5: + // [25] *((const byte*) BORDERCOL) ← (byte) 1 -- _deref_pbuc1=vbuc2 //kickasm {{ .break }} lda #1 sta BORDERCOL - // [23] (signed byte) mulf8s::a#0 ← (signed byte) main::r#2 -- vbsaa=vbsz1 - lda.z r - // [24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2) -- vbsxx=pbsc1_derefidx_vbuz1 - ldy.z a - ldx COS,y - // [25] call mulf8s - // [92] phi from main::@4 to mulf8s [phi:main::@4->mulf8s] - mulf8s_from___b4: - // [92] phi (signed byte) mulf8s::b#2 = (signed byte) mulf8s::b#0 [phi:main::@4->mulf8s#0] -- register_copy - // [92] phi (signed byte) mulf8s::mulf8s_prepare1_a#0 = (signed byte) mulf8s::a#0 [phi:main::@4->mulf8s#1] -- register_copy - jsr mulf8s - // [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 - jmp __b12 - // main::@12 - __b12: - // [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 - // [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 -- vwsz1=vwsz2_plus_vwsc1 - lda.z __10 - clc - adc #<$4b*$100 - sta.z x - lda.z __10+1 - adc #>$4b*$100 - sta.z x+1 - // [29] (signed byte) mulf8s::a#1 ← (signed byte) main::r#2 -- vbsaa=vbsz1 - lda.z r - // [30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2) -- vbsxx=pbsc1_derefidx_vbuz1 - ldy.z a - ldx SIN,y - // [31] call mulf8s - // [92] phi from main::@12 to mulf8s [phi:main::@12->mulf8s] - mulf8s_from___b12: - // [92] phi (signed byte) mulf8s::b#2 = (signed byte) mulf8s::b#1 [phi:main::@12->mulf8s#0] -- register_copy - // [92] phi (signed byte) mulf8s::mulf8s_prepare1_a#0 = (signed byte) mulf8s::a#1 [phi:main::@12->mulf8s#1] -- register_copy - jsr mulf8s - // [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 - jmp __b13 - // main::@13 - __b13: - // [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 - // [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 -- vwsz1=vwsz1_rol_1 - asl.z __13 - rol.z __13+1 - // [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 -- vwsz1=vwsz1_plus_vwsc1 - clc - lda.z y - adc #<$5a*$100 - sta.z y - lda.z y+1 - adc #>$5a*$100 - sta.z y+1 - // [36] *((const byte*) BORDERCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 - lda #2 - sta BORDERCOL - // [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 -- vbuz1=vbuz1_plus_vbuc1 - lax.z a - axs #-[$62] - stx.z a - // [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 -- vbsz1=vbsz1_plus_vbsc1 - lax.z r - axs #-[3] - stx.z r - // [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 -- vbuz1=_hi_vwsz2 - lda.z x+1 + // [26] (byte) renderBob::xpos#0 ← > (signed word) main::x#2 -- vbuz1=_hi_vwsz2 + lda.z x_1+1 sta.z renderBob.xpos - // [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 -- vbuxx=_hi_vwsz1 - lda.z y+1 - tax - // [41] call renderBob + // [27] (byte) renderBob::ypos#0 ← > (signed word) main::y#2 -- vbuz1=_hi_vwsz2 + lda.z y_1+1 + sta.z renderBob.ypos + // [28] call renderBob jsr renderBob jmp __b14 // main::@14 __b14: - // [42] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 - inc.z i - // [43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 - lda #NUM_BOBS-1+1 - cmp.z i - bne __b4_from___b14 - jmp __b5 - // main::@5 - __b5: - // [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 - lax.z angle - axs #-[3] - stx.z angle - // [45] *((const byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 - lda #0 + // [29] (signed word) main::x#1 ← (signed word) main::x#2 + (const signed word) main::rowOffsetX -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z x_1 + adc #rowOffsetX + sta.z x_1+1 + // [30] (signed word) main::y#1 ← (signed word) main::y#2 + (signed word) main::rowOffsetY#10 -- vwsz1=vwsz1_plus_vwsz2 + lda.z y_1 + clc + adc.z rowOffsetY + sta.z y_1 + lda.z y_1+1 + adc.z rowOffsetY+1 + sta.z y_1+1 + // [31] *((const byte*) BORDERCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 + lda #2 sta BORDERCOL - // [46] call keyboard_key_pressed - // [61] phi from main::@5 to keyboard_key_pressed [phi:main::@5->keyboard_key_pressed] - keyboard_key_pressed_from___b5: - jsr keyboard_key_pressed - // [47] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 - jmp __b15 - // main::@15 - __b15: - // [48] (byte~) main::$19 ← (byte) keyboard_key_pressed::return#2 - // [49] if((byte) 0!=(byte~) main::$19) goto main::@6 -- vbuc1_neq_vbuaa_then_la1 - cmp #0 - bne __b6_from___b15 - // [16] phi from main::@15 to main::@1 [phi:main::@15->main::@1] - __b1_from___b15: - // [16] phi (byte) main::angle#8 = (byte) main::angle#1 [phi:main::@15->main::@1#0] -- register_copy - jmp __b1 - // Wait for space release - // [50] phi from main::@15 main::@16 to main::@6 [phi:main::@15/main::@16->main::@6] - __b6_from___b15: - __b6_from___b16: + // [32] (byte) main::row#1 ← ++ (byte) main::row#2 -- vbuxx=_inc_vbuxx + inx + // [33] if((byte) main::row#1!=(byte) 5) goto main::@5 -- vbuxx_neq_vbuc1_then_la1 + cpx #5 + bne __b5_from___b14 jmp __b6 // main::@6 __b6: - // [51] call keyboard_key_pressed - // [61] phi from main::@6 to keyboard_key_pressed [phi:main::@6->keyboard_key_pressed] - keyboard_key_pressed_from___b6: + // [34] (signed word) main::rowX#1 ← (signed word) main::x#0 + (const signed word) main::colOffsetX -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z rowX + adc #colOffsetX + sta.z rowX+1 + // [35] (signed word) main::rowY#1 ← (signed word) main::y#0 + (const signed word) main::colOffsetY -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z rowY + adc #colOffsetY + sta.z rowY+1 + // [36] (byte) main::col#1 ← ++ (byte) main::col#5 -- vbuz1=_inc_vbuz1 + inc.z col + // [37] if((byte) main::col#1!=(byte) 5) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 + lda #5 + cmp.z col + bne __b4_from___b6 + jmp __b7 + // main::@7 + __b7: + // [38] (signed word) main::origX#1 ← (signed word) main::origX#8 + (signed word) $100 -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z origX + adc #<$100 + sta.z origX + lda.z origX+1 + adc #>$100 + sta.z origX+1 + // [39] (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#10 + (signed word) $80 -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z rowOffsetY + adc #<$80 + sta.z rowOffsetY + lda.z rowOffsetY+1 + adc #>$80 + sta.z rowOffsetY+1 + // [40] *((const byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 + lda #0 + sta BORDERCOL + // [41] call keyboard_key_pressed + // [56] phi from main::@7 to keyboard_key_pressed [phi:main::@7->keyboard_key_pressed] + keyboard_key_pressed_from___b7: jsr keyboard_key_pressed - // [52] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 + // [42] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 + jmp __b15 + // main::@15 + __b15: + // [43] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 + // [44] if((byte) 0!=(byte~) main::$15) goto main::@8 -- vbuc1_neq_vbuaa_then_la1 + cmp #0 + bne __b8_from___b15 + // [16] phi from main::@15 to main::@1 [phi:main::@15->main::@1] + __b1_from___b15: + // [16] phi (signed word) main::rowOffsetY#10 = (signed word) main::rowOffsetY#1 [phi:main::@15->main::@1#0] -- register_copy + // [16] phi (signed word) main::origX#8 = (signed word) main::origX#1 [phi:main::@15->main::@1#1] -- register_copy + jmp __b1 + // Wait for space release + // [45] phi from main::@15 main::@16 to main::@8 [phi:main::@15/main::@16->main::@8] + __b8_from___b15: + __b8_from___b16: + jmp __b8 + // main::@8 + __b8: + // [46] call keyboard_key_pressed + // [56] phi from main::@8 to keyboard_key_pressed [phi:main::@8->keyboard_key_pressed] + keyboard_key_pressed_from___b8: + jsr keyboard_key_pressed + // [47] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 jmp __b16 // main::@16 __b16: - // [53] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#3 - // [54] if((byte) 0!=(byte~) main::$21) goto main::@6 -- vbuc1_neq_vbuaa_then_la1 + // [48] (byte~) main::$17 ← (byte) keyboard_key_pressed::return#3 + // [49] if((byte) 0!=(byte~) main::$17) goto main::@8 -- vbuc1_neq_vbuaa_then_la1 cmp #0 - bne __b6_from___b16 + bne __b8_from___b16 jmp vicSelectGfxBank2 // main::vicSelectGfxBank2 vicSelectGfxBank2: - // [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 -- _deref_pbuc1=vbuc2 + // [50] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - // [56] phi from main::vicSelectGfxBank2 to main::vicSelectGfxBank2_toDd001 [phi:main::vicSelectGfxBank2->main::vicSelectGfxBank2_toDd001] + // [51] phi from main::vicSelectGfxBank2 to main::vicSelectGfxBank2_toDd001 [phi:main::vicSelectGfxBank2->main::vicSelectGfxBank2_toDd001] vicSelectGfxBank2_toDd001_from_vicSelectGfxBank2: jmp vicSelectGfxBank2_toDd001 // main::vicSelectGfxBank2_toDd001 @@ -7873,24 +7164,24 @@ main: { jmp vicSelectGfxBank2___b1 // main::vicSelectGfxBank2_@1 vicSelectGfxBank2___b1: - // [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 -- _deref_pbuc1=vbuc2 + // [52] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank2_toDd001_return sta CIA2_PORT_A - // [58] phi from main::vicSelectGfxBank2_@1 to main::toD0182 [phi:main::vicSelectGfxBank2_@1->main::toD0182] + // [53] phi from main::vicSelectGfxBank2_@1 to main::toD0182 [phi:main::vicSelectGfxBank2_@1->main::toD0182] toD0182_from_vicSelectGfxBank2___b1: jmp toD0182 // main::toD0182 toD0182: - jmp __b8 - // main::@8 - __b8: - // [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 + jmp __b10 + // main::@10 + __b10: + // [54] *((const byte*) D018) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 lda #toD0182_return sta D018 jmp __breturn // main::@return __breturn: - // [60] return + // [55] return rts } // keyboard_key_pressed @@ -7901,19 +7192,19 @@ main: { keyboard_key_pressed: { .const colidx = KEY_SPACE&7 .label rowidx = KEY_SPACE>>3 - // [62] call keyboard_matrix_read + // [57] call keyboard_matrix_read jsr keyboard_matrix_read - // [63] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + // [58] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 jmp __b1 // keyboard_key_pressed::@1 __b1: - // [64] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - // [65] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band__deref_pbuc1 + // [59] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + // [60] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band__deref_pbuc1 and keyboard_matrix_col_bitmask+colidx jmp __breturn // keyboard_key_pressed::@return __breturn: - // [66] return + // [61] return rts } // keyboard_matrix_read @@ -7923,49 +7214,51 @@ keyboard_key_pressed: { // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - // [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) -- _deref_pbuc1=_deref_pbuc2 + // [62] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) -- _deref_pbuc1=_deref_pbuc2 lda keyboard_matrix_row_bitmask+keyboard_key_pressed.rowidx sta CIA1_PORT_A - // [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) -- vbuaa=_bnot__deref_pbuc1 + // [63] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp __breturn // keyboard_matrix_read::@return __breturn: - // [69] return + // [64] return rts } // renderBob // Render a single BOB at a given x/y-position // X-position is 0-151. Each x-position is 2 pixels wide. // Y-position is 0-183. Each y-position is 1 pixel high. -// renderBob(byte zeropage($e) xpos, byte register(X) ypos) +// renderBob(byte zeropage($d) xpos, byte zeropage($e) ypos) renderBob: { - .label __2 = $b - .label __5 = $d - .label xpos = $e - .label x_char_offset = $a - .label y_offset = $b - .label screen = $b - // [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 -- vbuz1=vbuz2_ror_2 + .label __2 = $10 + .label __5 = $12 + .label xpos = $d + .label ypos = $e + .label x_char_offset = $f + .label y_offset = $10 + .label screen = $10 + .label bob_table_idx = $12 + // [65] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 -- vbuz1=vbuz2_ror_2 lda.z xpos lsr lsr sta.z x_char_offset - // [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 -- vbuaa=vbuxx_ror_3 - txa + // [66] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + lda.z ypos lsr lsr lsr - // [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + // [67] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - // [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) -- vwuz1=pwuc1_derefidx_vbuaa + // [68] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) -- vwuz1=pwuc1_derefidx_vbuaa tay lda MUL40,y sta.z y_offset lda MUL40+1,y sta.z y_offset+1 - // [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 -- pbuz1=pbuc1_plus_vwuz1 + // [69] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 -- pbuz1=pbuc1_plus_vwuz1 clc lda.z __2 adc #BOB_SCREEN sta.z __2+1 - // [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 -- pbuz1=pbuz1_plus_vbuz2 + // [70] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 -- pbuz1=pbuz1_plus_vbuz2 lda.z x_char_offset clc adc.z screen @@ -7981,28 +7274,28 @@ renderBob: { bcc !+ inc.z screen+1 !: - // [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 -- vbuaa=vbuxx_band_vbuc1 - txa - and #7 - // [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 -- vbuz1=vbuaa_rol_2 + // [71] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 -- vbuaa=vbuz1_band_vbuc1 + lda #7 + and.z ypos + // [72] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 -- vbuz1=vbuaa_rol_2 asl asl sta.z __5 - // [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 -- vbuaa=vbuz1_band_vbuc1 + // [73] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 -- vbuaa=vbuz1_band_vbuc1 lda #3 and.z xpos - // [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 -- vbuxx=vbuz1_plus_vbuaa + // [74] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 -- vbuz1=vbuz1_plus_vbuaa clc - adc.z __5 - tax - // [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 -- _deref_pptz1=pbuz2 + adc.z bob_table_idx + sta.z bob_table_idx + // [75] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 -- _deref_pptz1=pbuz2 ldy #0 lda.z screen sta (renderBobCleanupNext),y iny lda.z screen+1 sta (renderBobCleanupNext),y - // [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER -- pptz1=pptz1_plus_vbuc1 + // [76] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER -- pptz1=pptz1_plus_vbuc1 lda #SIZEOF_POINTER clc adc.z renderBobCleanupNext @@ -8010,264 +7303,126 @@ renderBob: { bcc !+ inc.z renderBobCleanupNext+1 !: - // [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) -- _deref_pbuz1=pbuc1_derefidx_vbuxx - lda BOB_TABLES,x + // [77] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES,y ldy #0 sta (screen),y - // [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+1*BOB_SUBTABLE_SIZE,x + // [78] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+1*BOB_SUBTABLE_SIZE,y ldy #$28 sta (screen),y - // [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+2*BOB_SUBTABLE_SIZE,x + // [79] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+2*BOB_SUBTABLE_SIZE,y ldy #$50 sta (screen),y - // [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+3*BOB_SUBTABLE_SIZE,x + // [80] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+3*BOB_SUBTABLE_SIZE,y ldy #1 sta (screen),y - // [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+4*BOB_SUBTABLE_SIZE,x + // [81] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+4*BOB_SUBTABLE_SIZE,y ldy #$29 sta (screen),y - // [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+5*BOB_SUBTABLE_SIZE,x + // [82] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+5*BOB_SUBTABLE_SIZE,y ldy #$51 sta (screen),y - // [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+6*BOB_SUBTABLE_SIZE,x + // [83] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+6*BOB_SUBTABLE_SIZE,y ldy #2 sta (screen),y - // [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+7*BOB_SUBTABLE_SIZE,x + // [84] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+7*BOB_SUBTABLE_SIZE,y ldy #$2a sta (screen),y - // [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+8*BOB_SUBTABLE_SIZE,x + // [85] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+8*BOB_SUBTABLE_SIZE,y ldy #$52 sta (screen),y jmp __breturn // renderBob::@return __breturn: - // [91] return - rts -} - // mulf8s -// Fast multiply two signed bytes to a word result -// mulf8s(signed byte register(A) a, signed byte register(X) b) -mulf8s: { - .label return = $b - jmp mulf8s_prepare1 - // mulf8s::mulf8s_prepare1 - mulf8s_prepare1: - // [93] (byte) mulf8u_prepare::a#0 ← (byte)(signed byte) mulf8s::mulf8s_prepare1_a#0 - // [94] call mulf8u_prepare - jsr mulf8u_prepare - jmp __b1 - // mulf8s::@1 - __b1: - // [95] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#2 -- vbsz1=vbsxx - stx.z mulf8s_prepared.b - // [96] call mulf8s_prepared - jsr mulf8s_prepared - jmp __b2 - // mulf8s::@2 - __b2: - // [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 - jmp __breturn - // mulf8s::@return - __breturn: - // [98] return - rts -} - // mulf8s_prepared -// Calculate fast multiply with a prepared unsigned byte to a word result -// The prepared number is set by calling mulf8s_prepare(byte a) -// mulf8s_prepared(signed byte zeropage($e) b) -mulf8s_prepared: { - .label memA = $fd - .label m = $b - .label b = $e - // [99] (byte) mulf8u_prepared::b#0 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuz1 - lda.z b - // [100] call mulf8u_prepared - jsr mulf8u_prepared - // [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 - jmp __b5 - // mulf8s_prepared::@5 - __b5: - // [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 - // [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 - lda memA - cmp #0 - bpl __b1_from___b5 - jmp __b3 - // mulf8s_prepared::@3 - __b3: - // [104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 - lda.z m+1 - // [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 - sec - sbc.z b - // [106] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa - sta.z m+1 - // [107] phi from mulf8s_prepared::@3 mulf8s_prepared::@5 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1] - __b1_from___b3: - __b1_from___b5: - // [107] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1#0] -- register_copy - jmp __b1 - // mulf8s_prepared::@1 - __b1: - // [108] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 - lda.z b - cmp #0 - bpl __b2_from___b1 - jmp __b4 - // mulf8s_prepared::@4 - __b4: - // [109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 - lda.z m+1 - // [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) -- vbuaa=vbuaa_minus__deref_pbuc1 - sec - sbc memA - // [111] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa - sta.z m+1 - // [112] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] - __b2_from___b1: - __b2_from___b4: - // [112] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy - jmp __b2 - // mulf8s_prepared::@2 - __b2: - jmp __breturn - // mulf8s_prepared::@return - __breturn: - // [113] return - rts -} - // mulf8u_prepared -// Calculate fast multiply with a prepared unsigned byte to a word result -// The prepared number is set by calling mulf8u_prepare(byte a) -// mulf8u_prepared(byte register(A) b) -mulf8u_prepared: { - .label resL = $fe - .label memB = $ff - .label return = $b - // [114] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#0 -- _deref_pbuc1=vbuaa - sta memB - // asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - ldx memB - sec - sm1: - lda mulf_sqr1_lo,x - sm2: - sbc mulf_sqr2_lo,x - sta resL - sm3: - lda mulf_sqr1_hi,x - sm4: - sbc mulf_sqr2_hi,x - sta memB - // [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 - lda resL - sta.z return - lda memB - sta.z return+1 - jmp __breturn - // mulf8u_prepared::@return - __breturn: - // [117] return - rts -} - // mulf8u_prepare -// Prepare for fast multiply with an unsigned byte to a word result -// mulf8u_prepare(byte register(A) a) -mulf8u_prepare: { - .label memA = $fd - // [118] *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#0 -- _deref_pbuc1=vbuaa - sta memA - // asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } - lda memA - sta mulf8u_prepared.sm1+1 - sta mulf8u_prepared.sm3+1 - eor #$ff - sta mulf8u_prepared.sm2+1 - sta mulf8u_prepared.sm4+1 - jmp __breturn - // mulf8u_prepare::@return - __breturn: - // [120] return + // [86] return rts } // renderBobCleanup // Clean Up the rendered BOB's renderBobCleanup: { - .label screen = $f - // [122] phi from renderBobCleanup to renderBobCleanup::@1 [phi:renderBobCleanup->renderBobCleanup::@1] + .label screen = $13 + // [88] phi from renderBobCleanup to renderBobCleanup::@1 [phi:renderBobCleanup->renderBobCleanup::@1] __b1_from_renderBobCleanup: - // [122] phi (byte) renderBobCleanup::i#2 = (byte) 0 [phi:renderBobCleanup->renderBobCleanup::@1#0] -- vbuxx=vbuc1 + // [88] phi (byte) renderBobCleanup::i#2 = (byte) 0 [phi:renderBobCleanup->renderBobCleanup::@1#0] -- vbuxx=vbuc1 ldx #0 jmp __b1 - // [122] phi from renderBobCleanup::@1 to renderBobCleanup::@1 [phi:renderBobCleanup::@1->renderBobCleanup::@1] + // [88] phi from renderBobCleanup::@1 to renderBobCleanup::@1 [phi:renderBobCleanup::@1->renderBobCleanup::@1] __b1_from___b1: - // [122] phi (byte) renderBobCleanup::i#2 = (byte) renderBobCleanup::i#1 [phi:renderBobCleanup::@1->renderBobCleanup::@1#0] -- register_copy + // [88] phi (byte) renderBobCleanup::i#2 = (byte) renderBobCleanup::i#1 [phi:renderBobCleanup::@1->renderBobCleanup::@1#0] -- register_copy jmp __b1 // renderBobCleanup::@1 __b1: - // [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [89] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) -- pbuz1=pptc1_derefidx_vbuaa + // [90] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) -- pbuz1=pptc1_derefidx_vbuaa tay lda RENDERBOB_CLEANUP,y sta.z screen lda RENDERBOB_CLEANUP+1,y sta.z screen+1 - // [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 -- _deref_pbuz1=vbuc1 + // [91] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (screen),y - // [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [92] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #$28 sta (screen),y - // [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [93] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #$50 sta (screen),y - // [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [94] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #1 sta (screen),y - // [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [95] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #$29 sta (screen),y - // [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [96] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #$51 sta (screen),y - // [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [97] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #2 sta (screen),y - // [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [98] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #$2a sta (screen),y - // [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [99] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #0 ldy #$52 sta (screen),y - // [134] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2 -- vbuxx=_inc_vbuxx + // [100] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2 -- vbuxx=_inc_vbuxx inx - // [135] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1 -- vbuxx_neq_vbuc1_then_la1 + // [101] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #NUM_BOBS-1+1 bne __b1_from___b1 jmp __breturn // renderBobCleanup::@return __breturn: - // [136] return + // [102] return rts } // memset @@ -8277,10 +7432,10 @@ memset: { .const c = 0 .const num = $3e8 .label end = str+num - .label dst = 6 - // [138] phi from memset to memset::@1 [phi:memset->memset::@1] + .label dst = $15 + // [104] phi from memset to memset::@1 [phi:memset->memset::@1] __b1_from_memset: - // [138] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 + // [104] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 lda #str @@ -8288,7 +7443,7 @@ memset: { jmp __b1 // memset::@1 __b1: - // [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 + // [105] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z dst+1 cmp #>end bne __b2 @@ -8298,48 +7453,48 @@ memset: { jmp __breturn // memset::@return __breturn: - // [140] return + // [106] return rts // memset::@2 __b2: - // [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 + // [107] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 lda #c ldy #0 sta (dst),y - // [142] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [108] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 !: - // [138] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1] + // [104] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1] __b1_from___b2: - // [138] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy + // [104] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy jmp __b1 } // renderBobInit // Initialize the tables used by renderBob() renderBobInit: { - .label __0 = $f - .label __1 = $f - .label __6 = $11 - .label __7 = $f - // [144] phi from renderBobInit to renderBobInit::@1 [phi:renderBobInit->renderBobInit::@1] + .label __0 = $15 + .label __1 = $15 + .label __6 = $17 + .label __7 = $15 + // [110] phi from renderBobInit to renderBobInit::@1 [phi:renderBobInit->renderBobInit::@1] __b1_from_renderBobInit: - // [144] phi (byte) renderBobInit::y#2 = (byte) 0 [phi:renderBobInit->renderBobInit::@1#0] -- vbuxx=vbuc1 + // [110] phi (byte) renderBobInit::y#2 = (byte) 0 [phi:renderBobInit->renderBobInit::@1#0] -- vbuxx=vbuc1 ldx #0 jmp __b1 - // [144] phi from renderBobInit::@1 to renderBobInit::@1 [phi:renderBobInit::@1->renderBobInit::@1] + // [110] phi from renderBobInit::@1 to renderBobInit::@1 [phi:renderBobInit::@1->renderBobInit::@1] __b1_from___b1: - // [144] phi (byte) renderBobInit::y#2 = (byte) renderBobInit::y#1 [phi:renderBobInit::@1->renderBobInit::@1#0] -- register_copy + // [110] phi (byte) renderBobInit::y#2 = (byte) renderBobInit::y#1 [phi:renderBobInit::@1->renderBobInit::@1#0] -- register_copy jmp __b1 // renderBobInit::@1 __b1: - // [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 -- vwuz1=_word_vbuxx + // [111] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 -- vwuz1=_word_vbuxx txa sta.z __0 lda #0 sta.z __0+1 - // [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + // [112] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda.z __0 asl sta.z __6 @@ -8348,7 +7503,7 @@ renderBobInit: { sta.z __6+1 asl.z __6 rol.z __6+1 - // [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 -- vwuz1=vwuz2_plus_vwuz1 + // [113] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 -- vwuz1=vwuz2_plus_vwuz1 lda.z __7 clc adc.z __6 @@ -8356,160 +7511,160 @@ renderBobInit: { lda.z __7+1 adc.z __6+1 sta.z __7+1 - // [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3 + // [114] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl.z __1 rol.z __1+1 asl.z __1 rol.z __1+1 asl.z __1 rol.z __1+1 - // [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [115] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 -- pwuc1_derefidx_vbuaa=vwuz1 + // [116] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda.z __1 sta MUL40,y lda.z __1+1 sta MUL40+1,y - // [151] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2 -- vbuxx=_inc_vbuxx + // [117] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2 -- vbuxx=_inc_vbuxx inx - // [152] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1 -- vbuxx_neq_vbuc1_then_la1 + // [118] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$20 bne __b1_from___b1 - // [153] phi from renderBobInit::@1 to renderBobInit::@2 [phi:renderBobInit::@1->renderBobInit::@2] + // [119] phi from renderBobInit::@1 to renderBobInit::@2 [phi:renderBobInit::@1->renderBobInit::@2] __b2_from___b1: - // [153] phi (byte) renderBobInit::i#2 = (byte) 0 [phi:renderBobInit::@1->renderBobInit::@2#0] -- vbuxx=vbuc1 + // [119] phi (byte) renderBobInit::i#2 = (byte) 0 [phi:renderBobInit::@1->renderBobInit::@2#0] -- vbuxx=vbuc1 ldx #0 jmp __b2 - // [153] phi from renderBobInit::@2 to renderBobInit::@2 [phi:renderBobInit::@2->renderBobInit::@2] + // [119] phi from renderBobInit::@2 to renderBobInit::@2 [phi:renderBobInit::@2->renderBobInit::@2] __b2_from___b2: - // [153] phi (byte) renderBobInit::i#2 = (byte) renderBobInit::i#1 [phi:renderBobInit::@2->renderBobInit::@2#0] -- register_copy + // [119] phi (byte) renderBobInit::i#2 = (byte) renderBobInit::i#1 [phi:renderBobInit::@2->renderBobInit::@2#0] -- register_copy jmp __b2 // renderBobInit::@2 __b2: - // [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [120] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN -- pptc1_derefidx_vbuaa=pbuc2 + // [121] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN -- pptc1_derefidx_vbuaa=pbuc2 tay lda #BOB_SCREEN sta RENDERBOB_CLEANUP+1,y - // [156] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2 -- vbuxx=_inc_vbuxx + // [122] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2 -- vbuxx=_inc_vbuxx inx - // [157] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2 -- vbuxx_neq_vbuc1_then_la1 + // [123] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #NUM_BOBS-1+1 bne __b2_from___b2 jmp __breturn // renderBobInit::@return __breturn: - // [158] return + // [124] return rts } // prepareBobs // Creates the pre-shifted bobs into BOB_CHARSET and populates the BOB_TABLES // Modifies PROTO_BOB by shifting it around prepareBobs: { - .label bob_table = $f + .label bob_table = 3 .label shift_y = 2 // Populate charset and tables - .label bob_glyph = 6 - .label cell = $a - .label bob_table_idx = 4 - .label shift_x = 5 - // [160] call progress_init - // [241] phi from prepareBobs to progress_init [phi:prepareBobs->progress_init] + .label bob_glyph = $13 + .label cell = $12 + .label bob_table_idx = $c + .label shift_x = $d + // [126] call progress_init + // [207] phi from prepareBobs to progress_init [phi:prepareBobs->progress_init] progress_init_from_prepareBobs: jsr progress_init - // [161] phi from prepareBobs to prepareBobs::@8 [phi:prepareBobs->prepareBobs::@8] + // [127] phi from prepareBobs to prepareBobs::@8 [phi:prepareBobs->prepareBobs::@8] __b8_from_prepareBobs: jmp __b8 // prepareBobs::@8 __b8: - // [162] call charsetFindOrAddGlyph - // [195] phi from prepareBobs::@8 to charsetFindOrAddGlyph [phi:prepareBobs::@8->charsetFindOrAddGlyph] + // [128] call charsetFindOrAddGlyph + // [161] phi from prepareBobs::@8 to charsetFindOrAddGlyph [phi:prepareBobs::@8->charsetFindOrAddGlyph] charsetFindOrAddGlyph_from___b8: - // [195] phi (byte*) charsetFindOrAddGlyph::glyph#10 = (const byte*) PROTO_BOB+(byte) $30 [phi:prepareBobs::@8->charsetFindOrAddGlyph#0] -- pbuz1=pbuc1 + // [161] phi (byte*) charsetFindOrAddGlyph::glyph#10 = (const byte*) PROTO_BOB+(byte) $30 [phi:prepareBobs::@8->charsetFindOrAddGlyph#0] -- pbuz1=pbuc1 lda #PROTO_BOB+$30 sta.z charsetFindOrAddGlyph.glyph+1 - // [195] phi (byte) bob_charset_next_id#23 = (byte) 0 [phi:prepareBobs::@8->charsetFindOrAddGlyph#1] -- vbuz1=vbuc1 + // [161] phi (byte) bob_charset_next_id#23 = (byte) 0 [phi:prepareBobs::@8->charsetFindOrAddGlyph#1] -- vbuz1=vbuc1 lda #0 sta.z bob_charset_next_id jsr charsetFindOrAddGlyph - // [163] phi from prepareBobs::@8 to prepareBobs::@1 [phi:prepareBobs::@8->prepareBobs::@1] + // [129] phi from prepareBobs::@8 to prepareBobs::@1 [phi:prepareBobs::@8->prepareBobs::@1] __b1_from___b8: - // [163] phi (byte) prepareBobs::bob_table_idx#6 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#0] -- vbuz1=vbuc1 + // [129] phi (byte) prepareBobs::bob_table_idx#6 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#0] -- vbuz1=vbuc1 lda #0 sta.z bob_table_idx - // [163] phi (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#16 [phi:prepareBobs::@8->prepareBobs::@1#1] -- register_copy - // [163] phi (byte) progress_idx#16 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#2] -- vbuz1=vbuc1 + // [129] phi (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#16 [phi:prepareBobs::@8->prepareBobs::@1#1] -- register_copy + // [129] phi (byte) progress_idx#16 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#2] -- vbuz1=vbuc1 lda #0 sta.z progress_idx - // [163] phi (byte*) progress_cursor#15 = (const byte*) SCREEN_BASIC [phi:prepareBobs::@8->prepareBobs::@1#3] -- pbuz1=pbuc1 - lda #prepareBobs::@1#3] -- pbuz1=pbuc1 + lda #SCREEN_BASIC + lda #>BASIC_SCREEN sta.z progress_cursor+1 - // [163] phi (byte) prepareBobs::shift_y#2 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#4] -- vbuz1=vbuc1 + // [129] phi (byte) prepareBobs::shift_y#2 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#4] -- vbuz1=vbuc1 lda #0 sta.z shift_y jmp __b1 // prepareBobs::@1 __b1: - // [164] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2 -- vbuz1_lt_vbuc1_then_la1 + // [130] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2 -- vbuz1_lt_vbuc1_then_la1 lda.z shift_y cmp #BOB_SHIFTS_Y bcc __b2_from___b1 jmp __breturn // prepareBobs::@return __breturn: - // [165] return + // [131] return rts - // [166] phi from prepareBobs::@1 to prepareBobs::@2 [phi:prepareBobs::@1->prepareBobs::@2] + // [132] phi from prepareBobs::@1 to prepareBobs::@2 [phi:prepareBobs::@1->prepareBobs::@2] __b2_from___b1: - // [166] phi (byte) progress_idx#31 = (byte) progress_idx#16 [phi:prepareBobs::@1->prepareBobs::@2#0] -- register_copy - // [166] phi (byte*) progress_cursor#31 = (byte*) progress_cursor#15 [phi:prepareBobs::@1->prepareBobs::@2#1] -- register_copy - // [166] phi (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#14 [phi:prepareBobs::@1->prepareBobs::@2#2] -- register_copy - // [166] phi (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#6 [phi:prepareBobs::@1->prepareBobs::@2#3] -- register_copy - // [166] phi (byte) prepareBobs::shift_x#2 = (byte) 0 [phi:prepareBobs::@1->prepareBobs::@2#4] -- vbuz1=vbuc1 + // [132] phi (byte) progress_idx#31 = (byte) progress_idx#16 [phi:prepareBobs::@1->prepareBobs::@2#0] -- register_copy + // [132] phi (byte*) progress_cursor#31 = (byte*) progress_cursor#15 [phi:prepareBobs::@1->prepareBobs::@2#1] -- register_copy + // [132] phi (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#14 [phi:prepareBobs::@1->prepareBobs::@2#2] -- register_copy + // [132] phi (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#6 [phi:prepareBobs::@1->prepareBobs::@2#3] -- register_copy + // [132] phi (byte) prepareBobs::shift_x#2 = (byte) 0 [phi:prepareBobs::@1->prepareBobs::@2#4] -- vbuz1=vbuc1 lda #0 sta.z shift_x jmp __b2 // prepareBobs::@2 __b2: - // [167] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@3 -- vbuz1_lt_vbuc1_then_la1 + // [133] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@3 -- vbuz1_lt_vbuc1_then_la1 lda.z shift_x cmp #BOB_SHIFTS_X bcc __b3 - // [168] phi from prepareBobs::@2 to prepareBobs::@4 [phi:prepareBobs::@2->prepareBobs::@4] + // [134] phi from prepareBobs::@2 to prepareBobs::@4 [phi:prepareBobs::@2->prepareBobs::@4] __b4_from___b2: jmp __b4 // prepareBobs::@4 __b4: - // [169] call protoBobShiftDown - // [230] phi from prepareBobs::@4 to protoBobShiftDown [phi:prepareBobs::@4->protoBobShiftDown] + // [135] call protoBobShiftDown + // [196] phi from prepareBobs::@4 to protoBobShiftDown [phi:prepareBobs::@4->protoBobShiftDown] protoBobShiftDown_from___b4: jsr protoBobShiftDown jmp __b9 // prepareBobs::@9 __b9: - // [170] (byte) prepareBobs::shift_y#1 ← ++ (byte) prepareBobs::shift_y#2 -- vbuz1=_inc_vbuz1 + // [136] (byte) prepareBobs::shift_y#1 ← ++ (byte) prepareBobs::shift_y#2 -- vbuz1=_inc_vbuz1 inc.z shift_y - // [163] phi from prepareBobs::@9 to prepareBobs::@1 [phi:prepareBobs::@9->prepareBobs::@1] + // [129] phi from prepareBobs::@9 to prepareBobs::@1 [phi:prepareBobs::@9->prepareBobs::@1] __b1_from___b9: - // [163] phi (byte) prepareBobs::bob_table_idx#6 = (byte) prepareBobs::bob_table_idx#12 [phi:prepareBobs::@9->prepareBobs::@1#0] -- register_copy - // [163] phi (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#30 [phi:prepareBobs::@9->prepareBobs::@1#1] -- register_copy - // [163] phi (byte) progress_idx#16 = (byte) progress_idx#31 [phi:prepareBobs::@9->prepareBobs::@1#2] -- register_copy - // [163] phi (byte*) progress_cursor#15 = (byte*) progress_cursor#31 [phi:prepareBobs::@9->prepareBobs::@1#3] -- register_copy - // [163] phi (byte) prepareBobs::shift_y#2 = (byte) prepareBobs::shift_y#1 [phi:prepareBobs::@9->prepareBobs::@1#4] -- register_copy + // [129] phi (byte) prepareBobs::bob_table_idx#6 = (byte) prepareBobs::bob_table_idx#12 [phi:prepareBobs::@9->prepareBobs::@1#0] -- register_copy + // [129] phi (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#30 [phi:prepareBobs::@9->prepareBobs::@1#1] -- register_copy + // [129] phi (byte) progress_idx#16 = (byte) progress_idx#31 [phi:prepareBobs::@9->prepareBobs::@1#2] -- register_copy + // [129] phi (byte*) progress_cursor#15 = (byte*) progress_cursor#31 [phi:prepareBobs::@9->prepareBobs::@1#3] -- register_copy + // [129] phi (byte) prepareBobs::shift_y#2 = (byte) prepareBobs::shift_y#1 [phi:prepareBobs::@9->prepareBobs::@1#4] -- register_copy jmp __b1 // prepareBobs::@3 __b3: - // [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 -- pbuz1=pbuc1_plus_vbuz2 + // [137] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 -- pbuz1=pbuc1_plus_vbuz2 lda.z bob_table_idx clc adc #BOB_TABLES adc #0 sta.z bob_table+1 - // [172] phi from prepareBobs::@3 to prepareBobs::@5 [phi:prepareBobs::@3->prepareBobs::@5] + // [138] phi from prepareBobs::@3 to prepareBobs::@5 [phi:prepareBobs::@3->prepareBobs::@5] __b5_from___b3: - // [172] phi (byte*) progress_cursor#24 = (byte*) progress_cursor#31 [phi:prepareBobs::@3->prepareBobs::@5#0] -- register_copy - // [172] phi (byte) progress_idx#25 = (byte) progress_idx#31 [phi:prepareBobs::@3->prepareBobs::@5#1] -- register_copy - // [172] phi (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#0 [phi:prepareBobs::@3->prepareBobs::@5#2] -- register_copy - // [172] phi (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#30 [phi:prepareBobs::@3->prepareBobs::@5#3] -- register_copy - // [172] phi (byte*) prepareBobs::bob_glyph#2 = (const byte*) PROTO_BOB [phi:prepareBobs::@3->prepareBobs::@5#4] -- pbuz1=pbuc1 + // [138] phi (byte*) progress_cursor#24 = (byte*) progress_cursor#31 [phi:prepareBobs::@3->prepareBobs::@5#0] -- register_copy + // [138] phi (byte) progress_idx#25 = (byte) progress_idx#31 [phi:prepareBobs::@3->prepareBobs::@5#1] -- register_copy + // [138] phi (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#0 [phi:prepareBobs::@3->prepareBobs::@5#2] -- register_copy + // [138] phi (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#30 [phi:prepareBobs::@3->prepareBobs::@5#3] -- register_copy + // [138] phi (byte*) prepareBobs::bob_glyph#2 = (const byte*) PROTO_BOB [phi:prepareBobs::@3->prepareBobs::@5#4] -- pbuz1=pbuc1 lda #PROTO_BOB sta.z bob_glyph+1 - // [172] phi (byte) prepareBobs::cell#2 = (byte) 0 [phi:prepareBobs::@3->prepareBobs::@5#5] -- vbuz1=vbuc1 + // [138] phi (byte) prepareBobs::cell#2 = (byte) 0 [phi:prepareBobs::@3->prepareBobs::@5#5] -- vbuz1=vbuc1 lda #0 sta.z cell jmp __b5 // prepareBobs::@5 __b5: - // [173] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6 -- vbuz1_lt_vbuc1_then_la1 + // [139] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6 -- vbuz1_lt_vbuc1_then_la1 lda.z cell cmp #9 bcc __b6 jmp __b7 // prepareBobs::@7 __b7: - // [174] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12 -- vbuz1=_inc_vbuz1 + // [140] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12 -- vbuz1=_inc_vbuz1 inc.z bob_table_idx - // [175] call protoBobShiftRight - // [213] phi from prepareBobs::@7 to protoBobShiftRight [phi:prepareBobs::@7->protoBobShiftRight] + // [141] call protoBobShiftRight + // [179] phi from prepareBobs::@7 to protoBobShiftRight [phi:prepareBobs::@7->protoBobShiftRight] protoBobShiftRight_from___b7: jsr protoBobShiftRight - // [176] phi from prepareBobs::@7 to prepareBobs::@12 [phi:prepareBobs::@7->prepareBobs::@12] + // [142] phi from prepareBobs::@7 to prepareBobs::@12 [phi:prepareBobs::@7->prepareBobs::@12] __b12_from___b7: jmp __b12 // prepareBobs::@12 __b12: - // [177] call protoBobShiftRight - // [213] phi from prepareBobs::@12 to protoBobShiftRight [phi:prepareBobs::@12->protoBobShiftRight] + // [143] call protoBobShiftRight + // [179] phi from prepareBobs::@12 to protoBobShiftRight [phi:prepareBobs::@12->protoBobShiftRight] protoBobShiftRight_from___b12: jsr protoBobShiftRight jmp __b13 // prepareBobs::@13 __b13: - // [178] (byte) prepareBobs::shift_x#1 ← ++ (byte) prepareBobs::shift_x#2 -- vbuz1=_inc_vbuz1 + // [144] (byte) prepareBobs::shift_x#1 ← ++ (byte) prepareBobs::shift_x#2 -- vbuz1=_inc_vbuz1 inc.z shift_x - // [166] phi from prepareBobs::@13 to prepareBobs::@2 [phi:prepareBobs::@13->prepareBobs::@2] + // [132] phi from prepareBobs::@13 to prepareBobs::@2 [phi:prepareBobs::@13->prepareBobs::@2] __b2_from___b13: - // [166] phi (byte) progress_idx#31 = (byte) progress_idx#25 [phi:prepareBobs::@13->prepareBobs::@2#0] -- register_copy - // [166] phi (byte*) progress_cursor#31 = (byte*) progress_cursor#24 [phi:prepareBobs::@13->prepareBobs::@2#1] -- register_copy - // [166] phi (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#21 [phi:prepareBobs::@13->prepareBobs::@2#2] -- register_copy - // [166] phi (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#1 [phi:prepareBobs::@13->prepareBobs::@2#3] -- register_copy - // [166] phi (byte) prepareBobs::shift_x#2 = (byte) prepareBobs::shift_x#1 [phi:prepareBobs::@13->prepareBobs::@2#4] -- register_copy + // [132] phi (byte) progress_idx#31 = (byte) progress_idx#25 [phi:prepareBobs::@13->prepareBobs::@2#0] -- register_copy + // [132] phi (byte*) progress_cursor#31 = (byte*) progress_cursor#24 [phi:prepareBobs::@13->prepareBobs::@2#1] -- register_copy + // [132] phi (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#21 [phi:prepareBobs::@13->prepareBobs::@2#2] -- register_copy + // [132] phi (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#1 [phi:prepareBobs::@13->prepareBobs::@2#3] -- register_copy + // [132] phi (byte) prepareBobs::shift_x#2 = (byte) prepareBobs::shift_x#1 [phi:prepareBobs::@13->prepareBobs::@2#4] -- register_copy jmp __b2 // prepareBobs::@6 __b6: - // [179] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 - // [180] call charsetFindOrAddGlyph - // [195] phi from prepareBobs::@6 to charsetFindOrAddGlyph [phi:prepareBobs::@6->charsetFindOrAddGlyph] + // [145] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + // [146] call charsetFindOrAddGlyph + // [161] phi from prepareBobs::@6 to charsetFindOrAddGlyph [phi:prepareBobs::@6->charsetFindOrAddGlyph] charsetFindOrAddGlyph_from___b6: - // [195] phi (byte*) charsetFindOrAddGlyph::glyph#10 = (byte*) charsetFindOrAddGlyph::glyph#1 [phi:prepareBobs::@6->charsetFindOrAddGlyph#0] -- register_copy - // [195] phi (byte) bob_charset_next_id#23 = (byte) bob_charset_next_id#21 [phi:prepareBobs::@6->charsetFindOrAddGlyph#1] -- register_copy + // [161] phi (byte*) charsetFindOrAddGlyph::glyph#10 = (byte*) charsetFindOrAddGlyph::glyph#1 [phi:prepareBobs::@6->charsetFindOrAddGlyph#0] -- register_copy + // [161] phi (byte) bob_charset_next_id#23 = (byte) bob_charset_next_id#21 [phi:prepareBobs::@6->charsetFindOrAddGlyph#1] -- register_copy jsr charsetFindOrAddGlyph - // [181] (byte) charsetFindOrAddGlyph::return#1 ← (byte) charsetFindOrAddGlyph::glyph_id#11 -- vbuaa=vbuxx + // [147] (byte) charsetFindOrAddGlyph::return#1 ← (byte) charsetFindOrAddGlyph::glyph_id#11 -- vbuaa=vbuxx txa jmp __b10 // prepareBobs::@10 __b10: - // [182] (byte~) prepareBobs::$6 ← (byte) charsetFindOrAddGlyph::return#1 - // [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 -- _deref_pbuz1=vbuaa + // [148] (byte~) prepareBobs::$6 ← (byte) charsetFindOrAddGlyph::return#1 + // [149] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 -- _deref_pbuz1=vbuaa // Look for an existing char in BOB_CHARSET ldy #0 sta (bob_table),y - // [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 -- pbuz1=pbuz1_plus_vbuc1 + // [150] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 -- pbuz1=pbuz1_plus_vbuc1 // Move to the next glyph lda #8 clc @@ -8597,7 +7752,7 @@ prepareBobs: { bcc !+ inc.z bob_glyph+1 !: - // [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y -- pbuz1=pbuz1_plus_vbuc1 + // [151] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y -- pbuz1=pbuz1_plus_vbuc1 // Move to the next sub-table lda #BOB_SHIFTS_X*BOB_SHIFTS_Y clc @@ -8606,60 +7761,60 @@ prepareBobs: { bcc !+ inc.z bob_table+1 !: - // [186] call progress_inc + // [152] call progress_inc jsr progress_inc jmp __b11 // prepareBobs::@11 __b11: - // [187] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2 -- vbuz1=_inc_vbuz1 + // [153] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2 -- vbuz1=_inc_vbuz1 inc.z cell - // [172] phi from prepareBobs::@11 to prepareBobs::@5 [phi:prepareBobs::@11->prepareBobs::@5] + // [138] phi from prepareBobs::@11 to prepareBobs::@5 [phi:prepareBobs::@11->prepareBobs::@5] __b5_from___b11: - // [172] phi (byte*) progress_cursor#24 = (byte*) progress_cursor#17 [phi:prepareBobs::@11->prepareBobs::@5#0] -- register_copy - // [172] phi (byte) progress_idx#25 = (byte) progress_idx#10 [phi:prepareBobs::@11->prepareBobs::@5#1] -- register_copy - // [172] phi (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#1 [phi:prepareBobs::@11->prepareBobs::@5#2] -- register_copy - // [172] phi (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#16 [phi:prepareBobs::@11->prepareBobs::@5#3] -- register_copy - // [172] phi (byte*) prepareBobs::bob_glyph#2 = (byte*) prepareBobs::bob_glyph#1 [phi:prepareBobs::@11->prepareBobs::@5#4] -- register_copy - // [172] phi (byte) prepareBobs::cell#2 = (byte) prepareBobs::cell#1 [phi:prepareBobs::@11->prepareBobs::@5#5] -- register_copy + // [138] phi (byte*) progress_cursor#24 = (byte*) progress_cursor#17 [phi:prepareBobs::@11->prepareBobs::@5#0] -- register_copy + // [138] phi (byte) progress_idx#25 = (byte) progress_idx#10 [phi:prepareBobs::@11->prepareBobs::@5#1] -- register_copy + // [138] phi (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#1 [phi:prepareBobs::@11->prepareBobs::@5#2] -- register_copy + // [138] phi (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#16 [phi:prepareBobs::@11->prepareBobs::@5#3] -- register_copy + // [138] phi (byte*) prepareBobs::bob_glyph#2 = (byte*) prepareBobs::bob_glyph#1 [phi:prepareBobs::@11->prepareBobs::@5#4] -- register_copy + // [138] phi (byte) prepareBobs::cell#2 = (byte) prepareBobs::cell#1 [phi:prepareBobs::@11->prepareBobs::@5#5] -- register_copy jmp __b5 } // progress_inc // Increase PETSCII progress one bit // Done by increasing the character until the idx is 8 and then moving to the next char progress_inc: { - // [188] (byte) progress_idx#8 ← ++ (byte) progress_idx#25 -- vbuz1=_inc_vbuz1 + // [154] (byte) progress_idx#8 ← ++ (byte) progress_idx#25 -- vbuz1=_inc_vbuz1 inc.z progress_idx - // [189] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 + // [155] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp.z progress_idx bne __b1_from_progress_inc jmp __b2 // progress_inc::@2 __b2: - // [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) -- _deref_pbuz1=_deref_pbuc1 + // [156] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) -- _deref_pbuz1=_deref_pbuc1 lda progress_chars+8 ldy #0 sta (progress_cursor),y - // [191] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24 -- pbuz1=_inc_pbuz1 + // [157] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24 -- pbuz1=_inc_pbuz1 inc.z progress_cursor bne !+ inc.z progress_cursor+1 !: - // [192] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] + // [158] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] __b1_from___b2: - // [192] phi (byte*) progress_cursor#17 = (byte*) progress_cursor#8 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy - // [192] phi (byte) progress_idx#10 = (byte) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 + // [158] phi (byte*) progress_cursor#17 = (byte*) progress_cursor#8 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy + // [158] phi (byte) progress_idx#10 = (byte) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 lda #0 sta.z progress_idx jmp __b1 - // [192] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] + // [158] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] __b1_from_progress_inc: - // [192] phi (byte*) progress_cursor#17 = (byte*) progress_cursor#24 [phi:progress_inc->progress_inc::@1#0] -- register_copy - // [192] phi (byte) progress_idx#10 = (byte) progress_idx#8 [phi:progress_inc->progress_inc::@1#1] -- register_copy + // [158] phi (byte*) progress_cursor#17 = (byte*) progress_cursor#24 [phi:progress_inc->progress_inc::@1#0] -- register_copy + // [158] phi (byte) progress_idx#10 = (byte) progress_idx#8 [phi:progress_inc->progress_inc::@1#1] -- register_copy jmp __b1 // progress_inc::@1 __b1: - // [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + // [159] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy.z progress_idx lda progress_chars,y ldy #0 @@ -8667,7 +7822,7 @@ progress_inc: { jmp __breturn // progress_inc::@return __breturn: - // [194] return + // [160] return rts // Progress characters progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0 @@ -8675,98 +7830,98 @@ progress_inc: { // charsetFindOrAddGlyph // Looks through a charset to find a glyph if present. If not present it is added. // Returns the glyph ID -// charsetFindOrAddGlyph(byte* zeropage(6) glyph) +// charsetFindOrAddGlyph(byte* zeropage($13) glyph) charsetFindOrAddGlyph: { - .label glyph = 6 - .label glyph_cursor = $11 - // [196] phi from charsetFindOrAddGlyph to charsetFindOrAddGlyph::@1 [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1] + .label glyph = $13 + .label glyph_cursor = 5 + // [162] phi from charsetFindOrAddGlyph to charsetFindOrAddGlyph::@1 [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1] __b1_from_charsetFindOrAddGlyph: - // [196] phi (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (const byte*) BOB_CHARSET [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1#0] -- pbuz1=pbuc1 + // [162] phi (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (const byte*) BOB_CHARSET [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1#0] -- pbuz1=pbuc1 lda #BOB_CHARSET sta.z glyph_cursor+1 - // [196] phi (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) 0 [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1#1] -- vbuxx=vbuc1 + // [162] phi (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) 0 [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1#1] -- vbuxx=vbuc1 ldx #0 jmp __b1 // charsetFindOrAddGlyph::@1 __b1: - // [197] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2 -- vbuxx_neq_vbuz1_then_la1 + // [163] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2 -- vbuxx_neq_vbuz1_then_la1 cpx.z bob_charset_next_id bne __b2_from___b1 - // [198] phi from charsetFindOrAddGlyph::@1 to charsetFindOrAddGlyph::@7 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@7] + // [164] phi from charsetFindOrAddGlyph::@1 to charsetFindOrAddGlyph::@7 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@7] __b7_from___b1: - // [198] phi (byte) charsetFindOrAddGlyph::i1#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@7#0] -- vbuyy=vbuc1 + // [164] phi (byte) charsetFindOrAddGlyph::i1#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@7#0] -- vbuyy=vbuc1 ldy #0 jmp __b7 // Not found - add it // charsetFindOrAddGlyph::@7 __b7: - // [199] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@8 -- vbuyy_lt_vbuc1_then_la1 + // [165] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@8 -- vbuyy_lt_vbuc1_then_la1 cpy #8 bcc __b8 jmp __b9 // charsetFindOrAddGlyph::@9 __b9: - // [200] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23 -- vbuz1=_inc_vbuz1 + // [166] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23 -- vbuz1=_inc_vbuz1 inc.z bob_charset_next_id - // [201] phi from charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@9 to charsetFindOrAddGlyph::@return [phi:charsetFindOrAddGlyph::@5/charsetFindOrAddGlyph::@9->charsetFindOrAddGlyph::@return] + // [167] phi from charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@9 to charsetFindOrAddGlyph::@return [phi:charsetFindOrAddGlyph::@5/charsetFindOrAddGlyph::@9->charsetFindOrAddGlyph::@return] __breturn_from___b5: __breturn_from___b9: - // [201] phi (byte) bob_charset_next_id#16 = (byte) bob_charset_next_id#23 [phi:charsetFindOrAddGlyph::@5/charsetFindOrAddGlyph::@9->charsetFindOrAddGlyph::@return#0] -- register_copy + // [167] phi (byte) bob_charset_next_id#16 = (byte) bob_charset_next_id#23 [phi:charsetFindOrAddGlyph::@5/charsetFindOrAddGlyph::@9->charsetFindOrAddGlyph::@return#0] -- register_copy jmp __breturn // charsetFindOrAddGlyph::@return __breturn: - // [202] return + // [168] return rts // charsetFindOrAddGlyph::@8 __b8: - // [203] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) -- pbuz1_derefidx_vbuyy=pbuz2_derefidx_vbuyy + // [169] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) -- pbuz1_derefidx_vbuyy=pbuz2_derefidx_vbuyy lda (glyph),y sta (glyph_cursor),y - // [204] (byte) charsetFindOrAddGlyph::i1#1 ← ++ (byte) charsetFindOrAddGlyph::i1#2 -- vbuyy=_inc_vbuyy + // [170] (byte) charsetFindOrAddGlyph::i1#1 ← ++ (byte) charsetFindOrAddGlyph::i1#2 -- vbuyy=_inc_vbuyy iny - // [198] phi from charsetFindOrAddGlyph::@8 to charsetFindOrAddGlyph::@7 [phi:charsetFindOrAddGlyph::@8->charsetFindOrAddGlyph::@7] + // [164] phi from charsetFindOrAddGlyph::@8 to charsetFindOrAddGlyph::@7 [phi:charsetFindOrAddGlyph::@8->charsetFindOrAddGlyph::@7] __b7_from___b8: - // [198] phi (byte) charsetFindOrAddGlyph::i1#2 = (byte) charsetFindOrAddGlyph::i1#1 [phi:charsetFindOrAddGlyph::@8->charsetFindOrAddGlyph::@7#0] -- register_copy + // [164] phi (byte) charsetFindOrAddGlyph::i1#2 = (byte) charsetFindOrAddGlyph::i1#1 [phi:charsetFindOrAddGlyph::@8->charsetFindOrAddGlyph::@7#0] -- register_copy jmp __b7 - // [205] phi from charsetFindOrAddGlyph::@1 to charsetFindOrAddGlyph::@2 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@2] + // [171] phi from charsetFindOrAddGlyph::@1 to charsetFindOrAddGlyph::@2 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@2] __b2_from___b1: - // [205] phi (byte) charsetFindOrAddGlyph::i#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@2#0] -- vbuyy=vbuc1 + // [171] phi (byte) charsetFindOrAddGlyph::i#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@2#0] -- vbuyy=vbuc1 ldy #0 jmp __b2 // charsetFindOrAddGlyph::@2 __b2: - // [206] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@3 -- vbuyy_lt_vbuc1_then_la1 + // [172] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@3 -- vbuyy_lt_vbuc1_then_la1 cpy #8 bcc __b3 - // [208] phi from charsetFindOrAddGlyph::@2 to charsetFindOrAddGlyph::@5 [phi:charsetFindOrAddGlyph::@2->charsetFindOrAddGlyph::@5] + // [174] phi from charsetFindOrAddGlyph::@2 to charsetFindOrAddGlyph::@5 [phi:charsetFindOrAddGlyph::@2->charsetFindOrAddGlyph::@5] __b5_from___b2: - // [208] phi (byte) charsetFindOrAddGlyph::found#2 = (byte) 1 [phi:charsetFindOrAddGlyph::@2->charsetFindOrAddGlyph::@5#0] -- vbuaa=vbuc1 + // [174] phi (byte) charsetFindOrAddGlyph::found#2 = (byte) 1 [phi:charsetFindOrAddGlyph::@2->charsetFindOrAddGlyph::@5#0] -- vbuaa=vbuc1 lda #1 jmp __b5 // charsetFindOrAddGlyph::@3 __b3: - // [207] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 -- pbuz1_derefidx_vbuyy_eq_pbuz2_derefidx_vbuyy_then_la1 + // [173] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 -- pbuz1_derefidx_vbuyy_eq_pbuz2_derefidx_vbuyy_then_la1 lda (glyph_cursor),y cmp (glyph),y beq __b4 - // [208] phi from charsetFindOrAddGlyph::@3 to charsetFindOrAddGlyph::@5 [phi:charsetFindOrAddGlyph::@3->charsetFindOrAddGlyph::@5] + // [174] phi from charsetFindOrAddGlyph::@3 to charsetFindOrAddGlyph::@5 [phi:charsetFindOrAddGlyph::@3->charsetFindOrAddGlyph::@5] __b5_from___b3: - // [208] phi (byte) charsetFindOrAddGlyph::found#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@3->charsetFindOrAddGlyph::@5#0] -- vbuaa=vbuc1 + // [174] phi (byte) charsetFindOrAddGlyph::found#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@3->charsetFindOrAddGlyph::@5#0] -- vbuaa=vbuc1 lda #0 jmp __b5 // charsetFindOrAddGlyph::@5 __b5: - // [209] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@6 -- vbuc1_eq_vbuaa_then_la1 + // [175] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@6 -- vbuc1_eq_vbuaa_then_la1 cmp #0 beq __b6 jmp __breturn_from___b5 // charsetFindOrAddGlyph::@6 __b6: - // [210] (byte) charsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) charsetFindOrAddGlyph::glyph_id#11 -- vbuxx=_inc_vbuxx + // [176] (byte) charsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) charsetFindOrAddGlyph::glyph_id#11 -- vbuxx=_inc_vbuxx inx - // [211] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 -- pbuz1=pbuz1_plus_vbuc1 + // [177] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 -- pbuz1=pbuz1_plus_vbuc1 lda #8 clc adc.z glyph_cursor @@ -8774,112 +7929,112 @@ charsetFindOrAddGlyph: { bcc !+ inc.z glyph_cursor+1 !: - // [196] phi from charsetFindOrAddGlyph::@6 to charsetFindOrAddGlyph::@1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1] + // [162] phi from charsetFindOrAddGlyph::@6 to charsetFindOrAddGlyph::@1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1] __b1_from___b6: - // [196] phi (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (byte*) charsetFindOrAddGlyph::glyph_cursor#1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1#0] -- register_copy - // [196] phi (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) charsetFindOrAddGlyph::glyph_id#1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1#1] -- register_copy + // [162] phi (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (byte*) charsetFindOrAddGlyph::glyph_cursor#1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1#0] -- register_copy + // [162] phi (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) charsetFindOrAddGlyph::glyph_id#1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1#1] -- register_copy jmp __b1 // charsetFindOrAddGlyph::@4 __b4: - // [212] (byte) charsetFindOrAddGlyph::i#1 ← ++ (byte) charsetFindOrAddGlyph::i#2 -- vbuyy=_inc_vbuyy + // [178] (byte) charsetFindOrAddGlyph::i#1 ← ++ (byte) charsetFindOrAddGlyph::i#2 -- vbuyy=_inc_vbuyy iny - // [205] phi from charsetFindOrAddGlyph::@4 to charsetFindOrAddGlyph::@2 [phi:charsetFindOrAddGlyph::@4->charsetFindOrAddGlyph::@2] + // [171] phi from charsetFindOrAddGlyph::@4 to charsetFindOrAddGlyph::@2 [phi:charsetFindOrAddGlyph::@4->charsetFindOrAddGlyph::@2] __b2_from___b4: - // [205] phi (byte) charsetFindOrAddGlyph::i#2 = (byte) charsetFindOrAddGlyph::i#1 [phi:charsetFindOrAddGlyph::@4->charsetFindOrAddGlyph::@2#0] -- register_copy + // [171] phi (byte) charsetFindOrAddGlyph::i#2 = (byte) charsetFindOrAddGlyph::i#1 [phi:charsetFindOrAddGlyph::@4->charsetFindOrAddGlyph::@2#0] -- register_copy jmp __b2 } // protoBobShiftRight // Shift PROTO_BOB right one X pixel protoBobShiftRight: { - .label carry = $e - .label i = $a - // [214] phi from protoBobShiftRight to protoBobShiftRight::@1 [phi:protoBobShiftRight->protoBobShiftRight::@1] + .label carry = $f + .label i = $12 + // [180] phi from protoBobShiftRight to protoBobShiftRight::@1 [phi:protoBobShiftRight->protoBobShiftRight::@1] __b1_from_protoBobShiftRight: - // [214] phi (byte) protoBobShiftRight::carry#2 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#0] -- vbuyy=vbuc1 + // [180] phi (byte) protoBobShiftRight::carry#2 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#0] -- vbuyy=vbuc1 ldy #0 - // [214] phi (byte) protoBobShiftRight::j#3 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#1] -- vbuxx=vbuc1 + // [180] phi (byte) protoBobShiftRight::j#3 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#1] -- vbuxx=vbuc1 ldx #0 - // [214] phi (byte) protoBobShiftRight::i#2 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#2] -- vbuz1=vbuc1 + // [180] phi (byte) protoBobShiftRight::i#2 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#2] -- vbuz1=vbuc1 lda #0 sta.z i jmp __b1 // protoBobShiftRight::@1 __b1: - // [215] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2 -- vbuz1_lt_vbuc1_then_la1 + // [181] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2 -- vbuz1_lt_vbuc1_then_la1 lda.z i cmp #3*3*8 bcc __b2 jmp __breturn // protoBobShiftRight::@return __breturn: - // [216] return + // [182] return rts // protoBobShiftRight::@2 __b2: - // [217] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 -- vbuaa=pbuc1_derefidx_vbuxx_band_vbuc2 + // [183] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 -- vbuaa=pbuc1_derefidx_vbuxx_band_vbuc2 lda #1 and PROTO_BOB,x - // [218] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@3 -- vbuc1_neq_vbuaa_then_la1 + // [184] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@3 -- vbuc1_neq_vbuaa_then_la1 cmp #0 bne __b3_from___b2 - // [220] phi from protoBobShiftRight::@2 to protoBobShiftRight::@4 [phi:protoBobShiftRight::@2->protoBobShiftRight::@4] + // [186] phi from protoBobShiftRight::@2 to protoBobShiftRight::@4 [phi:protoBobShiftRight::@2->protoBobShiftRight::@4] __b4_from___b2: - // [220] phi (byte) protoBobShiftRight::carry#1 = (byte) 0 [phi:protoBobShiftRight::@2->protoBobShiftRight::@4#0] -- vbuz1=vbuc1 + // [186] phi (byte) protoBobShiftRight::carry#1 = (byte) 0 [phi:protoBobShiftRight::@2->protoBobShiftRight::@4#0] -- vbuz1=vbuc1 lda #0 sta.z carry jmp __b4 - // [219] phi from protoBobShiftRight::@2 to protoBobShiftRight::@3 [phi:protoBobShiftRight::@2->protoBobShiftRight::@3] + // [185] phi from protoBobShiftRight::@2 to protoBobShiftRight::@3 [phi:protoBobShiftRight::@2->protoBobShiftRight::@3] __b3_from___b2: jmp __b3 // protoBobShiftRight::@3 __b3: - // [220] phi from protoBobShiftRight::@3 to protoBobShiftRight::@4 [phi:protoBobShiftRight::@3->protoBobShiftRight::@4] + // [186] phi from protoBobShiftRight::@3 to protoBobShiftRight::@4 [phi:protoBobShiftRight::@3->protoBobShiftRight::@4] __b4_from___b3: - // [220] phi (byte) protoBobShiftRight::carry#1 = (byte) $80 [phi:protoBobShiftRight::@3->protoBobShiftRight::@4#0] -- vbuz1=vbuc1 + // [186] phi (byte) protoBobShiftRight::carry#1 = (byte) $80 [phi:protoBobShiftRight::@3->protoBobShiftRight::@4#0] -- vbuz1=vbuc1 lda #$80 sta.z carry jmp __b4 // protoBobShiftRight::@4 __b4: - // [221] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 -- vbuaa=pbuc1_derefidx_vbuxx_ror_1 + // [187] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 -- vbuaa=pbuc1_derefidx_vbuxx_ror_1 lda PROTO_BOB,x lsr - // [222] (byte~) protoBobShiftRight::$6 ← (byte) protoBobShiftRight::carry#2 | (byte~) protoBobShiftRight::$5 -- vbuaa=vbuyy_bor_vbuaa + // [188] (byte~) protoBobShiftRight::$6 ← (byte) protoBobShiftRight::carry#2 | (byte~) protoBobShiftRight::$5 -- vbuaa=vbuyy_bor_vbuaa sty.z $ff ora.z $ff - // [223] *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) ← (byte~) protoBobShiftRight::$6 -- pbuc1_derefidx_vbuxx=vbuaa + // [189] *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) ← (byte~) protoBobShiftRight::$6 -- pbuc1_derefidx_vbuxx=vbuaa // Shift value and add old carry sta PROTO_BOB,x - // [224] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@5 -- vbuxx_ge_vbuc1_then_la1 + // [190] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@5 -- vbuxx_ge_vbuc1_then_la1 // Increment j to iterate over the PROTO_BOB left-to-right, top-to-bottom (0, 24, 48, 1, 25, 49, ...) cpx #$30 bcs __b5 jmp __b7 // protoBobShiftRight::@7 __b7: - // [225] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 -- vbuxx=vbuxx_plus_vbuc1 + // [191] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 -- vbuxx=vbuxx_plus_vbuc1 txa axs #-[$18] - // [226] phi from protoBobShiftRight::@5 protoBobShiftRight::@7 to protoBobShiftRight::@6 [phi:protoBobShiftRight::@5/protoBobShiftRight::@7->protoBobShiftRight::@6] + // [192] phi from protoBobShiftRight::@5 protoBobShiftRight::@7 to protoBobShiftRight::@6 [phi:protoBobShiftRight::@5/protoBobShiftRight::@7->protoBobShiftRight::@6] __b6_from___b5: __b6_from___b7: - // [226] phi (byte) protoBobShiftRight::j#10 = (byte) protoBobShiftRight::j#1 [phi:protoBobShiftRight::@5/protoBobShiftRight::@7->protoBobShiftRight::@6#0] -- register_copy + // [192] phi (byte) protoBobShiftRight::j#10 = (byte) protoBobShiftRight::j#1 [phi:protoBobShiftRight::@5/protoBobShiftRight::@7->protoBobShiftRight::@6#0] -- register_copy jmp __b6 // protoBobShiftRight::@6 __b6: - // [227] (byte) protoBobShiftRight::i#1 ← ++ (byte) protoBobShiftRight::i#2 -- vbuz1=_inc_vbuz1 + // [193] (byte) protoBobShiftRight::i#1 ← ++ (byte) protoBobShiftRight::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [228] (byte) protoBobShiftRight::carry#10 ← (byte) protoBobShiftRight::carry#1 -- vbuyy=vbuz1 + // [194] (byte) protoBobShiftRight::carry#10 ← (byte) protoBobShiftRight::carry#1 -- vbuyy=vbuz1 ldy.z carry - // [214] phi from protoBobShiftRight::@6 to protoBobShiftRight::@1 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1] + // [180] phi from protoBobShiftRight::@6 to protoBobShiftRight::@1 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1] __b1_from___b6: - // [214] phi (byte) protoBobShiftRight::carry#2 = (byte) protoBobShiftRight::carry#10 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#0] -- register_copy - // [214] phi (byte) protoBobShiftRight::j#3 = (byte) protoBobShiftRight::j#10 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#1] -- register_copy - // [214] phi (byte) protoBobShiftRight::i#2 = (byte) protoBobShiftRight::i#1 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#2] -- register_copy + // [180] phi (byte) protoBobShiftRight::carry#2 = (byte) protoBobShiftRight::carry#10 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#0] -- register_copy + // [180] phi (byte) protoBobShiftRight::j#3 = (byte) protoBobShiftRight::j#10 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#1] -- register_copy + // [180] phi (byte) protoBobShiftRight::i#2 = (byte) protoBobShiftRight::i#1 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#2] -- register_copy jmp __b1 // protoBobShiftRight::@5 __b5: - // [229] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f -- vbuxx=vbuxx_minus_vbuc1 + // [195] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f -- vbuxx=vbuxx_minus_vbuc1 txa axs #$2f jmp __b6_from___b5 @@ -8888,49 +8043,49 @@ protoBobShiftRight: { // Shift PROTO_BOB down one Y pixel // At the same time restore PROTO_BOB X by shifting 8 pixels left protoBobShiftDown: { - // [231] phi from protoBobShiftDown to protoBobShiftDown::@1 [phi:protoBobShiftDown->protoBobShiftDown::@1] + // [197] phi from protoBobShiftDown to protoBobShiftDown::@1 [phi:protoBobShiftDown->protoBobShiftDown::@1] __b1_from_protoBobShiftDown: - // [231] phi (byte) protoBobShiftDown::i#2 = (byte) $17 [phi:protoBobShiftDown->protoBobShiftDown::@1#0] -- vbuxx=vbuc1 + // [197] phi (byte) protoBobShiftDown::i#2 = (byte) $17 [phi:protoBobShiftDown->protoBobShiftDown::@1#0] -- vbuxx=vbuc1 ldx #$17 jmp __b1 // protoBobShiftDown::@1 __b1: - // [232] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2 -- vbuxx_gt_0_then_la1 + // [198] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2 -- vbuxx_gt_0_then_la1 cpx #0 bne __b2 jmp __b3 // protoBobShiftDown::@3 __b3: - // [233] *((const byte*) PROTO_BOB) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [199] *((const byte*) PROTO_BOB) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta PROTO_BOB - // [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [200] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta PROTO_BOB+$18 - // [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [201] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta PROTO_BOB+$30 jmp __breturn // protoBobShiftDown::@return __breturn: - // [236] return + // [202] return rts // protoBobShiftDown::@2 __b2: - // [237] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + // [203] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda PROTO_BOB+$17,x sta PROTO_BOB,x - // [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + // [204] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda PROTO_BOB+$2f,x sta PROTO_BOB+$18,x - // [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + // [205] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROTO_BOB+$30,x - // [240] (byte) protoBobShiftDown::i#1 ← -- (byte) protoBobShiftDown::i#2 -- vbuxx=_dec_vbuxx + // [206] (byte) protoBobShiftDown::i#1 ← -- (byte) protoBobShiftDown::i#2 -- vbuxx=_dec_vbuxx dex - // [231] phi from protoBobShiftDown::@2 to protoBobShiftDown::@1 [phi:protoBobShiftDown::@2->protoBobShiftDown::@1] + // [197] phi from protoBobShiftDown::@2 to protoBobShiftDown::@1 [phi:protoBobShiftDown::@2->protoBobShiftDown::@1] __b1_from___b2: - // [231] phi (byte) protoBobShiftDown::i#2 = (byte) protoBobShiftDown::i#1 [phi:protoBobShiftDown::@2->protoBobShiftDown::@1#0] -- register_copy + // [197] phi (byte) protoBobShiftDown::i#2 = (byte) protoBobShiftDown::i#1 [phi:protoBobShiftDown::@2->protoBobShiftDown::@1#0] -- register_copy jmp __b1 } // progress_init @@ -8939,42 +8094,42 @@ progress_init: { jmp __breturn // progress_init::@return __breturn: - // [242] return + // [208] return rts } // mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { // x/2 - .label c = $d + .label c = 9 // Counter used for determining x%2==0 - .label sqr1_hi = $f + .label sqr1_hi = $a // Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4 - .label sqr = $b - .label sqr1_lo = 6 + .label sqr = $15 + .label sqr1_lo = 7 // Decrease or increase x_255 - initially we decrease - .label sqr2_hi = 8 - .label sqr2_lo = $11 + .label sqr2_hi = $13 + .label sqr2_lo = $10 //Start with g(0)=f(255) - .label dir = $e - // [244] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + .label dir = $c + // [210] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] __b1_from_mulf_init: - // [244] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuxx=vbuc1 + // [210] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuxx=vbuc1 ldx #0 - // [244] phi (byte*) mulf_init::sqr1_hi#2 = (const byte*) mulf_sqr1_hi+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + // [210] phi (byte*) mulf_init::sqr1_hi#2 = (const byte*) mulf_sqr1_hi+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta.z sqr1_hi+1 - // [244] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1 + // [210] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1 lda #<0 sta.z sqr lda #>0 sta.z sqr+1 - // [244] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 + // [210] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 lda #0 sta.z c - // [244] phi (byte*) mulf_init::sqr1_lo#2 = (const byte*) mulf_sqr1_lo+(byte) 1 [phi:mulf_init->mulf_init::@1#4] -- pbuz1=pbuc1 + // [210] phi (byte*) mulf_init::sqr1_lo#2 = (const byte*) mulf_sqr1_lo+(byte) 1 [phi:mulf_init->mulf_init::@1#4] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 @@ -8982,26 +8137,26 @@ mulf_init: { jmp __b1 // mulf_init::@1 __b1: - // [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 -- pbuz1_neq_pbuc1_then_la1 + // [211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne __b2 lda.z sqr1_lo cmp #mulf_init::@5] + // [212] phi from mulf_init::@1 to mulf_init::@5 [phi:mulf_init::@1->mulf_init::@5] __b5_from___b1: - // [246] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 + // [212] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 lda #$ff sta.z dir - // [246] phi (byte*) mulf_init::sqr2_hi#2 = (const byte*) mulf_sqr2_hi [phi:mulf_init::@1->mulf_init::@5#1] -- pbuz1=pbuc1 + // [212] phi (byte*) mulf_init::sqr2_hi#2 = (const byte*) mulf_sqr2_hi [phi:mulf_init::@1->mulf_init::@5#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta.z sqr2_hi+1 - // [246] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuxx=vbuc1 + // [212] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuxx=vbuc1 ldx #-1 - // [246] phi (byte*) mulf_init::sqr2_lo#2 = (const byte*) mulf_sqr2_lo [phi:mulf_init::@1->mulf_init::@5#3] -- pbuz1=pbuc1 + // [212] phi (byte*) mulf_init::sqr2_lo#2 = (const byte*) mulf_sqr2_lo [phi:mulf_init::@1->mulf_init::@5#3] -- pbuz1=pbuc1 lda #mulf_sqr2_lo @@ -9009,7 +8164,7 @@ mulf_init: { jmp __b5 // mulf_init::@5 __b5: - // [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 -- pbuz1_neq_pbuc1_then_la1 + // [213] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 -- pbuz1_neq_pbuc1_then_la1 lda.z sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne __b6 @@ -9019,114 +8174,114 @@ mulf_init: { jmp __b7 // mulf_init::@7 __b7: - // [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) -- _deref_pbuc1=_deref_pbuc2 + // [214] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) -- _deref_pbuc1=_deref_pbuc2 // Set the very last value g(511) = f(256) lda mulf_sqr1_lo+$100 sta mulf_sqr2_lo+$1ff - // [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) -- _deref_pbuc1=_deref_pbuc2 + // [215] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) -- _deref_pbuc1=_deref_pbuc2 lda mulf_sqr1_hi+$100 sta mulf_sqr2_hi+$1ff jmp __breturn // mulf_init::@return __breturn: - // [250] return + // [216] return rts // mulf_init::@6 __b6: - // [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + // [217] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - // [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + // [218] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x ldy #0 sta (sqr2_hi),y - // [253] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + // [219] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc.z sqr2_hi bne !+ inc.z sqr2_hi+1 !: - // [254] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + // [220] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc.z dir tax - // [255] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuxx_neq_0_then_la1 + // [221] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuxx_neq_0_then_la1 cpx #0 bne __b9_from___b6 - // [257] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8] + // [223] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8] __b8_from___b6: - // [257] phi (byte) mulf_init::dir#4 = (byte) 1 [phi:mulf_init::@6->mulf_init::@8#0] -- vbuz1=vbuc1 + // [223] phi (byte) mulf_init::dir#4 = (byte) 1 [phi:mulf_init::@6->mulf_init::@8#0] -- vbuz1=vbuc1 lda #1 sta.z dir jmp __b8 - // [256] phi from mulf_init::@6 to mulf_init::@9 [phi:mulf_init::@6->mulf_init::@9] + // [222] phi from mulf_init::@6 to mulf_init::@9 [phi:mulf_init::@6->mulf_init::@9] __b9_from___b6: jmp __b9 // mulf_init::@9 __b9: - // [257] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8] + // [223] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8] __b8_from___b9: - // [257] phi (byte) mulf_init::dir#4 = (byte) mulf_init::dir#2 [phi:mulf_init::@9->mulf_init::@8#0] -- register_copy + // [223] phi (byte) mulf_init::dir#4 = (byte) mulf_init::dir#2 [phi:mulf_init::@9->mulf_init::@8#0] -- register_copy jmp __b8 // mulf_init::@8 __b8: - // [258] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + // [224] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc.z sqr2_lo bne !+ inc.z sqr2_lo+1 !: - // [246] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5] + // [212] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5] __b5_from___b8: - // [246] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy - // [246] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy - // [246] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy - // [246] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@8->mulf_init::@5#3] -- register_copy + // [212] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy + // [212] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy + // [212] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy + // [212] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@8->mulf_init::@5#3] -- register_copy jmp __b5 // mulf_init::@2 __b2: - // [259] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + // [225] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc.z c - // [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuz1_band_vbuc1 + // [226] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuz1_band_vbuc1 lda #1 and.z c - // [261] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 -- vbuaa_neq_0_then_la1 + // [227] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 -- vbuaa_neq_0_then_la1 cmp #0 bne __b3_from___b2 jmp __b4 // mulf_init::@4 __b4: - // [262] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuxx=_inc_vbuxx + // [228] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuxx=_inc_vbuxx inx - // [263] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + // [229] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc.z sqr bne !+ inc.z sqr+1 !: - // [264] phi from mulf_init::@2 mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3] + // [230] phi from mulf_init::@2 mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3] __b3_from___b2: __b3_from___b4: - // [264] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#0] -- register_copy - // [264] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#1] -- register_copy + // [230] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#0] -- register_copy + // [230] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#1] -- register_copy jmp __b3 // mulf_init::@3 __b3: - // [265] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + // [231] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda.z sqr - // [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 -- _deref_pbuz1=vbuaa + // [232] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - // [267] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + // [233] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda.z sqr+1 - // [268] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + // [234] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - // [269] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + // [235] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc.z sqr1_hi bne !+ inc.z sqr1_hi+1 !: - // [270] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuxx + // [236] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuxx txa clc adc.z sqr @@ -9134,18 +8289,18 @@ mulf_init: { bcc !+ inc.z sqr+1 !: - // [271] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + // [237] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc.z sqr1_lo bne !+ inc.z sqr1_lo+1 !: - // [244] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1] + // [210] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1] __b1_from___b3: - // [244] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy - // [244] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy - // [244] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy - // [244] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy - // [244] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@3->mulf_init::@1#4] -- register_copy + // [210] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy + // [210] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy + // [210] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy + // [210] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy + // [210] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@3->mulf_init::@1#4] -- register_copy jmp __b1 } // File Data @@ -9177,14 +8332,6 @@ PROTO_BOB: .for (var y=0; y<24; y++) .byte pic.getSinglecolorByte(x,y) - // Sine and Cosine tables - // Angles: $00=0, $80=PI,$100=2*PI - // Sine/Cosine: signed fixed [-$7f,$7f] - .align $40 -SIN: -.for(var i=0;i<$140;i++) - .byte >round($7fff*sin(i*2*PI/256)) - // Tables containing the char to use for a specific cell of a shifted BOB. // char_id = BOB_TABLES[cell*BOB_SUBTABLE_SIZE + shift_y*BOB_SHIFTS_X + shift_x]; BOB_TABLES: .fill 9*8*4, 0 @@ -9196,47 +8343,35 @@ SIN: ASSEMBLER OPTIMIZATIONS Removing instruction jmp __b1 Removing instruction jmp __bend -Removing instruction jmp __b9 -Removing instruction jmp __b10 +Removing instruction jmp __b11 +Removing instruction jmp __b12 Removing instruction jmp vicSelectGfxBank1 Removing instruction jmp vicSelectGfxBank1_toDd001 Removing instruction jmp vicSelectGfxBank1___b1 Removing instruction jmp toD0181 -Removing instruction jmp __b7 +Removing instruction jmp __b9 Removing instruction jmp __b1 Removing instruction jmp __b2 Removing instruction jmp __b3 -Removing instruction jmp __b11 -Removing instruction jmp __b4 -Removing instruction jmp __b12 Removing instruction jmp __b13 -Removing instruction jmp __b14 +Removing instruction jmp __b4 Removing instruction jmp __b5 -Removing instruction jmp __b15 +Removing instruction jmp __b14 Removing instruction jmp __b6 +Removing instruction jmp __b7 +Removing instruction jmp __b15 +Removing instruction jmp __b8 Removing instruction jmp __b16 Removing instruction jmp vicSelectGfxBank2 Removing instruction jmp vicSelectGfxBank2_toDd001 Removing instruction jmp vicSelectGfxBank2___b1 Removing instruction jmp toD0182 -Removing instruction jmp __b8 +Removing instruction jmp __b10 Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __breturn Removing instruction jmp __breturn Removing instruction jmp __breturn -Removing instruction jmp mulf8s_prepare1 -Removing instruction jmp __b1 -Removing instruction jmp __b2 -Removing instruction jmp __breturn -Removing instruction jmp __b5 -Removing instruction jmp __b3 -Removing instruction jmp __b1 -Removing instruction jmp __b4 -Removing instruction jmp __b2 -Removing instruction jmp __breturn -Removing instruction jmp __breturn -Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __breturn Removing instruction jmp __b1 @@ -9284,8 +8419,6 @@ Removing instruction jmp __b8 Removing instruction jmp __b4 Removing instruction jmp __b3 Succesful ASM optimization Pass5NextJumpElimination -Replacing instruction ldx memB with TAX -Removing instruction lda memA Replacing instruction ldy #0 with TAY Removing instruction lda #0 Removing instruction lda #0 @@ -9306,12 +8439,11 @@ Removing instruction ldy #0 Removing instruction ldy #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label __bbegin with __b1 -Replacing label __b4_from___b14 with __b4 -Replacing label __b6_from___b15 with __b6 +Replacing label __b5_from___b14 with __b5 +Replacing label __b4_from___b6 with __b4 +Replacing label __b8_from___b15 with __b8 Replacing label __b1 with __b2 -Replacing label __b6_from___b16 with __b6 -Replacing label __b1_from___b5 with __b1 -Replacing label __b2_from___b1 with __b2 +Replacing label __b8_from___b16 with __b8 Replacing label __b1_from___b1 with __b1 Replacing label __b1_from___b1 with __b1 Replacing label __b2_from___b2 with __b2 @@ -9325,29 +8457,24 @@ Removing instruction __bbegin: Removing instruction __b1_from___bbegin: Removing instruction main_from___b1: Removing instruction __bend_from___b1: -Removing instruction __b9_from_main: -Removing instruction prepareBobs_from___b9: -Removing instruction __b10_from___b9: -Removing instruction renderBobInit_from___b10: +Removing instruction __b11_from_main: +Removing instruction prepareBobs_from___b11: +Removing instruction __b12_from___b11: +Removing instruction renderBobInit_from___b12: Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: Removing instruction vicSelectGfxBank1_toDd001: Removing instruction toD0181_from_vicSelectGfxBank1___b1: Removing instruction toD0181: Removing instruction __b1: -Removing instruction __b4_from___b14: -Removing instruction __b6_from___b15: -Removing instruction __b6_from___b16: -Removing instruction keyboard_key_pressed_from___b6: +Removing instruction __b4_from___b6: +Removing instruction __b5_from___b14: +Removing instruction __b8_from___b15: +Removing instruction __b8_from___b16: +Removing instruction keyboard_key_pressed_from___b8: Removing instruction vicSelectGfxBank2_toDd001_from_vicSelectGfxBank2: Removing instruction vicSelectGfxBank2_toDd001: Removing instruction toD0182_from_vicSelectGfxBank2___b1: Removing instruction toD0182: -Removing instruction __breturn: -Removing instruction __b1_from___b3: -Removing instruction __b1_from___b5: -Removing instruction __b2_from___b1: -Removing instruction __b2_from___b4: -Removing instruction __breturn: Removing instruction __b1_from___b1: Removing instruction __b1_from___b1: Removing instruction __b2_from___b2: @@ -9373,43 +8500,33 @@ Removing instruction __b3_from___b4: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction __bend: Removing instruction mulf_init_from_main: -Removing instruction __b9: -Removing instruction __b10: +Removing instruction __b11: +Removing instruction __b12: Removing instruction vicSelectGfxBank1: Removing instruction vicSelectGfxBank1___b1: -Removing instruction __b7: -Removing instruction memset_from___b7: -Removing instruction __b1_from___b7: +Removing instruction __b9: +Removing instruction memset_from___b9: +Removing instruction __b1_from___b9: Removing instruction __b3: Removing instruction renderBobCleanup_from___b3: -Removing instruction __b11: -Removing instruction __b4_from___b11: -Removing instruction mulf8s_from___b4: -Removing instruction __b12: -Removing instruction mulf8s_from___b12: Removing instruction __b13: +Removing instruction __b4_from___b13: +Removing instruction __b5_from___b4: Removing instruction __b14: -Removing instruction __b5: -Removing instruction keyboard_key_pressed_from___b5: +Removing instruction __b6: +Removing instruction __b7: +Removing instruction keyboard_key_pressed_from___b7: Removing instruction __b15: Removing instruction __b1_from___b15: Removing instruction __b16: Removing instruction vicSelectGfxBank2: Removing instruction vicSelectGfxBank2___b1: -Removing instruction __b8: +Removing instruction __b10: Removing instruction __breturn: Removing instruction __b1: Removing instruction __breturn: Removing instruction __breturn: Removing instruction __breturn: -Removing instruction mulf8s_prepare1: -Removing instruction __b1: -Removing instruction __b2: -Removing instruction __b5: -Removing instruction __b3: -Removing instruction __b4: -Removing instruction __breturn: -Removing instruction __breturn: Removing instruction __b1_from_renderBobCleanup: Removing instruction __breturn: Removing instruction __b1_from_memset: @@ -9473,6 +8590,7 @@ Relabelling long label __b2_from___b1 to b1 Relabelling long label __b2_from___b1 to b1 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp __b4 +Removing instruction jmp __b5 Removing instruction jmp __b1 Removing instruction jmp __b1 Removing instruction jmp __b2 @@ -9487,6 +8605,8 @@ FINAL SYMBOL TABLE (label) @1 (label) @begin (label) @end +(const byte*) BASIC_CHARSET = (byte*) 4096 +(const byte*) BASIC_SCREEN = (byte*) 1024 (const byte*) BOB_CHARSET = (byte*) 8192 (const byte*) BOB_SCREEN = (byte*) 10240 (const byte) BOB_SHIFTS_X = (number) 4 @@ -9494,16 +8614,14 @@ FINAL SYMBOL TABLE (const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y (const byte*) BOB_TABLES = { fill( 9*8*4, 0) } (const byte*) BORDERCOL = (byte*) 53280 -(const byte*) CHARSET_BASIC = (byte*) 4096 (const byte*) CIA1_PORT_A = (byte*) 56320 (const byte*) CIA1_PORT_B = (byte*) 56321 (const byte*) CIA2_PORT_A = (byte*) 56576 (const byte*) CIA2_PORT_A_DDR = (byte*) 56578 -(const signed byte*) COS = (const signed byte*) SIN+(byte) $40 (const byte*) D018 = (byte*) 53272 (const byte) KEY_SPACE = (number) $3c (const word*) MUL40 = { fill( $20, 0) } -(const byte) NUM_BOBS = (number) $14 +(const byte) NUM_BOBS = (number) $19 (const byte*) PROTO_BOB = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff)) .for (var x=0;x<3; x++) .for (var y=0; y<24; y++) @@ -9515,18 +8633,14 @@ FINAL SYMBOL TABLE (const byte) RADIX::OCTAL = (number) 8 (const byte*) RASTER = (byte*) 53266 (const byte**) RENDERBOB_CLEANUP = { fill( NUM_BOBS, 0) } -(const byte*) SCREEN_BASIC = (byte*) 1024 -(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++) - .byte >round($7fff*sin(i*2*PI/256)) - }} (const byte) SIZEOF_POINTER = (byte) 2 (byte) bob_charset_next_id -(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:13 12.0 -(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:13 1000.5454545454544 -(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:13 275.5 -(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:13 1400.3333333333335 -(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:13 37.33333333333333 -(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:13 4.0 +(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:14 12.0 +(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:14 1000.5454545454544 +(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:14 275.5 +(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:14 1400.3333333333335 +(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:14 37.33333333333333 +(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:14 4.0 (byte()) charsetFindOrAddGlyph((byte*) charsetFindOrAddGlyph::glyph , (byte*) charsetFindOrAddGlyph::charset) (label) charsetFindOrAddGlyph::@1 (label) charsetFindOrAddGlyph::@2 @@ -9542,11 +8656,11 @@ FINAL SYMBOL TABLE (byte) charsetFindOrAddGlyph::found (byte) charsetFindOrAddGlyph::found#2 reg byte a 10001.0 (byte*) charsetFindOrAddGlyph::glyph -(byte*) charsetFindOrAddGlyph::glyph#1 glyph zp[2]:6 2002.0 -(byte*) charsetFindOrAddGlyph::glyph#10 glyph zp[2]:6 7400.200000000001 +(byte*) charsetFindOrAddGlyph::glyph#1 glyph zp[2]:19 2002.0 +(byte*) charsetFindOrAddGlyph::glyph#10 glyph zp[2]:19 7400.200000000001 (byte*) charsetFindOrAddGlyph::glyph_cursor -(byte*) charsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:17 20002.0 -(byte*) charsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:17 10000.307692307691 +(byte*) charsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:5 20002.0 +(byte*) charsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:5 10000.307692307691 (byte) charsetFindOrAddGlyph::glyph_id (byte) charsetFindOrAddGlyph::glyph_id#1 reg byte x 10001.0 (byte) charsetFindOrAddGlyph::glyph_id#11 reg byte x 1937.75 @@ -9581,11 +8695,8 @@ FINAL SYMBOL TABLE (byte) keyboard_matrix_read::rowid (const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(signed word~) main::$10 zp[2]:11 202.0 -(signed word~) main::$12 zp[2]:11 202.0 -(signed word~) main::$13 zp[2]:11 202.0 -(byte~) main::$19 reg byte a 22.0 -(byte~) main::$21 reg byte a 22.0 +(byte~) main::$15 reg byte a 22.0 +(byte~) main::$17 reg byte a 22.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -9603,19 +8714,26 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (label) main::@return -(byte) main::a -(byte) main::a#1 a zp[1]:4 28.857142857142858 -(byte) main::a#2 a zp[1]:4 25.9375 -(byte) main::a#6 a zp[1]:4 22.0 -(byte) main::angle -(byte) main::angle#1 angle zp[1]:2 3.6666666666666665 -(byte) main::angle#8 angle zp[1]:2 1.1785714285714286 -(byte) main::i -(byte) main::i#1 i zp[1]:5 151.5 -(byte) main::i#2 i zp[1]:5 9.619047619047619 -(signed byte) main::r -(signed byte) main::r#1 r zp[1]:3 33.666666666666664 -(signed byte) main::r#2 r zp[1]:3 23.764705882352942 +(byte) main::col +(byte) main::col#1 col zp[1]:2 151.5 +(byte) main::col#5 col zp[1]:2 13.466666666666667 +(const signed word) main::colOffsetX = (signed word) $100 +(const signed word) main::colOffsetY = (signed word) $1800 +(signed word) main::origX +(signed word) main::origX#1 origX zp[2]:21 3.142857142857143 +(signed word) main::origX#8 origX zp[2]:21 1.5 +(const signed word) main::origY = (signed word) $a00 +(byte) main::row +(byte) main::row#1 reg byte x 1501.5 +(byte) main::row#2 reg byte x 250.25 +(const signed word) main::rowOffsetX = (signed word) $c00 +(signed word) main::rowOffsetY +(signed word) main::rowOffsetY#1 rowOffsetY zp[2]:23 3.6666666666666665 +(signed word) main::rowOffsetY#10 rowOffsetY zp[2]:23 44.47826086956522 +(signed word) main::rowX +(signed word) main::rowX#1 rowX zp[2]:19 50.5 +(signed word) main::rowY +(signed word) main::rowY#1 rowY zp[2]:3 67.33333333333333 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -9624,7 +8742,7 @@ FINAL SYMBOL TABLE (label) main::toD0182 (byte*) main::toD0182_gfx (byte) main::toD0182_return -(const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) SCREEN_BASIC&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET_BASIC/(byte) 4&(byte) $f +(const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) BASIC_SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BASIC_CHARSET/(byte) 4&(byte) $f (byte*) main::toD0182_screen (label) main::vicSelectGfxBank1 (label) main::vicSelectGfxBank1_@1 @@ -9641,9 +8759,16 @@ FINAL SYMBOL TABLE (byte) main::vicSelectGfxBank2_toDd001_return (const byte) main::vicSelectGfxBank2_toDd001_return#0 vicSelectGfxBank2_toDd001_return = (byte) 3 (signed word) main::x -(signed word) main::x#0 x zp[2]:8 18.363636363636363 +(signed word) main::x#0 x zp[2]:19 24.153846153846153 +(signed word) main::x#1 x_1 zp[2]:5 400.4 +(signed word) main::x#2 x_1 zp[2]:5 620.8 +(signed word) main::x#4 x zp[2]:19 22.0 +(signed word) main::x#7 x_1 zp[2]:5 101.0 (signed word) main::y -(signed word) main::y#0 y zp[2]:11 40.4 +(signed word) main::y#0 y zp[2]:3 21.642857142857142 +(signed word) main::y#1 y_1 zp[2]:7 500.5 +(signed word) main::y#2 y_1 zp[2]:7 517.3333333333334 +(signed word) main::y#6 y_1 zp[2]:7 202.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -9651,8 +8776,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) 0 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:6 22.0 -(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:21 22.0 +(byte*) memset::dst#2 dst zp[2]:21 14.666666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -9660,59 +8785,6 @@ FINAL SYMBOL TABLE (void*) memset::return (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) BOB_SCREEN -(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) -(label) mulf8s::@1 -(label) mulf8s::@2 -(label) mulf8s::@return -(signed byte) mulf8s::a -(signed byte) mulf8s::a#0 reg byte a 101.0 -(signed byte) mulf8s::a#1 reg byte a 101.0 -(signed byte) mulf8s::b -(signed byte) mulf8s::b#0 reg byte x 202.0 -(signed byte) mulf8s::b#1 reg byte x 202.0 -(signed byte) mulf8s::b#2 reg byte x 68.0 -(label) mulf8s::mulf8s_prepare1 -(signed byte) mulf8s::mulf8s_prepare1_a -(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 202.0 -(signed word) mulf8s::return -(signed word) mulf8s::return#0 return zp[2]:11 51.0 -(signed word) mulf8s::return#2 return zp[2]:11 202.0 -(signed word) mulf8s::return#3 return zp[2]:11 202.0 -(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 reg byte a 4.0 -(byte~) mulf8s_prepared::$15 reg byte a 4.0 -(byte~) mulf8s_prepared::$16 reg byte a 4.0 -(byte~) mulf8s_prepared::$8 reg byte a 4.0 -(label) mulf8s_prepared::@1 -(label) mulf8s_prepared::@2 -(label) mulf8s_prepared::@3 -(label) mulf8s_prepared::@4 -(label) mulf8s_prepared::@5 -(label) mulf8s_prepared::@return -(signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 b zp[1]:14 0.4 -(word) mulf8s_prepared::m -(word) mulf8s_prepared::m#0 m zp[2]:11 2.0 -(word) mulf8s_prepared::m#1 m zp[2]:11 4.0 -(word) mulf8s_prepared::m#2 m zp[2]:11 4.0 -(word) mulf8s_prepared::m#4 m zp[2]:11 1.3333333333333333 -(word) mulf8s_prepared::m#5 m zp[2]:11 2.5 -(const signed byte*) mulf8s_prepared::memA = (signed byte*) 253 -(signed word) mulf8s_prepared::return -(void()) mulf8u_prepare((byte) mulf8u_prepare::a) -(label) mulf8u_prepare::@return -(byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#0 reg byte a 4.0 -(const byte*) mulf8u_prepare::memA = (byte*) 253 -(word()) mulf8u_prepared((byte) mulf8u_prepared::b) -(label) mulf8u_prepared::@return -(byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 reg byte a 4.0 -(const byte*) mulf8u_prepared::memB = (byte*) 255 -(const byte*) mulf8u_prepared::resL = (byte*) 254 -(word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 return zp[2]:11 1.3333333333333333 -(word) mulf8u_prepared::return#2 return zp[2]:11 4.0 (void()) mulf_init() (byte~) mulf_init::$1 reg byte a 22.0 (byte~) mulf_init::$4 reg byte a 22.0 @@ -9728,28 +8800,28 @@ FINAL SYMBOL TABLE (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:13 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:13 11.0 +(byte) mulf_init::c#1 c zp[1]:9 2.5384615384615383 +(byte) mulf_init::c#2 c zp[1]:9 11.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:14 4.125 -(byte) mulf_init::dir#4 dir zp[1]:14 11.0 +(byte) mulf_init::dir#2 dir zp[1]:12 4.125 +(byte) mulf_init::dir#4 dir zp[1]:12 11.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:11 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:11 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:11 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:11 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:21 11.0 +(word) mulf_init::sqr#2 sqr zp[2]:21 22.0 +(word) mulf_init::sqr#3 sqr zp[2]:21 9.166666666666666 +(word) mulf_init::sqr#4 sqr zp[2]:21 5.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:15 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:15 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:10 7.333333333333333 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:10 2.75 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:6 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:6 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:7 22.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:7 3.142857142857143 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:8 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:8 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:19 3.6666666666666665 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:19 8.25 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:17 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:17 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:16 22.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:16 4.888888888888889 (byte) mulf_init::x_2 (byte) mulf_init::x_2#1 reg byte x 11.0 (byte) mulf_init::x_2#2 reg byte x 5.5 @@ -9778,37 +8850,37 @@ FINAL SYMBOL TABLE (label) prepareBobs::@9 (label) prepareBobs::@return (byte*) prepareBobs::bob_glyph -(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:6 500.5 -(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:6 429.0 +(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:19 500.5 +(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:19 429.0 (byte*) prepareBobs::bob_table -(byte*) prepareBobs::bob_table#0 bob_table zp[2]:15 202.0 -(byte*) prepareBobs::bob_table#1 bob_table zp[2]:15 667.3333333333334 -(byte*) prepareBobs::bob_table#2 bob_table zp[2]:15 388.0 +(byte*) prepareBobs::bob_table#0 bob_table zp[2]:3 202.0 +(byte*) prepareBobs::bob_table#1 bob_table zp[2]:3 667.3333333333334 +(byte*) prepareBobs::bob_table#2 bob_table zp[2]:3 388.0 (byte) prepareBobs::bob_table_idx -(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:4 40.4 -(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:4 19.11764705882353 -(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:4 11.0 +(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:12 40.4 +(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:12 19.11764705882353 +(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:12 11.0 (byte) prepareBobs::cell -(byte) prepareBobs::cell#1 cell zp[1]:10 2002.0 -(byte) prepareBobs::cell#2 cell zp[1]:10 300.29999999999995 +(byte) prepareBobs::cell#1 cell zp[1]:18 2002.0 +(byte) prepareBobs::cell#2 cell zp[1]:18 300.29999999999995 (byte) prepareBobs::shift_x -(byte) prepareBobs::shift_x#1 shift_x zp[1]:5 202.0 -(byte) prepareBobs::shift_x#2 shift_x zp[1]:5 16.833333333333332 +(byte) prepareBobs::shift_x#1 shift_x zp[1]:13 202.0 +(byte) prepareBobs::shift_x#2 shift_x zp[1]:13 16.833333333333332 (byte) prepareBobs::shift_y (byte) prepareBobs::shift_y#1 shift_y zp[1]:2 22.0 (byte) prepareBobs::shift_y#2 shift_y zp[1]:2 1.4347826086956523 (byte*) progress_cursor -(byte*) progress_cursor#15 progress_cursor zp[2]:11 11.0 -(byte*) progress_cursor#17 progress_cursor zp[2]:11 201.4 -(byte*) progress_cursor#24 progress_cursor zp[2]:11 71.11764705882355 -(byte*) progress_cursor#31 progress_cursor zp[2]:11 37.33333333333333 -(byte*) progress_cursor#8 progress_cursor zp[2]:11 4.0 +(byte*) progress_cursor#15 progress_cursor zp[2]:23 11.0 +(byte*) progress_cursor#17 progress_cursor zp[2]:23 201.4 +(byte*) progress_cursor#24 progress_cursor zp[2]:23 71.11764705882355 +(byte*) progress_cursor#31 progress_cursor zp[2]:23 37.33333333333333 +(byte*) progress_cursor#8 progress_cursor zp[2]:23 4.0 (byte) progress_idx -(byte) progress_idx#10 progress_idx zp[1]:3 201.0 -(byte) progress_idx#16 progress_idx zp[1]:3 11.0 -(byte) progress_idx#25 progress_idx zp[1]:3 86.07142857142856 -(byte) progress_idx#31 progress_idx zp[1]:3 37.33333333333333 -(byte) progress_idx#8 progress_idx zp[1]:3 3.0 +(byte) progress_idx#10 progress_idx zp[1]:9 201.0 +(byte) progress_idx#16 progress_idx zp[1]:9 11.0 +(byte) progress_idx#25 progress_idx zp[1]:9 86.07142857142856 +(byte) progress_idx#31 progress_idx zp[1]:9 37.33333333333333 +(byte) progress_idx#8 progress_idx zp[1]:9 3.0 (void()) progress_inc() (label) progress_inc::@1 (label) progress_inc::@2 @@ -9838,12 +8910,12 @@ FINAL SYMBOL TABLE (label) protoBobShiftRight::@7 (label) protoBobShiftRight::@return (byte) protoBobShiftRight::carry -(byte) protoBobShiftRight::carry#1 carry zp[1]:14 111.22222222222223 +(byte) protoBobShiftRight::carry#1 carry zp[1]:15 111.22222222222223 (byte) protoBobShiftRight::carry#10 reg byte y 2002.0 (byte) protoBobShiftRight::carry#2 reg byte y 286.0 (byte) protoBobShiftRight::i -(byte) protoBobShiftRight::i#1 i zp[1]:10 1001.0 -(byte) protoBobShiftRight::i#2 i zp[1]:10 231.0 +(byte) protoBobShiftRight::i#1 i zp[1]:18 1001.0 +(byte) protoBobShiftRight::i#2 i zp[1]:18 231.0 (byte) protoBobShiftRight::j (byte) protoBobShiftRight::j#1 reg byte x 2002.0 (byte) protoBobShiftRight::j#10 reg byte x 1001.0 @@ -9851,26 +8923,26 @@ FINAL SYMBOL TABLE (byte) protoBobShiftRight::j#3 reg byte x 700.7 (byte) protoBobShiftRight::new_carry (void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos) -(byte*~) renderBob::$2 zp[2]:11 4.0 +(byte*~) renderBob::$2 zp[2]:16 4.0 (byte~) renderBob::$4 reg byte a 4.0 -(byte~) renderBob::$5 zp[1]:13 2.0 +(byte~) renderBob::$5 zp[1]:18 2.0 (byte~) renderBob::$6 reg byte a 4.0 (byte~) renderBob::$8 reg byte a 4.0 (label) renderBob::@return (byte) renderBob::bob_table_idx -(byte) renderBob::bob_table_idx#0 reg byte x 1.8181818181818186 +(byte) renderBob::bob_table_idx#0 bob_table_idx zp[1]:18 1.8181818181818186 (byte*) renderBob::screen -(byte*) renderBob::screen#0 screen zp[2]:11 1.4666666666666666 +(byte*) renderBob::screen#0 screen zp[2]:16 1.4666666666666666 (byte) renderBob::x_char_offset -(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:10 0.8 +(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:15 0.8 (byte) renderBob::xpos -(byte) renderBob::xpos#0 xpos zp[1]:14 10.499999999999998 +(byte) renderBob::xpos#0 xpos zp[1]:13 100.5 (byte) renderBob::y_char_offset (byte) renderBob::y_char_offset#0 reg byte a 4.0 (word) renderBob::y_offset -(word) renderBob::y_offset#0 y_offset zp[2]:11 4.0 +(word) renderBob::y_offset#0 y_offset zp[2]:16 4.0 (byte) renderBob::ypos -(byte) renderBob::ypos#0 reg byte x 15.000000000000002 +(byte) renderBob::ypos#0 ypos zp[1]:14 143.57142857142856 (void()) renderBobCleanup() (byte~) renderBobCleanup::$1 reg byte a 202.0 (label) renderBobCleanup::@1 @@ -9879,17 +8951,18 @@ FINAL SYMBOL TABLE (byte) renderBobCleanup::i#1 reg byte x 151.5 (byte) renderBobCleanup::i#2 reg byte x 25.25 (byte*) renderBobCleanup::screen -(byte*) renderBobCleanup::screen#0 screen zp[2]:15 112.22222222222223 +(byte*) renderBobCleanup::screen#0 screen zp[2]:19 112.22222222222223 (byte**) renderBobCleanupNext -(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:6 7.357142857142858 -(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:6 3.3870967741935485 +(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:10 52.57142857142857 +(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:10 73.73333333333335 +(byte**) renderBobCleanupNext#21 renderBobCleanupNext zp[2]:10 67.33333333333333 (void()) renderBobInit() -(word~) renderBobInit::$0 zp[2]:15 16.5 -(word~) renderBobInit::$1 zp[2]:15 11.0 +(word~) renderBobInit::$0 zp[2]:21 16.5 +(word~) renderBobInit::$1 zp[2]:21 11.0 (byte~) renderBobInit::$4 reg byte a 22.0 (byte~) renderBobInit::$5 reg byte a 22.0 -(word~) renderBobInit::$6 zp[2]:17 22.0 -(word~) renderBobInit::$7 zp[2]:15 22.0 +(word~) renderBobInit::$6 zp[2]:23 22.0 +(word~) renderBobInit::$7 zp[2]:21 22.0 (label) renderBobInit::@1 (label) renderBobInit::@2 (label) renderBobInit::@return @@ -9900,53 +8973,47 @@ FINAL SYMBOL TABLE (byte) renderBobInit::y#1 reg byte x 16.5 (byte) renderBobInit::y#2 reg byte x 4.714285714285714 -reg byte a [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] -reg byte x [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] +reg byte x [ main::row#2 main::row#1 ] reg byte x [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] reg byte x [ renderBobInit::y#2 renderBobInit::y#1 ] reg byte x [ renderBobInit::i#2 renderBobInit::i#1 ] -zp[1]:2 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 main::angle#8 main::angle#1 ] -zp[1]:3 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 main::r#2 main::r#1 ] -zp[1]:4 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 main::a#2 main::a#6 main::a#1 ] -zp[1]:5 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 main::i#2 main::i#1 ] +zp[1]:2 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 main::col#5 main::col#1 ] +zp[2]:3 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 main::y#0 main::rowY#1 ] reg byte x [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] +zp[2]:5 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 main::x#2 main::x#1 main::x#7 ] reg byte y [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] reg byte y [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] reg byte a [ charsetFindOrAddGlyph::found#2 ] reg byte x [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] reg byte y [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] reg byte x [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] -zp[2]:6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 memset::dst#2 memset::dst#1 renderBobCleanupNext#17 renderBobCleanupNext#13 ] +zp[2]:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 main::y#2 main::y#1 main::y#6 ] +zp[1]:9 [ mulf_init::c#2 mulf_init::c#1 progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] +zp[2]:10 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] -zp[2]:8 [ main::x#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] -reg byte x [ renderBob::ypos#0 ] +zp[1]:12 [ mulf_init::dir#2 mulf_init::dir#4 prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] +zp[1]:13 [ renderBob::xpos#0 prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] +zp[1]:14 [ renderBob::ypos#0 bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] reg byte a [ keyboard_key_pressed::return#2 ] -reg byte a [ main::$19 ] +reg byte a [ main::$15 ] reg byte a [ keyboard_key_pressed::return#3 ] -reg byte a [ main::$21 ] +reg byte a [ main::$17 ] reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_key_pressed::$2 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_matrix_read::return#0 ] -zp[1]:10 [ renderBob::x_char_offset#0 protoBobShiftRight::i#2 protoBobShiftRight::i#1 prepareBobs::cell#2 prepareBobs::cell#1 ] +zp[1]:15 [ renderBob::x_char_offset#0 protoBobShiftRight::carry#1 ] reg byte a [ renderBob::y_char_offset#0 ] reg byte a [ renderBob::$8 ] -zp[2]:11 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#2 mulf8s::return#2 main::$10 mulf8s::return#3 main::$12 mulf8u_prepared::return#0 main::$13 main::y#0 ] +zp[2]:16 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] reg byte a [ renderBob::$4 ] -zp[1]:13 [ renderBob::$5 mulf_init::c#2 mulf_init::c#1 bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] +zp[1]:18 [ renderBob::$5 renderBob::bob_table_idx#0 protoBobShiftRight::i#2 protoBobShiftRight::i#1 prepareBobs::cell#2 prepareBobs::cell#1 ] reg byte a [ renderBob::$6 ] -reg byte x [ renderBob::bob_table_idx#0 ] -reg byte a [ mulf8u_prepare::a#0 ] -zp[1]:14 [ mulf8s_prepared::b#0 renderBob::xpos#0 mulf_init::dir#2 mulf_init::dir#4 protoBobShiftRight::carry#1 ] -reg byte a [ mulf8u_prepared::b#0 ] -reg byte a [ mulf8s_prepared::$8 ] -reg byte a [ mulf8s_prepared::$15 ] -reg byte a [ mulf8s_prepared::$12 ] -reg byte a [ mulf8s_prepared::$16 ] reg byte a [ renderBobCleanup::$1 ] -zp[2]:15 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 renderBobCleanup::screen#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] -zp[2]:17 [ renderBobInit::$6 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] +zp[2]:19 [ renderBobCleanup::screen#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 main::x#0 main::x#4 main::rowX#1 ] +zp[2]:21 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 memset::dst#2 memset::dst#1 main::origX#8 main::origX#1 ] +zp[2]:23 [ renderBobInit::$6 progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 main::rowOffsetY#10 main::rowOffsetY#1 ] reg byte a [ renderBobInit::$4 ] reg byte a [ renderBobInit::$5 ] reg byte a [ charsetFindOrAddGlyph::return#1 ] @@ -9960,7 +9027,7 @@ reg byte a [ mulf_init::$5 ] FINAL ASSEMBLER -Score: 3510699 +Score: 3582851 // File Comments // Pre-calculated bobs inside a charset (pre-moved to all x/y-combinations) @@ -9982,9 +9049,9 @@ Score: 3510699 .label CIA2_PORT_A_DDR = $dd02 .const KEY_SPACE = $3c // The BASIC screen - .label SCREEN_BASIC = $400 + .label BASIC_SCREEN = $400 // The BASIC charset - .label CHARSET_BASIC = $1000 + .label BASIC_CHARSET = $1000 // The BOB screen .label BOB_SCREEN = $2800 // The BOB charset @@ -9996,18 +9063,17 @@ Score: 3510699 // The size of a sub-table of BOB_TABLES .const BOB_SUBTABLE_SIZE = BOB_SHIFTS_X*BOB_SHIFTS_Y // The number of BOBs to render - .const NUM_BOBS = $14 + .const NUM_BOBS = $19 .const SIZEOF_POINTER = 2 - .label COS = SIN+$40 // BOB charset ID of the next glyph to be added - .label bob_charset_next_id = $d + .label bob_charset_next_id = $e // Current index within the progress cursor (0-7) - .label progress_idx = 3 + .label progress_idx = 9 // Current position of the progress cursor - .label progress_cursor = $b + .label progress_cursor = $17 // Pointer to the next clean-up to add // Prepare for next clean-up - .label renderBobCleanupNext = 6 + .label renderBobCleanupNext = $a // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -10017,35 +9083,40 @@ Score: 3510699 // @end // main main: { + .const origY = $a00 + // Row and column offset vectors + .const rowOffsetX = $c00 + .const colOffsetX = $100 + .const colOffsetY = $1800 .const vicSelectGfxBank1_toDd001_return = 3 .const vicSelectGfxBank2_toDd001_return = 3 .const toD0181_return = (>(BOB_SCREEN&$3fff)*4)|(>BOB_CHARSET)/4&$f - .const toD0182_return = (>(SCREEN_BASIC&$3fff)*4)|(>CHARSET_BASIC)/4&$f - .label __10 = $b - .label __12 = $b - .label __13 = $b - .label x = 8 - .label y = $b - .label a = 4 - .label r = 3 - .label i = 5 - // Render Rotated BOBs - .label angle = 2 + .const toD0182_return = (>(BASIC_SCREEN&$3fff)*4)|(>BASIC_CHARSET)/4&$f + .label x = $13 + .label y = 3 + .label x_1 = 5 + .label y_1 = 7 + .label rowX = $13 + .label rowY = 3 + .label col = 2 + // Origin point + .label origX = $15 + .label rowOffsetY = $17 // mulf_init() // [5] call mulf_init - // [243] phi from main to mulf_init [phi:main->mulf_init] + // [209] phi from main to mulf_init [phi:main->mulf_init] jsr mulf_init - // [6] phi from main to main::@9 [phi:main->main::@9] - // main::@9 + // [6] phi from main to main::@11 [phi:main->main::@11] + // main::@11 // prepareBobs() // [7] call prepareBobs - // [159] phi from main::@9 to prepareBobs [phi:main::@9->prepareBobs] + // [125] phi from main::@11 to prepareBobs [phi:main::@11->prepareBobs] jsr prepareBobs - // [8] phi from main::@9 to main::@10 [phi:main::@9->main::@10] - // main::@10 + // [8] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + // main::@12 // renderBobInit() // [9] call renderBobInit - // [143] phi from main::@10 to renderBobInit [phi:main::@10->renderBobInit] + // [109] phi from main::@12 to renderBobInit [phi:main::@12->renderBobInit] jsr renderBobInit // main::vicSelectGfxBank1 // *CIA2_PORT_A_DDR = %00000011 @@ -10061,19 +9132,27 @@ main: { sta CIA2_PORT_A // [13] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] // main::toD0181 - // main::@7 + // main::@9 // *D018 = toD018(BOB_SCREEN, BOB_CHARSET) // [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 // memset(BOB_SCREEN, 0x00, 1000) // [15] call memset - // [137] phi from main::@7 to memset [phi:main::@7->memset] + // [103] phi from main::@9 to memset [phi:main::@9->memset] jsr memset - // [16] phi from main::@7 to main::@1 [phi:main::@7->main::@1] - // [16] phi (byte) main::angle#8 = (byte) 0 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1 - lda #0 - sta.z angle + // [16] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + // [16] phi (signed word) main::rowOffsetY#10 = (signed word) $100 [phi:main::@9->main::@1#0] -- vwsz1=vwsc1 + lda #<$100 + sta.z rowOffsetY + lda #>$100 + sta.z rowOffsetY+1 + // [16] phi (signed word) main::origX#8 = (signed word) $a00 [phi:main::@9->main::@1#1] -- vwsz1=vwsc1 + lda #<$a00 + sta.z origX + lda #>$a00 + sta.z origX+1 + // Render Grid of BOBs // main::@1 // main::@2 __b2: @@ -10089,183 +9168,205 @@ main: { sta BORDERCOL // renderBobCleanup() // [19] call renderBobCleanup - // [121] phi from main::@3 to renderBobCleanup [phi:main::@3->renderBobCleanup] + // [87] phi from main::@3 to renderBobCleanup [phi:main::@3->renderBobCleanup] jsr renderBobCleanup - // main::@11 - // [20] (byte) main::a#6 ← (byte) main::angle#8 -- vbuz1=vbuz2 - lda.z angle - sta.z a - // [21] phi from main::@11 to main::@4 [phi:main::@11->main::@4] - // [21] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@4#0] -- vbuz1=vbuc1 + // main::@13 + // [20] (signed word) main::x#4 ← (signed word) main::origX#8 -- vwsz1=vwsz2 + lda.z origX + sta.z x + lda.z origX+1 + sta.z x+1 + // [21] phi from main::@13 to main::@4 [phi:main::@13->main::@4] + // [21] phi (byte) main::col#5 = (byte) 0 [phi:main::@13->main::@4#0] -- vbuz1=vbuc1 lda #0 - sta.z i - // [21] phi (byte**) renderBobCleanupNext#17 = (const byte**) RENDERBOB_CLEANUP [phi:main::@11->main::@4#1] -- pptz1=pptc1 + sta.z col + // [21] phi (byte**) renderBobCleanupNext#21 = (const byte**) RENDERBOB_CLEANUP [phi:main::@13->main::@4#1] -- pptz1=pptc1 lda #RENDERBOB_CLEANUP sta.z renderBobCleanupNext+1 - // [21] phi (byte) main::a#2 = (byte) main::a#6 [phi:main::@11->main::@4#2] -- register_copy - // [21] phi (signed byte) main::r#2 = (signed byte) $1e [phi:main::@11->main::@4#3] -- vbsz1=vbsc1 - lda #$1e - sta.z r - // [21] phi from main::@14 to main::@4 [phi:main::@14->main::@4] - // [21] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@14->main::@4#0] -- register_copy - // [21] phi (byte**) renderBobCleanupNext#17 = (byte**) renderBobCleanupNext#13 [phi:main::@14->main::@4#1] -- register_copy - // [21] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@14->main::@4#2] -- register_copy - // [21] phi (signed byte) main::r#2 = (signed byte) main::r#1 [phi:main::@14->main::@4#3] -- register_copy + // [21] phi (signed word) main::y#0 = (const signed word) main::origY [phi:main::@13->main::@4#2] -- vwsz1=vwsc1 + lda #origY + sta.z y+1 + // [21] phi (signed word) main::x#0 = (signed word) main::x#4 [phi:main::@13->main::@4#3] -- register_copy + // [21] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + // [21] phi (byte) main::col#5 = (byte) main::col#1 [phi:main::@6->main::@4#0] -- register_copy + // [21] phi (byte**) renderBobCleanupNext#21 = (byte**) renderBobCleanupNext#13 [phi:main::@6->main::@4#1] -- register_copy + // [21] phi (signed word) main::y#0 = (signed word) main::rowY#1 [phi:main::@6->main::@4#2] -- register_copy + // [21] phi (signed word) main::x#0 = (signed word) main::rowX#1 [phi:main::@6->main::@4#3] -- register_copy // main::@4 __b4: + // [22] (signed word) main::x#7 ← (signed word) main::x#0 -- vwsz1=vwsz2 + lda.z x + sta.z x_1 + lda.z x+1 + sta.z x_1+1 + // [23] (signed word) main::y#6 ← (signed word) main::y#0 -- vwsz1=vwsz2 + lda.z y + sta.z y_1 + lda.z y+1 + sta.z y_1+1 + // [24] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + // [24] phi (byte) main::row#2 = (byte) 0 [phi:main::@4->main::@5#0] -- vbuxx=vbuc1 + ldx #0 + // [24] phi (byte**) renderBobCleanupNext#17 = (byte**) renderBobCleanupNext#21 [phi:main::@4->main::@5#1] -- register_copy + // [24] phi (signed word) main::y#2 = (signed word) main::y#6 [phi:main::@4->main::@5#2] -- register_copy + // [24] phi (signed word) main::x#2 = (signed word) main::x#7 [phi:main::@4->main::@5#3] -- register_copy + // [24] phi from main::@14 to main::@5 [phi:main::@14->main::@5] + // [24] phi (byte) main::row#2 = (byte) main::row#1 [phi:main::@14->main::@5#0] -- register_copy + // [24] phi (byte**) renderBobCleanupNext#17 = (byte**) renderBobCleanupNext#13 [phi:main::@14->main::@5#1] -- register_copy + // [24] phi (signed word) main::y#2 = (signed word) main::y#1 [phi:main::@14->main::@5#2] -- register_copy + // [24] phi (signed word) main::x#2 = (signed word) main::x#1 [phi:main::@14->main::@5#3] -- register_copy + // main::@5 + __b5: // *BORDERCOL = 1 - // [22] *((const byte*) BORDERCOL) ← (byte) 1 -- _deref_pbuc1=vbuc2 + // [25] *((const byte*) BORDERCOL) ← (byte) 1 -- _deref_pbuc1=vbuc2 //kickasm {{ .break }} lda #1 sta BORDERCOL - // mulf8s(r, COS[a]) - // [23] (signed byte) mulf8s::a#0 ← (signed byte) main::r#2 -- vbsaa=vbsz1 - lda.z r - // [24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2) -- vbsxx=pbsc1_derefidx_vbuz1 - ldy.z a - ldx COS,y - // [25] call mulf8s - // [92] phi from main::@4 to mulf8s [phi:main::@4->mulf8s] - // [92] phi (signed byte) mulf8s::b#2 = (signed byte) mulf8s::b#0 [phi:main::@4->mulf8s#0] -- register_copy - // [92] phi (signed byte) mulf8s::mulf8s_prepare1_a#0 = (signed byte) mulf8s::a#0 [phi:main::@4->mulf8s#1] -- register_copy - jsr mulf8s - // mulf8s(r, COS[a]) - // [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 - // main::@12 - // [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 - // x = mulf8s(r, COS[a]) + 75*0x100 - // [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 -- vwsz1=vwsz2_plus_vwsc1 - lda.z __10 - clc - adc #<$4b*$100 - sta.z x - lda.z __10+1 - adc #>$4b*$100 - sta.z x+1 - // mulf8s(r, SIN[a]) - // [29] (signed byte) mulf8s::a#1 ← (signed byte) main::r#2 -- vbsaa=vbsz1 - lda.z r - // [30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2) -- vbsxx=pbsc1_derefidx_vbuz1 - ldy.z a - ldx SIN,y - // [31] call mulf8s - // [92] phi from main::@12 to mulf8s [phi:main::@12->mulf8s] - // [92] phi (signed byte) mulf8s::b#2 = (signed byte) mulf8s::b#1 [phi:main::@12->mulf8s#0] -- register_copy - // [92] phi (signed byte) mulf8s::mulf8s_prepare1_a#0 = (signed byte) mulf8s::a#1 [phi:main::@12->mulf8s#1] -- register_copy - jsr mulf8s - // mulf8s(r, SIN[a]) - // [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 - // main::@13 - // [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 - // mulf8s(r, SIN[a])*2 - // [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 -- vwsz1=vwsz1_rol_1 - asl.z __13 - rol.z __13+1 - // y = mulf8s(r, SIN[a])*2 + 90*0x100 - // [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 -- vwsz1=vwsz1_plus_vwsc1 - clc - lda.z y - adc #<$5a*$100 - sta.z y - lda.z y+1 - adc #>$5a*$100 - sta.z y+1 - // *BORDERCOL = 2 - // [36] *((const byte*) BORDERCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 - lda #2 - sta BORDERCOL - // a += 98 - // [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 -- vbuz1=vbuz1_plus_vbuc1 - lax.z a - axs #-[$62] - stx.z a - // r += 3 - // [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 -- vbsz1=vbsz1_plus_vbsc1 - lax.z r - axs #-[3] - stx.z r // renderBob(>x, >y) - // [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 -- vbuz1=_hi_vwsz2 - lda.z x+1 + // [26] (byte) renderBob::xpos#0 ← > (signed word) main::x#2 -- vbuz1=_hi_vwsz2 + lda.z x_1+1 sta.z renderBob.xpos - // [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 -- vbuxx=_hi_vwsz1 - lda.z y+1 - tax - // [41] call renderBob + // [27] (byte) renderBob::ypos#0 ← > (signed word) main::y#2 -- vbuz1=_hi_vwsz2 + lda.z y_1+1 + sta.z renderBob.ypos + // [28] call renderBob jsr renderBob // main::@14 - // for(char i: 0..NUM_BOBS-1) - // [42] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 - inc.z i - // [43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 - lda #NUM_BOBS-1+1 - cmp.z i + // x += rowOffsetX + // [29] (signed word) main::x#1 ← (signed word) main::x#2 + (const signed word) main::rowOffsetX -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z x_1 + adc #rowOffsetX + sta.z x_1+1 + // y += rowOffsetY + // [30] (signed word) main::y#1 ← (signed word) main::y#2 + (signed word) main::rowOffsetY#10 -- vwsz1=vwsz1_plus_vwsz2 + lda.z y_1 + clc + adc.z rowOffsetY + sta.z y_1 + lda.z y_1+1 + adc.z rowOffsetY+1 + sta.z y_1+1 + // *BORDERCOL = 2 + // [31] *((const byte*) BORDERCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 + lda #2 + sta BORDERCOL + // for(char row: 0..4) + // [32] (byte) main::row#1 ← ++ (byte) main::row#2 -- vbuxx=_inc_vbuxx + inx + // [33] if((byte) main::row#1!=(byte) 5) goto main::@5 -- vbuxx_neq_vbuc1_then_la1 + cpx #5 + bne __b5 + // main::@6 + // rowX += colOffsetX + // [34] (signed word) main::rowX#1 ← (signed word) main::x#0 + (const signed word) main::colOffsetX -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z rowX + adc #colOffsetX + sta.z rowX+1 + // rowY += colOffsetY + // [35] (signed word) main::rowY#1 ← (signed word) main::y#0 + (const signed word) main::colOffsetY -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z rowY + adc #colOffsetY + sta.z rowY+1 + // for(char col: 0..4) + // [36] (byte) main::col#1 ← ++ (byte) main::col#5 -- vbuz1=_inc_vbuz1 + inc.z col + // [37] if((byte) main::col#1!=(byte) 5) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 + lda #5 + cmp.z col bne __b4 - // main::@5 - // angle += 3 - // [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 - lax.z angle - axs #-[3] - stx.z angle + // main::@7 + // origX += 0x0100 + // [38] (signed word) main::origX#1 ← (signed word) main::origX#8 + (signed word) $100 -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z origX + adc #<$100 + sta.z origX + lda.z origX+1 + adc #>$100 + sta.z origX+1 + // rowOffsetY += 0x0080 + // [39] (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#10 + (signed word) $80 -- vwsz1=vwsz1_plus_vwsc1 + clc + lda.z rowOffsetY + adc #<$80 + sta.z rowOffsetY + lda.z rowOffsetY+1 + adc #>$80 + sta.z rowOffsetY+1 // *BORDERCOL = 0 - // [45] *((const byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [40] *((const byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL // keyboard_key_pressed(KEY_SPACE) - // [46] call keyboard_key_pressed - // [61] phi from main::@5 to keyboard_key_pressed [phi:main::@5->keyboard_key_pressed] + // [41] call keyboard_key_pressed + // [56] phi from main::@7 to keyboard_key_pressed [phi:main::@7->keyboard_key_pressed] jsr keyboard_key_pressed // keyboard_key_pressed(KEY_SPACE) - // [47] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 + // [42] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 // main::@15 - // [48] (byte~) main::$19 ← (byte) keyboard_key_pressed::return#2 + // [43] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 // if(keyboard_key_pressed(KEY_SPACE)) - // [49] if((byte) 0!=(byte~) main::$19) goto main::@6 -- vbuc1_neq_vbuaa_then_la1 + // [44] if((byte) 0!=(byte~) main::$15) goto main::@8 -- vbuc1_neq_vbuaa_then_la1 cmp #0 - bne __b6 + bne __b8 // [16] phi from main::@15 to main::@1 [phi:main::@15->main::@1] - // [16] phi (byte) main::angle#8 = (byte) main::angle#1 [phi:main::@15->main::@1#0] -- register_copy + // [16] phi (signed word) main::rowOffsetY#10 = (signed word) main::rowOffsetY#1 [phi:main::@15->main::@1#0] -- register_copy + // [16] phi (signed word) main::origX#8 = (signed word) main::origX#1 [phi:main::@15->main::@1#1] -- register_copy jmp __b2 // Wait for space release - // [50] phi from main::@15 main::@16 to main::@6 [phi:main::@15/main::@16->main::@6] - // main::@6 - __b6: + // [45] phi from main::@15 main::@16 to main::@8 [phi:main::@15/main::@16->main::@8] + // main::@8 + __b8: // keyboard_key_pressed(KEY_SPACE) - // [51] call keyboard_key_pressed - // [61] phi from main::@6 to keyboard_key_pressed [phi:main::@6->keyboard_key_pressed] + // [46] call keyboard_key_pressed + // [56] phi from main::@8 to keyboard_key_pressed [phi:main::@8->keyboard_key_pressed] jsr keyboard_key_pressed // keyboard_key_pressed(KEY_SPACE) - // [52] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 + // [47] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 // main::@16 - // [53] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#3 + // [48] (byte~) main::$17 ← (byte) keyboard_key_pressed::return#3 // while(keyboard_key_pressed(KEY_SPACE)) - // [54] if((byte) 0!=(byte~) main::$21) goto main::@6 -- vbuc1_neq_vbuaa_then_la1 + // [49] if((byte) 0!=(byte~) main::$17) goto main::@8 -- vbuc1_neq_vbuaa_then_la1 cmp #0 - bne __b6 + bne __b8 // main::vicSelectGfxBank2 // *CIA2_PORT_A_DDR = %00000011 - // [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 -- _deref_pbuc1=vbuc2 + // [50] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - // [56] phi from main::vicSelectGfxBank2 to main::vicSelectGfxBank2_toDd001 [phi:main::vicSelectGfxBank2->main::vicSelectGfxBank2_toDd001] + // [51] phi from main::vicSelectGfxBank2 to main::vicSelectGfxBank2_toDd001 [phi:main::vicSelectGfxBank2->main::vicSelectGfxBank2_toDd001] // main::vicSelectGfxBank2_toDd001 // main::vicSelectGfxBank2_@1 // *CIA2_PORT_A = toDd00(gfx) - // [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 -- _deref_pbuc1=vbuc2 + // [52] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank2_toDd001_return sta CIA2_PORT_A - // [58] phi from main::vicSelectGfxBank2_@1 to main::toD0182 [phi:main::vicSelectGfxBank2_@1->main::toD0182] + // [53] phi from main::vicSelectGfxBank2_@1 to main::toD0182 [phi:main::vicSelectGfxBank2_@1->main::toD0182] // main::toD0182 - // main::@8 - // *D018 = toD018(SCREEN_BASIC, CHARSET_BASIC) - // [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 + // main::@10 + // *D018 = toD018(BASIC_SCREEN, BASIC_CHARSET) + // [54] *((const byte*) D018) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 lda #toD0182_return sta D018 // main::@return // } - // [60] return + // [55] return rts } // keyboard_key_pressed @@ -10277,17 +9378,17 @@ keyboard_key_pressed: { .const colidx = KEY_SPACE&7 .label rowidx = KEY_SPACE>>3 // keyboard_matrix_read(rowidx) - // [62] call keyboard_matrix_read + // [57] call keyboard_matrix_read jsr keyboard_matrix_read - // [63] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + // [58] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 // keyboard_key_pressed::@1 - // [64] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + // [59] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 // keyboard_matrix_read(rowidx) & keyboard_matrix_col_bitmask[colidx] - // [65] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band__deref_pbuc1 + // [60] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band__deref_pbuc1 and keyboard_matrix_col_bitmask+colidx // keyboard_key_pressed::@return // } - // [66] return + // [61] return rts } // keyboard_matrix_read @@ -10298,53 +9399,55 @@ keyboard_key_pressed: { // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { // *CIA1_PORT_A = keyboard_matrix_row_bitmask[rowid] - // [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) -- _deref_pbuc1=_deref_pbuc2 + // [62] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) -- _deref_pbuc1=_deref_pbuc2 lda keyboard_matrix_row_bitmask+keyboard_key_pressed.rowidx sta CIA1_PORT_A // ~*CIA1_PORT_B - // [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) -- vbuaa=_bnot__deref_pbuc1 + // [63] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff // keyboard_matrix_read::@return // } - // [69] return + // [64] return rts } // renderBob // Render a single BOB at a given x/y-position // X-position is 0-151. Each x-position is 2 pixels wide. // Y-position is 0-183. Each y-position is 1 pixel high. -// renderBob(byte zeropage($e) xpos, byte register(X) ypos) +// renderBob(byte zeropage($d) xpos, byte zeropage($e) ypos) renderBob: { - .label __2 = $b - .label __5 = $d - .label xpos = $e - .label x_char_offset = $a - .label y_offset = $b - .label screen = $b + .label __2 = $10 + .label __5 = $12 + .label xpos = $d + .label ypos = $e + .label x_char_offset = $f + .label y_offset = $10 + .label screen = $10 + .label bob_table_idx = $12 // x_char_offset = xpos/BOB_SHIFTS_X - // [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 -- vbuz1=vbuz2_ror_2 + // [65] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 -- vbuz1=vbuz2_ror_2 lda.z xpos lsr lsr sta.z x_char_offset // y_char_offset = ypos/BOB_SHIFTS_Y - // [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 -- vbuaa=vbuxx_ror_3 - txa + // [66] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + lda.z ypos lsr lsr lsr // y_offset = MUL40[y_char_offset] - // [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + // [67] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - // [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) -- vwuz1=pwuc1_derefidx_vbuaa + // [68] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) -- vwuz1=pwuc1_derefidx_vbuaa tay lda MUL40,y sta.z y_offset lda MUL40+1,y sta.z y_offset+1 // BOB_SCREEN+y_offset - // [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 -- pbuz1=pbuc1_plus_vwuz1 + // [69] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 -- pbuz1=pbuc1_plus_vwuz1 clc lda.z __2 adc #BOB_SCREEN sta.z __2+1 // screen = BOB_SCREEN+y_offset+x_char_offset - // [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 -- pbuz1=pbuz1_plus_vbuz2 + // [70] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 -- pbuz1=pbuz1_plus_vbuz2 lda.z x_char_offset clc adc.z screen @@ -10362,25 +9465,25 @@ renderBob: { inc.z screen+1 !: // ypos&7 - // [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 -- vbuaa=vbuxx_band_vbuc1 - txa - and #7 + // [71] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 -- vbuaa=vbuz1_band_vbuc1 + lda #7 + and.z ypos // (ypos&7)*BOB_SHIFTS_X - // [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 -- vbuz1=vbuaa_rol_2 + // [72] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 -- vbuz1=vbuaa_rol_2 asl asl sta.z __5 // xpos&3 - // [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 -- vbuaa=vbuz1_band_vbuc1 + // [73] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 -- vbuaa=vbuz1_band_vbuc1 lda #3 and.z xpos // bob_table_idx = (ypos&7)*BOB_SHIFTS_X+(xpos&3) - // [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 -- vbuxx=vbuz1_plus_vbuaa + // [74] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 -- vbuz1=vbuz1_plus_vbuaa clc - adc.z __5 - tax + adc.z bob_table_idx + sta.z bob_table_idx // *renderBobCleanupNext++ = screen - // [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 -- _deref_pptz1=pbuz2 + // [75] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 -- _deref_pptz1=pbuz2 ldy #0 lda.z screen sta (renderBobCleanupNext),y @@ -10388,7 +9491,7 @@ renderBob: { lda.z screen+1 sta (renderBobCleanupNext),y // *renderBobCleanupNext++ = screen; - // [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER -- pptz1=pptz1_plus_vbuc1 + // [76] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER -- pptz1=pptz1_plus_vbuc1 lda #SIZEOF_POINTER clc adc.z renderBobCleanupNext @@ -10397,261 +9500,131 @@ renderBob: { inc.z renderBobCleanupNext+1 !: // screen[0] = (BOB_TABLES+0*BOB_SUBTABLE_SIZE)[bob_table_idx] - // [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) -- _deref_pbuz1=pbuc1_derefidx_vbuxx - lda BOB_TABLES,x + // [77] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES,y ldy #0 sta (screen),y // screen[40] = (BOB_TABLES+1*BOB_SUBTABLE_SIZE)[bob_table_idx] - // [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+1*BOB_SUBTABLE_SIZE,x + // [78] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+1*BOB_SUBTABLE_SIZE,y ldy #$28 sta (screen),y // screen[80] = (BOB_TABLES+2*BOB_SUBTABLE_SIZE)[bob_table_idx] - // [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+2*BOB_SUBTABLE_SIZE,x + // [79] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+2*BOB_SUBTABLE_SIZE,y ldy #$50 sta (screen),y // screen[1] = (BOB_TABLES+3*BOB_SUBTABLE_SIZE)[bob_table_idx] - // [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+3*BOB_SUBTABLE_SIZE,x + // [80] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+3*BOB_SUBTABLE_SIZE,y ldy #1 sta (screen),y // screen[41] = (BOB_TABLES+4*BOB_SUBTABLE_SIZE)[bob_table_idx] - // [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+4*BOB_SUBTABLE_SIZE,x + // [81] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+4*BOB_SUBTABLE_SIZE,y ldy #$29 sta (screen),y // screen[81] = (BOB_TABLES+5*BOB_SUBTABLE_SIZE)[bob_table_idx] - // [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+5*BOB_SUBTABLE_SIZE,x + // [82] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+5*BOB_SUBTABLE_SIZE,y ldy #$51 sta (screen),y // screen[2] = (BOB_TABLES+6*BOB_SUBTABLE_SIZE)[bob_table_idx] - // [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+6*BOB_SUBTABLE_SIZE,x + // [83] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+6*BOB_SUBTABLE_SIZE,y ldy #2 sta (screen),y // screen[42] = (BOB_TABLES+7*BOB_SUBTABLE_SIZE)[bob_table_idx] - // [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+7*BOB_SUBTABLE_SIZE,x + // [84] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+7*BOB_SUBTABLE_SIZE,y ldy #$2a sta (screen),y // screen[82] = (BOB_TABLES+8*BOB_SUBTABLE_SIZE)[bob_table_idx] - // [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx - lda BOB_TABLES+8*BOB_SUBTABLE_SIZE,x + // [85] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2 + ldy.z bob_table_idx + lda BOB_TABLES+8*BOB_SUBTABLE_SIZE,y ldy #$52 sta (screen),y // renderBob::@return // } - // [91] return - rts -} - // mulf8s -// Fast multiply two signed bytes to a word result -// mulf8s(signed byte register(A) a, signed byte register(X) b) -mulf8s: { - .label return = $b - // mulf8s::mulf8s_prepare1 - // mulf8u_prepare((byte)a) - // [93] (byte) mulf8u_prepare::a#0 ← (byte)(signed byte) mulf8s::mulf8s_prepare1_a#0 - // [94] call mulf8u_prepare - jsr mulf8u_prepare - // mulf8s::@1 - // mulf8s_prepared(b) - // [95] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#2 -- vbsz1=vbsxx - stx.z mulf8s_prepared.b - // [96] call mulf8s_prepared - jsr mulf8s_prepared - // mulf8s::@2 - // [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 - // mulf8s::@return - // } - // [98] return - rts -} - // mulf8s_prepared -// Calculate fast multiply with a prepared unsigned byte to a word result -// The prepared number is set by calling mulf8s_prepare(byte a) -// mulf8s_prepared(signed byte zeropage($e) b) -mulf8s_prepared: { - .label memA = $fd - .label m = $b - .label b = $e - // mulf8u_prepared((byte) b) - // [99] (byte) mulf8u_prepared::b#0 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuz1 - lda.z b - // [100] call mulf8u_prepared - jsr mulf8u_prepared - // [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 - // mulf8s_prepared::@5 - // m = mulf8u_prepared((byte) b) - // [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 - // if(*memA<0) - // [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 - lda memA - cmp #0 - bpl __b1 - // mulf8s_prepared::@3 - // >m - // [104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 - lda.z m+1 - // >m = (>m)-(byte)b - // [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 - sec - sbc.z b - // [106] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa - sta.z m+1 - // [107] phi from mulf8s_prepared::@3 mulf8s_prepared::@5 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1] - // [107] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1#0] -- register_copy - // mulf8s_prepared::@1 - __b1: - // if(b<0) - // [108] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 - lda.z b - cmp #0 - bpl __b2 - // mulf8s_prepared::@4 - // >m - // [109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 - lda.z m+1 - // >m = (>m)-(byte)*memA - // [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) -- vbuaa=vbuaa_minus__deref_pbuc1 - sec - sbc memA - // [111] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa - sta.z m+1 - // [112] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] - // [112] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy - // mulf8s_prepared::@2 - __b2: - // mulf8s_prepared::@return - // } - // [113] return - rts -} - // mulf8u_prepared -// Calculate fast multiply with a prepared unsigned byte to a word result -// The prepared number is set by calling mulf8u_prepare(byte a) -// mulf8u_prepared(byte register(A) b) -mulf8u_prepared: { - .label resL = $fe - .label memB = $ff - .label return = $b - // *memB = b - // [114] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#0 -- _deref_pbuc1=vbuaa - sta memB - // asm - // asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - tax - sec - sm1: - lda mulf_sqr1_lo,x - sm2: - sbc mulf_sqr2_lo,x - sta resL - sm3: - lda mulf_sqr1_hi,x - sm4: - sbc mulf_sqr2_hi,x - sta memB - // return { *memB, *resL }; - // [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 - lda resL - sta.z return - lda memB - sta.z return+1 - // mulf8u_prepared::@return - // } - // [117] return - rts -} - // mulf8u_prepare -// Prepare for fast multiply with an unsigned byte to a word result -// mulf8u_prepare(byte register(A) a) -mulf8u_prepare: { - .label memA = $fd - // *memA = a - // [118] *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#0 -- _deref_pbuc1=vbuaa - sta memA - // asm - // asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } - sta mulf8u_prepared.sm1+1 - sta mulf8u_prepared.sm3+1 - eor #$ff - sta mulf8u_prepared.sm2+1 - sta mulf8u_prepared.sm4+1 - // mulf8u_prepare::@return - // } - // [120] return + // [86] return rts } // renderBobCleanup // Clean Up the rendered BOB's renderBobCleanup: { - .label screen = $f - // [122] phi from renderBobCleanup to renderBobCleanup::@1 [phi:renderBobCleanup->renderBobCleanup::@1] - // [122] phi (byte) renderBobCleanup::i#2 = (byte) 0 [phi:renderBobCleanup->renderBobCleanup::@1#0] -- vbuxx=vbuc1 + .label screen = $13 + // [88] phi from renderBobCleanup to renderBobCleanup::@1 [phi:renderBobCleanup->renderBobCleanup::@1] + // [88] phi (byte) renderBobCleanup::i#2 = (byte) 0 [phi:renderBobCleanup->renderBobCleanup::@1#0] -- vbuxx=vbuc1 ldx #0 - // [122] phi from renderBobCleanup::@1 to renderBobCleanup::@1 [phi:renderBobCleanup::@1->renderBobCleanup::@1] - // [122] phi (byte) renderBobCleanup::i#2 = (byte) renderBobCleanup::i#1 [phi:renderBobCleanup::@1->renderBobCleanup::@1#0] -- register_copy + // [88] phi from renderBobCleanup::@1 to renderBobCleanup::@1 [phi:renderBobCleanup::@1->renderBobCleanup::@1] + // [88] phi (byte) renderBobCleanup::i#2 = (byte) renderBobCleanup::i#1 [phi:renderBobCleanup::@1->renderBobCleanup::@1#0] -- register_copy // renderBobCleanup::@1 __b1: // screen = RENDERBOB_CLEANUP[i] - // [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [89] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) -- pbuz1=pptc1_derefidx_vbuaa + // [90] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) -- pbuz1=pptc1_derefidx_vbuaa tay lda RENDERBOB_CLEANUP,y sta.z screen lda RENDERBOB_CLEANUP+1,y sta.z screen+1 // screen[0] = 0 - // [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 -- _deref_pbuz1=vbuc1 + // [91] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (screen),y // screen[40] = 0 - // [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [92] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #$28 sta (screen),y // screen[80] = 0 - // [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [93] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #$50 sta (screen),y // screen[1] = 0 - // [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [94] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #1 sta (screen),y // screen[41] = 0 - // [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [95] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #$29 sta (screen),y // screen[81] = 0 - // [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [96] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #$51 sta (screen),y // screen[2] = 0 - // [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [97] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #2 sta (screen),y // screen[42] = 0 - // [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [98] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #$2a sta (screen),y // screen[82] = 0 - // [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 + // [99] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #$52 sta (screen),y // for(char i: 0..NUM_BOBS-1) - // [134] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2 -- vbuxx=_inc_vbuxx + // [100] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2 -- vbuxx=_inc_vbuxx inx - // [135] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1 -- vbuxx_neq_vbuc1_then_la1 + // [101] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #NUM_BOBS-1+1 bne __b1 // renderBobCleanup::@return // } - // [136] return + // [102] return rts } // memset @@ -10661,9 +9634,9 @@ memset: { .const c = 0 .const num = $3e8 .label end = str+num - .label dst = 6 - // [138] phi from memset to memset::@1 [phi:memset->memset::@1] - // [138] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 + .label dst = $15 + // [104] phi from memset to memset::@1 [phi:memset->memset::@1] + // [104] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 lda #str @@ -10671,7 +9644,7 @@ memset: { // memset::@1 __b1: // for(char* dst = str; dst!=end; dst++) - // [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 + // [105] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z dst+1 cmp #>end bne __b2 @@ -10680,47 +9653,47 @@ memset: { bne __b2 // memset::@return // } - // [140] return + // [106] return rts // memset::@2 __b2: // *dst = c - // [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 + // [107] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 lda #c ldy #0 sta (dst),y // for(char* dst = str; dst!=end; dst++) - // [142] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [108] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 !: - // [138] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1] - // [138] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy + // [104] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1] + // [104] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy jmp __b1 } // renderBobInit // Initialize the tables used by renderBob() renderBobInit: { - .label __0 = $f - .label __1 = $f - .label __6 = $11 - .label __7 = $f - // [144] phi from renderBobInit to renderBobInit::@1 [phi:renderBobInit->renderBobInit::@1] - // [144] phi (byte) renderBobInit::y#2 = (byte) 0 [phi:renderBobInit->renderBobInit::@1#0] -- vbuxx=vbuc1 + .label __0 = $15 + .label __1 = $15 + .label __6 = $17 + .label __7 = $15 + // [110] phi from renderBobInit to renderBobInit::@1 [phi:renderBobInit->renderBobInit::@1] + // [110] phi (byte) renderBobInit::y#2 = (byte) 0 [phi:renderBobInit->renderBobInit::@1#0] -- vbuxx=vbuc1 ldx #0 - // [144] phi from renderBobInit::@1 to renderBobInit::@1 [phi:renderBobInit::@1->renderBobInit::@1] - // [144] phi (byte) renderBobInit::y#2 = (byte) renderBobInit::y#1 [phi:renderBobInit::@1->renderBobInit::@1#0] -- register_copy + // [110] phi from renderBobInit::@1 to renderBobInit::@1 [phi:renderBobInit::@1->renderBobInit::@1] + // [110] phi (byte) renderBobInit::y#2 = (byte) renderBobInit::y#1 [phi:renderBobInit::@1->renderBobInit::@1#0] -- register_copy // renderBobInit::@1 __b1: // (unsigned int)y - // [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 -- vwuz1=_word_vbuxx + // [111] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 -- vwuz1=_word_vbuxx txa sta.z __0 lda #0 sta.z __0+1 // ((unsigned int)y)*40 - // [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 + // [112] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda.z __0 asl sta.z __6 @@ -10729,7 +9702,7 @@ renderBobInit: { sta.z __6+1 asl.z __6 rol.z __6+1 - // [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 -- vwuz1=vwuz2_plus_vwuz1 + // [113] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 -- vwuz1=vwuz2_plus_vwuz1 lda.z __7 clc adc.z __6 @@ -10737,7 +9710,7 @@ renderBobInit: { lda.z __7+1 adc.z __6+1 sta.z __7+1 - // [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3 + // [114] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl.z __1 rol.z __1+1 asl.z __1 @@ -10745,141 +9718,141 @@ renderBobInit: { asl.z __1 rol.z __1+1 // MUL40[y] = ((unsigned int)y)*40 - // [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [115] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 -- pwuc1_derefidx_vbuaa=vwuz1 + // [116] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda.z __1 sta MUL40,y lda.z __1+1 sta MUL40+1,y // for(char y: 0..0x1f) - // [151] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2 -- vbuxx=_inc_vbuxx + // [117] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2 -- vbuxx=_inc_vbuxx inx - // [152] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1 -- vbuxx_neq_vbuc1_then_la1 + // [118] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$20 bne __b1 - // [153] phi from renderBobInit::@1 to renderBobInit::@2 [phi:renderBobInit::@1->renderBobInit::@2] - // [153] phi (byte) renderBobInit::i#2 = (byte) 0 [phi:renderBobInit::@1->renderBobInit::@2#0] -- vbuxx=vbuc1 + // [119] phi from renderBobInit::@1 to renderBobInit::@2 [phi:renderBobInit::@1->renderBobInit::@2] + // [119] phi (byte) renderBobInit::i#2 = (byte) 0 [phi:renderBobInit::@1->renderBobInit::@2#0] -- vbuxx=vbuc1 ldx #0 - // [153] phi from renderBobInit::@2 to renderBobInit::@2 [phi:renderBobInit::@2->renderBobInit::@2] - // [153] phi (byte) renderBobInit::i#2 = (byte) renderBobInit::i#1 [phi:renderBobInit::@2->renderBobInit::@2#0] -- register_copy + // [119] phi from renderBobInit::@2 to renderBobInit::@2 [phi:renderBobInit::@2->renderBobInit::@2] + // [119] phi (byte) renderBobInit::i#2 = (byte) renderBobInit::i#1 [phi:renderBobInit::@2->renderBobInit::@2#0] -- register_copy // renderBobInit::@2 __b2: // RENDERBOB_CLEANUP[i] = BOB_SCREEN - // [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [120] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN -- pptc1_derefidx_vbuaa=pbuc2 + // [121] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN -- pptc1_derefidx_vbuaa=pbuc2 tay lda #BOB_SCREEN sta RENDERBOB_CLEANUP+1,y // for(char i: 0..NUM_BOBS-1) - // [156] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2 -- vbuxx=_inc_vbuxx + // [122] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2 -- vbuxx=_inc_vbuxx inx - // [157] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2 -- vbuxx_neq_vbuc1_then_la1 + // [123] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #NUM_BOBS-1+1 bne __b2 // renderBobInit::@return // } - // [158] return + // [124] return rts } // prepareBobs // Creates the pre-shifted bobs into BOB_CHARSET and populates the BOB_TABLES // Modifies PROTO_BOB by shifting it around prepareBobs: { - .label bob_table = $f + .label bob_table = 3 .label shift_y = 2 // Populate charset and tables - .label bob_glyph = 6 - .label cell = $a - .label bob_table_idx = 4 - .label shift_x = 5 - // progress_init(SCREEN_BASIC) - // [160] call progress_init - // [241] phi from prepareBobs to progress_init [phi:prepareBobs->progress_init] + .label bob_glyph = $13 + .label cell = $12 + .label bob_table_idx = $c + .label shift_x = $d + // progress_init(BASIC_SCREEN) + // [126] call progress_init + // [207] phi from prepareBobs to progress_init [phi:prepareBobs->progress_init] jsr progress_init - // [161] phi from prepareBobs to prepareBobs::@8 [phi:prepareBobs->prepareBobs::@8] + // [127] phi from prepareBobs to prepareBobs::@8 [phi:prepareBobs->prepareBobs::@8] // prepareBobs::@8 // charsetFindOrAddGlyph(PROTO_BOB+48, BOB_CHARSET) - // [162] call charsetFindOrAddGlyph - // [195] phi from prepareBobs::@8 to charsetFindOrAddGlyph [phi:prepareBobs::@8->charsetFindOrAddGlyph] - // [195] phi (byte*) charsetFindOrAddGlyph::glyph#10 = (const byte*) PROTO_BOB+(byte) $30 [phi:prepareBobs::@8->charsetFindOrAddGlyph#0] -- pbuz1=pbuc1 + // [128] call charsetFindOrAddGlyph + // [161] phi from prepareBobs::@8 to charsetFindOrAddGlyph [phi:prepareBobs::@8->charsetFindOrAddGlyph] + // [161] phi (byte*) charsetFindOrAddGlyph::glyph#10 = (const byte*) PROTO_BOB+(byte) $30 [phi:prepareBobs::@8->charsetFindOrAddGlyph#0] -- pbuz1=pbuc1 lda #PROTO_BOB+$30 sta.z charsetFindOrAddGlyph.glyph+1 - // [195] phi (byte) bob_charset_next_id#23 = (byte) 0 [phi:prepareBobs::@8->charsetFindOrAddGlyph#1] -- vbuz1=vbuc1 + // [161] phi (byte) bob_charset_next_id#23 = (byte) 0 [phi:prepareBobs::@8->charsetFindOrAddGlyph#1] -- vbuz1=vbuc1 lda #0 sta.z bob_charset_next_id jsr charsetFindOrAddGlyph - // [163] phi from prepareBobs::@8 to prepareBobs::@1 [phi:prepareBobs::@8->prepareBobs::@1] - // [163] phi (byte) prepareBobs::bob_table_idx#6 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#0] -- vbuz1=vbuc1 + // [129] phi from prepareBobs::@8 to prepareBobs::@1 [phi:prepareBobs::@8->prepareBobs::@1] + // [129] phi (byte) prepareBobs::bob_table_idx#6 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#0] -- vbuz1=vbuc1 lda #0 sta.z bob_table_idx - // [163] phi (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#16 [phi:prepareBobs::@8->prepareBobs::@1#1] -- register_copy - // [163] phi (byte) progress_idx#16 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#2] -- vbuz1=vbuc1 + // [129] phi (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#16 [phi:prepareBobs::@8->prepareBobs::@1#1] -- register_copy + // [129] phi (byte) progress_idx#16 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#2] -- vbuz1=vbuc1 sta.z progress_idx - // [163] phi (byte*) progress_cursor#15 = (const byte*) SCREEN_BASIC [phi:prepareBobs::@8->prepareBobs::@1#3] -- pbuz1=pbuc1 - lda #prepareBobs::@1#3] -- pbuz1=pbuc1 + lda #SCREEN_BASIC + lda #>BASIC_SCREEN sta.z progress_cursor+1 - // [163] phi (byte) prepareBobs::shift_y#2 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#4] -- vbuz1=vbuc1 + // [129] phi (byte) prepareBobs::shift_y#2 = (byte) 0 [phi:prepareBobs::@8->prepareBobs::@1#4] -- vbuz1=vbuc1 lda #0 sta.z shift_y // prepareBobs::@1 __b1: // for(char shift_y=0;shift_yprepareBobs::@2] + // [132] phi from prepareBobs::@1 to prepareBobs::@2 [phi:prepareBobs::@1->prepareBobs::@2] b1: - // [166] phi (byte) progress_idx#31 = (byte) progress_idx#16 [phi:prepareBobs::@1->prepareBobs::@2#0] -- register_copy - // [166] phi (byte*) progress_cursor#31 = (byte*) progress_cursor#15 [phi:prepareBobs::@1->prepareBobs::@2#1] -- register_copy - // [166] phi (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#14 [phi:prepareBobs::@1->prepareBobs::@2#2] -- register_copy - // [166] phi (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#6 [phi:prepareBobs::@1->prepareBobs::@2#3] -- register_copy - // [166] phi (byte) prepareBobs::shift_x#2 = (byte) 0 [phi:prepareBobs::@1->prepareBobs::@2#4] -- vbuz1=vbuc1 + // [132] phi (byte) progress_idx#31 = (byte) progress_idx#16 [phi:prepareBobs::@1->prepareBobs::@2#0] -- register_copy + // [132] phi (byte*) progress_cursor#31 = (byte*) progress_cursor#15 [phi:prepareBobs::@1->prepareBobs::@2#1] -- register_copy + // [132] phi (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#14 [phi:prepareBobs::@1->prepareBobs::@2#2] -- register_copy + // [132] phi (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#6 [phi:prepareBobs::@1->prepareBobs::@2#3] -- register_copy + // [132] phi (byte) prepareBobs::shift_x#2 = (byte) 0 [phi:prepareBobs::@1->prepareBobs::@2#4] -- vbuz1=vbuc1 lda #0 sta.z shift_x // prepareBobs::@2 __b2: // for(char shift_x=0;shift_xprepareBobs::@4] + // [134] phi from prepareBobs::@2 to prepareBobs::@4 [phi:prepareBobs::@2->prepareBobs::@4] // prepareBobs::@4 // protoBobShiftDown() - // [169] call protoBobShiftDown - // [230] phi from prepareBobs::@4 to protoBobShiftDown [phi:prepareBobs::@4->protoBobShiftDown] + // [135] call protoBobShiftDown + // [196] phi from prepareBobs::@4 to protoBobShiftDown [phi:prepareBobs::@4->protoBobShiftDown] jsr protoBobShiftDown // prepareBobs::@9 // for(char shift_y=0;shift_yprepareBobs::@1] - // [163] phi (byte) prepareBobs::bob_table_idx#6 = (byte) prepareBobs::bob_table_idx#12 [phi:prepareBobs::@9->prepareBobs::@1#0] -- register_copy - // [163] phi (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#30 [phi:prepareBobs::@9->prepareBobs::@1#1] -- register_copy - // [163] phi (byte) progress_idx#16 = (byte) progress_idx#31 [phi:prepareBobs::@9->prepareBobs::@1#2] -- register_copy - // [163] phi (byte*) progress_cursor#15 = (byte*) progress_cursor#31 [phi:prepareBobs::@9->prepareBobs::@1#3] -- register_copy - // [163] phi (byte) prepareBobs::shift_y#2 = (byte) prepareBobs::shift_y#1 [phi:prepareBobs::@9->prepareBobs::@1#4] -- register_copy + // [129] phi from prepareBobs::@9 to prepareBobs::@1 [phi:prepareBobs::@9->prepareBobs::@1] + // [129] phi (byte) prepareBobs::bob_table_idx#6 = (byte) prepareBobs::bob_table_idx#12 [phi:prepareBobs::@9->prepareBobs::@1#0] -- register_copy + // [129] phi (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#30 [phi:prepareBobs::@9->prepareBobs::@1#1] -- register_copy + // [129] phi (byte) progress_idx#16 = (byte) progress_idx#31 [phi:prepareBobs::@9->prepareBobs::@1#2] -- register_copy + // [129] phi (byte*) progress_cursor#15 = (byte*) progress_cursor#31 [phi:prepareBobs::@9->prepareBobs::@1#3] -- register_copy + // [129] phi (byte) prepareBobs::shift_y#2 = (byte) prepareBobs::shift_y#1 [phi:prepareBobs::@9->prepareBobs::@1#4] -- register_copy jmp __b1 // prepareBobs::@3 __b3: // bob_table = BOB_TABLES + bob_table_idx - // [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 -- pbuz1=pbuc1_plus_vbuz2 + // [137] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 -- pbuz1=pbuc1_plus_vbuz2 lda.z bob_table_idx clc adc #BOB_TABLES adc #0 sta.z bob_table+1 - // [172] phi from prepareBobs::@3 to prepareBobs::@5 [phi:prepareBobs::@3->prepareBobs::@5] - // [172] phi (byte*) progress_cursor#24 = (byte*) progress_cursor#31 [phi:prepareBobs::@3->prepareBobs::@5#0] -- register_copy - // [172] phi (byte) progress_idx#25 = (byte) progress_idx#31 [phi:prepareBobs::@3->prepareBobs::@5#1] -- register_copy - // [172] phi (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#0 [phi:prepareBobs::@3->prepareBobs::@5#2] -- register_copy - // [172] phi (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#30 [phi:prepareBobs::@3->prepareBobs::@5#3] -- register_copy - // [172] phi (byte*) prepareBobs::bob_glyph#2 = (const byte*) PROTO_BOB [phi:prepareBobs::@3->prepareBobs::@5#4] -- pbuz1=pbuc1 + // [138] phi from prepareBobs::@3 to prepareBobs::@5 [phi:prepareBobs::@3->prepareBobs::@5] + // [138] phi (byte*) progress_cursor#24 = (byte*) progress_cursor#31 [phi:prepareBobs::@3->prepareBobs::@5#0] -- register_copy + // [138] phi (byte) progress_idx#25 = (byte) progress_idx#31 [phi:prepareBobs::@3->prepareBobs::@5#1] -- register_copy + // [138] phi (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#0 [phi:prepareBobs::@3->prepareBobs::@5#2] -- register_copy + // [138] phi (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#30 [phi:prepareBobs::@3->prepareBobs::@5#3] -- register_copy + // [138] phi (byte*) prepareBobs::bob_glyph#2 = (const byte*) PROTO_BOB [phi:prepareBobs::@3->prepareBobs::@5#4] -- pbuz1=pbuc1 lda #PROTO_BOB sta.z bob_glyph+1 - // [172] phi (byte) prepareBobs::cell#2 = (byte) 0 [phi:prepareBobs::@3->prepareBobs::@5#5] -- vbuz1=vbuc1 + // [138] phi (byte) prepareBobs::cell#2 = (byte) 0 [phi:prepareBobs::@3->prepareBobs::@5#5] -- vbuz1=vbuc1 lda #0 sta.z cell // prepareBobs::@5 __b5: // for(char cell = 0; cell<9; cell++) - // [173] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6 -- vbuz1_lt_vbuc1_then_la1 + // [139] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6 -- vbuz1_lt_vbuc1_then_la1 lda.z cell cmp #9 bcc __b6 // prepareBobs::@7 // bob_table_idx++; - // [174] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12 -- vbuz1=_inc_vbuz1 + // [140] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12 -- vbuz1=_inc_vbuz1 inc.z bob_table_idx // protoBobShiftRight() - // [175] call protoBobShiftRight - // [213] phi from prepareBobs::@7 to protoBobShiftRight [phi:prepareBobs::@7->protoBobShiftRight] + // [141] call protoBobShiftRight + // [179] phi from prepareBobs::@7 to protoBobShiftRight [phi:prepareBobs::@7->protoBobShiftRight] jsr protoBobShiftRight - // [176] phi from prepareBobs::@7 to prepareBobs::@12 [phi:prepareBobs::@7->prepareBobs::@12] + // [142] phi from prepareBobs::@7 to prepareBobs::@12 [phi:prepareBobs::@7->prepareBobs::@12] // prepareBobs::@12 // protoBobShiftRight() - // [177] call protoBobShiftRight - // [213] phi from prepareBobs::@12 to protoBobShiftRight [phi:prepareBobs::@12->protoBobShiftRight] + // [143] call protoBobShiftRight + // [179] phi from prepareBobs::@12 to protoBobShiftRight [phi:prepareBobs::@12->protoBobShiftRight] jsr protoBobShiftRight // prepareBobs::@13 // for(char shift_x=0;shift_xprepareBobs::@2] - // [166] phi (byte) progress_idx#31 = (byte) progress_idx#25 [phi:prepareBobs::@13->prepareBobs::@2#0] -- register_copy - // [166] phi (byte*) progress_cursor#31 = (byte*) progress_cursor#24 [phi:prepareBobs::@13->prepareBobs::@2#1] -- register_copy - // [166] phi (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#21 [phi:prepareBobs::@13->prepareBobs::@2#2] -- register_copy - // [166] phi (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#1 [phi:prepareBobs::@13->prepareBobs::@2#3] -- register_copy - // [166] phi (byte) prepareBobs::shift_x#2 = (byte) prepareBobs::shift_x#1 [phi:prepareBobs::@13->prepareBobs::@2#4] -- register_copy + // [132] phi from prepareBobs::@13 to prepareBobs::@2 [phi:prepareBobs::@13->prepareBobs::@2] + // [132] phi (byte) progress_idx#31 = (byte) progress_idx#25 [phi:prepareBobs::@13->prepareBobs::@2#0] -- register_copy + // [132] phi (byte*) progress_cursor#31 = (byte*) progress_cursor#24 [phi:prepareBobs::@13->prepareBobs::@2#1] -- register_copy + // [132] phi (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#21 [phi:prepareBobs::@13->prepareBobs::@2#2] -- register_copy + // [132] phi (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#1 [phi:prepareBobs::@13->prepareBobs::@2#3] -- register_copy + // [132] phi (byte) prepareBobs::shift_x#2 = (byte) prepareBobs::shift_x#1 [phi:prepareBobs::@13->prepareBobs::@2#4] -- register_copy jmp __b2 // prepareBobs::@6 __b6: // charsetFindOrAddGlyph(bob_glyph, BOB_CHARSET) - // [179] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 - // [180] call charsetFindOrAddGlyph - // [195] phi from prepareBobs::@6 to charsetFindOrAddGlyph [phi:prepareBobs::@6->charsetFindOrAddGlyph] - // [195] phi (byte*) charsetFindOrAddGlyph::glyph#10 = (byte*) charsetFindOrAddGlyph::glyph#1 [phi:prepareBobs::@6->charsetFindOrAddGlyph#0] -- register_copy - // [195] phi (byte) bob_charset_next_id#23 = (byte) bob_charset_next_id#21 [phi:prepareBobs::@6->charsetFindOrAddGlyph#1] -- register_copy + // [145] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + // [146] call charsetFindOrAddGlyph + // [161] phi from prepareBobs::@6 to charsetFindOrAddGlyph [phi:prepareBobs::@6->charsetFindOrAddGlyph] + // [161] phi (byte*) charsetFindOrAddGlyph::glyph#10 = (byte*) charsetFindOrAddGlyph::glyph#1 [phi:prepareBobs::@6->charsetFindOrAddGlyph#0] -- register_copy + // [161] phi (byte) bob_charset_next_id#23 = (byte) bob_charset_next_id#21 [phi:prepareBobs::@6->charsetFindOrAddGlyph#1] -- register_copy jsr charsetFindOrAddGlyph // charsetFindOrAddGlyph(bob_glyph, BOB_CHARSET) - // [181] (byte) charsetFindOrAddGlyph::return#1 ← (byte) charsetFindOrAddGlyph::glyph_id#11 -- vbuaa=vbuxx + // [147] (byte) charsetFindOrAddGlyph::return#1 ← (byte) charsetFindOrAddGlyph::glyph_id#11 -- vbuaa=vbuxx txa // prepareBobs::@10 - // [182] (byte~) prepareBobs::$6 ← (byte) charsetFindOrAddGlyph::return#1 + // [148] (byte~) prepareBobs::$6 ← (byte) charsetFindOrAddGlyph::return#1 // *bob_table = charsetFindOrAddGlyph(bob_glyph, BOB_CHARSET) - // [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 -- _deref_pbuz1=vbuaa + // [149] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 -- _deref_pbuz1=vbuaa // Look for an existing char in BOB_CHARSET ldy #0 sta (bob_table),y // bob_glyph+=8 - // [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 -- pbuz1=pbuz1_plus_vbuc1 + // [150] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 -- pbuz1=pbuz1_plus_vbuc1 // Move to the next glyph lda #8 clc @@ -10962,7 +9935,7 @@ prepareBobs: { inc.z bob_glyph+1 !: // bob_table += BOB_SHIFTS_X*BOB_SHIFTS_Y - // [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y -- pbuz1=pbuz1_plus_vbuc1 + // [151] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y -- pbuz1=pbuz1_plus_vbuc1 // Move to the next sub-table lda #BOB_SHIFTS_X*BOB_SHIFTS_Y clc @@ -10972,19 +9945,19 @@ prepareBobs: { inc.z bob_table+1 !: // progress_inc() - // [186] call progress_inc + // [152] call progress_inc jsr progress_inc // prepareBobs::@11 // for(char cell = 0; cell<9; cell++) - // [187] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2 -- vbuz1=_inc_vbuz1 + // [153] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2 -- vbuz1=_inc_vbuz1 inc.z cell - // [172] phi from prepareBobs::@11 to prepareBobs::@5 [phi:prepareBobs::@11->prepareBobs::@5] - // [172] phi (byte*) progress_cursor#24 = (byte*) progress_cursor#17 [phi:prepareBobs::@11->prepareBobs::@5#0] -- register_copy - // [172] phi (byte) progress_idx#25 = (byte) progress_idx#10 [phi:prepareBobs::@11->prepareBobs::@5#1] -- register_copy - // [172] phi (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#1 [phi:prepareBobs::@11->prepareBobs::@5#2] -- register_copy - // [172] phi (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#16 [phi:prepareBobs::@11->prepareBobs::@5#3] -- register_copy - // [172] phi (byte*) prepareBobs::bob_glyph#2 = (byte*) prepareBobs::bob_glyph#1 [phi:prepareBobs::@11->prepareBobs::@5#4] -- register_copy - // [172] phi (byte) prepareBobs::cell#2 = (byte) prepareBobs::cell#1 [phi:prepareBobs::@11->prepareBobs::@5#5] -- register_copy + // [138] phi from prepareBobs::@11 to prepareBobs::@5 [phi:prepareBobs::@11->prepareBobs::@5] + // [138] phi (byte*) progress_cursor#24 = (byte*) progress_cursor#17 [phi:prepareBobs::@11->prepareBobs::@5#0] -- register_copy + // [138] phi (byte) progress_idx#25 = (byte) progress_idx#10 [phi:prepareBobs::@11->prepareBobs::@5#1] -- register_copy + // [138] phi (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#1 [phi:prepareBobs::@11->prepareBobs::@5#2] -- register_copy + // [138] phi (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#16 [phi:prepareBobs::@11->prepareBobs::@5#3] -- register_copy + // [138] phi (byte*) prepareBobs::bob_glyph#2 = (byte*) prepareBobs::bob_glyph#1 [phi:prepareBobs::@11->prepareBobs::@5#4] -- register_copy + // [138] phi (byte) prepareBobs::cell#2 = (byte) prepareBobs::cell#1 [phi:prepareBobs::@11->prepareBobs::@5#5] -- register_copy jmp __b5 } // progress_inc @@ -10992,43 +9965,43 @@ prepareBobs: { // Done by increasing the character until the idx is 8 and then moving to the next char progress_inc: { // if(++progress_idx==8) - // [188] (byte) progress_idx#8 ← ++ (byte) progress_idx#25 -- vbuz1=_inc_vbuz1 + // [154] (byte) progress_idx#8 ← ++ (byte) progress_idx#25 -- vbuz1=_inc_vbuz1 inc.z progress_idx - // [189] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 + // [155] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp.z progress_idx bne __b1 // progress_inc::@2 // *progress_cursor = progress_chars[8] - // [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) -- _deref_pbuz1=_deref_pbuc1 + // [156] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) -- _deref_pbuz1=_deref_pbuc1 lda progress_chars+8 ldy #0 sta (progress_cursor),y // progress_cursor++; - // [191] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24 -- pbuz1=_inc_pbuz1 + // [157] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24 -- pbuz1=_inc_pbuz1 inc.z progress_cursor bne !+ inc.z progress_cursor+1 !: - // [192] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] - // [192] phi (byte*) progress_cursor#17 = (byte*) progress_cursor#8 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy - // [192] phi (byte) progress_idx#10 = (byte) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 + // [158] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] + // [158] phi (byte*) progress_cursor#17 = (byte*) progress_cursor#8 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy + // [158] phi (byte) progress_idx#10 = (byte) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 lda #0 sta.z progress_idx - // [192] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] - // [192] phi (byte*) progress_cursor#17 = (byte*) progress_cursor#24 [phi:progress_inc->progress_inc::@1#0] -- register_copy - // [192] phi (byte) progress_idx#10 = (byte) progress_idx#8 [phi:progress_inc->progress_inc::@1#1] -- register_copy + // [158] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] + // [158] phi (byte*) progress_cursor#17 = (byte*) progress_cursor#24 [phi:progress_inc->progress_inc::@1#0] -- register_copy + // [158] phi (byte) progress_idx#10 = (byte) progress_idx#8 [phi:progress_inc->progress_inc::@1#1] -- register_copy // progress_inc::@1 __b1: // *progress_cursor = progress_chars[progress_idx] - // [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + // [159] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy.z progress_idx lda progress_chars,y ldy #0 sta (progress_cursor),y // progress_inc::@return // } - // [194] return + // [160] return rts // Progress characters progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0 @@ -11036,94 +10009,94 @@ progress_inc: { // charsetFindOrAddGlyph // Looks through a charset to find a glyph if present. If not present it is added. // Returns the glyph ID -// charsetFindOrAddGlyph(byte* zeropage(6) glyph) +// charsetFindOrAddGlyph(byte* zeropage($13) glyph) charsetFindOrAddGlyph: { - .label glyph = 6 - .label glyph_cursor = $11 - // [196] phi from charsetFindOrAddGlyph to charsetFindOrAddGlyph::@1 [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1] - // [196] phi (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (const byte*) BOB_CHARSET [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1#0] -- pbuz1=pbuc1 + .label glyph = $13 + .label glyph_cursor = 5 + // [162] phi from charsetFindOrAddGlyph to charsetFindOrAddGlyph::@1 [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1] + // [162] phi (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (const byte*) BOB_CHARSET [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1#0] -- pbuz1=pbuc1 lda #BOB_CHARSET sta.z glyph_cursor+1 - // [196] phi (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) 0 [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1#1] -- vbuxx=vbuc1 + // [162] phi (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) 0 [phi:charsetFindOrAddGlyph->charsetFindOrAddGlyph::@1#1] -- vbuxx=vbuc1 ldx #0 // charsetFindOrAddGlyph::@1 __b1: // while(glyph_id!=bob_charset_next_id) - // [197] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2 -- vbuxx_neq_vbuz1_then_la1 + // [163] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2 -- vbuxx_neq_vbuz1_then_la1 cpx.z bob_charset_next_id bne b1 - // [198] phi from charsetFindOrAddGlyph::@1 to charsetFindOrAddGlyph::@7 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@7] - // [198] phi (byte) charsetFindOrAddGlyph::i1#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@7#0] -- vbuyy=vbuc1 + // [164] phi from charsetFindOrAddGlyph::@1 to charsetFindOrAddGlyph::@7 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@7] + // [164] phi (byte) charsetFindOrAddGlyph::i1#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@7#0] -- vbuyy=vbuc1 ldy #0 // Not found - add it // charsetFindOrAddGlyph::@7 __b7: // for(char i=0;i<8;i++) - // [199] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@8 -- vbuyy_lt_vbuc1_then_la1 + // [165] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@8 -- vbuyy_lt_vbuc1_then_la1 cpy #8 bcc __b8 // charsetFindOrAddGlyph::@9 // bob_charset_next_id++; - // [200] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23 -- vbuz1=_inc_vbuz1 + // [166] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23 -- vbuz1=_inc_vbuz1 inc.z bob_charset_next_id - // [201] phi from charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@9 to charsetFindOrAddGlyph::@return [phi:charsetFindOrAddGlyph::@5/charsetFindOrAddGlyph::@9->charsetFindOrAddGlyph::@return] - // [201] phi (byte) bob_charset_next_id#16 = (byte) bob_charset_next_id#23 [phi:charsetFindOrAddGlyph::@5/charsetFindOrAddGlyph::@9->charsetFindOrAddGlyph::@return#0] -- register_copy + // [167] phi from charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@9 to charsetFindOrAddGlyph::@return [phi:charsetFindOrAddGlyph::@5/charsetFindOrAddGlyph::@9->charsetFindOrAddGlyph::@return] + // [167] phi (byte) bob_charset_next_id#16 = (byte) bob_charset_next_id#23 [phi:charsetFindOrAddGlyph::@5/charsetFindOrAddGlyph::@9->charsetFindOrAddGlyph::@return#0] -- register_copy // charsetFindOrAddGlyph::@return // } - // [202] return + // [168] return rts // charsetFindOrAddGlyph::@8 __b8: // glyph_cursor[i]=glyph[i] - // [203] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) -- pbuz1_derefidx_vbuyy=pbuz2_derefidx_vbuyy + // [169] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) -- pbuz1_derefidx_vbuyy=pbuz2_derefidx_vbuyy lda (glyph),y sta (glyph_cursor),y // for(char i=0;i<8;i++) - // [204] (byte) charsetFindOrAddGlyph::i1#1 ← ++ (byte) charsetFindOrAddGlyph::i1#2 -- vbuyy=_inc_vbuyy + // [170] (byte) charsetFindOrAddGlyph::i1#1 ← ++ (byte) charsetFindOrAddGlyph::i1#2 -- vbuyy=_inc_vbuyy iny - // [198] phi from charsetFindOrAddGlyph::@8 to charsetFindOrAddGlyph::@7 [phi:charsetFindOrAddGlyph::@8->charsetFindOrAddGlyph::@7] - // [198] phi (byte) charsetFindOrAddGlyph::i1#2 = (byte) charsetFindOrAddGlyph::i1#1 [phi:charsetFindOrAddGlyph::@8->charsetFindOrAddGlyph::@7#0] -- register_copy + // [164] phi from charsetFindOrAddGlyph::@8 to charsetFindOrAddGlyph::@7 [phi:charsetFindOrAddGlyph::@8->charsetFindOrAddGlyph::@7] + // [164] phi (byte) charsetFindOrAddGlyph::i1#2 = (byte) charsetFindOrAddGlyph::i1#1 [phi:charsetFindOrAddGlyph::@8->charsetFindOrAddGlyph::@7#0] -- register_copy jmp __b7 - // [205] phi from charsetFindOrAddGlyph::@1 to charsetFindOrAddGlyph::@2 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@2] + // [171] phi from charsetFindOrAddGlyph::@1 to charsetFindOrAddGlyph::@2 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@2] b1: - // [205] phi (byte) charsetFindOrAddGlyph::i#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@2#0] -- vbuyy=vbuc1 + // [171] phi (byte) charsetFindOrAddGlyph::i#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@1->charsetFindOrAddGlyph::@2#0] -- vbuyy=vbuc1 ldy #0 // charsetFindOrAddGlyph::@2 __b2: // for(char i=0;i<8;i++) - // [206] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@3 -- vbuyy_lt_vbuc1_then_la1 + // [172] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@3 -- vbuyy_lt_vbuc1_then_la1 cpy #8 bcc __b3 - // [208] phi from charsetFindOrAddGlyph::@2 to charsetFindOrAddGlyph::@5 [phi:charsetFindOrAddGlyph::@2->charsetFindOrAddGlyph::@5] - // [208] phi (byte) charsetFindOrAddGlyph::found#2 = (byte) 1 [phi:charsetFindOrAddGlyph::@2->charsetFindOrAddGlyph::@5#0] -- vbuaa=vbuc1 + // [174] phi from charsetFindOrAddGlyph::@2 to charsetFindOrAddGlyph::@5 [phi:charsetFindOrAddGlyph::@2->charsetFindOrAddGlyph::@5] + // [174] phi (byte) charsetFindOrAddGlyph::found#2 = (byte) 1 [phi:charsetFindOrAddGlyph::@2->charsetFindOrAddGlyph::@5#0] -- vbuaa=vbuc1 lda #1 jmp __b5 // charsetFindOrAddGlyph::@3 __b3: // if(glyph_cursor[i]!=glyph[i]) - // [207] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 -- pbuz1_derefidx_vbuyy_eq_pbuz2_derefidx_vbuyy_then_la1 + // [173] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 -- pbuz1_derefidx_vbuyy_eq_pbuz2_derefidx_vbuyy_then_la1 lda (glyph_cursor),y cmp (glyph),y beq __b4 - // [208] phi from charsetFindOrAddGlyph::@3 to charsetFindOrAddGlyph::@5 [phi:charsetFindOrAddGlyph::@3->charsetFindOrAddGlyph::@5] - // [208] phi (byte) charsetFindOrAddGlyph::found#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@3->charsetFindOrAddGlyph::@5#0] -- vbuaa=vbuc1 + // [174] phi from charsetFindOrAddGlyph::@3 to charsetFindOrAddGlyph::@5 [phi:charsetFindOrAddGlyph::@3->charsetFindOrAddGlyph::@5] + // [174] phi (byte) charsetFindOrAddGlyph::found#2 = (byte) 0 [phi:charsetFindOrAddGlyph::@3->charsetFindOrAddGlyph::@5#0] -- vbuaa=vbuc1 lda #0 // charsetFindOrAddGlyph::@5 __b5: // if(found) - // [209] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@6 -- vbuc1_eq_vbuaa_then_la1 + // [175] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@6 -- vbuc1_eq_vbuaa_then_la1 cmp #0 beq __b6 rts // charsetFindOrAddGlyph::@6 __b6: // glyph_id++; - // [210] (byte) charsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) charsetFindOrAddGlyph::glyph_id#11 -- vbuxx=_inc_vbuxx + // [176] (byte) charsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) charsetFindOrAddGlyph::glyph_id#11 -- vbuxx=_inc_vbuxx inx // glyph_cursor +=8 - // [211] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 -- pbuz1=pbuz1_plus_vbuc1 + // [177] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 -- pbuz1=pbuz1_plus_vbuc1 lda #8 clc adc.z glyph_cursor @@ -11131,107 +10104,107 @@ charsetFindOrAddGlyph: { bcc !+ inc.z glyph_cursor+1 !: - // [196] phi from charsetFindOrAddGlyph::@6 to charsetFindOrAddGlyph::@1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1] - // [196] phi (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (byte*) charsetFindOrAddGlyph::glyph_cursor#1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1#0] -- register_copy - // [196] phi (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) charsetFindOrAddGlyph::glyph_id#1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1#1] -- register_copy + // [162] phi from charsetFindOrAddGlyph::@6 to charsetFindOrAddGlyph::@1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1] + // [162] phi (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (byte*) charsetFindOrAddGlyph::glyph_cursor#1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1#0] -- register_copy + // [162] phi (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) charsetFindOrAddGlyph::glyph_id#1 [phi:charsetFindOrAddGlyph::@6->charsetFindOrAddGlyph::@1#1] -- register_copy jmp __b1 // charsetFindOrAddGlyph::@4 __b4: // for(char i=0;i<8;i++) - // [212] (byte) charsetFindOrAddGlyph::i#1 ← ++ (byte) charsetFindOrAddGlyph::i#2 -- vbuyy=_inc_vbuyy + // [178] (byte) charsetFindOrAddGlyph::i#1 ← ++ (byte) charsetFindOrAddGlyph::i#2 -- vbuyy=_inc_vbuyy iny - // [205] phi from charsetFindOrAddGlyph::@4 to charsetFindOrAddGlyph::@2 [phi:charsetFindOrAddGlyph::@4->charsetFindOrAddGlyph::@2] - // [205] phi (byte) charsetFindOrAddGlyph::i#2 = (byte) charsetFindOrAddGlyph::i#1 [phi:charsetFindOrAddGlyph::@4->charsetFindOrAddGlyph::@2#0] -- register_copy + // [171] phi from charsetFindOrAddGlyph::@4 to charsetFindOrAddGlyph::@2 [phi:charsetFindOrAddGlyph::@4->charsetFindOrAddGlyph::@2] + // [171] phi (byte) charsetFindOrAddGlyph::i#2 = (byte) charsetFindOrAddGlyph::i#1 [phi:charsetFindOrAddGlyph::@4->charsetFindOrAddGlyph::@2#0] -- register_copy jmp __b2 } // protoBobShiftRight // Shift PROTO_BOB right one X pixel protoBobShiftRight: { - .label carry = $e - .label i = $a - // [214] phi from protoBobShiftRight to protoBobShiftRight::@1 [phi:protoBobShiftRight->protoBobShiftRight::@1] - // [214] phi (byte) protoBobShiftRight::carry#2 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#0] -- vbuyy=vbuc1 + .label carry = $f + .label i = $12 + // [180] phi from protoBobShiftRight to protoBobShiftRight::@1 [phi:protoBobShiftRight->protoBobShiftRight::@1] + // [180] phi (byte) protoBobShiftRight::carry#2 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#0] -- vbuyy=vbuc1 ldy #0 - // [214] phi (byte) protoBobShiftRight::j#3 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#1] -- vbuxx=vbuc1 + // [180] phi (byte) protoBobShiftRight::j#3 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#1] -- vbuxx=vbuc1 ldx #0 - // [214] phi (byte) protoBobShiftRight::i#2 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#2] -- vbuz1=vbuc1 + // [180] phi (byte) protoBobShiftRight::i#2 = (byte) 0 [phi:protoBobShiftRight->protoBobShiftRight::@1#2] -- vbuz1=vbuc1 txa sta.z i // protoBobShiftRight::@1 __b1: // for(char i=0;i<3*3*8;i++) - // [215] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2 -- vbuz1_lt_vbuc1_then_la1 + // [181] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2 -- vbuz1_lt_vbuc1_then_la1 lda.z i cmp #3*3*8 bcc __b2 // protoBobShiftRight::@return // } - // [216] return + // [182] return rts // protoBobShiftRight::@2 __b2: // PROTO_BOB[j]&1 - // [217] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 -- vbuaa=pbuc1_derefidx_vbuxx_band_vbuc2 + // [183] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 -- vbuaa=pbuc1_derefidx_vbuxx_band_vbuc2 lda #1 and PROTO_BOB,x // (PROTO_BOB[j]&1)?0x80ub:0ub - // [218] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@3 -- vbuc1_neq_vbuaa_then_la1 + // [184] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@3 -- vbuc1_neq_vbuaa_then_la1 cmp #0 bne __b3 - // [220] phi from protoBobShiftRight::@2 to protoBobShiftRight::@4 [phi:protoBobShiftRight::@2->protoBobShiftRight::@4] - // [220] phi (byte) protoBobShiftRight::carry#1 = (byte) 0 [phi:protoBobShiftRight::@2->protoBobShiftRight::@4#0] -- vbuz1=vbuc1 + // [186] phi from protoBobShiftRight::@2 to protoBobShiftRight::@4 [phi:protoBobShiftRight::@2->protoBobShiftRight::@4] + // [186] phi (byte) protoBobShiftRight::carry#1 = (byte) 0 [phi:protoBobShiftRight::@2->protoBobShiftRight::@4#0] -- vbuz1=vbuc1 lda #0 sta.z carry jmp __b4 - // [219] phi from protoBobShiftRight::@2 to protoBobShiftRight::@3 [phi:protoBobShiftRight::@2->protoBobShiftRight::@3] + // [185] phi from protoBobShiftRight::@2 to protoBobShiftRight::@3 [phi:protoBobShiftRight::@2->protoBobShiftRight::@3] // protoBobShiftRight::@3 __b3: - // [220] phi from protoBobShiftRight::@3 to protoBobShiftRight::@4 [phi:protoBobShiftRight::@3->protoBobShiftRight::@4] - // [220] phi (byte) protoBobShiftRight::carry#1 = (byte) $80 [phi:protoBobShiftRight::@3->protoBobShiftRight::@4#0] -- vbuz1=vbuc1 + // [186] phi from protoBobShiftRight::@3 to protoBobShiftRight::@4 [phi:protoBobShiftRight::@3->protoBobShiftRight::@4] + // [186] phi (byte) protoBobShiftRight::carry#1 = (byte) $80 [phi:protoBobShiftRight::@3->protoBobShiftRight::@4#0] -- vbuz1=vbuc1 lda #$80 sta.z carry // protoBobShiftRight::@4 __b4: // PROTO_BOB[j]>>1 - // [221] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 -- vbuaa=pbuc1_derefidx_vbuxx_ror_1 + // [187] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 -- vbuaa=pbuc1_derefidx_vbuxx_ror_1 lda PROTO_BOB,x lsr // carry | PROTO_BOB[j]>>1 - // [222] (byte~) protoBobShiftRight::$6 ← (byte) protoBobShiftRight::carry#2 | (byte~) protoBobShiftRight::$5 -- vbuaa=vbuyy_bor_vbuaa + // [188] (byte~) protoBobShiftRight::$6 ← (byte) protoBobShiftRight::carry#2 | (byte~) protoBobShiftRight::$5 -- vbuaa=vbuyy_bor_vbuaa sty.z $ff ora.z $ff // PROTO_BOB[j] = carry | PROTO_BOB[j]>>1 - // [223] *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) ← (byte~) protoBobShiftRight::$6 -- pbuc1_derefidx_vbuxx=vbuaa + // [189] *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) ← (byte~) protoBobShiftRight::$6 -- pbuc1_derefidx_vbuxx=vbuaa // Shift value and add old carry sta PROTO_BOB,x // if(j>=48) - // [224] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@5 -- vbuxx_ge_vbuc1_then_la1 + // [190] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@5 -- vbuxx_ge_vbuc1_then_la1 // Increment j to iterate over the PROTO_BOB left-to-right, top-to-bottom (0, 24, 48, 1, 25, 49, ...) cpx #$30 bcs __b5 // protoBobShiftRight::@7 // j+=24 - // [225] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 -- vbuxx=vbuxx_plus_vbuc1 + // [191] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 -- vbuxx=vbuxx_plus_vbuc1 txa axs #-[$18] - // [226] phi from protoBobShiftRight::@5 protoBobShiftRight::@7 to protoBobShiftRight::@6 [phi:protoBobShiftRight::@5/protoBobShiftRight::@7->protoBobShiftRight::@6] - // [226] phi (byte) protoBobShiftRight::j#10 = (byte) protoBobShiftRight::j#1 [phi:protoBobShiftRight::@5/protoBobShiftRight::@7->protoBobShiftRight::@6#0] -- register_copy + // [192] phi from protoBobShiftRight::@5 protoBobShiftRight::@7 to protoBobShiftRight::@6 [phi:protoBobShiftRight::@5/protoBobShiftRight::@7->protoBobShiftRight::@6] + // [192] phi (byte) protoBobShiftRight::j#10 = (byte) protoBobShiftRight::j#1 [phi:protoBobShiftRight::@5/protoBobShiftRight::@7->protoBobShiftRight::@6#0] -- register_copy // protoBobShiftRight::@6 __b6: // for(char i=0;i<3*3*8;i++) - // [227] (byte) protoBobShiftRight::i#1 ← ++ (byte) protoBobShiftRight::i#2 -- vbuz1=_inc_vbuz1 + // [193] (byte) protoBobShiftRight::i#1 ← ++ (byte) protoBobShiftRight::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [228] (byte) protoBobShiftRight::carry#10 ← (byte) protoBobShiftRight::carry#1 -- vbuyy=vbuz1 + // [194] (byte) protoBobShiftRight::carry#10 ← (byte) protoBobShiftRight::carry#1 -- vbuyy=vbuz1 ldy.z carry - // [214] phi from protoBobShiftRight::@6 to protoBobShiftRight::@1 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1] - // [214] phi (byte) protoBobShiftRight::carry#2 = (byte) protoBobShiftRight::carry#10 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#0] -- register_copy - // [214] phi (byte) protoBobShiftRight::j#3 = (byte) protoBobShiftRight::j#10 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#1] -- register_copy - // [214] phi (byte) protoBobShiftRight::i#2 = (byte) protoBobShiftRight::i#1 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#2] -- register_copy + // [180] phi from protoBobShiftRight::@6 to protoBobShiftRight::@1 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1] + // [180] phi (byte) protoBobShiftRight::carry#2 = (byte) protoBobShiftRight::carry#10 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#0] -- register_copy + // [180] phi (byte) protoBobShiftRight::j#3 = (byte) protoBobShiftRight::j#10 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#1] -- register_copy + // [180] phi (byte) protoBobShiftRight::i#2 = (byte) protoBobShiftRight::i#1 [phi:protoBobShiftRight::@6->protoBobShiftRight::@1#2] -- register_copy jmp __b1 // protoBobShiftRight::@5 __b5: // j-=47 - // [229] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f -- vbuxx=vbuxx_minus_vbuc1 + // [195] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f -- vbuxx=vbuxx_minus_vbuc1 txa axs #$2f jmp __b6 @@ -11240,49 +10213,49 @@ protoBobShiftRight: { // Shift PROTO_BOB down one Y pixel // At the same time restore PROTO_BOB X by shifting 8 pixels left protoBobShiftDown: { - // [231] phi from protoBobShiftDown to protoBobShiftDown::@1 [phi:protoBobShiftDown->protoBobShiftDown::@1] - // [231] phi (byte) protoBobShiftDown::i#2 = (byte) $17 [phi:protoBobShiftDown->protoBobShiftDown::@1#0] -- vbuxx=vbuc1 + // [197] phi from protoBobShiftDown to protoBobShiftDown::@1 [phi:protoBobShiftDown->protoBobShiftDown::@1] + // [197] phi (byte) protoBobShiftDown::i#2 = (byte) $17 [phi:protoBobShiftDown->protoBobShiftDown::@1#0] -- vbuxx=vbuc1 ldx #$17 // protoBobShiftDown::@1 __b1: // for(char i=23;i>0;i--) - // [232] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2 -- vbuxx_gt_0_then_la1 + // [198] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2 -- vbuxx_gt_0_then_la1 cpx #0 bne __b2 // protoBobShiftDown::@3 // PROTO_BOB[0] = 0 - // [233] *((const byte*) PROTO_BOB) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [199] *((const byte*) PROTO_BOB) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta PROTO_BOB // PROTO_BOB[24] = 0 - // [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [200] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta PROTO_BOB+$18 // PROTO_BOB[48] = 0 - // [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [201] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta PROTO_BOB+$30 // protoBobShiftDown::@return // } - // [236] return + // [202] return rts // protoBobShiftDown::@2 __b2: // PROTO_BOB[i] = (PROTO_BOB+23)[i] - // [237] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + // [203] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda PROTO_BOB+$17,x sta PROTO_BOB,x // (PROTO_BOB+24)[i] = (PROTO_BOB+47)[i] - // [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + // [204] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda PROTO_BOB+$2f,x sta PROTO_BOB+$18,x // (PROTO_BOB+48)[i] = 0x00 - // [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + // [205] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta PROTO_BOB+$30,x // for(char i=23;i>0;i--) - // [240] (byte) protoBobShiftDown::i#1 ← -- (byte) protoBobShiftDown::i#2 -- vbuxx=_dec_vbuxx + // [206] (byte) protoBobShiftDown::i#1 ← -- (byte) protoBobShiftDown::i#2 -- vbuxx=_dec_vbuxx dex - // [231] phi from protoBobShiftDown::@2 to protoBobShiftDown::@1 [phi:protoBobShiftDown::@2->protoBobShiftDown::@1] - // [231] phi (byte) protoBobShiftDown::i#2 = (byte) protoBobShiftDown::i#1 [phi:protoBobShiftDown::@2->protoBobShiftDown::@1#0] -- register_copy + // [197] phi from protoBobShiftDown::@2 to protoBobShiftDown::@1 [phi:protoBobShiftDown::@2->protoBobShiftDown::@1] + // [197] phi (byte) protoBobShiftDown::i#2 = (byte) protoBobShiftDown::i#1 [phi:protoBobShiftDown::@2->protoBobShiftDown::@1#0] -- register_copy jmp __b1 } // progress_init @@ -11290,39 +10263,39 @@ protoBobShiftDown: { progress_init: { // progress_init::@return // } - // [242] return + // [208] return rts } // mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { // x/2 - .label c = $d + .label c = 9 // Counter used for determining x%2==0 - .label sqr1_hi = $f + .label sqr1_hi = $a // Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4 - .label sqr = $b - .label sqr1_lo = 6 + .label sqr = $15 + .label sqr1_lo = 7 // Decrease or increase x_255 - initially we decrease - .label sqr2_hi = 8 - .label sqr2_lo = $11 + .label sqr2_hi = $13 + .label sqr2_lo = $10 //Start with g(0)=f(255) - .label dir = $e - // [244] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] - // [244] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuxx=vbuc1 + .label dir = $c + // [210] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + // [210] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuxx=vbuc1 ldx #0 - // [244] phi (byte*) mulf_init::sqr1_hi#2 = (const byte*) mulf_sqr1_hi+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + // [210] phi (byte*) mulf_init::sqr1_hi#2 = (const byte*) mulf_sqr1_hi+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta.z sqr1_hi+1 - // [244] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1 + // [210] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1 txa sta.z sqr sta.z sqr+1 - // [244] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 + // [210] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 sta.z c - // [244] phi (byte*) mulf_init::sqr1_lo#2 = (const byte*) mulf_sqr1_lo+(byte) 1 [phi:mulf_init->mulf_init::@1#4] -- pbuz1=pbuc1 + // [210] phi (byte*) mulf_init::sqr1_lo#2 = (const byte*) mulf_sqr1_lo+(byte) 1 [phi:mulf_init->mulf_init::@1#4] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 @@ -11330,25 +10303,25 @@ mulf_init: { // mulf_init::@1 __b1: // for(byte* sqr1_lo = mulf_sqr1_lo+1; sqr1_lo!=mulf_sqr1_lo+512; sqr1_lo++) - // [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 -- pbuz1_neq_pbuc1_then_la1 + // [211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne __b2 lda.z sqr1_lo cmp #mulf_init::@5] - // [246] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 + // [212] phi from mulf_init::@1 to mulf_init::@5 [phi:mulf_init::@1->mulf_init::@5] + // [212] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 lda #$ff sta.z dir - // [246] phi (byte*) mulf_init::sqr2_hi#2 = (const byte*) mulf_sqr2_hi [phi:mulf_init::@1->mulf_init::@5#1] -- pbuz1=pbuc1 + // [212] phi (byte*) mulf_init::sqr2_hi#2 = (const byte*) mulf_sqr2_hi [phi:mulf_init::@1->mulf_init::@5#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta.z sqr2_hi+1 - // [246] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuxx=vbuc1 + // [212] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuxx=vbuc1 ldx #-1 - // [246] phi (byte*) mulf_init::sqr2_lo#2 = (const byte*) mulf_sqr2_lo [phi:mulf_init::@1->mulf_init::@5#3] -- pbuz1=pbuc1 + // [212] phi (byte*) mulf_init::sqr2_lo#2 = (const byte*) mulf_sqr2_lo [phi:mulf_init::@1->mulf_init::@5#3] -- pbuz1=pbuc1 lda #mulf_sqr2_lo @@ -11356,7 +10329,7 @@ mulf_init: { // mulf_init::@5 __b5: // for(byte* sqr2_lo = mulf_sqr2_lo; sqr2_lo!=mulf_sqr2_lo+511; sqr2_lo++) - // [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 -- pbuz1_neq_pbuc1_then_la1 + // [213] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 -- pbuz1_neq_pbuc1_then_la1 lda.z sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne __b6 @@ -11365,116 +10338,116 @@ mulf_init: { bne __b6 // mulf_init::@7 // *(mulf_sqr2_lo+511) = *(mulf_sqr1_lo+256) - // [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) -- _deref_pbuc1=_deref_pbuc2 + // [214] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) -- _deref_pbuc1=_deref_pbuc2 // Set the very last value g(511) = f(256) lda mulf_sqr1_lo+$100 sta mulf_sqr2_lo+$1ff // *(mulf_sqr2_hi+511) = *(mulf_sqr1_hi+256) - // [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) -- _deref_pbuc1=_deref_pbuc2 + // [215] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) -- _deref_pbuc1=_deref_pbuc2 lda mulf_sqr1_hi+$100 sta mulf_sqr2_hi+$1ff // mulf_init::@return // } - // [250] return + // [216] return rts // mulf_init::@6 __b6: // *sqr2_lo = mulf_sqr1_lo[x_255] - // [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + // [217] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y // *sqr2_hi++ = mulf_sqr1_hi[x_255] - // [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + // [218] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x sta (sqr2_hi),y // *sqr2_hi++ = mulf_sqr1_hi[x_255]; - // [253] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + // [219] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc.z sqr2_hi bne !+ inc.z sqr2_hi+1 !: // x_255 = x_255 + dir - // [254] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + // [220] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc.z dir tax // if(x_255==0) - // [255] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuxx_neq_0_then_la1 + // [221] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuxx_neq_0_then_la1 cpx #0 bne __b8 - // [257] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8] - // [257] phi (byte) mulf_init::dir#4 = (byte) 1 [phi:mulf_init::@6->mulf_init::@8#0] -- vbuz1=vbuc1 + // [223] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8] + // [223] phi (byte) mulf_init::dir#4 = (byte) 1 [phi:mulf_init::@6->mulf_init::@8#0] -- vbuz1=vbuc1 lda #1 sta.z dir - // [256] phi from mulf_init::@6 to mulf_init::@9 [phi:mulf_init::@6->mulf_init::@9] + // [222] phi from mulf_init::@6 to mulf_init::@9 [phi:mulf_init::@6->mulf_init::@9] // mulf_init::@9 - // [257] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8] - // [257] phi (byte) mulf_init::dir#4 = (byte) mulf_init::dir#2 [phi:mulf_init::@9->mulf_init::@8#0] -- register_copy + // [223] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8] + // [223] phi (byte) mulf_init::dir#4 = (byte) mulf_init::dir#2 [phi:mulf_init::@9->mulf_init::@8#0] -- register_copy // mulf_init::@8 __b8: // for(byte* sqr2_lo = mulf_sqr2_lo; sqr2_lo!=mulf_sqr2_lo+511; sqr2_lo++) - // [258] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + // [224] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc.z sqr2_lo bne !+ inc.z sqr2_lo+1 !: - // [246] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5] - // [246] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy - // [246] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy - // [246] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy - // [246] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@8->mulf_init::@5#3] -- register_copy + // [212] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5] + // [212] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy + // [212] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy + // [212] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy + // [212] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@8->mulf_init::@5#3] -- register_copy jmp __b5 // mulf_init::@2 __b2: // if((++c&1)==0) - // [259] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + // [225] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc.z c // ++c&1 - // [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuz1_band_vbuc1 + // [226] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuz1_band_vbuc1 lda #1 and.z c // if((++c&1)==0) - // [261] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 -- vbuaa_neq_0_then_la1 + // [227] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 -- vbuaa_neq_0_then_la1 cmp #0 bne __b3 // mulf_init::@4 // x_2++; - // [262] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuxx=_inc_vbuxx + // [228] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuxx=_inc_vbuxx inx // sqr++; - // [263] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + // [229] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc.z sqr bne !+ inc.z sqr+1 !: - // [264] phi from mulf_init::@2 mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3] - // [264] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#0] -- register_copy - // [264] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#1] -- register_copy + // [230] phi from mulf_init::@2 mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3] + // [230] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#0] -- register_copy + // [230] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#1] -- register_copy // mulf_init::@3 __b3: // sqr - // [267] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + // [233] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda.z sqr+1 // *sqr1_hi++ = >sqr - // [268] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + // [234] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y // *sqr1_hi++ = >sqr; - // [269] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + // [235] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc.z sqr1_hi bne !+ inc.z sqr1_hi+1 !: // sqr = sqr + x_2 - // [270] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuxx + // [236] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuxx txa clc adc.z sqr @@ -11483,17 +10456,17 @@ mulf_init: { inc.z sqr+1 !: // for(byte* sqr1_lo = mulf_sqr1_lo+1; sqr1_lo!=mulf_sqr1_lo+512; sqr1_lo++) - // [271] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + // [237] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc.z sqr1_lo bne !+ inc.z sqr1_lo+1 !: - // [244] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1] - // [244] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy - // [244] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy - // [244] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy - // [244] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy - // [244] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@3->mulf_init::@1#4] -- register_copy + // [210] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1] + // [210] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy + // [210] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy + // [210] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy + // [210] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy + // [210] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@3->mulf_init::@1#4] -- register_copy jmp __b1 } // File Data @@ -11525,14 +10498,6 @@ PROTO_BOB: .for (var y=0; y<24; y++) .byte pic.getSinglecolorByte(x,y) - // Sine and Cosine tables - // Angles: $00=0, $80=PI,$100=2*PI - // Sine/Cosine: signed fixed [-$7f,$7f] - .align $40 -SIN: -.for(var i=0;i<$140;i++) - .byte >round($7fff*sin(i*2*PI/256)) - // Tables containing the char to use for a specific cell of a shifted BOB. // char_id = BOB_TABLES[cell*BOB_SUBTABLE_SIZE + shift_y*BOB_SHIFTS_X + shift_x]; BOB_TABLES: .fill 9*8*4, 0 diff --git a/src/test/ref/complex/prebob/grid-bobs.sym b/src/test/ref/complex/prebob/grid-bobs.sym index 1f0335b31..90c6475ec 100644 --- a/src/test/ref/complex/prebob/grid-bobs.sym +++ b/src/test/ref/complex/prebob/grid-bobs.sym @@ -1,6 +1,8 @@ (label) @1 (label) @begin (label) @end +(const byte*) BASIC_CHARSET = (byte*) 4096 +(const byte*) BASIC_SCREEN = (byte*) 1024 (const byte*) BOB_CHARSET = (byte*) 8192 (const byte*) BOB_SCREEN = (byte*) 10240 (const byte) BOB_SHIFTS_X = (number) 4 @@ -8,16 +10,14 @@ (const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y (const byte*) BOB_TABLES = { fill( 9*8*4, 0) } (const byte*) BORDERCOL = (byte*) 53280 -(const byte*) CHARSET_BASIC = (byte*) 4096 (const byte*) CIA1_PORT_A = (byte*) 56320 (const byte*) CIA1_PORT_B = (byte*) 56321 (const byte*) CIA2_PORT_A = (byte*) 56576 (const byte*) CIA2_PORT_A_DDR = (byte*) 56578 -(const signed byte*) COS = (const signed byte*) SIN+(byte) $40 (const byte*) D018 = (byte*) 53272 (const byte) KEY_SPACE = (number) $3c (const word*) MUL40 = { fill( $20, 0) } -(const byte) NUM_BOBS = (number) $14 +(const byte) NUM_BOBS = (number) $19 (const byte*) PROTO_BOB = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff)) .for (var x=0;x<3; x++) .for (var y=0; y<24; y++) @@ -29,18 +29,14 @@ (const byte) RADIX::OCTAL = (number) 8 (const byte*) RASTER = (byte*) 53266 (const byte**) RENDERBOB_CLEANUP = { fill( NUM_BOBS, 0) } -(const byte*) SCREEN_BASIC = (byte*) 1024 -(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++) - .byte >round($7fff*sin(i*2*PI/256)) - }} (const byte) SIZEOF_POINTER = (byte) 2 (byte) bob_charset_next_id -(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:13 12.0 -(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:13 1000.5454545454544 -(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:13 275.5 -(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:13 1400.3333333333335 -(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:13 37.33333333333333 -(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:13 4.0 +(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:14 12.0 +(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:14 1000.5454545454544 +(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:14 275.5 +(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:14 1400.3333333333335 +(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:14 37.33333333333333 +(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:14 4.0 (byte()) charsetFindOrAddGlyph((byte*) charsetFindOrAddGlyph::glyph , (byte*) charsetFindOrAddGlyph::charset) (label) charsetFindOrAddGlyph::@1 (label) charsetFindOrAddGlyph::@2 @@ -56,11 +52,11 @@ (byte) charsetFindOrAddGlyph::found (byte) charsetFindOrAddGlyph::found#2 reg byte a 10001.0 (byte*) charsetFindOrAddGlyph::glyph -(byte*) charsetFindOrAddGlyph::glyph#1 glyph zp[2]:6 2002.0 -(byte*) charsetFindOrAddGlyph::glyph#10 glyph zp[2]:6 7400.200000000001 +(byte*) charsetFindOrAddGlyph::glyph#1 glyph zp[2]:19 2002.0 +(byte*) charsetFindOrAddGlyph::glyph#10 glyph zp[2]:19 7400.200000000001 (byte*) charsetFindOrAddGlyph::glyph_cursor -(byte*) charsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:17 20002.0 -(byte*) charsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:17 10000.307692307691 +(byte*) charsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:5 20002.0 +(byte*) charsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:5 10000.307692307691 (byte) charsetFindOrAddGlyph::glyph_id (byte) charsetFindOrAddGlyph::glyph_id#1 reg byte x 10001.0 (byte) charsetFindOrAddGlyph::glyph_id#11 reg byte x 1937.75 @@ -95,11 +91,8 @@ (byte) keyboard_matrix_read::rowid (const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(signed word~) main::$10 zp[2]:11 202.0 -(signed word~) main::$12 zp[2]:11 202.0 -(signed word~) main::$13 zp[2]:11 202.0 -(byte~) main::$19 reg byte a 22.0 -(byte~) main::$21 reg byte a 22.0 +(byte~) main::$15 reg byte a 22.0 +(byte~) main::$17 reg byte a 22.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -117,19 +110,26 @@ (label) main::@8 (label) main::@9 (label) main::@return -(byte) main::a -(byte) main::a#1 a zp[1]:4 28.857142857142858 -(byte) main::a#2 a zp[1]:4 25.9375 -(byte) main::a#6 a zp[1]:4 22.0 -(byte) main::angle -(byte) main::angle#1 angle zp[1]:2 3.6666666666666665 -(byte) main::angle#8 angle zp[1]:2 1.1785714285714286 -(byte) main::i -(byte) main::i#1 i zp[1]:5 151.5 -(byte) main::i#2 i zp[1]:5 9.619047619047619 -(signed byte) main::r -(signed byte) main::r#1 r zp[1]:3 33.666666666666664 -(signed byte) main::r#2 r zp[1]:3 23.764705882352942 +(byte) main::col +(byte) main::col#1 col zp[1]:2 151.5 +(byte) main::col#5 col zp[1]:2 13.466666666666667 +(const signed word) main::colOffsetX = (signed word) $100 +(const signed word) main::colOffsetY = (signed word) $1800 +(signed word) main::origX +(signed word) main::origX#1 origX zp[2]:21 3.142857142857143 +(signed word) main::origX#8 origX zp[2]:21 1.5 +(const signed word) main::origY = (signed word) $a00 +(byte) main::row +(byte) main::row#1 reg byte x 1501.5 +(byte) main::row#2 reg byte x 250.25 +(const signed word) main::rowOffsetX = (signed word) $c00 +(signed word) main::rowOffsetY +(signed word) main::rowOffsetY#1 rowOffsetY zp[2]:23 3.6666666666666665 +(signed word) main::rowOffsetY#10 rowOffsetY zp[2]:23 44.47826086956522 +(signed word) main::rowX +(signed word) main::rowX#1 rowX zp[2]:19 50.5 +(signed word) main::rowY +(signed word) main::rowY#1 rowY zp[2]:3 67.33333333333333 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -138,7 +138,7 @@ (label) main::toD0182 (byte*) main::toD0182_gfx (byte) main::toD0182_return -(const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) SCREEN_BASIC&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET_BASIC/(byte) 4&(byte) $f +(const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) BASIC_SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BASIC_CHARSET/(byte) 4&(byte) $f (byte*) main::toD0182_screen (label) main::vicSelectGfxBank1 (label) main::vicSelectGfxBank1_@1 @@ -155,9 +155,16 @@ (byte) main::vicSelectGfxBank2_toDd001_return (const byte) main::vicSelectGfxBank2_toDd001_return#0 vicSelectGfxBank2_toDd001_return = (byte) 3 (signed word) main::x -(signed word) main::x#0 x zp[2]:8 18.363636363636363 +(signed word) main::x#0 x zp[2]:19 24.153846153846153 +(signed word) main::x#1 x_1 zp[2]:5 400.4 +(signed word) main::x#2 x_1 zp[2]:5 620.8 +(signed word) main::x#4 x zp[2]:19 22.0 +(signed word) main::x#7 x_1 zp[2]:5 101.0 (signed word) main::y -(signed word) main::y#0 y zp[2]:11 40.4 +(signed word) main::y#0 y zp[2]:3 21.642857142857142 +(signed word) main::y#1 y_1 zp[2]:7 500.5 +(signed word) main::y#2 y_1 zp[2]:7 517.3333333333334 +(signed word) main::y#6 y_1 zp[2]:7 202.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -165,8 +172,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) 0 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:6 22.0 -(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:21 22.0 +(byte*) memset::dst#2 dst zp[2]:21 14.666666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -174,59 +181,6 @@ (void*) memset::return (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) BOB_SCREEN -(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) -(label) mulf8s::@1 -(label) mulf8s::@2 -(label) mulf8s::@return -(signed byte) mulf8s::a -(signed byte) mulf8s::a#0 reg byte a 101.0 -(signed byte) mulf8s::a#1 reg byte a 101.0 -(signed byte) mulf8s::b -(signed byte) mulf8s::b#0 reg byte x 202.0 -(signed byte) mulf8s::b#1 reg byte x 202.0 -(signed byte) mulf8s::b#2 reg byte x 68.0 -(label) mulf8s::mulf8s_prepare1 -(signed byte) mulf8s::mulf8s_prepare1_a -(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 202.0 -(signed word) mulf8s::return -(signed word) mulf8s::return#0 return zp[2]:11 51.0 -(signed word) mulf8s::return#2 return zp[2]:11 202.0 -(signed word) mulf8s::return#3 return zp[2]:11 202.0 -(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 reg byte a 4.0 -(byte~) mulf8s_prepared::$15 reg byte a 4.0 -(byte~) mulf8s_prepared::$16 reg byte a 4.0 -(byte~) mulf8s_prepared::$8 reg byte a 4.0 -(label) mulf8s_prepared::@1 -(label) mulf8s_prepared::@2 -(label) mulf8s_prepared::@3 -(label) mulf8s_prepared::@4 -(label) mulf8s_prepared::@5 -(label) mulf8s_prepared::@return -(signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 b zp[1]:14 0.4 -(word) mulf8s_prepared::m -(word) mulf8s_prepared::m#0 m zp[2]:11 2.0 -(word) mulf8s_prepared::m#1 m zp[2]:11 4.0 -(word) mulf8s_prepared::m#2 m zp[2]:11 4.0 -(word) mulf8s_prepared::m#4 m zp[2]:11 1.3333333333333333 -(word) mulf8s_prepared::m#5 m zp[2]:11 2.5 -(const signed byte*) mulf8s_prepared::memA = (signed byte*) 253 -(signed word) mulf8s_prepared::return -(void()) mulf8u_prepare((byte) mulf8u_prepare::a) -(label) mulf8u_prepare::@return -(byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#0 reg byte a 4.0 -(const byte*) mulf8u_prepare::memA = (byte*) 253 -(word()) mulf8u_prepared((byte) mulf8u_prepared::b) -(label) mulf8u_prepared::@return -(byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 reg byte a 4.0 -(const byte*) mulf8u_prepared::memB = (byte*) 255 -(const byte*) mulf8u_prepared::resL = (byte*) 254 -(word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 return zp[2]:11 1.3333333333333333 -(word) mulf8u_prepared::return#2 return zp[2]:11 4.0 (void()) mulf_init() (byte~) mulf_init::$1 reg byte a 22.0 (byte~) mulf_init::$4 reg byte a 22.0 @@ -242,28 +196,28 @@ (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:13 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:13 11.0 +(byte) mulf_init::c#1 c zp[1]:9 2.5384615384615383 +(byte) mulf_init::c#2 c zp[1]:9 11.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:14 4.125 -(byte) mulf_init::dir#4 dir zp[1]:14 11.0 +(byte) mulf_init::dir#2 dir zp[1]:12 4.125 +(byte) mulf_init::dir#4 dir zp[1]:12 11.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:11 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:11 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:11 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:11 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:21 11.0 +(word) mulf_init::sqr#2 sqr zp[2]:21 22.0 +(word) mulf_init::sqr#3 sqr zp[2]:21 9.166666666666666 +(word) mulf_init::sqr#4 sqr zp[2]:21 5.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:15 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:15 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:10 7.333333333333333 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:10 2.75 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:6 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:6 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:7 22.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:7 3.142857142857143 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:8 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:8 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:19 3.6666666666666665 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:19 8.25 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:17 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:17 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:16 22.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:16 4.888888888888889 (byte) mulf_init::x_2 (byte) mulf_init::x_2#1 reg byte x 11.0 (byte) mulf_init::x_2#2 reg byte x 5.5 @@ -292,37 +246,37 @@ (label) prepareBobs::@9 (label) prepareBobs::@return (byte*) prepareBobs::bob_glyph -(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:6 500.5 -(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:6 429.0 +(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:19 500.5 +(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:19 429.0 (byte*) prepareBobs::bob_table -(byte*) prepareBobs::bob_table#0 bob_table zp[2]:15 202.0 -(byte*) prepareBobs::bob_table#1 bob_table zp[2]:15 667.3333333333334 -(byte*) prepareBobs::bob_table#2 bob_table zp[2]:15 388.0 +(byte*) prepareBobs::bob_table#0 bob_table zp[2]:3 202.0 +(byte*) prepareBobs::bob_table#1 bob_table zp[2]:3 667.3333333333334 +(byte*) prepareBobs::bob_table#2 bob_table zp[2]:3 388.0 (byte) prepareBobs::bob_table_idx -(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:4 40.4 -(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:4 19.11764705882353 -(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:4 11.0 +(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:12 40.4 +(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:12 19.11764705882353 +(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:12 11.0 (byte) prepareBobs::cell -(byte) prepareBobs::cell#1 cell zp[1]:10 2002.0 -(byte) prepareBobs::cell#2 cell zp[1]:10 300.29999999999995 +(byte) prepareBobs::cell#1 cell zp[1]:18 2002.0 +(byte) prepareBobs::cell#2 cell zp[1]:18 300.29999999999995 (byte) prepareBobs::shift_x -(byte) prepareBobs::shift_x#1 shift_x zp[1]:5 202.0 -(byte) prepareBobs::shift_x#2 shift_x zp[1]:5 16.833333333333332 +(byte) prepareBobs::shift_x#1 shift_x zp[1]:13 202.0 +(byte) prepareBobs::shift_x#2 shift_x zp[1]:13 16.833333333333332 (byte) prepareBobs::shift_y (byte) prepareBobs::shift_y#1 shift_y zp[1]:2 22.0 (byte) prepareBobs::shift_y#2 shift_y zp[1]:2 1.4347826086956523 (byte*) progress_cursor -(byte*) progress_cursor#15 progress_cursor zp[2]:11 11.0 -(byte*) progress_cursor#17 progress_cursor zp[2]:11 201.4 -(byte*) progress_cursor#24 progress_cursor zp[2]:11 71.11764705882355 -(byte*) progress_cursor#31 progress_cursor zp[2]:11 37.33333333333333 -(byte*) progress_cursor#8 progress_cursor zp[2]:11 4.0 +(byte*) progress_cursor#15 progress_cursor zp[2]:23 11.0 +(byte*) progress_cursor#17 progress_cursor zp[2]:23 201.4 +(byte*) progress_cursor#24 progress_cursor zp[2]:23 71.11764705882355 +(byte*) progress_cursor#31 progress_cursor zp[2]:23 37.33333333333333 +(byte*) progress_cursor#8 progress_cursor zp[2]:23 4.0 (byte) progress_idx -(byte) progress_idx#10 progress_idx zp[1]:3 201.0 -(byte) progress_idx#16 progress_idx zp[1]:3 11.0 -(byte) progress_idx#25 progress_idx zp[1]:3 86.07142857142856 -(byte) progress_idx#31 progress_idx zp[1]:3 37.33333333333333 -(byte) progress_idx#8 progress_idx zp[1]:3 3.0 +(byte) progress_idx#10 progress_idx zp[1]:9 201.0 +(byte) progress_idx#16 progress_idx zp[1]:9 11.0 +(byte) progress_idx#25 progress_idx zp[1]:9 86.07142857142856 +(byte) progress_idx#31 progress_idx zp[1]:9 37.33333333333333 +(byte) progress_idx#8 progress_idx zp[1]:9 3.0 (void()) progress_inc() (label) progress_inc::@1 (label) progress_inc::@2 @@ -352,12 +306,12 @@ (label) protoBobShiftRight::@7 (label) protoBobShiftRight::@return (byte) protoBobShiftRight::carry -(byte) protoBobShiftRight::carry#1 carry zp[1]:14 111.22222222222223 +(byte) protoBobShiftRight::carry#1 carry zp[1]:15 111.22222222222223 (byte) protoBobShiftRight::carry#10 reg byte y 2002.0 (byte) protoBobShiftRight::carry#2 reg byte y 286.0 (byte) protoBobShiftRight::i -(byte) protoBobShiftRight::i#1 i zp[1]:10 1001.0 -(byte) protoBobShiftRight::i#2 i zp[1]:10 231.0 +(byte) protoBobShiftRight::i#1 i zp[1]:18 1001.0 +(byte) protoBobShiftRight::i#2 i zp[1]:18 231.0 (byte) protoBobShiftRight::j (byte) protoBobShiftRight::j#1 reg byte x 2002.0 (byte) protoBobShiftRight::j#10 reg byte x 1001.0 @@ -365,26 +319,26 @@ (byte) protoBobShiftRight::j#3 reg byte x 700.7 (byte) protoBobShiftRight::new_carry (void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos) -(byte*~) renderBob::$2 zp[2]:11 4.0 +(byte*~) renderBob::$2 zp[2]:16 4.0 (byte~) renderBob::$4 reg byte a 4.0 -(byte~) renderBob::$5 zp[1]:13 2.0 +(byte~) renderBob::$5 zp[1]:18 2.0 (byte~) renderBob::$6 reg byte a 4.0 (byte~) renderBob::$8 reg byte a 4.0 (label) renderBob::@return (byte) renderBob::bob_table_idx -(byte) renderBob::bob_table_idx#0 reg byte x 1.8181818181818186 +(byte) renderBob::bob_table_idx#0 bob_table_idx zp[1]:18 1.8181818181818186 (byte*) renderBob::screen -(byte*) renderBob::screen#0 screen zp[2]:11 1.4666666666666666 +(byte*) renderBob::screen#0 screen zp[2]:16 1.4666666666666666 (byte) renderBob::x_char_offset -(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:10 0.8 +(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:15 0.8 (byte) renderBob::xpos -(byte) renderBob::xpos#0 xpos zp[1]:14 10.499999999999998 +(byte) renderBob::xpos#0 xpos zp[1]:13 100.5 (byte) renderBob::y_char_offset (byte) renderBob::y_char_offset#0 reg byte a 4.0 (word) renderBob::y_offset -(word) renderBob::y_offset#0 y_offset zp[2]:11 4.0 +(word) renderBob::y_offset#0 y_offset zp[2]:16 4.0 (byte) renderBob::ypos -(byte) renderBob::ypos#0 reg byte x 15.000000000000002 +(byte) renderBob::ypos#0 ypos zp[1]:14 143.57142857142856 (void()) renderBobCleanup() (byte~) renderBobCleanup::$1 reg byte a 202.0 (label) renderBobCleanup::@1 @@ -393,17 +347,18 @@ (byte) renderBobCleanup::i#1 reg byte x 151.5 (byte) renderBobCleanup::i#2 reg byte x 25.25 (byte*) renderBobCleanup::screen -(byte*) renderBobCleanup::screen#0 screen zp[2]:15 112.22222222222223 +(byte*) renderBobCleanup::screen#0 screen zp[2]:19 112.22222222222223 (byte**) renderBobCleanupNext -(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:6 7.357142857142858 -(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:6 3.3870967741935485 +(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:10 52.57142857142857 +(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:10 73.73333333333335 +(byte**) renderBobCleanupNext#21 renderBobCleanupNext zp[2]:10 67.33333333333333 (void()) renderBobInit() -(word~) renderBobInit::$0 zp[2]:15 16.5 -(word~) renderBobInit::$1 zp[2]:15 11.0 +(word~) renderBobInit::$0 zp[2]:21 16.5 +(word~) renderBobInit::$1 zp[2]:21 11.0 (byte~) renderBobInit::$4 reg byte a 22.0 (byte~) renderBobInit::$5 reg byte a 22.0 -(word~) renderBobInit::$6 zp[2]:17 22.0 -(word~) renderBobInit::$7 zp[2]:15 22.0 +(word~) renderBobInit::$6 zp[2]:23 22.0 +(word~) renderBobInit::$7 zp[2]:21 22.0 (label) renderBobInit::@1 (label) renderBobInit::@2 (label) renderBobInit::@return @@ -414,53 +369,47 @@ (byte) renderBobInit::y#1 reg byte x 16.5 (byte) renderBobInit::y#2 reg byte x 4.714285714285714 -reg byte a [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] -reg byte x [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] +reg byte x [ main::row#2 main::row#1 ] reg byte x [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] reg byte x [ renderBobInit::y#2 renderBobInit::y#1 ] reg byte x [ renderBobInit::i#2 renderBobInit::i#1 ] -zp[1]:2 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 main::angle#8 main::angle#1 ] -zp[1]:3 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 main::r#2 main::r#1 ] -zp[1]:4 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 main::a#2 main::a#6 main::a#1 ] -zp[1]:5 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 main::i#2 main::i#1 ] +zp[1]:2 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 main::col#5 main::col#1 ] +zp[2]:3 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 main::y#0 main::rowY#1 ] reg byte x [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] +zp[2]:5 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 main::x#2 main::x#1 main::x#7 ] reg byte y [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] reg byte y [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] reg byte a [ charsetFindOrAddGlyph::found#2 ] reg byte x [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] reg byte y [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] reg byte x [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] -zp[2]:6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 memset::dst#2 memset::dst#1 renderBobCleanupNext#17 renderBobCleanupNext#13 ] +zp[2]:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 main::y#2 main::y#1 main::y#6 ] +zp[1]:9 [ mulf_init::c#2 mulf_init::c#1 progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] +zp[2]:10 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] -zp[2]:8 [ main::x#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] -reg byte x [ renderBob::ypos#0 ] +zp[1]:12 [ mulf_init::dir#2 mulf_init::dir#4 prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] +zp[1]:13 [ renderBob::xpos#0 prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] +zp[1]:14 [ renderBob::ypos#0 bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] reg byte a [ keyboard_key_pressed::return#2 ] -reg byte a [ main::$19 ] +reg byte a [ main::$15 ] reg byte a [ keyboard_key_pressed::return#3 ] -reg byte a [ main::$21 ] +reg byte a [ main::$17 ] reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_key_pressed::$2 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_matrix_read::return#0 ] -zp[1]:10 [ renderBob::x_char_offset#0 protoBobShiftRight::i#2 protoBobShiftRight::i#1 prepareBobs::cell#2 prepareBobs::cell#1 ] +zp[1]:15 [ renderBob::x_char_offset#0 protoBobShiftRight::carry#1 ] reg byte a [ renderBob::y_char_offset#0 ] reg byte a [ renderBob::$8 ] -zp[2]:11 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#2 mulf8s::return#2 main::$10 mulf8s::return#3 main::$12 mulf8u_prepared::return#0 main::$13 main::y#0 ] +zp[2]:16 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] reg byte a [ renderBob::$4 ] -zp[1]:13 [ renderBob::$5 mulf_init::c#2 mulf_init::c#1 bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] +zp[1]:18 [ renderBob::$5 renderBob::bob_table_idx#0 protoBobShiftRight::i#2 protoBobShiftRight::i#1 prepareBobs::cell#2 prepareBobs::cell#1 ] reg byte a [ renderBob::$6 ] -reg byte x [ renderBob::bob_table_idx#0 ] -reg byte a [ mulf8u_prepare::a#0 ] -zp[1]:14 [ mulf8s_prepared::b#0 renderBob::xpos#0 mulf_init::dir#2 mulf_init::dir#4 protoBobShiftRight::carry#1 ] -reg byte a [ mulf8u_prepared::b#0 ] -reg byte a [ mulf8s_prepared::$8 ] -reg byte a [ mulf8s_prepared::$15 ] -reg byte a [ mulf8s_prepared::$12 ] -reg byte a [ mulf8s_prepared::$16 ] reg byte a [ renderBobCleanup::$1 ] -zp[2]:15 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 renderBobCleanup::screen#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] -zp[2]:17 [ renderBobInit::$6 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] +zp[2]:19 [ renderBobCleanup::screen#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 main::x#0 main::x#4 main::rowX#1 ] +zp[2]:21 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 memset::dst#2 memset::dst#1 main::origX#8 main::origX#1 ] +zp[2]:23 [ renderBobInit::$6 progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 main::rowOffsetY#10 main::rowOffsetY#1 ] reg byte a [ renderBobInit::$4 ] reg byte a [ renderBobInit::$5 ] reg byte a [ charsetFindOrAddGlyph::return#1 ]