1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-02-17 10:30:43 +00:00

Updated tests with better ASM

This commit is contained in:
jespergravgaard 2019-03-17 22:49:02 +01:00
parent dc76b2bed0
commit 93d36f25be
33 changed files with 1951 additions and 2009 deletions

View File

@ -36,7 +36,7 @@ isSet: {
.label b = 2
txa
and #8
cmp #0
eor #0
beq !+
lda #1
!:

View File

@ -372,7 +372,7 @@ isSet: {
sta _0
//SEG35 [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuz2_neq_vbuc1
lda _0
cmp #0
eor #0
beq !+
lda #1
!:
@ -521,7 +521,7 @@ isSet: {
txa
and #8
//SEG35 [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboaa=vbuaa_neq_vbuc1
cmp #0
eor #0
beq !+
lda #1
!:
@ -684,7 +684,7 @@ isSet: {
txa
and #8
//SEG35 [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboaa=vbuaa_neq_vbuc1
cmp #0
eor #0
beq !+
lda #1
!:

View File

@ -1977,12 +1977,11 @@ gfx_init_vic_bitmap: {
ldy l
lda lines_x,y
sta bitmap_line.x0
lda lines_x+1,y
sta bitmap_line.x1
ldx lines_x+1,y
lda lines_y,y
sta bitmap_line.y0
ldx l
ldy lines_y+1,x
lda lines_y+1,y
sta bitmap_line.y1
jsr bitmap_line
inc l
lda l
@ -1993,107 +1992,110 @@ gfx_init_vic_bitmap: {
lines_y: .byte 0, 0, $c7, $c7, 0, 0, $64, $c7, $64, 0
}
// Draw a line on the bitmap
// bitmap_line(byte zeropage(9) x0, byte zeropage($12) x1, byte zeropage($f) y0, byte register(Y) y1)
// bitmap_line(byte zeropage(9) x0, byte register(X) x1, byte zeropage($f) y0, byte zeropage($12) y1)
bitmap_line: {
.label xd = 8
.label yd = 7
.label x0 = 9
.label x1 = $12
.label y0 = $f
lda x0
cmp x1
bcc b1
sec
sbc x1
sta xd
tya
cmp y0
.label y1 = $12
txa
cmp x0
beq !+
bcs b2
bcs b1
!:
tya
txa
eor #$ff
sec
adc y0
sta yd
cmp xd
adc x0
sta xd
lda y0
cmp y1
bcc b2
sec
sbc y1
tay
cpy xd
bcc b3
sty bitmap_line_ydxi.y
ldx x1
lda y1
sta bitmap_line_ydxi.y
lda y0
sta bitmap_line_ydxi.y1
sty bitmap_line_ydxi.yd
jsr bitmap_line_ydxi
breturn:
rts
b3:
lda x1
sta bitmap_line_xdyi.x
sty bitmap_line_xdyi.y
stx bitmap_line_xdyi.x
lda y1
sta bitmap_line_xdyi.y
sty bitmap_line_xdyi.yd
jsr bitmap_line_xdyi
jmp breturn
b2:
tya
lda y1
sec
sbc y0
sta yd
cmp xd
tay
cpy xd
bcc b6
lda y0
sta bitmap_line_ydxd.y
ldx x0
sty bitmap_line_ydxd.y1
lda y1
sta bitmap_line_ydxd.y1
sty bitmap_line_ydxd.yd
jsr bitmap_line_ydxd
jmp breturn
b6:
lda x1
sta bitmap_line_xdyd.x
sty bitmap_line_xdyd.y
lda x0
sta bitmap_line_xdyd.x1
stx bitmap_line_xdyd.x
lda y1
sta bitmap_line_xdyd.y
sty bitmap_line_xdyd.yd
jsr bitmap_line_xdyd
jmp breturn
b1:
lda x1
txa
sec
sbc x0
sta xd
tya
cmp y0
beq !+
bcs b9
!:
tya
eor #$ff
lda y0
cmp y1
bcc b9
sec
adc y0
sta yd
cmp xd
sbc y1
tay
cpy xd
bcc b10
sty bitmap_line_ydxd.y
ldx x1
lda y1
sta bitmap_line_ydxd.y
sty bitmap_line_ydxd.yd
jsr bitmap_line_ydxd
jmp breturn
b10:
lda x0
sta bitmap_line_xdyd.x
stx bitmap_line_xdyd.x1
sty bitmap_line_xdyd.yd
jsr bitmap_line_xdyd
jmp breturn
b9:
tya
lda y1
sec
sbc y0
sta yd
cmp xd
tay
cpy xd
bcc b13
lda y0
sta bitmap_line_ydxi.y
ldx x0
sty bitmap_line_ydxi.y1
sty bitmap_line_ydxi.yd
jsr bitmap_line_ydxi
jmp breturn
b13:
lda x0
sta bitmap_line_xdyi.x
lda x1
sta bitmap_line_xdyi.x1
stx bitmap_line_xdyi.x1
sty bitmap_line_xdyi.yd
jsr bitmap_line_xdyi
jmp breturn
}
@ -2158,10 +2160,10 @@ bitmap_plot: {
sta (_0),y
rts
}
// bitmap_line_ydxi(byte zeropage($e) y, byte register(X) x, byte zeropage($f) y1, byte zeropage(7) yd, byte zeropage(8) xd)
// bitmap_line_ydxi(byte zeropage($e) y, byte register(X) x, byte zeropage($12) y1, byte zeropage(7) yd, byte zeropage(8) xd)
bitmap_line_ydxi: {
.label y = $e
.label y1 = $f
.label y1 = $12
.label yd = 7
.label xd = 8
.label e = 9
@ -2192,14 +2194,14 @@ bitmap_line_ydxi: {
bne b1
rts
}
// bitmap_line_xdyd(byte zeropage($e) x, byte zeropage($f) y, byte zeropage($12) x1, byte zeropage(8) xd, byte zeropage(7) yd)
// bitmap_line_xdyd(byte zeropage($e) x, byte zeropage($f) y, byte zeropage(9) x1, byte zeropage(8) xd, byte zeropage(7) yd)
bitmap_line_xdyd: {
.label x = $e
.label y = $f
.label x1 = $12
.label x1 = 9
.label xd = 8
.label yd = 7
.label e = 9
.label e = $12
lda yd
lsr
sta e

File diff suppressed because it is too large Load Diff

View File

@ -439,19 +439,19 @@
(byte) bitmap_line::x0
(byte) bitmap_line::x0#0 x0 zp ZP_BYTE:9 1.260869565217391
(byte) bitmap_line::x1
(byte) bitmap_line::x1#0 x1 zp ZP_BYTE:18 1.3181818181818181
(byte) bitmap_line::x1#0 reg byte x 1.3181818181818181
(byte) bitmap_line::xd
(byte) bitmap_line::xd#1 xd zp ZP_BYTE:8 0.7
(byte) bitmap_line::xd#2 xd zp ZP_BYTE:8 0.7
(byte) bitmap_line::y0
(byte) bitmap_line::y0#0 y0 zp ZP_BYTE:15 1.6666666666666674
(byte) bitmap_line::y1
(byte) bitmap_line::y1#0 reg byte y 1.7500000000000007
(byte) bitmap_line::y1#0 y1 zp ZP_BYTE:18 1.7500000000000007
(byte) bitmap_line::yd
(byte) bitmap_line::yd#1 yd zp ZP_BYTE:7 0.8888888888888888
(byte) bitmap_line::yd#10 yd zp ZP_BYTE:7 0.8888888888888888
(byte) bitmap_line::yd#11 yd zp ZP_BYTE:7 0.8888888888888888
(byte) bitmap_line::yd#2 yd zp ZP_BYTE:7 0.8888888888888888
(byte) bitmap_line::yd#1 reg byte y 0.8888888888888888
(byte) bitmap_line::yd#10 reg byte y 0.8888888888888888
(byte) bitmap_line::yd#11 reg byte y 0.8888888888888888
(byte) bitmap_line::yd#2 reg byte y 0.8888888888888888
(void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd)
(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6 reg byte x 202.0
(label) bitmap_line_xdyd::@1
@ -460,11 +460,11 @@
(label) bitmap_line_xdyd::@5
(label) bitmap_line_xdyd::@return
(byte) bitmap_line_xdyd::e
(byte) bitmap_line_xdyd::e#0 e zp ZP_BYTE:9 4.0
(byte) bitmap_line_xdyd::e#1 e zp ZP_BYTE:9 134.66666666666666
(byte) bitmap_line_xdyd::e#2 e zp ZP_BYTE:9 202.0
(byte) bitmap_line_xdyd::e#3 e zp ZP_BYTE:9 40.8
(byte) bitmap_line_xdyd::e#6 e zp ZP_BYTE:9 101.0
(byte) bitmap_line_xdyd::e#0 e zp ZP_BYTE:18 4.0
(byte) bitmap_line_xdyd::e#1 e zp ZP_BYTE:18 134.66666666666666
(byte) bitmap_line_xdyd::e#2 e zp ZP_BYTE:18 202.0
(byte) bitmap_line_xdyd::e#3 e zp ZP_BYTE:18 40.8
(byte) bitmap_line_xdyd::e#6 e zp ZP_BYTE:18 101.0
(byte) bitmap_line_xdyd::x
(byte) bitmap_line_xdyd::x#0 x zp ZP_BYTE:14 0.8
(byte) bitmap_line_xdyd::x#1 x zp ZP_BYTE:14 0.8
@ -472,9 +472,9 @@
(byte) bitmap_line_xdyd::x#3 x zp ZP_BYTE:14 76.25
(byte) bitmap_line_xdyd::x#6 x zp ZP_BYTE:14 3.0
(byte) bitmap_line_xdyd::x1
(byte) bitmap_line_xdyd::x1#0 x1 zp ZP_BYTE:18 1.3333333333333333
(byte) bitmap_line_xdyd::x1#1 x1 zp ZP_BYTE:18 1.3333333333333333
(byte) bitmap_line_xdyd::x1#6 x1 zp ZP_BYTE:18 7.5
(byte) bitmap_line_xdyd::x1#0 x1 zp ZP_BYTE:9 1.3333333333333333
(byte) bitmap_line_xdyd::x1#1 x1 zp ZP_BYTE:9 1.3333333333333333
(byte) bitmap_line_xdyd::x1#6 x1 zp ZP_BYTE:9 7.5
(byte) bitmap_line_xdyd::xd
(byte) bitmap_line_xdyd::xd#0 xd zp ZP_BYTE:8 2.0
(byte) bitmap_line_xdyd::xd#1 xd zp ZP_BYTE:8 2.0
@ -597,9 +597,9 @@
(byte) bitmap_line_ydxi::y#3 y zp ZP_BYTE:14 76.25
(byte) bitmap_line_ydxi::y#6 y zp ZP_BYTE:14 3.0
(byte) bitmap_line_ydxi::y1
(byte) bitmap_line_ydxi::y1#0 y1 zp ZP_BYTE:15 1.3333333333333333
(byte) bitmap_line_ydxi::y1#1 y1 zp ZP_BYTE:15 1.3333333333333333
(byte) bitmap_line_ydxi::y1#6 y1 zp ZP_BYTE:15 7.5
(byte) bitmap_line_ydxi::y1#0 y1 zp ZP_BYTE:18 1.3333333333333333
(byte) bitmap_line_ydxi::y1#1 y1 zp ZP_BYTE:18 1.3333333333333333
(byte) bitmap_line_ydxi::y1#6 y1 zp ZP_BYTE:18 7.5
(byte) bitmap_line_ydxi::yd
(byte) bitmap_line_ydxi::yd#0 yd zp ZP_BYTE:7 2.0
(byte) bitmap_line_ydxi::yd#1 yd zp ZP_BYTE:7 2.0
@ -1561,19 +1561,19 @@ reg byte a [ gfx_mode::vic_control2#2 ]
zp ZP_BYTE:2 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 gfx_mode::$65 bitmap_init::$6 ]
zp ZP_WORD:3 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 render_preset_name::name#13 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 apply_preset::preset#14 form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::$6 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_mode::$33 gfx_mode::$35 gfx_mode::$37 gfx_mode::$47 gfx_mode::$49 gfx_mode::$51 form_field_ptr::return#2 form_render_values::field#0 form_field_ptr::return#0 form_field_ptr::$2 form_field_ptr::return#3 form_control::field#0 gfx_init_plane_fill::$1 bitmap_plot::plotter_x#0 bitmap_plot::$0 ]
zp ZP_WORD:5 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 print_cls::$0 bitmap_plot::plotter_y#0 ]
zp ZP_BYTE:7 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#2 bitmap_line::yd#11 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 gfx_init_screen3::$1 gfx_init_screen2::col2#0 gfx_init_screen0::$1 ]
zp ZP_BYTE:7 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 gfx_init_screen3::$1 gfx_init_screen2::col2#0 gfx_init_screen0::$1 ]
reg byte y [ gfx_mode::j#2 gfx_mode::j#1 ]
reg byte y [ gfx_mode::i#2 gfx_mode::i#1 ]
reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
zp ZP_BYTE:8 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 keyboard_event_pressed::row_bits#0 ]
zp ZP_BYTE:9 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
zp ZP_BYTE:9 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
reg byte a [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ]
reg byte a [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ]
zp ZP_DWORD:10 [ get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$31 gfx_mode::plane_a#0 gfx_mode::$45 gfx_mode::plane_b#0 gfx_init_plane_fill::plane_addr#3 ]
reg byte y [ form_mode::i#2 form_mode::i#1 ]
zp ZP_BYTE:14 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ]
reg byte x [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 ]
zp ZP_BYTE:15 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ]
zp ZP_BYTE:15 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ]
reg byte a [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ]
reg byte y [ apply_preset::i#2 apply_preset::i#1 ]
reg byte y [ form_control::return#2 ]
@ -1587,7 +1587,7 @@ reg byte x [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ]
reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ]
reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ]
reg byte x [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ]
zp ZP_BYTE:18 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line::x1#0 keyboard_event_scan::row_scan#0 ]
zp ZP_BYTE:18 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 bitmap_line::y1#0 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 keyboard_event_scan::row_scan#0 ]
reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ]
reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ]
reg byte x [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ]
@ -1675,7 +1675,11 @@ reg byte a [ gfx_init_plane_horisontal2::row#0 ]
reg byte a [ gfx_init_plane_horisontal::$5 ]
reg byte a [ gfx_init_plane_charset8::$5 ]
reg byte a [ gfx_init_plane_8bppchunky::c#0 ]
reg byte y [ bitmap_line::y1#0 ]
reg byte x [ bitmap_line::x1#0 ]
reg byte y [ bitmap_line::yd#2 ]
reg byte y [ bitmap_line::yd#1 ]
reg byte y [ bitmap_line::yd#10 ]
reg byte y [ bitmap_line::yd#11 ]
reg byte x [ bitmap_line_xdyi::$6 ]
reg byte a [ bitmap_plot::$1 ]
reg byte a [ bitmap_line_ydxi::$6 ]

View File

@ -1530,12 +1530,11 @@ mode_stdbitmap: {
ldy l
lda lines_x,y
sta bitmap_line.x0
lda lines_x+1,y
sta bitmap_line.x1
ldx lines_x+1,y
lda lines_y,y
sta bitmap_line.y0
ldx l
ldy lines_y+1,x
lda lines_y+1,y
sta bitmap_line.y1
jsr bitmap_line
inc l
lda l
@ -1549,107 +1548,110 @@ mode_stdbitmap: {
lines_y: .byte 0, 0, $c7, $c7, 0, 0, $64, $c7, $64, 0
}
// Draw a line on the bitmap
// bitmap_line(byte zeropage(9) x0, byte zeropage($c) x1, byte zeropage($b) y0, byte register(Y) y1)
// bitmap_line(byte zeropage(9) x0, byte register(X) x1, byte zeropage($b) y0, byte zeropage($c) y1)
bitmap_line: {
.label xd = 8
.label yd = 7
.label x0 = 9
.label x1 = $c
.label y0 = $b
lda x0
cmp x1
bcc b1
sec
sbc x1
sta xd
tya
cmp y0
.label y1 = $c
txa
cmp x0
beq !+
bcs b2
bcs b1
!:
tya
txa
eor #$ff
sec
adc y0
sta yd
cmp xd
adc x0
sta xd
lda y0
cmp y1
bcc b2
sec
sbc y1
tay
cpy xd
bcc b3
sty bitmap_line_ydxi.y
ldx x1
lda y1
sta bitmap_line_ydxi.y
lda y0
sta bitmap_line_ydxi.y1
sty bitmap_line_ydxi.yd
jsr bitmap_line_ydxi
breturn:
rts
b3:
lda x1
sta bitmap_line_xdyi.x
sty bitmap_line_xdyi.y
stx bitmap_line_xdyi.x
lda y1
sta bitmap_line_xdyi.y
sty bitmap_line_xdyi.yd
jsr bitmap_line_xdyi
jmp breturn
b2:
tya
lda y1
sec
sbc y0
sta yd
cmp xd
tay
cpy xd
bcc b6
lda y0
sta bitmap_line_ydxd.y
ldx x0
sty bitmap_line_ydxd.y1
lda y1
sta bitmap_line_ydxd.y1
sty bitmap_line_ydxd.yd
jsr bitmap_line_ydxd
jmp breturn
b6:
lda x1
sta bitmap_line_xdyd.x
sty bitmap_line_xdyd.y
lda x0
sta bitmap_line_xdyd.x1
stx bitmap_line_xdyd.x
lda y1
sta bitmap_line_xdyd.y
sty bitmap_line_xdyd.yd
jsr bitmap_line_xdyd
jmp breturn
b1:
lda x1
txa
sec
sbc x0
sta xd
tya
cmp y0
beq !+
bcs b9
!:
tya
eor #$ff
lda y0
cmp y1
bcc b9
sec
adc y0
sta yd
cmp xd
sbc y1
tay
cpy xd
bcc b10
sty bitmap_line_ydxd.y
ldx x1
lda y1
sta bitmap_line_ydxd.y
sty bitmap_line_ydxd.yd
jsr bitmap_line_ydxd
jmp breturn
b10:
lda x0
sta bitmap_line_xdyd.x
stx bitmap_line_xdyd.x1
sty bitmap_line_xdyd.yd
jsr bitmap_line_xdyd
jmp breturn
b9:
tya
lda y1
sec
sbc y0
sta yd
cmp xd
tay
cpy xd
bcc b13
lda y0
sta bitmap_line_ydxi.y
ldx x0
sty bitmap_line_ydxi.y1
sty bitmap_line_ydxi.yd
jsr bitmap_line_ydxi
jmp breturn
b13:
lda x0
sta bitmap_line_xdyi.x
lda x1
sta bitmap_line_xdyi.x1
stx bitmap_line_xdyi.x1
sty bitmap_line_xdyi.yd
jsr bitmap_line_xdyi
jmp breturn
}
@ -1714,10 +1716,10 @@ bitmap_plot: {
sta (_0),y
rts
}
// bitmap_line_ydxi(byte zeropage($a) y, byte register(X) x, byte zeropage($b) y1, byte zeropage(7) yd, byte zeropage(8) xd)
// bitmap_line_ydxi(byte zeropage($a) y, byte register(X) x, byte zeropage($c) y1, byte zeropage(7) yd, byte zeropage(8) xd)
bitmap_line_ydxi: {
.label y = $a
.label y1 = $b
.label y1 = $c
.label yd = 7
.label xd = 8
.label e = 9
@ -1748,14 +1750,14 @@ bitmap_line_ydxi: {
bne b1
rts
}
// bitmap_line_xdyd(byte zeropage($a) x, byte zeropage($b) y, byte zeropage($c) x1, byte zeropage(8) xd, byte zeropage(7) yd)
// bitmap_line_xdyd(byte zeropage($a) x, byte zeropage($b) y, byte zeropage(9) x1, byte zeropage(8) xd, byte zeropage(7) yd)
bitmap_line_xdyd: {
.label x = $a
.label y = $b
.label x1 = $c
.label x1 = 9
.label xd = 8
.label yd = 7
.label e = 9
.label e = $c
lda yd
lsr
sta e

File diff suppressed because it is too large Load Diff

View File

@ -386,19 +386,19 @@
(byte) bitmap_line::x0
(byte) bitmap_line::x0#0 x0 zp ZP_BYTE:9 5.173913043478264
(byte) bitmap_line::x1
(byte) bitmap_line::x1#0 x1 zp ZP_BYTE:12 5.409090909090908
(byte) bitmap_line::x1#0 reg byte x 5.409090909090908
(byte) bitmap_line::xd
(byte) bitmap_line::xd#1 xd zp ZP_BYTE:8 0.7
(byte) bitmap_line::xd#2 xd zp ZP_BYTE:8 0.7
(byte) bitmap_line::y0
(byte) bitmap_line::y0#0 y0 zp ZP_BYTE:11 5.952380952380948
(byte) bitmap_line::y1
(byte) bitmap_line::y1#0 reg byte y 6.249999999999996
(byte) bitmap_line::y1#0 y1 zp ZP_BYTE:12 6.249999999999996
(byte) bitmap_line::yd
(byte) bitmap_line::yd#1 yd zp ZP_BYTE:7 0.8888888888888888
(byte) bitmap_line::yd#10 yd zp ZP_BYTE:7 0.8888888888888888
(byte) bitmap_line::yd#11 yd zp ZP_BYTE:7 0.8888888888888888
(byte) bitmap_line::yd#2 yd zp ZP_BYTE:7 0.8888888888888888
(byte) bitmap_line::yd#1 reg byte y 0.8888888888888888
(byte) bitmap_line::yd#10 reg byte y 0.8888888888888888
(byte) bitmap_line::yd#11 reg byte y 0.8888888888888888
(byte) bitmap_line::yd#2 reg byte y 0.8888888888888888
(void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd)
(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6 reg byte x 2002.0
(label) bitmap_line_xdyd::@1
@ -407,11 +407,11 @@
(label) bitmap_line_xdyd::@5
(label) bitmap_line_xdyd::@return
(byte) bitmap_line_xdyd::e
(byte) bitmap_line_xdyd::e#0 e zp ZP_BYTE:9 4.0
(byte) bitmap_line_xdyd::e#1 e zp ZP_BYTE:9 1334.6666666666667
(byte) bitmap_line_xdyd::e#2 e zp ZP_BYTE:9 2002.0
(byte) bitmap_line_xdyd::e#3 e zp ZP_BYTE:9 400.79999999999995
(byte) bitmap_line_xdyd::e#6 e zp ZP_BYTE:9 1001.0
(byte) bitmap_line_xdyd::e#0 e zp ZP_BYTE:12 4.0
(byte) bitmap_line_xdyd::e#1 e zp ZP_BYTE:12 1334.6666666666667
(byte) bitmap_line_xdyd::e#2 e zp ZP_BYTE:12 2002.0
(byte) bitmap_line_xdyd::e#3 e zp ZP_BYTE:12 400.79999999999995
(byte) bitmap_line_xdyd::e#6 e zp ZP_BYTE:12 1001.0
(byte) bitmap_line_xdyd::x
(byte) bitmap_line_xdyd::x#0 x zp ZP_BYTE:10 0.8
(byte) bitmap_line_xdyd::x#1 x zp ZP_BYTE:10 0.8
@ -419,9 +419,9 @@
(byte) bitmap_line_xdyd::x#3 x zp ZP_BYTE:10 751.25
(byte) bitmap_line_xdyd::x#6 x zp ZP_BYTE:10 3.0
(byte) bitmap_line_xdyd::x1
(byte) bitmap_line_xdyd::x1#0 x1 zp ZP_BYTE:12 1.3333333333333333
(byte) bitmap_line_xdyd::x1#1 x1 zp ZP_BYTE:12 1.3333333333333333
(byte) bitmap_line_xdyd::x1#6 x1 zp ZP_BYTE:12 71.78571428571429
(byte) bitmap_line_xdyd::x1#0 x1 zp ZP_BYTE:9 1.3333333333333333
(byte) bitmap_line_xdyd::x1#1 x1 zp ZP_BYTE:9 1.3333333333333333
(byte) bitmap_line_xdyd::x1#6 x1 zp ZP_BYTE:9 71.78571428571429
(byte) bitmap_line_xdyd::xd
(byte) bitmap_line_xdyd::xd#0 xd zp ZP_BYTE:8 2.0
(byte) bitmap_line_xdyd::xd#1 xd zp ZP_BYTE:8 2.0
@ -544,9 +544,9 @@
(byte) bitmap_line_ydxi::y#3 y zp ZP_BYTE:10 751.25
(byte) bitmap_line_ydxi::y#6 y zp ZP_BYTE:10 3.0
(byte) bitmap_line_ydxi::y1
(byte) bitmap_line_ydxi::y1#0 y1 zp ZP_BYTE:11 1.3333333333333333
(byte) bitmap_line_ydxi::y1#1 y1 zp ZP_BYTE:11 1.3333333333333333
(byte) bitmap_line_ydxi::y1#6 y1 zp ZP_BYTE:11 71.78571428571429
(byte) bitmap_line_ydxi::y1#0 y1 zp ZP_BYTE:12 1.3333333333333333
(byte) bitmap_line_ydxi::y1#1 y1 zp ZP_BYTE:12 1.3333333333333333
(byte) bitmap_line_ydxi::y1#6 y1 zp ZP_BYTE:12 71.78571428571429
(byte) bitmap_line_ydxi::yd
(byte) bitmap_line_ydxi::yd#0 yd zp ZP_BYTE:7 2.0
(byte) bitmap_line_ydxi::yd#1 yd zp ZP_BYTE:7 2.0
@ -1363,9 +1363,9 @@ reg byte y [ keyboard_key_pressed::key#20 ]
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
reg byte x [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ]
reg byte x [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ]
zp ZP_BYTE:7 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#2 bitmap_line::yd#11 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 keyboard_key_pressed::colidx#0 mode_8bpppixelcell::$14 mode_twoplanebitmap::$16 mode_sixsfred2::$15 mode_hicolmcchar::$26 mode_hicolecmchar::$26 mode_hicolstdchar::$25 mode_stdbitmap::col2#0 mode_mcchar::$28 mode_ecmchar::$28 mode_stdchar::$27 ]
zp ZP_BYTE:7 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 keyboard_key_pressed::colidx#0 mode_8bpppixelcell::$14 mode_twoplanebitmap::$16 mode_sixsfred2::$15 mode_hicolmcchar::$26 mode_hicolecmchar::$26 mode_hicolstdchar::$25 mode_stdbitmap::col2#0 mode_mcchar::$28 mode_ecmchar::$28 mode_stdchar::$27 ]
zp ZP_BYTE:8 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#0 mode_8bpppixelcell::bits#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ]
zp ZP_BYTE:9 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
zp ZP_BYTE:9 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
reg byte x [ mode_8bpppixelcell::cp#2 mode_8bpppixelcell::cp#1 ]
reg byte a [ mode_8bpppixelcell::c#2 mode_8bpppixelcell::c#3 ]
reg byte x [ mode_sixsfred::i#2 mode_sixsfred::i#1 ]
@ -1389,8 +1389,8 @@ reg byte x [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ]
reg byte x [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ]
reg byte x [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ]
zp ZP_BYTE:10 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ]
zp ZP_BYTE:11 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ]
zp ZP_BYTE:12 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line::x1#0 ]
zp ZP_BYTE:11 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ]
zp ZP_BYTE:12 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 bitmap_line::y1#0 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ]
reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ]
reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ]
reg byte x [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ]
@ -1483,7 +1483,11 @@ reg byte a [ mode_stdbitmap::$19 ]
reg byte y [ mode_stdbitmap::col#0 ]
reg byte a [ mode_stdbitmap::$22 ]
reg byte a [ mode_stdbitmap::$23 ]
reg byte y [ bitmap_line::y1#0 ]
reg byte x [ bitmap_line::x1#0 ]
reg byte y [ bitmap_line::yd#2 ]
reg byte y [ bitmap_line::yd#1 ]
reg byte y [ bitmap_line::yd#10 ]
reg byte y [ bitmap_line::yd#11 ]
reg byte x [ bitmap_line_xdyi::$6 ]
reg byte a [ bitmap_plot::$1 ]
reg byte a [ bitmap_line_ydxi::$6 ]

View File

@ -533,7 +533,6 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ ma
Statement [18] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) $20 [ main::y#2 main::sc#2 ] ( main:2 [ main::y#2 main::sc#2 ] ) always clobbers reg byte a
Statement [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $37 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $32 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [7] (byte) main::bits#0 ← *((const byte*) main::CHAR_A#0 + (byte) main::y#2) [ main::y#2 main::sc#7 main::bits#0 ] ( main:2 [ main::y#2 main::sc#7 main::bits#0 ] ) always clobbers reg byte a
Statement [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word/dword/signed dword) $80 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ) always clobbers reg byte a
Statement [13] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) always clobbers reg byte y
Statement [18] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) $20 [ main::y#2 main::sc#2 ] ( main:2 [ main::y#2 main::sc#2 ] ) always clobbers reg byte a

View File

@ -1172,9 +1172,8 @@ keyboard_event_get: {
cmp #0
beq b1
dec keyboard_events_size
ldx keyboard_events_size
lda keyboard_events,x
tax
ldy keyboard_events_size
ldx keyboard_events,y
jmp breturn
b1:
ldx #$ff

View File

@ -16968,10 +16968,7 @@ Statement [265] (byte*~) current_piece#98 ← (byte*) current_piece#10 [ current
Statement [280] (byte*~) current_piece#103 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#103 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#103 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a
Statement [287] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:175 [ play_spawn_current::current_piece_idx#0 ]
Statement [288] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a
Statement [289] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a
Statement [290] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a
Statement [291] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] ) always clobbers reg byte a
Statement [294] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#102 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#102 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#102 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#102 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a
Statement [307] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a
Statement [312] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a
@ -16985,7 +16982,6 @@ Statement [318] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_upd
Statement [320] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ) always clobbers reg byte a
Statement [321] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) $f0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::lines_after#0 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::lines_after#0 ] ) always clobbers reg byte a
Statement [328] if((byte) level#21>(byte/signed byte/word/signed word/dword/signed dword) $1d) goto play_increase_level::@2 [ level_bcd#11 level#21 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 ] ) always clobbers reg byte a
Statement [329] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a
Statement [332] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f [ level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a
Statement [334] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#21 current_movedown_slow#69 level_bcd#8 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#8 ] ) always clobbers reg byte a
Statement [338] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::b4#0 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::b4#0 ] ) always clobbers reg byte a
@ -17136,8 +17132,6 @@ Statement [104] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0
Statement [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 [ render_bcd::screen_pos#3 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 ] ) always clobbers reg byte y
Statement [106] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 [ ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte a
Statement [112] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ) always clobbers reg byte a
Statement [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) [ render_next::screen_next_area#11 render_next::$6 render_next::next_piece_char#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::$6 render_next::next_piece_char#0 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::$6 render_next::next_piece_char#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:135 [ render_next::$6 ]
Statement [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$6) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a
Statement [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y
Statement [120] *((byte*) render_next::screen_next_area#5) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y
@ -17174,10 +17168,7 @@ Statement [241] (byte*~) current_piece#99 ← (byte*) current_piece#15 [ current
Statement [265] (byte*~) current_piece#98 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#98 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#98 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a
Statement [280] (byte*~) current_piece#103 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#103 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#103 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a
Statement [287] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a
Statement [288] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a
Statement [289] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a
Statement [290] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a
Statement [291] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] ) always clobbers reg byte a
Statement [294] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#102 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#102 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#102 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#102 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a
Statement [307] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a
Statement [312] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a
@ -17189,181 +17180,6 @@ Statement [318] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_upd
Statement [320] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ) always clobbers reg byte a
Statement [321] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) $f0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::lines_after#0 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::lines_after#0 ] ) always clobbers reg byte a
Statement [328] if((byte) level#21>(byte/signed byte/word/signed word/dword/signed dword) $1d) goto play_increase_level::@2 [ level_bcd#11 level#21 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 ] ) always clobbers reg byte a
Statement [329] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a
Statement [332] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f [ level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a
Statement [334] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#21 current_movedown_slow#69 level_bcd#8 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#8 ] ) always clobbers reg byte a
Statement [338] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::b4#0 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::b4#0 ] ) always clobbers reg byte a
Statement [339] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 ] ) always clobbers reg byte a
Statement [356] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_movement:51::play_move_down:165::play_remove_lines:273 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a
Statement [364] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::removed#7 play_remove_lines::w#6 ] ( main:12::play_movement:51::play_move_down:165::play_remove_lines:273 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#7 play_remove_lines::w#6 ] ) always clobbers reg byte a
Statement [367] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_char#10 current_piece_gfx#112 current_xpos#122 play_lock_current::ypos2#0 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#112 current_xpos#122 play_lock_current::ypos2#0 ] ) always clobbers reg byte a
Statement [369] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_char#10 current_piece_gfx#112 current_xpos#122 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#112 current_xpos#122 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a
Statement [373] if(*((byte*) current_piece_gfx#112 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#112 current_xpos#122 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#112 current_xpos#122 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a
Statement [374] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#112 current_xpos#122 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:51::play_move_down:165::play_lock_current:271 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#112 current_xpos#122 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a
Statement [385] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:12::play_movement:51::play_move_down:165::keyboard_event_pressed:251 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:407 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:413 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:419 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:425 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a
Statement [387] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:12::play_movement:51::play_move_down:165::keyboard_event_pressed:251 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:407 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:413 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:419 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:425 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a
Statement [388] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:12::play_movement:51::play_move_down:165::keyboard_event_pressed:251 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:407 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:413 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:419 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:43::keyboard_event_pressed:425 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a
Statement [401] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a
Statement [402] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a
Statement [417] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a
Statement [423] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a
Statement [429] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a
Statement [432] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a
Statement [433] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a
Statement [436] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a
Statement [438] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a
Statement [444] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a
Statement [445] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:12::keyboard_event_scan:43 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a
Statement [448] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:398 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a
Statement [449] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:43::keyboard_matrix_read:398 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
Statement [455] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a
Statement [456] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:12::render_show:41 [ render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a
Statement [462] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ) always clobbers reg byte a
Statement [463] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a
Statement [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a
Statement [465] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a
Statement [466] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a
Statement [469] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a
Statement [472] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ) always clobbers reg byte a
Statement [473] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a
Statement [478] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a
Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a
Statement [480] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a
Statement [481] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a
Statement [482] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a
Statement [483] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a
Statement [484] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a
Statement [485] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a
Statement [486] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a
Statement [489] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) $f [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a
Statement [490] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a
Statement [491] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a
Statement [492] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a
Statement [494] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a
Statement [495] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a
Statement [496] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a
Statement [497] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a
Statement [502] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a
Statement [504] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a
Statement [505] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a
Statement [506] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a
Statement [507] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a
Statement [508] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a
Statement [509] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a
Statement [510] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a
Statement [515] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ) always clobbers reg byte a
Statement [516] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a
Statement [517] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ) always clobbers reg byte a
Statement [518] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a
Statement [519] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a
Statement [520] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a
Statement [527] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:511 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:513 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y
Statement [529] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:511 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:513 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y
Statement [534] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:511 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:513 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y
Statement [537] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:511 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:513 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y
Statement [543] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:511 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:513 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y
Statement [545] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:511 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:513 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y
Statement [552] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a
Statement [553] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a
Statement [563] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a
Statement [565] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a
Statement [572] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte y
Statement [573] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a
Statement [574] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@5 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a
Statement [575] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a
Statement [576] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a
Statement [577] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a
Statement [579] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a
Statement [580] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a
Statement [581] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y
Statement [582] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a
Statement [583] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a
Statement [584] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a
Statement [585] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a
Statement [586] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a
Statement [587] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a
Statement [589] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a
Statement [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a
Statement [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a
Statement [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) $15 [ ] ( ) always clobbers reg byte a
Statement [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( ) always clobbers reg byte a
Statement [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a
Statement [32] (byte*~) current_piece_gfx#118 ← (byte*) current_piece_gfx#74 [ current_ypos#104 current_ypos#6 current_xpos#128 current_xpos#103 current_piece_gfx#118 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#104 current_ypos#6 current_xpos#128 current_xpos#103 current_piece_gfx#118 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a
Statement [37] (byte*~) current_piece#96 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#96 current_movedown_slow#1 game_over#52 ] ( main:12 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#96 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a
Statement [39] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@4 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ) always clobbers reg byte a
Statement [60] (byte*~) current_piece_gfx#119 ← (byte*) current_piece_gfx#18 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#105 render_screen_render#69 current_xpos#129 current_piece_gfx#119 ] ( main:12 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 current_ypos#105 render_screen_render#69 current_xpos#129 current_piece_gfx#119 ] ) always clobbers reg byte a
Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 [ render_screen_show#16 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a
Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) $40 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:69 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a
Statement [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a
Statement [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a
Statement [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ) always clobbers reg byte a
Statement [85] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ) always clobbers reg byte a
Statement [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a
Statement [88] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ) always clobbers reg byte a
Statement [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a
Statement [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:12::render_score:67 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ) always clobbers reg byte a
Statement [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a
Statement [98] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] ) always clobbers reg byte a
Statement [99] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] ) always clobbers reg byte a
Statement [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y
Statement [103] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) $f [ render_bcd::screen_pos#3 render_bcd::$5 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$5 ] ) always clobbers reg byte a
Statement [104] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 [ render_bcd::screen_pos#3 render_bcd::$6 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$6 ] ) always clobbers reg byte a
Statement [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 [ render_bcd::screen_pos#3 ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 ] ) always clobbers reg byte y
Statement [106] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 [ ] ( main:12::render_score:67::render_bcd:78 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:81 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:84 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:87 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:90 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:12::render_score:67::render_bcd:93 [ render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte a
Statement [112] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ) always clobbers reg byte a
Statement [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) [ render_next::screen_next_area#11 render_next::$6 render_next::next_piece_char#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::$6 render_next::next_piece_char#0 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::$6 render_next::next_piece_char#0 ] ) always clobbers reg byte a
Statement [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$6) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a
Statement [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y
Statement [120] *((byte*) render_next::screen_next_area#5) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y
Statement [124] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte/signed byte/word/signed word/dword/signed dword) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a
Statement [128] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:12::render_next:36 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:12::render_next:65 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y
Statement [130] (byte) render_moving::ypos2#0 ← (byte) current_ypos#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#0 ] ) always clobbers reg byte a
Statement [132] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 ] ) always clobbers reg byte a
Statement [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a
Statement [139] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$2 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$2 ] ) always clobbers reg byte a
Statement [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a
Statement [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a
Statement [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:34 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:62 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos2#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a
Statement [152] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a
Statement [153] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a
Statement [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a
Statement [156] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:29 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 play_spawn_current::$0 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:56 [ render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y
Statement [168] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ) always clobbers reg byte a
Statement [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a
Statement [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:12::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a
Statement [186] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$2 ] ( main:12::play_movement:51::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$2 ] ) always clobbers reg byte a
Statement [187] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) $3f [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#2 ] ( main:12::play_movement:51::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#2 ] ) always clobbers reg byte a
Statement [192] (byte*~) current_piece#101 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#101 ] ( main:12::play_movement:51::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#101 ] ) always clobbers reg byte a
Statement [198] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:12::play_movement:51::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a
Statement [199] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$4 ] ( main:12::play_movement:51::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$4 ] ) always clobbers reg byte a
Statement [200] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) $3f [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#1 ] ( main:12::play_movement:51::play_move_rotate:178 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#1 ] ) always clobbers reg byte a
Statement [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:12::play_movement:51::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:165::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a
Statement [203] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:12::play_movement:51::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_down:165::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a
Statement [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_movement:51::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:165::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a
Statement [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a
Statement [213] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:12::play_movement:51::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_down:165::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a
Statement [216] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:51::play_move_rotate:178::play_collision:193 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:173::play_collision:231 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_leftright:173::play_collision:242 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_collision:266 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:27::play_collision:295 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279::play_collision:295 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a
Statement [230] (byte*~) current_piece#100 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#100 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:12::play_movement:51::play_move_leftright:173 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#100 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a
Statement [241] (byte*~) current_piece#99 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#99 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:12::play_movement:51::play_move_leftright:173 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#99 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a
Statement [265] (byte*~) current_piece#98 ← (byte*) current_piece#10 [ current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#98 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#112 current_xpos#122 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#98 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a
Statement [280] (byte*~) current_piece#103 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#103 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#103 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a
Statement [287] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a
Statement [288] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a
Statement [289] (byte*) current_piece_gfx#74 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a
Statement [290] (byte) current_xpos#103 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a
Statement [291] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#65 ] ) always clobbers reg byte a
Statement [294] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#102 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#102 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#102 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 current_piece#102 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a
Statement [307] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_spawn_current:27 [ current_movedown_slow#1 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] main:12::play_movement:51::play_move_down:165::play_spawn_current:279 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#103 current_piece_gfx#74 current_piece_char#5 play_spawn_current::$0 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a
Statement [312] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a
Statement [313] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) $f0 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 ] ) always clobbers reg byte a
Statement [314] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ) always clobbers reg byte a
Statement [315] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a
Statement [317] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ) always clobbers reg byte a
Statement [318] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ) always clobbers reg byte a
Statement [320] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ) always clobbers reg byte a
Statement [321] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) $f0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::lines_after#0 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::lines_after#0 ] ) always clobbers reg byte a
Statement [328] if((byte) level#21>(byte/signed byte/word/signed word/dword/signed dword) $1d) goto play_increase_level::@2 [ level_bcd#11 level#21 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 ] ) always clobbers reg byte a
Statement [329] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a
Statement [332] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) $f [ level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a
Statement [334] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#21 current_movedown_slow#69 level_bcd#8 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#8 ] ) always clobbers reg byte a
Statement [338] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::b4#0 ] ( main:12::play_movement:51::play_move_down:165::play_update_score:277::play_increase_level:324 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 lines_bcd#30 score_bcd#30 level#21 current_movedown_slow#69 level_bcd#64 play_increase_level::b#2 play_increase_level::b4#0 ] ) always clobbers reg byte a
@ -17567,7 +17383,7 @@ Potential registers zp ZP_BYTE:130 [ render_bcd::$4 ] : zp ZP_BYTE:130 , reg byt
Potential registers zp ZP_BYTE:131 [ render_bcd::$5 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:132 [ render_bcd::$6 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:133 [ render_bcd::screen_pos#1 ] : zp ZP_WORD:133 ,
Potential registers zp ZP_BYTE:135 [ render_next::$6 ] : zp ZP_BYTE:135 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:135 [ render_next::$6 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:136 [ render_next::next_piece_char#0 ] : zp ZP_BYTE:136 , reg byte x ,
Potential registers zp ZP_BYTE:137 [ render_next::cell#0 ] : zp ZP_BYTE:137 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:138 [ render_moving::$2 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y ,
@ -17712,6 +17528,7 @@ Limited combination testing to 100 combinations of 191102976 possible.
Uplifting [render_moving] best 4329661 combination zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] zp ZP_BYTE:33 [ render_moving::c#2 render_moving::c#1 ] zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte a [ render_moving::current_cell#0 ] zp ZP_BYTE:138 [ render_moving::$2 ] zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ] zp ZP_WORD:139 [ render_moving::screen_line#0 ] zp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ]
Limited combination testing to 100 combinations of 3888 possible.
Uplifting [render_next] best 4314657 combination zp ZP_WORD:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] reg byte x [ render_next::c#2 render_next::c#1 ] zp ZP_WORD:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] reg byte a [ render_next::cell#0 ] zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ] zp ZP_BYTE:136 [ render_next::next_piece_char#0 ] reg byte x [ render_next::$6 ]
Limited combination testing to 100 combinations of 128 possible.
Uplifting [play_increase_level] best 4300651 combination reg byte a [ play_increase_level::b4#0 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte a [ play_increase_level::$1 ]
Uplifting [render_playfield] best 4300051 combination zp ZP_WORD:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$3 ] zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ]
Limited combination testing to 100 combinations of 128 possible.
@ -17722,250 +17539,250 @@ Uplifting [play_spawn_current] best 4270923 combination reg byte a [ play_spawn_
Uplifting [main] best 4269723 combination reg byte a [ main::render#1 ] reg byte x [ main::key_event#0 ]
Uplifting [play_movement] best 4269117 combination reg byte a [ play_movement::return#3 ] zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] zp ZP_BYTE:126 [ play_movement::key_event#0 ] reg byte a [ play_movement::$0 ] zp ZP_BYTE:149 [ play_movement::$3 ] zp ZP_BYTE:153 [ play_movement::$4 ] zp ZP_BYTE:150 [ play_movement::render#2 ]
Limited combination testing to 100 combinations of 6912 possible.
Uplifting [keyboard_event_get] best 4268213 combination reg byte x [ keyboard_event_get::return#3 ] reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
Uplifting [play_init] best 4267903 combination reg byte a [ play_init::b4#0 ] reg byte x [ play_init::b#2 play_init::b#1 ] reg byte x [ play_init::j#2 play_init::j#1 ] reg byte a [ play_init::$1 ] zp ZP_BYTE:99 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:97 [ play_init::pli#2 play_init::pli#1 ]
Uplifting [keyboard_event_get] best 4268211 combination reg byte x [ keyboard_event_get::return#3 ] reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
Uplifting [play_init] best 4267901 combination reg byte a [ play_init::b4#0 ] reg byte x [ play_init::b#2 play_init::b#1 ] reg byte x [ play_init::j#2 play_init::j#1 ] reg byte a [ play_init::$1 ] zp ZP_BYTE:99 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:97 [ play_init::pli#2 play_init::pli#1 ]
Limited combination testing to 100 combinations of 432 possible.
Uplifting [render_bcd] best 4267869 combination zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] zp ZP_WORD:133 [ render_bcd::screen_pos#1 ] zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] reg byte a [ render_bcd::$3 ] reg byte a [ render_bcd::$4 ] reg byte a [ render_bcd::$5 ] zp ZP_BYTE:132 [ render_bcd::$6 ] zp ZP_WORD:9 [ render_bcd::offset#6 ] zp ZP_BYTE:11 [ render_bcd::only_low#6 ]
Uplifting [render_bcd] best 4267867 combination zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] zp ZP_WORD:133 [ render_bcd::screen_pos#1 ] zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] reg byte a [ render_bcd::$3 ] reg byte a [ render_bcd::$4 ] reg byte a [ render_bcd::$5 ] zp ZP_BYTE:132 [ render_bcd::$6 ] zp ZP_WORD:9 [ render_bcd::offset#6 ] zp ZP_BYTE:11 [ render_bcd::only_low#6 ]
Limited combination testing to 100 combinations of 1536 possible.
Uplifting [render_init] best 4267679 combination reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$13 ] reg byte a [ render_init::$14 ] zp ZP_WORD:106 [ render_init::li_2#2 render_init::li_2#1 ] zp ZP_WORD:104 [ render_init::li_1#2 render_init::li_1#1 ]
Uplifting [sprites_init] best 4267509 combination reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte a [ sprites_init::s2#0 ] zp ZP_BYTE:102 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [play_move_down] best 4267476 combination reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] reg byte a [ play_move_down::return#0 ] reg byte a [ play_move_down::$2 ] reg byte a [ play_move_down::$12 ] zp ZP_BYTE:173 [ play_move_down::removed#0 ] zp ZP_BYTE:144 [ play_move_down::key_event#0 ] zp ZP_BYTE:73 [ play_move_down::return#3 ]
Uplifting [render_init] best 4267677 combination reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$13 ] reg byte a [ render_init::$14 ] zp ZP_WORD:106 [ render_init::li_2#2 render_init::li_2#1 ] zp ZP_WORD:104 [ render_init::li_1#2 render_init::li_1#1 ]
Uplifting [sprites_init] best 4267507 combination reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte a [ sprites_init::s2#0 ] zp ZP_BYTE:102 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [play_move_down] best 4267474 combination reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] reg byte a [ play_move_down::return#0 ] reg byte a [ play_move_down::$2 ] reg byte a [ play_move_down::$12 ] zp ZP_BYTE:173 [ play_move_down::removed#0 ] zp ZP_BYTE:144 [ play_move_down::key_event#0 ] zp ZP_BYTE:73 [ play_move_down::return#3 ]
Limited combination testing to 100 combinations of 12288 possible.
Uplifting [keyboard_event_pressed] best 4267456 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:206 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:208 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:210 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:198 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:200 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ]
Uplifting [keyboard_event_pressed] best 4267454 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:206 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:208 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:210 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:198 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:200 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ]
Limited combination testing to 100 combinations of 589824 possible.
Uplifting [sprites_irq] best 4267432 combination zp ZP_BYTE:226 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:238 [ sprites_irq::ptr#1 ] zp ZP_BYTE:224 [ sprites_irq::ypos#0 ] zp ZP_BYTE:227 [ sprites_irq::ptr#0 ]
Uplifting [sprites_irq] best 4267430 combination zp ZP_BYTE:226 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:238 [ sprites_irq::ptr#1 ] zp ZP_BYTE:224 [ sprites_irq::ypos#0 ] zp ZP_BYTE:227 [ sprites_irq::ptr#0 ]
Limited combination testing to 100 combinations of 12288 possible.
Uplifting [play_move_rotate] best 4267414 combination zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::return#0 ] reg byte a [ play_move_rotate::$2 ] reg byte a [ play_move_rotate::$6 ] zp ZP_BYTE:157 [ play_move_rotate::$4 ] zp ZP_BYTE:151 [ play_move_rotate::key_event#0 ] zp ZP_BYTE:41 [ play_move_rotate::return#2 ]
Uplifting [play_move_rotate] best 4267412 combination zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::return#0 ] reg byte a [ play_move_rotate::$2 ] reg byte a [ play_move_rotate::$6 ] zp ZP_BYTE:157 [ play_move_rotate::$4 ] zp ZP_BYTE:151 [ play_move_rotate::key_event#0 ] zp ZP_BYTE:41 [ play_move_rotate::return#2 ]
Limited combination testing to 100 combinations of 12288 possible.
Uplifting [play_update_score] best 4267392 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::$5 ] reg byte a [ play_update_score::lines_after#0 ] zp ZP_DWORD:185 [ play_update_score::add_bcd#0 ] zp ZP_BYTE:174 [ play_update_score::removed#0 ] zp ZP_BYTE:183 [ play_update_score::lines_before#0 ]
Uplifting [play_update_score] best 4267390 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::$5 ] reg byte a [ play_update_score::lines_after#0 ] zp ZP_DWORD:185 [ play_update_score::add_bcd#0 ] zp ZP_BYTE:174 [ play_update_score::removed#0 ] zp ZP_BYTE:183 [ play_update_score::lines_before#0 ]
Limited combination testing to 100 combinations of 2304 possible.
Uplifting [play_move_leftright] best 4267365 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] reg byte a [ play_move_leftright::key_event#0 ] zp ZP_BYTE:54 [ play_move_leftright::return#2 ]
Uplifting [play_move_leftright] best 4267363 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] reg byte a [ play_move_leftright::key_event#0 ] zp ZP_BYTE:54 [ play_move_leftright::return#2 ]
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [render_show] best 4267356 combination reg byte a [ render_show::d018val#3 ]
Uplifting [render_score] best 4267356 combination zp ZP_WORD:5 [ render_score::screen#3 ]
Uplifting [sid_rnd_init] best 4267356 combination
Uplifting [render_screen_swap] best 4267356 combination
Uplifting [sprites_irq_init] best 4267356 combination
Uplifting [render_show] best 4267354 combination reg byte a [ render_show::d018val#3 ]
Uplifting [render_score] best 4267354 combination zp ZP_WORD:5 [ render_score::screen#3 ]
Uplifting [sid_rnd_init] best 4267354 combination
Uplifting [render_screen_swap] best 4267354 combination
Uplifting [sprites_irq_init] best 4267354 combination
Attempting to uplift remaining variables inzp ZP_BYTE:94 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ]
Uplifting [] best 4267356 combination zp ZP_BYTE:94 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ]
Uplifting [] best 4267354 combination zp ZP_BYTE:94 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ]
Uplifting [play_collision] best 4267356 combination zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ]
Uplifting [play_collision] best 4267354 combination zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ]
Attempting to uplift remaining variables inzp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ]
Uplifting [play_lock_current] best 4267356 combination zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ]
Uplifting [play_lock_current] best 4267354 combination zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ]
Attempting to uplift remaining variables inzp ZP_BYTE:92 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
Uplifting [keyboard_event_scan] best 4117356 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
Uplifting [keyboard_event_scan] best 4117354 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ]
Uplifting [play_remove_lines] best 4117356 combination zp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ]
Uplifting [play_remove_lines] best 4117354 combination zp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:86 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ]
Uplifting [play_lock_current] best 4117356 combination zp ZP_BYTE:86 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ]
Uplifting [play_lock_current] best 4117354 combination zp ZP_BYTE:86 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:51 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ]
Uplifting [play_collision] best 4117356 combination zp ZP_BYTE:51 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ]
Uplifting [play_collision] best 4117354 combination zp ZP_BYTE:51 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:93 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ]
Uplifting [keyboard_event_scan] best 4117356 combination zp ZP_BYTE:93 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ]
Uplifting [keyboard_event_scan] best 4117354 combination zp ZP_BYTE:93 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ]
Attempting to uplift remaining variables inzp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ]
Uplifting [play_remove_lines] best 4117356 combination zp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ]
Uplifting [play_remove_lines] best 4117354 combination zp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:193 [ play_remove_lines::c#0 ]
Uplifting [play_remove_lines] best 4117356 combination zp ZP_BYTE:193 [ play_remove_lines::c#0 ]
Uplifting [play_remove_lines] best 4117354 combination zp ZP_BYTE:193 [ play_remove_lines::c#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ]
Uplifting [render_moving] best 4117356 combination zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ]
Uplifting [render_moving] best 4117354 combination zp ZP_BYTE:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ]
Uplifting [play_remove_lines] best 4117356 combination zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ]
Uplifting [play_remove_lines] best 4117354 combination zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:196 [ play_lock_current::i#1 ]
Uplifting [play_lock_current] best 4117356 combination zp ZP_BYTE:196 [ play_lock_current::i#1 ]
Uplifting [play_lock_current] best 4117354 combination zp ZP_BYTE:196 [ play_lock_current::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#31 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ]
Uplifting [] best 4117356 combination zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#31 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ]
Uplifting [] best 4117354 combination zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#31 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
Uplifting [keyboard_event_scan] best 4117356 combination zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
Uplifting [keyboard_event_scan] best 4117354 combination zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ]
Uplifting [render_playfield] best 4117356 combination zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ]
Uplifting [render_playfield] best 4117354 combination zp ZP_BYTE:39 [ render_playfield::c#2 render_playfield::c#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:33 [ render_moving::c#2 render_moving::c#1 ]
Uplifting [render_moving] best 4117356 combination zp ZP_BYTE:33 [ render_moving::c#2 render_moving::c#1 ]
Uplifting [render_moving] best 4117354 combination zp ZP_BYTE:33 [ render_moving::c#2 render_moving::c#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ]
Uplifting [play_remove_lines] best 4117356 combination zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ]
Uplifting [play_remove_lines] best 4117354 combination zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:162 [ play_collision::i#1 ]
Uplifting [play_collision] best 4117356 combination zp ZP_BYTE:162 [ play_collision::i#1 ]
Uplifting [play_collision] best 4117354 combination zp ZP_BYTE:162 [ play_collision::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
Uplifting [render_playfield] best 4117356 combination zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
Uplifting [render_playfield] best 4117354 combination zp ZP_BYTE:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
Uplifting [render_moving] best 4117356 combination zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
Uplifting [render_moving] best 4117354 combination zp ZP_BYTE:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:48 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ]
Uplifting [play_collision] best 4117356 combination zp ZP_BYTE:48 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ]
Uplifting [play_collision] best 4117354 combination zp ZP_BYTE:48 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:203 [ keyboard_event_scan::row_scan#0 ]
Uplifting [keyboard_event_scan] best 4117356 combination zp ZP_BYTE:203 [ keyboard_event_scan::row_scan#0 ]
Uplifting [keyboard_event_scan] best 4117354 combination zp ZP_BYTE:203 [ keyboard_event_scan::row_scan#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ]
Uplifting [play_lock_current] best 4117356 combination zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ]
Uplifting [play_lock_current] best 4117354 combination zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ]
Uplifting [play_collision] best 4117356 combination zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ]
Uplifting [play_collision] best 4117354 combination zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:83 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ]
Uplifting [play_lock_current] best 4117356 combination zp ZP_BYTE:83 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ]
Uplifting [play_lock_current] best 4117354 combination zp ZP_BYTE:83 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:138 [ render_moving::$2 ]
Uplifting [render_moving] best 4116956 combination reg byte a [ render_moving::$2 ]
Uplifting [render_moving] best 4116954 combination reg byte a [ render_moving::$2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:68 [ current_piece_char#30 current_piece_char#10 current_piece_char#16 current_piece_char#5 ]
Uplifting [] best 4116956 combination zp ZP_BYTE:68 [ current_piece_char#30 current_piece_char#10 current_piece_char#16 current_piece_char#5 ]
Uplifting [] best 4116954 combination zp ZP_BYTE:68 [ current_piece_char#30 current_piece_char#10 current_piece_char#16 current_piece_char#5 ]
Attempting to uplift remaining variables inzp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ]
Uplifting [render_playfield] best 4116956 combination zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ]
Uplifting [render_playfield] best 4116954 combination zp ZP_BYTE:35 [ render_playfield::l#2 render_playfield::l#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ]
Uplifting [render_next] best 4116956 combination zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ]
Uplifting [render_next] best 4116954 combination zp ZP_BYTE:17 [ render_next::l#7 render_next::l#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ]
Uplifting [render_moving] best 4116956 combination zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ]
Uplifting [render_moving] best 4116954 combination zp ZP_BYTE:30 [ render_moving::l#4 render_moving::l#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ]
Uplifting [render_moving] best 4116956 combination zp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ]
Uplifting [render_moving] best 4116954 combination zp ZP_BYTE:29 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:136 [ render_next::next_piece_char#0 ]
Uplifting [render_next] best 4116956 combination zp ZP_BYTE:136 [ render_next::next_piece_char#0 ]
Uplifting [render_next] best 4116954 combination zp ZP_BYTE:136 [ render_next::next_piece_char#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ]
Uplifting [play_collision] best 4116956 combination zp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ]
Uplifting [play_collision] best 4116954 combination zp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ]
Attempting to uplift remaining variables inzp ZP_BYTE:72 [ current_xpos#44 current_xpos#122 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#8 current_xpos#6 ]
Uplifting [] best 4116956 combination zp ZP_BYTE:72 [ current_xpos#44 current_xpos#122 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#8 current_xpos#6 ]
Uplifting [] best 4116954 combination zp ZP_BYTE:72 [ current_xpos#44 current_xpos#122 current_xpos#19 current_xpos#103 current_xpos#22 current_xpos#26 current_xpos#8 current_xpos#6 ]
Attempting to uplift remaining variables inzp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ]
Uplifting [play_movement] best 4116956 combination zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ]
Uplifting [play_movement] best 4116954 combination zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:16 [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ]
Uplifting [] best 4116919 combination reg byte y [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ]
Uplifting [] best 4116917 combination reg byte y [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ]
Attempting to uplift remaining variables inzp ZP_BYTE:15 [ render_screen_render#15 render_screen_render#68 ]
Uplifting [] best 4116883 combination reg byte a [ render_screen_render#15 render_screen_render#68 ]
Uplifting [] best 4116881 combination reg byte a [ render_screen_render#15 render_screen_render#68 ]
Attempting to uplift remaining variables inzp ZP_BYTE:23 [ current_ypos#13 current_ypos#104 current_ypos#105 ]
Uplifting [] best 4116849 combination reg byte y [ current_ypos#13 current_ypos#104 current_ypos#105 ]
Uplifting [] best 4116847 combination reg byte y [ current_ypos#13 current_ypos#104 current_ypos#105 ]
Attempting to uplift remaining variables inzp ZP_BYTE:212 [ keyboard_modifiers#5 ]
Uplifting [] best 4116846 combination reg byte a [ keyboard_modifiers#5 ]
Uplifting [] best 4116844 combination reg byte a [ keyboard_modifiers#5 ]
Attempting to uplift remaining variables inzp ZP_BYTE:218 [ render_screen_showing#1 ]
Uplifting [] best 4116846 combination zp ZP_BYTE:218 [ render_screen_showing#1 ]
Uplifting [] best 4116844 combination zp ZP_BYTE:218 [ render_screen_showing#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:231 [ irq_sprite_ypos#3 ]
Uplifting [] best 4116846 combination zp ZP_BYTE:231 [ irq_sprite_ypos#3 ]
Uplifting [] best 4116844 combination zp ZP_BYTE:231 [ irq_sprite_ypos#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:232 [ irq_sprite_ptr#3 ]
Uplifting [] best 4116846 combination zp ZP_BYTE:232 [ irq_sprite_ptr#3 ]
Uplifting [] best 4116844 combination zp ZP_BYTE:232 [ irq_sprite_ptr#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:233 [ irq_cnt#2 ]
Uplifting [] best 4116846 combination zp ZP_BYTE:233 [ irq_cnt#2 ]
Uplifting [] best 4116844 combination zp ZP_BYTE:233 [ irq_cnt#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:234 [ irq_sprite_ypos#2 ]
Uplifting [] best 4116846 combination zp ZP_BYTE:234 [ irq_sprite_ypos#2 ]
Uplifting [] best 4116844 combination zp ZP_BYTE:234 [ irq_sprite_ypos#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:235 [ irq_sprite_ptr#2 ]
Uplifting [] best 4116846 combination zp ZP_BYTE:235 [ irq_sprite_ptr#2 ]
Uplifting [] best 4116844 combination zp ZP_BYTE:235 [ irq_sprite_ptr#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:236 [ irq_sprite_ypos#1 ]
Uplifting [] best 4116846 combination zp ZP_BYTE:236 [ irq_sprite_ypos#1 ]
Uplifting [] best 4116844 combination zp ZP_BYTE:236 [ irq_sprite_ypos#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:237 [ irq_sprite_ptr#1 ]
Uplifting [] best 4116846 combination zp ZP_BYTE:237 [ irq_sprite_ptr#1 ]
Uplifting [] best 4116844 combination zp ZP_BYTE:237 [ irq_sprite_ptr#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:65 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#64 level_bcd#21 level_bcd#8 ]
Uplifting [] best 4116846 combination zp ZP_BYTE:65 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#64 level_bcd#21 level_bcd#8 ]
Uplifting [] best 4116844 combination zp ZP_BYTE:65 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#64 level_bcd#21 level_bcd#8 ]
Attempting to uplift remaining variables inzp ZP_BYTE:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
Uplifting [play_collision] best 4116830 combination reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
Uplifting [play_collision] best 4116828 combination reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:108 [ render_screen_original::y#6 render_screen_original::y#1 ]
Uplifting [render_screen_original] best 4116830 combination zp ZP_BYTE:108 [ render_screen_original::y#6 render_screen_original::y#1 ]
Uplifting [render_screen_original] best 4116828 combination zp ZP_BYTE:108 [ render_screen_original::y#6 render_screen_original::y#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:69 [ current_orientation#38 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ]
Uplifting [] best 4116830 combination zp ZP_BYTE:69 [ current_orientation#38 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ]
Uplifting [] best 4116828 combination zp ZP_BYTE:69 [ current_orientation#38 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ]
Attempting to uplift remaining variables inzp ZP_BYTE:64 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#69 current_movedown_slow#10 ]
Uplifting [] best 4116830 combination zp ZP_BYTE:64 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#69 current_movedown_slow#10 ]
Uplifting [] best 4116828 combination zp ZP_BYTE:64 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#69 current_movedown_slow#10 ]
Attempting to uplift remaining variables inzp ZP_BYTE:102 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [sprites_init] best 4116830 combination zp ZP_BYTE:102 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [sprites_init] best 4116828 combination zp ZP_BYTE:102 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:56 [ current_ypos#39 current_ypos#11 current_ypos#19 current_ypos#6 current_ypos#3 ]
Uplifting [] best 4116830 combination zp ZP_BYTE:56 [ current_ypos#39 current_ypos#11 current_ypos#19 current_ypos#6 current_ypos#3 ]
Uplifting [] best 4116828 combination zp ZP_BYTE:56 [ current_ypos#39 current_ypos#11 current_ypos#19 current_ypos#6 current_ypos#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:75 [ game_over#65 game_over#28 game_over#10 game_over#15 game_over#52 ]
Uplifting [] best 4116830 combination zp ZP_BYTE:75 [ game_over#65 game_over#28 game_over#10 game_over#15 game_over#52 ]
Uplifting [] best 4116828 combination zp ZP_BYTE:75 [ game_over#65 game_over#28 game_over#10 game_over#15 game_over#52 ]
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ current_xpos#59 current_xpos#128 current_xpos#129 ]
Uplifting [] best 4116830 combination zp ZP_BYTE:25 [ current_xpos#59 current_xpos#128 current_xpos#129 ]
Uplifting [] best 4116828 combination zp ZP_BYTE:25 [ current_xpos#59 current_xpos#128 current_xpos#129 ]
Attempting to uplift remaining variables inzp ZP_BYTE:99 [ play_init::idx#2 play_init::idx#1 ]
Uplifting [play_init] best 4116830 combination zp ZP_BYTE:99 [ play_init::idx#2 play_init::idx#1 ]
Uplifting [play_init] best 4116828 combination zp ZP_BYTE:99 [ play_init::idx#2 play_init::idx#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:46 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ]
Uplifting [play_collision] best 4116830 combination zp ZP_BYTE:46 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ]
Uplifting [play_collision] best 4116828 combination zp ZP_BYTE:46 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ]
Attempting to uplift remaining variables inzp ZP_BYTE:63 [ level#34 level#19 level#10 level#17 level#21 ]
Uplifting [] best 4116830 combination zp ZP_BYTE:63 [ level#34 level#19 level#10 level#17 level#21 ]
Uplifting [] best 4116828 combination zp ZP_BYTE:63 [ level#34 level#19 level#10 level#17 level#21 ]
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ]
Uplifting [] best 4116830 combination zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ]
Uplifting [] best 4116828 combination zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ]
Attempting to uplift remaining variables inzp ZP_BYTE:118 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ]
Uplifting [] best 4116830 combination zp ZP_BYTE:118 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ]
Uplifting [] best 4116828 combination zp ZP_BYTE:118 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:91 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ]
Uplifting [] best 4116819 combination reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ]
Uplifting [] best 4116817 combination reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ]
Attempting to uplift remaining variables inzp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ]
Uplifting [] best 4116819 combination zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ]
Uplifting [] best 4116817 combination zp ZP_BYTE:24 [ render_screen_render#33 render_screen_render#69 ]
Attempting to uplift remaining variables inzp ZP_BYTE:126 [ play_movement::key_event#0 ]
Uplifting [play_movement] best 4116819 combination zp ZP_BYTE:126 [ play_movement::key_event#0 ]
Uplifting [play_movement] best 4116817 combination zp ZP_BYTE:126 [ play_movement::key_event#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ]
Uplifting [play_move_rotate] best 4116819 combination zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ]
Uplifting [play_move_rotate] best 4116817 combination zp ZP_BYTE:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:226 [ sprites_irq::raster_sprite_gfx_modify#0 ]
Uplifting [sprites_irq] best 4116819 combination zp ZP_BYTE:226 [ sprites_irq::raster_sprite_gfx_modify#0 ]
Uplifting [sprites_irq] best 4116817 combination zp ZP_BYTE:226 [ sprites_irq::raster_sprite_gfx_modify#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ]
Uplifting [] best 4116819 combination zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ]
Uplifting [] best 4116817 combination zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ]
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ]
Uplifting [] best 4116819 combination zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ]
Uplifting [] best 4116817 combination zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ]
Attempting to uplift remaining variables inzp ZP_BYTE:132 [ render_bcd::$6 ]
Uplifting [render_bcd] best 4116813 combination reg byte a [ render_bcd::$6 ]
Uplifting [render_bcd] best 4116811 combination reg byte a [ render_bcd::$6 ]
Attempting to uplift remaining variables inzp ZP_BYTE:149 [ play_movement::$3 ]
Uplifting [play_movement] best 4116807 combination reg byte a [ play_movement::$3 ]
Uplifting [play_movement] best 4116805 combination reg byte a [ play_movement::$3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:153 [ play_movement::$4 ]
Uplifting [play_movement] best 4116801 combination reg byte a [ play_movement::$4 ]
Uplifting [play_movement] best 4116799 combination reg byte a [ play_movement::$4 ]
Attempting to uplift remaining variables inzp ZP_BYTE:155 [ play_collision::return#14 ]
Uplifting [play_collision] best 4116795 combination reg byte a [ play_collision::return#14 ]
Uplifting [play_collision] best 4116793 combination reg byte a [ play_collision::return#14 ]
Attempting to uplift remaining variables inzp ZP_BYTE:157 [ play_move_rotate::$4 ]
Uplifting [play_move_rotate] best 4116789 combination reg byte a [ play_move_rotate::$4 ]
Uplifting [play_move_rotate] best 4116787 combination reg byte a [ play_move_rotate::$4 ]
Attempting to uplift remaining variables inzp ZP_BYTE:164 [ play_collision::return#13 ]
Uplifting [play_collision] best 4116783 combination reg byte a [ play_collision::return#13 ]
Uplifting [play_collision] best 4116781 combination reg byte a [ play_collision::return#13 ]
Attempting to uplift remaining variables inzp ZP_BYTE:166 [ play_collision::return#1 ]
Uplifting [play_collision] best 4116777 combination reg byte a [ play_collision::return#1 ]
Uplifting [play_collision] best 4116775 combination reg byte a [ play_collision::return#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:170 [ play_collision::return#0 ]
Uplifting [play_collision] best 4116771 combination reg byte a [ play_collision::return#0 ]
Uplifting [play_collision] best 4116769 combination reg byte a [ play_collision::return#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:172 [ play_remove_lines::return#0 ]
Uplifting [play_remove_lines] best 4116765 combination reg byte a [ play_remove_lines::return#0 ]
Uplifting [play_remove_lines] best 4116763 combination reg byte a [ play_remove_lines::return#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:173 [ play_move_down::removed#0 ]
Uplifting [play_move_down] best 4116759 combination reg byte a [ play_move_down::removed#0 ]
Uplifting [play_move_down] best 4116757 combination reg byte a [ play_move_down::removed#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:177 [ play_collision::return#10 ]
Uplifting [play_collision] best 4116753 combination reg byte a [ play_collision::return#10 ]
Uplifting [play_collision] best 4116751 combination reg byte a [ play_collision::return#10 ]
Attempting to uplift remaining variables inzp ZP_BYTE:205 [ keyboard_event_scan::$14 ]
Uplifting [keyboard_event_scan] best 4116747 combination reg byte a [ keyboard_event_scan::$14 ]
Uplifting [keyboard_event_scan] best 4116745 combination reg byte a [ keyboard_event_scan::$14 ]
Attempting to uplift remaining variables inzp ZP_BYTE:206 [ keyboard_event_pressed::return#1 ]
Uplifting [keyboard_event_pressed] best 4116741 combination reg byte a [ keyboard_event_pressed::return#1 ]
Uplifting [keyboard_event_pressed] best 4116739 combination reg byte a [ keyboard_event_pressed::return#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:207 [ keyboard_event_scan::$18 ]
Uplifting [keyboard_event_scan] best 4116735 combination reg byte a [ keyboard_event_scan::$18 ]
Uplifting [keyboard_event_scan] best 4116733 combination reg byte a [ keyboard_event_scan::$18 ]
Attempting to uplift remaining variables inzp ZP_BYTE:208 [ keyboard_event_pressed::return#2 ]
Uplifting [keyboard_event_pressed] best 4116729 combination reg byte a [ keyboard_event_pressed::return#2 ]
Uplifting [keyboard_event_pressed] best 4116727 combination reg byte a [ keyboard_event_pressed::return#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:209 [ keyboard_event_scan::$22 ]
Uplifting [keyboard_event_scan] best 4116723 combination reg byte a [ keyboard_event_scan::$22 ]
Uplifting [keyboard_event_scan] best 4116721 combination reg byte a [ keyboard_event_scan::$22 ]
Attempting to uplift remaining variables inzp ZP_BYTE:210 [ keyboard_event_pressed::return#10 ]
Uplifting [keyboard_event_pressed] best 4116717 combination reg byte a [ keyboard_event_pressed::return#10 ]
Uplifting [keyboard_event_pressed] best 4116715 combination reg byte a [ keyboard_event_pressed::return#10 ]
Attempting to uplift remaining variables inzp ZP_BYTE:211 [ keyboard_event_scan::$26 ]
Uplifting [keyboard_event_scan] best 4116711 combination reg byte a [ keyboard_event_scan::$26 ]
Uplifting [keyboard_event_scan] best 4116709 combination reg byte a [ keyboard_event_scan::$26 ]
Attempting to uplift remaining variables inzp ZP_BYTE:151 [ play_move_rotate::key_event#0 ]
Uplifting [play_move_rotate] best 4116702 combination reg byte a [ play_move_rotate::key_event#0 ]
Uplifting [play_move_rotate] best 4116700 combination reg byte a [ play_move_rotate::key_event#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:230 [ irq_cnt#1 ]
Uplifting [] best 4116702 combination zp ZP_BYTE:230 [ irq_cnt#1 ]
Uplifting [] best 4116700 combination zp ZP_BYTE:230 [ irq_cnt#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:238 [ sprites_irq::ptr#1 ]
Uplifting [sprites_irq] best 4116692 combination reg byte a [ sprites_irq::ptr#1 ]
Uplifting [sprites_irq] best 4116690 combination reg byte a [ sprites_irq::ptr#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:224 [ sprites_irq::ypos#0 ]
Uplifting [sprites_irq] best 4116677 combination reg byte a [ sprites_irq::ypos#0 ]
Uplifting [sprites_irq] best 4116675 combination reg byte a [ sprites_irq::ypos#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:227 [ sprites_irq::ptr#0 ]
Uplifting [sprites_irq] best 4116666 combination reg byte x [ sprites_irq::ptr#0 ]
Uplifting [sprites_irq] best 4116664 combination reg byte x [ sprites_irq::ptr#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:144 [ play_move_down::key_event#0 ]
Uplifting [play_move_down] best 4116660 combination reg byte a [ play_move_down::key_event#0 ]
Uplifting [play_move_down] best 4116658 combination reg byte a [ play_move_down::key_event#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:198 [ keyboard_event_pressed::row_bits#0 ]
Uplifting [keyboard_event_pressed] best 4116660 combination zp ZP_BYTE:198 [ keyboard_event_pressed::row_bits#0 ]
Uplifting [keyboard_event_pressed] best 4116658 combination zp ZP_BYTE:198 [ keyboard_event_pressed::row_bits#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:200 [ keyboard_event_pressed::return#11 ]
Uplifting [keyboard_event_pressed] best 4116642 combination reg byte a [ keyboard_event_pressed::return#11 ]
Uplifting [keyboard_event_pressed] best 4116640 combination reg byte a [ keyboard_event_pressed::return#11 ]
Attempting to uplift remaining variables inzp ZP_BYTE:53 [ play_collision::return#15 ]
Uplifting [play_collision] best 4116612 combination reg byte a [ play_collision::return#15 ]
Uplifting [play_collision] best 4116610 combination reg byte a [ play_collision::return#15 ]
Attempting to uplift remaining variables inzp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ]
Uplifting [keyboard_event_pressed] best 4116612 combination zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ]
Uplifting [keyboard_event_pressed] best 4116610 combination zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ]
Attempting to uplift remaining variables inzp ZP_BYTE:174 [ play_update_score::removed#0 ]
Uplifting [play_update_score] best 4116606 combination reg byte x [ play_update_score::removed#0 ]
Uplifting [play_update_score] best 4116604 combination reg byte x [ play_update_score::removed#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_bcd::only_low#6 ]
Uplifting [render_bcd] best 4116585 combination reg byte y [ render_bcd::only_low#6 ]
Uplifting [render_bcd] best 4116583 combination reg byte y [ render_bcd::only_low#6 ]
Attempting to uplift remaining variables inzp ZP_BYTE:150 [ play_movement::render#2 ]
Uplifting [play_movement] best 4116585 combination zp ZP_BYTE:150 [ play_movement::render#2 ]
Uplifting [play_movement] best 4116583 combination zp ZP_BYTE:150 [ play_movement::render#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:41 [ play_move_rotate::return#2 ]
Uplifting [play_move_rotate] best 4116576 combination reg byte a [ play_move_rotate::return#2 ]
Uplifting [play_move_rotate] best 4116574 combination reg byte a [ play_move_rotate::return#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:54 [ play_move_leftright::return#2 ]
Uplifting [play_move_leftright] best 4116567 combination reg byte a [ play_move_leftright::return#2 ]
Uplifting [play_move_leftright] best 4116565 combination reg byte a [ play_move_leftright::return#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:73 [ play_move_down::return#3 ]
Uplifting [play_move_down] best 4116560 combination reg byte x [ play_move_down::return#3 ]
Uplifting [play_move_down] best 4116558 combination reg byte x [ play_move_down::return#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:183 [ play_update_score::lines_before#0 ]
Uplifting [play_update_score] best 4116560 combination zp ZP_BYTE:183 [ play_update_score::lines_before#0 ]
Uplifting [play_update_score] best 4116558 combination zp ZP_BYTE:183 [ play_update_score::lines_before#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:119 [ render_screen_showing#0 ]
Uplifting [] best 4116560 combination zp ZP_BYTE:119 [ render_screen_showing#0 ]
Uplifting [] best 4116558 combination zp ZP_BYTE:119 [ render_screen_showing#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:120 [ irq_raster_next#0 ]
Uplifting [] best 4116560 combination zp ZP_BYTE:120 [ irq_raster_next#0 ]
Uplifting [] best 4116558 combination zp ZP_BYTE:120 [ irq_raster_next#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:121 [ irq_sprite_ypos#0 ]
Uplifting [] best 4116560 combination zp ZP_BYTE:121 [ irq_sprite_ypos#0 ]
Uplifting [] best 4116558 combination zp ZP_BYTE:121 [ irq_sprite_ypos#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:122 [ irq_sprite_ptr#0 ]
Uplifting [] best 4116560 combination zp ZP_BYTE:122 [ irq_sprite_ptr#0 ]
Uplifting [] best 4116558 combination zp ZP_BYTE:122 [ irq_sprite_ptr#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:123 [ irq_cnt#0 ]
Uplifting [] best 4116560 combination zp ZP_BYTE:123 [ irq_cnt#0 ]
Uplifting [] best 4116558 combination zp ZP_BYTE:123 [ irq_cnt#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:176 [ play_spawn_current::$0 ]
Uplifting [play_spawn_current] best 4116560 combination zp ZP_BYTE:176 [ play_spawn_current::$0 ]
Uplifting [play_spawn_current] best 4116558 combination zp ZP_BYTE:176 [ play_spawn_current::$0 ]
Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ render_score::screen#3 ] ] with [ zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] ] - score: 6
Coalescing zero page register with common assignment [ zp ZP_BYTE:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] ] with [ zp ZP_BYTE:150 [ play_movement::render#2 ] ] - score: 2
Coalescing zero page register with common assignment [ zp ZP_BYTE:118 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] ] with [ zp ZP_BYTE:120 [ irq_raster_next#0 ] ] - score: 2
@ -20524,9 +20341,8 @@ keyboard_event_get: {
//SEG906 [391] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1
dec keyboard_events_size
//SEG907 [392] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1
ldx keyboard_events_size
lda keyboard_events,x
tax
ldy keyboard_events_size
ldx keyboard_events,y
//SEG908 [393] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return]
breturn_from_b3:
//SEG909 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy
@ -23655,7 +23471,7 @@ reg byte a [ sprites_irq::ptr#2 ]
FINAL ASSEMBLER
Score: 3365357
Score: 3365355
//SEG0 File Comments
// Tetris Game for the Commodore 64
@ -25739,9 +25555,8 @@ keyboard_event_get: {
//SEG906 [391] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1
dec keyboard_events_size
//SEG907 [392] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1
ldx keyboard_events_size
lda keyboard_events,x
tax
ldy keyboard_events_size
ldx keyboard_events,y
//SEG908 [393] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return]
//SEG909 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy
//SEG910 [393] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy

View File

@ -105,12 +105,11 @@ anim: {
b13:
inc BORDERCOL
ldy i
lda xs,y
sta rotate_matrix.x
ldx i
ldy ys,x
lda zs,x
tax
ldx xs,y
lda ys,y
sta rotate_matrix.y
lda zs,y
sta rotate_matrix.z
jsr rotate_matrix
//if(*xr<xmin) xmin = *xr;
//if(*xr>xmax) xmax = *xr;
@ -270,9 +269,8 @@ debug_print: {
lda #>at_line
adc #0
sta print_sbyte_at.at+1
ldx i
lda xrs,x
tax
ldy i
ldx xrs,y
jsr print_sbyte_at
lda c
clc
@ -281,9 +279,8 @@ debug_print: {
lda #>at_line+$28*1
adc #0
sta print_sbyte_at.at+1
ldx i
lda yrs,x
tax
ldy i
ldx yrs,y
jsr print_sbyte_at
lda c
clc
@ -292,9 +289,8 @@ debug_print: {
lda #>at_line+$28*2
adc #0
sta print_sbyte_at.at+1
ldx i
lda zrs,x
tax
ldy i
ldx zrs,y
jsr print_sbyte_at
lda c
clc
@ -303,9 +299,8 @@ debug_print: {
lda #>at_line+$28*3
adc #0
sta print_sbyte_at.at+1
ldx i
lda pps,x
tax
ldy i
ldx pps,y
jsr print_sbyte_at
lda c
clc
@ -314,9 +309,8 @@ debug_print: {
lda #>at_line+$28*4
adc #0
sta print_sbyte_at.at+1
ldx i
lda xps,x
tax
ldy i
ldx xps,y
jsr print_sbyte_at
lda c
clc
@ -325,9 +319,8 @@ debug_print: {
lda #>at_line+$28*5
adc #0
sta print_sbyte_at.at+1
ldx i
lda yps,x
tax
ldy i
ldx yps,y
jsr print_sbyte_at
lda #4
clc
@ -407,14 +400,15 @@ print_byte_at: {
// The rotation matrix is prepared by calling prepare_matrix()
// The passed points must be in the interval [-$3f;$3f].
// Implemented in assembler to utilize seriously fast multiplication
// rotate_matrix(signed byte zeropage(5) x, signed byte register(Y) y, signed byte register(X) z)
// rotate_matrix(signed byte register(X) x, signed byte zeropage(5) y, signed byte zeropage(8) z)
rotate_matrix: {
.label x = 5
lda x
sta xr
tya
sta yr
.label y = 5
.label z = 8
txa
sta xr
lda y
sta yr
lda z
sta zr
tax
C1:
@ -849,9 +843,8 @@ debug_print_init: {
lda #>at_line
adc #0
sta print_sbyte_at.at+1
ldx i
lda xs,x
tax
ldy i
ldx xs,y
jsr print_sbyte_at
lda c
clc
@ -860,9 +853,8 @@ debug_print_init: {
lda #>at_line+$28*1
adc #0
sta print_sbyte_at.at+1
ldx i
lda ys,x
tax
ldy i
ldx ys,y
jsr print_sbyte_at
lda c
clc
@ -871,9 +863,8 @@ debug_print_init: {
lda #>at_line+$28*2
adc #0
sta print_sbyte_at.at+1
ldx i
lda zs,x
tax
ldy i
ldx zs,y
jsr print_sbyte_at
ldx #0
b2:

File diff suppressed because one or more lines are too long

View File

@ -501,11 +501,11 @@
(void()) rotate_matrix((signed byte) rotate_matrix::x , (signed byte) rotate_matrix::y , (signed byte) rotate_matrix::z)
(label) rotate_matrix::@return
(signed byte) rotate_matrix::x
(signed byte) rotate_matrix::x#0 x zp ZP_BYTE:5 34.33333333333333
(signed byte) rotate_matrix::x#0 reg byte x 34.33333333333333
(signed byte) rotate_matrix::y
(signed byte) rotate_matrix::y#0 reg byte y 34.33333333333333
(signed byte) rotate_matrix::y#0 y zp ZP_BYTE:5 34.33333333333333
(signed byte) rotate_matrix::z
(signed byte) rotate_matrix::z#0 reg byte x 34.33333333333333
(signed byte) rotate_matrix::z#0 z zp ZP_BYTE:8 34.33333333333333
(signed byte[9]) rotation_matrix
(const signed byte[9]) rotation_matrix#0 rotation_matrix = { fill( 9, 0) }
(void()) sprites_init()
@ -558,16 +558,15 @@
zp ZP_BYTE:2 [ sx#10 sx#3 debug_print_init::c#2 debug_print_init::c#1 ]
zp ZP_BYTE:3 [ sy#10 sy#3 calculate_matrix::sy#0 debug_print_init::i#2 debug_print_init::i#1 ]
zp ZP_BYTE:4 [ anim::i#2 anim::i#1 debug_print::c#2 debug_print::c#1 calculate_matrix::t1#0 debug_print_init::col#0 ]
zp ZP_BYTE:5 [ debug_print::i#2 debug_print::i#1 rotate_matrix::x#0 calculate_matrix::t3#0 ]
zp ZP_BYTE:5 [ debug_print::i#2 debug_print::i#1 rotate_matrix::y#0 calculate_matrix::t3#0 ]
zp ZP_WORD:6 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 debug_print_init::$59 debug_print_init::$60 debug_print_init::$63 debug_print_init::$64 debug_print_init::$67 debug_print_init::$68 debug_print_init::$71 debug_print_init::$72 debug_print_init::$75 debug_print_init::$76 debug_print_init::$79 debug_print_init::$80 debug_print_init::$83 debug_print_init::$84 debug_print_init::$87 debug_print_init::$88 debug_print_init::$91 debug_print_init::$92 ]
reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
zp ZP_BYTE:8 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 calculate_matrix::t4#0 ]
zp ZP_BYTE:8 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 rotate_matrix::z#0 calculate_matrix::t4#0 ]
reg byte x [ debug_print_init::j#2 debug_print_init::j#1 ]
zp ZP_WORD:9 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
reg byte x [ sprites_init::i#2 sprites_init::i#1 ]
reg byte x [ calculate_matrix::sx#0 ]
reg byte y [ rotate_matrix::y#0 ]
reg byte x [ rotate_matrix::z#0 ]
reg byte x [ rotate_matrix::x#0 ]
reg byte x [ anim::i2#0 ]
reg byte a [ anim::$8 ]
reg byte a [ anim::$10 ]

View File

@ -88,8 +88,8 @@ main: {
!:
ldy i
lda vals,y
ldx j
ldy vals,x
ldy j
ldx vals,y
jsr fmul8
sta print_sbyte_at.b
lda at_3
@ -170,10 +170,10 @@ print_byte_at: {
jsr print_char_at
rts
}
// fmul8(signed byte register(A) a, signed byte register(Y) b)
// fmul8(signed byte register(A) a, signed byte register(X) b)
fmul8: {
sta ap
tya
txa
sta bp
lda ap
sta A1+1

View File

@ -1974,14 +1974,46 @@ Statement [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed wor
Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:3::init_screen:6 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a
Statement [80] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a
Statement [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) [ main::k#2 main::at#4 print_sbyte_at::b#1 ] ( main:3 [ main::k#2 main::at#4 print_sbyte_at::b#1 ] ) always clobbers reg byte a
Statement [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:3 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a
Statement [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::k#2 main::at#1 ] ( main:3 [ main::k#2 main::at#1 ] ) always clobbers reg byte a
Statement [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ main::i#2 main::at#2 ] ( main:3 [ main::i#2 main::at#2 ] ) always clobbers reg byte a
Statement [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ( main:3 [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ) always clobbers reg byte a
Statement [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ( main:3 [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ) always clobbers reg byte y
Statement [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:3 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ) always clobbers reg byte a
Statement [19] (byte*~) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:3 [ main::i#2 main::at#2 main::at#12 ] ) always clobbers reg byte a
Statement [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a
Statement [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ) always clobbers reg byte y
Statement [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ fmul8::a#0 ]
Statement [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ) always clobbers reg byte a
Statement [31] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ( main:3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ) always clobbers reg byte a
Statement [33] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 [ main::at#2 main::i#1 ] ( main:3 [ main::at#2 main::i#1 ] ) always clobbers reg byte a
Statement [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ) always clobbers reg byte a
Statement [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ print_sbyte_at::b#6 print_byte_at::at#0 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::b#6 print_byte_at::at#0 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::b#6 print_byte_at::at#0 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#6 print_byte_at::at#0 ] ) always clobbers reg byte a
Statement [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ) always clobbers reg byte a
Statement [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] ) always clobbers reg byte a
Statement [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:3::print_sbyte_at:10::print_char_at:38 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:18::print_char_at:38 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:29::print_char_at:38 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:10::print_char_at:44 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:18::print_char_at:44 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:29::print_char_at:44 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:10::print_byte_at:41::print_char_at:52 [ main::k#2 main::at#4 print_sbyte_at::b#6 print_byte_at::at#0 ] main:3::print_sbyte_at:18::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 print_sbyte_at::b#6 print_byte_at::at#0 ] main:3::print_sbyte_at:29::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#6 print_byte_at::at#0 ] main:3::print_sbyte_at:10::print_byte_at:41::print_char_at:56 [ main::k#2 main::at#4 ] main:3::print_sbyte_at:18::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 ] main:3::print_sbyte_at:29::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a reg byte y
Statement [49] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_sbyte_at::b#6 print_byte_at::at#0 print_byte_at::$0 ] ( main:3::print_sbyte_at:10::print_byte_at:41 [ main::k#2 main::at#4 print_sbyte_at::b#6 print_byte_at::at#0 print_byte_at::$0 ] main:3::print_sbyte_at:18::print_byte_at:41 [ main::i#2 main::at#2 print_sbyte_at::b#6 print_byte_at::at#0 print_byte_at::$0 ] main:3::print_sbyte_at:29::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#6 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a
Statement [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_sbyte_at::b#6 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:3::print_sbyte_at:10::print_byte_at:41 [ main::k#2 main::at#4 print_sbyte_at::b#6 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:3::print_sbyte_at:18::print_byte_at:41 [ main::i#2 main::at#2 print_sbyte_at::b#6 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:3::print_sbyte_at:29::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#6 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a
Statement [53] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#6 & (byte/signed byte/word/signed word/dword/signed dword) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:3::print_sbyte_at:10::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] main:3::print_sbyte_at:18::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] main:3::print_sbyte_at:29::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a
Statement [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:3::print_sbyte_at:10::print_byte_at:41 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] main:3::print_sbyte_at:18::print_byte_at:41 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] main:3::print_sbyte_at:29::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a
Statement asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } always clobbers reg byte a reg byte x
Statement [66] *(((byte*))(word/dword/signed dword) $d800 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 [ init_screen::l#2 ] ( main:3::init_screen:6 [ init_screen::l#2 ] ) always clobbers reg byte a
Statement [70] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y
Statement [71] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y
Statement [72] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y
Statement [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y
Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:3::init_screen:6 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a
Statement [80] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a
Statement [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:3 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a
Statement [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::k#2 main::at#1 ] ( main:3 [ main::k#2 main::at#1 ] ) always clobbers reg byte a
Statement [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ main::i#2 main::at#2 ] ( main:3 [ main::i#2 main::at#2 ] ) always clobbers reg byte a
Statement [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ( main:3 [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ) always clobbers reg byte y
Statement [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:3 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ) always clobbers reg byte a
Statement [19] (byte*~) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:3 [ main::i#2 main::at#2 main::at#12 ] ) always clobbers reg byte a
Statement [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a
Statement [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ) always clobbers reg byte y
Statement [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ) always clobbers reg byte y
Statement [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ) always clobbers reg byte a
Statement [31] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ( main:3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ) always clobbers reg byte a
Statement [33] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 [ main::at#2 main::i#1 ] ( main:3 [ main::at#2 main::i#1 ] ) always clobbers reg byte a
@ -2017,7 +2049,7 @@ Potential registers zp ZP_BYTE:17 [ init_screen::l#2 init_screen::l#1 ] : zp ZP_
Potential registers zp ZP_WORD:18 [ init_screen::COLS#3 init_screen::COLS#1 ] : zp ZP_WORD:18 ,
Potential registers zp ZP_BYTE:20 [ init_screen::m#2 init_screen::m#1 ] : zp ZP_BYTE:20 , reg byte x ,
Potential registers zp ZP_WORD:21 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:21 ,
Potential registers zp ZP_BYTE:23 [ fmul8::a#0 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:23 [ fmul8::a#0 ] : zp ZP_BYTE:23 , reg byte a , reg byte x ,
Potential registers zp ZP_BYTE:24 [ fmul8::b#0 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:25 [ fmul8::return#0 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:26 [ main::r#0 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y ,
@ -2038,19 +2070,17 @@ Uplift Scope []
Uplifting [main] best 14032 combination zp ZP_WORD:8 [ main::at#6 main::at#3 main::at#12 ] reg byte a [ main::r#0 ] zp ZP_BYTE:10 [ main::j#2 main::j#1 ] zp ZP_WORD:5 [ main::at_line#2 main::at#2 ] zp ZP_BYTE:7 [ main::i#2 main::i#1 ] reg byte x [ main::k#2 main::k#1 ] zp ZP_WORD:3 [ main::at#4 main::at#1 ]
Uplifting [print_sbyte_at] best 14032 combination zp ZP_WORD:11 [ print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 ] zp ZP_BYTE:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ]
Uplifting [fmul8] best 12828 combination reg byte a [ fmul8::return#0 ] reg byte a [ fmul8::a#0 ] reg byte y [ fmul8::b#0 ] zp ZP_BYTE:31 [ fmul8::return#1 ]
Limited combination testing to 100 combinations of 256 possible.
Uplifting [init_screen] best 12618 combination reg byte x [ init_screen::l#2 init_screen::l#1 ] zp ZP_WORD:18 [ init_screen::COLS#3 init_screen::COLS#1 ] reg byte x [ init_screen::m#2 init_screen::m#1 ]
Uplifting [print_char_at] best 12618 combination zp ZP_WORD:15 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] zp ZP_BYTE:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
Uplifting [print_cls] best 12618 combination zp ZP_WORD:21 [ print_cls::sc#2 print_cls::sc#1 ]
Uplifting [print_byte_at] best 12610 combination reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] zp ZP_WORD:27 [ print_byte_at::at#0 ]
Uplifting [] best 12610 combination
Uplifting [fmul8] best 12525 combination reg byte a [ fmul8::return#0 ] reg byte a [ fmul8::a#0 ] reg byte x [ fmul8::b#0 ] reg byte a [ fmul8::return#1 ]
Limited combination testing to 100 combinations of 192 possible.
Uplifting [init_screen] best 12315 combination reg byte x [ init_screen::l#2 init_screen::l#1 ] zp ZP_WORD:18 [ init_screen::COLS#3 init_screen::COLS#1 ] reg byte x [ init_screen::m#2 init_screen::m#1 ]
Uplifting [print_char_at] best 12315 combination zp ZP_WORD:15 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] zp ZP_BYTE:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
Uplifting [print_cls] best 12315 combination zp ZP_WORD:21 [ print_cls::sc#2 print_cls::sc#1 ]
Uplifting [print_byte_at] best 12307 combination reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] zp ZP_WORD:27 [ print_byte_at::at#0 ]
Uplifting [] best 12307 combination
Attempting to uplift remaining variables inzp ZP_BYTE:10 [ main::j#2 main::j#1 ]
Uplifting [main] best 12610 combination zp ZP_BYTE:10 [ main::j#2 main::j#1 ]
Uplifting [main] best 12307 combination zp ZP_BYTE:10 [ main::j#2 main::j#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ]
Uplifting [print_sbyte_at] best 12610 combination zp ZP_BYTE:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:31 [ fmul8::return#1 ]
Uplifting [fmul8] best 12307 combination reg byte a [ fmul8::return#1 ]
Uplifting [print_sbyte_at] best 12307 combination zp ZP_BYTE:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ main::i#2 main::i#1 ]
Uplifting [main] best 12307 combination zp ZP_BYTE:7 [ main::i#2 main::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
@ -2239,9 +2269,9 @@ main: {
//SEG54 [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1
ldy i
lda vals,y
//SEG55 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsyy=pbsc1_derefidx_vbuz1
ldx j
ldy vals,x
//SEG55 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsxx=pbsc1_derefidx_vbuz1
ldy j
ldx vals,y
//SEG56 [24] call fmul8
jsr fmul8
//SEG57 [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1
@ -2414,12 +2444,12 @@ print_byte_at: {
rts
}
//SEG119 fmul8
// fmul8(signed byte register(A) a, signed byte register(Y) b)
// fmul8(signed byte register(A) a, signed byte register(X) b)
fmul8: {
//SEG120 [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsaa
sta ap
//SEG121 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsyy
tya
//SEG121 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsxx
txa
sta bp
//SEG122 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp }
lda ap
@ -2686,7 +2716,7 @@ FINAL SYMBOL TABLE
(signed byte) fmul8::a
(signed byte) fmul8::a#0 reg byte a 51.5
(signed byte) fmul8::b
(signed byte) fmul8::b#0 reg byte y 51.5
(signed byte) fmul8::b#0 reg byte x 51.5
(signed byte) fmul8::return
(signed byte) fmul8::return#0 reg byte a 202.0
(signed byte) fmul8::return#1 reg byte a 34.33333333333333
@ -2802,7 +2832,7 @@ zp ZP_BYTE:11 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
reg byte x [ init_screen::l#2 init_screen::l#1 ]
reg byte x [ init_screen::m#2 init_screen::m#1 ]
reg byte a [ fmul8::a#0 ]
reg byte y [ fmul8::b#0 ]
reg byte x [ fmul8::b#0 ]
reg byte a [ fmul8::return#0 ]
reg byte a [ main::r#0 ]
reg byte a [ print_byte_at::$0 ]
@ -2958,9 +2988,9 @@ main: {
//SEG54 [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1
ldy i
lda vals,y
//SEG55 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsyy=pbsc1_derefidx_vbuz1
ldx j
ldy vals,x
//SEG55 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsxx=pbsc1_derefidx_vbuz1
ldy j
ldx vals,y
//SEG56 [24] call fmul8
jsr fmul8
//SEG57 [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1
@ -3105,12 +3135,12 @@ print_byte_at: {
rts
}
//SEG119 fmul8
// fmul8(signed byte register(A) a, signed byte register(Y) b)
// fmul8(signed byte register(A) a, signed byte register(X) b)
fmul8: {
//SEG120 [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsaa
sta ap
//SEG121 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsyy
tya
//SEG121 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsxx
txa
sta bp
//SEG122 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp }
lda ap

View File

@ -12,7 +12,7 @@
(signed byte) fmul8::a
(signed byte) fmul8::a#0 reg byte a 51.5
(signed byte) fmul8::b
(signed byte) fmul8::b#0 reg byte y 51.5
(signed byte) fmul8::b#0 reg byte x 51.5
(signed byte) fmul8::return
(signed byte) fmul8::return#0 reg byte a 202.0
(signed byte) fmul8::return#1 reg byte a 34.33333333333333
@ -128,7 +128,7 @@ zp ZP_BYTE:11 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
reg byte x [ init_screen::l#2 init_screen::l#1 ]
reg byte x [ init_screen::m#2 init_screen::m#1 ]
reg byte a [ fmul8::a#0 ]
reg byte y [ fmul8::b#0 ]
reg byte x [ fmul8::b#0 ]
reg byte a [ fmul8::return#0 ]
reg byte a [ main::r#0 ]
reg byte a [ print_byte_at::$0 ]

View File

@ -3123,8 +3123,15 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ pl
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ]
Statement [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a
Statement [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a
Statement [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ) always clobbers reg byte a
Statement [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ]
Statement [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ) always clobbers reg byte a
Statement [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a
Statement [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a
@ -3162,7 +3169,7 @@ Statement [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_R
Statement [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ) always clobbers reg byte a
Statement [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a
Statement [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a
Statement [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ) always clobbers reg byte a
Statement [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ) always clobbers reg byte a reg byte y
Statement [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ) always clobbers reg byte a
Statement [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a
Statement [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a
@ -3185,14 +3192,14 @@ Statement [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ←
Statement [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) always clobbers reg byte a
Statement [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a
Statement [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] : zp ZP_BYTE:2 , reg byte x ,
Potential registers zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] : zp ZP_BYTE:5 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] : zp ZP_BYTE:6 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] : zp ZP_BYTE:7 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] : zp ZP_BYTE:8 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] : zp ZP_BYTE:9 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] : zp ZP_BYTE:5 , reg byte x ,
Potential registers zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] : zp ZP_BYTE:6 , reg byte x ,
Potential registers zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] : zp ZP_BYTE:7 , reg byte x ,
Potential registers zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] : zp ZP_BYTE:8 , reg byte x ,
Potential registers zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] : zp ZP_BYTE:9 , reg byte x ,
Potential registers zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] : zp ZP_BYTE:10 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] : zp ZP_BYTE:11 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:12 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y ,
@ -3202,7 +3209,7 @@ Potential registers zp ZP_BYTE:16 [ init::ss#2 init::ss#1 ] : zp ZP_BYTE:16 , re
Potential registers zp ZP_BYTE:17 [ plexInit::i#2 plexInit::i#1 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:18 [ loop::$4 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] : zp ZP_BYTE:20 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] : zp ZP_BYTE:20 , reg byte x ,
Potential registers zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:22 [ plexShowSprite::plexFreeAdd1_$0#0 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:23 [ plexShowSprite::plexFreeAdd1_$1#0 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y ,
@ -3228,41 +3235,39 @@ Uplift Scope [main]
Uplifting [plexSort] best 82589 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] zp ZP_BYTE:31 [ plexSort::s#2 ] zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ]
Limited combination testing to 10 combinations of 972 possible.
Uplifting [loop] best 81389 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] reg byte x [ loop::sy#2 loop::sy#1 ] zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] zp ZP_BYTE:18 [ loop::$4 ] zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
Limited combination testing to 10 combinations of 1296 possible.
Limited combination testing to 10 combinations of 576 possible.
Uplifting [init] best 81139 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp ZP_BYTE:32 [ init::$6 ] zp ZP_WORD:14 [ init::xp#2 init::xp#1 ]
Limited combination testing to 10 combinations of 36 possible.
Uplifting [] best 81139 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ]
Limited combination testing to 10 combinations of 81 possible.
Uplifting [plexInit] best 81019 combination reg byte x [ plexInit::i#2 plexInit::i#1 ]
Uplifting [plexShowSprite] best 81009 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$1#0 ] zp ZP_BYTE:25 [ plexShowSprite::$3 ] zp ZP_BYTE:26 [ plexShowSprite::$4 ] zp ZP_BYTE:27 [ plexShowSprite::$6 ] zp ZP_BYTE:28 [ plexShowSprite::$7 ] zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ]
Limited combination testing to 10 combinations of 147456 possible.
Uplifting [main] best 81009 combination
Uplifting [] best 80831 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] reg byte x [ plex_sprite_idx#44 plex_sprite_idx#15 ]
Limited combination testing to 10 combinations of 16 possible.
Uplifting [plexInit] best 80711 combination reg byte x [ plexInit::i#2 plexInit::i#1 ]
Uplifting [plexShowSprite] best 80701 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$1#0 ] zp ZP_BYTE:25 [ plexShowSprite::$3 ] zp ZP_BYTE:26 [ plexShowSprite::$4 ] zp ZP_BYTE:27 [ plexShowSprite::$6 ] zp ZP_BYTE:28 [ plexShowSprite::$7 ] zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ]
Limited combination testing to 10 combinations of 98304 possible.
Uplifting [main] best 80701 combination
Attempting to uplift remaining variables inzp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ]
Uplifting [loop] best 81009 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ]
Uplifting [loop] best 80701 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
Uplifting [loop] best 80479 combination reg byte y [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
Uplifting [loop] best 80171 combination reg byte y [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:18 [ loop::$4 ]
Uplifting [loop] best 79879 combination reg byte a [ loop::$4 ]
Uplifting [loop] best 79571 combination reg byte a [ loop::$4 ]
Attempting to uplift remaining variables inzp ZP_BYTE:31 [ plexSort::s#2 ]
Uplifting [plexSort] best 79279 combination reg byte x [ plexSort::s#2 ]
Uplifting [plexSort] best 78971 combination reg byte x [ plexSort::s#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ]
Uplifting [plexSort] best 79279 combination zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ]
Uplifting [plexSort] best 78971 combination zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ]
Uplifting [loop] best 79279 combination zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ]
Uplifting [loop] best 78971 combination zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:30 [ plexSort::nxt_y#0 ]
Uplifting [plexSort] best 79279 combination zp ZP_BYTE:30 [ plexSort::nxt_y#0 ]
Uplifting [plexSort] best 78971 combination zp ZP_BYTE:30 [ plexSort::nxt_y#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:29 [ plexSort::nxt_idx#0 ]
Uplifting [plexSort] best 79279 combination zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ]
Uplifting [plexSort] best 78971 combination zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ]
Uplifting [] best 79279 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ]
Uplifting [] best 78971 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ]
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ]
Uplifting [] best 79279 combination zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ]
Uplifting [] best 78971 combination zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ]
Attempting to uplift remaining variables inzp ZP_BYTE:32 [ init::$6 ]
Uplifting [init] best 79239 combination reg byte a [ init::$6 ]
Uplifting [init] best 78931 combination reg byte a [ init::$6 ]
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ]
Uplifting [] best 79239 combination zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ]
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ]
Uplifting [] best 78931 combination reg byte x [ plex_sprite_idx#44 plex_sprite_idx#15 ]
Uplifting [] best 78931 combination zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ]
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
Uplifting [loop] best 78931 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ plexShowSprite::$3 ]

View File

@ -222,13 +222,13 @@ wrap_y: {
sta y+1
jmp b4
b2:
lda y
sec
sbc #<$c8
lda y
sbc #$c8
sta y
lda y+1
sbc #>$c8
sta y+1
bcs !+
dec y+1
!:
jmp b1
}
// Generate signed word sinus table - with values in the range min-max.

View File

@ -4177,13 +4177,13 @@ wrap_y: {
//SEG125 wrap_y::@2
b2:
//SEG126 [69] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (byte/word/signed word/dword/signed dword) $c8 -- vwsz1=vwsz1_minus_vbuc1
lda y
sec
sbc #<$c8
lda y
sbc #$c8
sta y
lda y+1
sbc #>$c8
sta y+1
bcs !+
dec y+1
!:
jmp b1_from_b2
}
//SEG127 sin16s_gen2
@ -5811,34 +5811,34 @@ Uplift Scope [div32u16u] 4: zp ZP_DWORD:89 [ div32u16u::return#2 ] 4: zp ZP_WORD
Uplift Scope [] 0.8: zp ZP_WORD:186 [ rem16u#1 ]
Uplift Scope [main]
Uplifting [mul16u] best 36829 combination zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 ] zp ZP_DWORD:113 [ mul16u::return#2 ] zp ZP_DWORD:158 [ mul16u::return#3 ]
Uplifting [wrap_y] best 36646 combination zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] reg byte a [ wrap_y::return#2 ]
Uplifting [bitmap_clear] best 35746 combination zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:188 [ bitmap_clear::$3 ]
Uplifting [divr16u] best 35536 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:172 [ divr16u::return#2 ] zp ZP_WORD:176 [ divr16u::return#3 ]
Uplifting [bitmap_init] best 35036 combination zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:192 [ bitmap_init::$5 ] zp ZP_BYTE:193 [ bitmap_init::$6 ] zp ZP_BYTE:194 [ bitmap_init::$7 ] zp ZP_BYTE:190 [ bitmap_init::$3 ]
Uplifting [mul16u] best 36779 combination zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 ] zp ZP_DWORD:113 [ mul16u::return#2 ] zp ZP_DWORD:158 [ mul16u::return#3 ]
Uplifting [wrap_y] best 36596 combination zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] reg byte a [ wrap_y::return#2 ]
Uplifting [bitmap_clear] best 35696 combination zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:188 [ bitmap_clear::$3 ]
Uplifting [divr16u] best 35486 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:172 [ divr16u::return#2 ] zp ZP_WORD:176 [ divr16u::return#3 ]
Uplifting [bitmap_init] best 34986 combination zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:192 [ bitmap_init::$5 ] zp ZP_BYTE:193 [ bitmap_init::$6 ] zp ZP_BYTE:194 [ bitmap_init::$7 ] zp ZP_BYTE:190 [ bitmap_init::$3 ]
Limited combination testing to 100 combinations of 61440 possible.
Uplifting [render_sine] best 34956 combination zp ZP_WORD:65 [ render_sine::$0 ] zp ZP_WORD:67 [ render_sine::$1 ] zp ZP_WORD:69 [ render_sine::sin_val#0 ] zp ZP_WORD:73 [ render_sine::$4 ] zp ZP_WORD:75 [ render_sine::$5 ] zp ZP_WORD:77 [ render_sine::sin2_val#0 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ]
Uplifting [bitmap_plot] best 34889 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp ZP_WORD:83 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:85 [ bitmap_plot::plotter#1 ] zp ZP_WORD:81 [ bitmap_plot::$3 ]
Uplifting [sin16s_gen2] best 34889 combination zp ZP_DWORD:105 [ sin16s_gen2::$5 ] zp ZP_WORD:111 [ sin16s_gen2::$8 ] zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:109 [ sin16s_gen2::$6 ] zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:93 [ sin16s_gen2::step#0 ]
Uplifting [sin16s] best 34889 combination zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:97 [ sin16s::return#0 ] zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:126 [ sin16s::$6 ] zp ZP_WORD:134 [ sin16s::x2#0 ] zp ZP_WORD:142 [ sin16s::x3_6#0 ] zp ZP_WORD:148 [ sin16s::x4#0 ] zp ZP_WORD:152 [ sin16s::x5#0 ] zp ZP_WORD:154 [ sin16s::x5_128#0 ] zp ZP_WORD:138 [ sin16s::x3#0 ] zp ZP_WORD:156 [ sin16s::usinx#1 ] zp ZP_WORD:130 [ sin16s::x1#0 ] zp ZP_WORD:144 [ sin16s::usinx#0 ] zp ZP_BYTE:35 [ sin16s::isUpper#2 ]
Uplifting [mulu16_sel] best 34873 combination zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:132 [ mulu16_sel::return#0 ] zp ZP_WORD:136 [ mulu16_sel::return#1 ] zp ZP_WORD:140 [ mulu16_sel::return#2 ] zp ZP_WORD:146 [ mulu16_sel::return#10 ] zp ZP_WORD:150 [ mulu16_sel::return#11 ] zp ZP_DWORD:162 [ mulu16_sel::$0 ] zp ZP_DWORD:166 [ mulu16_sel::$1 ] zp ZP_WORD:170 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ]
Uplifting [mul16s] best 34873 combination zp ZP_DWORD:101 [ mul16s::return#2 ] zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:121 [ mul16s::return#0 ] zp ZP_WORD:117 [ mul16s::$6 ] zp ZP_WORD:119 [ mul16s::$16 ] zp ZP_WORD:99 [ mul16s::a#0 ]
Uplifting [fill] best 34873 combination zp ZP_WORD:63 [ fill::addr#2 fill::addr#1 ]
Uplifting [div32u16u] best 34873 combination zp ZP_DWORD:89 [ div32u16u::return#2 ] zp ZP_WORD:178 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:180 [ div32u16u::return#0 ] zp ZP_WORD:174 [ div32u16u::quotient_hi#0 ]
Uplifting [] best 34873 combination zp ZP_WORD:186 [ rem16u#1 ]
Uplifting [main] best 34873 combination
Uplifting [render_sine] best 34906 combination zp ZP_WORD:65 [ render_sine::$0 ] zp ZP_WORD:67 [ render_sine::$1 ] zp ZP_WORD:69 [ render_sine::sin_val#0 ] zp ZP_WORD:73 [ render_sine::$4 ] zp ZP_WORD:75 [ render_sine::$5 ] zp ZP_WORD:77 [ render_sine::sin2_val#0 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ]
Uplifting [bitmap_plot] best 34839 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp ZP_WORD:83 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:85 [ bitmap_plot::plotter#1 ] zp ZP_WORD:81 [ bitmap_plot::$3 ]
Uplifting [sin16s_gen2] best 34839 combination zp ZP_DWORD:105 [ sin16s_gen2::$5 ] zp ZP_WORD:111 [ sin16s_gen2::$8 ] zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:109 [ sin16s_gen2::$6 ] zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:93 [ sin16s_gen2::step#0 ]
Uplifting [sin16s] best 34839 combination zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:97 [ sin16s::return#0 ] zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:126 [ sin16s::$6 ] zp ZP_WORD:134 [ sin16s::x2#0 ] zp ZP_WORD:142 [ sin16s::x3_6#0 ] zp ZP_WORD:148 [ sin16s::x4#0 ] zp ZP_WORD:152 [ sin16s::x5#0 ] zp ZP_WORD:154 [ sin16s::x5_128#0 ] zp ZP_WORD:138 [ sin16s::x3#0 ] zp ZP_WORD:156 [ sin16s::usinx#1 ] zp ZP_WORD:130 [ sin16s::x1#0 ] zp ZP_WORD:144 [ sin16s::usinx#0 ] zp ZP_BYTE:35 [ sin16s::isUpper#2 ]
Uplifting [mulu16_sel] best 34823 combination zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:132 [ mulu16_sel::return#0 ] zp ZP_WORD:136 [ mulu16_sel::return#1 ] zp ZP_WORD:140 [ mulu16_sel::return#2 ] zp ZP_WORD:146 [ mulu16_sel::return#10 ] zp ZP_WORD:150 [ mulu16_sel::return#11 ] zp ZP_DWORD:162 [ mulu16_sel::$0 ] zp ZP_DWORD:166 [ mulu16_sel::$1 ] zp ZP_WORD:170 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ]
Uplifting [mul16s] best 34823 combination zp ZP_DWORD:101 [ mul16s::return#2 ] zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:121 [ mul16s::return#0 ] zp ZP_WORD:117 [ mul16s::$6 ] zp ZP_WORD:119 [ mul16s::$16 ] zp ZP_WORD:99 [ mul16s::a#0 ]
Uplifting [fill] best 34823 combination zp ZP_WORD:63 [ fill::addr#2 fill::addr#1 ]
Uplifting [div32u16u] best 34823 combination zp ZP_DWORD:89 [ div32u16u::return#2 ] zp ZP_WORD:178 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:180 [ div32u16u::return#0 ] zp ZP_WORD:174 [ div32u16u::quotient_hi#0 ]
Uplifting [] best 34823 combination zp ZP_WORD:186 [ rem16u#1 ]
Uplifting [main] best 34823 combination
Attempting to uplift remaining variables inzp ZP_BYTE:192 [ bitmap_init::$5 ]
Uplifting [bitmap_init] best 34813 combination reg byte a [ bitmap_init::$5 ]
Uplifting [bitmap_init] best 34763 combination reg byte a [ bitmap_init::$5 ]
Attempting to uplift remaining variables inzp ZP_BYTE:193 [ bitmap_init::$6 ]
Uplifting [bitmap_init] best 34753 combination reg byte a [ bitmap_init::$6 ]
Uplifting [bitmap_init] best 34703 combination reg byte a [ bitmap_init::$6 ]
Attempting to uplift remaining variables inzp ZP_BYTE:194 [ bitmap_init::$7 ]
Uplifting [bitmap_init] best 34693 combination reg byte a [ bitmap_init::$7 ]
Uplifting [bitmap_init] best 34643 combination reg byte a [ bitmap_init::$7 ]
Attempting to uplift remaining variables inzp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Uplifting [bitmap_clear] best 34693 combination zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Uplifting [bitmap_clear] best 34643 combination zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:190 [ bitmap_init::$3 ]
Uplifting [bitmap_init] best 34693 combination zp ZP_BYTE:190 [ bitmap_init::$3 ]
Uplifting [bitmap_init] best 34643 combination zp ZP_BYTE:190 [ bitmap_init::$3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:35 [ sin16s::isUpper#2 ]
Uplifting [sin16s] best 34693 combination zp ZP_BYTE:35 [ sin16s::isUpper#2 ]
Uplifting [sin16s] best 34643 combination zp ZP_BYTE:35 [ sin16s::isUpper#2 ]
Coalescing zero page register with common assignment [ zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] ] with [ zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 2
Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:156 [ sin16s::usinx#1 ] ] - score: 2
Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:138 [ sin16s::x3#0 ] ] - score: 2
@ -6341,13 +6341,13 @@ wrap_y: {
//SEG125 wrap_y::@2
b2:
//SEG126 [69] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (byte/word/signed word/dword/signed dword) $c8 -- vwsz1=vwsz1_minus_vbuc1
lda y
sec
sbc #<$c8
lda y
sbc #$c8
sta y
lda y+1
sbc #>$c8
sta y+1
bcs !+
dec y+1
!:
jmp b1_from_b2
}
//SEG127 sin16s_gen2
@ -8190,7 +8190,7 @@ reg byte a [ bitmap_init::$7 ]
FINAL ASSEMBLER
Score: 28363
Score: 28313
//SEG0 File Comments
// Generate a big sinus and plot it on a bitmap
@ -8543,13 +8543,13 @@ wrap_y: {
//SEG125 wrap_y::@2
b2:
//SEG126 [69] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (byte/word/signed word/dword/signed dword) $c8 -- vwsz1=vwsz1_minus_vbuc1
lda y
sec
sbc #<$c8
lda y
sbc #$c8
sta y
lda y+1
sbc #>$c8
sta y+1
bcs !+
dec y+1
!:
jmp b1
}
//SEG127 sin16s_gen2

View File

@ -452,8 +452,8 @@ gen_sprites: {
lda #0
sta i
b1:
ldx i
ldy cml,x
ldy i
ldx cml,y
lda spr
sta gen_chargen_sprite.sprite
lda spr+1
@ -476,7 +476,7 @@ gen_sprites: {
// Generate a sprite from a C64 CHARGEN character (by making each pixel 3x3 pixels large)
// - c is the character to generate
// - sprite is a pointer to the position of the sprite to generate
// gen_chargen_sprite(byte register(Y) ch, byte* zeropage($a) sprite)
// gen_chargen_sprite(byte register(X) ch, byte* zeropage($a) sprite)
gen_chargen_sprite: {
.label _0 = $c
.label _1 = $c
@ -487,7 +487,7 @@ gen_chargen_sprite: {
.label x = 5
.label y = 3
.label c = 6
tya
txa
sta _0
lda #0
sta _0+1

View File

@ -5244,7 +5244,7 @@ Uplifting [place_sprites] best 1062320 combination zp ZP_BYTE:45 [ place_sprites
Attempting to uplift remaining variables inzp ZP_BYTE:47 [ place_sprites::col#2 place_sprites::col#1 ]
Uplifting [place_sprites] best 1062320 combination zp ZP_BYTE:47 [ place_sprites::col#2 place_sprites::col#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:62 [ gen_chargen_sprite::ch#0 ]
Uplifting [gen_chargen_sprite] best 1062289 combination reg byte y [ gen_chargen_sprite::ch#0 ]
Uplifting [gen_chargen_sprite] best 1062289 combination reg byte x [ gen_chargen_sprite::ch#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ]
Uplifting [] best 1062289 combination zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ]
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ]
@ -6322,9 +6322,9 @@ gen_sprites: {
jmp b1
//SEG355 gen_sprites::@1
b1:
//SEG356 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) -- vbuyy=pbuc1_derefidx_vbuz1
ldx i
ldy cml,x
//SEG356 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) -- vbuxx=pbuc1_derefidx_vbuz1
ldy i
ldx cml,y
//SEG357 [173] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 -- pbuz1=pbuz2
lda spr
sta gen_chargen_sprite.sprite
@ -6360,7 +6360,7 @@ gen_sprites: {
// Generate a sprite from a C64 CHARGEN character (by making each pixel 3x3 pixels large)
// - c is the character to generate
// - sprite is a pointer to the position of the sprite to generate
// gen_chargen_sprite(byte register(Y) ch, byte* zeropage($a) sprite)
// gen_chargen_sprite(byte register(X) ch, byte* zeropage($a) sprite)
gen_chargen_sprite: {
.label _0 = $c
.label _1 = $c
@ -6371,8 +6371,8 @@ gen_chargen_sprite: {
.label x = 5
.label y = 3
.label c = 6
//SEG366 [179] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuyy
tya
//SEG366 [179] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuxx
txa
sta _0
lda #0
sta _0+1
@ -7144,7 +7144,7 @@ FINAL SYMBOL TABLE
(byte) gen_chargen_sprite::c
(byte) gen_chargen_sprite::c#3 c zp ZP_BYTE:6 769.3076923076923
(byte) gen_chargen_sprite::ch
(byte) gen_chargen_sprite::ch#0 reg byte y 6.5
(byte) gen_chargen_sprite::ch#0 reg byte x 6.5
(byte*) gen_chargen_sprite::chargen
(byte*) gen_chargen_sprite::chargen#0 chargen zp ZP_WORD:12 3.678571428571429
(byte) gen_chargen_sprite::s_gen
@ -7371,7 +7371,7 @@ reg byte a [ anim::$5 ]
reg byte a [ gen_sintab::$24 ]
reg byte a [ prepareMEM::$0 ]
reg byte a [ prepareMEM::$1 ]
reg byte y [ gen_chargen_sprite::ch#0 ]
reg byte x [ gen_chargen_sprite::ch#0 ]
reg byte a [ gen_chargen_sprite::$3 ]
reg byte a [ gen_chargen_sprite::$6 ]
reg byte x [ place_sprites::j2#1 ]
@ -8190,9 +8190,9 @@ gen_sprites: {
//SEG354 [171] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy
//SEG355 gen_sprites::@1
b1:
//SEG356 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) -- vbuyy=pbuc1_derefidx_vbuz1
ldx i
ldy cml,x
//SEG356 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) -- vbuxx=pbuc1_derefidx_vbuz1
ldy i
ldx cml,y
//SEG357 [173] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 -- pbuz1=pbuz2
lda spr
sta gen_chargen_sprite.sprite
@ -8224,7 +8224,7 @@ gen_sprites: {
// Generate a sprite from a C64 CHARGEN character (by making each pixel 3x3 pixels large)
// - c is the character to generate
// - sprite is a pointer to the position of the sprite to generate
// gen_chargen_sprite(byte register(Y) ch, byte* zeropage($a) sprite)
// gen_chargen_sprite(byte register(X) ch, byte* zeropage($a) sprite)
gen_chargen_sprite: {
.label _0 = $c
.label _1 = $c
@ -8235,8 +8235,8 @@ gen_chargen_sprite: {
.label x = 5
.label y = 3
.label c = 6
//SEG366 [179] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuyy
tya
//SEG366 [179] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuxx
txa
sta _0
lda #0
sta _0+1

View File

@ -173,7 +173,7 @@
(byte) gen_chargen_sprite::c
(byte) gen_chargen_sprite::c#3 c zp ZP_BYTE:6 769.3076923076923
(byte) gen_chargen_sprite::ch
(byte) gen_chargen_sprite::ch#0 reg byte y 6.5
(byte) gen_chargen_sprite::ch#0 reg byte x 6.5
(byte*) gen_chargen_sprite::chargen
(byte*) gen_chargen_sprite::chargen#0 chargen zp ZP_WORD:12 3.678571428571429
(byte) gen_chargen_sprite::s_gen
@ -400,7 +400,7 @@ reg byte a [ anim::$5 ]
reg byte a [ gen_sintab::$24 ]
reg byte a [ prepareMEM::$0 ]
reg byte a [ prepareMEM::$1 ]
reg byte y [ gen_chargen_sprite::ch#0 ]
reg byte x [ gen_chargen_sprite::ch#0 ]
reg byte a [ gen_chargen_sprite::$3 ]
reg byte a [ gen_chargen_sprite::$6 ]
reg byte x [ place_sprites::j2#1 ]

View File

@ -65,13 +65,13 @@ anim: {
eor #$ff
adc #0
sta xvel+1
lda yvel_init
sec
sbc #<$a
lda yvel_init
sbc #$a
sta yvel_init
lda yvel_init+1
sbc #>$a
sta yvel_init+1
bcs !+
dec yvel_init+1
!:
lda yvel_init
cmp #<-$c8
lda yvel_init+1

View File

@ -1291,13 +1291,13 @@ anim: {
adc #0
sta xvel+1
//SEG34 [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (byte/signed byte/word/signed word/dword/signed dword) $a -- vwsz1=vwsz1_minus_vbuc1
lda yvel_init
sec
sbc #<$a
lda yvel_init
sbc #$a
sta yvel_init
lda yvel_init+1
sbc #>$a
sta yvel_init+1
bcs !+
dec yvel_init+1
!:
//SEG35 [13] if((signed word) yvel_init#3>=-(byte/word/signed word/dword/signed dword) $c8) goto anim::@5 -- vwsz1_ge_vwsc1_then_la1
lda yvel_init
cmp #<-$c8
@ -1615,10 +1615,10 @@ Uplift Scope [] 14.25: zp ZP_WORD:6 [ yvel#9 yvel#12 yvel#10 yvel#22 ] 8.94: zp
Uplift Scope [anim] 4: zp ZP_WORD:15 [ anim::$10 ] 4: zp ZP_WORD:19 [ anim::$12 ] 4: zp ZP_BYTE:23 [ anim::$14 ] 4: zp ZP_BYTE:24 [ anim::$15 ] 4: zp ZP_BYTE:25 [ anim::$16 ] 1.33: zp ZP_WORD:21 [ anim::sprite_y#0 ] 0.86: zp ZP_WORD:17 [ anim::sprite_x#0 ]
Uplift Scope [main]
Uplifting [init] best 8058 combination zp ZP_WORD:12 [ init::sc#2 init::sc#1 ] reg byte x [ init::i#2 init::i#1 ]
Uplifting [] best 8058 combination zp ZP_WORD:6 [ yvel#9 yvel#12 yvel#10 yvel#22 ] zp ZP_WORD:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ] zp ZP_WORD:8 [ xpos#9 xpos#12 xpos#10 ] zp ZP_WORD:10 [ ypos#10 ypos#13 ypos#11 ] zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 ]
Uplifting [anim] best 8040 combination zp ZP_WORD:15 [ anim::$10 ] zp ZP_WORD:19 [ anim::$12 ] reg byte a [ anim::$14 ] reg byte a [ anim::$15 ] reg byte a [ anim::$16 ] zp ZP_WORD:21 [ anim::sprite_y#0 ] zp ZP_WORD:17 [ anim::sprite_x#0 ]
Uplifting [main] best 8040 combination
Uplifting [init] best 8057 combination zp ZP_WORD:12 [ init::sc#2 init::sc#1 ] reg byte x [ init::i#2 init::i#1 ]
Uplifting [] best 8057 combination zp ZP_WORD:6 [ yvel#9 yvel#12 yvel#10 yvel#22 ] zp ZP_WORD:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ] zp ZP_WORD:8 [ xpos#9 xpos#12 xpos#10 ] zp ZP_WORD:10 [ ypos#10 ypos#13 ypos#11 ] zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 ]
Uplifting [anim] best 8039 combination zp ZP_WORD:15 [ anim::$10 ] zp ZP_WORD:19 [ anim::$12 ] reg byte a [ anim::$14 ] reg byte a [ anim::$15 ] reg byte a [ anim::$16 ] zp ZP_WORD:21 [ anim::sprite_y#0 ] zp ZP_WORD:17 [ anim::sprite_x#0 ]
Uplifting [main] best 8039 combination
Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ anim::$10 ] ] with [ zp ZP_WORD:17 [ anim::sprite_x#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ anim::$12 ] ] with [ zp ZP_WORD:21 [ anim::sprite_y#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 ] ] with [ zp ZP_WORD:12 [ init::sc#2 init::sc#1 ] ]
@ -1750,13 +1750,13 @@ anim: {
adc #0
sta xvel+1
//SEG34 [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (byte/signed byte/word/signed word/dword/signed dword) $a -- vwsz1=vwsz1_minus_vbuc1
lda yvel_init
sec
sbc #<$a
lda yvel_init
sbc #$a
sta yvel_init
lda yvel_init+1
sbc #>$a
sta yvel_init+1
bcs !+
dec yvel_init+1
!:
//SEG35 [13] if((signed word) yvel_init#3>=-(byte/word/signed word/dword/signed dword) $c8) goto anim::@5 -- vwsz1_ge_vwsc1_then_la1
lda yvel_init
cmp #<-$c8
@ -2223,7 +2223,7 @@ reg byte a [ anim::$16 ]
FINAL ASSEMBLER
Score: 6617
Score: 6616
//SEG0 File Comments
//SEG1 Basic Upstart
@ -2327,13 +2327,13 @@ anim: {
adc #0
sta xvel+1
//SEG34 [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (byte/signed byte/word/signed word/dword/signed dword) $a -- vwsz1=vwsz1_minus_vbuc1
lda yvel_init
sec
sbc #<$a
lda yvel_init
sbc #$a
sta yvel_init
lda yvel_init+1
sbc #>$a
sta yvel_init+1
bcs !+
dec yvel_init+1
!:
//SEG35 [13] if((signed word) yvel_init#3>=-(byte/word/signed word/dword/signed dword) $c8) goto anim::@5 -- vwsz1_ge_vwsc1_then_la1
lda yvel_init
cmp #<-$c8

View File

@ -5459,7 +5459,6 @@ Statement [235] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word
Statement [237] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:170::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:170::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:170::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:170::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:170::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a
Statement [243] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:165 [ divr16u::return#2 ] ) always clobbers reg byte a
Statement [244] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:165 [ div16u::return#0 ] ) always clobbers reg byte a
Statement [11] (signed byte) main::sb#0 ← *((const signed byte[$c0]) main::sintabb#0 + (byte) main::i#2) [ main::i#2 print_char_cursor#45 main::sb#0 ] ( main:2 [ main::i#2 print_char_cursor#45 main::sb#0 ] ) always clobbers reg byte a
Statement [12] (word~) main::$3 ← ((word)) (byte) main::i#2 [ main::i#2 print_char_cursor#45 main::sb#0 main::$3 ] ( main:2 [ main::i#2 print_char_cursor#45 main::sb#0 main::$3 ] ) always clobbers reg byte a
Statement [13] (word~) main::$4 ← (word~) main::$3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 print_char_cursor#45 main::sb#0 main::$4 ] ( main:2 [ main::i#2 print_char_cursor#45 main::sb#0 main::$4 ] ) always clobbers reg byte a
Statement [14] (signed word*~) main::$5 ← (const signed word[$c0]) main::sintabw#0 + (word~) main::$4 [ main::i#2 print_char_cursor#45 main::sb#0 main::$5 ] ( main:2 [ main::i#2 print_char_cursor#45 main::sb#0 main::$5 ] ) always clobbers reg byte a

File diff suppressed because one or more lines are too long

View File

@ -6409,12 +6409,11 @@ Statement [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed b
Statement [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a
Statement [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a
Statement [129] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a
Statement [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:86 [ test_8s::dividend#0 ]
Statement [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ]
Statement [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:142 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:146 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:150 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:154 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a
Statement [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:86 [ test_8s::dividend#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:93 [ div8s::resultu#0 ]
Statement [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a
Statement [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::$6 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::$6 ] ) always clobbers reg byte a
@ -6448,7 +6447,6 @@ Statement [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr1
Statement [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a
Statement [250] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a
Statement [251] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a
Statement [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ( main:2::test_8u:7 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ) always clobbers reg byte a
Statement [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a
Statement [284] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
Statement [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a
@ -6503,7 +6501,6 @@ Statement [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed b
Statement [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a
Statement [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a
Statement [129] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a
Statement [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 ] ) always clobbers reg byte a
Statement [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ) always clobbers reg byte a
Statement [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:142 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:146 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:150 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:154 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a
Statement [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a
@ -6529,7 +6526,6 @@ Statement [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr1
Statement [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a
Statement [250] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a
Statement [251] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a
Statement [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ( main:2::test_8u:7 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ) always clobbers reg byte a
Statement [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a
Statement [284] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
Statement [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a

View File

@ -10,13 +10,13 @@ main: {
sta w
sta w+1
b1:
lda w
sec
sbc #<$c
lda w
sbc #$c
sta w
lda w+1
sbc #>$c
sta w+1
bcs !+
dec w+1
!:
lda w
sta SCREEN,x
inx

View File

@ -190,13 +190,13 @@ main: {
//SEG17 main::@1
b1:
//SEG18 [6] (signed word) main::w#1 ← (signed word) main::w#2 - (byte/signed byte/word/signed word/dword/signed dword) $c -- vwsz1=vwsz1_minus_vbuc1
lda w
sec
sbc #<$c
lda w
sbc #$c
sta w
lda w+1
sbc #>$c
sta w+1
bcs !+
dec w+1
!:
//SEG19 [7] (byte~) main::$1 ← < (signed word) main::w#1 -- vbuz1=_lo_vwsz2
lda w
sta _1
@ -231,8 +231,8 @@ REGISTER UPLIFT SCOPES
Uplift Scope [main] 28.6: zp ZP_WORD:2 [ main::w#2 main::w#1 ] 24.75: zp ZP_BYTE:4 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:5 [ main::$1 ]
Uplift Scope []
Uplifting [main] best 553 combination zp ZP_WORD:2 [ main::w#2 main::w#1 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ]
Uplifting [] best 553 combination
Uplifting [main] best 548 combination zp ZP_WORD:2 [ main::w#2 main::w#1 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ]
Uplifting [] best 548 combination
ASSEMBLER BEFORE OPTIMIZATION
//SEG0 File Comments
@ -280,13 +280,13 @@ main: {
//SEG17 main::@1
b1:
//SEG18 [6] (signed word) main::w#1 ← (signed word) main::w#2 - (byte/signed byte/word/signed word/dword/signed dword) $c -- vwsz1=vwsz1_minus_vbuc1
lda w
sec
sbc #<$c
lda w
sbc #$c
sta w
lda w+1
sbc #>$c
sta w+1
bcs !+
dec w+1
!:
//SEG19 [7] (byte~) main::$1 ← < (signed word) main::w#1 -- vbuaa=_lo_vwsz1
lda w
//SEG20 [8] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa
@ -354,7 +354,7 @@ reg byte a [ main::$1 ]
FINAL ASSEMBLER
Score: 431
Score: 426
//SEG0 File Comments
// Tests that mixing types can synthesize a fragment correctly
@ -387,13 +387,13 @@ main: {
//SEG17 main::@1
b1:
//SEG18 [6] (signed word) main::w#1 ← (signed word) main::w#2 - (byte/signed byte/word/signed word/dword/signed dword) $c -- vwsz1=vwsz1_minus_vbuc1
lda w
sec
sbc #<$c
lda w
sbc #$c
sta w
lda w+1
sbc #>$c
sta w+1
bcs !+
dec w+1
!:
//SEG19 [7] (byte~) main::$1 ← < (signed word) main::w#1 -- vbuaa=_lo_vwsz1
lda w
//SEG20 [8] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa

View File

@ -86,7 +86,7 @@ render: {
sta x
b2:
jsr findcol
txa
lda findcol.return
ldy x
sta (colline),y
inc x
@ -110,79 +110,79 @@ render: {
findcol: {
.label x = 5
.label y = 2
.label xp = 8
.label yp = 9
.label i = 6
.label mindiff = 7
ldx #0
.label yp = 8
.label return = 7
.label mincol = 7
.label mindiff = 6
lda #0
sta mincol
lda #$ff
sta mindiff
txa
sta i
ldy #0
b1:
ldy i
lda XPOS,y
sta xp
ldx XPOS,y
lda YPOS,y
sta yp
lda x
cmp xp
cpx x
bne b2
lda y
cmp yp
bne b2
ldx #0
lda #0
sta return
breturn:
rts
b2:
lda x
cmp xp
bcc b4
txa
cmp x
beq !+
bcs b4
!:
txa
eor #$ff
sec
sbc xp
tay
adc x
tax
b5:
lda y
cmp yp
bcc b6
sec
sbc yp
sty $ff
stx $ff
clc
adc $ff
tay
b7:
cpy mindiff
bcs b21
ldx i
lda COLS,x
tax
b7:
cpx mindiff
bcs b21
lda COLS,y
sta mincol
b8:
inc i
lda i
cmp #numpoints
iny
cpy #numpoints
bcc b19
jmp breturn
b19:
sty mindiff
stx mindiff
jmp b1
b21:
ldy mindiff
ldx mindiff
jmp b8
b6:
lda yp
sec
sbc y
sty $ff
stx $ff
clc
adc $ff
tay
tax
jmp b7
b4:
lda xp
txa
sec
sbc x
tay
tax
jmp b5
}
initscreen: {

View File

@ -1787,47 +1787,50 @@ Uplift Scope [animate] 4: zp ZP_BYTE:13 [ animate::$0 ] 4: zp ZP_BYTE:14 [ anima
Uplift Scope [main]
Uplift Scope []
Uplifting [findcol] best 2033929 combination reg byte y [ findcol::mindiff#11 findcol::diff#7 findcol::diff#4 findcol::diff#3 findcol::mindiff#15 ] reg byte y [ findcol::diff#5 findcol::diff#2 findcol::diff#1 ] reg byte x [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] zp ZP_BYTE:26 [ findcol::$8 ] zp ZP_BYTE:27 [ findcol::$10 ] zp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ] zp ZP_BYTE:24 [ findcol::xp#0 ] zp ZP_BYTE:25 [ findcol::yp#0 ] zp ZP_BYTE:22 [ findcol::return#0 ] zp ZP_BYTE:21 [ findcol::y#0 ] zp ZP_BYTE:20 [ findcol::x#0 ]
Uplifting [findcol] best 2076932 combination reg byte x [ findcol::mindiff#11 findcol::diff#7 findcol::diff#4 findcol::diff#3 findcol::mindiff#15 ] reg byte x [ findcol::diff#5 findcol::diff#2 findcol::diff#1 ] zp ZP_BYTE:8 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] zp ZP_BYTE:26 [ findcol::$8 ] zp ZP_BYTE:27 [ findcol::$10 ] zp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ] zp ZP_BYTE:24 [ findcol::xp#0 ] zp ZP_BYTE:25 [ findcol::yp#0 ] zp ZP_BYTE:22 [ findcol::return#0 ] zp ZP_BYTE:21 [ findcol::y#0 ] zp ZP_BYTE:20 [ findcol::x#0 ]
Limited combination testing to 100 combinations of 2239488 possible.
Uplifting [render] best 2027929 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ] reg byte a [ render::col#0 ] zp ZP_BYTE:2 [ render::y#4 render::y#1 ] zp ZP_WORD:3 [ render::colline#5 render::colline#1 ]
Uplifting [initscreen] best 2027929 combination zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ]
Uplifting [animate] best 2027909 combination reg byte x [ animate::$0 ] reg byte x [ animate::$3 ] reg byte a [ animate::$6 ] reg byte a [ animate::$9 ] zp ZP_BYTE:17 [ animate::$12 ] zp ZP_BYTE:18 [ animate::$15 ] zp ZP_BYTE:19 [ animate::$18 ]
Uplifting [render] best 2070932 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ] reg byte a [ render::col#0 ] zp ZP_BYTE:2 [ render::y#4 render::y#1 ] zp ZP_WORD:3 [ render::colline#5 render::colline#1 ]
Uplifting [initscreen] best 2070932 combination zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ]
Uplifting [animate] best 2070912 combination reg byte x [ animate::$0 ] reg byte x [ animate::$3 ] reg byte a [ animate::$6 ] reg byte a [ animate::$9 ] zp ZP_BYTE:17 [ animate::$12 ] zp ZP_BYTE:18 [ animate::$15 ] zp ZP_BYTE:19 [ animate::$18 ]
Limited combination testing to 100 combinations of 16384 possible.
Uplifting [main] best 2027909 combination
Uplifting [] best 2027909 combination
Uplifting [main] best 2070912 combination
Uplifting [] best 2070912 combination
Attempting to uplift remaining variables inzp ZP_BYTE:8 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
Uplifting [findcol] best 2070912 combination zp ZP_BYTE:8 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ]
Uplifting [findcol] best 2027909 combination zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ]
Uplifting [findcol] best 2070912 combination zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ]
Attempting to uplift remaining variables inzp ZP_BYTE:26 [ findcol::$8 ]
Uplifting [findcol] best 2007909 combination reg byte a [ findcol::$8 ]
Uplifting [findcol] best 2050912 combination reg byte a [ findcol::$8 ]
Attempting to uplift remaining variables inzp ZP_BYTE:27 [ findcol::$10 ]
Uplifting [findcol] best 1987909 combination reg byte a [ findcol::$10 ]
Uplifting [findcol] best 2030912 combination reg byte a [ findcol::$10 ]
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ]
Uplifting [findcol] best 1987909 combination zp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ]
Uplifting [findcol] best 1850912 combination reg byte y [ findcol::i#10 findcol::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:24 [ findcol::xp#0 ]
Uplifting [findcol] best 1987909 combination zp ZP_BYTE:24 [ findcol::xp#0 ]
Uplifting [findcol] best 1805912 combination reg byte x [ findcol::xp#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ findcol::yp#0 ]
Uplifting [findcol] best 1987909 combination zp ZP_BYTE:25 [ findcol::yp#0 ]
Uplifting [findcol] best 1805912 combination zp ZP_BYTE:25 [ findcol::yp#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ render::x#2 render::x#1 ]
Uplifting [render] best 1987909 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ]
Uplifting [render] best 1805912 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:22 [ findcol::return#0 ]
Uplifting [findcol] best 1983909 combination reg byte a [ findcol::return#0 ]
Uplifting [findcol] best 1799912 combination reg byte a [ findcol::return#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:21 [ findcol::y#0 ]
Uplifting [findcol] best 1983909 combination zp ZP_BYTE:21 [ findcol::y#0 ]
Uplifting [findcol] best 1799912 combination zp ZP_BYTE:21 [ findcol::y#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:20 [ findcol::x#0 ]
Uplifting [findcol] best 1983909 combination zp ZP_BYTE:20 [ findcol::x#0 ]
Uplifting [findcol] best 1799912 combination zp ZP_BYTE:20 [ findcol::x#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ render::y#4 render::y#1 ]
Uplifting [render] best 1983909 combination zp ZP_BYTE:2 [ render::y#4 render::y#1 ]
Uplifting [render] best 1799912 combination zp ZP_BYTE:2 [ render::y#4 render::y#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:17 [ animate::$12 ]
Uplifting [animate] best 1983903 combination reg byte x [ animate::$12 ]
Uplifting [animate] best 1799906 combination reg byte x [ animate::$12 ]
Attempting to uplift remaining variables inzp ZP_BYTE:18 [ animate::$15 ]
Uplifting [animate] best 1983897 combination reg byte a [ animate::$15 ]
Uplifting [animate] best 1799900 combination reg byte a [ animate::$15 ]
Attempting to uplift remaining variables inzp ZP_BYTE:19 [ animate::$18 ]
Uplifting [animate] best 1983891 combination reg byte a [ animate::$18 ]
Uplifting [animate] best 1799894 combination reg byte a [ animate::$18 ]
Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ render::y#4 render::y#1 ] ] with [ zp ZP_BYTE:21 [ findcol::y#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_BYTE:5 [ render::x#2 render::x#1 ] ] with [ zp ZP_BYTE:20 [ findcol::x#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] ] with [ zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ] ]
Allocated (was zp ZP_BYTE:24) zp ZP_BYTE:8 [ findcol::xp#0 ]
Allocated (was zp ZP_BYTE:25) zp ZP_BYTE:9 [ findcol::yp#0 ]
Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ findcol::mindiff#10 findcol::mindiff#13 ]
Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
Allocated (was zp ZP_BYTE:25) zp ZP_BYTE:8 [ findcol::yp#0 ]
ASSEMBLER BEFORE OPTIMIZATION
//SEG0 File Comments
@ -2040,8 +2043,8 @@ render: {
//SEG74 [51] phi from render::@2 to findcol [phi:render::@2->findcol]
findcol_from_b2:
jsr findcol
//SEG75 [42] (byte) findcol::return#0 ← (byte) findcol::return#2 -- vbuaa=vbuxx
txa
//SEG75 [42] (byte) findcol::return#0 ← (byte) findcol::return#2 -- vbuaa=vbuz1
lda findcol.return
jmp b5
//SEG76 render::@5
b5:
@ -2083,34 +2086,30 @@ render: {
findcol: {
.label x = 5
.label y = 2
.label xp = 8
.label yp = 9
.label i = 6
.label mindiff = 7
.label yp = 8
.label return = 7
.label mincol = 7
.label mindiff = 6
//SEG88 [52] phi from findcol to findcol::@1 [phi:findcol->findcol::@1]
b1_from_findcol:
//SEG89 [52] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#0] -- vbuxx=vbuc1
ldx #0
//SEG89 [52] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#0] -- vbuz1=vbuc1
lda #0
sta mincol
//SEG90 [52] phi (byte) findcol::mindiff#10 = (byte/word/signed word/dword/signed dword) $ff [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1
lda #$ff
sta mindiff
//SEG91 [52] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#2] -- vbuz1=vbuc1
lda #0
sta i
//SEG91 [52] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#2] -- vbuyy=vbuc1
ldy #0
jmp b1
//SEG92 findcol::@1
b1:
//SEG93 [53] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2
ldy i
lda XPOS,y
sta xp
//SEG94 [54] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2
ldy i
//SEG93 [53] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) -- vbuxx=pbuc1_derefidx_vbuyy
ldx XPOS,y
//SEG94 [54] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuyy
lda YPOS,y
sta yp
//SEG95 [55] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1
lda x
cmp xp
//SEG95 [55] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 -- vbuz1_neq_vbuxx_then_la1
cpx x
bne b2
jmp b9
//SEG96 findcol::@9
@ -2121,8 +2120,9 @@ findcol: {
bne b2
//SEG98 [57] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return]
breturn_from_b9:
//SEG99 [57] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol::@9->findcol::@return#0] -- vbuxx=vbuc1
ldx #0
//SEG99 [57] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol::@9->findcol::@return#0] -- vbuz1=vbuc1
lda #0
sta return
jmp breturn
//SEG100 findcol::@return
breturn:
@ -2130,18 +2130,21 @@ findcol: {
rts
//SEG102 findcol::@2
b2:
//SEG103 [59] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@4 -- vbuz1_lt_vbuz2_then_la1
lda x
cmp xp
bcc b4
//SEG103 [59] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@4 -- vbuz1_lt_vbuxx_then_la1
txa
cmp x
beq !+
bcs b4
!:
jmp b12
//SEG104 findcol::@12
b12:
//SEG105 [60] (byte) findcol::diff#2 ← (byte) findcol::x#0 - (byte) findcol::xp#0 -- vbuyy=vbuz1_minus_vbuz2
lda x
//SEG105 [60] (byte) findcol::diff#2 ← (byte) findcol::x#0 - (byte) findcol::xp#0 -- vbuxx=vbuz1_minus_vbuxx
txa
eor #$ff
sec
sbc xp
tay
adc x
tax
//SEG106 [61] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5]
b5_from_b12:
b5_from_b4:
@ -2160,11 +2163,11 @@ findcol: {
lda y
sec
sbc yp
//SEG112 [64] (byte) findcol::diff#4 ← (byte) findcol::diff#5 + (byte~) findcol::$8 -- vbuyy=vbuyy_plus_vbuaa
sty $ff
//SEG112 [64] (byte) findcol::diff#4 ← (byte) findcol::diff#5 + (byte~) findcol::$8 -- vbuxx=vbuxx_plus_vbuaa
stx $ff
clc
adc $ff
tay
tax
//SEG113 [65] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7]
b7_from_b14:
b7_from_b6:
@ -2172,16 +2175,15 @@ findcol: {
jmp b7
//SEG115 findcol::@7
b7:
//SEG116 [66] if((byte) findcol::diff#7>=(byte) findcol::mindiff#10) goto findcol::@21 -- vbuyy_ge_vbuz1_then_la1
cpy mindiff
//SEG116 [66] if((byte) findcol::diff#7>=(byte) findcol::mindiff#10) goto findcol::@21 -- vbuxx_ge_vbuz1_then_la1
cpx mindiff
bcs b21
jmp b16
//SEG117 findcol::@16
b16:
//SEG118 [67] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) -- vbuxx=pbuc1_derefidx_vbuz1
ldx i
lda COLS,x
tax
//SEG118 [67] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuyy
lda COLS,y
sta mincol
//SEG119 [68] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8]
b8_from_b16:
b8_from_b21:
@ -2190,11 +2192,10 @@ findcol: {
jmp b8
//SEG122 findcol::@8
b8:
//SEG123 [69] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 -- vbuz1=_inc_vbuz1
inc i
//SEG124 [70] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 -- vbuz1_lt_vbuc1_then_la1
lda i
cmp #numpoints
//SEG123 [69] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 -- vbuyy=_inc_vbuyy
iny
//SEG124 [70] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 -- vbuyy_lt_vbuc1_then_la1
cpy #numpoints
bcc b19
//SEG125 [57] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return]
breturn_from_b8:
@ -2202,8 +2203,8 @@ findcol: {
jmp breturn
//SEG127 findcol::@19
b19:
//SEG128 [71] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 -- vbuz1=vbuyy
sty mindiff
//SEG128 [71] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 -- vbuz1=vbuxx
stx mindiff
//SEG129 [52] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1]
b1_from_b19:
//SEG130 [52] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy
@ -2212,8 +2213,8 @@ findcol: {
jmp b1
//SEG133 findcol::@21
b21:
//SEG134 [72] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 -- vbuyy=vbuz1
ldy mindiff
//SEG134 [72] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 -- vbuxx=vbuz1
ldx mindiff
jmp b8_from_b21
//SEG135 findcol::@6
b6:
@ -2221,19 +2222,19 @@ findcol: {
lda yp
sec
sbc y
//SEG137 [74] (byte) findcol::diff#3 ← (byte) findcol::diff#5 + (byte~) findcol::$10 -- vbuyy=vbuyy_plus_vbuaa
sty $ff
//SEG137 [74] (byte) findcol::diff#3 ← (byte) findcol::diff#5 + (byte~) findcol::$10 -- vbuxx=vbuxx_plus_vbuaa
stx $ff
clc
adc $ff
tay
tax
jmp b7_from_b6
//SEG138 findcol::@4
b4:
//SEG139 [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 -- vbuyy=vbuz1_minus_vbuz2
lda xp
//SEG139 [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 -- vbuxx=vbuxx_minus_vbuz1
txa
sec
sbc x
tay
tax
jmp b5_from_b4
}
//SEG140 initscreen
@ -2321,8 +2322,6 @@ Removing instruction lda XPOS+1
Removing instruction lda YPOS+2
Replacing instruction lda YPOS+3 with TXA
Removing instruction lda XPOS+3
Replacing instruction lda #0 with TXA
Removing instruction ldy i
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b1_from_b4 with b1
Replacing label b2_from_b5 with b2
@ -2384,7 +2383,6 @@ Removing instruction jmp b2
Removing instruction jmp b1
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda XPOS+3
Removing instruction lda x
Removing instruction lda y
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Removing instruction bbegin:
@ -2443,35 +2441,35 @@ FINAL SYMBOL TABLE
(label) findcol::@9
(label) findcol::@return
(byte) findcol::diff
(byte) findcol::diff#1 reg byte y 20002.0
(byte) findcol::diff#2 reg byte y 20002.0
(byte) findcol::diff#3 reg byte y 20002.0
(byte) findcol::diff#4 reg byte y 20002.0
(byte) findcol::diff#5 reg byte y 10001.0
(byte) findcol::diff#7 reg byte y 13334.666666666666
(byte) findcol::diff#1 reg byte x 20002.0
(byte) findcol::diff#2 reg byte x 20002.0
(byte) findcol::diff#3 reg byte x 20002.0
(byte) findcol::diff#4 reg byte x 20002.0
(byte) findcol::diff#5 reg byte x 10001.0
(byte) findcol::diff#7 reg byte x 13334.666666666666
(byte) findcol::i
(byte) findcol::i#1 i zp ZP_BYTE:6 10001.0
(byte) findcol::i#10 i zp ZP_BYTE:6 2631.842105263158
(byte) findcol::i#1 reg byte y 10001.0
(byte) findcol::i#10 reg byte y 2631.842105263158
(byte) findcol::mincol
(byte) findcol::mincol#1 reg byte x 20002.0
(byte) findcol::mincol#10 reg byte x 1176.5882352941176
(byte) findcol::mincol#2 reg byte x 10001.0
(byte) findcol::mincol#1 mincol zp ZP_BYTE:7 20002.0
(byte) findcol::mincol#10 mincol zp ZP_BYTE:7 1176.5882352941176
(byte) findcol::mincol#2 mincol zp ZP_BYTE:7 10001.0
(byte) findcol::mindiff
(byte) findcol::mindiff#10 mindiff zp ZP_BYTE:7 1875.1875
(byte) findcol::mindiff#11 reg byte y 10001.0
(byte~) findcol::mindiff#13 mindiff zp ZP_BYTE:7 20002.0
(byte~) findcol::mindiff#15 reg byte y 20002.0
(byte) findcol::mindiff#10 mindiff zp ZP_BYTE:6 1875.1875
(byte) findcol::mindiff#11 reg byte x 10001.0
(byte~) findcol::mindiff#13 mindiff zp ZP_BYTE:6 20002.0
(byte~) findcol::mindiff#15 reg byte x 20002.0
(byte) findcol::return
(byte) findcol::return#0 reg byte a 2002.0
(byte) findcol::return#2 reg byte x 3667.333333333333
(byte) findcol::return#2 return zp ZP_BYTE:7 3667.333333333333
(byte) findcol::x
(byte) findcol::x#0 x zp ZP_BYTE:5 1640.2
(byte) findcol::xp
(byte) findcol::xp#0 xp zp ZP_BYTE:8 10001.0
(byte) findcol::xp#0 reg byte x 10001.0
(byte) findcol::y
(byte) findcol::y#0 y zp ZP_BYTE:2 1708.5416666666665
(byte) findcol::yp
(byte) findcol::yp#0 yp zp ZP_BYTE:9 6250.625
(byte) findcol::yp#0 yp zp ZP_BYTE:8 6250.625
(void()) initscreen()
(label) initscreen::@1
(label) initscreen::@return
@ -2504,11 +2502,11 @@ FINAL SYMBOL TABLE
zp ZP_BYTE:2 [ render::y#4 render::y#1 findcol::y#0 ]
zp ZP_WORD:3 [ render::colline#5 render::colline#1 initscreen::screen#2 initscreen::screen#1 ]
zp ZP_BYTE:5 [ render::x#2 render::x#1 findcol::x#0 ]
zp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ]
zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ]
reg byte x [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
reg byte y [ findcol::diff#5 findcol::diff#2 findcol::diff#1 ]
reg byte y [ findcol::mindiff#11 findcol::diff#7 findcol::diff#4 findcol::diff#3 findcol::mindiff#15 ]
reg byte y [ findcol::i#10 findcol::i#1 ]
zp ZP_BYTE:6 [ findcol::mindiff#10 findcol::mindiff#13 ]
zp ZP_BYTE:7 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
reg byte x [ findcol::diff#5 findcol::diff#2 findcol::diff#1 ]
reg byte x [ findcol::mindiff#11 findcol::diff#7 findcol::diff#4 findcol::diff#3 findcol::mindiff#15 ]
reg byte x [ animate::$0 ]
reg byte x [ animate::$3 ]
reg byte a [ animate::$6 ]
@ -2518,14 +2516,14 @@ reg byte a [ animate::$15 ]
reg byte a [ animate::$18 ]
reg byte a [ findcol::return#0 ]
reg byte a [ render::col#0 ]
zp ZP_BYTE:8 [ findcol::xp#0 ]
zp ZP_BYTE:9 [ findcol::yp#0 ]
reg byte x [ findcol::xp#0 ]
zp ZP_BYTE:8 [ findcol::yp#0 ]
reg byte a [ findcol::$8 ]
reg byte a [ findcol::$10 ]
FINAL ASSEMBLER
Score: 1628771
Score: 1504774
//SEG0 File Comments
// The screen
@ -2690,8 +2688,8 @@ render: {
//SEG73 [41] call findcol
//SEG74 [51] phi from render::@2 to findcol [phi:render::@2->findcol]
jsr findcol
//SEG75 [42] (byte) findcol::return#0 ← (byte) findcol::return#2 -- vbuaa=vbuxx
txa
//SEG75 [42] (byte) findcol::return#0 ← (byte) findcol::return#2 -- vbuaa=vbuz1
lda findcol.return
//SEG76 render::@5
//SEG77 [43] (byte) render::col#0 ← (byte) findcol::return#0
//SEG78 [44] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 -- pbuz1_derefidx_vbuz2=vbuaa
@ -2727,31 +2725,28 @@ render: {
findcol: {
.label x = 5
.label y = 2
.label xp = 8
.label yp = 9
.label i = 6
.label mindiff = 7
.label yp = 8
.label return = 7
.label mincol = 7
.label mindiff = 6
//SEG88 [52] phi from findcol to findcol::@1 [phi:findcol->findcol::@1]
//SEG89 [52] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#0] -- vbuxx=vbuc1
ldx #0
//SEG89 [52] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#0] -- vbuz1=vbuc1
lda #0
sta mincol
//SEG90 [52] phi (byte) findcol::mindiff#10 = (byte/word/signed word/dword/signed dword) $ff [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1
lda #$ff
sta mindiff
//SEG91 [52] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#2] -- vbuz1=vbuc1
txa
sta i
//SEG91 [52] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#2] -- vbuyy=vbuc1
ldy #0
//SEG92 findcol::@1
b1:
//SEG93 [53] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2
ldy i
lda XPOS,y
sta xp
//SEG94 [54] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2
//SEG93 [53] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) -- vbuxx=pbuc1_derefidx_vbuyy
ldx XPOS,y
//SEG94 [54] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuyy
lda YPOS,y
sta yp
//SEG95 [55] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1
lda x
cmp xp
//SEG95 [55] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 -- vbuz1_neq_vbuxx_then_la1
cpx x
bne b2
//SEG96 findcol::@9
//SEG97 [56] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1
@ -2759,23 +2754,28 @@ findcol: {
cmp yp
bne b2
//SEG98 [57] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return]
//SEG99 [57] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol::@9->findcol::@return#0] -- vbuxx=vbuc1
ldx #0
//SEG99 [57] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol::@9->findcol::@return#0] -- vbuz1=vbuc1
lda #0
sta return
//SEG100 findcol::@return
breturn:
//SEG101 [58] return
rts
//SEG102 findcol::@2
b2:
//SEG103 [59] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@4 -- vbuz1_lt_vbuz2_then_la1
lda x
cmp xp
bcc b4
//SEG103 [59] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@4 -- vbuz1_lt_vbuxx_then_la1
txa
cmp x
beq !+
bcs b4
!:
//SEG104 findcol::@12
//SEG105 [60] (byte) findcol::diff#2 ← (byte) findcol::x#0 - (byte) findcol::xp#0 -- vbuyy=vbuz1_minus_vbuz2
//SEG105 [60] (byte) findcol::diff#2 ← (byte) findcol::x#0 - (byte) findcol::xp#0 -- vbuxx=vbuz1_minus_vbuxx
txa
eor #$ff
sec
sbc xp
tay
adc x
tax
//SEG106 [61] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5]
//SEG107 [61] phi (byte) findcol::diff#5 = (byte) findcol::diff#2 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy
//SEG108 findcol::@5
@ -2788,41 +2788,39 @@ findcol: {
//SEG111 [63] (byte~) findcol::$8 ← (byte) findcol::y#0 - (byte) findcol::yp#0 -- vbuaa=vbuz1_minus_vbuz2
sec
sbc yp
//SEG112 [64] (byte) findcol::diff#4 ← (byte) findcol::diff#5 + (byte~) findcol::$8 -- vbuyy=vbuyy_plus_vbuaa
sty $ff
//SEG112 [64] (byte) findcol::diff#4 ← (byte) findcol::diff#5 + (byte~) findcol::$8 -- vbuxx=vbuxx_plus_vbuaa
stx $ff
clc
adc $ff
tay
tax
//SEG113 [65] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7]
//SEG114 [65] phi (byte) findcol::diff#7 = (byte) findcol::diff#4 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy
//SEG115 findcol::@7
b7:
//SEG116 [66] if((byte) findcol::diff#7>=(byte) findcol::mindiff#10) goto findcol::@21 -- vbuyy_ge_vbuz1_then_la1
cpy mindiff
//SEG116 [66] if((byte) findcol::diff#7>=(byte) findcol::mindiff#10) goto findcol::@21 -- vbuxx_ge_vbuz1_then_la1
cpx mindiff
bcs b21
//SEG117 findcol::@16
//SEG118 [67] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) -- vbuxx=pbuc1_derefidx_vbuz1
ldx i
lda COLS,x
tax
//SEG118 [67] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuyy
lda COLS,y
sta mincol
//SEG119 [68] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8]
//SEG120 [68] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#7 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy
//SEG121 [68] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy
//SEG122 findcol::@8
b8:
//SEG123 [69] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 -- vbuz1=_inc_vbuz1
inc i
//SEG124 [70] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 -- vbuz1_lt_vbuc1_then_la1
lda i
cmp #numpoints
//SEG123 [69] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 -- vbuyy=_inc_vbuyy
iny
//SEG124 [70] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 -- vbuyy_lt_vbuc1_then_la1
cpy #numpoints
bcc b19
//SEG125 [57] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return]
//SEG126 [57] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy
jmp breturn
//SEG127 findcol::@19
b19:
//SEG128 [71] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 -- vbuz1=vbuyy
sty mindiff
//SEG128 [71] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 -- vbuz1=vbuxx
stx mindiff
//SEG129 [52] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1]
//SEG130 [52] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy
//SEG131 [52] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy
@ -2830,8 +2828,8 @@ findcol: {
jmp b1
//SEG133 findcol::@21
b21:
//SEG134 [72] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 -- vbuyy=vbuz1
ldy mindiff
//SEG134 [72] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 -- vbuxx=vbuz1
ldx mindiff
jmp b8
//SEG135 findcol::@6
b6:
@ -2839,19 +2837,19 @@ findcol: {
lda yp
sec
sbc y
//SEG137 [74] (byte) findcol::diff#3 ← (byte) findcol::diff#5 + (byte~) findcol::$10 -- vbuyy=vbuyy_plus_vbuaa
sty $ff
//SEG137 [74] (byte) findcol::diff#3 ← (byte) findcol::diff#5 + (byte~) findcol::$10 -- vbuxx=vbuxx_plus_vbuaa
stx $ff
clc
adc $ff
tay
tax
jmp b7
//SEG138 findcol::@4
b4:
//SEG139 [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 -- vbuyy=vbuz1_minus_vbuz2
lda xp
//SEG139 [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 -- vbuxx=vbuxx_minus_vbuz1
txa
sec
sbc x
tay
tax
jmp b5
}
//SEG140 initscreen

View File

@ -50,35 +50,35 @@
(label) findcol::@9
(label) findcol::@return
(byte) findcol::diff
(byte) findcol::diff#1 reg byte y 20002.0
(byte) findcol::diff#2 reg byte y 20002.0
(byte) findcol::diff#3 reg byte y 20002.0
(byte) findcol::diff#4 reg byte y 20002.0
(byte) findcol::diff#5 reg byte y 10001.0
(byte) findcol::diff#7 reg byte y 13334.666666666666
(byte) findcol::diff#1 reg byte x 20002.0
(byte) findcol::diff#2 reg byte x 20002.0
(byte) findcol::diff#3 reg byte x 20002.0
(byte) findcol::diff#4 reg byte x 20002.0
(byte) findcol::diff#5 reg byte x 10001.0
(byte) findcol::diff#7 reg byte x 13334.666666666666
(byte) findcol::i
(byte) findcol::i#1 i zp ZP_BYTE:6 10001.0
(byte) findcol::i#10 i zp ZP_BYTE:6 2631.842105263158
(byte) findcol::i#1 reg byte y 10001.0
(byte) findcol::i#10 reg byte y 2631.842105263158
(byte) findcol::mincol
(byte) findcol::mincol#1 reg byte x 20002.0
(byte) findcol::mincol#10 reg byte x 1176.5882352941176
(byte) findcol::mincol#2 reg byte x 10001.0
(byte) findcol::mincol#1 mincol zp ZP_BYTE:7 20002.0
(byte) findcol::mincol#10 mincol zp ZP_BYTE:7 1176.5882352941176
(byte) findcol::mincol#2 mincol zp ZP_BYTE:7 10001.0
(byte) findcol::mindiff
(byte) findcol::mindiff#10 mindiff zp ZP_BYTE:7 1875.1875
(byte) findcol::mindiff#11 reg byte y 10001.0
(byte~) findcol::mindiff#13 mindiff zp ZP_BYTE:7 20002.0
(byte~) findcol::mindiff#15 reg byte y 20002.0
(byte) findcol::mindiff#10 mindiff zp ZP_BYTE:6 1875.1875
(byte) findcol::mindiff#11 reg byte x 10001.0
(byte~) findcol::mindiff#13 mindiff zp ZP_BYTE:6 20002.0
(byte~) findcol::mindiff#15 reg byte x 20002.0
(byte) findcol::return
(byte) findcol::return#0 reg byte a 2002.0
(byte) findcol::return#2 reg byte x 3667.333333333333
(byte) findcol::return#2 return zp ZP_BYTE:7 3667.333333333333
(byte) findcol::x
(byte) findcol::x#0 x zp ZP_BYTE:5 1640.2
(byte) findcol::xp
(byte) findcol::xp#0 xp zp ZP_BYTE:8 10001.0
(byte) findcol::xp#0 reg byte x 10001.0
(byte) findcol::y
(byte) findcol::y#0 y zp ZP_BYTE:2 1708.5416666666665
(byte) findcol::yp
(byte) findcol::yp#0 yp zp ZP_BYTE:9 6250.625
(byte) findcol::yp#0 yp zp ZP_BYTE:8 6250.625
(void()) initscreen()
(label) initscreen::@1
(label) initscreen::@return
@ -111,11 +111,11 @@
zp ZP_BYTE:2 [ render::y#4 render::y#1 findcol::y#0 ]
zp ZP_WORD:3 [ render::colline#5 render::colline#1 initscreen::screen#2 initscreen::screen#1 ]
zp ZP_BYTE:5 [ render::x#2 render::x#1 findcol::x#0 ]
zp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ]
zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ]
reg byte x [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
reg byte y [ findcol::diff#5 findcol::diff#2 findcol::diff#1 ]
reg byte y [ findcol::mindiff#11 findcol::diff#7 findcol::diff#4 findcol::diff#3 findcol::mindiff#15 ]
reg byte y [ findcol::i#10 findcol::i#1 ]
zp ZP_BYTE:6 [ findcol::mindiff#10 findcol::mindiff#13 ]
zp ZP_BYTE:7 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
reg byte x [ findcol::diff#5 findcol::diff#2 findcol::diff#1 ]
reg byte x [ findcol::mindiff#11 findcol::diff#7 findcol::diff#4 findcol::diff#3 findcol::mindiff#15 ]
reg byte x [ animate::$0 ]
reg byte x [ animate::$3 ]
reg byte a [ animate::$6 ]
@ -125,7 +125,7 @@ reg byte a [ animate::$15 ]
reg byte a [ animate::$18 ]
reg byte a [ findcol::return#0 ]
reg byte a [ render::col#0 ]
zp ZP_BYTE:8 [ findcol::xp#0 ]
zp ZP_BYTE:9 [ findcol::yp#0 ]
reg byte x [ findcol::xp#0 ]
zp ZP_BYTE:8 [ findcol::yp#0 ]
reg byte a [ findcol::$8 ]
reg byte a [ findcol::$10 ]