1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-04-05 07:40:39 +00:00

Added MAKEWORD() and MAKELONG(). Removed support for initializer lists for initializing word/dword. Closes #668

This commit is contained in:
jespergravgaard 2021-07-02 00:33:29 +02:00
parent ff770cb0d7
commit 1eb61b9c9d
49 changed files with 1105 additions and 1099 deletions

View File

@ -108,7 +108,7 @@ void init_render_index() {
// - pixels: The pixel data to set
void render(char xcol, char ypos, char pixels) {
char ytile = ypos/4;
char * render_index_xcol = (char*){ BYTE1(RENDER_INDEX) + xcol, ytile*2 };
char * render_index_xcol = (char*)MAKEWORD( BYTE1(RENDER_INDEX) + xcol, ytile*2 );
unsigned int canvas_offset = MAKEWORD( render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] );
char * canvas1 = SPRITES_1 + canvas_offset;
char * canvas2 = SPRITES_2 + canvas_offset;
@ -134,7 +134,7 @@ void render(char xcol, char ypos, char pixels) {
void render_tiles(char xcol, char ytile, char tile_left, char tile_right) {
char * tile_left_pixels = TILES_LEFT + tile_left*4;
char * tile_right_pixels = TILES_RIGHT + tile_right*4;
char * render_index_xcol = (char*){ BYTE1(RENDER_INDEX) + xcol, ytile*2 };
char * render_index_xcol = (char*)MAKEWORD( BYTE1(RENDER_INDEX) + xcol, ytile*2 );
unsigned int canvas_offset = MAKEWORD( render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] );
char * canvas1 = SPRITES_1 + canvas_offset;
char * canvas2 = SPRITES_2 + canvas_offset;

View File

@ -683,7 +683,7 @@ div32u16u: {
jsr divr16u
// divr16u(WORD0(dividend), divisor, rem16u)
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
lda.z quotient_hi
sta.z return+2
lda.z quotient_hi+1

View File

@ -7177,7 +7177,7 @@ div32u16u: {
// div32u16u::@2
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// [141] div32u16u::quotient_lo#0 = divr16u::return#3
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
// [142] div32u16u::return#1 = div32u16u::quotient_hi#0 dw= div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3
lda.z quotient_hi
sta.z return+2

View File

@ -720,7 +720,7 @@ div32u16u: {
jsr divr16u
// divr16u(WORD0(dividend), divisor, rem16u)
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
lda.z quotient_hi
sta.z return+2
lda.z quotient_hi+1

View File

@ -7551,7 +7551,7 @@ div32u16u: {
// div32u16u::@2
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// [150] div32u16u::quotient_lo#0 = divr16u::return#3
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
// [151] div32u16u::return#1 = div32u16u::quotient_hi#0 dw= div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3
lda.z quotient_hi
sta.z return+2

View File

@ -2965,7 +2965,7 @@ form_field_ptr: {
.label return = $27
// byte y = form_fields_y[field_idx]
ldy form_fields_y,x
// byte* line = (byte*) { form_line_hi[y], form_line_lo[y] }
// MAKEWORD( form_line_hi[y], form_line_lo[y] )
lda form_line_hi,y
sta.z line+1
lda form_line_lo,y
@ -3110,10 +3110,10 @@ sgn_u16: {
// Plot a single dot in the bitmap
// bitmap_plot(word zp($d) x, byte register(X) y)
bitmap_plot: {
.label __0 = $29
.label __1 = $29
.label plotter = $27
.label x = $d
// char* plotter = (char*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
// MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] )
lda bitmap_plot_yhi,x
sta.z plotter+1
lda bitmap_plot_ylo,x
@ -3121,17 +3121,17 @@ bitmap_plot: {
// x & $fff8
lda.z x
and #<$fff8
sta.z __0
sta.z __1
lda.z x+1
and #>$fff8
sta.z __0+1
sta.z __1+1
// plotter += ( x & $fff8 )
clc
lda.z plotter
adc.z __0
adc.z __1
sta.z plotter
lda.z plotter+1
adc.z __0+1
adc.z __1+1
sta.z plotter+1
// BYTE0(x)
ldx.z x

View File

@ -1671,10 +1671,10 @@ bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_li
[785] bitmap_plot::x#4 = phi( bitmap_line::@3/bitmap_plot::x#2, bitmap_line::@4/bitmap_plot::x#0, bitmap_line::@6/bitmap_plot::x#1, bitmap_line::@9/bitmap_plot::x#3 )
[785] bitmap_plot::y#4 = phi( bitmap_line::@3/bitmap_plot::y#2, bitmap_line::@4/bitmap_plot::y#0, bitmap_line::@6/bitmap_plot::y#1, bitmap_line::@9/bitmap_plot::y#3 )
[786] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
[787] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
[788] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
[789] bitmap_plot::$1 = byte0 bitmap_plot::x#4
[790] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
[787] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8
[788] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$1
[789] bitmap_plot::$2 = byte0 bitmap_plot::x#4
[790] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2]
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
[791] return

View File

@ -615,11 +615,12 @@ void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9
bitmap_plot::x#4 = phi( bitmap_line::@3/bitmap_plot::x#2, bitmap_line::@4/bitmap_plot::x#0, bitmap_line::@6/bitmap_plot::x#1, bitmap_line::@9/bitmap_plot::x#3 )
bitmap_plot::y#4 = phi( bitmap_line::@3/bitmap_plot::y#2, bitmap_line::@4/bitmap_plot::y#0, bitmap_line::@6/bitmap_plot::y#1, bitmap_line::@9/bitmap_plot::y#3 )
bitmap_plot::plotter#0 = (byte*){ bitmap_plot_yhi[bitmap_plot::y#4], bitmap_plot_ylo[bitmap_plot::y#4] }
bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
bitmap_plot::plotter#1 = bitmap_plot::plotter#0 + bitmap_plot::$0
bitmap_plot::$1 = byte0 bitmap_plot::x#4
*bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
bitmap_plot::$0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
bitmap_plot::plotter#0 = (byte*)bitmap_plot::$0
bitmap_plot::$1 = bitmap_plot::x#4 & $fff8
bitmap_plot::plotter#1 = bitmap_plot::plotter#0 + bitmap_plot::$1
bitmap_plot::$2 = byte0 bitmap_plot::x#4
*bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2]
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
return
@ -2905,10 +2906,11 @@ byte* form_field_ptr(byte form_field_ptr::field_idx)
form_field_ptr: scope:[form_field_ptr] from form_control form_render_values::@2
form_field_ptr::field_idx#2 = phi( form_control/form_field_ptr::field_idx#1, form_render_values::@2/form_field_ptr::field_idx#0 )
form_field_ptr::y#0 = form_fields_y[form_field_ptr::field_idx#2]
form_field_ptr::line#0 = (byte*){ form_line_hi[form_field_ptr::y#0], form_line_lo[form_field_ptr::y#0] }
form_field_ptr::$0 = form_line_hi[form_field_ptr::y#0] w= form_line_lo[form_field_ptr::y#0]
form_field_ptr::line#0 = (byte*)form_field_ptr::$0
form_field_ptr::x#0 = form_fields_x[form_field_ptr::field_idx#2]
form_field_ptr::$0 = form_field_ptr::line#0 + form_field_ptr::x#0
form_field_ptr::field#0 = form_field_ptr::$0
form_field_ptr::$1 = form_field_ptr::line#0 + form_field_ptr::x#0
form_field_ptr::field#0 = form_field_ptr::$1
form_field_ptr::return#0 = form_field_ptr::field#0
to:form_field_ptr::@return
form_field_ptr::@return: scope:[form_field_ptr] from form_field_ptr
@ -3713,8 +3715,9 @@ word bitmap_line::y2#7
word bitmap_line::y2#8
word bitmap_line::y2#9
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
number~ bitmap_plot::$0
byte~ bitmap_plot::$1
word~ bitmap_plot::$0
number~ bitmap_plot::$1
byte~ bitmap_plot::$2
byte* bitmap_plot::plotter
byte* bitmap_plot::plotter#0
byte* bitmap_plot::plotter#1
@ -4034,7 +4037,8 @@ byte form_field_idx#7
byte form_field_idx#8
byte form_field_idx#9
byte* form_field_ptr(byte form_field_ptr::field_idx)
byte*~ form_field_ptr::$0
word~ form_field_ptr::$0
byte*~ form_field_ptr::$1
byte* form_field_ptr::field
byte* form_field_ptr::field#0
byte form_field_ptr::field_idx
@ -5547,9 +5551,6 @@ word sgn_u16::w#0
word sgn_u16::w#1
word sgn_u16::w#2
Fixing inline constructor with bitmap_plot::$2 = (byte)bitmap_plot_yhi[bitmap_plot::y#4] w= (byte)bitmap_plot_ylo[bitmap_plot::y#4]
Fixing inline constructor with form_field_ptr::$1 = (byte)form_line_hi[form_field_ptr::y#0] w= (byte)form_line_lo[form_field_ptr::y#0]
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) 0 in
Adding number conversion cast (unumber) 1 in
Adding number conversion cast (unumber) 2 in
@ -5626,8 +5627,8 @@ Adding number conversion cast (unumber) $10 in bitmap_clear::$0 = bitmap_clear::
Adding number conversion cast (unumber) bitmap_clear::$0 in bitmap_clear::$0 = bitmap_clear::fgcol#1 * (unumber)$10
Adding number conversion cast (unumber) bitmap_clear::$1 in bitmap_clear::$1 = bitmap_clear::$0 + bitmap_clear::bgcol#1
Adding number conversion cast (unumber) 0 in memset::c#2 = 0
Adding number conversion cast (unumber) $fff8 in bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
Adding number conversion cast (unumber) bitmap_plot::$0 in bitmap_plot::$0 = bitmap_plot::x#4 & (unumber)$fff8
Adding number conversion cast (unumber) $fff8 in bitmap_plot::$1 = bitmap_plot::x#4 & $fff8
Adding number conversion cast (unumber) bitmap_plot::$1 in bitmap_plot::$1 = bitmap_plot::x#4 & (unumber)$fff8
Adding number conversion cast (unumber) 0 in bitmap_line::$4 = bitmap_line::dx#1 == 0
Adding number conversion cast (unumber) 0 in bitmap_line::$5 = bitmap_line::dy#0 == 0
Adding number conversion cast (unumber) 2 in bitmap_line::$20 = bitmap_line::dy#2 / 2
@ -6001,8 +6002,6 @@ Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast $10
Simplifying constant integer cast 0
Simplifying constant integer cast bitmap_plot_yhi[bitmap_plot::y#4]
Simplifying constant integer cast bitmap_plot_ylo[bitmap_plot::y#4]
Simplifying constant integer cast $fff8
Simplifying constant integer cast 0
Simplifying constant integer cast 0
@ -6170,8 +6169,6 @@ Simplifying constant integer cast 0
Simplifying constant integer cast $ff
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Simplifying constant integer cast form_line_hi[form_field_ptr::y#0]
Simplifying constant integer cast form_line_lo[form_field_ptr::y#0]
Simplifying constant integer cast 0
Simplifying constant integer cast FORM_CURSOR_BLINK/(snumber)2
Simplifying constant integer cast 2
@ -6433,7 +6430,7 @@ Inferred type updated to byte in bitmap_init::$5 = bitmap_init::$3 | bitmap_init
Inferred type updated to byte in bitmap_init::$7 = bitmap_init::y#2 & 7
Inferred type updated to byte in bitmap_clear::$0 = bitmap_clear::fgcol#1 * $10
Inferred type updated to byte in bitmap_clear::$1 = bitmap_clear::$0 + bitmap_clear::bgcol#1
Inferred type updated to word in bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
Inferred type updated to word in bitmap_plot::$1 = bitmap_plot::x#4 & $fff8
Inferred type updated to word in bitmap_line::$20 = bitmap_line::dy#2 / 2
Inferred type updated to word in bitmap_line::$15 = bitmap_line::dx#3 / 2
Inferred type updated to byte in abs_u16::$1 = abs_u16::$0 & $80
@ -6865,7 +6862,7 @@ Alias form_field_idx#15 = form_field_idx#3
Alias form_mode::preset_current#1 = form_mode::preset_current#8 form_mode::preset_current#7
Alias form_set_screen::line#0 = form_set_screen::screen#1
Alias form_set_screen::line#1 = form_set_screen::$2
Alias form_field_ptr::return#0 = form_field_ptr::field#0 form_field_ptr::$0 form_field_ptr::return#4 form_field_ptr::return#1
Alias form_field_ptr::return#0 = form_field_ptr::field#0 form_field_ptr::$1 form_field_ptr::return#4 form_field_ptr::return#1
Alias form_render_values::idx#2 = form_render_values::idx#3 form_render_values::idx#4
Alias form_field_ptr::return#2 = form_field_ptr::return#5
Alias form_render_values::field#0 = form_render_values::$1
@ -7751,10 +7748,10 @@ Successful SSA optimization Pass2ConstantIdentification
Inlining Noop Cast [38] memset::$4 = (byte*)memset::str#4 keeping memset::str#4
Inlining Noop Cast [40] memset::dst#0 = (byte*)memset::str#4 keeping memset::str#4
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [140] bitmap_plot::plotter#0 = (byte*)bitmap_plot::$2 keeping bitmap_plot::plotter#0
Inlining Noop Cast [140] bitmap_plot::plotter#0 = (byte*)bitmap_plot::$0 keeping bitmap_plot::plotter#0
Inlining Noop Cast [353] gfx_mode::$76 = (word)gfx_mode::$40 keeping gfx_mode::$76
Inlining Noop Cast [360] gfx_mode::$77 = (word)gfx_mode::$43 keeping gfx_mode::$77
Inlining Noop Cast [670] form_field_ptr::line#0 = (byte*)form_field_ptr::$1 keeping form_field_ptr::line#0
Inlining Noop Cast [670] form_field_ptr::line#0 = (byte*)form_field_ptr::$0 keeping form_field_ptr::line#0
Successful SSA optimization Pass2NopCastInlining
Rewriting division to use shift [168] bitmap_line::e1#0 = bitmap_line::dy#0 / 2
Rewriting division to use shift [169] bitmap_line::e#0 = bitmap_line::dx#0 / 2
@ -10690,10 +10687,10 @@ bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_li
[785] bitmap_plot::x#4 = phi( bitmap_line::@3/bitmap_plot::x#2, bitmap_line::@4/bitmap_plot::x#0, bitmap_line::@6/bitmap_plot::x#1, bitmap_line::@9/bitmap_plot::x#3 )
[785] bitmap_plot::y#4 = phi( bitmap_line::@3/bitmap_plot::y#2, bitmap_line::@4/bitmap_plot::y#0, bitmap_line::@6/bitmap_plot::y#1, bitmap_line::@9/bitmap_plot::y#3 )
[786] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
[787] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
[788] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
[789] bitmap_plot::$1 = byte0 bitmap_plot::x#4
[790] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
[787] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8
[788] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$1
[789] bitmap_plot::$2 = byte0 bitmap_plot::x#4
[790] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2]
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
[791] return
@ -10791,8 +10788,8 @@ word bitmap_line::y1#0 1640.2
word bitmap_line::y2
word bitmap_line::y2#0 31906.375
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
word~ bitmap_plot::$0 2.0000002E7
byte~ bitmap_plot::$1 2.0000002E7
word~ bitmap_plot::$1 2.0000002E7
byte~ bitmap_plot::$2 2.0000002E7
byte* bitmap_plot::plotter
word bitmap_plot::plotter#0 5000000.5
byte* bitmap_plot::plotter#1 1.50000015E7
@ -11579,9 +11576,9 @@ Added variable abs_u16::$1 to live range equivalence class [ abs_u16::$1 ]
Added variable sgn_u16::$0 to live range equivalence class [ sgn_u16::$0 ]
Added variable sgn_u16::$1 to live range equivalence class [ sgn_u16::$1 ]
Added variable bitmap_plot::plotter#0 to live range equivalence class [ bitmap_plot::plotter#0 ]
Added variable bitmap_plot::$0 to live range equivalence class [ bitmap_plot::$0 ]
Added variable bitmap_plot::plotter#1 to live range equivalence class [ bitmap_plot::plotter#1 ]
Added variable bitmap_plot::$1 to live range equivalence class [ bitmap_plot::$1 ]
Added variable bitmap_plot::plotter#1 to live range equivalence class [ bitmap_plot::plotter#1 ]
Added variable bitmap_plot::$2 to live range equivalence class [ bitmap_plot::$2 ]
Complete equivalence classes
[ form_mode::i#2 form_mode::i#1 ]
[ form_cursor_count#23 form_cursor_count#1 form_cursor_count#17 form_cursor_count#16 form_cursor_count#4 ]
@ -11819,9 +11816,9 @@ Complete equivalence classes
[ sgn_u16::$0 ]
[ sgn_u16::$1 ]
[ bitmap_plot::plotter#0 ]
[ bitmap_plot::$0 ]
[ bitmap_plot::plotter#1 ]
[ bitmap_plot::$1 ]
[ bitmap_plot::plotter#1 ]
[ bitmap_plot::$2 ]
Allocated zp[1]:2 [ form_mode::i#2 form_mode::i#1 ]
Allocated zp[1]:3 [ form_cursor_count#23 form_cursor_count#1 form_cursor_count#17 form_cursor_count#16 form_cursor_count#4 ]
Allocated zp[1]:4 [ form_field_idx#30 form_field_idx#1 form_field_idx#19 form_field_idx#33 form_field_idx#5 form_field_idx#4 ]
@ -12058,9 +12055,9 @@ Allocated zp[1]:327 [ abs_u16::$1 ]
Allocated zp[1]:328 [ sgn_u16::$0 ]
Allocated zp[1]:329 [ sgn_u16::$1 ]
Allocated zp[2]:330 [ bitmap_plot::plotter#0 ]
Allocated zp[2]:332 [ bitmap_plot::$0 ]
Allocated zp[2]:332 [ bitmap_plot::$1 ]
Allocated zp[2]:334 [ bitmap_plot::plotter#1 ]
Allocated zp[1]:336 [ bitmap_plot::$1 ]
Allocated zp[1]:336 [ bitmap_plot::$2 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Equivalence Class zp[1]:285 [ bitmap_init::$4 ] has ALU potential.
Statement [1] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always clobbers reg byte a
@ -12365,9 +12362,9 @@ Removing always clobbered register reg byte a as potential for zp[1]:323 [ keybo
Statement [769] keyboard_event_pressed::return#10 = keyboard_event_pressed::row_bits#0 & keyboard_matrix_col_bitmask[keyboard_event_pressed::$1] [ keyboard_event_pressed::return#10 ] ( gfx_mode:11::keyboard_event_scan:219::keyboard_event_pressed:584 [ form_cursor_count#17 form_field_idx#19 keyboard_events_size#100 keyboard_event_pressed::return#10 ] { { keyboard_events_size#25 = keyboard_events_size#98 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } form_mode:9::form_control:86::keyboard_event_scan:489::keyboard_event_pressed:584 [ form_mode::preset_current#6 form_field_idx#30 form_control::field#0 form_cursor_count#16 keyboard_events_size#100 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#49 = keyboard_events_size#98 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } gfx_mode:11::keyboard_event_scan:219::keyboard_event_pressed:590 [ form_cursor_count#17 form_field_idx#19 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] { { keyboard_events_size#25 = keyboard_events_size#98 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } form_mode:9::form_control:86::keyboard_event_scan:489::keyboard_event_pressed:590 [ form_mode::preset_current#6 form_field_idx#30 form_control::field#0 form_cursor_count#16 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#49 = keyboard_events_size#98 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } gfx_mode:11::keyboard_event_scan:219::keyboard_event_pressed:596 [ form_cursor_count#17 form_field_idx#19 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] { { keyboard_events_size#25 = keyboard_events_size#98 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } form_mode:9::form_control:86::keyboard_event_scan:489::keyboard_event_pressed:596 [ form_mode::preset_current#6 form_field_idx#30 form_control::field#0 form_cursor_count#16 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#49 = keyboard_events_size#98 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } gfx_mode:11::keyboard_event_scan:219::keyboard_event_pressed:602 [ form_cursor_count#17 form_field_idx#19 keyboard_events_size#100 keyboard_modifiers#21 keyboard_event_pressed::return#10 ] { { keyboard_events_size#25 = keyboard_events_size#98 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } form_mode:9::form_control:86::keyboard_event_scan:489::keyboard_event_pressed:602 [ form_mode::preset_current#6 form_field_idx#30 form_control::field#0 form_cursor_count#16 keyboard_events_size#100 keyboard_modifiers#21 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#49 = keyboard_events_size#98 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } ) always clobbers reg byte a
Statement [775] abs_u16::return#2 = - abs_u16::w#2 [ abs_u16::return#2 ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::abs_u16:659 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::abs_u16:663 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a
Statement [786] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
Statement [787] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
Statement [788] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
Statement [790] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] [ ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y
Statement [787] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
Statement [788] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
Statement [790] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:43 [ gfx_init_VICII_bitmap::l#2 gfx_init_VICII_bitmap::l#1 ]
Statement [1] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *PROCPORT = PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a
@ -12582,9 +12579,9 @@ Statement [768] keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#4 &
Statement [769] keyboard_event_pressed::return#10 = keyboard_event_pressed::row_bits#0 & keyboard_matrix_col_bitmask[keyboard_event_pressed::$1] [ keyboard_event_pressed::return#10 ] ( gfx_mode:11::keyboard_event_scan:219::keyboard_event_pressed:584 [ form_cursor_count#17 form_field_idx#19 keyboard_events_size#100 keyboard_event_pressed::return#10 ] { { keyboard_events_size#25 = keyboard_events_size#98 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } form_mode:9::form_control:86::keyboard_event_scan:489::keyboard_event_pressed:584 [ form_mode::preset_current#6 form_field_idx#30 form_control::field#0 form_cursor_count#16 keyboard_events_size#100 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#49 = keyboard_events_size#98 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } gfx_mode:11::keyboard_event_scan:219::keyboard_event_pressed:590 [ form_cursor_count#17 form_field_idx#19 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] { { keyboard_events_size#25 = keyboard_events_size#98 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } form_mode:9::form_control:86::keyboard_event_scan:489::keyboard_event_pressed:590 [ form_mode::preset_current#6 form_field_idx#30 form_control::field#0 form_cursor_count#16 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#49 = keyboard_events_size#98 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } gfx_mode:11::keyboard_event_scan:219::keyboard_event_pressed:596 [ form_cursor_count#17 form_field_idx#19 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] { { keyboard_events_size#25 = keyboard_events_size#98 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } form_mode:9::form_control:86::keyboard_event_scan:489::keyboard_event_pressed:596 [ form_mode::preset_current#6 form_field_idx#30 form_control::field#0 form_cursor_count#16 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#49 = keyboard_events_size#98 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } gfx_mode:11::keyboard_event_scan:219::keyboard_event_pressed:602 [ form_cursor_count#17 form_field_idx#19 keyboard_events_size#100 keyboard_modifiers#21 keyboard_event_pressed::return#10 ] { { keyboard_events_size#25 = keyboard_events_size#98 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } form_mode:9::form_control:86::keyboard_event_scan:489::keyboard_event_pressed:602 [ form_mode::preset_current#6 form_field_idx#30 form_control::field#0 form_cursor_count#16 keyboard_events_size#100 keyboard_modifiers#21 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#49 = keyboard_events_size#98 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } ) always clobbers reg byte a
Statement [775] abs_u16::return#2 = - abs_u16::w#2 [ abs_u16::return#2 ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::abs_u16:659 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::abs_u16:663 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a
Statement [786] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
Statement [787] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
Statement [788] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
Statement [790] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] [ ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y
Statement [787] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
Statement [788] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
Statement [790] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:681 [ gfx_init_VICII_bitmap::l#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:692 [ gfx_init_VICII_bitmap::l#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:698 [ gfx_init_VICII_bitmap::l#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } gfx_init:6::gfx_init_VICII_bitmap:28::bitmap_line:318::bitmap_plot:708 [ gfx_init_VICII_bitmap::l#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y
Potential registers zp[1]:2 [ form_mode::i#2 form_mode::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
Potential registers zp[1]:3 [ form_cursor_count#23 form_cursor_count#1 form_cursor_count#17 form_cursor_count#16 form_cursor_count#4 ] : zp[1]:3 , reg byte x ,
Potential registers zp[1]:4 [ form_field_idx#30 form_field_idx#1 form_field_idx#19 form_field_idx#33 form_field_idx#5 form_field_idx#4 ] : zp[1]:4 , reg byte x ,
@ -12821,9 +12818,9 @@ Potential registers zp[1]:327 [ abs_u16::$1 ] : zp[1]:327 , reg byte a , reg byt
Potential registers zp[1]:328 [ sgn_u16::$0 ] : zp[1]:328 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:329 [ sgn_u16::$1 ] : zp[1]:329 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:330 [ bitmap_plot::plotter#0 ] : zp[2]:330 ,
Potential registers zp[2]:332 [ bitmap_plot::$0 ] : zp[2]:332 ,
Potential registers zp[2]:332 [ bitmap_plot::$1 ] : zp[2]:332 ,
Potential registers zp[2]:334 [ bitmap_plot::plotter#1 ] : zp[2]:334 ,
Potential registers zp[1]:336 [ bitmap_plot::$1 ] : zp[1]:336 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:336 [ bitmap_plot::$2 ] : zp[1]:336 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [keyboard_event_scan] 2,000,000,000,002: zp[1]:280 [ keyboard_event_scan::$15 ] 2,000,000,000,002: zp[1]:281 [ keyboard_event_scan::$16 ] 2,000,000,000,002: zp[1]:282 [ keyboard_event_scan::event_type#0 ] 2,000,000,000,002: zp[1]:283 [ keyboard_event_scan::$23 ] 1,785,714,285,716.07: zp[1]:101 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,190,384,615,389.25: zp[1]:102 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] 210,000,000,001.74: zp[1]:99 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 127,777,777,778.06: zp[1]:271 [ keyboard_event_scan::row_scan#0 ] 20,000,002: zp[1]:273 [ keyboard_event_scan::$0 ] 20,000,002: zp[1]:275 [ keyboard_event_scan::$3 ] 20,000,002: zp[1]:277 [ keyboard_event_scan::$6 ] 20,000,002: zp[1]:279 [ keyboard_event_scan::$9 ]
@ -12834,7 +12831,7 @@ Uplift Scope [form_field_ptr] 3,000,000,003: zp[1]:315 [ form_field_ptr::y#0 ] 9
Uplift Scope [keyboard_event_pressed] 200,000,002: zp[1]:322 [ keyboard_event_pressed::$0 ] 200,000,002: zp[1]:324 [ keyboard_event_pressed::$1 ] 100,000,001: zp[1]:323 [ keyboard_event_pressed::row_bits#0 ] 66,666,667.33: zp[1]:142 [ keyboard_event_pressed::keycode#4 ] 23,333,334.17: zp[1]:325 [ keyboard_event_pressed::return#10 ] 20,000,002: zp[1]:272 [ keyboard_event_pressed::return#0 ] 20,000,002: zp[1]:274 [ keyboard_event_pressed::return#1 ] 20,000,002: zp[1]:276 [ keyboard_event_pressed::return#2 ] 20,000,002: zp[1]:278 [ keyboard_event_pressed::return#3 ]
Uplift Scope [apply_preset] 366,666,670.33: zp[1]:88 [ apply_preset::i#2 apply_preset::i#1 ] 20,000,000.2: zp[2]:86 [ apply_preset::preset#15 ] 100,910.18: zp[1]:154 [ apply_preset::idx#0 ]
Uplift Scope [form_render_values] 300,000,003: zp[1]:81 [ form_render_values::idx#2 form_render_values::idx#1 ]
Uplift Scope [bitmap_plot] 26,060,014: zp[1]:149 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] 20,000,002: zp[2]:332 [ bitmap_plot::$0 ] 20,000,002: zp[1]:336 [ bitmap_plot::$1 ] 15,000,001.5: zp[2]:334 [ bitmap_plot::plotter#1 ] 7,525,005.5: zp[2]:150 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] 5,000,000.5: zp[2]:330 [ bitmap_plot::plotter#0 ]
Uplift Scope [bitmap_plot] 26,060,014: zp[1]:149 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] 20,000,002: zp[2]:332 [ bitmap_plot::$1 ] 20,000,002: zp[1]:336 [ bitmap_plot::$2 ] 15,000,001.5: zp[2]:334 [ bitmap_plot::plotter#1 ] 7,525,005.5: zp[2]:150 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] 5,000,000.5: zp[2]:330 [ bitmap_plot::plotter#0 ]
Uplift Scope [keyboard_event_get] 22,752,502.75: zp[1]:104 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] 2,000,002: zp[1]:263 [ keyboard_event_get::return#4 ] 20,002: zp[1]:226 [ keyboard_event_get::return#3 ]
Uplift Scope [bitmap_line] 6,908,834.24: zp[2]:112 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 5,505,574.66: zp[2]:114 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 5,255,340.77: zp[2]:110 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 5,255,340.77: zp[2]:116 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 84,444.64: zp[2]:294 [ bitmap_line::dy#0 ] 77,307.81: zp[2]:302 [ bitmap_line::sy#0 ] 76,000.18: zp[2]:290 [ bitmap_line::dx#0 ] 67,000.1: zp[2]:298 [ bitmap_line::sx#0 ] 31,906.38: zp[2]:245 [ bitmap_line::y2#0 ] 30,939.52: zp[2]:243 [ bitmap_line::x2#0 ]
Uplift Scope [form_control] 2,000,002: zp[1]:262 [ form_control::$12 ] 2,000,002: zp[1]:265 [ form_control::$14 ] 2,000,002: zp[1]:266 [ form_control::$15 ] 2,000,002: zp[1]:267 [ form_control::$22 ] 2,000,002: zp[1]:268 [ form_control::$13 ] 1,333,334.67: zp[1]:264 [ form_control::key_event#0 ] 296,296.59: zp[2]:260 [ form_control::field#0 ] 200,002: zp[1]:152 [ form_control::return#0 ] 33,333.67: zp[1]:85 [ form_control::return#2 ]
@ -12892,7 +12889,7 @@ Uplifting [keyboard_event_pressed] best 15159428 combination reg byte a [ keyboa
Limited combination testing to 20 combinations of 147456 possible.
Uplifting [apply_preset] best 15147097 combination reg byte y [ apply_preset::i#2 apply_preset::i#1 ] zp[2]:86 [ apply_preset::preset#15 ] reg byte a [ apply_preset::idx#0 ]
Uplifting [form_render_values] best 15132097 combination reg byte x [ form_render_values::idx#2 form_render_values::idx#1 ]
Uplifting [bitmap_plot] best 15131482 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:332 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:334 [ bitmap_plot::plotter#1 ] zp[2]:150 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:330 [ bitmap_plot::plotter#0 ]
Uplifting [bitmap_plot] best 15131482 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:332 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:334 [ bitmap_plot::plotter#1 ] zp[2]:150 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:330 [ bitmap_plot::plotter#0 ]
Uplifting [keyboard_event_get] best 15130573 combination reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] zp[1]:263 [ keyboard_event_get::return#4 ] reg byte a [ keyboard_event_get::return#3 ]
Limited combination testing to 20 combinations of 64 possible.
Uplifting [bitmap_line] best 15130573 combination zp[2]:112 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:114 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:110 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:116 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:294 [ bitmap_line::dy#0 ] zp[2]:302 [ bitmap_line::sy#0 ] zp[2]:290 [ bitmap_line::dx#0 ] zp[2]:298 [ bitmap_line::sx#0 ] zp[2]:245 [ bitmap_line::y2#0 ] zp[2]:243 [ bitmap_line::x2#0 ]
@ -13262,7 +13259,7 @@ Allocated (was zp[2]:316) zp[2]:35 [ form_field_ptr::line#0 sgn_u16::return#4 sg
Allocated (was zp[1]:318) zp[1]:37 [ form_field_ptr::x#0 bitmap_init::$7 keyboard_event_scan::row_scan#0 gfx_init_screen3::$1 ]
Allocated (was zp[1]:323) zp[1]:38 [ keyboard_event_pressed::row_bits#0 ]
Allocated (was zp[2]:330) zp[2]:39 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 form_field_ptr::return#3 form_control::field#0 form_field_ptr::return#0 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
Allocated (was zp[2]:332) zp[2]:41 [ bitmap_plot::$0 ]
Allocated (was zp[2]:332) zp[2]:41 [ bitmap_plot::$1 ]
ASSEMBLER BEFORE OPTIMIZATION
// File Comments
@ -18322,7 +18319,7 @@ sgn_u16: {
// Plot a single dot in the bitmap
// bitmap_plot(word zp($d) x, byte register(X) y)
bitmap_plot: {
.label __0 = $29
.label __1 = $29
.label plotter = $27
.label x = $d
// [786] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
@ -18330,24 +18327,24 @@ bitmap_plot: {
sta.z plotter+1
lda bitmap_plot_ylo,x
sta.z plotter
// [787] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8 -- vwuz1=vwuz2_band_vwuc1
// [787] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 -- vwuz1=vwuz2_band_vwuc1
lda.z x
and #<$fff8
sta.z __0
sta.z __1
lda.z x+1
and #>$fff8
sta.z __0+1
// [788] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2
sta.z __1+1
// [788] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2
clc
lda.z plotter
adc.z __0
adc.z __1
sta.z plotter
lda.z plotter+1
adc.z __0+1
adc.z __1+1
sta.z plotter+1
// [789] bitmap_plot::$1 = byte0 bitmap_plot::x#4 -- vbuxx=_byte0_vwuz1
// [789] bitmap_plot::$2 = byte0 bitmap_plot::x#4 -- vbuxx=_byte0_vwuz1
ldx.z x
// [790] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
// [790] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
lda bitmap_plot_bit,x
ldy #0
ora (plotter),y
@ -19645,8 +19642,8 @@ word bitmap_line::y1#0 y1 zp[2]:15 1640.2
word bitmap_line::y2
word bitmap_line::y2#0 y2 zp[2]:23 31906.375
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
word~ bitmap_plot::$0 zp[2]:41 2.0000002E7
byte~ bitmap_plot::$1 reg byte x 2.0000002E7
word~ bitmap_plot::$1 zp[2]:41 2.0000002E7
byte~ bitmap_plot::$2 reg byte x 2.0000002E7
byte* bitmap_plot::plotter
word bitmap_plot::plotter#0 plotter zp[2]:39 5000000.5
byte* bitmap_plot::plotter#1 plotter zp[2]:39 1.50000015E7
@ -20426,8 +20423,8 @@ reg byte a [ abs_u16::$1 ]
reg byte a [ sgn_u16::$0 ]
reg byte a [ sgn_u16::$1 ]
zp[2]:39 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 form_field_ptr::return#3 form_control::field#0 form_field_ptr::return#0 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
zp[2]:41 [ bitmap_plot::$0 ]
reg byte x [ bitmap_plot::$1 ]
zp[2]:41 [ bitmap_plot::$1 ]
reg byte x [ bitmap_plot::$2 ]
FINAL ASSEMBLER
@ -24972,7 +24969,7 @@ form_field_ptr: {
// byte y = form_fields_y[field_idx]
// [750] form_field_ptr::y#0 = form_fields_y[form_field_ptr::field_idx#2] -- vbuyy=pbuc1_derefidx_vbuxx
ldy form_fields_y,x
// byte* line = (byte*) { form_line_hi[y], form_line_lo[y] }
// MAKEWORD( form_line_hi[y], form_line_lo[y] )
// [751] form_field_ptr::line#0 = form_line_hi[form_field_ptr::y#0] w= form_line_lo[form_field_ptr::y#0] -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy
lda form_line_hi,y
sta.z line+1
@ -25172,37 +25169,37 @@ sgn_u16: {
// Plot a single dot in the bitmap
// bitmap_plot(word zp($d) x, byte register(X) y)
bitmap_plot: {
.label __0 = $29
.label __1 = $29
.label plotter = $27
.label x = $d
// char* plotter = (char*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
// MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] )
// [786] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
lda bitmap_plot_yhi,x
sta.z plotter+1
lda bitmap_plot_ylo,x
sta.z plotter
// x & $fff8
// [787] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8 -- vwuz1=vwuz2_band_vwuc1
// [787] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 -- vwuz1=vwuz2_band_vwuc1
lda.z x
and #<$fff8
sta.z __0
sta.z __1
lda.z x+1
and #>$fff8
sta.z __0+1
sta.z __1+1
// plotter += ( x & $fff8 )
// [788] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2
// [788] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2
clc
lda.z plotter
adc.z __0
adc.z __1
sta.z plotter
lda.z plotter+1
adc.z __0+1
adc.z __1+1
sta.z plotter+1
// BYTE0(x)
// [789] bitmap_plot::$1 = byte0 bitmap_plot::x#4 -- vbuxx=_byte0_vwuz1
// [789] bitmap_plot::$2 = byte0 bitmap_plot::x#4 -- vbuxx=_byte0_vwuz1
ldx.z x
// *plotter |= bitmap_plot_bit[BYTE0(x)]
// [790] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
// [790] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
lda bitmap_plot_bit,x
ldy #0
ora (plotter),y

View File

@ -184,8 +184,8 @@ word bitmap_line::y1#0 y1 zp[2]:15 1640.2
word bitmap_line::y2
word bitmap_line::y2#0 y2 zp[2]:23 31906.375
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
word~ bitmap_plot::$0 zp[2]:41 2.0000002E7
byte~ bitmap_plot::$1 reg byte x 2.0000002E7
word~ bitmap_plot::$1 zp[2]:41 2.0000002E7
byte~ bitmap_plot::$2 reg byte x 2.0000002E7
byte* bitmap_plot::plotter
word bitmap_plot::plotter#0 plotter zp[2]:39 5000000.5
byte* bitmap_plot::plotter#1 plotter zp[2]:39 1.50000015E7
@ -965,5 +965,5 @@ reg byte a [ abs_u16::$1 ]
reg byte a [ sgn_u16::$0 ]
reg byte a [ sgn_u16::$1 ]
zp[2]:39 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 form_field_ptr::return#3 form_control::field#0 form_field_ptr::return#0 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
zp[2]:41 [ bitmap_plot::$0 ]
reg byte x [ bitmap_plot::$1 ]
zp[2]:41 [ bitmap_plot::$1 ]
reg byte x [ bitmap_plot::$2 ]

View File

@ -3916,10 +3916,10 @@ render: {
// ytile*2
tya
asl
// char * render_index_xcol = (char*){ BYTE1(RENDER_INDEX) + xcol, ytile*2 }
// MAKEWORD( BYTE1(RENDER_INDEX) + xcol, ytile*2 )
stx.z render_index_xcol+1
sta.z render_index_xcol
// unsigned int canvas_offset = { render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] }
// unsigned int canvas_offset = MAKEWORD( render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] )
ldy #RENDER_OFFSET_CANVAS_HI
lda (render_index_xcol),y
sta.z canvas_offset+1
@ -4063,10 +4063,10 @@ render_tiles: {
// ytile*2
lda.z ytile
asl
// char * render_index_xcol = (char*){ BYTE1(RENDER_INDEX) + xcol, ytile*2 }
// MAKEWORD( BYTE1(RENDER_INDEX) + xcol, ytile*2 )
stx.z render_index_xcol+1
sta.z render_index_xcol
// unsigned int canvas_offset = {render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] }
// unsigned int canvas_offset = MAKEWORD( render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] )
ldy #RENDER_OFFSET_CANVAS_HI
lda (render_index_xcol),y
sta.z canvas_offset+1

View File

@ -452,15 +452,17 @@ render: scope:[render] from done_run::@14 splash_show::@4
render::ytile#0 = render::$0
render::$1 = byte1 RENDER_INDEX + render::xcol#2
render::$2 = render::ytile#0 * 2
render::render_index_xcol#0 = (byte*){ render::$1, render::$2 }
render::canvas_offset#0 = (word){ render::render_index_xcol#0[RENDER_OFFSET_CANVAS_HI], render::render_index_xcol#0[RENDER_OFFSET_CANVAS_LO] }
render::$3 = SPRITES_1 + render::canvas_offset#0
render::canvas1#0 = render::$3
render::$4 = SPRITES_2 + render::canvas_offset#0
render::canvas2#0 = render::$4
render::$3 = render::$1 w= render::$2
render::render_index_xcol#0 = (byte*)render::$3
render::$4 = render::render_index_xcol#0[RENDER_OFFSET_CANVAS_HI] w= render::render_index_xcol#0[RENDER_OFFSET_CANVAS_LO]
render::canvas_offset#0 = render::$4
render::$5 = SPRITES_1 + render::canvas_offset#0
render::canvas1#0 = render::$5
render::$6 = SPRITES_2 + render::canvas_offset#0
render::canvas2#0 = render::$6
render::ypos_inc_offset#0 = render::render_index_xcol#0[RENDER_OFFSET_YPOS_INC]
render::$5 = render::ypos#2 & 3
render::ypix#0 = render::$5
render::$7 = render::ypos#2 & 3
render::ypix#0 = render::$7
render::i#0 = 0
to:render::@1
render::@1: scope:[render] from render render::@2
@ -470,8 +472,8 @@ render::@1: scope:[render] from render render::@2
render::canvas1#4 = phi( render/render::canvas1#0, render::@2/render::canvas1#1 )
render::ypix#1 = phi( render/render::ypix#0, render::@2/render::ypix#2 )
render::i#2 = phi( render/render::i#0, render::@2/render::i#1 )
render::$6 = render::i#2 < render::ypix#1
if(render::$6) goto render::@2
render::$8 = render::i#2 < render::ypix#1
if(render::$8) goto render::@2
to:render::@3
render::@2: scope:[render] from render::@1
render::pixels#5 = phi( render::@1/render::pixels#3 )
@ -510,12 +512,14 @@ render_tiles: scope:[render_tiles] from level_show::@8
render_tiles::tile_right_pixels#0 = render_tiles::$3
render_tiles::$4 = byte1 RENDER_INDEX + render_tiles::xcol#1
render_tiles::$5 = render_tiles::ytile#1 * 2
render_tiles::render_index_xcol#0 = (byte*){ render_tiles::$4, render_tiles::$5 }
render_tiles::canvas_offset#0 = (word){ render_tiles::render_index_xcol#0[RENDER_OFFSET_CANVAS_HI], render_tiles::render_index_xcol#0[RENDER_OFFSET_CANVAS_LO] }
render_tiles::$6 = SPRITES_1 + render_tiles::canvas_offset#0
render_tiles::canvas1#0 = render_tiles::$6
render_tiles::$7 = SPRITES_2 + render_tiles::canvas_offset#0
render_tiles::canvas2#0 = render_tiles::$7
render_tiles::$6 = render_tiles::$4 w= render_tiles::$5
render_tiles::render_index_xcol#0 = (byte*)render_tiles::$6
render_tiles::$7 = render_tiles::render_index_xcol#0[RENDER_OFFSET_CANVAS_HI] w= render_tiles::render_index_xcol#0[RENDER_OFFSET_CANVAS_LO]
render_tiles::canvas_offset#0 = render_tiles::$7
render_tiles::$8 = SPRITES_1 + render_tiles::canvas_offset#0
render_tiles::canvas1#0 = render_tiles::$8
render_tiles::$9 = SPRITES_2 + render_tiles::canvas_offset#0
render_tiles::canvas2#0 = render_tiles::$9
render_tiles::ypos_inc_offset#0 = render_tiles::render_index_xcol#0[RENDER_OFFSET_YPOS_INC]
render_tiles::y#0 = 0
to:render_tiles::@1
@ -526,8 +530,8 @@ render_tiles::@1: scope:[render_tiles] from render_tiles render_tiles::@2
render_tiles::tile_right_pixels#2 = phi( render_tiles/render_tiles::tile_right_pixels#0, render_tiles::@2/render_tiles::tile_right_pixels#1 )
render_tiles::tile_left_pixels#2 = phi( render_tiles/render_tiles::tile_left_pixels#0, render_tiles::@2/render_tiles::tile_left_pixels#1 )
render_tiles::y#2 = phi( render_tiles/render_tiles::y#0, render_tiles::@2/render_tiles::y#1 )
render_tiles::$8 = render_tiles::y#2 < 4
if(render_tiles::$8) goto render_tiles::@2
render_tiles::$10 = render_tiles::y#2 < 4
if(render_tiles::$10) goto render_tiles::@2
to:render_tiles::@return
render_tiles::@2: scope:[render_tiles] from render_tiles::@1
render_tiles::ypos_inc_offset#2 = phi( render_tiles::@1/render_tiles::ypos_inc_offset#3 )
@ -536,8 +540,8 @@ render_tiles::@2: scope:[render_tiles] from render_tiles::@1
render_tiles::tile_right_pixels#1 = phi( render_tiles::@1/render_tiles::tile_right_pixels#2 )
render_tiles::y#3 = phi( render_tiles::@1/render_tiles::y#2 )
render_tiles::tile_left_pixels#1 = phi( render_tiles::@1/render_tiles::tile_left_pixels#2 )
render_tiles::$9 = render_tiles::tile_left_pixels#1[render_tiles::y#3] | render_tiles::tile_right_pixels#1[render_tiles::y#3]
render_tiles::pixels#0 = render_tiles::$9
render_tiles::$11 = render_tiles::tile_left_pixels#1[render_tiles::y#3] | render_tiles::tile_right_pixels#1[render_tiles::y#3]
render_tiles::pixels#0 = render_tiles::$11
*render_tiles::canvas1#2 = render_tiles::pixels#0
*render_tiles::canvas2#2 = render_tiles::pixels#0
render_tiles::canvas1#1 = render_tiles::canvas1#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2]
@ -5134,10 +5138,12 @@ void render(byte render::xcol , byte render::ypos , byte render::pixels)
number~ render::$0
byte~ render::$1
number~ render::$2
byte*~ render::$3
byte*~ render::$4
number~ render::$5
bool~ render::$6
word~ render::$3
word~ render::$4
byte*~ render::$5
byte*~ render::$6
number~ render::$7
bool~ render::$8
byte* render::canvas1
byte* render::canvas1#0
byte* render::canvas1#1
@ -5188,14 +5194,16 @@ byte render::ytile#0
void render_tiles(byte render_tiles::xcol , byte render_tiles::ytile , byte render_tiles::tile_left , byte render_tiles::tile_right)
number~ render_tiles::$0
byte*~ render_tiles::$1
bool~ render_tiles::$10
byte~ render_tiles::$11
number~ render_tiles::$2
byte*~ render_tiles::$3
byte~ render_tiles::$4
number~ render_tiles::$5
byte*~ render_tiles::$6
byte*~ render_tiles::$7
bool~ render_tiles::$8
byte~ render_tiles::$9
word~ render_tiles::$6
word~ render_tiles::$7
byte*~ render_tiles::$8
byte*~ render_tiles::$9
byte* render_tiles::canvas1
byte* render_tiles::canvas1#0
byte* render_tiles::canvas1#1
@ -5363,11 +5371,6 @@ byte splash_show::ypos#4
volatile byte top_sprites_color loadstore
volatile byte top_sprites_mc loadstore
Fixing inline constructor with render::$7 = (byte)render::$1 w= (byte)render::$2
Fixing inline constructor with render::$8 = (byte)render::render_index_xcol#0[RENDER_OFFSET_CANVAS_HI] w= (byte)render::render_index_xcol#0[RENDER_OFFSET_CANVAS_LO]
Fixing inline constructor with render_tiles::$10 = (byte)render_tiles::$4 w= (byte)render_tiles::$5
Fixing inline constructor with render_tiles::$11 = (byte)render_tiles::render_index_xcol#0[RENDER_OFFSET_CANVAS_HI] w= (byte)render_tiles::render_index_xcol#0[RENDER_OFFSET_CANVAS_LO]
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) $a00 in
Adding number conversion cast (unumber) $a80 in
Adding number conversion cast (unumber) $b00 in
@ -5419,15 +5422,15 @@ Adding number conversion cast (unumber) 4 in render::$0 = render::ypos#2 / 4
Adding number conversion cast (unumber) render::$0 in render::$0 = render::ypos#2 / (unumber)4
Adding number conversion cast (unumber) 2 in render::$2 = render::ytile#0 * 2
Adding number conversion cast (unumber) render::$2 in render::$2 = render::ytile#0 * (unumber)2
Adding number conversion cast (unumber) 3 in render::$5 = render::ypos#2 & 3
Adding number conversion cast (unumber) render::$5 in render::$5 = render::ypos#2 & (unumber)3
Adding number conversion cast (unumber) 3 in render::$7 = render::ypos#2 & 3
Adding number conversion cast (unumber) render::$7 in render::$7 = render::ypos#2 & (unumber)3
Adding number conversion cast (unumber) 4 in render_tiles::$0 = render_tiles::tile_left#1 * 4
Adding number conversion cast (unumber) render_tiles::$0 in render_tiles::$0 = render_tiles::tile_left#1 * (unumber)4
Adding number conversion cast (unumber) 4 in render_tiles::$2 = render_tiles::tile_right#1 * 4
Adding number conversion cast (unumber) render_tiles::$2 in render_tiles::$2 = render_tiles::tile_right#1 * (unumber)4
Adding number conversion cast (unumber) 2 in render_tiles::$5 = render_tiles::ytile#1 * 2
Adding number conversion cast (unumber) render_tiles::$5 in render_tiles::$5 = render_tiles::ytile#1 * (unumber)2
Adding number conversion cast (unumber) 4 in render_tiles::$8 = render_tiles::y#2 < 4
Adding number conversion cast (unumber) 4 in render_tiles::$10 = render_tiles::y#2 < 4
Adding number conversion cast (unumber) NUM_BOBS*2 in init_bobs_restore::$0 = init_bobs_restore::bob#2 < NUM_BOBS*2
Adding number conversion cast (unumber) 2 in init_bobs_restore::$0 = init_bobs_restore::bob#2 < (unumber)NUM_BOBS*2
Adding number conversion cast (unumber) $c in logic_tile_ptr = LEVEL_TILES+$40*$12+$c
@ -6124,16 +6127,10 @@ Simplifying constant integer cast 2
Simplifying constant integer cast $15
Simplifying constant integer cast 4
Simplifying constant integer cast 2
Simplifying constant integer cast render::$1
Simplifying constant integer cast render::render_index_xcol#0[RENDER_OFFSET_CANVAS_HI]
Simplifying constant integer cast render::render_index_xcol#0[RENDER_OFFSET_CANVAS_LO]
Simplifying constant integer cast 3
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast 2
Simplifying constant integer cast render_tiles::$4
Simplifying constant integer cast render_tiles::render_index_xcol#0[RENDER_OFFSET_CANVAS_HI]
Simplifying constant integer cast render_tiles::render_index_xcol#0[RENDER_OFFSET_CANVAS_LO]
Simplifying constant integer cast 4
Simplifying constant integer cast NUM_BOBS*(unumber)2
Simplifying constant integer cast 2
@ -6891,7 +6888,7 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in merge_code::$5 = merge_code::cycle_budget#5 - 1
Inferred type updated to byte in render::$0 = render::ypos#2 / 4
Inferred type updated to byte in render::$2 = render::ytile#0 * 2
Inferred type updated to byte in render::$5 = render::ypos#2 & 3
Inferred type updated to byte in render::$7 = render::ypos#2 & 3
Inferred type updated to byte in render_tiles::$0 = render_tiles::tile_left#1 * 4
Inferred type updated to byte in render_tiles::$2 = render_tiles::tile_right#1 * 4
Inferred type updated to byte in render_tiles::$5 = render_tiles::ytile#1 * 2
@ -7092,10 +7089,10 @@ Alias init_render_index::x_col#10 = init_render_index::x_col#9 init_render_index
Alias init_render_index::canvas#0 = init_render_index::$4
Alias init_render_index::ypos_inc_offset#2 = init_render_index::ypos_inc_offset#5
Alias render::ytile#0 = render::$0
Alias render::canvas_offset#0 = render::$8
Alias render::canvas1#0 = render::$3
Alias render::canvas2#0 = render::$4
Alias render::ypix#0 = render::$5
Alias render::canvas_offset#0 = render::$4
Alias render::canvas1#0 = render::$5
Alias render::canvas2#0 = render::$6
Alias render::ypix#0 = render::$7
Alias render::canvas1#2 = render::canvas1#4 render::canvas1#3
Alias render::ypos_inc_offset#2 = render::ypos_inc_offset#3
Alias render::canvas2#2 = render::canvas2#4 render::canvas2#3
@ -7104,16 +7101,16 @@ Alias render::ypix#1 = render::ypix#2
Alias render::pixels#2 = render::pixels#5 render::pixels#3
Alias render_tiles::tile_left_pixels#0 = render_tiles::$1
Alias render_tiles::tile_right_pixels#0 = render_tiles::$3
Alias render_tiles::canvas_offset#0 = render_tiles::$11
Alias render_tiles::canvas1#0 = render_tiles::$6
Alias render_tiles::canvas2#0 = render_tiles::$7
Alias render_tiles::canvas_offset#0 = render_tiles::$7
Alias render_tiles::canvas1#0 = render_tiles::$8
Alias render_tiles::canvas2#0 = render_tiles::$9
Alias render_tiles::tile_left_pixels#1 = render_tiles::tile_left_pixels#2
Alias render_tiles::y#2 = render_tiles::y#3
Alias render_tiles::tile_right_pixels#1 = render_tiles::tile_right_pixels#2
Alias render_tiles::canvas1#2 = render_tiles::canvas1#3
Alias render_tiles::canvas2#2 = render_tiles::canvas2#3
Alias render_tiles::ypos_inc_offset#2 = render_tiles::ypos_inc_offset#3
Alias render_tiles::pixels#0 = render_tiles::$9
Alias render_tiles::pixels#0 = render_tiles::$11
Alias init_bobs_restore::bob_restore#5 = init_bobs_restore::bob_restore#6
Alias init_bobs_restore::bob#2 = init_bobs_restore::bob#5
Alias init_bobs_restore::bob_restore#2 = init_bobs_restore::bob_restore#4 init_bobs_restore::bob_restore#3
@ -7415,8 +7412,8 @@ Simple Condition init_render_index::$0 [109] if(init_render_index::x_col#2<$1a)
Simple Condition init_render_index::$2 [113] if(init_render_index::x_col#2<$18) goto init_render_index::@4
Simple Condition init_render_index::$3 [124] if(init_render_index::y_pos#2<$94) goto init_render_index::@6
Simple Condition init_render_index::$8 [135] if(init_render_index::ypos_inc_offset#2<$17) goto init_render_index::@8
Simple Condition render::$6 [157] if(render::i#2<render::ypix#0) goto render::@2
Simple Condition render_tiles::$8 [181] if(render_tiles::y#2<4) goto render_tiles::@2
Simple Condition render::$8 [157] if(render::i#2<render::ypix#0) goto render::@2
Simple Condition render_tiles::$10 [181] if(render_tiles::y#2<4) goto render_tiles::@2
Simple Condition init_bobs_restore::$0 [194] if(init_bobs_restore::bob#2<NUM_BOBS*2) goto init_bobs_restore::@2
Simple Condition init_bobs_restore::$1 [201] if(init_bobs_restore::i#2<SIZE_BOB_RESTORE) goto init_bobs_restore::@5
Simple Condition done_run::$1 [224] if(done_run::i#2<$2f) goto done_run::@4
@ -7810,8 +7807,6 @@ Simplifying constant integer cast $1c0
Simplifying constant integer cast $240
Simplifying constant integer cast $2c0
Simplifying constant integer cast $340
Simplifying constant integer cast render::$2
Simplifying constant integer cast render_tiles::$5
Simplifying constant integer cast 0
Simplifying constant integer cast $32+(unumber)1
Simplifying constant integer cast 1
@ -8099,8 +8094,8 @@ Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Inlining Noop Cast [8] memset::$4 = (byte*)memset::str#6 keeping memset::str#6
Inlining Noop Cast [10] memset::dst#0 = (byte*)memset::str#6 keeping memset::str#6
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [110] render::render_index_xcol#0 = (byte*)render::$7 keeping render::render_index_xcol#0
Inlining Noop Cast [132] render_tiles::render_index_xcol#0 = (byte*)render_tiles::$10 keeping render_tiles::render_index_xcol#0
Inlining Noop Cast [110] render::render_index_xcol#0 = (byte*)render::$3 keeping render::render_index_xcol#0
Inlining Noop Cast [132] render_tiles::render_index_xcol#0 = (byte*)render_tiles::$6 keeping render_tiles::render_index_xcol#0
Successful SSA optimization Pass2NopCastInlining
Rewriting multiplication to use shift [83] init_render_index::$9 = init_render_index::x_col#2 * SIZEOF_POINTER
Rewriting multiplication to use shift [88] init_render_index::$10 = init_render_index::$11 * SIZEOF_WORD
@ -30578,11 +30573,11 @@ render: {
// [1000] render::$2 = render::ytile#0 << 1 -- vbuaa=vbuyy_rol_1
tya
asl
// char * render_index_xcol = (char*){ BYTE1(RENDER_INDEX) + xcol, ytile*2 }
// MAKEWORD( BYTE1(RENDER_INDEX) + xcol, ytile*2 )
// [1001] render::render_index_xcol#0 = render::$1 w= render::$2 -- vwuz1=vbuxx_word_vbuaa
stx.z render_index_xcol+1
sta.z render_index_xcol
// unsigned int canvas_offset = { render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] }
// unsigned int canvas_offset = MAKEWORD( render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] )
// [1002] render::canvas_offset#0 = ((byte*)render::render_index_xcol#0)[RENDER_OFFSET_CANVAS_HI] w= *((byte*)render::render_index_xcol#0) -- vwuz1=pbuz2_derefidx_vbuc1_word__deref_pbuz2
ldy #RENDER_OFFSET_CANVAS_HI
lda (render_index_xcol),y
@ -30774,11 +30769,11 @@ render_tiles: {
// [1029] render_tiles::$5 = render_tiles::ytile#0 << 1 -- vbuaa=vbuz1_rol_1
lda.z ytile
asl
// char * render_index_xcol = (char*){ BYTE1(RENDER_INDEX) + xcol, ytile*2 }
// MAKEWORD( BYTE1(RENDER_INDEX) + xcol, ytile*2 )
// [1030] render_tiles::render_index_xcol#0 = render_tiles::$4 w= render_tiles::$5 -- vwuz1=vbuxx_word_vbuaa
stx.z render_index_xcol+1
sta.z render_index_xcol
// unsigned int canvas_offset = {render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] }
// unsigned int canvas_offset = MAKEWORD( render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] )
// [1031] render_tiles::canvas_offset#0 = ((byte*)render_tiles::render_index_xcol#0)[RENDER_OFFSET_CANVAS_HI] w= *((byte*)render_tiles::render_index_xcol#0) -- vwuz1=pbuz2_derefidx_vbuc1_word__deref_pbuz2
ldy #RENDER_OFFSET_CANVAS_HI
lda (render_index_xcol),y

View File

@ -23,7 +23,7 @@
main: {
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
.label col00 = COLS+$c*$28+$13
.label __4 = $f
.label __6 = $f
.label xw = $17
.label yw = $19
.label angle_w = $f
@ -54,12 +54,12 @@ main: {
lda #-$13
sta.z x
__b2:
// signed word xw = (signed word)(word){ (byte)x, 0 }
// MAKEWORD( (byte)x, 0 )
lda #0
ldy.z x
sty.z xw+1
sta.z xw
// signed word yw = (signed word)(word){ (byte)y, 0 }
// MAKEWORD( (byte)y, 0 )
ldy.z y
sty.z yw+1
sta.z yw
@ -69,13 +69,13 @@ main: {
// angle_w+0x0080
lda #$80
clc
adc.z __4
sta.z __4
adc.z __6
sta.z __6
bcc !+
inc.z __4+1
inc.z __6+1
!:
// byte ang_w = BYTE1(angle_w+0x0080)
ldx.z __4+1
ldx.z __6+1
// diff(ang_w, *screen_ref)
ldy #0
lda (screen_ref),y

View File

@ -30,18 +30,18 @@ main::@2: scope:[main] from main::@1 main::@8
to:main::@7
main::@7: scope:[main] from main::@2
[12] main::angle_w#0 = atan2_16::return#2
[13] main::$4 = main::angle_w#0 + $80
[14] main::ang_w#0 = byte1 main::$4
[13] main::$6 = main::angle_w#0 + $80
[14] main::ang_w#0 = byte1 main::$6
[15] diff::bb1#0 = main::ang_w#0
[16] diff::bb2#0 = *main::screen_ref#2
[17] call diff
[18] diff::return#0 = diff::return#1
to:main::@8
main::@8: scope:[main] from main::@7
[19] main::$6 = diff::return#0
[20] main::diff_sum#1 = main::diff_sum#2 + main::$6
[21] main::$7 = main::ang_w#0 - *main::screen_ref#2
[22] *main::screen#2 = main::$7
[19] main::$8 = diff::return#0
[20] main::diff_sum#1 = main::diff_sum#2 + main::$8
[21] main::$9 = main::ang_w#0 - *main::screen_ref#2
[22] *main::screen#2 = main::$9
[23] main::screen#1 = ++ main::screen#2
[24] main::screen_ref#1 = ++ main::screen_ref#2
[25] main::x#1 = ++ main::x#2

View File

@ -408,8 +408,12 @@ main::@2: scope:[main] from main::@1 main::@10
main::screen_ref#4 = phi( main::@1/main::screen_ref#5, main::@10/main::screen_ref#1 )
main::y#2 = phi( main::@1/main::y#4, main::@10/main::y#5 )
main::x#2 = phi( main::@1/main::x#0, main::@10/main::x#1 )
main::xw#0 = (signed word)(word){ (byte)main::x#2, 0 }
main::yw#0 = (signed word)(word){ (byte)main::y#2, 0 }
main::$13 = (byte)main::x#2
main::$3 = main::$13 w= 0
main::xw#0 = (signed word)main::$3
main::$14 = (byte)main::y#2
main::$4 = main::$14 w= 0
main::yw#0 = (signed word)main::$4
atan2_16::x#0 = main::xw#0
atan2_16::y#0 = main::yw#0
call atan2_16
@ -423,11 +427,11 @@ main::@9: scope:[main] from main::@2
main::diff_sum#4 = phi( main::@2/main::diff_sum#6 )
main::screen_ref#2 = phi( main::@2/main::screen_ref#4 )
atan2_16::return#4 = phi( main::@2/atan2_16::return#2 )
main::$3 = atan2_16::return#4
main::angle_w#0 = main::$3
main::$4 = main::angle_w#0 + $80
main::$5 = byte1 main::$4
main::ang_w#0 = main::$5
main::$5 = atan2_16::return#4
main::angle_w#0 = main::$5
main::$6 = main::angle_w#0 + $80
main::$7 = byte1 main::$6
main::ang_w#0 = main::$7
diff::bb1#0 = main::ang_w#0
diff::bb2#0 = *main::screen_ref#2
call diff
@ -442,15 +446,15 @@ main::@10: scope:[main] from main::@9
main::ang_w#1 = phi( main::@9/main::ang_w#0 )
main::diff_sum#2 = phi( main::@9/main::diff_sum#4 )
diff::return#3 = phi( main::@9/diff::return#0 )
main::$6 = diff::return#3
main::diff_sum#1 = main::diff_sum#2 + main::$6
main::$7 = main::ang_w#1 - *main::screen_ref#3
*main::screen#2 = main::$7
main::$8 = diff::return#3
main::diff_sum#1 = main::diff_sum#2 + main::$8
main::$9 = main::ang_w#1 - *main::screen_ref#3
*main::screen#2 = main::$9
main::screen#1 = ++ main::screen#2
main::screen_ref#1 = ++ main::screen_ref#3
main::x#1 = main::x#3 + rangenext(-$13,$14)
main::$8 = main::x#1 != rangelast(-$13,$14)
if(main::$8) goto main::@2
main::$10 = main::x#1 != rangelast(-$13,$14)
if(main::$10) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@10
main::screen#6 = phi( main::@10/main::screen#1 )
@ -459,8 +463,8 @@ main::@3: scope:[main] from main::@10
main::diff_sum#5 = phi( main::@10/main::diff_sum#1 )
main::y#3 = phi( main::@10/main::y#5 )
main::y#1 = main::y#3 + rangenext(-$c,$c)
main::$9 = main::y#1 != rangelast(-$c,$c)
if(main::$9) goto main::@1
main::$11 = main::y#1 != rangelast(-$c,$c)
if(main::$11) goto main::@1
to:main::@4
main::@4: scope:[main] from main::@3
print_char_cursor#27 = phi( main::@3/print_char_cursor#30 )
@ -814,13 +818,17 @@ byte* init_font_hex::proto_lo#3
byte* init_font_hex::proto_lo#4
void main()
byte~ main::$1
bool~ main::$10
bool~ main::$11
byte~ main::$13
byte~ main::$14
word~ main::$3
number~ main::$4
byte~ main::$5
byte~ main::$6
word~ main::$4
word~ main::$5
number~ main::$6
byte~ main::$7
bool~ main::$8
bool~ main::$9
byte~ main::$8
byte~ main::$9
byte main::ang_w
byte main::ang_w#0
byte main::ang_w#1
@ -965,9 +973,6 @@ word print_uint::w#0
word print_uint::w#1
word print_uint::w#2
Fixing inline constructor with main::$11 = (byte)(byte)main::x#2 w= (byte)0
Fixing inline constructor with main::$12 = (byte)(byte)main::y#2 w= (byte)0
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) $13 in
Adding number conversion cast (unumber) $c*$28 in
Adding number conversion cast (unumber) 0 in init_font_hex::charset#2[init_font_hex::idx#0] = 0
@ -1007,8 +1012,10 @@ Adding number conversion cast (unumber) main::toD0181_$4 in main::toD0181_$4 = m
Adding number conversion cast (unumber) $f in main::toD0181_$5 = main::toD0181_$4 & $f
Adding number conversion cast (unumber) main::toD0181_$5 in main::toD0181_$5 = main::toD0181_$4 & (unumber)$f
Adding number conversion cast (unumber) main::toD0181_$6 in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
Adding number conversion cast (unumber) $80 in main::$4 = main::angle_w#0 + $80
Adding number conversion cast (unumber) main::$4 in main::$4 = main::angle_w#0 + (unumber)$80
Adding number conversion cast (unumber) 0 in main::$3 = main::$13 w= 0
Adding number conversion cast (unumber) 0 in main::$4 = main::$14 w= 0
Adding number conversion cast (unumber) $80 in main::$6 = main::angle_w#0 + $80
Adding number conversion cast (unumber) main::$6 in main::$6 = main::angle_w#0 + (unumber)$80
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast init_font_hex::charset#2[init_font_hex::idx#0] = (unumber)0
Inlining cast init_font_hex::charset#4[init_font_hex::idx#6] = (unumber)0
@ -1049,9 +1056,7 @@ Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast (byte)main::x#2
Simplifying constant integer cast 0
Simplifying constant integer cast (byte)main::y#2
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant pointer cast (byte*) 1024
@ -1087,6 +1092,8 @@ Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to word in atan2_16::$12 = $8000 - atan2_16::angle#9
@ -1096,7 +1103,7 @@ Inferred type updated to word in main::toD0181_$1 = main::toD0181_$0 * 4
Inferred type updated to byte in main::toD0181_$4 = main::toD0181_$3 / 4
Inferred type updated to byte in main::toD0181_$5 = main::toD0181_$4 & $f
Inferred type updated to byte in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
Inferred type updated to word in main::$4 = main::angle_w#0 + $80
Inferred type updated to word in main::$6 = main::angle_w#0 + $80
Inversing boolean not [59] atan2_16::$17 = atan2_16::yi#3 != 0 from [58] atan2_16::$16 = atan2_16::yi#3 == 0
Inversing boolean not [68] atan2_16::$11 = atan2_16::x#4 >= 0 from [67] atan2_16::$10 = atan2_16::x#4 < 0
Inversing boolean not [79] atan2_16::$19 = 0 == atan2_16::shift#4 from [78] atan2_16::$24 = 0 != atan2_16::shift#4
@ -1166,8 +1173,8 @@ Alias main::screen#2 = main::screen#3 main::screen#4
Alias main::x#2 = main::x#4 main::x#3
Alias main::y#2 = main::y#6 main::y#5 main::y#3
Alias print_char_cursor#27 = print_char_cursor#33 print_char_cursor#34 print_char_cursor#32 print_char_cursor#30
Alias main::angle_w#0 = main::$3
Alias main::ang_w#0 = main::$5 main::ang_w#1
Alias main::angle_w#0 = main::$5
Alias main::ang_w#0 = main::$7 main::ang_w#1
Alias diff::return#0 = diff::return#3
Alias main::diff_sum#1 = main::diff_sum#5 main::diff_sum#3
Alias main::screen_ref#1 = main::screen_ref#6
@ -1242,9 +1249,9 @@ Simple Condition atan2_16::$19 [59] if(0==atan2_16::shift#2) goto atan2_16::@17
Simple Condition atan2_16::$20 [62] if(atan2_16::yi#3>=0) goto atan2_16::@18
Simple Condition atan2_16::$21 [76] if(atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@10
Simple Condition atan2_16::$14 [79] if(atan2_16::y#0>=0) goto atan2_16::@8
Simple Condition main::$8 [150] if(main::x#1!=rangelast(-$13,$14)) goto main::@2
Simple Condition main::$9 [153] if(main::y#1!=rangelast(-$c,$c)) goto main::@1
Simple Condition diff::$0 [163] if(diff::bb1#0<diff::bb2#0) goto diff::@1
Simple Condition main::$10 [152] if(main::x#1!=rangelast(-$13,$14)) goto main::@2
Simple Condition main::$11 [155] if(main::y#1!=rangelast(-$c,$c)) goto main::@1
Simple Condition diff::$0 [165] if(diff::bb1#0<diff::bb2#0) goto diff::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Negating conditional jump and destination [76] if(atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@12
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
@ -1270,7 +1277,7 @@ Constant main::toD0181_$7 = (word)main::toD0181_screen#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (word)main::toD0181_gfx#0 in [115] main::toD0181_$3 = byte1 (word)main::toD0181_gfx#0
Successful SSA optimization Pass2ConstantValues
if() condition always true - replacing block destination [158] if(true) goto main::@6
if() condition always true - replacing block destination [160] if(true) goto main::@6
Successful SSA optimization Pass2ConstantIfs
Resolved ranged next value [17] init_font_hex::i#1 = ++ init_font_hex::i#2 to ++
Resolved ranged comparison value [19] if(init_font_hex::i#1!=rangelast(0,4)) goto init_font_hex::@3 to 5
@ -1280,10 +1287,10 @@ Resolved ranged next value [30] init_font_hex::c#1 = ++ init_font_hex::c#6 to ++
Resolved ranged comparison value [32] if(init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 to $10
Resolved ranged next value [74] atan2_16::i#1 = ++ atan2_16::i#2 to ++
Resolved ranged comparison value [76] if(atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@12 to CORDIC_ITERATIONS_16-1+1
Resolved ranged next value [148] main::x#1 = ++ main::x#2 to ++
Resolved ranged comparison value [150] if(main::x#1!=rangelast(-$13,$14)) goto main::@2 to $15
Resolved ranged next value [151] main::y#1 = ++ main::y#4 to ++
Resolved ranged comparison value [153] if(main::y#1!=rangelast(-$c,$c)) goto main::@1 to $d
Resolved ranged next value [150] main::x#1 = ++ main::x#2 to ++
Resolved ranged comparison value [152] if(main::x#1!=rangelast(-$13,$14)) goto main::@2 to $15
Resolved ranged next value [153] main::y#1 = ++ main::y#4 to ++
Resolved ranged comparison value [155] if(main::y#1!=rangelast(-$c,$c)) goto main::@1 to $d
Simplifying expression containing zero init_font_hex::charset#2 in [8] init_font_hex::charset#2[init_font_hex::idx#0] = 0
Successful SSA optimization PassNSimplifyExpressionWithZero
Removing unused block main::@return
@ -1302,8 +1309,8 @@ Adding number conversion cast (unumber) $10 in [18] if(init_font_hex::c1#1!=$10)
Adding number conversion cast (unumber) $10 in [21] if(init_font_hex::c#1!=$10) goto init_font_hex::@1
Adding number conversion cast (unumber) CORDIC_ITERATIONS_16-1+1 in [54] if(atan2_16::i#1==CORDIC_ITERATIONS_16-1+1) goto atan2_16::@12
Adding number conversion cast (unumber) 1 in [54] if(atan2_16::i#1==(unumber)CORDIC_ITERATIONS_16-1+1) goto atan2_16::@12
Adding number conversion cast (snumber) $15 in [111] if(main::x#1!=$15) goto main::@2
Adding number conversion cast (snumber) $d in [113] if(main::y#1!=$d) goto main::@1
Adding number conversion cast (snumber) $15 in [113] if(main::x#1!=$15) goto main::@2
Adding number conversion cast (snumber) $d in [115] if(main::y#1!=$d) goto main::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast 5
Simplifying constant integer cast $10
@ -1344,8 +1351,11 @@ Constant right-side identified [78] main::toD0181_return#0 = main::toD0181_$2 |
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant main::toD0181_return#0 = main::toD0181_$2|main::toD0181_$5
Successful SSA optimization Pass2ConstantIdentification
Inlining Noop Cast [82] main::xw#0 = (signed word)main::$11 keeping main::xw#0
Inlining Noop Cast [84] main::yw#0 = (signed word)main::$12 keeping main::yw#0
Inlining Noop Cast [81] main::$13 = (byte)main::x#2 keeping main::x#2
Inlining Noop Cast [84] main::$14 = (byte)main::y#4 keeping main::y#4
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [83] main::xw#0 = (signed word)main::$3 keeping main::xw#0
Inlining Noop Cast [86] main::yw#0 = (signed word)main::$4 keeping main::yw#0
Successful SSA optimization Pass2NopCastInlining
Rewriting division to use shift [31] atan2_16::angle#1 = atan2_16::angle#6 / 2
Rewriting multiplication to use shift [45] atan2_16::$22 = atan2_16::i#2 * SIZEOF_WORD
@ -1549,18 +1559,18 @@ main::@2: scope:[main] from main::@1 main::@8
to:main::@7
main::@7: scope:[main] from main::@2
[12] main::angle_w#0 = atan2_16::return#2
[13] main::$4 = main::angle_w#0 + $80
[14] main::ang_w#0 = byte1 main::$4
[13] main::$6 = main::angle_w#0 + $80
[14] main::ang_w#0 = byte1 main::$6
[15] diff::bb1#0 = main::ang_w#0
[16] diff::bb2#0 = *main::screen_ref#2
[17] call diff
[18] diff::return#0 = diff::return#1
to:main::@8
main::@8: scope:[main] from main::@7
[19] main::$6 = diff::return#0
[20] main::diff_sum#1 = main::diff_sum#2 + main::$6
[21] main::$7 = main::ang_w#0 - *main::screen_ref#2
[22] *main::screen#2 = main::$7
[19] main::$8 = diff::return#0
[20] main::diff_sum#1 = main::diff_sum#2 + main::$8
[21] main::$9 = main::ang_w#0 - *main::screen_ref#2
[22] *main::screen#2 = main::$9
[23] main::screen#1 = ++ main::screen#2
[24] main::screen_ref#1 = ++ main::screen_ref#2
[25] main::x#1 = ++ main::x#2
@ -1874,9 +1884,9 @@ byte* init_font_hex::proto_lo
byte* init_font_hex::proto_lo#1 500.5
byte* init_font_hex::proto_lo#4 923.3076923076923
void main()
word~ main::$4 202.0
byte~ main::$6 202.0
byte~ main::$7 202.0
word~ main::$6 202.0
byte~ main::$8 202.0
byte~ main::$9 202.0
byte main::ang_w
byte main::ang_w#0 43.285714285714285
word main::angle_w
@ -1959,13 +1969,13 @@ Added variable atan2_16::x#0 to live range equivalence class [ atan2_16::x#0 ]
Added variable atan2_16::y#0 to live range equivalence class [ atan2_16::y#0 ]
Added variable atan2_16::return#2 to live range equivalence class [ atan2_16::return#2 ]
Added variable main::angle_w#0 to live range equivalence class [ main::angle_w#0 ]
Added variable main::$4 to live range equivalence class [ main::$4 ]
Added variable main::$6 to live range equivalence class [ main::$6 ]
Added variable main::ang_w#0 to live range equivalence class [ main::ang_w#0 ]
Added variable diff::bb1#0 to live range equivalence class [ diff::bb1#0 ]
Added variable diff::bb2#0 to live range equivalence class [ diff::bb2#0 ]
Added variable diff::return#0 to live range equivalence class [ diff::return#0 ]
Added variable main::$6 to live range equivalence class [ main::$6 ]
Added variable main::$7 to live range equivalence class [ main::$7 ]
Added variable main::$8 to live range equivalence class [ main::$8 ]
Added variable main::$9 to live range equivalence class [ main::$9 ]
Added variable print_uint::w#0 to live range equivalence class [ print_uint::w#0 ]
Added variable init_font_hex::$0 to live range equivalence class [ init_font_hex::$0 ]
Added variable init_font_hex::$1 to live range equivalence class [ init_font_hex::$1 ]
@ -2006,13 +2016,13 @@ Complete equivalence classes
[ atan2_16::y#0 ]
[ atan2_16::return#2 ]
[ main::angle_w#0 ]
[ main::$4 ]
[ main::$6 ]
[ main::ang_w#0 ]
[ diff::bb1#0 ]
[ diff::bb2#0 ]
[ diff::return#0 ]
[ main::$6 ]
[ main::$7 ]
[ main::$8 ]
[ main::$9 ]
[ print_uint::w#0 ]
[ init_font_hex::$0 ]
[ init_font_hex::$1 ]
@ -2052,13 +2062,13 @@ Allocated zp[2]:43 [ atan2_16::x#0 ]
Allocated zp[2]:45 [ atan2_16::y#0 ]
Allocated zp[2]:47 [ atan2_16::return#2 ]
Allocated zp[2]:49 [ main::angle_w#0 ]
Allocated zp[2]:51 [ main::$4 ]
Allocated zp[2]:51 [ main::$6 ]
Allocated zp[1]:53 [ main::ang_w#0 ]
Allocated zp[1]:54 [ diff::bb1#0 ]
Allocated zp[1]:55 [ diff::bb2#0 ]
Allocated zp[1]:56 [ diff::return#0 ]
Allocated zp[1]:57 [ main::$6 ]
Allocated zp[1]:58 [ main::$7 ]
Allocated zp[1]:57 [ main::$8 ]
Allocated zp[1]:58 [ main::$9 ]
Allocated zp[2]:59 [ print_uint::w#0 ]
Allocated zp[1]:61 [ init_font_hex::$0 ]
Allocated zp[1]:62 [ init_font_hex::$1 ]
@ -2076,7 +2086,7 @@ Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::x
Statement [9] atan2_16::y#0 = (signed word)main::yw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [11] atan2_16::return#2 = atan2_16::return#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [12] main::angle_w#0 = atan2_16::return#2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a
Statement [13] main::$4 = main::angle_w#0 + $80 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$4 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$4 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a
Statement [13] main::$6 = main::angle_w#0 + $80 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$6 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$6 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a
Statement [16] diff::bb2#0 = *main::screen_ref#2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#4 main::y#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#2 main::x#1 ]
@ -2084,9 +2094,9 @@ Removing always clobbered register reg byte a as potential for zp[1]:53 [ main::
Removing always clobbered register reg byte y as potential for zp[1]:53 [ main::ang_w#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:54 [ diff::bb1#0 ]
Removing always clobbered register reg byte y as potential for zp[1]:54 [ diff::bb1#0 ]
Statement [20] main::diff_sum#1 = main::diff_sum#2 + main::$6 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] ( [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] { } ) always clobbers reg byte a
Statement [21] main::$7 = main::ang_w#0 - *main::screen_ref#2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$7 ] ( [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$7 ] { } ) always clobbers reg byte a reg byte y
Statement [22] *main::screen#2 = main::$7 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] ( [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] { } ) always clobbers reg byte y
Statement [20] main::diff_sum#1 = main::diff_sum#2 + main::$8 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] ( [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] { } ) always clobbers reg byte a
Statement [21] main::$9 = main::ang_w#0 - *main::screen_ref#2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$9 ] ( [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$9 ] { } ) always clobbers reg byte a reg byte y
Statement [22] *main::screen#2 = main::$9 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] ( [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] { } ) always clobbers reg byte y
Statement [29] print_uint::w#0 = main::diff_sum#1 [ print_uint::w#0 ] ( [ print_uint::w#0 ] { { print_uint::w#0 = main::diff_sum#1 } } ) always clobbers reg byte a
Statement [35] *init_font_hex::charset#2 = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp[1]:12 [ init_font_hex::c#6 init_font_hex::c#1 ]
@ -2146,11 +2156,11 @@ Statement [8] atan2_16::x#0 = (signed word)main::xw#0 [ main::y#4 main::x#2 main
Statement [9] atan2_16::y#0 = (signed word)main::yw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [11] atan2_16::return#2 = atan2_16::return#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [12] main::angle_w#0 = atan2_16::return#2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a
Statement [13] main::$4 = main::angle_w#0 + $80 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$4 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$4 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a
Statement [13] main::$6 = main::angle_w#0 + $80 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$6 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$6 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a
Statement [16] diff::bb2#0 = *main::screen_ref#2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a reg byte y
Statement [20] main::diff_sum#1 = main::diff_sum#2 + main::$6 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] ( [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] { } ) always clobbers reg byte a
Statement [21] main::$7 = main::ang_w#0 - *main::screen_ref#2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$7 ] ( [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$7 ] { } ) always clobbers reg byte a reg byte y
Statement [22] *main::screen#2 = main::$7 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] ( [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] { } ) always clobbers reg byte y
Statement [20] main::diff_sum#1 = main::diff_sum#2 + main::$8 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] ( [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] { } ) always clobbers reg byte a
Statement [21] main::$9 = main::ang_w#0 - *main::screen_ref#2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$9 ] ( [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$9 ] { } ) always clobbers reg byte a reg byte y
Statement [22] *main::screen#2 = main::$9 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] ( [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] { } ) always clobbers reg byte y
Statement [29] print_uint::w#0 = main::diff_sum#1 [ print_uint::w#0 ] ( [ print_uint::w#0 ] { { print_uint::w#0 = main::diff_sum#1 } } ) always clobbers reg byte a
Statement [35] *init_font_hex::charset#2 = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y
Statement [37] init_font_hex::$0 = init_font_hex::proto_hi#6[init_font_hex::i#2] << 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a
@ -2222,13 +2232,13 @@ Potential registers zp[2]:43 [ atan2_16::x#0 ] : zp[2]:43 ,
Potential registers zp[2]:45 [ atan2_16::y#0 ] : zp[2]:45 ,
Potential registers zp[2]:47 [ atan2_16::return#2 ] : zp[2]:47 ,
Potential registers zp[2]:49 [ main::angle_w#0 ] : zp[2]:49 ,
Potential registers zp[2]:51 [ main::$4 ] : zp[2]:51 ,
Potential registers zp[2]:51 [ main::$6 ] : zp[2]:51 ,
Potential registers zp[1]:53 [ main::ang_w#0 ] : zp[1]:53 , reg byte x ,
Potential registers zp[1]:54 [ diff::bb1#0 ] : zp[1]:54 , reg byte x ,
Potential registers zp[1]:55 [ diff::bb2#0 ] : zp[1]:55 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:56 [ diff::return#0 ] : zp[1]:56 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:57 [ main::$6 ] : zp[1]:57 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:58 [ main::$7 ] : zp[1]:58 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:57 [ main::$8 ] : zp[1]:57 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:58 [ main::$9 ] : zp[1]:58 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:59 [ print_uint::w#0 ] : zp[2]:59 ,
Potential registers zp[1]:61 [ init_font_hex::$0 ] : zp[1]:61 , reg byte x , reg byte y ,
Potential registers zp[1]:62 [ init_font_hex::$1 ] : zp[1]:62 , reg byte a , reg byte x , reg byte y ,
@ -2244,7 +2254,7 @@ Uplift Scope [atan2_16] 28,666,670.58: zp[1]:29 [ atan2_16::shift#2 atan2_16::sh
Uplift Scope [init_font_hex] 21,668.83: zp[1]:18 [ init_font_hex::i#2 init_font_hex::i#1 ] 20,002: zp[1]:62 [ init_font_hex::$1 ] 20,002: zp[1]:63 [ init_font_hex::$2 ] 11,501.6: zp[1]:19 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 10,001: zp[1]:61 [ init_font_hex::$0 ] 2,002: zp[1]:64 [ init_font_hex::idx#3 ] 1,634.97: zp[1]:17 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 1,631.57: zp[2]:13 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 1,423.81: zp[2]:15 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 634.17: zp[2]:10 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 162.13: zp[1]:12 [ init_font_hex::c#6 init_font_hex::c#1 ]
Uplift Scope [diff] 4,705: zp[1]:34 [ diff::return#1 diff::$4 diff::$2 ] 1,552: zp[1]:55 [ diff::bb2#0 ] 1,034.67: zp[1]:54 [ diff::bb1#0 ] 202: zp[1]:56 [ diff::return#0 ]
Uplift Scope [print_char] 1,607: zp[1]:36 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
Uplift Scope [main] 202: zp[2]:49 [ main::angle_w#0 ] 202: zp[2]:51 [ main::$4 ] 202: zp[1]:57 [ main::$6 ] 202: zp[1]:58 [ main::$7 ] 161.6: zp[1]:3 [ main::x#2 main::x#1 ] 86.44: zp[2]:4 [ main::screen_ref#2 main::screen_ref#5 main::screen_ref#1 ] 74.94: zp[2]:8 [ main::screen#2 main::screen#5 main::screen#1 ] 60.09: zp[2]:6 [ main::diff_sum#2 main::diff_sum#7 main::diff_sum#1 ] 50.5: zp[2]:39 [ main::xw#0 ] 50.5: zp[2]:41 [ main::yw#0 ] 43.29: zp[1]:53 [ main::ang_w#0 ] 17.46: zp[1]:2 [ main::y#4 main::y#1 ]
Uplift Scope [main] 202: zp[2]:49 [ main::angle_w#0 ] 202: zp[2]:51 [ main::$6 ] 202: zp[1]:57 [ main::$8 ] 202: zp[1]:58 [ main::$9 ] 161.6: zp[1]:3 [ main::x#2 main::x#1 ] 86.44: zp[2]:4 [ main::screen_ref#2 main::screen_ref#5 main::screen_ref#1 ] 74.94: zp[2]:8 [ main::screen#2 main::screen#5 main::screen#1 ] 60.09: zp[2]:6 [ main::diff_sum#2 main::diff_sum#7 main::diff_sum#1 ] 50.5: zp[2]:39 [ main::xw#0 ] 50.5: zp[2]:41 [ main::yw#0 ] 43.29: zp[1]:53 [ main::ang_w#0 ] 17.46: zp[1]:2 [ main::y#4 main::y#1 ]
Uplift Scope [] 1,263: zp[2]:37 [ print_char_cursor#19 print_char_cursor#26 print_char_cursor#20 ]
Uplift Scope [print_uchar] 202: zp[1]:67 [ print_uchar::$0 ] 202: zp[1]:68 [ print_uchar::$2 ] 100: zp[1]:35 [ print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
Uplift Scope [print_uint] 8: zp[2]:59 [ print_uint::w#0 ]
@ -2260,7 +2270,7 @@ Limited combination testing to 100 combinations of 6912 possible.
Uplifting [diff] best 1135633 combination reg byte a [ diff::return#1 diff::$4 diff::$2 ] reg byte a [ diff::bb2#0 ] reg byte x [ diff::bb1#0 ] reg byte a [ diff::return#0 ]
Limited combination testing to 100 combinations of 128 possible.
Uplifting [print_char] best 1135624 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
Uplifting [main] best 1133724 combination zp[2]:49 [ main::angle_w#0 ] zp[2]:51 [ main::$4 ] reg byte a [ main::$6 ] reg byte a [ main::$7 ] zp[1]:3 [ main::x#2 main::x#1 ] zp[2]:4 [ main::screen_ref#2 main::screen_ref#5 main::screen_ref#1 ] zp[2]:8 [ main::screen#2 main::screen#5 main::screen#1 ] zp[2]:6 [ main::diff_sum#2 main::diff_sum#7 main::diff_sum#1 ] zp[2]:39 [ main::xw#0 ] zp[2]:41 [ main::yw#0 ] reg byte x [ main::ang_w#0 ] zp[1]:2 [ main::y#4 main::y#1 ]
Uplifting [main] best 1133724 combination zp[2]:49 [ main::angle_w#0 ] zp[2]:51 [ main::$6 ] reg byte a [ main::$8 ] reg byte a [ main::$9 ] zp[1]:3 [ main::x#2 main::x#1 ] zp[2]:4 [ main::screen_ref#2 main::screen_ref#5 main::screen_ref#1 ] zp[2]:8 [ main::screen#2 main::screen#5 main::screen#1 ] zp[2]:6 [ main::diff_sum#2 main::diff_sum#7 main::diff_sum#1 ] zp[2]:39 [ main::xw#0 ] zp[2]:41 [ main::yw#0 ] reg byte x [ main::ang_w#0 ] zp[1]:2 [ main::y#4 main::y#1 ]
Limited combination testing to 100 combinations of 128 possible.
Uplifting [] best 1133724 combination zp[2]:37 [ print_char_cursor#19 print_char_cursor#26 print_char_cursor#20 ]
Uplifting [print_uchar] best 1133706 combination reg byte a [ print_uchar::$0 ] reg byte x [ print_uchar::$2 ] reg byte x [ print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
@ -2289,10 +2299,10 @@ Coalescing zero page register [ zp[2]:39 [ main::xw#0 ] ] with [ zp[2]:43 [ atan
Coalescing zero page register [ zp[2]:41 [ main::yw#0 ] ] with [ zp[2]:45 [ atan2_16::y#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:47 [ atan2_16::return#2 ] ] with [ zp[2]:49 [ main::angle_w#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:25 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] with [ zp[2]:47 [ atan2_16::return#2 main::angle_w#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:25 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 ] ] with [ zp[2]:51 [ main::$4 ] ] - score: 1
Coalescing zero page register [ zp[2]:25 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 ] ] with [ zp[2]:51 [ main::$6 ] ] - score: 1
Coalescing zero page register [ zp[2]:20 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] ] with [ zp[2]:10 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] ]
Coalescing zero page register [ zp[2]:22 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ] with [ zp[2]:13 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] ]
Coalescing zero page register [ zp[2]:25 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$4 ] ] with [ zp[2]:15 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] ]
Coalescing zero page register [ zp[2]:25 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$6 ] ] with [ zp[2]:15 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] ]
Coalescing zero page register [ zp[2]:37 [ print_char_cursor#19 print_char_cursor#26 print_char_cursor#20 ] ] with [ zp[2]:4 [ main::screen_ref#2 main::screen_ref#5 main::screen_ref#1 ] ]
Allocated (was zp[2]:6) zp[2]:4 [ main::diff_sum#2 main::diff_sum#7 main::diff_sum#1 print_uint::w#0 ]
Allocated (was zp[2]:8) zp[2]:6 [ main::screen#2 main::screen#5 main::screen#1 ]
@ -2301,7 +2311,7 @@ Allocated (was zp[1]:17) zp[1]:9 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
Allocated (was zp[1]:19) zp[1]:10 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
Allocated (was zp[2]:20) zp[2]:11 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
Allocated (was zp[2]:22) zp[2]:13 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
Allocated (was zp[2]:25) zp[2]:15 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$4 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
Allocated (was zp[2]:25) zp[2]:15 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$6 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
Allocated (was zp[2]:30) zp[2]:17 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
Allocated (was zp[2]:32) zp[2]:19 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
Allocated (was zp[2]:37) zp[2]:21 [ print_char_cursor#19 print_char_cursor#26 print_char_cursor#20 main::screen_ref#2 main::screen_ref#5 main::screen_ref#1 ]
@ -2339,7 +2349,7 @@ ASSEMBLER BEFORE OPTIMIZATION
main: {
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
.label col00 = COLS+$c*$28+$13
.label __4 = $f
.label __6 = $f
.label xw = $17
.label yw = $19
.label angle_w = $f
@ -2430,16 +2440,16 @@ main: {
// main::@7
__b7:
// [12] main::angle_w#0 = atan2_16::return#2
// [13] main::$4 = main::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
// [13] main::$6 = main::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
lda #$80
clc
adc.z __4
sta.z __4
adc.z __6
sta.z __6
bcc !+
inc.z __4+1
inc.z __6+1
!:
// [14] main::ang_w#0 = byte1 main::$4 -- vbuxx=_byte1_vwuz1
ldx.z __4+1
// [14] main::ang_w#0 = byte1 main::$6 -- vbuxx=_byte1_vwuz1
ldx.z __6+1
// [15] diff::bb1#0 = main::ang_w#0
// [16] diff::bb2#0 = *main::screen_ref#2 -- vbuaa=_deref_pbuz1
ldy #0
@ -2450,8 +2460,8 @@ main: {
jmp __b8
// main::@8
__b8:
// [19] main::$6 = diff::return#0
// [20] main::diff_sum#1 = main::diff_sum#2 + main::$6 -- vwuz1=vwuz1_plus_vbuaa
// [19] main::$8 = diff::return#0
// [20] main::diff_sum#1 = main::diff_sum#2 + main::$8 -- vwuz1=vwuz1_plus_vbuaa
//*screen = (>angle_w)-angle_b;
//*screen = >angle_w;
clc
@ -2460,12 +2470,12 @@ main: {
bcc !+
inc.z diff_sum+1
!:
// [21] main::$7 = main::ang_w#0 - *main::screen_ref#2 -- vbuaa=vbuxx_minus__deref_pbuz1
// [21] main::$9 = main::ang_w#0 - *main::screen_ref#2 -- vbuaa=vbuxx_minus__deref_pbuz1
txa
sec
ldy #0
sbc (screen_ref),y
// [22] *main::screen#2 = main::$7 -- _deref_pbuz1=vbuaa
// [22] *main::screen#2 = main::$9 -- _deref_pbuz1=vbuaa
ldy #0
sta (screen),y
// [23] main::screen#1 = ++ main::screen#2 -- pbuz1=_inc_pbuz1
@ -3373,9 +3383,9 @@ byte* init_font_hex::proto_lo
byte* init_font_hex::proto_lo#1 proto_lo zp[2]:15 500.5
byte* init_font_hex::proto_lo#4 proto_lo zp[2]:15 923.3076923076923
void main()
word~ main::$4 zp[2]:15 202.0
byte~ main::$6 reg byte a 202.0
byte~ main::$7 reg byte a 202.0
word~ main::$6 zp[2]:15 202.0
byte~ main::$8 reg byte a 202.0
byte~ main::$9 reg byte a 202.0
byte main::ang_w
byte main::ang_w#0 reg byte x 43.285714285714285
word main::angle_w
@ -3442,7 +3452,7 @@ zp[1]:10 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
zp[2]:11 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
zp[2]:13 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
zp[2]:15 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$4 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
zp[2]:15 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$6 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
zp[2]:17 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
zp[2]:19 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
@ -3456,8 +3466,8 @@ reg byte x [ main::ang_w#0 ]
reg byte x [ diff::bb1#0 ]
reg byte a [ diff::bb2#0 ]
reg byte a [ diff::return#0 ]
reg byte a [ main::$6 ]
reg byte a [ main::$7 ]
reg byte a [ main::$8 ]
reg byte a [ main::$9 ]
zp[1]:27 [ init_font_hex::$0 ]
reg byte a [ init_font_hex::$1 ]
reg byte a [ init_font_hex::$2 ]
@ -3500,7 +3510,7 @@ Score: 1041603
main: {
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
.label col00 = COLS+$c*$28+$13
.label __4 = $f
.label __6 = $f
.label xw = $17
.label yw = $19
.label angle_w = $f
@ -3559,13 +3569,13 @@ main: {
// [5] phi main::x#2 = main::x#1 [phi:main::@8->main::@2#3] -- register_copy
// main::@2
__b2:
// signed word xw = (signed word)(word){ (byte)x, 0 }
// MAKEWORD( (byte)x, 0 )
// [6] main::xw#0 = (byte)main::x#2 w= 0 -- vwuz1=vbuz2_word_vbuc1
lda #0
ldy.z x
sty.z xw+1
sta.z xw
// signed word yw = (signed word)(word){ (byte)y, 0 }
// MAKEWORD( (byte)y, 0 )
// [7] main::yw#0 = (byte)main::y#4 w= 0 -- vwuz1=vbuz2_word_vbuc1
ldy.z y
sty.z yw+1
@ -3580,17 +3590,17 @@ main: {
// word angle_w = atan2_16(xw, yw)
// [12] main::angle_w#0 = atan2_16::return#2
// angle_w+0x0080
// [13] main::$4 = main::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
// [13] main::$6 = main::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
lda #$80
clc
adc.z __4
sta.z __4
adc.z __6
sta.z __6
bcc !+
inc.z __4+1
inc.z __6+1
!:
// byte ang_w = BYTE1(angle_w+0x0080)
// [14] main::ang_w#0 = byte1 main::$4 -- vbuxx=_byte1_vwuz1
ldx.z __4+1
// [14] main::ang_w#0 = byte1 main::$6 -- vbuxx=_byte1_vwuz1
ldx.z __6+1
// diff(ang_w, *screen_ref)
// [15] diff::bb1#0 = main::ang_w#0
// [16] diff::bb2#0 = *main::screen_ref#2 -- vbuaa=_deref_pbuz1
@ -3600,9 +3610,9 @@ main: {
jsr diff
// [18] diff::return#0 = diff::return#1
// main::@8
// [19] main::$6 = diff::return#0
// [19] main::$8 = diff::return#0
// diff_sum += diff(ang_w, *screen_ref)
// [20] main::diff_sum#1 = main::diff_sum#2 + main::$6 -- vwuz1=vwuz1_plus_vbuaa
// [20] main::diff_sum#1 = main::diff_sum#2 + main::$8 -- vwuz1=vwuz1_plus_vbuaa
//*screen = (>angle_w)-angle_b;
//*screen = >angle_w;
clc
@ -3612,13 +3622,13 @@ main: {
inc.z diff_sum+1
!:
// ang_w - *screen_ref
// [21] main::$7 = main::ang_w#0 - *main::screen_ref#2 -- vbuaa=vbuxx_minus__deref_pbuz1
// [21] main::$9 = main::ang_w#0 - *main::screen_ref#2 -- vbuaa=vbuxx_minus__deref_pbuz1
txa
sec
ldy #0
sbc (screen_ref),y
// *screen = ang_w - *screen_ref
// [22] *main::screen#2 = main::$7 -- _deref_pbuz1=vbuaa
// [22] *main::screen#2 = main::$9 -- _deref_pbuz1=vbuaa
sta (screen),y
// screen++;
// [23] main::screen#1 = ++ main::screen#2 -- pbuz1=_inc_pbuz1

View File

@ -108,9 +108,9 @@ byte* init_font_hex::proto_lo
byte* init_font_hex::proto_lo#1 proto_lo zp[2]:15 500.5
byte* init_font_hex::proto_lo#4 proto_lo zp[2]:15 923.3076923076923
void main()
word~ main::$4 zp[2]:15 202.0
byte~ main::$6 reg byte a 202.0
byte~ main::$7 reg byte a 202.0
word~ main::$6 zp[2]:15 202.0
byte~ main::$8 reg byte a 202.0
byte~ main::$9 reg byte a 202.0
byte main::ang_w
byte main::ang_w#0 reg byte x 43.285714285714285
word main::angle_w
@ -177,7 +177,7 @@ zp[1]:10 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
zp[2]:11 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
zp[2]:13 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
zp[2]:15 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$4 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
zp[2]:15 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$6 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
zp[2]:17 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
zp[2]:19 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
@ -191,8 +191,8 @@ reg byte x [ main::ang_w#0 ]
reg byte x [ diff::bb1#0 ]
reg byte a [ diff::bb2#0 ]
reg byte a [ diff::return#0 ]
reg byte a [ main::$6 ]
reg byte a [ main::$7 ]
reg byte a [ main::$8 ]
reg byte a [ main::$9 ]
zp[1]:27 [ init_font_hex::$0 ]
reg byte a [ init_font_hex::$1 ]
reg byte a [ init_font_hex::$2 ]

View File

@ -537,7 +537,7 @@ mulf8u_prepared: {
sm4:
sbc mulf_sqr2_hi,x
sta memB
// return { *memB, *resL };
// MAKEWORD( *memB, *resL )
sta.z return+1
lda resL
sta.z return

View File

@ -124,7 +124,8 @@ mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared
mulf8u_prepared::b#1 = phi( mulf8s_prepared/mulf8u_prepared::b#0 )
*mulf8u_prepared::memB = 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 }
mulf8u_prepared::return#0 = ((word)) { *mulf8u_prepared::memB, *mulf8u_prepared::resL }
mulf8u_prepared::$0 = *mulf8u_prepared::memB w= *mulf8u_prepared::resL
mulf8u_prepared::return#0 = mulf8u_prepared::$0
to:mulf8u_prepared::@return
mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared
mulf8u_prepared::return#3 = phi( mulf8u_prepared/mulf8u_prepared::return#0 )
@ -852,6 +853,7 @@ byte mulf8u_prepare::a#1
byte mulf8u_prepare::a#2
constant byte* const mulf8u_prepare::memA = (byte*)$fd
word mulf8u_prepared(byte mulf8u_prepared::b)
word~ mulf8u_prepared::$0
byte mulf8u_prepared::b
byte mulf8u_prepared::b#0
byte mulf8u_prepared::b#1
@ -995,8 +997,6 @@ dword print_ulong_at::dw#2
constant signed byte* xs[8] = { -$46, -$46, -$46, 0, 0, $46, $46, $46 }
constant signed byte* ys[8] = { -$46, 0, $46, -$46, $46, -$46, 0, $46 }
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) 1 in mulf_init::sqr1_hi#0 = mulf_sqr1_hi+1
Adding number conversion cast (unumber) 1 in mulf_init::sqr1_lo#0 = mulf_sqr1_lo+1
@ -1078,8 +1078,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 *mulf8u_prepared::memB
Simplifying constant integer cast *mulf8u_prepared::resL
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $ffffffff
@ -4660,7 +4658,7 @@ mulf8u_prepared: {
sm4:
sbc mulf_sqr2_hi,x
sta memB
// return { *memB, *resL };
// MAKEWORD( *memB, *resL )
// [132] mulf8u_prepared::return#0 = *mulf8u_prepared::memB w= *mulf8u_prepared::resL -- vwuz1=_deref_pbuc1_word__deref_pbuc2
sta.z return+1
lda resL

View File

@ -323,7 +323,7 @@ div32u16u: {
jsr divr16u
// divr16u(WORD0(dividend), divisor, rem16u)
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
lda.z quotient_hi
sta.z return+2
lda.z quotient_hi+1

View File

@ -6784,7 +6784,7 @@ div32u16u: {
// div32u16u::@2
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// [68] div32u16u::quotient_lo#0 = divr16u::return#3
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
// [69] div32u16u::return#1 = div32u16u::quotient_hi#0 dw= div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3
lda.z quotient_hi
sta.z return+2

View File

@ -472,7 +472,7 @@ div32u16u: {
jsr divr16u
// divr16u(WORD0(dividend), divisor, rem16u)
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
lda.z quotient_hi
sta.z return+2
lda.z quotient_hi+1

View File

@ -6712,7 +6712,7 @@ div32u16u: {
// div32u16u::@2
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// [108] div32u16u::quotient_lo#0 = divr16u::return#3
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
// [109] div32u16u::return#1 = div32u16u::quotient_hi#0 dw= div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3
lda.z quotient_hi
sta.z return+2

View File

@ -175,7 +175,7 @@ bitmap_init: {
bitmap_clear: {
.label bitmap = 3
.label y = 9
// byte* bitmap = (byte*) { bitmap_plot_yhi[0], bitmap_plot_ylo[0] }
// MAKEWORD( bitmap_plot_yhi[0], bitmap_plot_ylo[0] )
lda bitmap_plot_yhi
sta.z bitmap+1
lda bitmap_plot_ylo
@ -419,10 +419,10 @@ point_init: {
// Plot a single dot in the bitmap
// bitmap_plot(word zp(7) x, byte register(X) y)
bitmap_plot: {
.label __0 = $12
.label __1 = $12
.label x = 7
.label plotter = $10
// byte* plotter = (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
// MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] )
lda bitmap_plot_yhi,x
sta.z plotter+1
lda bitmap_plot_ylo,x
@ -430,17 +430,17 @@ bitmap_plot: {
// x & $fff8
lda.z x
and #<$fff8
sta.z __0
sta.z __1
lda.z x+1
and #>$fff8
sta.z __0+1
sta.z __1+1
// plotter += ( x & $fff8 )
clc
lda.z plotter
adc.z __0
adc.z __1
sta.z plotter
lda.z plotter+1
adc.z __0+1
adc.z __1+1
sta.z plotter+1
// BYTE0(x)
ldx.z x

View File

@ -216,10 +216,10 @@ point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot] from main::@7
[102] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#0] w= bitmap_plot_ylo[bitmap_plot::y#0]
[103] bitmap_plot::$0 = bitmap_plot::x#0 & $fff8
[104] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
[105] bitmap_plot::$1 = byte0 bitmap_plot::x#0
[106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
[103] bitmap_plot::$1 = bitmap_plot::x#0 & $fff8
[104] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$1
[105] bitmap_plot::$2 = byte0 bitmap_plot::x#0
[106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2]
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
[107] return

View File

@ -520,7 +520,8 @@ bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@6
void bitmap_clear()
bitmap_clear: scope:[bitmap_clear] from main::@7
bitmap_clear::bitmap#0 = (byte*){ bitmap_plot_yhi[0], bitmap_plot_ylo[0] }
bitmap_clear::$0 = bitmap_plot_yhi[0] w= bitmap_plot_ylo[0]
bitmap_clear::bitmap#0 = (byte*)bitmap_clear::$0
bitmap_clear::y#0 = 0
to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3
@ -535,15 +536,15 @@ bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2
*bitmap_clear::bitmap#2 = 0
bitmap_clear::bitmap#1 = ++ bitmap_clear::bitmap#2
bitmap_clear::x#1 = bitmap_clear::x#2 + rangenext(0,$c7)
bitmap_clear::$0 = bitmap_clear::x#1 != rangelast(0,$c7)
if(bitmap_clear::$0) goto bitmap_clear::@2
bitmap_clear::$1 = bitmap_clear::x#1 != rangelast(0,$c7)
if(bitmap_clear::$1) goto bitmap_clear::@2
to:bitmap_clear::@3
bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2
bitmap_clear::bitmap#4 = phi( bitmap_clear::@2/bitmap_clear::bitmap#1 )
bitmap_clear::y#2 = phi( bitmap_clear::@2/bitmap_clear::y#3 )
bitmap_clear::y#1 = bitmap_clear::y#2 + rangenext(0,$27)
bitmap_clear::$1 = bitmap_clear::y#1 != rangelast(0,$27)
if(bitmap_clear::$1) goto bitmap_clear::@1
bitmap_clear::$2 = bitmap_clear::y#1 != rangelast(0,$27)
if(bitmap_clear::$2) goto bitmap_clear::@1
to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
return
@ -553,11 +554,12 @@ void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot] from main::@10
bitmap_plot::x#1 = phi( main::@10/bitmap_plot::x#0 )
bitmap_plot::y#1 = phi( main::@10/bitmap_plot::y#0 )
bitmap_plot::plotter#0 = (byte*){ bitmap_plot_yhi[bitmap_plot::y#1], bitmap_plot_ylo[bitmap_plot::y#1] }
bitmap_plot::$0 = bitmap_plot::x#1 & $fff8
bitmap_plot::plotter#1 = bitmap_plot::plotter#0 + bitmap_plot::$0
bitmap_plot::$1 = byte0 bitmap_plot::x#1
*bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
bitmap_plot::$0 = bitmap_plot_yhi[bitmap_plot::y#1] w= bitmap_plot_ylo[bitmap_plot::y#1]
bitmap_plot::plotter#0 = (byte*)bitmap_plot::$0
bitmap_plot::$1 = bitmap_plot::x#1 & $fff8
bitmap_plot::plotter#1 = bitmap_plot::plotter#0 + bitmap_plot::$1
bitmap_plot::$2 = byte0 bitmap_plot::x#1
*bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2]
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
return
@ -599,8 +601,9 @@ constant const byte VICII_DEN = $10
constant const byte VICII_RSEL = 8
void __start()
void bitmap_clear()
bool~ bitmap_clear::$0
word~ bitmap_clear::$0
bool~ bitmap_clear::$1
bool~ bitmap_clear::$2
byte* bitmap_clear::bitmap
byte* bitmap_clear::bitmap#0
byte* bitmap_clear::bitmap#1
@ -662,8 +665,9 @@ byte* bitmap_init::yoffs#2
byte* bitmap_init::yoffs#3
byte* bitmap_init::yoffs#4
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
number~ bitmap_plot::$0
byte~ bitmap_plot::$1
word~ bitmap_plot::$0
number~ bitmap_plot::$1
byte~ bitmap_plot::$2
byte* bitmap_plot::plotter
byte* bitmap_plot::plotter#0
byte* bitmap_plot::plotter#1
@ -994,9 +998,6 @@ constant word* y_cur[SIZE] = { fill( SIZE, 0) }
constant byte* y_end[SIZE] = { $14, $14, $a, $14 }
constant byte* y_start[SIZE] = { $a, $a, $a, $14 }
Fixing inline constructor with bitmap_clear::$2 = (byte)bitmap_plot_yhi[0] w= (byte)bitmap_plot_ylo[0]
Fixing inline constructor with bitmap_plot::$2 = (byte)bitmap_plot_yhi[bitmap_plot::y#1] w= (byte)bitmap_plot_ylo[bitmap_plot::y#1]
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) 1 in divr16u::$0 = divr16u::rem#4 << 1
Adding number conversion cast (unumber) $80 in divr16u::$2 = divr16u::$1 & $80
Adding number conversion cast (unumber) divr16u::$2 in divr16u::$2 = divr16u::$1 & (unumber)$80
@ -1053,11 +1054,11 @@ Adding number conversion cast (unumber) 7 in bitmap_init::$7 = bitmap_init::y#2
Adding number conversion cast (unumber) bitmap_init::$7 in bitmap_init::$7 = bitmap_init::y#2 & (unumber)7
Adding number conversion cast (unumber) 7 in bitmap_init::$8 = bitmap_init::$7 == 7
Adding number conversion cast (unumber) $28*8 in bitmap_init::$10 = bitmap_init::yoffs#3 + $28*8
Adding number conversion cast (unumber) 0 in bitmap_clear::$2 = (byte)bitmap_plot_yhi[0] w= (byte)bitmap_plot_ylo[0]
Adding number conversion cast (unumber) 0 in bitmap_clear::$2 = (byte)bitmap_plot_yhi[(unumber)0] w= (byte)bitmap_plot_ylo[0]
Adding number conversion cast (unumber) 0 in bitmap_clear::$0 = bitmap_plot_yhi[0] w= bitmap_plot_ylo[0]
Adding number conversion cast (unumber) 0 in bitmap_clear::$0 = bitmap_plot_yhi[(unumber)0] w= bitmap_plot_ylo[0]
Adding number conversion cast (unumber) 0 in *bitmap_clear::bitmap#2 = 0
Adding number conversion cast (unumber) $fff8 in bitmap_plot::$0 = bitmap_plot::x#1 & $fff8
Adding number conversion cast (unumber) bitmap_plot::$0 in bitmap_plot::$0 = bitmap_plot::x#1 & (unumber)$fff8
Adding number conversion cast (unumber) $fff8 in bitmap_plot::$1 = bitmap_plot::x#1 & $fff8
Adding number conversion cast (unumber) bitmap_plot::$1 in bitmap_plot::$1 = bitmap_plot::x#1 & (unumber)$fff8
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast divr16s::neg#1 = (unumber)1
Inlining cast *D011 = (unumber)VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
@ -1117,13 +1118,9 @@ Simplifying constant integer cast $80
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast bitmap_plot_yhi[(unumber)0]
Simplifying constant integer cast 0
Simplifying constant integer cast bitmap_plot_ylo[(unumber)0]
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast bitmap_plot_yhi[bitmap_plot::y#1]
Simplifying constant integer cast bitmap_plot_ylo[bitmap_plot::y#1]
Simplifying constant integer cast 0
Simplifying constant integer cast $fff8
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 1
@ -1185,7 +1182,7 @@ Inferred type updated to byte in point_init::$10 = point_init::$9 / $10
Inferred type updated to byte in bitmap_init::$3 = bitmap_init::y#2 & 7
Inferred type updated to byte in bitmap_init::$5 = bitmap_init::$3 | bitmap_init::$4
Inferred type updated to byte in bitmap_init::$7 = bitmap_init::y#2 & 7
Inferred type updated to word in bitmap_plot::$0 = bitmap_plot::x#1 & $fff8
Inferred type updated to word in bitmap_plot::$1 = bitmap_plot::x#1 & $fff8
Inversing boolean not [9] divr16u::$4 = divr16u::$2 == 0 from [8] divr16u::$3 = divr16u::$2 != 0
Inversing boolean not [17] divr16u::$9 = divr16u::rem#5 < divr16u::divisor#1 from [16] divr16u::$8 = divr16u::rem#5 >= divr16u::divisor#1
Inversing boolean not [231] bitmap_init::$1 = bitmap_init::bits#1 != 0 from [230] bitmap_init::$0 = bitmap_init::bits#1 == 0
@ -1308,8 +1305,8 @@ Simple Condition bitmap_init::$1 [167] if(bitmap_init::bits#1!=0) goto bitmap_in
Simple Condition bitmap_init::$2 [171] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1
Simple Condition bitmap_init::$9 [183] if(bitmap_init::$7!=7) goto bitmap_init::@6
Simple Condition bitmap_init::$11 [187] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5
Simple Condition bitmap_clear::$0 [200] if(bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2
Simple Condition bitmap_clear::$1 [203] if(bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1
Simple Condition bitmap_clear::$1 [200] if(bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2
Simple Condition bitmap_clear::$2 [203] if(bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting || if()-condition to two if()s [28] divr16s::$2 = divr16s::$0 || divr16s::$1
Successful SSA optimization Pass2ConditionalAndOrRewriting
@ -1364,8 +1361,8 @@ Resolved ranged comparison value [203] if(bitmap_clear::y#1!=rangelast(0,$27)) g
Simplifying constant evaluating to zero (word)divr16s::dividend#0 in
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero (byte*)CIA2 in [67] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = main::vicSelectGfxBank1_toDd001_return#0
Simplifying expression containing zero bitmap_plot_yhi in [190] bitmap_clear::$2 = bitmap_plot_yhi[0] w= bitmap_plot_ylo[0]
Simplifying expression containing zero bitmap_plot_ylo in [190] bitmap_clear::$2 = *bitmap_plot_yhi w= bitmap_plot_ylo[0]
Simplifying expression containing zero bitmap_plot_yhi in [190] bitmap_clear::$0 = bitmap_plot_yhi[0] w= bitmap_plot_ylo[0]
Simplifying expression containing zero bitmap_plot_ylo in [190] bitmap_clear::$0 = *bitmap_plot_yhi w= bitmap_plot_ylo[0]
Successful SSA optimization PassNSimplifyExpressionWithZero
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
@ -1460,8 +1457,8 @@ Inlining Noop Cast [17] divr16s::remu#1 = (word)divr16s::$7 keeping divr16s::rem
Inlining Noop Cast [22] divr16s::divisoru#1 = (word)divr16s::$8 keeping divr16s::divisoru#1
Inlining Noop Cast [67] point_init::abs16s1_return#0 = (word)point_init::abs16s1_$1 keeping point_init::abs16s1_return#0
Inlining Noop Cast [72] point_init::abs16s2_return#0 = (word)point_init::abs16s2_$1 keeping point_init::abs16s2_return#0
Inlining Noop Cast [125] bitmap_clear::bitmap#0 = (byte*)bitmap_clear::$2 keeping bitmap_clear::bitmap#0
Inlining Noop Cast [136] bitmap_plot::plotter#0 = (byte*)bitmap_plot::$2 keeping bitmap_plot::plotter#0
Inlining Noop Cast [125] bitmap_clear::bitmap#0 = (byte*)bitmap_clear::$0 keeping bitmap_clear::bitmap#0
Inlining Noop Cast [136] bitmap_plot::plotter#0 = (byte*)bitmap_plot::$0 keeping bitmap_plot::plotter#0
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [18] divr16s::remu#2 = (word)divr16s::rem#0 keeping divr16s::rem#0
Inlining Noop Cast [24] divr16s::divisoru#2 = (word)divr16s::divisor#0 keeping divr16s::divisor#0
@ -1875,10 +1872,10 @@ point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot] from main::@7
[102] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#0] w= bitmap_plot_ylo[bitmap_plot::y#0]
[103] bitmap_plot::$0 = bitmap_plot::x#0 & $fff8
[104] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
[105] bitmap_plot::$1 = byte0 bitmap_plot::x#0
[106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
[103] bitmap_plot::$1 = bitmap_plot::x#0 & $fff8
[104] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$1
[105] bitmap_plot::$2 = byte0 bitmap_plot::x#0
[106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2]
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
[107] return
@ -2007,8 +2004,8 @@ byte* bitmap_init::yoffs#1 202.0
byte* bitmap_init::yoffs#2 63.125
byte* bitmap_init::yoffs#4 101.0
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
word~ bitmap_plot::$0 202.0
byte~ bitmap_plot::$1 202.0
word~ bitmap_plot::$1 202.0
byte~ bitmap_plot::$2 202.0
byte* bitmap_plot::plotter
word bitmap_plot::plotter#0 50.5
byte* bitmap_plot::plotter#1 151.5
@ -2171,9 +2168,9 @@ Added variable point_init::$10 to live range equivalence class [ point_init::$10
Added variable point_init::abs16s2_return#0 to live range equivalence class [ point_init::abs16s2_return#0 ]
Added variable point_init::abs16s1_return#0 to live range equivalence class [ point_init::abs16s1_return#0 ]
Added variable bitmap_plot::plotter#0 to live range equivalence class [ bitmap_plot::plotter#0 ]
Added variable bitmap_plot::$0 to live range equivalence class [ bitmap_plot::$0 ]
Added variable bitmap_plot::plotter#1 to live range equivalence class [ bitmap_plot::plotter#1 ]
Added variable bitmap_plot::$1 to live range equivalence class [ bitmap_plot::$1 ]
Added variable bitmap_plot::plotter#1 to live range equivalence class [ bitmap_plot::plotter#1 ]
Added variable bitmap_plot::$2 to live range equivalence class [ bitmap_plot::$2 ]
Added variable divr16u::divisor#0 to live range equivalence class [ divr16u::divisor#0 ]
Added variable divr16u::return#2 to live range equivalence class [ divr16u::return#2 ]
Added variable divr16s::resultu#0 to live range equivalence class [ divr16s::resultu#0 ]
@ -2229,9 +2226,9 @@ Complete equivalence classes
[ point_init::abs16s2_return#0 ]
[ point_init::abs16s1_return#0 ]
[ bitmap_plot::plotter#0 ]
[ bitmap_plot::$0 ]
[ bitmap_plot::plotter#1 ]
[ bitmap_plot::$1 ]
[ bitmap_plot::plotter#1 ]
[ bitmap_plot::$2 ]
[ divr16u::divisor#0 ]
[ divr16u::return#2 ]
[ divr16s::resultu#0 ]
@ -2286,9 +2283,9 @@ Allocated zp[1]:69 [ point_init::$10 ]
Allocated zp[2]:70 [ point_init::abs16s2_return#0 ]
Allocated zp[2]:72 [ point_init::abs16s1_return#0 ]
Allocated zp[2]:74 [ bitmap_plot::plotter#0 ]
Allocated zp[2]:76 [ bitmap_plot::$0 ]
Allocated zp[2]:76 [ bitmap_plot::$1 ]
Allocated zp[2]:78 [ bitmap_plot::plotter#1 ]
Allocated zp[1]:80 [ bitmap_plot::$1 ]
Allocated zp[1]:80 [ bitmap_plot::$2 ]
Allocated zp[2]:81 [ divr16u::divisor#0 ]
Allocated zp[2]:83 [ divr16u::return#2 ]
Allocated zp[2]:85 [ divr16s::resultu#0 ]
@ -2353,9 +2350,9 @@ Statement [99] point_init::abs16s2_return#5 = (word)point_init::abs16s2_return#0
Statement [100] point_init::abs16s1_return#0 = - point_init::x_diff#1 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a
Statement [101] point_init::abs16s1_return#5 = (word)point_init::abs16s1_return#0 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a
Statement [102] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#0] w= bitmap_plot_ylo[bitmap_plot::y#0] [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { } ) always clobbers reg byte a
Statement [103] bitmap_plot::$0 = bitmap_plot::x#0 & $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] { } ) always clobbers reg byte a
Statement [104] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a
Statement [106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] [ ] ( bitmap_plot:20 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y
Statement [103] bitmap_plot::$1 = bitmap_plot::x#0 & $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] { } ) always clobbers reg byte a
Statement [104] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a
Statement [106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( bitmap_plot:20 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ]
Statement [109] if(divr16s::rem#0<0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a
Statement [110] divr16s::remu#8 = (word)divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::remu#8 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a
@ -2421,9 +2418,9 @@ Statement [99] point_init::abs16s2_return#5 = (word)point_init::abs16s2_return#0
Statement [100] point_init::abs16s1_return#0 = - point_init::x_diff#1 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a
Statement [101] point_init::abs16s1_return#5 = (word)point_init::abs16s1_return#0 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a
Statement [102] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#0] w= bitmap_plot_ylo[bitmap_plot::y#0] [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { } ) always clobbers reg byte a
Statement [103] bitmap_plot::$0 = bitmap_plot::x#0 & $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] { } ) always clobbers reg byte a
Statement [104] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a
Statement [106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] [ ] ( bitmap_plot:20 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y
Statement [103] bitmap_plot::$1 = bitmap_plot::x#0 & $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] { } ) always clobbers reg byte a
Statement [104] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a
Statement [106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( bitmap_plot:20 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y
Statement [109] if(divr16s::rem#0<0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a
Statement [110] divr16s::remu#8 = (word)divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::remu#8 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a
Statement [112] if(divr16s::divisor#0<0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a
@ -2489,9 +2486,9 @@ Potential registers zp[1]:69 [ point_init::$10 ] : zp[1]:69 , reg byte a , reg b
Potential registers zp[2]:70 [ point_init::abs16s2_return#0 ] : zp[2]:70 ,
Potential registers zp[2]:72 [ point_init::abs16s1_return#0 ] : zp[2]:72 ,
Potential registers zp[2]:74 [ bitmap_plot::plotter#0 ] : zp[2]:74 ,
Potential registers zp[2]:76 [ bitmap_plot::$0 ] : zp[2]:76 ,
Potential registers zp[2]:76 [ bitmap_plot::$1 ] : zp[2]:76 ,
Potential registers zp[2]:78 [ bitmap_plot::plotter#1 ] : zp[2]:78 ,
Potential registers zp[1]:80 [ bitmap_plot::$1 ] : zp[1]:80 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:80 [ bitmap_plot::$2 ] : zp[1]:80 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:81 [ divr16u::divisor#0 ] : zp[2]:81 ,
Potential registers zp[2]:83 [ divr16u::return#2 ] : zp[2]:83 ,
Potential registers zp[2]:85 [ divr16s::resultu#0 ] : zp[2]:85 ,
@ -2507,7 +2504,7 @@ Uplift Scope [bitmap_clear] 2,207.6: zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_cle
Uplift Scope [screen_fill] 2,174.6: zp[2]:13 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] 2,168.83: zp[1]:15 [ screen_fill::x#2 screen_fill::x#1 ] 185.17: zp[1]:12 [ screen_fill::y#4 screen_fill::y#1 ]
Uplift Scope [point_init] 707: zp[2]:18 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] 454.5: zp[2]:16 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] 202: zp[2]:50 [ point_init::$18 ] 202: zp[2]:54 [ point_init::$5 ] 202: zp[2]:56 [ point_init::$19 ] 202: zp[2]:58 [ point_init::$6 ] 202: zp[2]:66 [ point_init::x_stepf#0 ] 202: zp[1]:68 [ point_init::$9 ] 101: zp[2]:48 [ point_init::$17 ] 101: zp[1]:69 [ point_init::$10 ] 101: zp[2]:70 [ point_init::abs16s2_return#0 ] 101: zp[2]:72 [ point_init::abs16s1_return#0 ] 28.06: zp[2]:46 [ point_init::x_diff#1 ] 25.25: zp[2]:52 [ point_init::y_diff#0 ] 15.64: zp[1]:34 [ point_init::point_idx#0 ] 13.03: zp[1]:45 [ point_init::$13 ]
Uplift Scope [bitmap_init] 366.12: zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 319.83: zp[1]:3 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 202: zp[1]:4 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:5 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:40 [ bitmap_init::$4 ] 202: zp[1]:41 [ bitmap_init::$5 ] 202: zp[1]:42 [ bitmap_init::$6 ] 50.5: zp[1]:39 [ bitmap_init::$7 ]
Uplift Scope [bitmap_plot] 213: zp[1]:38 [ bitmap_plot::y#0 ] 202: zp[2]:76 [ bitmap_plot::$0 ] 202: zp[1]:80 [ bitmap_plot::$1 ] 151.5: zp[2]:78 [ bitmap_plot::plotter#1 ] 50.5: zp[2]:74 [ bitmap_plot::plotter#0 ] 42.6: zp[2]:36 [ bitmap_plot::x#0 ]
Uplift Scope [bitmap_plot] 213: zp[1]:38 [ bitmap_plot::y#0 ] 202: zp[2]:76 [ bitmap_plot::$1 ] 202: zp[1]:80 [ bitmap_plot::$2 ] 151.5: zp[2]:78 [ bitmap_plot::plotter#1 ] 50.5: zp[2]:74 [ bitmap_plot::plotter#0 ] 42.6: zp[2]:36 [ bitmap_plot::x#0 ]
Uplift Scope [main] 24.36: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:35 [ main::$10 ]
Uplift Scope [MOS6526_CIA]
Uplift Scope [MOS6569_VICII]
@ -2522,7 +2519,7 @@ Uplifting [point_init] best 28526 combination zp[2]:18 [ point_init::abs16s2_ret
Limited combination testing to 100 combinations of 144 possible.
Uplifting [bitmap_init] best 28076 combination zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:41 [ bitmap_init::$5 ] zp[1]:42 [ bitmap_init::$6 ] zp[1]:39 [ bitmap_init::$7 ]
Limited combination testing to 100 combinations of 15360 possible.
Uplifting [bitmap_plot] best 28037 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:76 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:78 [ bitmap_plot::plotter#1 ] zp[2]:74 [ bitmap_plot::plotter#0 ] zp[2]:36 [ bitmap_plot::x#0 ]
Uplifting [bitmap_plot] best 28037 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:76 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:78 [ bitmap_plot::plotter#1 ] zp[2]:74 [ bitmap_plot::plotter#0 ] zp[2]:36 [ bitmap_plot::x#0 ]
Uplifting [main] best 27997 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$10 ]
Uplifting [MOS6526_CIA] best 27997 combination
Uplifting [MOS6569_VICII] best 27997 combination
@ -2571,7 +2568,7 @@ Coalescing zero page register [ zp[2]:36 [ bitmap_plot::x#0 ] ] with [ zp[2]:18
Coalescing zero page register [ zp[1]:45 [ point_init::$13 ] ] with [ zp[1]:39 [ bitmap_init::$7 ] ]
Coalescing zero page register [ zp[2]:50 [ point_init::$18 ] ] with [ zp[2]:29 [ divr16u::dividend#2 divr16u::dividend#0 ] ]
Coalescing zero page register [ zp[2]:74 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::remu#1 point_init::$17 point_init::y_diff#0 ] ]
Coalescing zero page register [ zp[2]:76 [ bitmap_plot::$0 ] ] with [ zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ] ]
Coalescing zero page register [ zp[2]:76 [ bitmap_plot::$1 ] ] with [ zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ] ]
Coalescing zero page register [ zp[2]:16 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_return#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] with [ zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
Coalescing zero page register [ zp[1]:45 [ point_init::$13 bitmap_init::$7 ] ] with [ zp[1]:12 [ screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ]
Allocated (was zp[2]:16) zp[2]:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_return#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
@ -2582,7 +2579,7 @@ Allocated (was zp[2]:50) zp[2]:10 [ point_init::$18 divr16u::dividend#2 divr16u:
Allocated (was zp[2]:54) zp[2]:12 [ point_init::$5 ]
Allocated (was zp[2]:56) zp[2]:14 [ point_init::$19 point_init::$6 ]
Allocated (was zp[2]:74) zp[2]:16 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::remu#1 point_init::$17 point_init::y_diff#0 ]
Allocated (was zp[2]:76) zp[2]:18 [ bitmap_plot::$0 divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ]
Allocated (was zp[2]:76) zp[2]:18 [ bitmap_plot::$1 divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ]
ASSEMBLER BEFORE OPTIMIZATION
// File Comments
@ -3237,7 +3234,7 @@ point_init: {
// Plot a single dot in the bitmap
// bitmap_plot(word zp(7) x, byte register(X) y)
bitmap_plot: {
.label __0 = $12
.label __1 = $12
.label x = 7
.label plotter = $10
// [102] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#0] w= bitmap_plot_ylo[bitmap_plot::y#0] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
@ -3245,24 +3242,24 @@ bitmap_plot: {
sta.z plotter+1
lda bitmap_plot_ylo,x
sta.z plotter
// [103] bitmap_plot::$0 = bitmap_plot::x#0 & $fff8 -- vwuz1=vwuz2_band_vwuc1
// [103] bitmap_plot::$1 = bitmap_plot::x#0 & $fff8 -- vwuz1=vwuz2_band_vwuc1
lda.z x
and #<$fff8
sta.z __0
sta.z __1
lda.z x+1
and #>$fff8
sta.z __0+1
// [104] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2
sta.z __1+1
// [104] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2
clc
lda.z plotter
adc.z __0
adc.z __1
sta.z plotter
lda.z plotter+1
adc.z __0+1
adc.z __1+1
sta.z plotter+1
// [105] bitmap_plot::$1 = byte0 bitmap_plot::x#0 -- vbuxx=_byte0_vwuz1
// [105] bitmap_plot::$2 = byte0 bitmap_plot::x#0 -- vbuxx=_byte0_vwuz1
ldx.z x
// [106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
// [106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
lda bitmap_plot_bit,x
ldy #0
ora (plotter),y
@ -3758,8 +3755,8 @@ byte* bitmap_init::yoffs#1 yoffs zp[2]:3 202.0
byte* bitmap_init::yoffs#2 yoffs zp[2]:3 63.125
byte* bitmap_init::yoffs#4 yoffs zp[2]:3 101.0
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
word~ bitmap_plot::$0 zp[2]:18 202.0
byte~ bitmap_plot::$1 reg byte x 202.0
word~ bitmap_plot::$1 zp[2]:18 202.0
byte~ bitmap_plot::$2 reg byte x 202.0
byte* bitmap_plot::plotter
word bitmap_plot::plotter#0 plotter zp[2]:16 50.5
byte* bitmap_plot::plotter#1 plotter zp[2]:16 151.5
@ -3912,8 +3909,8 @@ zp[2]:14 [ point_init::$19 point_init::$6 ]
reg byte a [ point_init::$9 ]
reg byte a [ point_init::$10 ]
zp[2]:16 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::remu#1 point_init::$17 point_init::y_diff#0 ]
zp[2]:18 [ bitmap_plot::$0 divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ]
reg byte x [ bitmap_plot::$1 ]
zp[2]:18 [ bitmap_plot::$1 divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ]
reg byte x [ bitmap_plot::$2 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]
@ -4188,7 +4185,7 @@ bitmap_init: {
bitmap_clear: {
.label bitmap = 3
.label y = 9
// byte* bitmap = (byte*) { bitmap_plot_yhi[0], bitmap_plot_ylo[0] }
// MAKEWORD( bitmap_plot_yhi[0], bitmap_plot_ylo[0] )
// [47] bitmap_clear::bitmap#0 = *bitmap_plot_yhi w= *bitmap_plot_ylo -- vwuz1=_deref_pbuc1_word__deref_pbuc2
lda bitmap_plot_yhi
sta.z bitmap+1
@ -4536,37 +4533,37 @@ point_init: {
// Plot a single dot in the bitmap
// bitmap_plot(word zp(7) x, byte register(X) y)
bitmap_plot: {
.label __0 = $12
.label __1 = $12
.label x = 7
.label plotter = $10
// byte* plotter = (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
// MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] )
// [102] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#0] w= bitmap_plot_ylo[bitmap_plot::y#0] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
lda bitmap_plot_yhi,x
sta.z plotter+1
lda bitmap_plot_ylo,x
sta.z plotter
// x & $fff8
// [103] bitmap_plot::$0 = bitmap_plot::x#0 & $fff8 -- vwuz1=vwuz2_band_vwuc1
// [103] bitmap_plot::$1 = bitmap_plot::x#0 & $fff8 -- vwuz1=vwuz2_band_vwuc1
lda.z x
and #<$fff8
sta.z __0
sta.z __1
lda.z x+1
and #>$fff8
sta.z __0+1
sta.z __1+1
// plotter += ( x & $fff8 )
// [104] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2
// [104] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2
clc
lda.z plotter
adc.z __0
adc.z __1
sta.z plotter
lda.z plotter+1
adc.z __0+1
adc.z __1+1
sta.z plotter+1
// BYTE0(x)
// [105] bitmap_plot::$1 = byte0 bitmap_plot::x#0 -- vbuxx=_byte0_vwuz1
// [105] bitmap_plot::$2 = byte0 bitmap_plot::x#0 -- vbuxx=_byte0_vwuz1
ldx.z x
// *plotter |= bitmap_plot_bit[BYTE0(x)]
// [106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
// [106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
lda bitmap_plot_bit,x
ldy #0
ora (plotter),y

View File

@ -49,8 +49,8 @@ byte* bitmap_init::yoffs#1 yoffs zp[2]:3 202.0
byte* bitmap_init::yoffs#2 yoffs zp[2]:3 63.125
byte* bitmap_init::yoffs#4 yoffs zp[2]:3 101.0
void bitmap_plot(word bitmap_plot::x , byte bitmap_plot::y)
word~ bitmap_plot::$0 zp[2]:18 202.0
byte~ bitmap_plot::$1 reg byte x 202.0
word~ bitmap_plot::$1 zp[2]:18 202.0
byte~ bitmap_plot::$2 reg byte x 202.0
byte* bitmap_plot::plotter
word bitmap_plot::plotter#0 plotter zp[2]:16 50.5
byte* bitmap_plot::plotter#1 plotter zp[2]:16 151.5
@ -203,7 +203,7 @@ zp[2]:14 [ point_init::$19 point_init::$6 ]
reg byte a [ point_init::$9 ]
reg byte a [ point_init::$10 ]
zp[2]:16 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::remu#1 point_init::$17 point_init::y_diff#0 ]
zp[2]:18 [ bitmap_plot::$0 divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ]
reg byte x [ bitmap_plot::$1 ]
zp[2]:18 [ bitmap_plot::$1 divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ]
reg byte x [ bitmap_plot::$2 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]

View File

@ -280,7 +280,7 @@ init_dist_screen: {
// Utilizes symmetry around the center
// init_angle_screen(byte* zp(4) screen)
init_angle_screen: {
.label __7 = $11
.label __9 = $11
.label screen = 4
.label screen_bottomline = 4
.label xw = $16
@ -346,14 +346,14 @@ init_angle_screen: {
eor #$ff
sec
adc #$27
// signed word xw = (signed word)(word){ 39-x*2, 0 }
// MAKEWORD( 39-x*2, 0 )
ldy #0
sta.z xw+1
sty.z xw
// y*2
lda.z y
asl
// signed word yw = (signed word)(word){ y*2, 0 }
// MAKEWORD( y*2, 0 )
sta.z yw+1
sty.z yw
// atan2_16(xw, yw)
@ -362,13 +362,13 @@ init_angle_screen: {
// angle_w+0x0080
lda #$80
clc
adc.z __7
sta.z __7
adc.z __9
sta.z __9
bcc !+
inc.z __7+1
inc.z __9+1
!:
// byte ang_w = BYTE1(angle_w+0x0080)
lda.z __7+1
lda.z __9+1
sta.z ang_w
// screen_bottomline[xb] = ang_w
ldy.z xb

View File

@ -177,8 +177,8 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
[79] init_angle_screen::$3 = init_angle_screen::x#2 << 1
[80] init_angle_screen::$4 = $27 - init_angle_screen::$3
[81] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0
[82] init_angle_screen::$5 = init_angle_screen::y#5 << 1
[83] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0
[82] init_angle_screen::$6 = init_angle_screen::y#5 << 1
[83] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0
[84] atan2_16::x#0 = (signed word)init_angle_screen::xw#0
[85] atan2_16::y#0 = (signed word)init_angle_screen::yw#0
[86] call atan2_16
@ -186,15 +186,15 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
[88] init_angle_screen::angle_w#0 = atan2_16::return#2
[89] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
[90] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7
[89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
[90] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9
[91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
[92] init_angle_screen::$9 = - init_angle_screen::ang_w#0
[93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9
[94] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
[95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10
[96] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
[97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11
[92] init_angle_screen::$11 = - init_angle_screen::ang_w#0
[93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11
[94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
[95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12
[96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
[97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13
[98] init_angle_screen::x#1 = ++ init_angle_screen::x#2
[99] init_angle_screen::xb#1 = -- init_angle_screen::xb#2
to:init_angle_screen::@2

View File

@ -843,9 +843,11 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
init_angle_screen::x#3 = phi( init_angle_screen::@2/init_angle_screen::x#2 )
init_angle_screen::$3 = init_angle_screen::x#3 * 2
init_angle_screen::$4 = $27 - init_angle_screen::$3
init_angle_screen::xw#0 = (signed word)(word){ init_angle_screen::$4, 0 }
init_angle_screen::$5 = init_angle_screen::y#2 * 2
init_angle_screen::yw#0 = (signed word)(word){ init_angle_screen::$5, 0 }
init_angle_screen::$5 = init_angle_screen::$4 w= 0
init_angle_screen::xw#0 = (signed word)init_angle_screen::$5
init_angle_screen::$6 = init_angle_screen::y#2 * 2
init_angle_screen::$7 = init_angle_screen::$6 w= 0
init_angle_screen::yw#0 = (signed word)init_angle_screen::$7
atan2_16::x#0 = init_angle_screen::xw#0
atan2_16::y#0 = init_angle_screen::yw#0
call atan2_16
@ -858,18 +860,18 @@ init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
init_angle_screen::xb#2 = phi( init_angle_screen::@3/init_angle_screen::xb#3 )
init_angle_screen::screen_bottomline#2 = phi( init_angle_screen::@3/init_angle_screen::screen_bottomline#4 )
atan2_16::return#4 = phi( init_angle_screen::@3/atan2_16::return#2 )
init_angle_screen::$6 = atan2_16::return#4
init_angle_screen::angle_w#0 = init_angle_screen::$6
init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
init_angle_screen::$8 = byte1 init_angle_screen::$7
init_angle_screen::ang_w#0 = init_angle_screen::$8
init_angle_screen::$8 = atan2_16::return#4
init_angle_screen::angle_w#0 = init_angle_screen::$8
init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
init_angle_screen::$10 = byte1 init_angle_screen::$9
init_angle_screen::ang_w#0 = init_angle_screen::$10
init_angle_screen::screen_bottomline#2[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
init_angle_screen::$9 = - init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::xb#2] = init_angle_screen::$9
init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::x#4] = init_angle_screen::$10
init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
init_angle_screen::screen_bottomline#2[init_angle_screen::x#4] = init_angle_screen::$11
init_angle_screen::$11 = - init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::xb#2] = init_angle_screen::$11
init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::x#4] = init_angle_screen::$12
init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
init_angle_screen::screen_bottomline#2[init_angle_screen::x#4] = init_angle_screen::$13
init_angle_screen::x#1 = ++ init_angle_screen::x#4
init_angle_screen::xb#1 = -- init_angle_screen::xb#2
to:init_angle_screen::@2
@ -880,8 +882,8 @@ init_angle_screen::@4: scope:[init_angle_screen] from init_angle_screen::@2
init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#3 - $28
init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#3 + $28
init_angle_screen::y#1 = init_angle_screen::y#3 + rangenext(0,$c)
init_angle_screen::$12 = init_angle_screen::y#1 != rangelast(0,$c)
if(init_angle_screen::$12) goto init_angle_screen::@1
init_angle_screen::$14 = init_angle_screen::y#1 != rangelast(0,$c)
if(init_angle_screen::$14) goto init_angle_screen::@1
to:init_angle_screen::@return
init_angle_screen::@return: scope:[init_angle_screen] from init_angle_screen::@4
return
@ -1909,17 +1911,19 @@ byte* heap_head#9
void init_angle_screen(byte* init_angle_screen::screen)
byte*~ init_angle_screen::$0
byte*~ init_angle_screen::$1
number~ init_angle_screen::$10
number~ init_angle_screen::$11
bool~ init_angle_screen::$12
byte~ init_angle_screen::$10
byte~ init_angle_screen::$11
number~ init_angle_screen::$12
number~ init_angle_screen::$13
bool~ init_angle_screen::$14
bool~ init_angle_screen::$2
number~ init_angle_screen::$3
number~ init_angle_screen::$4
number~ init_angle_screen::$5
word~ init_angle_screen::$6
number~ init_angle_screen::$7
byte~ init_angle_screen::$8
byte~ init_angle_screen::$9
word~ init_angle_screen::$5
number~ init_angle_screen::$6
word~ init_angle_screen::$7
word~ init_angle_screen::$8
number~ init_angle_screen::$9
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0
word init_angle_screen::angle_w
@ -2541,9 +2545,6 @@ word sqrt::val
word sqrt::val#0
word sqrt::val#1
Fixing inline constructor with init_angle_screen::$13 = (byte)init_angle_screen::$4 w= (byte)0
Fixing inline constructor with init_angle_screen::$14 = (byte)init_angle_screen::$5 w= (byte)0
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) 0 in memset::$0 = memset::num#2 > 0
Adding number conversion cast (unumber) 0 in bsearch16u::$5 = bsearch16u::num#3 > 0
Adding number conversion cast (unumber) 1 in bsearch16u::$6 = bsearch16u::num#4 >> 1
@ -2607,14 +2608,16 @@ Adding number conversion cast (unumber) 2 in init_angle_screen::$3 = init_angle_
Adding number conversion cast (unumber) init_angle_screen::$3 in init_angle_screen::$3 = init_angle_screen::x#3 * (unumber)2
Adding number conversion cast (unumber) $27 in init_angle_screen::$4 = $27 - init_angle_screen::$3
Adding number conversion cast (unumber) init_angle_screen::$4 in init_angle_screen::$4 = (unumber)$27 - init_angle_screen::$3
Adding number conversion cast (unumber) 2 in init_angle_screen::$5 = init_angle_screen::y#2 * 2
Adding number conversion cast (unumber) init_angle_screen::$5 in init_angle_screen::$5 = init_angle_screen::y#2 * (unumber)2
Adding number conversion cast (unumber) $80 in init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
Adding number conversion cast (unumber) init_angle_screen::$7 in init_angle_screen::$7 = init_angle_screen::angle_w#0 + (unumber)$80
Adding number conversion cast (unumber) $80 in init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$10 in init_angle_screen::$10 = (unumber)$80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$11 in init_angle_screen::$11 = (unumber)$80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) 0 in init_angle_screen::$5 = init_angle_screen::$4 w= 0
Adding number conversion cast (unumber) 2 in init_angle_screen::$6 = init_angle_screen::y#2 * 2
Adding number conversion cast (unumber) init_angle_screen::$6 in init_angle_screen::$6 = init_angle_screen::y#2 * (unumber)2
Adding number conversion cast (unumber) 0 in init_angle_screen::$7 = init_angle_screen::$6 w= 0
Adding number conversion cast (unumber) $80 in init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
Adding number conversion cast (unumber) init_angle_screen::$9 in init_angle_screen::$9 = init_angle_screen::angle_w#0 + (unumber)$80
Adding number conversion cast (unumber) $80 in init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$12 in init_angle_screen::$12 = (unumber)$80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$13 in init_angle_screen::$13 = (unumber)$80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $28 in init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#3 - $28
Adding number conversion cast (unumber) $28 in init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#3 + $28
Adding number conversion cast (unumber) $30 in NUM_SQUARES#2 = $30
@ -2811,7 +2814,9 @@ Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) $13
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $27
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $80
@ -2857,10 +2862,10 @@ Inferred type updated to byte in main::toD0182_$5 = main::toD0182_$4 & $f
Inferred type updated to byte in main::toD0182_$6 = main::toD0182_$2 | main::toD0182_$5
Inferred type updated to byte in init_angle_screen::$3 = init_angle_screen::x#3 * 2
Inferred type updated to byte in init_angle_screen::$4 = $27 - init_angle_screen::$3
Inferred type updated to byte in init_angle_screen::$5 = init_angle_screen::y#2 * 2
Inferred type updated to word in init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
Inferred type updated to byte in init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
Inferred type updated to byte in init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
Inferred type updated to byte in init_angle_screen::$6 = init_angle_screen::y#2 * 2
Inferred type updated to word in init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
Inferred type updated to byte in init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
Inferred type updated to byte in init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
Inferred type updated to byte in init_dist_screen::$2 = init_dist_screen::y#2 * 2
Inferred type updated to byte in init_dist_screen::$6 = init_dist_screen::y2#1 - $18
Inferred type updated to byte in init_dist_screen::$7 = init_dist_screen::$6
@ -3013,8 +3018,8 @@ Alias init_angle_screen::screen_bottomline#2 = init_angle_screen::screen_bottoml
Alias init_angle_screen::xb#2 = init_angle_screen::xb#3 init_angle_screen::xb#4
Alias init_angle_screen::screen_topline#2 = init_angle_screen::screen_topline#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#3
Alias atan2_16::return#2 = atan2_16::return#4
Alias init_angle_screen::angle_w#0 = init_angle_screen::$6
Alias init_angle_screen::ang_w#0 = init_angle_screen::$8
Alias init_angle_screen::angle_w#0 = init_angle_screen::$8
Alias init_angle_screen::ang_w#0 = init_angle_screen::$10
Alias init_dist_screen::screen#1 = init_dist_screen::screen#2 init_dist_screen::screen_topline#0
Alias NUM_SQUARES#2 = NUM_SQUARES#44
Alias heap_head#19 = heap_head#6
@ -3292,7 +3297,7 @@ Simple Condition atan2_16::$14 [124] if(atan2_16::y#0>=0) goto atan2_16::@8
Simple Condition doplasma::$3 [198] if(doplasma::x#1!=rangelast(0,$27)) goto doplasma::@2
Simple Condition doplasma::$4 [204] if(doplasma::y#1!=rangelast(0,$19)) goto doplasma::@1
Simple Condition init_angle_screen::$2 [217] if(init_angle_screen::x#2<=$13) goto init_angle_screen::@3
Simple Condition init_angle_screen::$12 [245] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1
Simple Condition init_angle_screen::$14 [245] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1
Simple Condition init_dist_screen::$3 [256] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2
Simple Condition init_dist_screen::$10 [268] if(init_dist_screen::x#2<=$13) goto init_dist_screen::@6
Simple Condition init_dist_screen::$12 [271] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8
@ -3397,8 +3402,6 @@ Simplifying constant integer cast $28
Simplifying constant integer cast $1a
Simplifying constant integer cast $13+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast init_angle_screen::$4
Simplifying constant integer cast init_angle_screen::$5
Simplifying constant integer cast $d
Simplifying constant integer cast $13+(unumber)1
Simplifying constant integer cast 1
@ -3463,8 +3466,8 @@ Inlining Noop Cast [234] malloc::return#3 = (void*)malloc::mem#0 keeping malloc:
Inlining Noop Cast [238] malloc::return#4 = (void*)malloc::mem#0 keeping malloc::mem#0
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [37] SQUARES#0 = (word*)init_squares::$1 keeping SQUARES#0
Inlining Noop Cast [141] init_angle_screen::xw#0 = (signed word)init_angle_screen::$13 keeping init_angle_screen::xw#0
Inlining Noop Cast [144] init_angle_screen::yw#0 = (signed word)init_angle_screen::$14 keeping init_angle_screen::yw#0
Inlining Noop Cast [141] init_angle_screen::xw#0 = (signed word)init_angle_screen::$5 keeping init_angle_screen::xw#0
Inlining Noop Cast [144] init_angle_screen::yw#0 = (signed word)init_angle_screen::$7 keeping init_angle_screen::yw#0
Inlining Noop Cast [236] SCREEN_DIST#0 = (byte*)__start::__init1_$0 keeping SCREEN_DIST#0
Inlining Noop Cast [240] SCREEN_ANGLE#0 = (byte*)__start::__init1_$1 keeping SCREEN_ANGLE#0
Successful SSA optimization Pass2NopCastInlining
@ -3476,7 +3479,7 @@ Rewriting division to use shift [70] atan2_16::angle#1 = atan2_16::angle#6 / 2
Rewriting multiplication to use shift [84] atan2_16::$22 = atan2_16::i#2 * SIZEOF_WORD
Rewriting multiplication to use shift [88] atan2_16::$23 = atan2_16::i#2 * SIZEOF_WORD
Rewriting multiplication to use shift [138] init_angle_screen::$3 = init_angle_screen::x#2 * 2
Rewriting multiplication to use shift [142] init_angle_screen::$5 = init_angle_screen::y#5 * 2
Rewriting multiplication to use shift [142] init_angle_screen::$6 = init_angle_screen::y#5 * 2
Rewriting multiplication to use shift [169] init_dist_screen::y2#0 = init_dist_screen::y#10 * 2
Rewriting multiplication to use shift [180] init_dist_screen::x2#0 = init_dist_screen::x#2 * 2
Rewriting multiplication to use shift [221] make_plasma_charset::$10 = make_plasma_charset::c#2 * 8
@ -3965,8 +3968,8 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
[79] init_angle_screen::$3 = init_angle_screen::x#2 << 1
[80] init_angle_screen::$4 = $27 - init_angle_screen::$3
[81] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0
[82] init_angle_screen::$5 = init_angle_screen::y#5 << 1
[83] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0
[82] init_angle_screen::$6 = init_angle_screen::y#5 << 1
[83] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0
[84] atan2_16::x#0 = (signed word)init_angle_screen::xw#0
[85] atan2_16::y#0 = (signed word)init_angle_screen::yw#0
[86] call atan2_16
@ -3974,15 +3977,15 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
[88] init_angle_screen::angle_w#0 = atan2_16::return#2
[89] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
[90] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7
[89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
[90] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9
[91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
[92] init_angle_screen::$9 = - init_angle_screen::ang_w#0
[93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9
[94] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
[95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10
[96] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
[97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11
[92] init_angle_screen::$11 = - init_angle_screen::ang_w#0
[93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11
[94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
[95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12
[96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
[97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13
[98] init_angle_screen::x#1 = ++ init_angle_screen::x#2
[99] init_angle_screen::xb#1 = -- init_angle_screen::xb#2
to:init_angle_screen::@2
@ -4447,13 +4450,13 @@ byte* heap_head
byte* heap_head#0 1100.4
byte* heap_head#13 11004.0
void init_angle_screen(byte* init_angle_screen::screen)
byte~ init_angle_screen::$10 20002.0
byte~ init_angle_screen::$11 20002.0
byte~ init_angle_screen::$12 20002.0
byte~ init_angle_screen::$13 20002.0
byte~ init_angle_screen::$3 20002.0
byte~ init_angle_screen::$4 20002.0
byte~ init_angle_screen::$5 20002.0
word~ init_angle_screen::$7 20002.0
byte~ init_angle_screen::$9 20002.0
byte~ init_angle_screen::$6 20002.0
word~ init_angle_screen::$9 20002.0
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0 8334.166666666666
word init_angle_screen::angle_w
@ -4684,17 +4687,17 @@ Added variable init_dist_screen::d#0 to live range equivalence class [ init_dist
Added variable init_angle_screen::$3 to live range equivalence class [ init_angle_screen::$3 ]
Added variable init_angle_screen::$4 to live range equivalence class [ init_angle_screen::$4 ]
Added variable init_angle_screen::xw#0 to live range equivalence class [ init_angle_screen::xw#0 ]
Added variable init_angle_screen::$5 to live range equivalence class [ init_angle_screen::$5 ]
Added variable init_angle_screen::$6 to live range equivalence class [ init_angle_screen::$6 ]
Added variable init_angle_screen::yw#0 to live range equivalence class [ init_angle_screen::yw#0 ]
Added variable atan2_16::x#0 to live range equivalence class [ atan2_16::x#0 ]
Added variable atan2_16::y#0 to live range equivalence class [ atan2_16::y#0 ]
Added variable atan2_16::return#2 to live range equivalence class [ atan2_16::return#2 ]
Added variable init_angle_screen::angle_w#0 to live range equivalence class [ init_angle_screen::angle_w#0 ]
Added variable init_angle_screen::$7 to live range equivalence class [ init_angle_screen::$7 ]
Added variable init_angle_screen::ang_w#0 to live range equivalence class [ init_angle_screen::ang_w#0 ]
Added variable init_angle_screen::$9 to live range equivalence class [ init_angle_screen::$9 ]
Added variable init_angle_screen::$10 to live range equivalence class [ init_angle_screen::$10 ]
Added variable init_angle_screen::ang_w#0 to live range equivalence class [ init_angle_screen::ang_w#0 ]
Added variable init_angle_screen::$11 to live range equivalence class [ init_angle_screen::$11 ]
Added variable init_angle_screen::$12 to live range equivalence class [ init_angle_screen::$12 ]
Added variable init_angle_screen::$13 to live range equivalence class [ init_angle_screen::$13 ]
Added variable make_plasma_charset::$3 to live range equivalence class [ make_plasma_charset::$3 ]
Added variable make_plasma_charset::s#0 to live range equivalence class [ make_plasma_charset::s#0 ]
Added variable make_plasma_charset::$12 to live range equivalence class [ make_plasma_charset::$12 ]
@ -4785,17 +4788,17 @@ Complete equivalence classes
[ init_angle_screen::$3 ]
[ init_angle_screen::$4 ]
[ init_angle_screen::xw#0 ]
[ init_angle_screen::$5 ]
[ init_angle_screen::$6 ]
[ init_angle_screen::yw#0 ]
[ atan2_16::x#0 ]
[ atan2_16::y#0 ]
[ atan2_16::return#2 ]
[ init_angle_screen::angle_w#0 ]
[ init_angle_screen::$7 ]
[ init_angle_screen::ang_w#0 ]
[ init_angle_screen::$9 ]
[ init_angle_screen::$10 ]
[ init_angle_screen::ang_w#0 ]
[ init_angle_screen::$11 ]
[ init_angle_screen::$12 ]
[ init_angle_screen::$13 ]
[ make_plasma_charset::$3 ]
[ make_plasma_charset::s#0 ]
[ make_plasma_charset::$12 ]
@ -4885,17 +4888,17 @@ Allocated zp[1]:90 [ init_dist_screen::d#0 ]
Allocated zp[1]:91 [ init_angle_screen::$3 ]
Allocated zp[1]:92 [ init_angle_screen::$4 ]
Allocated zp[2]:93 [ init_angle_screen::xw#0 ]
Allocated zp[1]:95 [ init_angle_screen::$5 ]
Allocated zp[1]:95 [ init_angle_screen::$6 ]
Allocated zp[2]:96 [ init_angle_screen::yw#0 ]
Allocated zp[2]:98 [ atan2_16::x#0 ]
Allocated zp[2]:100 [ atan2_16::y#0 ]
Allocated zp[2]:102 [ atan2_16::return#2 ]
Allocated zp[2]:104 [ init_angle_screen::angle_w#0 ]
Allocated zp[2]:106 [ init_angle_screen::$7 ]
Allocated zp[2]:106 [ init_angle_screen::$9 ]
Allocated zp[1]:108 [ init_angle_screen::ang_w#0 ]
Allocated zp[1]:109 [ init_angle_screen::$9 ]
Allocated zp[1]:110 [ init_angle_screen::$10 ]
Allocated zp[1]:111 [ init_angle_screen::$11 ]
Allocated zp[1]:109 [ init_angle_screen::$11 ]
Allocated zp[1]:110 [ init_angle_screen::$12 ]
Allocated zp[1]:111 [ init_angle_screen::$13 ]
Allocated zp[1]:112 [ make_plasma_charset::$3 ]
Allocated zp[1]:113 [ make_plasma_charset::s#0 ]
Allocated zp[1]:114 [ make_plasma_charset::$12 ]
@ -4961,16 +4964,16 @@ Statement [79] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_
Removing always clobbered register reg byte a as potential for zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Statement [80] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [82] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [82] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [84] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [85] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [87] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [88] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
Statement [89] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
Statement [92] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [92] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:108 [ init_angle_screen::ang_w#0 ]
Statement [94] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
Statement [96] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { } ) always clobbers reg byte a
Statement [96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { } ) always clobbers reg byte a
Statement [101] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a
Statement [102] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a
Statement [106] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#19 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 ] { } ) always clobbers reg byte a
@ -5104,16 +5107,16 @@ Statement [74] init_angle_screen::screen_topline#1 = init_angle_screen::screen_t
Statement [75] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
Statement [79] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [80] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [82] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [82] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [84] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [85] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [87] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [88] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
Statement [89] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
Statement [89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
Statement [92] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [94] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
Statement [96] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [92] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { } ) always clobbers reg byte a
Statement [96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { } ) always clobbers reg byte a
Statement [101] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a
Statement [102] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a
Statement [106] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#19 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 ] { } ) always clobbers reg byte a
@ -5221,16 +5224,16 @@ Statement [74] init_angle_screen::screen_topline#1 = init_angle_screen::screen_t
Statement [75] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
Statement [79] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [80] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [82] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [82] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [84] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [85] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [87] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [88] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
Statement [89] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
Statement [89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
Statement [92] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [94] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
Statement [96] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [92] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { } ) always clobbers reg byte a
Statement [96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { } ) always clobbers reg byte a
Statement [101] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a
Statement [102] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a
Statement [106] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#19 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 ] { } ) always clobbers reg byte a
@ -5367,17 +5370,17 @@ Potential registers zp[1]:90 [ init_dist_screen::d#0 ] : zp[1]:90 , reg byte a ,
Potential registers zp[1]:91 [ init_angle_screen::$3 ] : zp[1]:91 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:92 [ init_angle_screen::$4 ] : zp[1]:92 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:93 [ init_angle_screen::xw#0 ] : zp[2]:93 ,
Potential registers zp[1]:95 [ init_angle_screen::$5 ] : zp[1]:95 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:95 [ init_angle_screen::$6 ] : zp[1]:95 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:96 [ init_angle_screen::yw#0 ] : zp[2]:96 ,
Potential registers zp[2]:98 [ atan2_16::x#0 ] : zp[2]:98 ,
Potential registers zp[2]:100 [ atan2_16::y#0 ] : zp[2]:100 ,
Potential registers zp[2]:102 [ atan2_16::return#2 ] : zp[2]:102 ,
Potential registers zp[2]:104 [ init_angle_screen::angle_w#0 ] : zp[2]:104 ,
Potential registers zp[2]:106 [ init_angle_screen::$7 ] : zp[2]:106 ,
Potential registers zp[2]:106 [ init_angle_screen::$9 ] : zp[2]:106 ,
Potential registers zp[1]:108 [ init_angle_screen::ang_w#0 ] : zp[1]:108 , reg byte x , reg byte y ,
Potential registers zp[1]:109 [ init_angle_screen::$9 ] : zp[1]:109 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:110 [ init_angle_screen::$10 ] : zp[1]:110 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:111 [ init_angle_screen::$11 ] : zp[1]:111 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:109 [ init_angle_screen::$11 ] : zp[1]:109 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:110 [ init_angle_screen::$12 ] : zp[1]:110 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:111 [ init_angle_screen::$13 ] : zp[1]:111 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:112 [ make_plasma_charset::$3 ] : zp[1]:112 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:113 [ make_plasma_charset::s#0 ] : zp[1]:113 , reg byte x ,
Potential registers zp[1]:114 [ make_plasma_charset::$12 ] : zp[1]:114 , reg byte a , reg byte x , reg byte y ,
@ -5416,7 +5419,7 @@ Uplift Scope [make_plasma_charset] 388,754: zp[1]:28 [ make_plasma_charset::b#2
Uplift Scope [sqrt] 200,002: zp[2]:141 [ sqrt::found#0 ] 200,002: zp[2]:143 [ sqrt::$2 ] 110,002: zp[2]:87 [ sqrt::val#0 ] 100,001: zp[2]:145 [ sqrt::$1 ] 36,667.33: zp[1]:147 [ sqrt::return#0 ] 20,002: zp[1]:89 [ sqrt::return#2 ]
Uplift Scope [memset] 356,672.33: zp[2]:32 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 18,333.67: zp[2]:123 [ memset::end#0 ] 14,285.86: zp[1]:31 [ memset::c#4 ] 0: zp[2]:29 [ memset::str#3 ]
Uplift Scope [sqr] 200,002: zp[1]:134 [ sqr::$0 ] 133,007: zp[1]:49 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 27,750.75: zp[2]:135 [ sqr::return#0 ] 20,002: zp[2]:81 [ sqr::return#3 ] 2,002: zp[2]:76 [ sqr::return#2 ]
Uplift Scope [init_angle_screen] 21,820.36: zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:91 [ init_angle_screen::$3 ] 20,002: zp[1]:92 [ init_angle_screen::$4 ] 20,002: zp[1]:95 [ init_angle_screen::$5 ] 20,002: zp[2]:104 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:106 [ init_angle_screen::$7 ] 20,002: zp[1]:109 [ init_angle_screen::$9 ] 20,002: zp[1]:110 [ init_angle_screen::$10 ] 20,002: zp[1]:111 [ init_angle_screen::$11 ] 12,858.43: zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:108 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:96 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:93 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,703.03: zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,623.54: zp[2]:16 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] 112: zp[2]:73 [ init_angle_screen::screen#0 ]
Uplift Scope [init_angle_screen] 21,820.36: zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:91 [ init_angle_screen::$3 ] 20,002: zp[1]:92 [ init_angle_screen::$4 ] 20,002: zp[1]:95 [ init_angle_screen::$6 ] 20,002: zp[2]:104 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:106 [ init_angle_screen::$9 ] 20,002: zp[1]:109 [ init_angle_screen::$11 ] 20,002: zp[1]:110 [ init_angle_screen::$12 ] 20,002: zp[1]:111 [ init_angle_screen::$13 ] 12,858.43: zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:108 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:96 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:93 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,703.03: zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,623.54: zp[2]:16 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] 112: zp[2]:73 [ init_angle_screen::screen#0 ]
Uplift Scope [init_dist_screen] 70,007: zp[1]:14 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 21,906.95: zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 20,002: zp[1]:80 [ init_dist_screen::x2#0 ] 20,002: zp[2]:83 [ init_dist_screen::xds#0 ] 20,002: zp[2]:85 [ init_dist_screen::ds#0 ] 13,001.3: zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 12,501.25: zp[1]:90 [ init_dist_screen::d#0 ] 7,007: zp[1]:11 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 2,002: zp[1]:75 [ init_dist_screen::y2#0 ] 1,589.82: zp[1]:6 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 1,539.18: zp[2]:9 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] 1,244.53: zp[2]:7 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] 478.35: zp[2]:78 [ init_dist_screen::yds#0 ]
Uplift Scope [init_squares] 25,716.86: zp[1]:44 [ init_squares::i#2 init_squares::i#1 ] 20,002: zp[1]:132 [ init_squares::$3 ] 20,002: zp[1]:133 [ init_squares::$4 ] 16,337.07: zp[2]:47 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 15,001.5: zp[2]:45 [ init_squares::sqr#2 init_squares::sqr#1 ]
Uplift Scope [] 12,104.4: zp[2]:2 [ heap_head#13 heap_head#0 ] 6,125.53: zp[2]:24 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ] 381.02: zp[1]:35 [ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ] 372.42: zp[1]:34 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ] 16.15: zp[2]:130 [ SQUARES#0 ] 0.05: zp[2]:69 [ SCREEN_ANGLE#0 ] 0.05: zp[2]:67 [ SCREEN_DIST#0 ]
@ -5439,7 +5442,7 @@ Limited combination testing to 100 combinations of 9216 possible.
Uplifting [sqrt] best 1342197 combination zp[2]:141 [ sqrt::found#0 ] zp[2]:143 [ sqrt::$2 ] zp[2]:87 [ sqrt::val#0 ] zp[2]:145 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ]
Uplifting [memset] best 1342181 combination zp[2]:32 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:123 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:29 [ memset::str#3 ]
Uplifting [sqr] best 1341844 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:135 [ sqr::return#0 ] zp[2]:81 [ sqr::return#3 ] zp[2]:76 [ sqr::return#2 ]
Uplifting [init_angle_screen] best 1340244 combination zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] zp[2]:104 [ init_angle_screen::angle_w#0 ] zp[2]:106 [ init_angle_screen::$7 ] zp[1]:109 [ init_angle_screen::$9 ] zp[1]:110 [ init_angle_screen::$10 ] zp[1]:111 [ init_angle_screen::$11 ] zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:108 [ init_angle_screen::ang_w#0 ] zp[2]:96 [ init_angle_screen::yw#0 ] zp[2]:93 [ init_angle_screen::xw#0 ] zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:16 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] zp[2]:73 [ init_angle_screen::screen#0 ]
Uplifting [init_angle_screen] best 1340244 combination zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$6 ] zp[2]:104 [ init_angle_screen::angle_w#0 ] zp[2]:106 [ init_angle_screen::$9 ] zp[1]:109 [ init_angle_screen::$11 ] zp[1]:110 [ init_angle_screen::$12 ] zp[1]:111 [ init_angle_screen::$13 ] zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:108 [ init_angle_screen::ang_w#0 ] zp[2]:96 [ init_angle_screen::yw#0 ] zp[2]:93 [ init_angle_screen::xw#0 ] zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:16 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] zp[2]:73 [ init_angle_screen::screen#0 ]
Limited combination testing to 100 combinations of 331776 possible.
Uplifting [init_dist_screen] best 1337044 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:83 [ init_dist_screen::xds#0 ] zp[2]:85 [ init_dist_screen::ds#0 ] zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:11 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:75 [ init_dist_screen::y2#0 ] zp[1]:6 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:9 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[2]:7 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:78 [ init_dist_screen::yds#0 ]
Limited combination testing to 100 combinations of 6144 possible.
@ -5464,12 +5467,12 @@ Attempting to uplift remaining variables inzp[1]:13 [ init_dist_screen::xb#2 ini
Uplifting [init_dist_screen] best 1336844 combination zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Attempting to uplift remaining variables inzp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Uplifting [init_angle_screen] best 1336844 combination zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Attempting to uplift remaining variables inzp[1]:109 [ init_angle_screen::$9 ]
Uplifting [init_angle_screen] best 1336244 combination reg byte a [ init_angle_screen::$9 ]
Attempting to uplift remaining variables inzp[1]:110 [ init_angle_screen::$10 ]
Uplifting [init_angle_screen] best 1335844 combination reg byte a [ init_angle_screen::$10 ]
Attempting to uplift remaining variables inzp[1]:111 [ init_angle_screen::$11 ]
Uplifting [init_angle_screen] best 1335244 combination reg byte a [ init_angle_screen::$11 ]
Attempting to uplift remaining variables inzp[1]:109 [ init_angle_screen::$11 ]
Uplifting [init_angle_screen] best 1336244 combination reg byte a [ init_angle_screen::$11 ]
Attempting to uplift remaining variables inzp[1]:110 [ init_angle_screen::$12 ]
Uplifting [init_angle_screen] best 1335844 combination reg byte a [ init_angle_screen::$12 ]
Attempting to uplift remaining variables inzp[1]:111 [ init_angle_screen::$13 ]
Uplifting [init_angle_screen] best 1335244 combination reg byte a [ init_angle_screen::$13 ]
Attempting to uplift remaining variables inzp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Uplifting [init_dist_screen] best 1335244 combination zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Attempting to uplift remaining variables inzp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
@ -5513,7 +5516,7 @@ Coalescing zero page register [ zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12
Coalescing zero page register [ zp[2]:64 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 ] ] with [ zp[2]:141 [ sqrt::found#0 sqrt::$2 ] ] - score: 1
Coalescing zero page register [ zp[2]:81 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 ] ] with [ zp[2]:85 [ init_dist_screen::ds#0 sqrt::val#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:115 [ make_plasma_charset::$10 make_plasma_charset::$11 ] ] with [ zp[2]:119 [ make_plasma_charset::$16 ] ] - score: 1
Coalescing zero page register [ zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp[2]:106 [ init_angle_screen::$7 ] ] - score: 1
Coalescing zero page register [ zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp[2]:106 [ init_angle_screen::$9 ] ] - score: 1
Coalescing zero page register [ zp[2]:64 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 ] ] with [ zp[2]:145 [ sqrt::$1 ] ] - score: 1
Coalescing zero page register [ zp[2]:81 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 ] ] with [ zp[2]:137 [ bsearch16u::key#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:9 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] ] with [ zp[2]:2 [ heap_head#13 heap_head#0 ] ]
@ -5529,7 +5532,7 @@ Coalescing zero page register [ zp[2]:45 [ init_squares::sqr#2 init_squares::sqr
Coalescing zero page register [ zp[2]:47 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] ] with [ zp[2]:40 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] ]
Coalescing zero page register [ zp[2]:64 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 ] ] with [ zp[2]:50 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] ]
Coalescing zero page register [ zp[2]:76 [ sqr::return#2 init_dist_screen::yds#0 ] ] with [ zp[2]:52 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ]
Coalescing zero page register [ zp[2]:81 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ] ] with [ zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] ]
Coalescing zero page register [ zp[2]:81 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ] ] with [ zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ] ]
Coalescing zero page register [ zp[1]:108 [ init_angle_screen::ang_w#0 ] ] with [ zp[1]:35 [ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ] ]
Coalescing zero page register [ zp[1]:113 [ make_plasma_charset::s#0 ] ] with [ zp[1]:42 [ doplasma::y#4 doplasma::y#1 ] ]
Coalescing zero page register [ zp[2]:115 [ make_plasma_charset::$10 make_plasma_charset::$11 make_plasma_charset::$16 ] ] with [ zp[2]:60 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] ]
@ -5553,7 +5556,7 @@ Allocated (was zp[2]:64) zp[2]:9 [ bsearch16u::return#1 bsearch16u::return#2 bse
Allocated (was zp[2]:67) zp[2]:11 [ SCREEN_DIST#0 ]
Allocated (was zp[2]:69) zp[2]:13 [ SCREEN_ANGLE#0 ]
Allocated (was zp[2]:76) zp[2]:15 [ sqr::return#2 init_dist_screen::yds#0 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ]
Allocated (was zp[2]:81) zp[2]:17 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
Allocated (was zp[2]:81) zp[2]:17 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ]
Allocated (was zp[1]:108) zp[1]:19 [ init_angle_screen::ang_w#0 sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ]
Allocated (was zp[1]:113) zp[1]:20 [ make_plasma_charset::s#0 doplasma::y#4 doplasma::y#1 init_angle_screen::x#2 init_angle_screen::x#1 init_dist_screen::x#2 init_dist_screen::x#1 ]
Allocated (was zp[1]:122) zp[1]:21 [ make_plasma_charset::$7 init_angle_screen::xb#2 init_angle_screen::xb#1 init_dist_screen::xb#2 init_dist_screen::xb#1 ]
@ -6031,7 +6034,7 @@ init_dist_screen: {
// Utilizes symmetry around the center
// init_angle_screen(byte* zp(4) screen)
init_angle_screen: {
.label __7 = $11
.label __9 = $11
.label screen = 4
.label screen_bottomline = 4
.label xw = $16
@ -6129,10 +6132,10 @@ init_angle_screen: {
ldy #0
sta.z xw+1
sty.z xw
// [82] init_angle_screen::$5 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
// [82] init_angle_screen::$6 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
lda.z y
asl
// [83] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 -- vwuz1=vbuaa_word_vbuc1
// [83] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0 -- vwuz1=vbuaa_word_vbuc1
ldy #0
sta.z yw+1
sty.z yw
@ -6145,41 +6148,41 @@ init_angle_screen: {
// init_angle_screen::@5
__b5:
// [88] init_angle_screen::angle_w#0 = atan2_16::return#2
// [89] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
// [89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
lda #$80
clc
adc.z __7
sta.z __7
adc.z __9
sta.z __9
bcc !+
inc.z __7+1
inc.z __9+1
!:
// [90] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7 -- vbuz1=_byte1_vwuz2
lda.z __7+1
// [90] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9 -- vbuz1=_byte1_vwuz2
lda.z __9+1
sta.z ang_w
// [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
lda.z ang_w
ldy.z xb
sta (screen_bottomline),y
// [92] init_angle_screen::$9 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
// [92] init_angle_screen::$11 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
lda.z ang_w
eor #$ff
clc
adc #1
// [93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa
// [93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z xb
sta (screen_topline),y
// [94] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
// [94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
lda #$80
clc
adc.z ang_w
// [95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa
// [95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z x
sta (screen_topline),y
// [96] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
// [96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
lda #$80
sec
sbc.z ang_w
// [97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
// [97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z x
sta (screen_bottomline),y
// [98] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1
@ -7661,13 +7664,13 @@ byte* heap_head
byte* heap_head#0 heap_head zp[2]:7 1100.4
byte* heap_head#13 heap_head zp[2]:7 11004.0
void init_angle_screen(byte* init_angle_screen::screen)
byte~ init_angle_screen::$10 reg byte a 20002.0
byte~ init_angle_screen::$11 reg byte a 20002.0
byte~ init_angle_screen::$12 reg byte a 20002.0
byte~ init_angle_screen::$13 reg byte a 20002.0
byte~ init_angle_screen::$3 reg byte a 20002.0
byte~ init_angle_screen::$4 reg byte a 20002.0
byte~ init_angle_screen::$5 reg byte a 20002.0
word~ init_angle_screen::$7 zp[2]:17 20002.0
byte~ init_angle_screen::$9 reg byte a 20002.0
byte~ init_angle_screen::$6 reg byte a 20002.0
word~ init_angle_screen::$9 zp[2]:17 20002.0
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0 ang_w zp[1]:19 8334.166666666666
word init_angle_screen::angle_w
@ -7863,16 +7866,16 @@ zp[2]:13 [ SCREEN_ANGLE#0 ]
reg byte a [ init_dist_screen::y2#0 ]
zp[2]:15 [ sqr::return#2 init_dist_screen::yds#0 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ]
reg byte a [ init_dist_screen::x2#0 ]
zp[2]:17 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
zp[2]:17 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ]
reg byte a [ sqrt::return#2 ]
reg byte a [ init_dist_screen::d#0 ]
reg byte a [ init_angle_screen::$3 ]
reg byte a [ init_angle_screen::$4 ]
reg byte a [ init_angle_screen::$5 ]
reg byte a [ init_angle_screen::$6 ]
zp[1]:19 [ init_angle_screen::ang_w#0 sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ]
reg byte a [ init_angle_screen::$9 ]
reg byte a [ init_angle_screen::$10 ]
reg byte a [ init_angle_screen::$11 ]
reg byte a [ init_angle_screen::$12 ]
reg byte a [ init_angle_screen::$13 ]
reg byte x [ make_plasma_charset::$3 ]
zp[1]:20 [ make_plasma_charset::s#0 doplasma::y#4 doplasma::y#1 init_angle_screen::x#2 init_angle_screen::x#1 init_dist_screen::x#2 init_dist_screen::x#1 ]
reg byte a [ make_plasma_charset::$12 ]
@ -8325,7 +8328,7 @@ init_dist_screen: {
// Utilizes symmetry around the center
// init_angle_screen(byte* zp(4) screen)
init_angle_screen: {
.label __7 = $11
.label __9 = $11
.label screen = 4
.label screen_bottomline = 4
.label xw = $16
@ -8417,17 +8420,17 @@ init_angle_screen: {
eor #$ff
sec
adc #$27
// signed word xw = (signed word)(word){ 39-x*2, 0 }
// MAKEWORD( 39-x*2, 0 )
// [81] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 -- vwuz1=vbuaa_word_vbuc1
ldy #0
sta.z xw+1
sty.z xw
// y*2
// [82] init_angle_screen::$5 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
// [82] init_angle_screen::$6 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
lda.z y
asl
// signed word yw = (signed word)(word){ y*2, 0 }
// [83] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 -- vwuz1=vbuaa_word_vbuc1
// MAKEWORD( y*2, 0 )
// [83] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0 -- vwuz1=vbuaa_word_vbuc1
sta.z yw+1
sty.z yw
// atan2_16(xw, yw)
@ -8440,46 +8443,46 @@ init_angle_screen: {
// word angle_w = atan2_16(xw, yw)
// [88] init_angle_screen::angle_w#0 = atan2_16::return#2
// angle_w+0x0080
// [89] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
// [89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
lda #$80
clc
adc.z __7
sta.z __7
adc.z __9
sta.z __9
bcc !+
inc.z __7+1
inc.z __9+1
!:
// byte ang_w = BYTE1(angle_w+0x0080)
// [90] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7 -- vbuz1=_byte1_vwuz2
lda.z __7+1
// [90] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9 -- vbuz1=_byte1_vwuz2
lda.z __9+1
sta.z ang_w
// screen_bottomline[xb] = ang_w
// [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
ldy.z xb
sta (screen_bottomline),y
// -ang_w
// [92] init_angle_screen::$9 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
// [92] init_angle_screen::$11 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
eor #$ff
clc
adc #1
// screen_topline[xb] = -ang_w
// [93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa
// [93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
sta (screen_topline),y
// 0x80+ang_w
// [94] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
// [94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
lda #$80
clc
adc.z ang_w
// screen_topline[x] = 0x80+ang_w
// [95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa
// [95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z x
sta (screen_topline),y
// 0x80-ang_w
// [96] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
// [96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
lda #$80
sec
sbc.z ang_w
// screen_bottomline[x] = 0x80-ang_w
// [97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
// [97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa
sta (screen_bottomline),y
// for( byte x=0,xb=39; x<=19; x++, xb--)
// [98] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1

View File

@ -139,13 +139,13 @@ byte* heap_head
byte* heap_head#0 heap_head zp[2]:7 1100.4
byte* heap_head#13 heap_head zp[2]:7 11004.0
void init_angle_screen(byte* init_angle_screen::screen)
byte~ init_angle_screen::$10 reg byte a 20002.0
byte~ init_angle_screen::$11 reg byte a 20002.0
byte~ init_angle_screen::$12 reg byte a 20002.0
byte~ init_angle_screen::$13 reg byte a 20002.0
byte~ init_angle_screen::$3 reg byte a 20002.0
byte~ init_angle_screen::$4 reg byte a 20002.0
byte~ init_angle_screen::$5 reg byte a 20002.0
word~ init_angle_screen::$7 zp[2]:17 20002.0
byte~ init_angle_screen::$9 reg byte a 20002.0
byte~ init_angle_screen::$6 reg byte a 20002.0
word~ init_angle_screen::$9 zp[2]:17 20002.0
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0 ang_w zp[1]:19 8334.166666666666
word init_angle_screen::angle_w
@ -341,16 +341,16 @@ zp[2]:13 [ SCREEN_ANGLE#0 ]
reg byte a [ init_dist_screen::y2#0 ]
zp[2]:15 [ sqr::return#2 init_dist_screen::yds#0 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ]
reg byte a [ init_dist_screen::x2#0 ]
zp[2]:17 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
zp[2]:17 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ]
reg byte a [ sqrt::return#2 ]
reg byte a [ init_dist_screen::d#0 ]
reg byte a [ init_angle_screen::$3 ]
reg byte a [ init_angle_screen::$4 ]
reg byte a [ init_angle_screen::$5 ]
reg byte a [ init_angle_screen::$6 ]
zp[1]:19 [ init_angle_screen::ang_w#0 sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ]
reg byte a [ init_angle_screen::$9 ]
reg byte a [ init_angle_screen::$10 ]
reg byte a [ init_angle_screen::$11 ]
reg byte a [ init_angle_screen::$12 ]
reg byte a [ init_angle_screen::$13 ]
reg byte x [ make_plasma_charset::$3 ]
zp[1]:20 [ make_plasma_charset::s#0 doplasma::y#4 doplasma::y#1 init_angle_screen::x#2 init_angle_screen::x#1 init_dist_screen::x#2 init_dist_screen::x#1 ]
reg byte a [ make_plasma_charset::$12 ]

View File

@ -214,7 +214,7 @@ clock_start: {
// Populates 1000 bytes (a screen) with values representing the angle to the center.
// Utilizes symmetry around the center
init_angle_screen: {
.label __7 = $f
.label __9 = $f
.label xw = $17
.label yw = $19
.label angle_w = $f
@ -275,14 +275,14 @@ init_angle_screen: {
eor #$ff
sec
adc #$27
// signed word xw = (signed word)(word){ 39-x*2, 0 }
// MAKEWORD( 39-x*2, 0 )
ldy #0
sta.z xw+1
sty.z xw
// y*2
lda.z y
asl
// signed word yw = (signed word)(word){ y*2, 0 }
// MAKEWORD( y*2, 0 )
sta.z yw+1
sty.z yw
// atan2_16(xw, yw)
@ -291,13 +291,13 @@ init_angle_screen: {
// angle_w+0x0080
lda #$80
clc
adc.z __7
sta.z __7
adc.z __9
sta.z __9
bcc !+
inc.z __7+1
inc.z __9+1
!:
// byte ang_w = BYTE1(angle_w+0x0080)
lda.z __7+1
lda.z __9+1
sta.z ang_w
// screen_bottomline[xb] = ang_w
ldy.z xb

View File

@ -119,8 +119,8 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
[55] init_angle_screen::$3 = init_angle_screen::x#2 << 1
[56] init_angle_screen::$4 = $27 - init_angle_screen::$3
[57] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0
[58] init_angle_screen::$5 = init_angle_screen::y#5 << 1
[59] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0
[58] init_angle_screen::$6 = init_angle_screen::y#5 << 1
[59] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0
[60] atan2_16::x#0 = (signed word)init_angle_screen::xw#0
[61] atan2_16::y#0 = (signed word)init_angle_screen::yw#0
[62] call atan2_16
@ -128,15 +128,15 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
[64] init_angle_screen::angle_w#0 = atan2_16::return#2
[65] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
[66] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7
[65] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
[66] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9
[67] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
[68] init_angle_screen::$9 = - init_angle_screen::ang_w#0
[69] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9
[70] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
[71] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10
[72] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
[73] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11
[68] init_angle_screen::$11 = - init_angle_screen::ang_w#0
[69] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11
[70] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
[71] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12
[72] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
[73] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13
[74] init_angle_screen::x#1 = ++ init_angle_screen::x#2
[75] init_angle_screen::xb#1 = -- init_angle_screen::xb#2
to:init_angle_screen::@2

View File

@ -506,9 +506,11 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
init_angle_screen::x#3 = phi( init_angle_screen::@2/init_angle_screen::x#2 )
init_angle_screen::$3 = init_angle_screen::x#3 * 2
init_angle_screen::$4 = $27 - init_angle_screen::$3
init_angle_screen::xw#0 = (signed word)(word){ init_angle_screen::$4, 0 }
init_angle_screen::$5 = init_angle_screen::y#2 * 2
init_angle_screen::yw#0 = (signed word)(word){ init_angle_screen::$5, 0 }
init_angle_screen::$5 = init_angle_screen::$4 w= 0
init_angle_screen::xw#0 = (signed word)init_angle_screen::$5
init_angle_screen::$6 = init_angle_screen::y#2 * 2
init_angle_screen::$7 = init_angle_screen::$6 w= 0
init_angle_screen::yw#0 = (signed word)init_angle_screen::$7
atan2_16::x#0 = init_angle_screen::xw#0
atan2_16::y#0 = init_angle_screen::yw#0
call atan2_16
@ -521,18 +523,18 @@ init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
init_angle_screen::xb#2 = phi( init_angle_screen::@3/init_angle_screen::xb#3 )
init_angle_screen::screen_bottomline#2 = phi( init_angle_screen::@3/init_angle_screen::screen_bottomline#4 )
atan2_16::return#4 = phi( init_angle_screen::@3/atan2_16::return#2 )
init_angle_screen::$6 = atan2_16::return#4
init_angle_screen::angle_w#0 = init_angle_screen::$6
init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
init_angle_screen::$8 = byte1 init_angle_screen::$7
init_angle_screen::ang_w#0 = init_angle_screen::$8
init_angle_screen::$8 = atan2_16::return#4
init_angle_screen::angle_w#0 = init_angle_screen::$8
init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
init_angle_screen::$10 = byte1 init_angle_screen::$9
init_angle_screen::ang_w#0 = init_angle_screen::$10
init_angle_screen::screen_bottomline#2[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
init_angle_screen::$9 = - init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::xb#2] = init_angle_screen::$9
init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::x#4] = init_angle_screen::$10
init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
init_angle_screen::screen_bottomline#2[init_angle_screen::x#4] = init_angle_screen::$11
init_angle_screen::$11 = - init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::xb#2] = init_angle_screen::$11
init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::x#4] = init_angle_screen::$12
init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
init_angle_screen::screen_bottomline#2[init_angle_screen::x#4] = init_angle_screen::$13
init_angle_screen::x#1 = ++ init_angle_screen::x#4
init_angle_screen::xb#1 = -- init_angle_screen::xb#2
to:init_angle_screen::@2
@ -543,8 +545,8 @@ init_angle_screen::@4: scope:[init_angle_screen] from init_angle_screen::@2
init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#3 - $28
init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#3 + $28
init_angle_screen::y#1 = init_angle_screen::y#3 + rangenext(0,$c)
init_angle_screen::$12 = init_angle_screen::y#1 != rangelast(0,$c)
if(init_angle_screen::$12) goto init_angle_screen::@1
init_angle_screen::$14 = init_angle_screen::y#1 != rangelast(0,$c)
if(init_angle_screen::$14) goto init_angle_screen::@1
to:init_angle_screen::@return
init_angle_screen::@return: scope:[init_angle_screen] from init_angle_screen::@4
return
@ -769,17 +771,19 @@ void clock_start()
void init_angle_screen(byte* init_angle_screen::screen)
byte*~ init_angle_screen::$0
byte*~ init_angle_screen::$1
number~ init_angle_screen::$10
number~ init_angle_screen::$11
bool~ init_angle_screen::$12
byte~ init_angle_screen::$10
byte~ init_angle_screen::$11
number~ init_angle_screen::$12
number~ init_angle_screen::$13
bool~ init_angle_screen::$14
bool~ init_angle_screen::$2
number~ init_angle_screen::$3
number~ init_angle_screen::$4
number~ init_angle_screen::$5
word~ init_angle_screen::$6
number~ init_angle_screen::$7
byte~ init_angle_screen::$8
byte~ init_angle_screen::$9
word~ init_angle_screen::$5
number~ init_angle_screen::$6
word~ init_angle_screen::$7
word~ init_angle_screen::$8
number~ init_angle_screen::$9
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0
word init_angle_screen::angle_w
@ -981,9 +985,6 @@ dword print_ulong_at::dw#0
dword print_ulong_at::dw#1
dword print_ulong_at::dw#2
Fixing inline constructor with init_angle_screen::$13 = (byte)init_angle_screen::$4 w= (byte)0
Fixing inline constructor with init_angle_screen::$14 = (byte)init_angle_screen::$5 w= (byte)0
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) 0 in init_font_hex::charset#2[init_font_hex::idx#0] = 0
Adding number conversion cast (unumber) 4 in init_font_hex::$0 = init_font_hex::proto_hi#2[init_font_hex::i#2] << 4
Adding number conversion cast (unumber) 1 in init_font_hex::$1 = init_font_hex::proto_lo#2[init_font_hex::i#2] << 1
@ -1043,14 +1044,16 @@ Adding number conversion cast (unumber) 2 in init_angle_screen::$3 = init_angle_
Adding number conversion cast (unumber) init_angle_screen::$3 in init_angle_screen::$3 = init_angle_screen::x#3 * (unumber)2
Adding number conversion cast (unumber) $27 in init_angle_screen::$4 = $27 - init_angle_screen::$3
Adding number conversion cast (unumber) init_angle_screen::$4 in init_angle_screen::$4 = (unumber)$27 - init_angle_screen::$3
Adding number conversion cast (unumber) 2 in init_angle_screen::$5 = init_angle_screen::y#2 * 2
Adding number conversion cast (unumber) init_angle_screen::$5 in init_angle_screen::$5 = init_angle_screen::y#2 * (unumber)2
Adding number conversion cast (unumber) $80 in init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
Adding number conversion cast (unumber) init_angle_screen::$7 in init_angle_screen::$7 = init_angle_screen::angle_w#0 + (unumber)$80
Adding number conversion cast (unumber) $80 in init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$10 in init_angle_screen::$10 = (unumber)$80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$11 in init_angle_screen::$11 = (unumber)$80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) 0 in init_angle_screen::$5 = init_angle_screen::$4 w= 0
Adding number conversion cast (unumber) 2 in init_angle_screen::$6 = init_angle_screen::y#2 * 2
Adding number conversion cast (unumber) init_angle_screen::$6 in init_angle_screen::$6 = init_angle_screen::y#2 * (unumber)2
Adding number conversion cast (unumber) 0 in init_angle_screen::$7 = init_angle_screen::$6 w= 0
Adding number conversion cast (unumber) $80 in init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
Adding number conversion cast (unumber) init_angle_screen::$9 in init_angle_screen::$9 = init_angle_screen::angle_w#0 + (unumber)$80
Adding number conversion cast (unumber) $80 in init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$12 in init_angle_screen::$12 = (unumber)$80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$13 in init_angle_screen::$13 = (unumber)$80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $28 in init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#3 - $28
Adding number conversion cast (unumber) $28 in init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#3 + $28
Successful SSA optimization PassNAddNumberTypeConversions
@ -1159,7 +1162,9 @@ Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) $13
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $27
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $80
@ -1181,10 +1186,10 @@ Inferred type updated to byte in main::toD0182_$5 = main::toD0182_$4 & $f
Inferred type updated to byte in main::toD0182_$6 = main::toD0182_$2 | main::toD0182_$5
Inferred type updated to byte in init_angle_screen::$3 = init_angle_screen::x#3 * 2
Inferred type updated to byte in init_angle_screen::$4 = $27 - init_angle_screen::$3
Inferred type updated to byte in init_angle_screen::$5 = init_angle_screen::y#2 * 2
Inferred type updated to word in init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
Inferred type updated to byte in init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
Inferred type updated to byte in init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
Inferred type updated to byte in init_angle_screen::$6 = init_angle_screen::y#2 * 2
Inferred type updated to word in init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
Inferred type updated to byte in init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
Inferred type updated to byte in init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
Inversing boolean not [59] atan2_16::$17 = atan2_16::yi#3 != 0 from [58] atan2_16::$16 = atan2_16::yi#3 == 0
Inversing boolean not [68] atan2_16::$11 = atan2_16::x#4 >= 0 from [67] atan2_16::$10 = atan2_16::x#4 < 0
Inversing boolean not [79] atan2_16::$19 = 0 == atan2_16::shift#4 from [78] atan2_16::$24 = 0 != atan2_16::shift#4
@ -1264,8 +1269,8 @@ Alias init_angle_screen::screen_bottomline#2 = init_angle_screen::screen_bottoml
Alias init_angle_screen::xb#2 = init_angle_screen::xb#3 init_angle_screen::xb#4
Alias init_angle_screen::screen_topline#2 = init_angle_screen::screen_topline#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#3
Alias atan2_16::return#2 = atan2_16::return#4
Alias init_angle_screen::angle_w#0 = init_angle_screen::$6
Alias init_angle_screen::ang_w#0 = init_angle_screen::$8
Alias init_angle_screen::angle_w#0 = init_angle_screen::$8
Alias init_angle_screen::ang_w#0 = init_angle_screen::$10
Successful SSA optimization Pass2AliasElimination
Alias atan2_16::x#1 = atan2_16::x#5 atan2_16::x#10
Alias atan2_16::y#1 = atan2_16::y#12 atan2_16::y#9
@ -1321,7 +1326,7 @@ Simple Condition atan2_16::$20 [62] if(atan2_16::yi#3>=0) goto atan2_16::@18
Simple Condition atan2_16::$21 [76] if(atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@10
Simple Condition atan2_16::$14 [79] if(atan2_16::y#0>=0) goto atan2_16::@8
Simple Condition init_angle_screen::$2 [165] if(init_angle_screen::x#2<=$13) goto init_angle_screen::@3
Simple Condition init_angle_screen::$12 [193] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1
Simple Condition init_angle_screen::$14 [193] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Negating conditional jump and destination [76] if(atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@12
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
@ -1400,8 +1405,6 @@ Simplifying constant integer cast CORDIC_ITERATIONS_16-1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $13+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast init_angle_screen::$4
Simplifying constant integer cast init_angle_screen::$5
Simplifying constant integer cast $d
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 5
@ -1455,14 +1458,14 @@ Successful SSA optimization Pass2ConstantRValueConsolidation
Constant main::toD0181_return#0 = main::toD0181_$2|main::toD0181_$5
Constant main::toD0182_return#0 = main::toD0182_$2|main::toD0182_$5
Successful SSA optimization Pass2ConstantIdentification
Inlining Noop Cast [112] init_angle_screen::xw#0 = (signed word)init_angle_screen::$13 keeping init_angle_screen::xw#0
Inlining Noop Cast [115] init_angle_screen::yw#0 = (signed word)init_angle_screen::$14 keeping init_angle_screen::yw#0
Inlining Noop Cast [112] init_angle_screen::xw#0 = (signed word)init_angle_screen::$5 keeping init_angle_screen::xw#0
Inlining Noop Cast [115] init_angle_screen::yw#0 = (signed word)init_angle_screen::$7 keeping init_angle_screen::yw#0
Successful SSA optimization Pass2NopCastInlining
Rewriting division to use shift [31] atan2_16::angle#1 = atan2_16::angle#6 / 2
Rewriting multiplication to use shift [45] atan2_16::$22 = atan2_16::i#2 * SIZEOF_WORD
Rewriting multiplication to use shift [49] atan2_16::$23 = atan2_16::i#2 * SIZEOF_WORD
Rewriting multiplication to use shift [109] init_angle_screen::$3 = init_angle_screen::x#2 * 2
Rewriting multiplication to use shift [113] init_angle_screen::$5 = init_angle_screen::y#5 * 2
Rewriting multiplication to use shift [113] init_angle_screen::$6 = init_angle_screen::y#5 * 2
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings init_font_hex::proto_hi#0
Inlining constant with var siblings init_font_hex::c#0
@ -1767,8 +1770,8 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
[55] init_angle_screen::$3 = init_angle_screen::x#2 << 1
[56] init_angle_screen::$4 = $27 - init_angle_screen::$3
[57] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0
[58] init_angle_screen::$5 = init_angle_screen::y#5 << 1
[59] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0
[58] init_angle_screen::$6 = init_angle_screen::y#5 << 1
[59] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0
[60] atan2_16::x#0 = (signed word)init_angle_screen::xw#0
[61] atan2_16::y#0 = (signed word)init_angle_screen::yw#0
[62] call atan2_16
@ -1776,15 +1779,15 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
[64] init_angle_screen::angle_w#0 = atan2_16::return#2
[65] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
[66] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7
[65] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
[66] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9
[67] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
[68] init_angle_screen::$9 = - init_angle_screen::ang_w#0
[69] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9
[70] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
[71] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10
[72] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
[73] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11
[68] init_angle_screen::$11 = - init_angle_screen::ang_w#0
[69] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11
[70] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
[71] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12
[72] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
[73] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13
[74] init_angle_screen::x#1 = ++ init_angle_screen::x#2
[75] init_angle_screen::xb#1 = -- init_angle_screen::xb#2
to:init_angle_screen::@2
@ -2018,13 +2021,13 @@ dword clock::return#0 4.333333333333333
dword clock::return#2 4.0
void clock_start()
void init_angle_screen(byte* init_angle_screen::screen)
byte~ init_angle_screen::$10 2002.0
byte~ init_angle_screen::$11 2002.0
byte~ init_angle_screen::$12 2002.0
byte~ init_angle_screen::$13 2002.0
byte~ init_angle_screen::$3 2002.0
byte~ init_angle_screen::$4 2002.0
byte~ init_angle_screen::$5 2002.0
word~ init_angle_screen::$7 2002.0
byte~ init_angle_screen::$9 2002.0
byte~ init_angle_screen::$6 2002.0
word~ init_angle_screen::$9 2002.0
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0 834.1666666666667
word init_angle_screen::angle_w
@ -2156,17 +2159,17 @@ Added variable init_font_hex::idx#3 to live range equivalence class [ init_font_
Added variable init_angle_screen::$3 to live range equivalence class [ init_angle_screen::$3 ]
Added variable init_angle_screen::$4 to live range equivalence class [ init_angle_screen::$4 ]
Added variable init_angle_screen::xw#0 to live range equivalence class [ init_angle_screen::xw#0 ]
Added variable init_angle_screen::$5 to live range equivalence class [ init_angle_screen::$5 ]
Added variable init_angle_screen::$6 to live range equivalence class [ init_angle_screen::$6 ]
Added variable init_angle_screen::yw#0 to live range equivalence class [ init_angle_screen::yw#0 ]
Added variable atan2_16::x#0 to live range equivalence class [ atan2_16::x#0 ]
Added variable atan2_16::y#0 to live range equivalence class [ atan2_16::y#0 ]
Added variable atan2_16::return#2 to live range equivalence class [ atan2_16::return#2 ]
Added variable init_angle_screen::angle_w#0 to live range equivalence class [ init_angle_screen::angle_w#0 ]
Added variable init_angle_screen::$7 to live range equivalence class [ init_angle_screen::$7 ]
Added variable init_angle_screen::ang_w#0 to live range equivalence class [ init_angle_screen::ang_w#0 ]
Added variable init_angle_screen::$9 to live range equivalence class [ init_angle_screen::$9 ]
Added variable init_angle_screen::$10 to live range equivalence class [ init_angle_screen::$10 ]
Added variable init_angle_screen::ang_w#0 to live range equivalence class [ init_angle_screen::ang_w#0 ]
Added variable init_angle_screen::$11 to live range equivalence class [ init_angle_screen::$11 ]
Added variable init_angle_screen::$12 to live range equivalence class [ init_angle_screen::$12 ]
Added variable init_angle_screen::$13 to live range equivalence class [ init_angle_screen::$13 ]
Added variable clock::return#0 to live range equivalence class [ clock::return#0 ]
Added variable atan2_16::$23 to live range equivalence class [ atan2_16::$23 ]
Added variable atan2_16::$22 to live range equivalence class [ atan2_16::$22 ]
@ -2210,17 +2213,17 @@ Complete equivalence classes
[ init_angle_screen::$3 ]
[ init_angle_screen::$4 ]
[ init_angle_screen::xw#0 ]
[ init_angle_screen::$5 ]
[ init_angle_screen::$6 ]
[ init_angle_screen::yw#0 ]
[ atan2_16::x#0 ]
[ atan2_16::y#0 ]
[ atan2_16::return#2 ]
[ init_angle_screen::angle_w#0 ]
[ init_angle_screen::$7 ]
[ init_angle_screen::ang_w#0 ]
[ init_angle_screen::$9 ]
[ init_angle_screen::$10 ]
[ init_angle_screen::ang_w#0 ]
[ init_angle_screen::$11 ]
[ init_angle_screen::$12 ]
[ init_angle_screen::$13 ]
[ clock::return#0 ]
[ atan2_16::$23 ]
[ atan2_16::$22 ]
@ -2263,17 +2266,17 @@ Allocated zp[1]:62 [ init_font_hex::idx#3 ]
Allocated zp[1]:63 [ init_angle_screen::$3 ]
Allocated zp[1]:64 [ init_angle_screen::$4 ]
Allocated zp[2]:65 [ init_angle_screen::xw#0 ]
Allocated zp[1]:67 [ init_angle_screen::$5 ]
Allocated zp[1]:67 [ init_angle_screen::$6 ]
Allocated zp[2]:68 [ init_angle_screen::yw#0 ]
Allocated zp[2]:70 [ atan2_16::x#0 ]
Allocated zp[2]:72 [ atan2_16::y#0 ]
Allocated zp[2]:74 [ atan2_16::return#2 ]
Allocated zp[2]:76 [ init_angle_screen::angle_w#0 ]
Allocated zp[2]:78 [ init_angle_screen::$7 ]
Allocated zp[2]:78 [ init_angle_screen::$9 ]
Allocated zp[1]:80 [ init_angle_screen::ang_w#0 ]
Allocated zp[1]:81 [ init_angle_screen::$9 ]
Allocated zp[1]:82 [ init_angle_screen::$10 ]
Allocated zp[1]:83 [ init_angle_screen::$11 ]
Allocated zp[1]:81 [ init_angle_screen::$11 ]
Allocated zp[1]:82 [ init_angle_screen::$12 ]
Allocated zp[1]:83 [ init_angle_screen::$13 ]
Allocated zp[4]:84 [ clock::return#0 ]
Allocated zp[1]:88 [ atan2_16::$23 ]
Allocated zp[1]:89 [ atan2_16::$22 ]
@ -2313,16 +2316,16 @@ Statement [55] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_
Removing always clobbered register reg byte a as potential for zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Statement [56] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [58] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [58] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [60] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [61] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [63] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [64] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
Statement [65] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
Statement [68] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [65] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [68] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:80 [ init_angle_screen::ang_w#0 ]
Statement [70] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
Statement [72] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [70] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { } ) always clobbers reg byte a
Statement [72] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { } ) always clobbers reg byte a
Statement [76] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:8 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
Statement [78] print_uint_at::w#0 = word1 print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:13 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
Statement [80] print_uint_at::w#1 = word0 print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:13 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
@ -2389,16 +2392,16 @@ Statement [50] init_angle_screen::screen_topline#1 = init_angle_screen::screen_t
Statement [51] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
Statement [55] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [56] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [58] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [58] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [60] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [61] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [63] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [64] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
Statement [65] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
Statement [65] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [67] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
Statement [68] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [70] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
Statement [72] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [68] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [70] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { } ) always clobbers reg byte a
Statement [72] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { } ) always clobbers reg byte a
Statement [76] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:8 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
Statement [78] print_uint_at::w#0 = word1 print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:13 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
Statement [80] print_uint_at::w#1 = word0 print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:13 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
@ -2473,17 +2476,17 @@ Potential registers zp[1]:62 [ init_font_hex::idx#3 ] : zp[1]:62 , reg byte a ,
Potential registers zp[1]:63 [ init_angle_screen::$3 ] : zp[1]:63 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:64 [ init_angle_screen::$4 ] : zp[1]:64 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:65 [ init_angle_screen::xw#0 ] : zp[2]:65 ,
Potential registers zp[1]:67 [ init_angle_screen::$5 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:67 [ init_angle_screen::$6 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:68 [ init_angle_screen::yw#0 ] : zp[2]:68 ,
Potential registers zp[2]:70 [ atan2_16::x#0 ] : zp[2]:70 ,
Potential registers zp[2]:72 [ atan2_16::y#0 ] : zp[2]:72 ,
Potential registers zp[2]:74 [ atan2_16::return#2 ] : zp[2]:74 ,
Potential registers zp[2]:76 [ init_angle_screen::angle_w#0 ] : zp[2]:76 ,
Potential registers zp[2]:78 [ init_angle_screen::$7 ] : zp[2]:78 ,
Potential registers zp[2]:78 [ init_angle_screen::$9 ] : zp[2]:78 ,
Potential registers zp[1]:80 [ init_angle_screen::ang_w#0 ] : zp[1]:80 , reg byte x , reg byte y ,
Potential registers zp[1]:81 [ init_angle_screen::$9 ] : zp[1]:81 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:82 [ init_angle_screen::$10 ] : zp[1]:82 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:83 [ init_angle_screen::$11 ] : zp[1]:83 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:81 [ init_angle_screen::$11 ] : zp[1]:81 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:82 [ init_angle_screen::$12 ] : zp[1]:82 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:83 [ init_angle_screen::$13 ] : zp[1]:83 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[4]:84 [ clock::return#0 ] : zp[4]:84 ,
Potential registers zp[1]:88 [ atan2_16::$23 ] : zp[1]:88 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:89 [ atan2_16::$22 ] : zp[1]:89 , reg byte a , reg byte x , reg byte y ,
@ -2494,7 +2497,7 @@ REGISTER UPLIFT SCOPES
Uplift Scope [atan2_16] 286,666,670.58: zp[1]:28 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 206,000,008: zp[2]:29 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 173,333,338.67: zp[2]:31 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 75,248,103.76: zp[2]:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 26,909,340.68: zp[2]:19 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 22,737,342.67: zp[2]:21 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 20,000,002: zp[1]:88 [ atan2_16::$23 ] 20,000,002: zp[1]:89 [ atan2_16::$22 ] 17,083,335.04: zp[1]:23 [ atan2_16::i#2 atan2_16::i#1 ] 82,008.5: zp[2]:26 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] 2,002: zp[2]:74 [ atan2_16::return#2 ] 1,079.08: zp[2]:70 [ atan2_16::x#0 ] 1,025.12: zp[2]:72 [ atan2_16::y#0 ]
Uplift Scope [init_font_hex] 21,668.83: zp[1]:10 [ init_font_hex::i#2 init_font_hex::i#1 ] 20,002: zp[1]:60 [ init_font_hex::$1 ] 20,002: zp[1]:61 [ init_font_hex::$2 ] 11,501.6: zp[1]:11 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 10,001: zp[1]:59 [ init_font_hex::$0 ] 2,002: zp[1]:62 [ init_font_hex::idx#3 ] 1,634.97: zp[1]:9 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 1,631.57: zp[2]:5 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 1,423.81: zp[2]:7 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 634.17: zp[2]:2 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 162.13: zp[1]:4 [ init_font_hex::c#6 init_font_hex::c#1 ]
Uplift Scope [print_char_at] 15,006: zp[1]:40 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 15,006: zp[2]:41 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
Uplift Scope [init_angle_screen] 2,184: zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 2,002: zp[1]:63 [ init_angle_screen::$3 ] 2,002: zp[1]:64 [ init_angle_screen::$4 ] 2,002: zp[1]:67 [ init_angle_screen::$5 ] 2,002: zp[2]:76 [ init_angle_screen::angle_w#0 ] 2,002: zp[2]:78 [ init_angle_screen::$7 ] 2,002: zp[1]:81 [ init_angle_screen::$9 ] 2,002: zp[1]:82 [ init_angle_screen::$10 ] 2,002: zp[1]:83 [ init_angle_screen::$11 ] 1,287: zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 834.17: zp[1]:80 [ init_angle_screen::ang_w#0 ] 500.5: zp[2]:68 [ init_angle_screen::yw#0 ] 333.67: zp[2]:65 [ init_angle_screen::xw#0 ] 197.77: zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 155.49: zp[2]:15 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] 142.33: zp[2]:13 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ]
Uplift Scope [init_angle_screen] 2,184: zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 2,002: zp[1]:63 [ init_angle_screen::$3 ] 2,002: zp[1]:64 [ init_angle_screen::$4 ] 2,002: zp[1]:67 [ init_angle_screen::$6 ] 2,002: zp[2]:76 [ init_angle_screen::angle_w#0 ] 2,002: zp[2]:78 [ init_angle_screen::$9 ] 2,002: zp[1]:81 [ init_angle_screen::$11 ] 2,002: zp[1]:82 [ init_angle_screen::$12 ] 2,002: zp[1]:83 [ init_angle_screen::$13 ] 1,287: zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 834.17: zp[1]:80 [ init_angle_screen::ang_w#0 ] 500.5: zp[2]:68 [ init_angle_screen::yw#0 ] 333.67: zp[2]:65 [ init_angle_screen::xw#0 ] 197.77: zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 155.49: zp[2]:15 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] 142.33: zp[2]:13 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ]
Uplift Scope [print_uchar_at] 2,002: zp[1]:90 [ print_uchar_at::$0 ] 1,001: zp[1]:91 [ print_uchar_at::$2 ] 771.33: zp[2]:38 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] 642.8: zp[1]:37 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
Uplift Scope [print_uint_at] 100: zp[2]:33 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] 40.4: zp[2]:35 [ print_uint_at::at#2 ]
Uplift Scope [clock] 4.33: zp[4]:84 [ clock::return#0 ] 4: zp[4]:43 [ clock::return#2 ]
@ -2512,7 +2515,7 @@ Limited combination testing to 100 combinations of 144 possible.
Uplifting [init_font_hex] best 1138259 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:11 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:59 [ init_font_hex::$0 ] zp[1]:62 [ init_font_hex::idx#3 ] zp[1]:9 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:5 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[2]:7 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:2 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:4 [ init_font_hex::c#6 init_font_hex::c#1 ]
Limited combination testing to 100 combinations of 6912 possible.
Uplifting [print_char_at] best 1138252 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:41 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
Uplifting [init_angle_screen] best 1136652 combination zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] zp[2]:76 [ init_angle_screen::angle_w#0 ] zp[2]:78 [ init_angle_screen::$7 ] zp[1]:81 [ init_angle_screen::$9 ] zp[1]:82 [ init_angle_screen::$10 ] zp[1]:83 [ init_angle_screen::$11 ] zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:80 [ init_angle_screen::ang_w#0 ] zp[2]:68 [ init_angle_screen::yw#0 ] zp[2]:65 [ init_angle_screen::xw#0 ] zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:15 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] zp[2]:13 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ]
Uplifting [init_angle_screen] best 1136652 combination zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$6 ] zp[2]:76 [ init_angle_screen::angle_w#0 ] zp[2]:78 [ init_angle_screen::$9 ] zp[1]:81 [ init_angle_screen::$11 ] zp[1]:82 [ init_angle_screen::$12 ] zp[1]:83 [ init_angle_screen::$13 ] zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:80 [ init_angle_screen::ang_w#0 ] zp[2]:68 [ init_angle_screen::yw#0 ] zp[2]:65 [ init_angle_screen::xw#0 ] zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:15 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] zp[2]:13 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ]
Limited combination testing to 100 combinations of 331776 possible.
Uplifting [print_uchar_at] best 1136644 combination reg byte a [ print_uchar_at::$0 ] reg byte y [ print_uchar_at::$2 ] zp[2]:38 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] zp[1]:37 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
Uplifting [print_uint_at] best 1136644 combination zp[2]:33 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] zp[2]:35 [ print_uint_at::at#2 ]
@ -2533,12 +2536,12 @@ Attempting to uplift remaining variables inzp[1]:18 [ init_angle_screen::xb#2 in
Uplifting [init_angle_screen] best 1136644 combination zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Attempting to uplift remaining variables inzp[1]:62 [ init_font_hex::idx#3 ]
Uplifting [init_font_hex] best 1136044 combination reg byte y [ init_font_hex::idx#3 ]
Attempting to uplift remaining variables inzp[1]:81 [ init_angle_screen::$9 ]
Uplifting [init_angle_screen] best 1135444 combination reg byte a [ init_angle_screen::$9 ]
Attempting to uplift remaining variables inzp[1]:82 [ init_angle_screen::$10 ]
Uplifting [init_angle_screen] best 1135044 combination reg byte a [ init_angle_screen::$10 ]
Attempting to uplift remaining variables inzp[1]:83 [ init_angle_screen::$11 ]
Uplifting [init_angle_screen] best 1134444 combination reg byte a [ init_angle_screen::$11 ]
Attempting to uplift remaining variables inzp[1]:81 [ init_angle_screen::$11 ]
Uplifting [init_angle_screen] best 1135444 combination reg byte a [ init_angle_screen::$11 ]
Attempting to uplift remaining variables inzp[1]:82 [ init_angle_screen::$12 ]
Uplifting [init_angle_screen] best 1135044 combination reg byte a [ init_angle_screen::$12 ]
Attempting to uplift remaining variables inzp[1]:83 [ init_angle_screen::$13 ]
Uplifting [init_angle_screen] best 1134444 combination reg byte a [ init_angle_screen::$13 ]
Attempting to uplift remaining variables inzp[1]:9 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
Uplifting [init_font_hex] best 1134444 combination zp[1]:9 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
Attempting to uplift remaining variables inzp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
@ -2561,7 +2564,7 @@ Coalescing zero page register [ zp[2]:68 [ init_angle_screen::yw#0 ] ] with [ zp
Coalescing zero page register [ zp[2]:74 [ atan2_16::return#2 ] ] with [ zp[2]:76 [ init_angle_screen::angle_w#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] with [ zp[2]:74 [ atan2_16::return#2 init_angle_screen::angle_w#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:43 [ clock::return#2 main::$4 clock::return#0 ] ] with [ zp[4]:51 [ main::cyclecount#0 print_ulong_at::dw#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp[2]:78 [ init_angle_screen::$7 ] ] - score: 1
Coalescing zero page register [ zp[2]:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp[2]:78 [ init_angle_screen::$9 ] ] - score: 1
Coalescing zero page register [ zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] ] with [ zp[1]:4 [ init_font_hex::c#6 init_font_hex::c#1 ] ]
Coalescing zero page register [ zp[2]:13 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ] ] with [ zp[2]:2 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] ]
Coalescing zero page register [ zp[2]:15 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] ] with [ zp[2]:5 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] ]
@ -2569,7 +2572,7 @@ Coalescing zero page register [ zp[1]:17 [ init_angle_screen::x#2 init_angle_scr
Coalescing zero page register [ zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] ] with [ zp[1]:11 [ init_font_hex::idx#5 init_font_hex::idx#2 ] ]
Coalescing zero page register [ zp[2]:19 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] ] with [ zp[2]:7 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] ]
Coalescing zero page register [ zp[2]:33 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] ] with [ zp[2]:21 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ]
Coalescing zero page register [ zp[2]:35 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ] with [ zp[2]:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] ]
Coalescing zero page register [ zp[2]:35 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ] with [ zp[2]:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ] ]
Coalescing zero page register [ zp[2]:41 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] ] with [ zp[2]:29 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] ]
Coalescing zero page register [ zp[1]:59 [ init_font_hex::$0 ] ] with [ zp[1]:37 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] ]
Coalescing zero page register [ zp[1]:80 [ init_angle_screen::ang_w#0 ] ] with [ zp[1]:59 [ init_font_hex::$0 print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] ]
@ -2581,7 +2584,7 @@ Allocated (was zp[1]:18) zp[1]:8 [ init_angle_screen::xb#2 init_angle_screen::xb
Allocated (was zp[2]:19) zp[2]:9 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
Allocated (was zp[2]:31) zp[2]:11 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
Allocated (was zp[2]:33) zp[2]:13 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
Allocated (was zp[2]:35) zp[2]:15 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
Allocated (was zp[2]:35) zp[2]:15 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ]
Allocated (was zp[2]:41) zp[2]:17 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
Allocated (was zp[4]:43) zp[4]:19 [ clock::return#2 main::$4 clock::return#0 main::cyclecount#0 print_ulong_at::dw#0 ]
Allocated (was zp[2]:65) zp[2]:23 [ init_angle_screen::xw#0 atan2_16::x#0 ]
@ -2905,7 +2908,7 @@ clock_start: {
// Populates 1000 bytes (a screen) with values representing the angle to the center.
// Utilizes symmetry around the center
init_angle_screen: {
.label __7 = $f
.label __9 = $f
.label xw = $17
.label yw = $19
.label angle_w = $f
@ -2997,10 +3000,10 @@ init_angle_screen: {
ldy #0
sta.z xw+1
sty.z xw
// [58] init_angle_screen::$5 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
// [58] init_angle_screen::$6 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
lda.z y
asl
// [59] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 -- vwuz1=vbuaa_word_vbuc1
// [59] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0 -- vwuz1=vbuaa_word_vbuc1
ldy #0
sta.z yw+1
sty.z yw
@ -3013,41 +3016,41 @@ init_angle_screen: {
// init_angle_screen::@5
__b5:
// [64] init_angle_screen::angle_w#0 = atan2_16::return#2
// [65] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
// [65] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
lda #$80
clc
adc.z __7
sta.z __7
adc.z __9
sta.z __9
bcc !+
inc.z __7+1
inc.z __9+1
!:
// [66] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7 -- vbuz1=_byte1_vwuz2
lda.z __7+1
// [66] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9 -- vbuz1=_byte1_vwuz2
lda.z __9+1
sta.z ang_w
// [67] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
lda.z ang_w
ldy.z xb
sta (screen_bottomline),y
// [68] init_angle_screen::$9 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
// [68] init_angle_screen::$11 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
lda.z ang_w
eor #$ff
clc
adc #1
// [69] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa
// [69] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z xb
sta (screen_topline),y
// [70] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
// [70] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
lda #$80
clc
adc.z ang_w
// [71] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa
// [71] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z x
sta (screen_topline),y
// [72] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
// [72] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
lda #$80
sec
sbc.z ang_w
// [73] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
// [73] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z x
sta (screen_bottomline),y
// [74] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1
@ -3800,13 +3803,13 @@ dword clock::return#0 return zp[4]:19 4.333333333333333
dword clock::return#2 return zp[4]:19 4.0
void clock_start()
void init_angle_screen(byte* init_angle_screen::screen)
byte~ init_angle_screen::$10 reg byte a 2002.0
byte~ init_angle_screen::$11 reg byte a 2002.0
byte~ init_angle_screen::$12 reg byte a 2002.0
byte~ init_angle_screen::$13 reg byte a 2002.0
byte~ init_angle_screen::$3 reg byte a 2002.0
byte~ init_angle_screen::$4 reg byte a 2002.0
byte~ init_angle_screen::$5 reg byte a 2002.0
word~ init_angle_screen::$7 zp[2]:15 2002.0
byte~ init_angle_screen::$9 reg byte a 2002.0
byte~ init_angle_screen::$6 reg byte a 2002.0
word~ init_angle_screen::$9 zp[2]:15 2002.0
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0 ang_w zp[1]:27 834.1666666666667
word init_angle_screen::angle_w
@ -3916,7 +3919,7 @@ reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
zp[2]:11 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
zp[2]:13 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
zp[2]:15 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
zp[2]:15 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ]
reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
zp[2]:17 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
zp[4]:19 [ clock::return#2 main::$4 clock::return#0 main::cyclecount#0 print_ulong_at::dw#0 ]
@ -3926,12 +3929,12 @@ reg byte y [ init_font_hex::idx#3 ]
reg byte a [ init_angle_screen::$3 ]
reg byte a [ init_angle_screen::$4 ]
zp[2]:23 [ init_angle_screen::xw#0 atan2_16::x#0 ]
reg byte a [ init_angle_screen::$5 ]
reg byte a [ init_angle_screen::$6 ]
zp[2]:25 [ init_angle_screen::yw#0 atan2_16::y#0 ]
zp[1]:27 [ init_angle_screen::ang_w#0 init_font_hex::$0 print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
reg byte a [ init_angle_screen::$9 ]
reg byte a [ init_angle_screen::$10 ]
reg byte a [ init_angle_screen::$11 ]
reg byte a [ init_angle_screen::$12 ]
reg byte a [ init_angle_screen::$13 ]
reg byte a [ atan2_16::$23 ]
reg byte a [ atan2_16::$22 ]
reg byte a [ print_uchar_at::$0 ]
@ -4244,7 +4247,7 @@ clock_start: {
// Populates 1000 bytes (a screen) with values representing the angle to the center.
// Utilizes symmetry around the center
init_angle_screen: {
.label __7 = $f
.label __9 = $f
.label xw = $17
.label yw = $19
.label angle_w = $f
@ -4329,17 +4332,17 @@ init_angle_screen: {
eor #$ff
sec
adc #$27
// signed word xw = (signed word)(word){ 39-x*2, 0 }
// MAKEWORD( 39-x*2, 0 )
// [57] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 -- vwuz1=vbuaa_word_vbuc1
ldy #0
sta.z xw+1
sty.z xw
// y*2
// [58] init_angle_screen::$5 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
// [58] init_angle_screen::$6 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
lda.z y
asl
// signed word yw = (signed word)(word){ y*2, 0 }
// [59] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 -- vwuz1=vbuaa_word_vbuc1
// MAKEWORD( y*2, 0 )
// [59] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0 -- vwuz1=vbuaa_word_vbuc1
sta.z yw+1
sty.z yw
// atan2_16(xw, yw)
@ -4352,46 +4355,46 @@ init_angle_screen: {
// word angle_w = atan2_16(xw, yw)
// [64] init_angle_screen::angle_w#0 = atan2_16::return#2
// angle_w+0x0080
// [65] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
// [65] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
lda #$80
clc
adc.z __7
sta.z __7
adc.z __9
sta.z __9
bcc !+
inc.z __7+1
inc.z __9+1
!:
// byte ang_w = BYTE1(angle_w+0x0080)
// [66] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7 -- vbuz1=_byte1_vwuz2
lda.z __7+1
// [66] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9 -- vbuz1=_byte1_vwuz2
lda.z __9+1
sta.z ang_w
// screen_bottomline[xb] = ang_w
// [67] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
ldy.z xb
sta (screen_bottomline),y
// -ang_w
// [68] init_angle_screen::$9 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
// [68] init_angle_screen::$11 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
eor #$ff
clc
adc #1
// screen_topline[xb] = -ang_w
// [69] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa
// [69] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
sta (screen_topline),y
// 0x80+ang_w
// [70] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
// [70] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
lda #$80
clc
adc.z ang_w
// screen_topline[x] = 0x80+ang_w
// [71] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa
// [71] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z x
sta (screen_topline),y
// 0x80-ang_w
// [72] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
// [72] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
lda #$80
sec
sbc.z ang_w
// screen_bottomline[x] = 0x80-ang_w
// [73] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
// [73] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa
sta (screen_bottomline),y
// for( byte x=0,xb=39; x<=19; x++, xb--)
// [74] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1

View File

@ -78,13 +78,13 @@ dword clock::return#0 return zp[4]:19 4.333333333333333
dword clock::return#2 return zp[4]:19 4.0
void clock_start()
void init_angle_screen(byte* init_angle_screen::screen)
byte~ init_angle_screen::$10 reg byte a 2002.0
byte~ init_angle_screen::$11 reg byte a 2002.0
byte~ init_angle_screen::$12 reg byte a 2002.0
byte~ init_angle_screen::$13 reg byte a 2002.0
byte~ init_angle_screen::$3 reg byte a 2002.0
byte~ init_angle_screen::$4 reg byte a 2002.0
byte~ init_angle_screen::$5 reg byte a 2002.0
word~ init_angle_screen::$7 zp[2]:15 2002.0
byte~ init_angle_screen::$9 reg byte a 2002.0
byte~ init_angle_screen::$6 reg byte a 2002.0
word~ init_angle_screen::$9 zp[2]:15 2002.0
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0 ang_w zp[1]:27 834.1666666666667
word init_angle_screen::angle_w
@ -194,7 +194,7 @@ reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
zp[2]:11 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
zp[2]:13 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
zp[2]:15 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
zp[2]:15 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ]
reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
zp[2]:17 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
zp[4]:19 [ clock::return#2 main::$4 clock::return#0 main::cyclecount#0 print_ulong_at::dw#0 ]
@ -204,12 +204,12 @@ reg byte y [ init_font_hex::idx#3 ]
reg byte a [ init_angle_screen::$3 ]
reg byte a [ init_angle_screen::$4 ]
zp[2]:23 [ init_angle_screen::xw#0 atan2_16::x#0 ]
reg byte a [ init_angle_screen::$5 ]
reg byte a [ init_angle_screen::$6 ]
zp[2]:25 [ init_angle_screen::yw#0 atan2_16::y#0 ]
zp[1]:27 [ init_angle_screen::ang_w#0 init_font_hex::$0 print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
reg byte a [ init_angle_screen::$9 ]
reg byte a [ init_angle_screen::$10 ]
reg byte a [ init_angle_screen::$11 ]
reg byte a [ init_angle_screen::$12 ]
reg byte a [ init_angle_screen::$13 ]
reg byte a [ atan2_16::$23 ]
reg byte a [ atan2_16::$22 ]
reg byte a [ print_uchar_at::$0 ]

View File

@ -430,7 +430,7 @@ init_dist_screen: {
// Utilizes symmetry around the center
// init_angle_screen(byte* zp(8) screen)
init_angle_screen: {
.label __7 = $10
.label __9 = $10
.label screen = 8
.label screen_bottomline = 8
.label xw = $21
@ -496,14 +496,14 @@ init_angle_screen: {
eor #$ff
sec
adc #$27
// signed word xw = (signed word)(word){ 39-x*2, 0 }
// MAKEWORD( 39-x*2, 0 )
ldy #0
sta.z xw+1
sty.z xw
// y*2
lda.z y
asl
// signed word yw = (signed word)(word){ y*2, 0 }
// MAKEWORD( y*2, 0 )
sta.z yw+1
sty.z yw
// atan2_16(xw, yw)
@ -512,13 +512,13 @@ init_angle_screen: {
// angle_w+0x0080
lda #$80
clc
adc.z __7
sta.z __7
adc.z __9
sta.z __9
bcc !+
inc.z __7+1
inc.z __9+1
!:
// byte ang_w = BYTE1(angle_w+0x0080)
lda.z __7+1
lda.z __9+1
sta.z ang_w
// screen_bottomline[xb] = ang_w
ldy.z xb

View File

@ -230,8 +230,8 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
[106] init_angle_screen::$3 = init_angle_screen::x#2 << 1
[107] init_angle_screen::$4 = $27 - init_angle_screen::$3
[108] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0
[109] init_angle_screen::$5 = init_angle_screen::y#5 << 1
[110] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0
[109] init_angle_screen::$6 = init_angle_screen::y#5 << 1
[110] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0
[111] atan2_16::x#0 = (signed word)init_angle_screen::xw#0
[112] atan2_16::y#0 = (signed word)init_angle_screen::yw#0
[113] call atan2_16
@ -239,15 +239,15 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
[115] init_angle_screen::angle_w#0 = atan2_16::return#2
[116] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
[117] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7
[116] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
[117] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9
[118] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
[119] init_angle_screen::$9 = - init_angle_screen::ang_w#0
[120] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9
[121] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
[122] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10
[123] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
[124] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11
[119] init_angle_screen::$11 = - init_angle_screen::ang_w#0
[120] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11
[121] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
[122] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12
[123] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
[124] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13
[125] init_angle_screen::x#1 = ++ init_angle_screen::x#2
[126] init_angle_screen::xb#1 = -- init_angle_screen::xb#2
to:init_angle_screen::@2

View File

@ -840,9 +840,11 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
init_angle_screen::x#3 = phi( init_angle_screen::@2/init_angle_screen::x#2 )
init_angle_screen::$3 = init_angle_screen::x#3 * 2
init_angle_screen::$4 = $27 - init_angle_screen::$3
init_angle_screen::xw#0 = (signed word)(word){ init_angle_screen::$4, 0 }
init_angle_screen::$5 = init_angle_screen::y#2 * 2
init_angle_screen::yw#0 = (signed word)(word){ init_angle_screen::$5, 0 }
init_angle_screen::$5 = init_angle_screen::$4 w= 0
init_angle_screen::xw#0 = (signed word)init_angle_screen::$5
init_angle_screen::$6 = init_angle_screen::y#2 * 2
init_angle_screen::$7 = init_angle_screen::$6 w= 0
init_angle_screen::yw#0 = (signed word)init_angle_screen::$7
atan2_16::x#0 = init_angle_screen::xw#0
atan2_16::y#0 = init_angle_screen::yw#0
call atan2_16
@ -855,18 +857,18 @@ init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
init_angle_screen::xb#2 = phi( init_angle_screen::@3/init_angle_screen::xb#3 )
init_angle_screen::screen_bottomline#2 = phi( init_angle_screen::@3/init_angle_screen::screen_bottomline#4 )
atan2_16::return#4 = phi( init_angle_screen::@3/atan2_16::return#2 )
init_angle_screen::$6 = atan2_16::return#4
init_angle_screen::angle_w#0 = init_angle_screen::$6
init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
init_angle_screen::$8 = byte1 init_angle_screen::$7
init_angle_screen::ang_w#0 = init_angle_screen::$8
init_angle_screen::$8 = atan2_16::return#4
init_angle_screen::angle_w#0 = init_angle_screen::$8
init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
init_angle_screen::$10 = byte1 init_angle_screen::$9
init_angle_screen::ang_w#0 = init_angle_screen::$10
init_angle_screen::screen_bottomline#2[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
init_angle_screen::$9 = - init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::xb#2] = init_angle_screen::$9
init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::x#4] = init_angle_screen::$10
init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
init_angle_screen::screen_bottomline#2[init_angle_screen::x#4] = init_angle_screen::$11
init_angle_screen::$11 = - init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::xb#2] = init_angle_screen::$11
init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::x#4] = init_angle_screen::$12
init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
init_angle_screen::screen_bottomline#2[init_angle_screen::x#4] = init_angle_screen::$13
init_angle_screen::x#1 = ++ init_angle_screen::x#4
init_angle_screen::xb#1 = -- init_angle_screen::xb#2
to:init_angle_screen::@2
@ -877,8 +879,8 @@ init_angle_screen::@4: scope:[init_angle_screen] from init_angle_screen::@2
init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#3 - $28
init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#3 + $28
init_angle_screen::y#1 = init_angle_screen::y#3 + rangenext(0,$c)
init_angle_screen::$12 = init_angle_screen::y#1 != rangelast(0,$c)
if(init_angle_screen::$12) goto init_angle_screen::@1
init_angle_screen::$14 = init_angle_screen::y#1 != rangelast(0,$c)
if(init_angle_screen::$14) goto init_angle_screen::@1
to:init_angle_screen::@return
init_angle_screen::@return: scope:[init_angle_screen] from init_angle_screen::@4
return
@ -1809,17 +1811,19 @@ byte* heap_head#9
void init_angle_screen(byte* init_angle_screen::screen)
byte*~ init_angle_screen::$0
byte*~ init_angle_screen::$1
number~ init_angle_screen::$10
number~ init_angle_screen::$11
bool~ init_angle_screen::$12
byte~ init_angle_screen::$10
byte~ init_angle_screen::$11
number~ init_angle_screen::$12
number~ init_angle_screen::$13
bool~ init_angle_screen::$14
bool~ init_angle_screen::$2
number~ init_angle_screen::$3
number~ init_angle_screen::$4
number~ init_angle_screen::$5
word~ init_angle_screen::$6
number~ init_angle_screen::$7
byte~ init_angle_screen::$8
byte~ init_angle_screen::$9
word~ init_angle_screen::$5
number~ init_angle_screen::$6
word~ init_angle_screen::$7
word~ init_angle_screen::$8
number~ init_angle_screen::$9
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0
word init_angle_screen::angle_w
@ -2215,9 +2219,6 @@ word sqrt::val
word sqrt::val#0
word sqrt::val#1
Fixing inline constructor with init_angle_screen::$13 = (byte)init_angle_screen::$4 w= (byte)0
Fixing inline constructor with init_angle_screen::$14 = (byte)init_angle_screen::$5 w= (byte)0
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) 0 in bsearch16u::$5 = bsearch16u::num#3 > 0
Adding number conversion cast (unumber) 1 in bsearch16u::$6 = bsearch16u::num#4 >> 1
Adding number conversion cast (snumber) 0 in bsearch16u::$9 = bsearch16u::result#0 == 0
@ -2264,14 +2265,16 @@ Adding number conversion cast (unumber) 2 in init_angle_screen::$3 = init_angle_
Adding number conversion cast (unumber) init_angle_screen::$3 in init_angle_screen::$3 = init_angle_screen::x#3 * (unumber)2
Adding number conversion cast (unumber) $27 in init_angle_screen::$4 = $27 - init_angle_screen::$3
Adding number conversion cast (unumber) init_angle_screen::$4 in init_angle_screen::$4 = (unumber)$27 - init_angle_screen::$3
Adding number conversion cast (unumber) 2 in init_angle_screen::$5 = init_angle_screen::y#2 * 2
Adding number conversion cast (unumber) init_angle_screen::$5 in init_angle_screen::$5 = init_angle_screen::y#2 * (unumber)2
Adding number conversion cast (unumber) $80 in init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
Adding number conversion cast (unumber) init_angle_screen::$7 in init_angle_screen::$7 = init_angle_screen::angle_w#0 + (unumber)$80
Adding number conversion cast (unumber) $80 in init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$10 in init_angle_screen::$10 = (unumber)$80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$11 in init_angle_screen::$11 = (unumber)$80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) 0 in init_angle_screen::$5 = init_angle_screen::$4 w= 0
Adding number conversion cast (unumber) 2 in init_angle_screen::$6 = init_angle_screen::y#2 * 2
Adding number conversion cast (unumber) init_angle_screen::$6 in init_angle_screen::$6 = init_angle_screen::y#2 * (unumber)2
Adding number conversion cast (unumber) 0 in init_angle_screen::$7 = init_angle_screen::$6 w= 0
Adding number conversion cast (unumber) $80 in init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
Adding number conversion cast (unumber) init_angle_screen::$9 in init_angle_screen::$9 = init_angle_screen::angle_w#0 + (unumber)$80
Adding number conversion cast (unumber) $80 in init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$12 in init_angle_screen::$12 = (unumber)$80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$13 in init_angle_screen::$13 = (unumber)$80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $28 in init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#3 - $28
Adding number conversion cast (unumber) $28 in init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#3 + $28
Adding number conversion cast (unumber) $30 in NUM_SQUARES#2 = $30
@ -2433,7 +2436,9 @@ Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $13
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $27
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $80
@ -2461,10 +2466,10 @@ Inferred type updated to byte in init_squares::$4 = init_squares::$3 + 1
Inferred type updated to word in atan2_16::$12 = $8000 - atan2_16::angle#9
Inferred type updated to byte in init_angle_screen::$3 = init_angle_screen::x#3 * 2
Inferred type updated to byte in init_angle_screen::$4 = $27 - init_angle_screen::$3
Inferred type updated to byte in init_angle_screen::$5 = init_angle_screen::y#2 * 2
Inferred type updated to word in init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
Inferred type updated to byte in init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
Inferred type updated to byte in init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
Inferred type updated to byte in init_angle_screen::$6 = init_angle_screen::y#2 * 2
Inferred type updated to word in init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
Inferred type updated to byte in init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
Inferred type updated to byte in init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
Inferred type updated to byte in init_dist_screen::$2 = init_dist_screen::y#2 * 2
Inferred type updated to byte in init_dist_screen::$6 = init_dist_screen::y2#1 - $18
Inferred type updated to byte in init_dist_screen::$7 = init_dist_screen::$6
@ -2628,8 +2633,8 @@ Alias init_angle_screen::screen_bottomline#2 = init_angle_screen::screen_bottoml
Alias init_angle_screen::xb#2 = init_angle_screen::xb#3 init_angle_screen::xb#4
Alias init_angle_screen::screen_topline#2 = init_angle_screen::screen_topline#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#3
Alias atan2_16::return#2 = atan2_16::return#4
Alias init_angle_screen::angle_w#0 = init_angle_screen::$6
Alias init_angle_screen::ang_w#0 = init_angle_screen::$8
Alias init_angle_screen::angle_w#0 = init_angle_screen::$8
Alias init_angle_screen::ang_w#0 = init_angle_screen::$10
Alias init_dist_screen::screen#1 = init_dist_screen::screen#2 init_dist_screen::screen_topline#0
Alias NUM_SQUARES#2 = NUM_SQUARES#55
Alias heap_head#28 = heap_head#9
@ -2896,7 +2901,7 @@ Simple Condition init_buckets::$5 [195] if(init_buckets::i2#1!=rangelast(0,NUM_B
Simple Condition init_buckets::$6 [201] if(init_buckets::i3#1!=rangelast(0,NUM_BUCKETS-1)) goto init_buckets::@7
Simple Condition init_buckets::$10 [215] if(init_buckets::i4#1!=rangelast(0,$3e7)) goto init_buckets::@9
Simple Condition init_angle_screen::$2 [226] if(init_angle_screen::x#2<=$13) goto init_angle_screen::@3
Simple Condition init_angle_screen::$12 [254] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1
Simple Condition init_angle_screen::$14 [254] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1
Simple Condition init_dist_screen::$3 [265] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2
Simple Condition init_dist_screen::$10 [277] if(init_dist_screen::x#2<=$13) goto init_dist_screen::@6
Simple Condition init_dist_screen::$12 [280] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8
@ -2999,8 +3004,6 @@ Simplifying constant integer cast 1
Simplifying constant integer cast $3e8
Simplifying constant integer cast $13+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast init_angle_screen::$4
Simplifying constant integer cast init_angle_screen::$5
Simplifying constant integer cast $d
Simplifying constant integer cast $13+(unumber)1
Simplifying constant integer cast 1
@ -3036,8 +3039,8 @@ Inlining Noop Cast [245] malloc::return#15 = (void*)malloc::mem#0 keeping malloc
Inlining Noop Cast [249] malloc::return#16 = (void*)malloc::mem#0 keeping malloc::mem#0
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [27] SQUARES#0 = (word*)init_squares::$1 keeping SQUARES#0
Inlining Noop Cast [168] init_angle_screen::xw#0 = (signed word)init_angle_screen::$13 keeping init_angle_screen::xw#0
Inlining Noop Cast [171] init_angle_screen::yw#0 = (signed word)init_angle_screen::$14 keeping init_angle_screen::yw#0
Inlining Noop Cast [168] init_angle_screen::xw#0 = (signed word)init_angle_screen::$5 keeping init_angle_screen::xw#0
Inlining Noop Cast [171] init_angle_screen::yw#0 = (signed word)init_angle_screen::$7 keeping init_angle_screen::yw#0
Inlining Noop Cast [235] SCREEN_DIST#0 = (byte*)__start::__init1_$0 keeping SCREEN_DIST#0
Inlining Noop Cast [239] SCREEN_ANGLE#0 = (byte*)__start::__init1_$1 keeping SCREEN_ANGLE#0
Inlining Noop Cast [243] BUCKET_SIZES#0 = (byte*)__start::__init1_$2 keeping BUCKET_SIZES#0
@ -3058,7 +3061,7 @@ Rewriting multiplication to use shift [138] init_buckets::$11 = init_buckets::i2
Rewriting multiplication to use shift [150] init_buckets::$12 = init_buckets::$14 * SIZEOF_POINTER
Rewriting multiplication to use shift [154] init_buckets::$13 = ((byte*)BUCKET_IDX#0)[init_buckets::distance#0] * SIZEOF_WORD
Rewriting multiplication to use shift [165] init_angle_screen::$3 = init_angle_screen::x#2 * 2
Rewriting multiplication to use shift [169] init_angle_screen::$5 = init_angle_screen::y#5 * 2
Rewriting multiplication to use shift [169] init_angle_screen::$6 = init_angle_screen::y#5 * 2
Rewriting multiplication to use shift [196] init_dist_screen::y2#0 = init_dist_screen::y#10 * 2
Rewriting multiplication to use shift [207] init_dist_screen::x2#0 = init_dist_screen::x#2 * 2
Successful SSA optimization Pass2MultiplyToShiftRewriting
@ -3552,8 +3555,8 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
[106] init_angle_screen::$3 = init_angle_screen::x#2 << 1
[107] init_angle_screen::$4 = $27 - init_angle_screen::$3
[108] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0
[109] init_angle_screen::$5 = init_angle_screen::y#5 << 1
[110] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0
[109] init_angle_screen::$6 = init_angle_screen::y#5 << 1
[110] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0
[111] atan2_16::x#0 = (signed word)init_angle_screen::xw#0
[112] atan2_16::y#0 = (signed word)init_angle_screen::yw#0
[113] call atan2_16
@ -3561,15 +3564,15 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
[115] init_angle_screen::angle_w#0 = atan2_16::return#2
[116] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
[117] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7
[116] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
[117] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9
[118] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
[119] init_angle_screen::$9 = - init_angle_screen::ang_w#0
[120] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9
[121] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
[122] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10
[123] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
[124] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11
[119] init_angle_screen::$11 = - init_angle_screen::ang_w#0
[120] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11
[121] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
[122] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12
[123] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
[124] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13
[125] init_angle_screen::x#1 = ++ init_angle_screen::x#2
[126] init_angle_screen::xb#1 = -- init_angle_screen::xb#2
to:init_angle_screen::@2
@ -3937,13 +3940,13 @@ byte* heap_head
byte* heap_head#0 129.1505376344086
byte* heap_head#19 12011.0
void init_angle_screen(byte* init_angle_screen::screen)
byte~ init_angle_screen::$10 20002.0
byte~ init_angle_screen::$11 20002.0
byte~ init_angle_screen::$12 20002.0
byte~ init_angle_screen::$13 20002.0
byte~ init_angle_screen::$3 20002.0
byte~ init_angle_screen::$4 20002.0
byte~ init_angle_screen::$5 20002.0
word~ init_angle_screen::$7 20002.0
byte~ init_angle_screen::$9 20002.0
byte~ init_angle_screen::$6 20002.0
word~ init_angle_screen::$9 20002.0
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0 8334.166666666666
word init_angle_screen::angle_w
@ -4190,17 +4193,17 @@ Added variable init_dist_screen::d#0 to live range equivalence class [ init_dist
Added variable init_angle_screen::$3 to live range equivalence class [ init_angle_screen::$3 ]
Added variable init_angle_screen::$4 to live range equivalence class [ init_angle_screen::$4 ]
Added variable init_angle_screen::xw#0 to live range equivalence class [ init_angle_screen::xw#0 ]
Added variable init_angle_screen::$5 to live range equivalence class [ init_angle_screen::$5 ]
Added variable init_angle_screen::$6 to live range equivalence class [ init_angle_screen::$6 ]
Added variable init_angle_screen::yw#0 to live range equivalence class [ init_angle_screen::yw#0 ]
Added variable atan2_16::x#0 to live range equivalence class [ atan2_16::x#0 ]
Added variable atan2_16::y#0 to live range equivalence class [ atan2_16::y#0 ]
Added variable atan2_16::return#2 to live range equivalence class [ atan2_16::return#2 ]
Added variable init_angle_screen::angle_w#0 to live range equivalence class [ init_angle_screen::angle_w#0 ]
Added variable init_angle_screen::$7 to live range equivalence class [ init_angle_screen::$7 ]
Added variable init_angle_screen::ang_w#0 to live range equivalence class [ init_angle_screen::ang_w#0 ]
Added variable init_angle_screen::$9 to live range equivalence class [ init_angle_screen::$9 ]
Added variable init_angle_screen::$10 to live range equivalence class [ init_angle_screen::$10 ]
Added variable init_angle_screen::ang_w#0 to live range equivalence class [ init_angle_screen::ang_w#0 ]
Added variable init_angle_screen::$11 to live range equivalence class [ init_angle_screen::$11 ]
Added variable init_angle_screen::$12 to live range equivalence class [ init_angle_screen::$12 ]
Added variable init_angle_screen::$13 to live range equivalence class [ init_angle_screen::$13 ]
Added variable init_buckets::$15 to live range equivalence class [ init_buckets::$15 ]
Added variable init_buckets::$4 to live range equivalence class [ init_buckets::$4 ]
Added variable init_buckets::$11 to live range equivalence class [ init_buckets::$11 ]
@ -4298,17 +4301,17 @@ Complete equivalence classes
[ init_angle_screen::$3 ]
[ init_angle_screen::$4 ]
[ init_angle_screen::xw#0 ]
[ init_angle_screen::$5 ]
[ init_angle_screen::$6 ]
[ init_angle_screen::yw#0 ]
[ atan2_16::x#0 ]
[ atan2_16::y#0 ]
[ atan2_16::return#2 ]
[ init_angle_screen::angle_w#0 ]
[ init_angle_screen::$7 ]
[ init_angle_screen::ang_w#0 ]
[ init_angle_screen::$9 ]
[ init_angle_screen::$10 ]
[ init_angle_screen::ang_w#0 ]
[ init_angle_screen::$11 ]
[ init_angle_screen::$12 ]
[ init_angle_screen::$13 ]
[ init_buckets::$15 ]
[ init_buckets::$4 ]
[ init_buckets::$11 ]
@ -4405,17 +4408,17 @@ Allocated zp[1]:106 [ init_dist_screen::d#0 ]
Allocated zp[1]:107 [ init_angle_screen::$3 ]
Allocated zp[1]:108 [ init_angle_screen::$4 ]
Allocated zp[2]:109 [ init_angle_screen::xw#0 ]
Allocated zp[1]:111 [ init_angle_screen::$5 ]
Allocated zp[1]:111 [ init_angle_screen::$6 ]
Allocated zp[2]:112 [ init_angle_screen::yw#0 ]
Allocated zp[2]:114 [ atan2_16::x#0 ]
Allocated zp[2]:116 [ atan2_16::y#0 ]
Allocated zp[2]:118 [ atan2_16::return#2 ]
Allocated zp[2]:120 [ init_angle_screen::angle_w#0 ]
Allocated zp[2]:122 [ init_angle_screen::$7 ]
Allocated zp[2]:122 [ init_angle_screen::$9 ]
Allocated zp[1]:124 [ init_angle_screen::ang_w#0 ]
Allocated zp[1]:125 [ init_angle_screen::$9 ]
Allocated zp[1]:126 [ init_angle_screen::$10 ]
Allocated zp[1]:127 [ init_angle_screen::$11 ]
Allocated zp[1]:125 [ init_angle_screen::$11 ]
Allocated zp[1]:126 [ init_angle_screen::$12 ]
Allocated zp[1]:127 [ init_angle_screen::$13 ]
Allocated zp[2]:128 [ init_buckets::$15 ]
Allocated zp[2]:130 [ init_buckets::$4 ]
Allocated zp[2]:132 [ init_buckets::$11 ]
@ -4505,16 +4508,16 @@ Statement [106] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle
Removing always clobbered register reg byte a as potential for zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Statement [107] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [109] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [109] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [111] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [112] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [114] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [115] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
Statement [116] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
Statement [119] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [116] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [119] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:124 [ init_angle_screen::ang_w#0 ]
Statement [121] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
Statement [123] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [121] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { } ) always clobbers reg byte a
Statement [123] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { } ) always clobbers reg byte a
Statement [129] ((byte*)BUCKET_SIZES#0)[init_buckets::i#2] = 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:29 [ init_buckets::i#2 init_buckets::i#1 ]
Statement [132] init_buckets::dist#6 = init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] { } ) always clobbers reg byte a
@ -4653,16 +4656,16 @@ Statement [101] init_angle_screen::screen_topline#1 = init_angle_screen::screen_
Statement [102] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
Statement [106] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [107] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [109] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [109] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [111] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [112] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [114] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [115] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
Statement [116] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
Statement [116] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [118] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
Statement [119] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [121] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
Statement [123] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [119] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [121] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { } ) always clobbers reg byte a
Statement [123] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { } ) always clobbers reg byte a
Statement [129] ((byte*)BUCKET_SIZES#0)[init_buckets::i#2] = 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] { } ) always clobbers reg byte a
Statement [132] init_buckets::dist#6 = init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] { } ) always clobbers reg byte a
Statement [134] ((byte*)BUCKET_SIZES#0)[*init_buckets::dist#4] = ++ ((byte*)BUCKET_SIZES#0)[*init_buckets::dist#4] [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] { } ) always clobbers reg byte a reg byte y
@ -4787,16 +4790,16 @@ Statement [101] init_angle_screen::screen_topline#1 = init_angle_screen::screen_
Statement [102] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
Statement [106] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [107] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [109] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [109] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [111] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [112] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [114] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [115] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
Statement [116] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
Statement [116] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [118] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
Statement [119] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [121] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
Statement [123] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [119] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [121] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { } ) always clobbers reg byte a
Statement [123] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { } ) always clobbers reg byte a
Statement [129] ((byte*)BUCKET_SIZES#0)[init_buckets::i#2] = 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] { } ) always clobbers reg byte a
Statement [132] init_buckets::dist#6 = init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] { } ) always clobbers reg byte a
Statement [134] ((byte*)BUCKET_SIZES#0)[*init_buckets::dist#4] = ++ ((byte*)BUCKET_SIZES#0)[*init_buckets::dist#4] [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] { } ) always clobbers reg byte a reg byte y
@ -4939,17 +4942,17 @@ Potential registers zp[1]:106 [ init_dist_screen::d#0 ] : zp[1]:106 , reg byte a
Potential registers zp[1]:107 [ init_angle_screen::$3 ] : zp[1]:107 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:108 [ init_angle_screen::$4 ] : zp[1]:108 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:109 [ init_angle_screen::xw#0 ] : zp[2]:109 ,
Potential registers zp[1]:111 [ init_angle_screen::$5 ] : zp[1]:111 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:111 [ init_angle_screen::$6 ] : zp[1]:111 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:112 [ init_angle_screen::yw#0 ] : zp[2]:112 ,
Potential registers zp[2]:114 [ atan2_16::x#0 ] : zp[2]:114 ,
Potential registers zp[2]:116 [ atan2_16::y#0 ] : zp[2]:116 ,
Potential registers zp[2]:118 [ atan2_16::return#2 ] : zp[2]:118 ,
Potential registers zp[2]:120 [ init_angle_screen::angle_w#0 ] : zp[2]:120 ,
Potential registers zp[2]:122 [ init_angle_screen::$7 ] : zp[2]:122 ,
Potential registers zp[2]:122 [ init_angle_screen::$9 ] : zp[2]:122 ,
Potential registers zp[1]:124 [ init_angle_screen::ang_w#0 ] : zp[1]:124 , reg byte x , reg byte y ,
Potential registers zp[1]:125 [ init_angle_screen::$9 ] : zp[1]:125 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:126 [ init_angle_screen::$10 ] : zp[1]:126 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:127 [ init_angle_screen::$11 ] : zp[1]:127 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:125 [ init_angle_screen::$11 ] : zp[1]:125 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:126 [ init_angle_screen::$12 ] : zp[1]:126 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:127 [ init_angle_screen::$13 ] : zp[1]:127 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:128 [ init_buckets::$15 ] : zp[2]:128 ,
Potential registers zp[2]:130 [ init_buckets::$4 ] : zp[2]:130 ,
Potential registers zp[2]:132 [ init_buckets::$11 ] : zp[2]:132 ,
@ -4984,7 +4987,7 @@ Uplift Scope [bsearch16u] 7,555,555,563.11: zp[1]:63 [ bsearch16u::num#5 bsearch
Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:56 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:57 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 1,733,333,338.67: zp[2]:59 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 752,480,960.9: zp[2]:52 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 269,093,340.68: zp[2]:47 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 227,373,342.67: zp[2]:49 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 200,000,002: zp[1]:166 [ atan2_16::$23 ] 200,000,002: zp[1]:167 [ atan2_16::$22 ] 170,833,335.04: zp[1]:51 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:54 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] 20,002: zp[2]:118 [ atan2_16::return#2 ] 10,789.61: zp[2]:114 [ atan2_16::x#0 ] 10,250.12: zp[2]:116 [ atan2_16::y#0 ]
Uplift Scope [sqrt] 200,002: zp[2]:159 [ sqrt::found#0 ] 200,002: zp[2]:161 [ sqrt::$2 ] 110,002: zp[2]:103 [ sqrt::val#0 ] 100,001: zp[2]:163 [ sqrt::$1 ] 36,667.33: zp[1]:165 [ sqrt::return#0 ] 20,002: zp[1]:105 [ sqrt::return#2 ]
Uplift Scope [sqr] 200,002: zp[1]:152 [ sqr::$0 ] 133,007: zp[1]:46 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 27,750.75: zp[2]:153 [ sqr::return#0 ] 20,002: zp[2]:97 [ sqr::return#3 ] 2,002: zp[2]:92 [ sqr::return#2 ]
Uplift Scope [init_angle_screen] 21,820.36: zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:107 [ init_angle_screen::$3 ] 20,002: zp[1]:108 [ init_angle_screen::$4 ] 20,002: zp[1]:111 [ init_angle_screen::$5 ] 20,002: zp[2]:120 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:122 [ init_angle_screen::$7 ] 20,002: zp[1]:125 [ init_angle_screen::$9 ] 20,002: zp[1]:126 [ init_angle_screen::$10 ] 20,002: zp[1]:127 [ init_angle_screen::$11 ] 12,858.43: zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:124 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:112 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:109 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,703.03: zp[2]:25 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,623.54: zp[2]:23 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] 112: zp[2]:76 [ init_angle_screen::screen#0 ]
Uplift Scope [init_angle_screen] 21,820.36: zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:107 [ init_angle_screen::$3 ] 20,002: zp[1]:108 [ init_angle_screen::$4 ] 20,002: zp[1]:111 [ init_angle_screen::$6 ] 20,002: zp[2]:120 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:122 [ init_angle_screen::$9 ] 20,002: zp[1]:125 [ init_angle_screen::$11 ] 20,002: zp[1]:126 [ init_angle_screen::$12 ] 20,002: zp[1]:127 [ init_angle_screen::$13 ] 12,858.43: zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:124 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:112 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:109 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,703.03: zp[2]:25 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,623.54: zp[2]:23 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] 112: zp[2]:76 [ init_angle_screen::screen#0 ]
Uplift Scope [init_dist_screen] 70,007: zp[1]:21 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 21,906.95: zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 20,002: zp[1]:96 [ init_dist_screen::x2#0 ] 20,002: zp[2]:99 [ init_dist_screen::xds#0 ] 20,002: zp[2]:101 [ init_dist_screen::ds#0 ] 13,001.3: zp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 12,501.25: zp[1]:106 [ init_dist_screen::d#0 ] 7,007: zp[1]:18 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 2,002: zp[1]:91 [ init_dist_screen::y2#0 ] 1,589.82: zp[1]:13 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 1,539.18: zp[2]:16 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] 1,244.53: zp[2]:14 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] 478.35: zp[2]:94 [ init_dist_screen::yds#0 ]
Uplift Scope [init_squares] 25,716.86: zp[1]:41 [ init_squares::i#2 init_squares::i#1 ] 20,002: zp[1]:150 [ init_squares::$3 ] 20,002: zp[1]:151 [ init_squares::$4 ] 16,337.07: zp[2]:44 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 15,001.5: zp[2]:42 [ init_squares::sqr#2 init_squares::sqr#1 ]
Uplift Scope [init_buckets] 3,003: zp[1]:29 [ init_buckets::i#2 init_buckets::i#1 ] 3,003: zp[1]:36 [ init_buckets::i3#2 init_buckets::i3#1 ] 2,921.83: zp[2]:30 [ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ] 2,168.83: zp[2]:32 [ init_buckets::i1#2 init_buckets::i1#1 ] 2,002: zp[2]:34 [ init_buckets::i2#2 init_buckets::i2#1 ] 2,002: zp[2]:128 [ init_buckets::$15 ] 2,002: zp[2]:132 [ init_buckets::$11 ] 2,002: zp[2]:134 [ init_buckets::$16 ] 2,002: zp[2]:137 [ init_buckets::$14 ] 2,002: zp[2]:139 [ init_buckets::$12 ] 2,002: zp[2]:141 [ init_buckets::$17 ] 2,002: zp[1]:147 [ init_buckets::$13 ] 1,683.5: zp[2]:39 [ init_buckets::i4#2 init_buckets::i4#1 ] 1,279.83: zp[2]:37 [ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ] 1,001: zp[2]:145 [ init_buckets::$7 ] 667.33: zp[2]:143 [ init_buckets::bucket#0 ] 500.5: zp[1]:136 [ init_buckets::distance#0 ] 333.67: zp[2]:130 [ init_buckets::$4 ] 30.35: zp[2]:78 [ init_buckets::screen#0 ]
@ -5002,7 +5005,7 @@ Uplifting [atan2_16] best 1229981 combination reg byte y [ atan2_16::shift#2 ata
Limited combination testing to 100 combinations of 144 possible.
Uplifting [sqrt] best 1229078 combination zp[2]:159 [ sqrt::found#0 ] zp[2]:161 [ sqrt::$2 ] zp[2]:103 [ sqrt::val#0 ] zp[2]:163 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ]
Uplifting [sqr] best 1228741 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:153 [ sqr::return#0 ] zp[2]:97 [ sqr::return#3 ] zp[2]:92 [ sqr::return#2 ]
Uplifting [init_angle_screen] best 1227141 combination zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] zp[2]:120 [ init_angle_screen::angle_w#0 ] zp[2]:122 [ init_angle_screen::$7 ] zp[1]:125 [ init_angle_screen::$9 ] zp[1]:126 [ init_angle_screen::$10 ] zp[1]:127 [ init_angle_screen::$11 ] zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:124 [ init_angle_screen::ang_w#0 ] zp[2]:112 [ init_angle_screen::yw#0 ] zp[2]:109 [ init_angle_screen::xw#0 ] zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:25 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:23 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] zp[2]:76 [ init_angle_screen::screen#0 ]
Uplifting [init_angle_screen] best 1227141 combination zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$6 ] zp[2]:120 [ init_angle_screen::angle_w#0 ] zp[2]:122 [ init_angle_screen::$9 ] zp[1]:125 [ init_angle_screen::$11 ] zp[1]:126 [ init_angle_screen::$12 ] zp[1]:127 [ init_angle_screen::$13 ] zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:124 [ init_angle_screen::ang_w#0 ] zp[2]:112 [ init_angle_screen::yw#0 ] zp[2]:109 [ init_angle_screen::xw#0 ] zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:25 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:23 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] zp[2]:76 [ init_angle_screen::screen#0 ]
Limited combination testing to 100 combinations of 331776 possible.
Uplifting [init_dist_screen] best 1223941 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:99 [ init_dist_screen::xds#0 ] zp[2]:101 [ init_dist_screen::ds#0 ] zp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:18 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:91 [ init_dist_screen::y2#0 ] zp[1]:13 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:16 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[2]:14 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:94 [ init_dist_screen::yds#0 ]
Limited combination testing to 100 combinations of 6144 possible.
@ -5021,12 +5024,12 @@ Attempting to uplift remaining variables inzp[1]:20 [ init_dist_screen::xb#2 ini
Uplifting [init_dist_screen] best 1222021 combination zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Attempting to uplift remaining variables inzp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Uplifting [init_angle_screen] best 1222021 combination zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Attempting to uplift remaining variables inzp[1]:125 [ init_angle_screen::$9 ]
Uplifting [init_angle_screen] best 1221421 combination reg byte a [ init_angle_screen::$9 ]
Attempting to uplift remaining variables inzp[1]:126 [ init_angle_screen::$10 ]
Uplifting [init_angle_screen] best 1221021 combination reg byte a [ init_angle_screen::$10 ]
Attempting to uplift remaining variables inzp[1]:127 [ init_angle_screen::$11 ]
Uplifting [init_angle_screen] best 1220421 combination reg byte a [ init_angle_screen::$11 ]
Attempting to uplift remaining variables inzp[1]:125 [ init_angle_screen::$11 ]
Uplifting [init_angle_screen] best 1221421 combination reg byte a [ init_angle_screen::$11 ]
Attempting to uplift remaining variables inzp[1]:126 [ init_angle_screen::$12 ]
Uplifting [init_angle_screen] best 1221021 combination reg byte a [ init_angle_screen::$12 ]
Attempting to uplift remaining variables inzp[1]:127 [ init_angle_screen::$13 ]
Uplifting [init_angle_screen] best 1220421 combination reg byte a [ init_angle_screen::$13 ]
Attempting to uplift remaining variables inzp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Uplifting [init_dist_screen] best 1220421 combination zp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Attempting to uplift remaining variables inzp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
@ -5073,7 +5076,7 @@ Coalescing zero page register [ zp[2]:52 [ atan2_16::angle#6 atan2_16::angle#12
Coalescing zero page register [ zp[2]:61 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 ] ] with [ zp[2]:159 [ sqrt::found#0 sqrt::$2 ] ] - score: 1
Coalescing zero page register [ zp[2]:97 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 ] ] with [ zp[2]:101 [ init_dist_screen::ds#0 sqrt::val#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:137 [ init_buckets::$14 init_buckets::$12 ] ] with [ zp[2]:141 [ init_buckets::$17 init_buckets::bucket#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:52 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp[2]:122 [ init_angle_screen::$7 ] ] - score: 1
Coalescing zero page register [ zp[2]:52 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp[2]:122 [ init_angle_screen::$9 ] ] - score: 1
Coalescing zero page register [ zp[2]:61 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 ] ] with [ zp[2]:163 [ sqrt::$1 ] ] - score: 1
Coalescing zero page register [ zp[2]:97 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 ] ] with [ zp[2]:155 [ bsearch16u::key#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:8 [ main::min_offset#2 main::min_offset#8 main::fill1#0 ] ] with [ zp[2]:2 [ heap_head#19 heap_head#0 ] ]
@ -5087,7 +5090,7 @@ Coalescing zero page register [ zp[2]:42 [ init_squares::sqr#2 init_squares::sqr
Coalescing zero page register [ zp[2]:44 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] ] with [ zp[2]:32 [ init_buckets::i1#2 init_buckets::i1#1 ] ]
Coalescing zero page register [ zp[2]:47 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] ] with [ zp[2]:34 [ init_buckets::i2#2 init_buckets::i2#1 ] ]
Coalescing zero page register [ zp[2]:49 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ] with [ zp[2]:37 [ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ] ]
Coalescing zero page register [ zp[2]:52 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] ] with [ zp[2]:39 [ init_buckets::i4#2 init_buckets::i4#1 ] ]
Coalescing zero page register [ zp[2]:52 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ] ] with [ zp[2]:39 [ init_buckets::i4#2 init_buckets::i4#1 ] ]
Coalescing zero page register [ zp[2]:61 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 ] ] with [ zp[2]:57 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] ]
Coalescing zero page register [ zp[2]:81 [ main::bucket#0 ] ] with [ zp[2]:59 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] ]
Coalescing zero page register [ zp[2]:87 [ main::fill#0 ] ] with [ zp[2]:64 [ SCREEN_DIST#0 init_buckets::screen#0 ] ]
@ -5110,7 +5113,7 @@ Allocated (was zp[1]:27) zp[1]:10 [ init_angle_screen::x#2 init_angle_screen::x#
Allocated (was zp[1]:28) zp[1]:11 [ init_angle_screen::xb#2 init_angle_screen::xb#1 init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Allocated (was zp[2]:47) zp[2]:12 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_buckets::i2#2 init_buckets::i2#1 ]
Allocated (was zp[2]:49) zp[2]:14 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ]
Allocated (was zp[2]:52) zp[2]:16 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 init_buckets::i4#2 init_buckets::i4#1 ]
Allocated (was zp[2]:52) zp[2]:16 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 init_buckets::i4#2 init_buckets::i4#1 ]
Allocated (was zp[2]:61) zp[2]:18 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 init_squares::sqr#2 init_squares::sqr#1 init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ]
Allocated (was zp[2]:66) zp[2]:20 [ SCREEN_ANGLE#0 ]
Allocated (was zp[2]:68) zp[2]:22 [ BUCKET_SIZES#0 ]
@ -5778,7 +5781,7 @@ init_dist_screen: {
// Utilizes symmetry around the center
// init_angle_screen(byte* zp(8) screen)
init_angle_screen: {
.label __7 = $10
.label __9 = $10
.label screen = 8
.label screen_bottomline = 8
.label xw = $21
@ -5876,10 +5879,10 @@ init_angle_screen: {
ldy #0
sta.z xw+1
sty.z xw
// [109] init_angle_screen::$5 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
// [109] init_angle_screen::$6 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
lda.z y
asl
// [110] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 -- vwuz1=vbuaa_word_vbuc1
// [110] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0 -- vwuz1=vbuaa_word_vbuc1
ldy #0
sta.z yw+1
sty.z yw
@ -5892,41 +5895,41 @@ init_angle_screen: {
// init_angle_screen::@5
__b5:
// [115] init_angle_screen::angle_w#0 = atan2_16::return#2
// [116] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
// [116] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
lda #$80
clc
adc.z __7
sta.z __7
adc.z __9
sta.z __9
bcc !+
inc.z __7+1
inc.z __9+1
!:
// [117] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7 -- vbuz1=_byte1_vwuz2
lda.z __7+1
// [117] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9 -- vbuz1=_byte1_vwuz2
lda.z __9+1
sta.z ang_w
// [118] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
lda.z ang_w
ldy.z xb
sta (screen_bottomline),y
// [119] init_angle_screen::$9 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
// [119] init_angle_screen::$11 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
lda.z ang_w
eor #$ff
clc
adc #1
// [120] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa
// [120] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z xb
sta (screen_topline),y
// [121] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
// [121] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
lda #$80
clc
adc.z ang_w
// [122] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa
// [122] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z x
sta (screen_topline),y
// [123] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
// [123] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
lda #$80
sec
sbc.z ang_w
// [124] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
// [124] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z x
sta (screen_bottomline),y
// [125] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1
@ -7233,13 +7236,13 @@ byte* heap_head
byte* heap_head#0 heap_head zp[2]:3 129.1505376344086
byte* heap_head#19 heap_head zp[2]:3 12011.0
void init_angle_screen(byte* init_angle_screen::screen)
byte~ init_angle_screen::$10 reg byte a 20002.0
byte~ init_angle_screen::$11 reg byte a 20002.0
byte~ init_angle_screen::$12 reg byte a 20002.0
byte~ init_angle_screen::$13 reg byte a 20002.0
byte~ init_angle_screen::$3 reg byte a 20002.0
byte~ init_angle_screen::$4 reg byte a 20002.0
byte~ init_angle_screen::$5 reg byte a 20002.0
word~ init_angle_screen::$7 zp[2]:16 20002.0
byte~ init_angle_screen::$9 reg byte a 20002.0
byte~ init_angle_screen::$6 reg byte a 20002.0
word~ init_angle_screen::$9 zp[2]:16 20002.0
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0 ang_w zp[1]:37 8334.166666666666
word init_angle_screen::angle_w
@ -7434,7 +7437,7 @@ reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ]
zp[2]:12 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_buckets::i2#2 init_buckets::i2#1 ]
zp[2]:14 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ]
reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
zp[2]:16 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 init_buckets::i4#2 init_buckets::i4#1 ]
zp[2]:16 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 init_buckets::i4#2 init_buckets::i4#1 ]
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
zp[2]:18 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 init_squares::sqr#2 init_squares::sqr#1 init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ]
reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
@ -7454,11 +7457,11 @@ reg byte a [ init_dist_screen::d#0 ]
reg byte a [ init_angle_screen::$3 ]
reg byte a [ init_angle_screen::$4 ]
zp[2]:33 [ init_angle_screen::xw#0 atan2_16::x#0 sqr::return#2 init_dist_screen::yds#0 ]
reg byte a [ init_angle_screen::$5 ]
reg byte a [ init_angle_screen::$6 ]
zp[2]:35 [ init_angle_screen::yw#0 atan2_16::y#0 sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ]
reg byte a [ init_angle_screen::$9 ]
reg byte a [ init_angle_screen::$10 ]
reg byte a [ init_angle_screen::$11 ]
reg byte a [ init_angle_screen::$12 ]
reg byte a [ init_angle_screen::$13 ]
zp[1]:37 [ init_buckets::distance#0 init_angle_screen::ang_w#0 ]
zp[2]:38 [ init_buckets::$7 init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
reg byte a [ init_buckets::$13 ]
@ -8100,7 +8103,7 @@ init_dist_screen: {
// Utilizes symmetry around the center
// init_angle_screen(byte* zp(8) screen)
init_angle_screen: {
.label __7 = $10
.label __9 = $10
.label screen = 8
.label screen_bottomline = 8
.label xw = $21
@ -8192,17 +8195,17 @@ init_angle_screen: {
eor #$ff
sec
adc #$27
// signed word xw = (signed word)(word){ 39-x*2, 0 }
// MAKEWORD( 39-x*2, 0 )
// [108] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 -- vwuz1=vbuaa_word_vbuc1
ldy #0
sta.z xw+1
sty.z xw
// y*2
// [109] init_angle_screen::$5 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
// [109] init_angle_screen::$6 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
lda.z y
asl
// signed word yw = (signed word)(word){ y*2, 0 }
// [110] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 -- vwuz1=vbuaa_word_vbuc1
// MAKEWORD( y*2, 0 )
// [110] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0 -- vwuz1=vbuaa_word_vbuc1
sta.z yw+1
sty.z yw
// atan2_16(xw, yw)
@ -8215,46 +8218,46 @@ init_angle_screen: {
// word angle_w = atan2_16(xw, yw)
// [115] init_angle_screen::angle_w#0 = atan2_16::return#2
// angle_w+0x0080
// [116] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
// [116] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
lda #$80
clc
adc.z __7
sta.z __7
adc.z __9
sta.z __9
bcc !+
inc.z __7+1
inc.z __9+1
!:
// byte ang_w = BYTE1(angle_w+0x0080)
// [117] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7 -- vbuz1=_byte1_vwuz2
lda.z __7+1
// [117] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9 -- vbuz1=_byte1_vwuz2
lda.z __9+1
sta.z ang_w
// screen_bottomline[xb] = ang_w
// [118] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
ldy.z xb
sta (screen_bottomline),y
// -ang_w
// [119] init_angle_screen::$9 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
// [119] init_angle_screen::$11 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
eor #$ff
clc
adc #1
// screen_topline[xb] = -ang_w
// [120] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa
// [120] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
sta (screen_topline),y
// 0x80+ang_w
// [121] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
// [121] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
lda #$80
clc
adc.z ang_w
// screen_topline[x] = 0x80+ang_w
// [122] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa
// [122] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z x
sta (screen_topline),y
// 0x80-ang_w
// [123] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
// [123] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
lda #$80
sec
sbc.z ang_w
// screen_bottomline[x] = 0x80-ang_w
// [124] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
// [124] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa
sta (screen_bottomline),y
// for( byte x=0,xb=39; x<=19; x++, xb--)
// [125] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1

View File

@ -115,13 +115,13 @@ byte* heap_head
byte* heap_head#0 heap_head zp[2]:3 129.1505376344086
byte* heap_head#19 heap_head zp[2]:3 12011.0
void init_angle_screen(byte* init_angle_screen::screen)
byte~ init_angle_screen::$10 reg byte a 20002.0
byte~ init_angle_screen::$11 reg byte a 20002.0
byte~ init_angle_screen::$12 reg byte a 20002.0
byte~ init_angle_screen::$13 reg byte a 20002.0
byte~ init_angle_screen::$3 reg byte a 20002.0
byte~ init_angle_screen::$4 reg byte a 20002.0
byte~ init_angle_screen::$5 reg byte a 20002.0
word~ init_angle_screen::$7 zp[2]:16 20002.0
byte~ init_angle_screen::$9 reg byte a 20002.0
byte~ init_angle_screen::$6 reg byte a 20002.0
word~ init_angle_screen::$9 zp[2]:16 20002.0
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0 ang_w zp[1]:37 8334.166666666666
word init_angle_screen::angle_w
@ -316,7 +316,7 @@ reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ]
zp[2]:12 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_buckets::i2#2 init_buckets::i2#1 ]
zp[2]:14 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ]
reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
zp[2]:16 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 init_buckets::i4#2 init_buckets::i4#1 ]
zp[2]:16 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 init_buckets::i4#2 init_buckets::i4#1 ]
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
zp[2]:18 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 init_squares::sqr#2 init_squares::sqr#1 init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ]
reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
@ -336,11 +336,11 @@ reg byte a [ init_dist_screen::d#0 ]
reg byte a [ init_angle_screen::$3 ]
reg byte a [ init_angle_screen::$4 ]
zp[2]:33 [ init_angle_screen::xw#0 atan2_16::x#0 sqr::return#2 init_dist_screen::yds#0 ]
reg byte a [ init_angle_screen::$5 ]
reg byte a [ init_angle_screen::$6 ]
zp[2]:35 [ init_angle_screen::yw#0 atan2_16::y#0 sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ]
reg byte a [ init_angle_screen::$9 ]
reg byte a [ init_angle_screen::$10 ]
reg byte a [ init_angle_screen::$11 ]
reg byte a [ init_angle_screen::$12 ]
reg byte a [ init_angle_screen::$13 ]
zp[1]:37 [ init_buckets::distance#0 init_angle_screen::ang_w#0 ]
zp[2]:38 [ init_buckets::$7 init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
reg byte a [ init_buckets::$13 ]

View File

@ -129,7 +129,7 @@ main: {
ldy #0
cmp (fill),y
beq __b10
// word dist_angle = { *dist, *angle }
// MAKEWORD( *dist, *angle )
lda (angle),y
sta.z dist_angle
lda (dist),y
@ -338,7 +338,7 @@ init_dist_screen: {
// Utilizes symmetry around the center
// init_angle_screen(byte* zp($11) screen)
init_angle_screen: {
.label __7 = $19
.label __9 = $19
.label screen = $11
.label screen_bottomline = $11
.label xw = $24
@ -404,14 +404,14 @@ init_angle_screen: {
eor #$ff
sec
adc #$27
// signed word xw = (signed word)(word){ 39-x*2, 0 }
// MAKEWORD( 39-x*2, 0 )
ldy #0
sta.z xw+1
sty.z xw
// y*2
lda.z y
asl
// signed word yw = (signed word)(word){ y*2, 0 }
// MAKEWORD( y*2, 0 )
sta.z yw+1
sty.z yw
// atan2_16(xw, yw)
@ -420,13 +420,13 @@ init_angle_screen: {
// angle_w+0x0080
lda #$80
clc
adc.z __7
sta.z __7
adc.z __9
sta.z __9
bcc !+
inc.z __7+1
inc.z __9+1
!:
// byte ang_w = BYTE1(angle_w+0x0080)
lda.z __7+1
lda.z __9+1
sta.z ang_w
// screen_bottomline[xb] = ang_w
ldy.z xb

View File

@ -193,8 +193,8 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
[85] init_angle_screen::$3 = init_angle_screen::x#2 << 1
[86] init_angle_screen::$4 = $27 - init_angle_screen::$3
[87] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0
[88] init_angle_screen::$5 = init_angle_screen::y#5 << 1
[89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0
[88] init_angle_screen::$6 = init_angle_screen::y#5 << 1
[89] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0
[90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0
[91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0
[92] call atan2_16
@ -202,15 +202,15 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
[94] init_angle_screen::angle_w#0 = atan2_16::return#2
[95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
[96] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7
[95] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
[96] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9
[97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
[98] init_angle_screen::$9 = - init_angle_screen::ang_w#0
[99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9
[100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
[101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10
[102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
[103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11
[98] init_angle_screen::$11 = - init_angle_screen::ang_w#0
[99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11
[100] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
[101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12
[102] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
[103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13
[104] init_angle_screen::x#1 = ++ init_angle_screen::x#2
[105] init_angle_screen::xb#1 = -- init_angle_screen::xb#2
to:init_angle_screen::@2

View File

@ -484,8 +484,8 @@ main::@4: scope:[main] from main::@3 main::@5 main::@6
main::dist#1 = ++ main::dist#2
main::angle#1 = ++ main::angle#2
main::fill#1 = ++ main::fill#3
main::$6 = main::fill#1 < SCREEN_FILL+$3e8
if(main::$6) goto main::@3
main::$7 = main::fill#1 < SCREEN_FILL+$3e8
if(main::$7) goto main::@3
to:main::@7
main::@5: scope:[main] from main::@3
SCREEN_ANGLE#14 = phi( main::@3/SCREEN_ANGLE#13 )
@ -498,10 +498,11 @@ main::@5: scope:[main] from main::@3
main::min_dist_angle#2 = phi( main::@3/main::min_dist_angle#4 )
main::angle#3 = phi( main::@3/main::angle#4 )
main::dist#3 = phi( main::@3/main::dist#4 )
main::dist_angle#0 = (word){ *main::dist#3, *main::angle#3 }
main::$4 = main::dist_angle#0 < main::min_dist_angle#2
main::$5 = ! main::$4
if(main::$5) goto main::@4
main::$4 = *main::dist#3 w= *main::angle#3
main::dist_angle#0 = main::$4
main::$5 = main::dist_angle#0 < main::min_dist_angle#2
main::$6 = ! main::$5
if(main::$6) goto main::@4
to:main::@6
main::@6: scope:[main] from main::@5
SCREEN_ANGLE#15 = phi( main::@5/SCREEN_ANGLE#14 )
@ -524,9 +525,9 @@ main::@7: scope:[main] from main::@4
NUM_SQUARES#20 = phi( main::@4/NUM_SQUARES#25 )
main::min_fill#3 = phi( main::@4/main::min_fill#4 )
main::min_dist_angle#3 = phi( main::@4/main::min_dist_angle#5 )
main::$7 = main::min_dist_angle#3 == $ffff
main::$8 = ! main::$7
if(main::$8) goto main::@8
main::$8 = main::min_dist_angle#3 == $ffff
main::$9 = ! main::$8
if(main::$9) goto main::@8
to:main::@return
main::@8: scope:[main] from main::@7
SQUARES#31 = phi( main::@7/SQUARES#25 )
@ -580,9 +581,11 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
init_angle_screen::x#3 = phi( init_angle_screen::@2/init_angle_screen::x#2 )
init_angle_screen::$3 = init_angle_screen::x#3 * 2
init_angle_screen::$4 = $27 - init_angle_screen::$3
init_angle_screen::xw#0 = (signed word)(word){ init_angle_screen::$4, 0 }
init_angle_screen::$5 = init_angle_screen::y#2 * 2
init_angle_screen::yw#0 = (signed word)(word){ init_angle_screen::$5, 0 }
init_angle_screen::$5 = init_angle_screen::$4 w= 0
init_angle_screen::xw#0 = (signed word)init_angle_screen::$5
init_angle_screen::$6 = init_angle_screen::y#2 * 2
init_angle_screen::$7 = init_angle_screen::$6 w= 0
init_angle_screen::yw#0 = (signed word)init_angle_screen::$7
atan2_16::x#0 = init_angle_screen::xw#0
atan2_16::y#0 = init_angle_screen::yw#0
call atan2_16
@ -595,18 +598,18 @@ init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
init_angle_screen::xb#2 = phi( init_angle_screen::@3/init_angle_screen::xb#3 )
init_angle_screen::screen_bottomline#2 = phi( init_angle_screen::@3/init_angle_screen::screen_bottomline#4 )
atan2_16::return#4 = phi( init_angle_screen::@3/atan2_16::return#2 )
init_angle_screen::$6 = atan2_16::return#4
init_angle_screen::angle_w#0 = init_angle_screen::$6
init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
init_angle_screen::$8 = byte1 init_angle_screen::$7
init_angle_screen::ang_w#0 = init_angle_screen::$8
init_angle_screen::$8 = atan2_16::return#4
init_angle_screen::angle_w#0 = init_angle_screen::$8
init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
init_angle_screen::$10 = byte1 init_angle_screen::$9
init_angle_screen::ang_w#0 = init_angle_screen::$10
init_angle_screen::screen_bottomline#2[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
init_angle_screen::$9 = - init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::xb#2] = init_angle_screen::$9
init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::x#4] = init_angle_screen::$10
init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
init_angle_screen::screen_bottomline#2[init_angle_screen::x#4] = init_angle_screen::$11
init_angle_screen::$11 = - init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::xb#2] = init_angle_screen::$11
init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
init_angle_screen::screen_topline#2[init_angle_screen::x#4] = init_angle_screen::$12
init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
init_angle_screen::screen_bottomline#2[init_angle_screen::x#4] = init_angle_screen::$13
init_angle_screen::x#1 = ++ init_angle_screen::x#4
init_angle_screen::xb#1 = -- init_angle_screen::xb#2
to:init_angle_screen::@2
@ -617,8 +620,8 @@ init_angle_screen::@4: scope:[init_angle_screen] from init_angle_screen::@2
init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#3 - $28
init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#3 + $28
init_angle_screen::y#1 = init_angle_screen::y#3 + rangenext(0,$c)
init_angle_screen::$12 = init_angle_screen::y#1 != rangelast(0,$c)
if(init_angle_screen::$12) goto init_angle_screen::@1
init_angle_screen::$14 = init_angle_screen::y#1 != rangelast(0,$c)
if(init_angle_screen::$14) goto init_angle_screen::@1
to:init_angle_screen::@return
init_angle_screen::@return: scope:[init_angle_screen] from init_angle_screen::@4
return
@ -1338,17 +1341,19 @@ byte* heap_head#9
void init_angle_screen(byte* init_angle_screen::screen)
byte*~ init_angle_screen::$0
byte*~ init_angle_screen::$1
number~ init_angle_screen::$10
number~ init_angle_screen::$11
bool~ init_angle_screen::$12
byte~ init_angle_screen::$10
byte~ init_angle_screen::$11
number~ init_angle_screen::$12
number~ init_angle_screen::$13
bool~ init_angle_screen::$14
bool~ init_angle_screen::$2
number~ init_angle_screen::$3
number~ init_angle_screen::$4
number~ init_angle_screen::$5
word~ init_angle_screen::$6
number~ init_angle_screen::$7
byte~ init_angle_screen::$8
byte~ init_angle_screen::$9
word~ init_angle_screen::$5
number~ init_angle_screen::$6
word~ init_angle_screen::$7
word~ init_angle_screen::$8
number~ init_angle_screen::$9
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0
word init_angle_screen::angle_w
@ -1541,11 +1546,12 @@ word* init_squares::squares#3
void main()
bool~ main::$2
bool~ main::$3
bool~ main::$4
word~ main::$4
bool~ main::$5
bool~ main::$6
bool~ main::$7
bool~ main::$8
bool~ main::$9
byte* main::angle
byte* main::angle#0
byte* main::angle#1
@ -1636,10 +1642,6 @@ word sqrt::val
word sqrt::val#0
word sqrt::val#1
Fixing inline constructor with main::$9 = (byte)*main::dist#3 w= (byte)*main::angle#3
Fixing inline constructor with init_angle_screen::$13 = (byte)init_angle_screen::$4 w= (byte)0
Fixing inline constructor with init_angle_screen::$14 = (byte)init_angle_screen::$5 w= (byte)0
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) 0 in bsearch16u::$5 = bsearch16u::num#3 > 0
Adding number conversion cast (unumber) 1 in bsearch16u::$6 = bsearch16u::num#4 >> 1
Adding number conversion cast (snumber) 0 in bsearch16u::$9 = bsearch16u::result#0 == 0
@ -1670,8 +1672,8 @@ Adding number conversion cast (unumber) 1 in atan2_16::i#1 = atan2_16::i#5 + ran
Adding number conversion cast (snumber) 0 in atan2_16::$13 = atan2_16::y#4 < 0
Adding number conversion cast (unumber) $8000 in atan2_16::$12 = $8000 - atan2_16::angle#9
Adding number conversion cast (unumber) atan2_16::$12 in atan2_16::$12 = (unumber)$8000 - atan2_16::angle#9
Adding number conversion cast (unumber) $3e8 in main::$6 = main::fill#1 < SCREEN_FILL+$3e8
Adding number conversion cast (unumber) $ffff in main::$7 = main::min_dist_angle#3 == $ffff
Adding number conversion cast (unumber) $3e8 in main::$7 = main::fill#1 < SCREEN_FILL+$3e8
Adding number conversion cast (unumber) $ffff in main::$8 = main::min_dist_angle#3 == $ffff
Adding number conversion cast (unumber) $28*$c in init_angle_screen::$0 = init_angle_screen::screen#1 + $28*$c
Adding number conversion cast (unumber) $28*$c in init_angle_screen::$1 = init_angle_screen::screen#1 + $28*$c
Adding number conversion cast (unumber) $13 in init_angle_screen::$2 = init_angle_screen::x#2 <= $13
@ -1679,14 +1681,16 @@ Adding number conversion cast (unumber) 2 in init_angle_screen::$3 = init_angle_
Adding number conversion cast (unumber) init_angle_screen::$3 in init_angle_screen::$3 = init_angle_screen::x#3 * (unumber)2
Adding number conversion cast (unumber) $27 in init_angle_screen::$4 = $27 - init_angle_screen::$3
Adding number conversion cast (unumber) init_angle_screen::$4 in init_angle_screen::$4 = (unumber)$27 - init_angle_screen::$3
Adding number conversion cast (unumber) 2 in init_angle_screen::$5 = init_angle_screen::y#2 * 2
Adding number conversion cast (unumber) init_angle_screen::$5 in init_angle_screen::$5 = init_angle_screen::y#2 * (unumber)2
Adding number conversion cast (unumber) $80 in init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
Adding number conversion cast (unumber) init_angle_screen::$7 in init_angle_screen::$7 = init_angle_screen::angle_w#0 + (unumber)$80
Adding number conversion cast (unumber) $80 in init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$10 in init_angle_screen::$10 = (unumber)$80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$11 in init_angle_screen::$11 = (unumber)$80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) 0 in init_angle_screen::$5 = init_angle_screen::$4 w= 0
Adding number conversion cast (unumber) 2 in init_angle_screen::$6 = init_angle_screen::y#2 * 2
Adding number conversion cast (unumber) init_angle_screen::$6 in init_angle_screen::$6 = init_angle_screen::y#2 * (unumber)2
Adding number conversion cast (unumber) 0 in init_angle_screen::$7 = init_angle_screen::$6 w= 0
Adding number conversion cast (unumber) $80 in init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
Adding number conversion cast (unumber) init_angle_screen::$9 in init_angle_screen::$9 = init_angle_screen::angle_w#0 + (unumber)$80
Adding number conversion cast (unumber) $80 in init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$12 in init_angle_screen::$12 = (unumber)$80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$13 in init_angle_screen::$13 = (unumber)$80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $28 in init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#3 - $28
Adding number conversion cast (unumber) $28 in init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#3 + $28
Adding number conversion cast (unumber) $30 in NUM_SQUARES#2 = $30
@ -1768,8 +1772,6 @@ Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $8000
Simplifying constant integer cast $3e8
Simplifying constant integer cast *main::dist#3
Simplifying constant integer cast *main::angle#3
Simplifying constant integer cast $ffff
Simplifying constant integer cast $13
Simplifying constant integer cast 2
@ -1827,7 +1829,9 @@ Finalized unsigned number type (word) $ffff
Finalized unsigned number type (byte) $13
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $27
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $80
@ -1855,10 +1859,10 @@ Inferred type updated to byte in init_squares::$4 = init_squares::$3 + 1
Inferred type updated to word in atan2_16::$12 = $8000 - atan2_16::angle#9
Inferred type updated to byte in init_angle_screen::$3 = init_angle_screen::x#3 * 2
Inferred type updated to byte in init_angle_screen::$4 = $27 - init_angle_screen::$3
Inferred type updated to byte in init_angle_screen::$5 = init_angle_screen::y#2 * 2
Inferred type updated to word in init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
Inferred type updated to byte in init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
Inferred type updated to byte in init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
Inferred type updated to byte in init_angle_screen::$6 = init_angle_screen::y#2 * 2
Inferred type updated to word in init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
Inferred type updated to byte in init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
Inferred type updated to byte in init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
Inferred type updated to byte in init_dist_screen::$2 = init_dist_screen::y#2 * 2
Inferred type updated to byte in init_dist_screen::$6 = init_dist_screen::y2#1 - $18
Inferred type updated to byte in init_dist_screen::$7 = init_dist_screen::$6
@ -1878,8 +1882,8 @@ Inversing boolean not [132] atan2_16::$11 = atan2_16::x#4 >= 0 from [131] atan2_
Inversing boolean not [143] atan2_16::$19 = 0 == atan2_16::shift#4 from [142] atan2_16::$24 = 0 != atan2_16::shift#4
Inversing boolean not [167] atan2_16::$14 = atan2_16::y#4 >= 0 from [166] atan2_16::$13 = atan2_16::y#4 < 0
Inversing boolean not [200] main::$3 = *main::fill#2 == FILL_CHAR from [199] main::$2 = *main::fill#2 != FILL_CHAR
Inversing boolean not [212] main::$5 = main::dist_angle#0 >= main::min_dist_angle#2 from [211] main::$4 = main::dist_angle#0 < main::min_dist_angle#2
Inversing boolean not [219] main::$8 = main::min_dist_angle#3 != $ffff from [218] main::$7 = main::min_dist_angle#3 == $ffff
Inversing boolean not [212] main::$6 = main::dist_angle#0 >= main::min_dist_angle#2 from [211] main::$5 = main::dist_angle#0 < main::min_dist_angle#2
Inversing boolean not [219] main::$9 = main::min_dist_angle#3 != $ffff from [218] main::$8 = main::min_dist_angle#3 == $ffff
Successful SSA optimization Pass2UnaryNotSimplification
Alias malloc::mem#0 = malloc::$0
Alias malloc::return#0 = malloc::return#5 malloc::return#1
@ -1965,7 +1969,7 @@ Alias heap_head#38 = heap_head#39 heap_head#40
Alias SQUARES#39 = SQUARES#40 SQUARES#41
Alias SCREEN_DIST#14 = SCREEN_DIST#15 SCREEN_DIST#16
Alias SCREEN_ANGLE#13 = SCREEN_ANGLE#14 SCREEN_ANGLE#15
Alias main::dist_angle#0 = main::$9 main::dist_angle#1 main::min_dist_angle#1
Alias main::dist_angle#0 = main::$4 main::dist_angle#1 main::min_dist_angle#1
Alias main::min_dist_angle#3 = main::min_dist_angle#5
Alias main::min_fill#2 = main::min_fill#3 main::min_fill#4
Alias NUM_SQUARES#20 = NUM_SQUARES#25 NUM_SQUARES#24
@ -1984,8 +1988,8 @@ Alias init_angle_screen::screen_bottomline#2 = init_angle_screen::screen_bottoml
Alias init_angle_screen::xb#2 = init_angle_screen::xb#3 init_angle_screen::xb#4
Alias init_angle_screen::screen_topline#2 = init_angle_screen::screen_topline#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#3
Alias atan2_16::return#2 = atan2_16::return#4
Alias init_angle_screen::angle_w#0 = init_angle_screen::$6
Alias init_angle_screen::ang_w#0 = init_angle_screen::$8
Alias init_angle_screen::angle_w#0 = init_angle_screen::$8
Alias init_angle_screen::ang_w#0 = init_angle_screen::$10
Alias init_dist_screen::screen#1 = init_dist_screen::screen#2 init_dist_screen::screen_topline#0
Alias NUM_SQUARES#2 = NUM_SQUARES#43
Alias heap_head#19 = heap_head#6
@ -2175,11 +2179,11 @@ Simple Condition atan2_16::$20 [94] if(atan2_16::yi#3>=0) goto atan2_16::@18
Simple Condition atan2_16::$21 [108] if(atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@10
Simple Condition atan2_16::$14 [111] if(atan2_16::y#0>=0) goto atan2_16::@8
Simple Condition main::$3 [131] if(*main::fill#2==FILL_CHAR) goto main::@4
Simple Condition main::$6 [137] if(main::fill#1<SCREEN_FILL+$3e8) goto main::@3
Simple Condition main::$5 [140] if(main::dist_angle#0>=main::min_dist_angle#2) goto main::@4
Simple Condition main::$8 [142] if(main::min_dist_angle#3!=$ffff) goto main::@8
Simple Condition main::$7 [137] if(main::fill#1<SCREEN_FILL+$3e8) goto main::@3
Simple Condition main::$6 [140] if(main::dist_angle#0>=main::min_dist_angle#2) goto main::@4
Simple Condition main::$9 [142] if(main::min_dist_angle#3!=$ffff) goto main::@8
Simple Condition init_angle_screen::$2 [155] if(init_angle_screen::x#2<=$13) goto init_angle_screen::@3
Simple Condition init_angle_screen::$12 [183] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1
Simple Condition init_angle_screen::$14 [183] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1
Simple Condition init_dist_screen::$3 [194] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2
Simple Condition init_dist_screen::$10 [206] if(init_dist_screen::x#2<=$13) goto init_dist_screen::@6
Simple Condition init_dist_screen::$12 [209] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8
@ -2240,8 +2244,6 @@ Simplifying constant integer cast CORDIC_ITERATIONS_16-1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $13+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast init_angle_screen::$4
Simplifying constant integer cast init_angle_screen::$5
Simplifying constant integer cast $d
Simplifying constant integer cast $13+(unumber)1
Simplifying constant integer cast 1
@ -2268,8 +2270,8 @@ Inlining Noop Cast [179] malloc::return#3 = (void*)malloc::mem#0 keeping malloc:
Inlining Noop Cast [183] malloc::return#4 = (void*)malloc::mem#0 keeping malloc::mem#0
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [27] SQUARES#0 = (word*)init_squares::$1 keeping SQUARES#0
Inlining Noop Cast [114] init_angle_screen::xw#0 = (signed word)init_angle_screen::$13 keeping init_angle_screen::xw#0
Inlining Noop Cast [117] init_angle_screen::yw#0 = (signed word)init_angle_screen::$14 keeping init_angle_screen::yw#0
Inlining Noop Cast [114] init_angle_screen::xw#0 = (signed word)init_angle_screen::$5 keeping init_angle_screen::xw#0
Inlining Noop Cast [117] init_angle_screen::yw#0 = (signed word)init_angle_screen::$7 keeping init_angle_screen::yw#0
Inlining Noop Cast [181] SCREEN_DIST#0 = (byte*)__start::__init1_$0 keeping SCREEN_DIST#0
Inlining Noop Cast [185] SCREEN_ANGLE#0 = (byte*)__start::__init1_$1 keeping SCREEN_ANGLE#0
Successful SSA optimization Pass2NopCastInlining
@ -2281,7 +2283,7 @@ Rewriting division to use shift [60] atan2_16::angle#1 = atan2_16::angle#6 / 2
Rewriting multiplication to use shift [74] atan2_16::$22 = atan2_16::i#2 * SIZEOF_WORD
Rewriting multiplication to use shift [78] atan2_16::$23 = atan2_16::i#2 * SIZEOF_WORD
Rewriting multiplication to use shift [111] init_angle_screen::$3 = init_angle_screen::x#2 * 2
Rewriting multiplication to use shift [115] init_angle_screen::$5 = init_angle_screen::y#5 * 2
Rewriting multiplication to use shift [115] init_angle_screen::$6 = init_angle_screen::y#5 * 2
Rewriting multiplication to use shift [142] init_dist_screen::y2#0 = init_dist_screen::y#10 * 2
Rewriting multiplication to use shift [153] init_dist_screen::x2#0 = init_dist_screen::x#2 * 2
Successful SSA optimization Pass2MultiplyToShiftRewriting
@ -2681,8 +2683,8 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
[85] init_angle_screen::$3 = init_angle_screen::x#2 << 1
[86] init_angle_screen::$4 = $27 - init_angle_screen::$3
[87] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0
[88] init_angle_screen::$5 = init_angle_screen::y#5 << 1
[89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0
[88] init_angle_screen::$6 = init_angle_screen::y#5 << 1
[89] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0
[90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0
[91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0
[92] call atan2_16
@ -2690,15 +2692,15 @@ init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
[94] init_angle_screen::angle_w#0 = atan2_16::return#2
[95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
[96] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7
[95] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
[96] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9
[97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
[98] init_angle_screen::$9 = - init_angle_screen::ang_w#0
[99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9
[100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
[101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10
[102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
[103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11
[98] init_angle_screen::$11 = - init_angle_screen::ang_w#0
[99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11
[100] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
[101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12
[102] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
[103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13
[104] init_angle_screen::x#1 = ++ init_angle_screen::x#2
[105] init_angle_screen::xb#1 = -- init_angle_screen::xb#2
to:init_angle_screen::@2
@ -2995,13 +2997,13 @@ byte* heap_head
byte* heap_head#0 1100.4
byte* heap_head#13 11004.0
void init_angle_screen(byte* init_angle_screen::screen)
byte~ init_angle_screen::$10 20002.0
byte~ init_angle_screen::$11 20002.0
byte~ init_angle_screen::$12 20002.0
byte~ init_angle_screen::$13 20002.0
byte~ init_angle_screen::$3 20002.0
byte~ init_angle_screen::$4 20002.0
byte~ init_angle_screen::$5 20002.0
word~ init_angle_screen::$7 20002.0
byte~ init_angle_screen::$9 20002.0
byte~ init_angle_screen::$6 20002.0
word~ init_angle_screen::$9 20002.0
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0 8334.166666666666
word init_angle_screen::angle_w
@ -3185,17 +3187,17 @@ Added variable init_dist_screen::d#0 to live range equivalence class [ init_dist
Added variable init_angle_screen::$3 to live range equivalence class [ init_angle_screen::$3 ]
Added variable init_angle_screen::$4 to live range equivalence class [ init_angle_screen::$4 ]
Added variable init_angle_screen::xw#0 to live range equivalence class [ init_angle_screen::xw#0 ]
Added variable init_angle_screen::$5 to live range equivalence class [ init_angle_screen::$5 ]
Added variable init_angle_screen::$6 to live range equivalence class [ init_angle_screen::$6 ]
Added variable init_angle_screen::yw#0 to live range equivalence class [ init_angle_screen::yw#0 ]
Added variable atan2_16::x#0 to live range equivalence class [ atan2_16::x#0 ]
Added variable atan2_16::y#0 to live range equivalence class [ atan2_16::y#0 ]
Added variable atan2_16::return#2 to live range equivalence class [ atan2_16::return#2 ]
Added variable init_angle_screen::angle_w#0 to live range equivalence class [ init_angle_screen::angle_w#0 ]
Added variable init_angle_screen::$7 to live range equivalence class [ init_angle_screen::$7 ]
Added variable init_angle_screen::ang_w#0 to live range equivalence class [ init_angle_screen::ang_w#0 ]
Added variable init_angle_screen::$9 to live range equivalence class [ init_angle_screen::$9 ]
Added variable init_angle_screen::$10 to live range equivalence class [ init_angle_screen::$10 ]
Added variable init_angle_screen::ang_w#0 to live range equivalence class [ init_angle_screen::ang_w#0 ]
Added variable init_angle_screen::$11 to live range equivalence class [ init_angle_screen::$11 ]
Added variable init_angle_screen::$12 to live range equivalence class [ init_angle_screen::$12 ]
Added variable init_angle_screen::$13 to live range equivalence class [ init_angle_screen::$13 ]
Added variable SQUARES#0 to live range equivalence class [ SQUARES#0 ]
Added variable init_squares::$3 to live range equivalence class [ init_squares::$3 ]
Added variable init_squares::$4 to live range equivalence class [ init_squares::$4 ]
@ -3265,17 +3267,17 @@ Complete equivalence classes
[ init_angle_screen::$3 ]
[ init_angle_screen::$4 ]
[ init_angle_screen::xw#0 ]
[ init_angle_screen::$5 ]
[ init_angle_screen::$6 ]
[ init_angle_screen::yw#0 ]
[ atan2_16::x#0 ]
[ atan2_16::y#0 ]
[ atan2_16::return#2 ]
[ init_angle_screen::angle_w#0 ]
[ init_angle_screen::$7 ]
[ init_angle_screen::ang_w#0 ]
[ init_angle_screen::$9 ]
[ init_angle_screen::$10 ]
[ init_angle_screen::ang_w#0 ]
[ init_angle_screen::$11 ]
[ init_angle_screen::$12 ]
[ init_angle_screen::$13 ]
[ SQUARES#0 ]
[ init_squares::$3 ]
[ init_squares::$4 ]
@ -3344,17 +3346,17 @@ Allocated zp[1]:80 [ init_dist_screen::d#0 ]
Allocated zp[1]:81 [ init_angle_screen::$3 ]
Allocated zp[1]:82 [ init_angle_screen::$4 ]
Allocated zp[2]:83 [ init_angle_screen::xw#0 ]
Allocated zp[1]:85 [ init_angle_screen::$5 ]
Allocated zp[1]:85 [ init_angle_screen::$6 ]
Allocated zp[2]:86 [ init_angle_screen::yw#0 ]
Allocated zp[2]:88 [ atan2_16::x#0 ]
Allocated zp[2]:90 [ atan2_16::y#0 ]
Allocated zp[2]:92 [ atan2_16::return#2 ]
Allocated zp[2]:94 [ init_angle_screen::angle_w#0 ]
Allocated zp[2]:96 [ init_angle_screen::$7 ]
Allocated zp[2]:96 [ init_angle_screen::$9 ]
Allocated zp[1]:98 [ init_angle_screen::ang_w#0 ]
Allocated zp[1]:99 [ init_angle_screen::$9 ]
Allocated zp[1]:100 [ init_angle_screen::$10 ]
Allocated zp[1]:101 [ init_angle_screen::$11 ]
Allocated zp[1]:99 [ init_angle_screen::$11 ]
Allocated zp[1]:100 [ init_angle_screen::$12 ]
Allocated zp[1]:101 [ init_angle_screen::$13 ]
Allocated zp[2]:102 [ SQUARES#0 ]
Allocated zp[1]:104 [ init_squares::$3 ]
Allocated zp[1]:105 [ init_squares::$4 ]
@ -3416,16 +3418,16 @@ Statement [85] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_
Removing always clobbered register reg byte a as potential for zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Statement [86] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [88] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [93] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [94] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
Statement [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
Statement [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [95] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [98] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:98 [ init_angle_screen::ang_w#0 ]
Statement [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
Statement [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [100] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { } ) always clobbers reg byte a
Statement [102] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { } ) always clobbers reg byte a
Statement [108] SQUARES#0 = (void*)malloc::mem#0 [ SQUARES#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 ] { } ) always clobbers reg byte a
Statement [109] init_squares::squares#0 = (word*)SQUARES#0 [ SQUARES#0 init_squares::squares#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::squares#0 ] { } ) always clobbers reg byte a
Statement [113] *init_squares::squares#2 = init_squares::sqr#2 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y
@ -3528,16 +3530,16 @@ Statement [80] init_angle_screen::screen_topline#1 = init_angle_screen::screen_t
Statement [81] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
Statement [85] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [86] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [88] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [93] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [94] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
Statement [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
Statement [95] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
Statement [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
Statement [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [98] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [100] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { } ) always clobbers reg byte a
Statement [102] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { } ) always clobbers reg byte a
Statement [108] SQUARES#0 = (void*)malloc::mem#0 [ SQUARES#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 ] { } ) always clobbers reg byte a
Statement [109] init_squares::squares#0 = (word*)SQUARES#0 [ SQUARES#0 init_squares::squares#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::squares#0 ] { } ) always clobbers reg byte a
Statement [113] *init_squares::squares#2 = init_squares::sqr#2 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y
@ -3630,16 +3632,16 @@ Statement [80] init_angle_screen::screen_topline#1 = init_angle_screen::screen_t
Statement [81] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
Statement [85] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [86] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [88] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [93] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
Statement [94] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
Statement [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
Statement [95] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
Statement [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
Statement [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
Statement [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [98] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
Statement [100] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { } ) always clobbers reg byte a
Statement [102] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { } ) always clobbers reg byte a
Statement [108] SQUARES#0 = (void*)malloc::mem#0 [ SQUARES#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 ] { } ) always clobbers reg byte a
Statement [109] init_squares::squares#0 = (word*)SQUARES#0 [ SQUARES#0 init_squares::squares#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::squares#0 ] { } ) always clobbers reg byte a
Statement [113] *init_squares::squares#2 = init_squares::sqr#2 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y
@ -3742,17 +3744,17 @@ Potential registers zp[1]:80 [ init_dist_screen::d#0 ] : zp[1]:80 , reg byte a ,
Potential registers zp[1]:81 [ init_angle_screen::$3 ] : zp[1]:81 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:82 [ init_angle_screen::$4 ] : zp[1]:82 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:83 [ init_angle_screen::xw#0 ] : zp[2]:83 ,
Potential registers zp[1]:85 [ init_angle_screen::$5 ] : zp[1]:85 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:85 [ init_angle_screen::$6 ] : zp[1]:85 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:86 [ init_angle_screen::yw#0 ] : zp[2]:86 ,
Potential registers zp[2]:88 [ atan2_16::x#0 ] : zp[2]:88 ,
Potential registers zp[2]:90 [ atan2_16::y#0 ] : zp[2]:90 ,
Potential registers zp[2]:92 [ atan2_16::return#2 ] : zp[2]:92 ,
Potential registers zp[2]:94 [ init_angle_screen::angle_w#0 ] : zp[2]:94 ,
Potential registers zp[2]:96 [ init_angle_screen::$7 ] : zp[2]:96 ,
Potential registers zp[2]:96 [ init_angle_screen::$9 ] : zp[2]:96 ,
Potential registers zp[1]:98 [ init_angle_screen::ang_w#0 ] : zp[1]:98 , reg byte x , reg byte y ,
Potential registers zp[1]:99 [ init_angle_screen::$9 ] : zp[1]:99 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:100 [ init_angle_screen::$10 ] : zp[1]:100 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:101 [ init_angle_screen::$11 ] : zp[1]:101 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:99 [ init_angle_screen::$11 ] : zp[1]:99 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:100 [ init_angle_screen::$12 ] : zp[1]:100 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:101 [ init_angle_screen::$13 ] : zp[1]:101 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:102 [ SQUARES#0 ] : zp[2]:102 ,
Potential registers zp[1]:104 [ init_squares::$3 ] : zp[1]:104 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:105 [ init_squares::$4 ] : zp[1]:105 , reg byte a , reg byte x , reg byte y ,
@ -3776,7 +3778,7 @@ Uplift Scope [bsearch16u] 7,555,555,563.11: zp[1]:56 [ bsearch16u::num#5 bsearch
Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:49 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:50 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 1,733,333,338.67: zp[2]:52 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 752,480,960.9: zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 269,093,340.68: zp[2]:40 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 227,373,342.67: zp[2]:42 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 200,000,002: zp[1]:120 [ atan2_16::$23 ] 200,000,002: zp[1]:121 [ atan2_16::$22 ] 170,833,335.04: zp[1]:44 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:47 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] 20,002: zp[2]:92 [ atan2_16::return#2 ] 10,789.61: zp[2]:88 [ atan2_16::x#0 ] 10,250.12: zp[2]:90 [ atan2_16::y#0 ]
Uplift Scope [sqrt] 200,002: zp[2]:113 [ sqrt::found#0 ] 200,002: zp[2]:115 [ sqrt::$2 ] 110,002: zp[2]:77 [ sqrt::val#0 ] 100,001: zp[2]:117 [ sqrt::$1 ] 36,667.33: zp[1]:119 [ sqrt::return#0 ] 20,002: zp[1]:79 [ sqrt::return#2 ]
Uplift Scope [sqr] 200,002: zp[1]:106 [ sqr::$0 ] 133,007: zp[1]:39 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 27,750.75: zp[2]:107 [ sqr::return#0 ] 20,002: zp[2]:71 [ sqr::return#3 ] 2,002: zp[2]:66 [ sqr::return#2 ]
Uplift Scope [init_angle_screen] 21,820.36: zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:81 [ init_angle_screen::$3 ] 20,002: zp[1]:82 [ init_angle_screen::$4 ] 20,002: zp[1]:85 [ init_angle_screen::$5 ] 20,002: zp[2]:94 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:96 [ init_angle_screen::$7 ] 20,002: zp[1]:99 [ init_angle_screen::$9 ] 20,002: zp[1]:100 [ init_angle_screen::$10 ] 20,002: zp[1]:101 [ init_angle_screen::$11 ] 12,858.43: zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:98 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:86 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:83 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,703.03: zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,623.54: zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] 112: zp[2]:63 [ init_angle_screen::screen#0 ]
Uplift Scope [init_angle_screen] 21,820.36: zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:81 [ init_angle_screen::$3 ] 20,002: zp[1]:82 [ init_angle_screen::$4 ] 20,002: zp[1]:85 [ init_angle_screen::$6 ] 20,002: zp[2]:94 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:96 [ init_angle_screen::$9 ] 20,002: zp[1]:99 [ init_angle_screen::$11 ] 20,002: zp[1]:100 [ init_angle_screen::$12 ] 20,002: zp[1]:101 [ init_angle_screen::$13 ] 12,858.43: zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:98 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:86 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:83 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,703.03: zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,623.54: zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] 112: zp[2]:63 [ init_angle_screen::screen#0 ]
Uplift Scope [init_dist_screen] 70,007: zp[1]:26 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 21,906.95: zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 20,002: zp[1]:70 [ init_dist_screen::x2#0 ] 20,002: zp[2]:73 [ init_dist_screen::xds#0 ] 20,002: zp[2]:75 [ init_dist_screen::ds#0 ] 13,001.3: zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 12,501.25: zp[1]:80 [ init_dist_screen::d#0 ] 7,007: zp[1]:23 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 2,002: zp[1]:65 [ init_dist_screen::y2#0 ] 1,589.82: zp[1]:18 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 1,539.18: zp[2]:21 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] 1,244.53: zp[2]:19 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] 478.35: zp[2]:68 [ init_dist_screen::yds#0 ]
Uplift Scope [init_squares] 25,716.86: zp[1]:34 [ init_squares::i#2 init_squares::i#1 ] 20,002: zp[1]:104 [ init_squares::$3 ] 20,002: zp[1]:105 [ init_squares::$4 ] 16,337.07: zp[2]:37 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 15,001.5: zp[2]:35 [ init_squares::sqr#2 init_squares::sqr#1 ]
Uplift Scope [main] 5,826: zp[2]:16 [ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ] 3,088.93: zp[2]:14 [ main::min_fill#5 main::min_fill#2 main::min_fill#10 ] 3,003: zp[2]:12 [ main::min_dist_angle#2 main::min_dist_angle#6 ] 1,401.4: zp[2]:6 [ main::fill#2 main::fill#1 ] 1,047.39: zp[2]:10 [ main::angle#2 main::angle#0 main::angle#1 ] 889.4: zp[2]:8 [ main::dist#2 main::dist#0 main::dist#1 ]
@ -3790,7 +3792,7 @@ Uplifting [atan2_16] best 1223286 combination reg byte y [ atan2_16::shift#2 ata
Limited combination testing to 100 combinations of 144 possible.
Uplifting [sqrt] best 1222383 combination zp[2]:113 [ sqrt::found#0 ] zp[2]:115 [ sqrt::$2 ] zp[2]:77 [ sqrt::val#0 ] zp[2]:117 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ]
Uplifting [sqr] best 1222046 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:107 [ sqr::return#0 ] zp[2]:71 [ sqr::return#3 ] zp[2]:66 [ sqr::return#2 ]
Uplifting [init_angle_screen] best 1220446 combination zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] zp[2]:94 [ init_angle_screen::angle_w#0 ] zp[2]:96 [ init_angle_screen::$7 ] zp[1]:99 [ init_angle_screen::$9 ] zp[1]:100 [ init_angle_screen::$10 ] zp[1]:101 [ init_angle_screen::$11 ] zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:98 [ init_angle_screen::ang_w#0 ] zp[2]:86 [ init_angle_screen::yw#0 ] zp[2]:83 [ init_angle_screen::xw#0 ] zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] zp[2]:63 [ init_angle_screen::screen#0 ]
Uplifting [init_angle_screen] best 1220446 combination zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$6 ] zp[2]:94 [ init_angle_screen::angle_w#0 ] zp[2]:96 [ init_angle_screen::$9 ] zp[1]:99 [ init_angle_screen::$11 ] zp[1]:100 [ init_angle_screen::$12 ] zp[1]:101 [ init_angle_screen::$13 ] zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:98 [ init_angle_screen::ang_w#0 ] zp[2]:86 [ init_angle_screen::yw#0 ] zp[2]:83 [ init_angle_screen::xw#0 ] zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] zp[2]:63 [ init_angle_screen::screen#0 ]
Limited combination testing to 100 combinations of 331776 possible.
Uplifting [init_dist_screen] best 1217246 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:73 [ init_dist_screen::xds#0 ] zp[2]:75 [ init_dist_screen::ds#0 ] zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:23 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:65 [ init_dist_screen::y2#0 ] zp[1]:18 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:21 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[2]:19 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:68 [ init_dist_screen::yds#0 ]
Limited combination testing to 100 combinations of 6144 possible.
@ -3804,12 +3806,12 @@ Attempting to uplift remaining variables inzp[1]:25 [ init_dist_screen::xb#2 ini
Uplifting [init_dist_screen] best 1217046 combination zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Attempting to uplift remaining variables inzp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Uplifting [init_angle_screen] best 1217046 combination zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Attempting to uplift remaining variables inzp[1]:99 [ init_angle_screen::$9 ]
Uplifting [init_angle_screen] best 1216446 combination reg byte a [ init_angle_screen::$9 ]
Attempting to uplift remaining variables inzp[1]:100 [ init_angle_screen::$10 ]
Uplifting [init_angle_screen] best 1216046 combination reg byte a [ init_angle_screen::$10 ]
Attempting to uplift remaining variables inzp[1]:101 [ init_angle_screen::$11 ]
Uplifting [init_angle_screen] best 1215446 combination reg byte a [ init_angle_screen::$11 ]
Attempting to uplift remaining variables inzp[1]:99 [ init_angle_screen::$11 ]
Uplifting [init_angle_screen] best 1216446 combination reg byte a [ init_angle_screen::$11 ]
Attempting to uplift remaining variables inzp[1]:100 [ init_angle_screen::$12 ]
Uplifting [init_angle_screen] best 1216046 combination reg byte a [ init_angle_screen::$12 ]
Attempting to uplift remaining variables inzp[1]:101 [ init_angle_screen::$13 ]
Uplifting [init_angle_screen] best 1215446 combination reg byte a [ init_angle_screen::$13 ]
Attempting to uplift remaining variables inzp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Uplifting [init_dist_screen] best 1215446 combination zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Attempting to uplift remaining variables inzp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
@ -3840,7 +3842,7 @@ Coalescing zero page register [ zp[2]:4 [ malloc::size#3 malloc::mem#0 ] ] with
Coalescing zero page register [ zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] with [ zp[2]:92 [ atan2_16::return#2 init_angle_screen::angle_w#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 ] ] with [ zp[2]:113 [ sqrt::found#0 sqrt::$2 ] ] - score: 1
Coalescing zero page register [ zp[2]:71 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 ] ] with [ zp[2]:75 [ init_dist_screen::ds#0 sqrt::val#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp[2]:96 [ init_angle_screen::$7 ] ] - score: 1
Coalescing zero page register [ zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp[2]:96 [ init_angle_screen::$9 ] ] - score: 1
Coalescing zero page register [ zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 ] ] with [ zp[2]:117 [ sqrt::$1 ] ] - score: 1
Coalescing zero page register [ zp[2]:71 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 ] ] with [ zp[2]:109 [ bsearch16u::key#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:6 [ main::fill#2 main::fill#1 ] ] with [ zp[2]:2 [ heap_head#13 heap_head#0 ] ]
@ -3852,7 +3854,7 @@ Coalescing zero page register [ zp[1]:32 [ init_angle_screen::x#2 init_angle_scr
Coalescing zero page register [ zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] ] with [ zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] ]
Coalescing zero page register [ zp[2]:40 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] ] with [ zp[2]:35 [ init_squares::sqr#2 init_squares::sqr#1 ] ]
Coalescing zero page register [ zp[2]:42 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ] with [ zp[2]:37 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] ]
Coalescing zero page register [ zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 ] ] with [ zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] ]
Coalescing zero page register [ zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 ] ] with [ zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ] ]
Coalescing zero page register [ zp[2]:66 [ sqr::return#2 init_dist_screen::yds#0 ] ] with [ zp[2]:50 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] ]
Coalescing zero page register [ zp[2]:71 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ] ] with [ zp[2]:52 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] ]
Coalescing zero page register [ zp[2]:124 [ bsearch16u::pivot#0 ] ] with [ zp[2]:83 [ init_angle_screen::xw#0 atan2_16::x#0 ] ]
@ -3870,7 +3872,7 @@ Allocated (was zp[1]:32) zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#
Allocated (was zp[1]:33) zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Allocated (was zp[2]:40) zp[2]:21 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_squares::sqr#2 init_squares::sqr#1 ]
Allocated (was zp[2]:42) zp[2]:23 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
Allocated (was zp[2]:54) zp[2]:25 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
Allocated (was zp[2]:54) zp[2]:25 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ]
Allocated (was zp[2]:57) zp[2]:27 [ SCREEN_DIST#0 ]
Allocated (was zp[2]:59) zp[2]:29 [ SCREEN_ANGLE#0 ]
Allocated (was zp[2]:66) zp[2]:31 [ sqr::return#2 init_dist_screen::yds#0 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
@ -4395,7 +4397,7 @@ init_dist_screen: {
// Utilizes symmetry around the center
// init_angle_screen(byte* zp($11) screen)
init_angle_screen: {
.label __7 = $19
.label __9 = $19
.label screen = $11
.label screen_bottomline = $11
.label xw = $24
@ -4493,10 +4495,10 @@ init_angle_screen: {
ldy #0
sta.z xw+1
sty.z xw
// [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
// [88] init_angle_screen::$6 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
lda.z y
asl
// [89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 -- vwuz1=vbuaa_word_vbuc1
// [89] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0 -- vwuz1=vbuaa_word_vbuc1
ldy #0
sta.z yw+1
sty.z yw
@ -4509,41 +4511,41 @@ init_angle_screen: {
// init_angle_screen::@5
__b5:
// [94] init_angle_screen::angle_w#0 = atan2_16::return#2
// [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
// [95] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
lda #$80
clc
adc.z __7
sta.z __7
adc.z __9
sta.z __9
bcc !+
inc.z __7+1
inc.z __9+1
!:
// [96] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7 -- vbuz1=_byte1_vwuz2
lda.z __7+1
// [96] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9 -- vbuz1=_byte1_vwuz2
lda.z __9+1
sta.z ang_w
// [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
lda.z ang_w
ldy.z xb
sta (screen_bottomline),y
// [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
// [98] init_angle_screen::$11 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
lda.z ang_w
eor #$ff
clc
adc #1
// [99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa
// [99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z xb
sta (screen_topline),y
// [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
// [100] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
lda #$80
clc
adc.z ang_w
// [101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa
// [101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z x
sta (screen_topline),y
// [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
// [102] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
lda #$80
sec
sbc.z ang_w
// [103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
// [103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z x
sta (screen_bottomline),y
// [104] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1
@ -5482,13 +5484,13 @@ byte* heap_head
byte* heap_head#0 heap_head zp[2]:2 1100.4
byte* heap_head#13 heap_head zp[2]:2 11004.0
void init_angle_screen(byte* init_angle_screen::screen)
byte~ init_angle_screen::$10 reg byte a 20002.0
byte~ init_angle_screen::$11 reg byte a 20002.0
byte~ init_angle_screen::$12 reg byte a 20002.0
byte~ init_angle_screen::$13 reg byte a 20002.0
byte~ init_angle_screen::$3 reg byte a 20002.0
byte~ init_angle_screen::$4 reg byte a 20002.0
byte~ init_angle_screen::$5 reg byte a 20002.0
word~ init_angle_screen::$7 zp[2]:25 20002.0
byte~ init_angle_screen::$9 reg byte a 20002.0
byte~ init_angle_screen::$6 reg byte a 20002.0
word~ init_angle_screen::$9 zp[2]:25 20002.0
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0 ang_w zp[1]:35 8334.166666666666
word init_angle_screen::angle_w
@ -5639,7 +5641,7 @@ zp[2]:21 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16
zp[2]:23 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
zp[2]:25 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
zp[2]:25 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ]
reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
zp[2]:27 [ SCREEN_DIST#0 ]
zp[2]:29 [ SCREEN_ANGLE#0 ]
@ -5651,11 +5653,11 @@ reg byte a [ sqrt::return#2 ]
reg byte a [ init_dist_screen::d#0 ]
reg byte a [ init_angle_screen::$3 ]
reg byte a [ init_angle_screen::$4 ]
reg byte a [ init_angle_screen::$5 ]
reg byte a [ init_angle_screen::$6 ]
zp[1]:35 [ init_angle_screen::ang_w#0 ]
reg byte a [ init_angle_screen::$9 ]
reg byte a [ init_angle_screen::$10 ]
reg byte a [ init_angle_screen::$11 ]
reg byte a [ init_angle_screen::$12 ]
reg byte a [ init_angle_screen::$13 ]
reg byte a [ init_squares::$3 ]
reg byte a [ init_squares::$4 ]
reg byte a [ sqr::$0 ]
@ -5849,7 +5851,7 @@ main: {
cmp (fill),y
beq __b10
// main::@4
// word dist_angle = { *dist, *angle }
// MAKEWORD( *dist, *angle )
// [21] main::dist_angle#0 = *main::dist#2 w= *main::angle#2 -- vwuz1=_deref_pbuz2_word__deref_pbuz3
lda (angle),y
sta.z dist_angle
@ -6163,7 +6165,7 @@ init_dist_screen: {
// Utilizes symmetry around the center
// init_angle_screen(byte* zp($11) screen)
init_angle_screen: {
.label __7 = $19
.label __9 = $19
.label screen = $11
.label screen_bottomline = $11
.label xw = $24
@ -6255,17 +6257,17 @@ init_angle_screen: {
eor #$ff
sec
adc #$27
// signed word xw = (signed word)(word){ 39-x*2, 0 }
// MAKEWORD( 39-x*2, 0 )
// [87] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 -- vwuz1=vbuaa_word_vbuc1
ldy #0
sta.z xw+1
sty.z xw
// y*2
// [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
// [88] init_angle_screen::$6 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
lda.z y
asl
// signed word yw = (signed word)(word){ y*2, 0 }
// [89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 -- vwuz1=vbuaa_word_vbuc1
// MAKEWORD( y*2, 0 )
// [89] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0 -- vwuz1=vbuaa_word_vbuc1
sta.z yw+1
sty.z yw
// atan2_16(xw, yw)
@ -6278,46 +6280,46 @@ init_angle_screen: {
// word angle_w = atan2_16(xw, yw)
// [94] init_angle_screen::angle_w#0 = atan2_16::return#2
// angle_w+0x0080
// [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
// [95] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
lda #$80
clc
adc.z __7
sta.z __7
adc.z __9
sta.z __9
bcc !+
inc.z __7+1
inc.z __9+1
!:
// byte ang_w = BYTE1(angle_w+0x0080)
// [96] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$7 -- vbuz1=_byte1_vwuz2
lda.z __7+1
// [96] init_angle_screen::ang_w#0 = byte1 init_angle_screen::$9 -- vbuz1=_byte1_vwuz2
lda.z __9+1
sta.z ang_w
// screen_bottomline[xb] = ang_w
// [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
ldy.z xb
sta (screen_bottomline),y
// -ang_w
// [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
// [98] init_angle_screen::$11 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
eor #$ff
clc
adc #1
// screen_topline[xb] = -ang_w
// [99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa
// [99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
sta (screen_topline),y
// 0x80+ang_w
// [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
// [100] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
lda #$80
clc
adc.z ang_w
// screen_topline[x] = 0x80+ang_w
// [101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa
// [101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa
ldy.z x
sta (screen_topline),y
// 0x80-ang_w
// [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
// [102] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
lda #$80
sec
sbc.z ang_w
// screen_bottomline[x] = 0x80-ang_w
// [103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
// [103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa
sta (screen_bottomline),y
// for( byte x=0,xb=39; x<=19; x++, xb--)
// [104] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1

View File

@ -103,13 +103,13 @@ byte* heap_head
byte* heap_head#0 heap_head zp[2]:2 1100.4
byte* heap_head#13 heap_head zp[2]:2 11004.0
void init_angle_screen(byte* init_angle_screen::screen)
byte~ init_angle_screen::$10 reg byte a 20002.0
byte~ init_angle_screen::$11 reg byte a 20002.0
byte~ init_angle_screen::$12 reg byte a 20002.0
byte~ init_angle_screen::$13 reg byte a 20002.0
byte~ init_angle_screen::$3 reg byte a 20002.0
byte~ init_angle_screen::$4 reg byte a 20002.0
byte~ init_angle_screen::$5 reg byte a 20002.0
word~ init_angle_screen::$7 zp[2]:25 20002.0
byte~ init_angle_screen::$9 reg byte a 20002.0
byte~ init_angle_screen::$6 reg byte a 20002.0
word~ init_angle_screen::$9 zp[2]:25 20002.0
byte init_angle_screen::ang_w
byte init_angle_screen::ang_w#0 ang_w zp[1]:35 8334.166666666666
word init_angle_screen::angle_w
@ -260,7 +260,7 @@ zp[2]:21 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16
zp[2]:23 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
zp[2]:25 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
zp[2]:25 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ]
reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
zp[2]:27 [ SCREEN_DIST#0 ]
zp[2]:29 [ SCREEN_ANGLE#0 ]
@ -272,11 +272,11 @@ reg byte a [ sqrt::return#2 ]
reg byte a [ init_dist_screen::d#0 ]
reg byte a [ init_angle_screen::$3 ]
reg byte a [ init_angle_screen::$4 ]
reg byte a [ init_angle_screen::$5 ]
reg byte a [ init_angle_screen::$6 ]
zp[1]:35 [ init_angle_screen::ang_w#0 ]
reg byte a [ init_angle_screen::$9 ]
reg byte a [ init_angle_screen::$10 ]
reg byte a [ init_angle_screen::$11 ]
reg byte a [ init_angle_screen::$12 ]
reg byte a [ init_angle_screen::$13 ]
reg byte a [ init_squares::$3 ]
reg byte a [ init_squares::$4 ]
reg byte a [ sqr::$0 ]

View File

@ -522,7 +522,7 @@ div32u16u: {
jsr divr16u
// divr16u(WORD0(dividend), divisor, rem16u)
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
lda.z quotient_hi
sta.z return+2
lda.z quotient_hi+1

View File

@ -6663,7 +6663,7 @@ div32u16u: {
// div32u16u::@2
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// [111] div32u16u::quotient_lo#0 = divr16u::return#3
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
// [112] div32u16u::return#0 = div32u16u::quotient_hi#0 dw= div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3
lda.z quotient_hi
sta.z return+2

View File

@ -381,7 +381,7 @@ div32u16u: {
jsr divr16u
// divr16u(WORD0(dividend), divisor, rem16u)
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
lda.z quotient_hi
sta.z return+2
lda.z quotient_hi+1

View File

@ -6474,7 +6474,7 @@ div32u16u: {
// div32u16u::@2
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// [78] div32u16u::quotient_lo#0 = divr16u::return#3
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
// [79] div32u16u::return#1 = div32u16u::quotient_hi#0 dw= div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3
lda.z quotient_hi
sta.z return+2

View File

@ -511,7 +511,7 @@ div32u16u: {
jsr divr16u
// divr16u(WORD0(dividend), divisor, rem16u)
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
lda.z quotient_hi
sta.z return+2
lda.z quotient_hi+1

View File

@ -7066,7 +7066,7 @@ div32u16u: {
// div32u16u::@2
// unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u)
// [126] div32u16u::quotient_lo#0 = divr16u::return#4
// MAKEDWORD( quotient_hi, quotient_lo )
// MAKELONG( quotient_hi, quotient_lo )
// [127] div32u16u::return#1 = div32u16u::quotient_hi#0 dw= div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3
lda.z quotient_hi
sta.z return+2

View File

@ -1042,7 +1042,7 @@ mulf8u_prepared: {
sm4:
sbc mulf_sqr2_hi,x
sta memB
// return { *memB, *resL };
// MAKEWORD( *memB, *resL )
sta.z return+1
lda resL
sta.z return

View File

@ -504,7 +504,8 @@ mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared mulf8u::@1
mulf8u_prepared::b#2 = phi( mulf8s_prepared/mulf8u_prepared::b#1, mulf8u::@1/mulf8u_prepared::b#0 )
*mulf8u_prepared::memB = mulf8u_prepared::b#2
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 }
mulf8u_prepared::return#0 = ((word)) { *mulf8u_prepared::memB, *mulf8u_prepared::resL }
mulf8u_prepared::$0 = *mulf8u_prepared::memB w= *mulf8u_prepared::resL
mulf8u_prepared::return#0 = mulf8u_prepared::$0
to:mulf8u_prepared::@return
mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared
mulf8u_prepared::return#4 = phi( mulf8u_prepared/mulf8u_prepared::return#0 )
@ -1974,6 +1975,7 @@ byte mulf8u_prepare::a#1
byte mulf8u_prepare::a#2
constant byte* const mulf8u_prepare::memA = (byte*)$fd
word mulf8u_prepared(byte mulf8u_prepared::b)
word~ mulf8u_prepared::$0
byte mulf8u_prepared::b
byte mulf8u_prepared::b#0
byte mulf8u_prepared::b#1
@ -2594,8 +2596,6 @@ word print_uint::w#5
word print_uint::w#6
word print_uint::w#7
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) 0 in print_str::$1 = 0 != *print_str::str#16
Adding number conversion cast (unumber) $28 in print_ln::$0 = print_line_cursor#24 + $28
Adding number conversion cast (snumber) 0 in print_sint::$0 = print_sint::w#4 < 0
@ -2691,8 +2691,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 *mulf8u_prepared::memB
Simplifying constant integer cast *mulf8u_prepared::resL
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 5
@ -10169,7 +10167,7 @@ mulf8u_prepared: {
sm4:
sbc mulf_sqr2_hi,x
sta memB
// return { *memB, *resL };
// MAKEWORD( *memB, *resL )
// [302] mulf8u_prepared::return#0 = *mulf8u_prepared::memB w= *mulf8u_prepared::resL -- vwuz1=_deref_pbuc1_word__deref_pbuc2
sta.z return+1
lda resL