1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-03 07:29:37 +00:00
kickc/src/test/ref/complex/tetris/tetris.log
2020-12-30 01:55:04 +01:00

20975 lines
1.7 MiB

Resolved forward reference next_piece_idx to next_piece_idx
Resolved forward reference next_piece_idx to next_piece_idx
Resolved forward reference sprites_irq to __interrupt(hardware_clobber) void sprites_irq()
Resolved forward reference COLLISION_NONE to COLLISION_NONE
Resolved forward reference COLLISION_NONE to COLLISION_NONE
Resolved forward reference COLLISION_NONE to COLLISION_NONE
Resolved forward reference COLLISION_NONE to COLLISION_NONE
Setting inferred volatile on symbol affected by address-of render_score::score_bytes = (byte*)&score_bcd
Inlined call vicSelectGfxBank::$0 = call toDd00 vicSelectGfxBank::gfx
Inlined call __init::$0 = call toSpritePtr PLAYFIELD_SPRITES
Inlined call call vicSelectGfxBank PLAYFIELD_CHARSET
Inlined call render_show::$2 = call toD018 PLAYFIELD_SCREEN_1 PLAYFIELD_CHARSET
Inlined call render_show::$1 = call toD018 PLAYFIELD_SCREEN_2 PLAYFIELD_CHARSET
Inlined call sprites_irq::$5 = call toSpritePtr PLAYFIELD_SPRITES
Inlined call play_spawn_current::$5 = call sid_rnd
Inlined call call sid_rnd_init
Inlined call call __init
CONTROL FLOW GRAPH SSA
byte keyboard_matrix_read(byte keyboard_matrix_read::rowid)
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@7
keyboard_matrix_read::rowid#1 = phi( keyboard_event_scan::@7/keyboard_matrix_read::rowid#0 )
*((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = keyboard_matrix_row_bitmask[keyboard_matrix_read::rowid#1]
keyboard_matrix_read::$0 = ~ *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_B)
keyboard_matrix_read::row_pressed_bits#0 = keyboard_matrix_read::$0
keyboard_matrix_read::return#0 = keyboard_matrix_read::row_pressed_bits#0
to:keyboard_matrix_read::@return
keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read
keyboard_matrix_read::return#3 = phi( keyboard_matrix_read/keyboard_matrix_read::return#0 )
keyboard_matrix_read::return#1 = keyboard_matrix_read::return#3
return
to:@return
void keyboard_event_scan()
keyboard_event_scan: scope:[keyboard_event_scan] from main::@19
keyboard_events_size#55 = phi( main::@19/keyboard_events_size#28 )
keyboard_event_scan::keycode#0 = 0
keyboard_event_scan::row#0 = 0
to:keyboard_event_scan::@7
keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@9
keyboard_events_size#48 = phi( keyboard_event_scan/keyboard_events_size#55, keyboard_event_scan::@9/keyboard_events_size#56 )
keyboard_event_scan::keycode#11 = phi( keyboard_event_scan/keyboard_event_scan::keycode#0, keyboard_event_scan::@9/keyboard_event_scan::keycode#13 )
keyboard_event_scan::row#2 = phi( keyboard_event_scan/keyboard_event_scan::row#0, keyboard_event_scan::@9/keyboard_event_scan::row#1 )
keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2
call keyboard_matrix_read
keyboard_matrix_read::return#2 = keyboard_matrix_read::return#1
to:keyboard_event_scan::@20
keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@7
keyboard_events_size#39 = phi( keyboard_event_scan::@7/keyboard_events_size#48 )
keyboard_event_scan::keycode#7 = phi( keyboard_event_scan::@7/keyboard_event_scan::keycode#11 )
keyboard_event_scan::row#3 = phi( keyboard_event_scan::@7/keyboard_event_scan::row#2 )
keyboard_matrix_read::return#4 = phi( keyboard_event_scan::@7/keyboard_matrix_read::return#2 )
keyboard_event_scan::$12 = keyboard_matrix_read::return#4
keyboard_event_scan::row_scan#0 = keyboard_event_scan::$12
keyboard_event_scan::$13 = keyboard_event_scan::row_scan#0 != keyboard_scan_values[keyboard_event_scan::row#3]
if(keyboard_event_scan::$13) goto keyboard_event_scan::@8
to:keyboard_event_scan::@17
keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@20
keyboard_events_size#32 = phi( keyboard_event_scan::@20/keyboard_events_size#39 )
keyboard_event_scan::keycode#12 = phi( keyboard_event_scan::@20/keyboard_event_scan::keycode#7 )
keyboard_event_scan::row#9 = phi( keyboard_event_scan::@20/keyboard_event_scan::row#3 )
keyboard_event_scan::row_scan#5 = phi( keyboard_event_scan::@20/keyboard_event_scan::row_scan#0 )
keyboard_event_scan::col#0 = 0
to:keyboard_event_scan::@10
keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@20
keyboard_events_size#62 = phi( keyboard_event_scan::@20/keyboard_events_size#39 )
keyboard_event_scan::row#7 = phi( keyboard_event_scan::@20/keyboard_event_scan::row#3 )
keyboard_event_scan::keycode#3 = phi( keyboard_event_scan::@20/keyboard_event_scan::keycode#7 )
keyboard_event_scan::$14 = keyboard_event_scan::keycode#3 + 8
keyboard_event_scan::keycode#1 = keyboard_event_scan::$14
to:keyboard_event_scan::@9
keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@16 keyboard_event_scan::@17
keyboard_events_size#56 = phi( keyboard_event_scan::@16/keyboard_events_size#61, keyboard_event_scan::@17/keyboard_events_size#62 )
keyboard_event_scan::keycode#13 = phi( keyboard_event_scan::@16/keyboard_event_scan::keycode#14, keyboard_event_scan::@17/keyboard_event_scan::keycode#1 )
keyboard_event_scan::row#4 = phi( keyboard_event_scan::@16/keyboard_event_scan::row#6, keyboard_event_scan::@17/keyboard_event_scan::row#7 )
keyboard_event_scan::row#1 = keyboard_event_scan::row#4 + rangenext(0,7)
keyboard_event_scan::$25 = keyboard_event_scan::row#1 != rangelast(0,7)
if(keyboard_event_scan::$25) goto keyboard_event_scan::@7
to:keyboard_event_scan::@18
keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@8
keyboard_events_size#23 = phi( keyboard_event_scan::@11/keyboard_events_size#31, keyboard_event_scan::@8/keyboard_events_size#32 )
keyboard_event_scan::keycode#8 = phi( keyboard_event_scan::@11/keyboard_event_scan::keycode#2, keyboard_event_scan::@8/keyboard_event_scan::keycode#12 )
keyboard_event_scan::col#2 = phi( keyboard_event_scan::@11/keyboard_event_scan::col#1, keyboard_event_scan::@8/keyboard_event_scan::col#0 )
keyboard_event_scan::row#5 = phi( keyboard_event_scan::@11/keyboard_event_scan::row#8, keyboard_event_scan::@8/keyboard_event_scan::row#9 )
keyboard_event_scan::row_scan#1 = phi( keyboard_event_scan::@11/keyboard_event_scan::row_scan#4, keyboard_event_scan::@8/keyboard_event_scan::row_scan#5 )
keyboard_event_scan::$15 = keyboard_event_scan::row_scan#1 ^ keyboard_scan_values[keyboard_event_scan::row#5]
keyboard_event_scan::$16 = keyboard_event_scan::$15 & keyboard_matrix_col_bitmask[keyboard_event_scan::col#2]
keyboard_event_scan::$17 = keyboard_event_scan::$16 != 0
keyboard_event_scan::$18 = ! keyboard_event_scan::$17
if(keyboard_event_scan::$18) goto keyboard_event_scan::@11
to:keyboard_event_scan::@13
keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@12 keyboard_event_scan::@13 keyboard_event_scan::@15
keyboard_events_size#31 = phi( keyboard_event_scan::@10/keyboard_events_size#23, keyboard_event_scan::@12/keyboard_events_size#0, keyboard_event_scan::@13/keyboard_events_size#11, keyboard_event_scan::@15/keyboard_events_size#1 )
keyboard_event_scan::row#8 = phi( keyboard_event_scan::@10/keyboard_event_scan::row#5, keyboard_event_scan::@12/keyboard_event_scan::row#10, keyboard_event_scan::@13/keyboard_event_scan::row#11, keyboard_event_scan::@15/keyboard_event_scan::row#12 )
keyboard_event_scan::row_scan#4 = phi( keyboard_event_scan::@10/keyboard_event_scan::row_scan#1, keyboard_event_scan::@12/keyboard_event_scan::row_scan#7, keyboard_event_scan::@13/keyboard_event_scan::row_scan#6, keyboard_event_scan::@15/keyboard_event_scan::row_scan#8 )
keyboard_event_scan::col#3 = phi( keyboard_event_scan::@10/keyboard_event_scan::col#2, keyboard_event_scan::@12/keyboard_event_scan::col#5, keyboard_event_scan::@13/keyboard_event_scan::col#6, keyboard_event_scan::@15/keyboard_event_scan::col#7 )
keyboard_event_scan::keycode#4 = phi( keyboard_event_scan::@10/keyboard_event_scan::keycode#8, keyboard_event_scan::@12/keyboard_event_scan::keycode#5, keyboard_event_scan::@13/keyboard_event_scan::keycode#9, keyboard_event_scan::@15/keyboard_event_scan::keycode#6 )
keyboard_event_scan::keycode#2 = ++ keyboard_event_scan::keycode#4
keyboard_event_scan::col#1 = keyboard_event_scan::col#3 + rangenext(0,7)
keyboard_event_scan::$24 = keyboard_event_scan::col#1 != rangelast(0,7)
if(keyboard_event_scan::$24) goto keyboard_event_scan::@10
to:keyboard_event_scan::@16
keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@10
keyboard_event_scan::row#11 = phi( keyboard_event_scan::@10/keyboard_event_scan::row#5 )
keyboard_event_scan::row_scan#6 = phi( keyboard_event_scan::@10/keyboard_event_scan::row_scan#1 )
keyboard_event_scan::col#6 = phi( keyboard_event_scan::@10/keyboard_event_scan::col#2 )
keyboard_event_scan::keycode#9 = phi( keyboard_event_scan::@10/keyboard_event_scan::keycode#8 )
keyboard_events_size#11 = phi( keyboard_event_scan::@10/keyboard_events_size#23 )
keyboard_event_scan::$19 = keyboard_events_size#11 != 8
keyboard_event_scan::$20 = ! keyboard_event_scan::$19
if(keyboard_event_scan::$20) goto keyboard_event_scan::@11
to:keyboard_event_scan::@14
keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@13
keyboard_event_scan::row#13 = phi( keyboard_event_scan::@13/keyboard_event_scan::row#11 )
keyboard_events_size#24 = phi( keyboard_event_scan::@13/keyboard_events_size#11 )
keyboard_event_scan::keycode#10 = phi( keyboard_event_scan::@13/keyboard_event_scan::keycode#9 )
keyboard_event_scan::col#4 = phi( keyboard_event_scan::@13/keyboard_event_scan::col#6 )
keyboard_event_scan::row_scan#2 = phi( keyboard_event_scan::@13/keyboard_event_scan::row_scan#6 )
keyboard_event_scan::$21 = keyboard_event_scan::row_scan#2 & keyboard_matrix_col_bitmask[keyboard_event_scan::col#4]
keyboard_event_scan::event_type#0 = keyboard_event_scan::$21
keyboard_event_scan::$22 = keyboard_event_scan::event_type#0 == 0
if(keyboard_event_scan::$22) goto keyboard_event_scan::@12
to:keyboard_event_scan::@15
keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@14
keyboard_event_scan::row#10 = phi( keyboard_event_scan::@14/keyboard_event_scan::row#13 )
keyboard_event_scan::row_scan#7 = phi( keyboard_event_scan::@14/keyboard_event_scan::row_scan#2 )
keyboard_event_scan::col#5 = phi( keyboard_event_scan::@14/keyboard_event_scan::col#4 )
keyboard_events_size#12 = phi( keyboard_event_scan::@14/keyboard_events_size#24 )
keyboard_event_scan::keycode#5 = phi( keyboard_event_scan::@14/keyboard_event_scan::keycode#10 )
keyboard_event_scan::$23 = keyboard_event_scan::keycode#5 | $40
keyboard_events[keyboard_events_size#12] = keyboard_event_scan::$23
keyboard_events_size#0 = ++ keyboard_events_size#12
to:keyboard_event_scan::@11
keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@14
keyboard_event_scan::row#12 = phi( keyboard_event_scan::@14/keyboard_event_scan::row#13 )
keyboard_event_scan::row_scan#8 = phi( keyboard_event_scan::@14/keyboard_event_scan::row_scan#2 )
keyboard_event_scan::col#7 = phi( keyboard_event_scan::@14/keyboard_event_scan::col#4 )
keyboard_events_size#13 = phi( keyboard_event_scan::@14/keyboard_events_size#24 )
keyboard_event_scan::keycode#6 = phi( keyboard_event_scan::@14/keyboard_event_scan::keycode#10 )
keyboard_events[keyboard_events_size#13] = keyboard_event_scan::keycode#6
keyboard_events_size#1 = ++ keyboard_events_size#13
to:keyboard_event_scan::@11
keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@11
keyboard_events_size#61 = phi( keyboard_event_scan::@11/keyboard_events_size#31 )
keyboard_event_scan::keycode#14 = phi( keyboard_event_scan::@11/keyboard_event_scan::keycode#2 )
keyboard_event_scan::row#6 = phi( keyboard_event_scan::@11/keyboard_event_scan::row#8 )
keyboard_event_scan::row_scan#3 = phi( keyboard_event_scan::@11/keyboard_event_scan::row_scan#4 )
keyboard_scan_values[keyboard_event_scan::row#6] = keyboard_event_scan::row_scan#3
to:keyboard_event_scan::@9
keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@9
keyboard_events_size#70 = phi( keyboard_event_scan::@9/keyboard_events_size#56 )
keyboard_modifiers#0 = 0
keyboard_event_pressed::keycode#0 = KEY_LSHIFT
call keyboard_event_pressed
keyboard_event_pressed::return#0 = keyboard_event_pressed::return#5
to:keyboard_event_scan::@21
keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@18
keyboard_events_size#67 = phi( keyboard_event_scan::@18/keyboard_events_size#70 )
keyboard_modifiers#20 = phi( keyboard_event_scan::@18/keyboard_modifiers#0 )
keyboard_event_pressed::return#7 = phi( keyboard_event_scan::@18/keyboard_event_pressed::return#0 )
keyboard_event_scan::$0 = keyboard_event_pressed::return#7
keyboard_event_scan::$1 = keyboard_event_scan::$0 != 0
keyboard_event_scan::$2 = ! keyboard_event_scan::$1
if(keyboard_event_scan::$2) goto keyboard_event_scan::@1
to:keyboard_event_scan::@19
keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan::@19 keyboard_event_scan::@21
keyboard_events_size#63 = phi( keyboard_event_scan::@19/keyboard_events_size#66, keyboard_event_scan::@21/keyboard_events_size#67 )
keyboard_modifiers#27 = phi( keyboard_event_scan::@19/keyboard_modifiers#1, keyboard_event_scan::@21/keyboard_modifiers#20 )
keyboard_event_pressed::keycode#1 = KEY_RSHIFT
call keyboard_event_pressed
keyboard_event_pressed::return#1 = keyboard_event_pressed::return#5
to:keyboard_event_scan::@22
keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@1
keyboard_events_size#57 = phi( keyboard_event_scan::@1/keyboard_events_size#63 )
keyboard_modifiers#21 = phi( keyboard_event_scan::@1/keyboard_modifiers#27 )
keyboard_event_pressed::return#8 = phi( keyboard_event_scan::@1/keyboard_event_pressed::return#1 )
keyboard_event_scan::$3 = keyboard_event_pressed::return#8
keyboard_event_scan::$4 = keyboard_event_scan::$3 != 0
keyboard_event_scan::$5 = ! keyboard_event_scan::$4
if(keyboard_event_scan::$5) goto keyboard_event_scan::@2
to:keyboard_event_scan::@4
keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@21
keyboard_events_size#66 = phi( keyboard_event_scan::@21/keyboard_events_size#67 )
keyboard_modifiers#11 = phi( keyboard_event_scan::@21/keyboard_modifiers#20 )
keyboard_event_scan::$26 = keyboard_modifiers#11 | KEY_MODIFIER_LSHIFT
keyboard_modifiers#1 = keyboard_event_scan::$26
to:keyboard_event_scan::@1
keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@4
keyboard_events_size#49 = phi( keyboard_event_scan::@22/keyboard_events_size#57, keyboard_event_scan::@4/keyboard_events_size#58 )
keyboard_modifiers#28 = phi( keyboard_event_scan::@22/keyboard_modifiers#21, keyboard_event_scan::@4/keyboard_modifiers#2 )
keyboard_event_pressed::keycode#2 = KEY_CTRL
call keyboard_event_pressed
keyboard_event_pressed::return#2 = keyboard_event_pressed::return#5
to:keyboard_event_scan::@23
keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@2
keyboard_events_size#40 = phi( keyboard_event_scan::@2/keyboard_events_size#49 )
keyboard_modifiers#22 = phi( keyboard_event_scan::@2/keyboard_modifiers#28 )
keyboard_event_pressed::return#9 = phi( keyboard_event_scan::@2/keyboard_event_pressed::return#2 )
keyboard_event_scan::$6 = keyboard_event_pressed::return#9
keyboard_event_scan::$7 = keyboard_event_scan::$6 != 0
keyboard_event_scan::$8 = ! keyboard_event_scan::$7
if(keyboard_event_scan::$8) goto keyboard_event_scan::@3
to:keyboard_event_scan::@5
keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@22
keyboard_events_size#58 = phi( keyboard_event_scan::@22/keyboard_events_size#57 )
keyboard_modifiers#12 = phi( keyboard_event_scan::@22/keyboard_modifiers#21 )
keyboard_event_scan::$27 = keyboard_modifiers#12 | KEY_MODIFIER_RSHIFT
keyboard_modifiers#2 = keyboard_event_scan::$27
to:keyboard_event_scan::@2
keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@5
keyboard_events_size#33 = phi( keyboard_event_scan::@23/keyboard_events_size#40, keyboard_event_scan::@5/keyboard_events_size#41 )
keyboard_modifiers#29 = phi( keyboard_event_scan::@23/keyboard_modifiers#22, keyboard_event_scan::@5/keyboard_modifiers#3 )
keyboard_event_pressed::keycode#3 = KEY_COMMODORE
call keyboard_event_pressed
keyboard_event_pressed::return#3 = keyboard_event_pressed::return#5
to:keyboard_event_scan::@24
keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@3
keyboard_events_size#25 = phi( keyboard_event_scan::@3/keyboard_events_size#33 )
keyboard_modifiers#23 = phi( keyboard_event_scan::@3/keyboard_modifiers#29 )
keyboard_event_pressed::return#10 = phi( keyboard_event_scan::@3/keyboard_event_pressed::return#3 )
keyboard_event_scan::$9 = keyboard_event_pressed::return#10
keyboard_event_scan::$10 = keyboard_event_scan::$9 != 0
keyboard_event_scan::$11 = ! keyboard_event_scan::$10
if(keyboard_event_scan::$11) goto keyboard_event_scan::@return
to:keyboard_event_scan::@6
keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@23
keyboard_events_size#41 = phi( keyboard_event_scan::@23/keyboard_events_size#40 )
keyboard_modifiers#13 = phi( keyboard_event_scan::@23/keyboard_modifiers#22 )
keyboard_event_scan::$28 = keyboard_modifiers#13 | KEY_MODIFIER_CTRL
keyboard_modifiers#3 = keyboard_event_scan::$28
to:keyboard_event_scan::@3
keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@24
keyboard_events_size#26 = phi( keyboard_event_scan::@24/keyboard_events_size#25 )
keyboard_modifiers#14 = phi( keyboard_event_scan::@24/keyboard_modifiers#23 )
keyboard_event_scan::$29 = keyboard_modifiers#14 | KEY_MODIFIER_COMMODORE
keyboard_modifiers#4 = keyboard_event_scan::$29
to:keyboard_event_scan::@return
keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@6
keyboard_modifiers#15 = phi( keyboard_event_scan::@24/keyboard_modifiers#23, keyboard_event_scan::@6/keyboard_modifiers#4 )
keyboard_events_size#14 = phi( keyboard_event_scan::@24/keyboard_events_size#25, keyboard_event_scan::@6/keyboard_events_size#26 )
keyboard_events_size#2 = keyboard_events_size#14
keyboard_modifiers#5 = keyboard_modifiers#15
return
to:@return
byte keyboard_event_pressed(byte keyboard_event_pressed::keycode)
keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@1 keyboard_event_scan::@18 keyboard_event_scan::@2 keyboard_event_scan::@3 play_move_down::@1
keyboard_event_pressed::keycode#5 = phi( keyboard_event_scan::@1/keyboard_event_pressed::keycode#1, keyboard_event_scan::@18/keyboard_event_pressed::keycode#0, keyboard_event_scan::@2/keyboard_event_pressed::keycode#2, keyboard_event_scan::@3/keyboard_event_pressed::keycode#3, play_move_down::@1/keyboard_event_pressed::keycode#4 )
keyboard_event_pressed::$0 = keyboard_event_pressed::keycode#5 >> 3
keyboard_event_pressed::row_bits#0 = keyboard_scan_values[keyboard_event_pressed::$0]
keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#5 & 7
keyboard_event_pressed::$2 = keyboard_event_pressed::row_bits#0 & keyboard_matrix_col_bitmask[keyboard_event_pressed::$1]
keyboard_event_pressed::return#4 = keyboard_event_pressed::$2
to:keyboard_event_pressed::@return
keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed
keyboard_event_pressed::return#11 = phi( keyboard_event_pressed/keyboard_event_pressed::return#4 )
keyboard_event_pressed::return#5 = keyboard_event_pressed::return#11
return
to:@return
byte keyboard_event_get()
keyboard_event_get: scope:[keyboard_event_get] from main::@20
keyboard_events_size#15 = phi( main::@20/keyboard_events_size#5 )
keyboard_event_get::$0 = keyboard_events_size#15 == 0
if(keyboard_event_get::$0) goto keyboard_event_get::@1
to:keyboard_event_get::@2
keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get
keyboard_events_size#27 = phi( keyboard_event_get/keyboard_events_size#15 )
keyboard_event_get::return#0 = $ff
to:keyboard_event_get::@return
keyboard_event_get::@2: scope:[keyboard_event_get] from keyboard_event_get
keyboard_events_size#16 = phi( keyboard_event_get/keyboard_events_size#15 )
keyboard_events_size#3 = -- keyboard_events_size#16
keyboard_event_get::return#1 = keyboard_events[keyboard_events_size#3]
to:keyboard_event_get::@return
keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get::@1 keyboard_event_get::@2
keyboard_events_size#17 = phi( keyboard_event_get::@1/keyboard_events_size#27, keyboard_event_get::@2/keyboard_events_size#3 )
keyboard_event_get::return#4 = phi( keyboard_event_get::@1/keyboard_event_get::return#0, keyboard_event_get::@2/keyboard_event_get::return#1 )
keyboard_event_get::return#2 = keyboard_event_get::return#4
keyboard_events_size#4 = keyboard_events_size#17
return
to:@return
void render_init()
render_init: scope:[render_init] from main::@9
render_init::vicSelectGfxBank1_gfx#0 = PLAYFIELD_CHARSET
to:render_init::vicSelectGfxBank1
render_init::vicSelectGfxBank1: scope:[render_init] from render_init
render_init::vicSelectGfxBank1_gfx#1 = phi( render_init/render_init::vicSelectGfxBank1_gfx#0 )
*((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
render_init::vicSelectGfxBank1_toDd001_gfx#0 = render_init::vicSelectGfxBank1_gfx#1
to:render_init::vicSelectGfxBank1_toDd001
render_init::vicSelectGfxBank1_toDd001: scope:[render_init] from render_init::vicSelectGfxBank1
render_init::vicSelectGfxBank1_toDd001_gfx#1 = phi( render_init::vicSelectGfxBank1/render_init::vicSelectGfxBank1_toDd001_gfx#0 )
render_init::vicSelectGfxBank1_toDd001_$0 = > (word)render_init::vicSelectGfxBank1_toDd001_gfx#1
render_init::vicSelectGfxBank1_toDd001_$1 = render_init::vicSelectGfxBank1_toDd001_$0 / $40
render_init::vicSelectGfxBank1_toDd001_$2 = 3 ^ render_init::vicSelectGfxBank1_toDd001_$1
render_init::vicSelectGfxBank1_toDd001_return#0 = render_init::vicSelectGfxBank1_toDd001_$2
to:render_init::vicSelectGfxBank1_toDd001_@return
render_init::vicSelectGfxBank1_toDd001_@return: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001
render_init::vicSelectGfxBank1_toDd001_return#2 = phi( render_init::vicSelectGfxBank1_toDd001/render_init::vicSelectGfxBank1_toDd001_return#0 )
render_init::vicSelectGfxBank1_toDd001_return#1 = render_init::vicSelectGfxBank1_toDd001_return#2
to:render_init::vicSelectGfxBank1_@1
render_init::vicSelectGfxBank1_@1: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001_@return
render_init::vicSelectGfxBank1_toDd001_return#3 = phi( render_init::vicSelectGfxBank1_toDd001_@return/render_init::vicSelectGfxBank1_toDd001_return#1 )
render_init::vicSelectGfxBank1_$0 = render_init::vicSelectGfxBank1_toDd001_return#3
*((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = render_init::vicSelectGfxBank1_$0
to:render_init::@3
render_init::@3: scope:[render_init] from render_init::vicSelectGfxBank1_@1
*D011 = VICII_ECM|VICII_DEN|VICII_RSEL|3
*BORDER_COLOR = BLACK
*BG_COLOR = BLACK
*BG_COLOR1 = PIECES_COLORS_1[0]
*BG_COLOR2 = PIECES_COLORS_2[0]
*BG_COLOR3 = GREY
render_screen_original::screen#0 = PLAYFIELD_SCREEN_1
call render_screen_original
to:render_init::@4
render_init::@4: scope:[render_init] from render_init::@3
render_screen_original::screen#1 = PLAYFIELD_SCREEN_2
call render_screen_original
to:render_init::@5
render_init::@5: scope:[render_init] from render_init::@4
render_init::li_1#0 = PLAYFIELD_SCREEN_1+2*$28+$10
render_init::li_2#0 = PLAYFIELD_SCREEN_2+2*$28+$10
render_init::i#0 = 0
to:render_init::@1
render_init::@1: scope:[render_init] from render_init::@1 render_init::@5
render_init::li_2#2 = phi( render_init::@1/render_init::li_2#1, render_init::@5/render_init::li_2#0 )
render_init::li_1#2 = phi( render_init::@1/render_init::li_1#1, render_init::@5/render_init::li_1#0 )
render_init::i#2 = phi( render_init::@1/render_init::i#1, render_init::@5/render_init::i#0 )
render_init::$4 = render_init::i#2 * SIZEOF_POINTER
screen_lines_1[render_init::$4] = render_init::li_1#2
render_init::$5 = render_init::i#2 * SIZEOF_POINTER
screen_lines_2[render_init::$5] = render_init::li_2#2
render_init::li_1#1 = render_init::li_1#2 + $28
render_init::li_2#1 = render_init::li_2#2 + $28
render_init::i#1 = render_init::i#2 + rangenext(0,PLAYFIELD_LINES-1)
render_init::$3 = render_init::i#1 != rangelast(0,PLAYFIELD_LINES-1)
if(render_init::$3) goto render_init::@1
to:render_init::@2
render_init::@2: scope:[render_init] from render_init::@1
render_screen_show#0 = 0
render_screen_render#0 = $20
to:render_init::@return
render_init::@return: scope:[render_init] from render_init::@2
render_screen_render#10 = phi( render_init::@2/render_screen_render#0 )
render_screen_show#10 = phi( render_init::@2/render_screen_show#0 )
render_screen_show#1 = render_screen_show#10
render_screen_render#1 = render_screen_render#10
return
to:@return
void render_show()
render_show: scope:[render_show] from main::@3
level#86 = phi( main::@3/level#91 )
render_screen_show#11 = phi( main::@3/render_screen_show#20 )
render_show::d018val#0 = 0
render_show::$0 = render_screen_show#11 == 0
if(render_show::$0) goto render_show::@1
to:render_show::@3
render_show::@1: scope:[render_show] from render_show
render_screen_show#43 = phi( render_show/render_screen_show#11 )
level#72 = phi( render_show/level#86 )
render_show::toD0181_screen#0 = PLAYFIELD_SCREEN_1
render_show::toD0181_gfx#0 = PLAYFIELD_CHARSET
to:render_show::toD0181
render_show::toD0181: scope:[render_show] from render_show::@1
render_screen_show#35 = phi( render_show::@1/render_screen_show#43 )
level#58 = phi( render_show::@1/level#72 )
render_show::toD0181_gfx#1 = phi( render_show::@1/render_show::toD0181_gfx#0 )
render_show::toD0181_screen#1 = phi( render_show::@1/render_show::toD0181_screen#0 )
render_show::toD0181_$7 = (word)render_show::toD0181_screen#1
render_show::toD0181_$0 = render_show::toD0181_$7 & $3fff
render_show::toD0181_$1 = render_show::toD0181_$0 * 4
render_show::toD0181_$2 = > render_show::toD0181_$1
render_show::toD0181_$3 = > (word)render_show::toD0181_gfx#1
render_show::toD0181_$4 = render_show::toD0181_$3 / 4
render_show::toD0181_$5 = render_show::toD0181_$4 & $f
render_show::toD0181_$6 = render_show::toD0181_$2 | render_show::toD0181_$5
render_show::toD0181_return#0 = render_show::toD0181_$6
to:render_show::toD0181_@return
render_show::toD0181_@return: scope:[render_show] from render_show::toD0181
render_screen_show#27 = phi( render_show::toD0181/render_screen_show#35 )
level#44 = phi( render_show::toD0181/level#58 )
render_show::toD0181_return#2 = phi( render_show::toD0181/render_show::toD0181_return#0 )
render_show::toD0181_return#1 = render_show::toD0181_return#2
to:render_show::@4
render_show::@4: scope:[render_show] from render_show::toD0181_@return
render_screen_show#21 = phi( render_show::toD0181_@return/render_screen_show#27 )
level#28 = phi( render_show::toD0181_@return/level#44 )
render_show::toD0181_return#3 = phi( render_show::toD0181_@return/render_show::toD0181_return#1 )
render_show::$2 = render_show::toD0181_return#3
render_show::d018val#1 = render_show::$2
to:render_show::@2
render_show::@3: scope:[render_show] from render_show
render_screen_show#44 = phi( render_show/render_screen_show#11 )
level#73 = phi( render_show/level#86 )
render_show::toD0182_screen#0 = PLAYFIELD_SCREEN_2
render_show::toD0182_gfx#0 = PLAYFIELD_CHARSET
to:render_show::toD0182
render_show::toD0182: scope:[render_show] from render_show::@3
render_screen_show#36 = phi( render_show::@3/render_screen_show#44 )
level#59 = phi( render_show::@3/level#73 )
render_show::toD0182_gfx#1 = phi( render_show::@3/render_show::toD0182_gfx#0 )
render_show::toD0182_screen#1 = phi( render_show::@3/render_show::toD0182_screen#0 )
render_show::toD0182_$7 = (word)render_show::toD0182_screen#1
render_show::toD0182_$0 = render_show::toD0182_$7 & $3fff
render_show::toD0182_$1 = render_show::toD0182_$0 * 4
render_show::toD0182_$2 = > render_show::toD0182_$1
render_show::toD0182_$3 = > (word)render_show::toD0182_gfx#1
render_show::toD0182_$4 = render_show::toD0182_$3 / 4
render_show::toD0182_$5 = render_show::toD0182_$4 & $f
render_show::toD0182_$6 = render_show::toD0182_$2 | render_show::toD0182_$5
render_show::toD0182_return#0 = render_show::toD0182_$6
to:render_show::toD0182_@return
render_show::toD0182_@return: scope:[render_show] from render_show::toD0182
render_screen_show#28 = phi( render_show::toD0182/render_screen_show#36 )
level#45 = phi( render_show::toD0182/level#59 )
render_show::toD0182_return#2 = phi( render_show::toD0182/render_show::toD0182_return#0 )
render_show::toD0182_return#1 = render_show::toD0182_return#2
to:render_show::@5
render_show::@5: scope:[render_show] from render_show::toD0182_@return
render_screen_show#22 = phi( render_show::toD0182_@return/render_screen_show#28 )
level#29 = phi( render_show::toD0182_@return/level#45 )
render_show::toD0182_return#3 = phi( render_show::toD0182_@return/render_show::toD0182_return#1 )
render_show::$1 = render_show::toD0182_return#3
render_show::d018val#2 = render_show::$1
to:render_show::@2
render_show::@2: scope:[render_show] from render_show::@4 render_show::@5
render_screen_show#12 = phi( render_show::@4/render_screen_show#21, render_show::@5/render_screen_show#22 )
level#13 = phi( render_show::@4/level#28, render_show::@5/level#29 )
render_show::d018val#3 = phi( render_show::@4/render_show::d018val#1, render_show::@5/render_show::d018val#2 )
*D018 = render_show::d018val#3
*BG_COLOR1 = PIECES_COLORS_1[level#13]
*BG_COLOR2 = PIECES_COLORS_2[level#13]
render_screen_showing = render_screen_show#12
to:render_show::@return
render_show::@return: scope:[render_show] from render_show::@2
return
to:@return
void render_screen_swap()
render_screen_swap: scope:[render_screen_swap] from main::@26
render_screen_show#13 = phi( main::@26/render_screen_show#23 )
render_screen_render#11 = phi( main::@26/render_screen_render#22 )
render_screen_render#2 = render_screen_render#11 ^ $20
render_screen_show#2 = render_screen_show#13 ^ $20
to:render_screen_swap::@return
render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap
render_screen_show#14 = phi( render_screen_swap/render_screen_show#2 )
render_screen_render#12 = phi( render_screen_swap/render_screen_render#2 )
render_screen_render#3 = render_screen_render#12
render_screen_show#3 = render_screen_show#14
return
to:@return
void render_score()
render_score: scope:[render_score] from main::@25
level_bcd#91 = phi( main::@25/level_bcd#77 )
lines_bcd#69 = phi( main::@25/lines_bcd#67 )
render_screen_render#13 = phi( main::@25/render_screen_render#23 )
render_score::screen#0 = (byte*) 0
render_score::$0 = render_screen_render#13 == 0
if(render_score::$0) goto render_score::@1
to:render_score::@3
render_score::@1: scope:[render_score] from render_score
level_bcd#84 = phi( render_score/level_bcd#91 )
lines_bcd#58 = phi( render_score/lines_bcd#69 )
render_score::screen#1 = PLAYFIELD_SCREEN_1
to:render_score::@2
render_score::@3: scope:[render_score] from render_score
level_bcd#85 = phi( render_score/level_bcd#91 )
lines_bcd#59 = phi( render_score/lines_bcd#69 )
render_score::screen#2 = PLAYFIELD_SCREEN_2
to:render_score::@2
render_score::@2: scope:[render_score] from render_score::@1 render_score::@3
level_bcd#79 = phi( render_score::@1/level_bcd#84, render_score::@3/level_bcd#85 )
lines_bcd#47 = phi( render_score::@1/lines_bcd#58, render_score::@3/lines_bcd#59 )
render_score::screen#3 = phi( render_score::@1/render_score::screen#1, render_score::@3/render_score::screen#2 )
render_bcd::screen#0 = render_score::screen#3
render_bcd::offset#0 = render_score::score_offset
render_bcd::bcd#0 = render_score::score_bytes[2]
render_bcd::only_low#0 = 0
call render_bcd
to:render_score::@4
render_score::@4: scope:[render_score] from render_score::@2
level_bcd#69 = phi( render_score::@2/level_bcd#79 )
lines_bcd#35 = phi( render_score::@2/lines_bcd#47 )
render_score::screen#4 = phi( render_score::@2/render_score::screen#3 )
render_score::$2 = render_score::score_offset + 2
render_bcd::screen#1 = render_score::screen#4
render_bcd::offset#1 = render_score::$2
render_bcd::bcd#1 = render_score::score_bytes[1]
render_bcd::only_low#1 = 0
call render_bcd
to:render_score::@5
render_score::@5: scope:[render_score] from render_score::@4
level_bcd#57 = phi( render_score::@4/level_bcd#69 )
lines_bcd#23 = phi( render_score::@4/lines_bcd#35 )
render_score::screen#5 = phi( render_score::@4/render_score::screen#4 )
render_score::$4 = render_score::score_offset + 4
render_bcd::screen#2 = render_score::screen#5
render_bcd::offset#2 = render_score::$4
render_bcd::bcd#2 = render_score::score_bytes[0]
render_bcd::only_low#2 = 0
call render_bcd
to:render_score::@6
render_score::@6: scope:[render_score] from render_score::@5
level_bcd#44 = phi( render_score::@5/level_bcd#57 )
render_score::screen#6 = phi( render_score::@5/render_score::screen#5 )
lines_bcd#11 = phi( render_score::@5/lines_bcd#23 )
render_score::$6 = > lines_bcd#11
render_bcd::screen#3 = render_score::screen#6
render_bcd::offset#3 = render_score::lines_offset
render_bcd::bcd#3 = render_score::$6
render_bcd::only_low#3 = 1
call render_bcd
to:render_score::@7
render_score::@7: scope:[render_score] from render_score::@6
level_bcd#28 = phi( render_score::@6/level_bcd#44 )
render_score::screen#7 = phi( render_score::@6/render_score::screen#6 )
lines_bcd#12 = phi( render_score::@6/lines_bcd#11 )
render_score::$8 = render_score::lines_offset + 1
render_score::$9 = < lines_bcd#12
render_bcd::screen#4 = render_score::screen#7
render_bcd::offset#4 = render_score::$8
render_bcd::bcd#4 = render_score::$9
render_bcd::only_low#4 = 0
call render_bcd
to:render_score::@8
render_score::@8: scope:[render_score] from render_score::@7
level_bcd#14 = phi( render_score::@7/level_bcd#28 )
render_score::screen#8 = phi( render_score::@7/render_score::screen#7 )
render_bcd::screen#5 = render_score::screen#8
render_bcd::offset#5 = render_score::level_offset
render_bcd::bcd#5 = level_bcd#14
render_bcd::only_low#5 = 0
call render_bcd
to:render_score::@9
render_score::@9: scope:[render_score] from render_score::@8
to:render_score::@return
render_score::@return: scope:[render_score] from render_score::@9
return
to:@return
void render_bcd(byte* render_bcd::screen , word render_bcd::offset , byte render_bcd::bcd , byte render_bcd::only_low)
render_bcd: scope:[render_bcd] from render_score::@2 render_score::@4 render_score::@5 render_score::@6 render_score::@7 render_score::@8
render_bcd::bcd#8 = phi( render_score::@2/render_bcd::bcd#0, render_score::@4/render_bcd::bcd#1, render_score::@5/render_bcd::bcd#2, render_score::@6/render_bcd::bcd#3, render_score::@7/render_bcd::bcd#4, render_score::@8/render_bcd::bcd#5 )
render_bcd::only_low#6 = phi( render_score::@2/render_bcd::only_low#0, render_score::@4/render_bcd::only_low#1, render_score::@5/render_bcd::only_low#2, render_score::@6/render_bcd::only_low#3, render_score::@7/render_bcd::only_low#4, render_score::@8/render_bcd::only_low#5 )
render_bcd::offset#6 = phi( render_score::@2/render_bcd::offset#0, render_score::@4/render_bcd::offset#1, render_score::@5/render_bcd::offset#2, render_score::@6/render_bcd::offset#3, render_score::@7/render_bcd::offset#4, render_score::@8/render_bcd::offset#5 )
render_bcd::screen#6 = phi( render_score::@2/render_bcd::screen#0, render_score::@4/render_bcd::screen#1, render_score::@5/render_bcd::screen#2, render_score::@6/render_bcd::screen#3, render_score::@7/render_bcd::screen#4, render_score::@8/render_bcd::screen#5 )
render_bcd::$0 = render_bcd::screen#6 + render_bcd::offset#6
render_bcd::screen_pos#0 = render_bcd::$0
render_bcd::$1 = render_bcd::only_low#6 == 0
render_bcd::$2 = ! render_bcd::$1
if(render_bcd::$2) goto render_bcd::@1
to:render_bcd::@2
render_bcd::@1: scope:[render_bcd] from render_bcd render_bcd::@2
render_bcd::screen_pos#3 = phi( render_bcd/render_bcd::screen_pos#0, render_bcd::@2/render_bcd::screen_pos#2 )
render_bcd::bcd#6 = phi( render_bcd/render_bcd::bcd#8, render_bcd::@2/render_bcd::bcd#7 )
render_bcd::$3 = render_bcd::bcd#6 & $f
render_bcd::$4 = render_bcd::ZERO_CHAR + render_bcd::$3
*render_bcd::screen_pos#3 = render_bcd::$4
render_bcd::screen_pos#1 = ++ render_bcd::screen_pos#3
to:render_bcd::@return
render_bcd::@2: scope:[render_bcd] from render_bcd
render_bcd::screen_pos#4 = phi( render_bcd/render_bcd::screen_pos#0 )
render_bcd::bcd#7 = phi( render_bcd/render_bcd::bcd#8 )
render_bcd::$5 = render_bcd::bcd#7 >> 4
render_bcd::$6 = render_bcd::ZERO_CHAR + render_bcd::$5
*render_bcd::screen_pos#4 = render_bcd::$6
render_bcd::screen_pos#2 = ++ render_bcd::screen_pos#4
to:render_bcd::@1
render_bcd::@return: scope:[render_bcd] from render_bcd::@1
return
to:@return
void render_screen_original(byte* render_screen_original::screen)
render_screen_original: scope:[render_screen_original] from render_init::@3 render_init::@4
render_screen_original::screen#9 = phi( render_init::@3/render_screen_original::screen#0, render_init::@4/render_screen_original::screen#1 )
render_screen_original::oscr#0 = PLAYFIELD_SCREEN_ORIGINAL+$20*2
render_screen_original::ocols#0 = PLAYFIELD_COLORS_ORIGINAL+$20*2
render_screen_original::cols#0 = COLS
render_screen_original::y#0 = 0
to:render_screen_original::@1
render_screen_original::@1: scope:[render_screen_original] from render_screen_original render_screen_original::@5
render_screen_original::y#6 = phi( render_screen_original/render_screen_original::y#0, render_screen_original::@5/render_screen_original::y#1 )
render_screen_original::ocols#4 = phi( render_screen_original/render_screen_original::ocols#0, render_screen_original::@5/render_screen_original::ocols#5 )
render_screen_original::oscr#4 = phi( render_screen_original/render_screen_original::oscr#0, render_screen_original::@5/render_screen_original::oscr#5 )
render_screen_original::cols#7 = phi( render_screen_original/render_screen_original::cols#0, render_screen_original::@5/render_screen_original::cols#8 )
render_screen_original::screen#8 = phi( render_screen_original/render_screen_original::screen#9, render_screen_original::@5/render_screen_original::screen#10 )
render_screen_original::x#0 = 0
to:render_screen_original::@2
render_screen_original::@2: scope:[render_screen_original] from render_screen_original::@1 render_screen_original::@2
render_screen_original::y#5 = phi( render_screen_original::@1/render_screen_original::y#6, render_screen_original::@2/render_screen_original::y#5 )
render_screen_original::ocols#3 = phi( render_screen_original::@1/render_screen_original::ocols#4, render_screen_original::@2/render_screen_original::ocols#3 )
render_screen_original::oscr#3 = phi( render_screen_original::@1/render_screen_original::oscr#4, render_screen_original::@2/render_screen_original::oscr#3 )
render_screen_original::x#4 = phi( render_screen_original::@1/render_screen_original::x#0, render_screen_original::@2/render_screen_original::x#1 )
render_screen_original::cols#4 = phi( render_screen_original::@1/render_screen_original::cols#7, render_screen_original::@2/render_screen_original::cols#1 )
render_screen_original::screen#5 = phi( render_screen_original::@1/render_screen_original::screen#8, render_screen_original::@2/render_screen_original::screen#2 )
*render_screen_original::screen#5 = render_screen_original::SPACE
render_screen_original::screen#2 = ++ render_screen_original::screen#5
*render_screen_original::cols#4 = BLACK
render_screen_original::cols#1 = ++ render_screen_original::cols#4
render_screen_original::x#1 = ++ render_screen_original::x#4
render_screen_original::$0 = render_screen_original::x#1 != 4
if(render_screen_original::$0) goto render_screen_original::@2
to:render_screen_original::@3
render_screen_original::@3: scope:[render_screen_original] from render_screen_original::@2 render_screen_original::@3
render_screen_original::y#4 = phi( render_screen_original::@2/render_screen_original::y#5, render_screen_original::@3/render_screen_original::y#4 )
render_screen_original::x#5 = phi( render_screen_original::@2/render_screen_original::x#1, render_screen_original::@3/render_screen_original::x#2 )
render_screen_original::cols#5 = phi( render_screen_original::@2/render_screen_original::cols#1, render_screen_original::@3/render_screen_original::cols#2 )
render_screen_original::ocols#2 = phi( render_screen_original::@2/render_screen_original::ocols#3, render_screen_original::@3/render_screen_original::ocols#1 )
render_screen_original::screen#6 = phi( render_screen_original::@2/render_screen_original::screen#2, render_screen_original::@3/render_screen_original::screen#3 )
render_screen_original::oscr#2 = phi( render_screen_original::@2/render_screen_original::oscr#3, render_screen_original::@3/render_screen_original::oscr#1 )
*render_screen_original::screen#6 = *render_screen_original::oscr#2
render_screen_original::screen#3 = ++ render_screen_original::screen#6
render_screen_original::oscr#1 = ++ render_screen_original::oscr#2
*render_screen_original::cols#5 = *render_screen_original::ocols#2
render_screen_original::cols#2 = ++ render_screen_original::cols#5
render_screen_original::ocols#1 = ++ render_screen_original::ocols#2
render_screen_original::x#2 = ++ render_screen_original::x#5
render_screen_original::$1 = render_screen_original::x#2 != $24
if(render_screen_original::$1) goto render_screen_original::@3
to:render_screen_original::@4
render_screen_original::@4: scope:[render_screen_original] from render_screen_original::@3 render_screen_original::@4
render_screen_original::ocols#6 = phi( render_screen_original::@3/render_screen_original::ocols#1, render_screen_original::@4/render_screen_original::ocols#6 )
render_screen_original::oscr#6 = phi( render_screen_original::@3/render_screen_original::oscr#1, render_screen_original::@4/render_screen_original::oscr#6 )
render_screen_original::y#3 = phi( render_screen_original::@3/render_screen_original::y#4, render_screen_original::@4/render_screen_original::y#3 )
render_screen_original::x#6 = phi( render_screen_original::@3/render_screen_original::x#2, render_screen_original::@4/render_screen_original::x#3 )
render_screen_original::cols#6 = phi( render_screen_original::@3/render_screen_original::cols#2, render_screen_original::@4/render_screen_original::cols#3 )
render_screen_original::screen#7 = phi( render_screen_original::@3/render_screen_original::screen#3, render_screen_original::@4/render_screen_original::screen#4 )
*render_screen_original::screen#7 = render_screen_original::SPACE
render_screen_original::screen#4 = ++ render_screen_original::screen#7
*render_screen_original::cols#6 = BLACK
render_screen_original::cols#3 = ++ render_screen_original::cols#6
render_screen_original::x#3 = ++ render_screen_original::x#6
render_screen_original::$2 = render_screen_original::x#3 != $28
if(render_screen_original::$2) goto render_screen_original::@4
to:render_screen_original::@5
render_screen_original::@5: scope:[render_screen_original] from render_screen_original::@4
render_screen_original::ocols#5 = phi( render_screen_original::@4/render_screen_original::ocols#6 )
render_screen_original::oscr#5 = phi( render_screen_original::@4/render_screen_original::oscr#6 )
render_screen_original::cols#8 = phi( render_screen_original::@4/render_screen_original::cols#3 )
render_screen_original::screen#10 = phi( render_screen_original::@4/render_screen_original::screen#4 )
render_screen_original::y#2 = phi( render_screen_original::@4/render_screen_original::y#3 )
render_screen_original::y#1 = render_screen_original::y#2 + rangenext(0,$18)
render_screen_original::$3 = render_screen_original::y#1 != rangelast(0,$18)
if(render_screen_original::$3) goto render_screen_original::@1
to:render_screen_original::@return
render_screen_original::@return: scope:[render_screen_original] from render_screen_original::@5
return
to:@return
void render_playfield()
render_playfield: scope:[render_playfield] from main::@15 main::@8
render_screen_render#24 = phi( main::@15/render_screen_render#32, main::@8/render_screen_render#33 )
render_playfield::i#0 = (byte)PLAYFIELD_COLS*2
render_playfield::l#0 = 2
to:render_playfield::@1
render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3
render_playfield::i#3 = phi( render_playfield/render_playfield::i#0, render_playfield::@3/render_playfield::i#4 )
render_playfield::l#2 = phi( render_playfield/render_playfield::l#0, render_playfield::@3/render_playfield::l#1 )
render_screen_render#14 = phi( render_playfield/render_screen_render#24, render_playfield::@3/render_screen_render#25 )
render_playfield::$0 = render_screen_render#14 + render_playfield::l#2
render_playfield::$3 = render_playfield::$0 * SIZEOF_POINTER
render_playfield::screen_line#0 = screen_lines_1[render_playfield::$3]
render_playfield::c#0 = 0
to:render_playfield::@2
render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2
render_screen_render#34 = phi( render_playfield::@1/render_screen_render#14, render_playfield::@2/render_screen_render#34 )
render_playfield::l#4 = phi( render_playfield::@1/render_playfield::l#2, render_playfield::@2/render_playfield::l#4 )
render_playfield::c#2 = phi( render_playfield::@1/render_playfield::c#0, render_playfield::@2/render_playfield::c#1 )
render_playfield::screen_line#2 = phi( render_playfield::@1/render_playfield::screen_line#0, render_playfield::@2/render_playfield::screen_line#1 )
render_playfield::i#2 = phi( render_playfield::@1/render_playfield::i#3, render_playfield::@2/render_playfield::i#1 )
*render_playfield::screen_line#2 = playfield[render_playfield::i#2]
render_playfield::screen_line#1 = ++ render_playfield::screen_line#2
render_playfield::i#1 = ++ render_playfield::i#2
render_playfield::c#1 = render_playfield::c#2 + rangenext(0,PLAYFIELD_COLS-1)
render_playfield::$1 = render_playfield::c#1 != rangelast(0,PLAYFIELD_COLS-1)
if(render_playfield::$1) goto render_playfield::@2
to:render_playfield::@3
render_playfield::@3: scope:[render_playfield] from render_playfield::@2
render_playfield::i#4 = phi( render_playfield::@2/render_playfield::i#1 )
render_screen_render#25 = phi( render_playfield::@2/render_screen_render#34 )
render_playfield::l#3 = phi( render_playfield::@2/render_playfield::l#4 )
render_playfield::l#1 = render_playfield::l#3 + rangenext(2,PLAYFIELD_LINES-1)
render_playfield::$2 = render_playfield::l#1 != rangelast(2,PLAYFIELD_LINES-1)
if(render_playfield::$2) goto render_playfield::@1
to:render_playfield::@return
render_playfield::@return: scope:[render_playfield] from render_playfield::@3
return
to:@return
void render_moving()
render_moving: scope:[render_moving] from main::@16 main::@23
current_piece_char#70 = phi( main::@16/current_piece_char#81, main::@23/current_piece_char#86 )
current_piece_gfx#66 = phi( main::@16/current_piece_gfx#83, main::@23/current_piece_gfx#84 )
current_xpos#61 = phi( main::@16/current_xpos#78, main::@23/current_xpos#79 )
render_screen_render#35 = phi( main::@16/render_screen_render#38, main::@23/render_screen_render#41 )
current_ypos#14 = phi( main::@16/current_ypos#32, main::@23/current_ypos#33 )
render_moving::i#0 = 0
render_moving::ypos#0 = current_ypos#14
render_moving::l#0 = 0
to:render_moving::@1
render_moving::@1: scope:[render_moving] from render_moving render_moving::@3
current_piece_char#54 = phi( render_moving/current_piece_char#70, render_moving::@3/current_piece_char#71 )
render_moving::l#5 = phi( render_moving/render_moving::l#0, render_moving::@3/render_moving::l#1 )
current_piece_gfx#48 = phi( render_moving/current_piece_gfx#66, render_moving::@3/current_piece_gfx#67 )
render_moving::i#5 = phi( render_moving/render_moving::i#0, render_moving::@3/render_moving::i#8 )
current_xpos#38 = phi( render_moving/current_xpos#61, render_moving::@3/current_xpos#62 )
render_screen_render#26 = phi( render_moving/render_screen_render#35, render_moving::@3/render_screen_render#36 )
render_moving::ypos#2 = phi( render_moving/render_moving::ypos#0, render_moving::@3/render_moving::ypos#1 )
render_moving::$0 = render_moving::ypos#2 > 1
if(render_moving::$0) goto render_moving::@2
to:render_moving::@7
render_moving::@2: scope:[render_moving] from render_moving::@1
render_moving::l#8 = phi( render_moving::@1/render_moving::l#5 )
current_piece_char#39 = phi( render_moving::@1/current_piece_char#54 )
render_moving::i#6 = phi( render_moving::@1/render_moving::i#5 )
current_piece_gfx#31 = phi( render_moving::@1/current_piece_gfx#48 )
current_xpos#17 = phi( render_moving::@1/current_xpos#38 )
render_moving::ypos#3 = phi( render_moving::@1/render_moving::ypos#2 )
render_screen_render#15 = phi( render_moving::@1/render_screen_render#26 )
render_moving::$1 = render_screen_render#15 + render_moving::ypos#3
render_moving::$6 = render_moving::$1 * SIZEOF_POINTER
render_moving::screen_line#0 = screen_lines_1[render_moving::$6]
render_moving::xpos#0 = current_xpos#17
render_moving::c#0 = 0
to:render_moving::@4
render_moving::@7: scope:[render_moving] from render_moving::@1
current_piece_char#87 = phi( render_moving::@1/current_piece_char#54 )
current_piece_gfx#85 = phi( render_moving::@1/current_piece_gfx#48 )
current_xpos#81 = phi( render_moving::@1/current_xpos#38 )
render_screen_render#44 = phi( render_moving::@1/render_screen_render#26 )
render_moving::l#4 = phi( render_moving::@1/render_moving::l#5 )
render_moving::ypos#6 = phi( render_moving::@1/render_moving::ypos#2 )
render_moving::i#3 = phi( render_moving::@1/render_moving::i#5 )
render_moving::i#1 = render_moving::i#3 + 4
to:render_moving::@3
render_moving::@3: scope:[render_moving] from render_moving::@5 render_moving::@7
current_piece_char#71 = phi( render_moving::@5/current_piece_char#40, render_moving::@7/current_piece_char#87 )
current_piece_gfx#67 = phi( render_moving::@5/current_piece_gfx#32, render_moving::@7/current_piece_gfx#85 )
render_moving::i#8 = phi( render_moving::@5/render_moving::i#7, render_moving::@7/render_moving::i#1 )
current_xpos#62 = phi( render_moving::@5/current_xpos#80, render_moving::@7/current_xpos#81 )
render_screen_render#36 = phi( render_moving::@5/render_screen_render#43, render_moving::@7/render_screen_render#44 )
render_moving::l#2 = phi( render_moving::@5/render_moving::l#3, render_moving::@7/render_moving::l#4 )
render_moving::ypos#4 = phi( render_moving::@5/render_moving::ypos#5, render_moving::@7/render_moving::ypos#6 )
render_moving::ypos#1 = ++ render_moving::ypos#4
render_moving::l#1 = render_moving::l#2 + rangenext(0,3)
render_moving::$5 = render_moving::l#1 != rangelast(0,3)
if(render_moving::$5) goto render_moving::@1
to:render_moving::@return
render_moving::@4: scope:[render_moving] from render_moving::@2 render_moving::@5
current_xpos#97 = phi( render_moving::@2/current_xpos#17, render_moving::@5/current_xpos#80 )
render_screen_render#50 = phi( render_moving::@2/render_screen_render#15, render_moving::@5/render_screen_render#43 )
render_moving::l#6 = phi( render_moving::@2/render_moving::l#8, render_moving::@5/render_moving::l#3 )
render_moving::ypos#7 = phi( render_moving::@2/render_moving::ypos#3, render_moving::@5/render_moving::ypos#5 )
render_moving::screen_line#2 = phi( render_moving::@2/render_moving::screen_line#0, render_moving::@5/render_moving::screen_line#3 )
current_piece_char#26 = phi( render_moving::@2/current_piece_char#39, render_moving::@5/current_piece_char#40 )
render_moving::c#3 = phi( render_moving::@2/render_moving::c#0, render_moving::@5/render_moving::c#1 )
render_moving::xpos#4 = phi( render_moving::@2/render_moving::xpos#0, render_moving::@5/render_moving::xpos#1 )
render_moving::i#4 = phi( render_moving::@2/render_moving::i#6, render_moving::@5/render_moving::i#7 )
current_piece_gfx#16 = phi( render_moving::@2/current_piece_gfx#31, render_moving::@5/current_piece_gfx#32 )
render_moving::current_cell#0 = current_piece_gfx#16[render_moving::i#4]
render_moving::i#2 = ++ render_moving::i#4
render_moving::$2 = render_moving::current_cell#0 != 0
render_moving::$3 = ! render_moving::$2
if(render_moving::$3) goto render_moving::@5
to:render_moving::@6
render_moving::@5: scope:[render_moving] from render_moving::@4 render_moving::@6
current_xpos#80 = phi( render_moving::@4/current_xpos#97, render_moving::@6/current_xpos#98 )
render_screen_render#43 = phi( render_moving::@4/render_screen_render#50, render_moving::@6/render_screen_render#51 )
render_moving::screen_line#3 = phi( render_moving::@4/render_moving::screen_line#2, render_moving::@6/render_moving::screen_line#1 )
current_piece_char#40 = phi( render_moving::@4/current_piece_char#26, render_moving::@6/current_piece_char#13 )
render_moving::i#7 = phi( render_moving::@4/render_moving::i#2, render_moving::@6/render_moving::i#9 )
current_piece_gfx#32 = phi( render_moving::@4/current_piece_gfx#16, render_moving::@6/current_piece_gfx#49 )
render_moving::l#3 = phi( render_moving::@4/render_moving::l#6, render_moving::@6/render_moving::l#7 )
render_moving::ypos#5 = phi( render_moving::@4/render_moving::ypos#7, render_moving::@6/render_moving::ypos#8 )
render_moving::c#2 = phi( render_moving::@4/render_moving::c#3, render_moving::@6/render_moving::c#4 )
render_moving::xpos#2 = phi( render_moving::@4/render_moving::xpos#4, render_moving::@6/render_moving::xpos#3 )
render_moving::xpos#1 = ++ render_moving::xpos#2
render_moving::c#1 = render_moving::c#2 + rangenext(0,3)
render_moving::$4 = render_moving::c#1 != rangelast(0,3)
if(render_moving::$4) goto render_moving::@4
to:render_moving::@3
render_moving::@6: scope:[render_moving] from render_moving::@4
current_xpos#98 = phi( render_moving::@4/current_xpos#97 )
render_screen_render#51 = phi( render_moving::@4/render_screen_render#50 )
render_moving::i#9 = phi( render_moving::@4/render_moving::i#2 )
current_piece_gfx#49 = phi( render_moving::@4/current_piece_gfx#16 )
render_moving::l#7 = phi( render_moving::@4/render_moving::l#6 )
render_moving::ypos#8 = phi( render_moving::@4/render_moving::ypos#7 )
render_moving::c#4 = phi( render_moving::@4/render_moving::c#3 )
render_moving::xpos#3 = phi( render_moving::@4/render_moving::xpos#4 )
render_moving::screen_line#1 = phi( render_moving::@4/render_moving::screen_line#2 )
current_piece_char#13 = phi( render_moving::@4/current_piece_char#26 )
render_moving::screen_line#1[render_moving::xpos#3] = current_piece_char#13
to:render_moving::@5
render_moving::@return: scope:[render_moving] from render_moving::@3
return
to:@return
void render_next()
render_next: scope:[render_next] from main::@17 main::@24
next_piece_idx#38 = phi( main::@17/next_piece_idx#48, main::@24/next_piece_idx#49 )
render_screen_render#16 = phi( main::@17/render_screen_render#27, main::@24/render_screen_render#28 )
render_next::screen_next_area#0 = (byte*) 0
render_next::$0 = render_screen_render#16 == 0
if(render_next::$0) goto render_next::@1
to:render_next::@3
render_next::@1: scope:[render_next] from render_next
next_piece_idx#26 = phi( render_next/next_piece_idx#38 )
render_next::$2 = PLAYFIELD_SCREEN_1 + render_next::next_area_offset
render_next::screen_next_area#1 = render_next::$2
to:render_next::@2
render_next::@3: scope:[render_next] from render_next
next_piece_idx#27 = phi( render_next/next_piece_idx#38 )
render_next::$1 = PLAYFIELD_SCREEN_2 + render_next::next_area_offset
render_next::screen_next_area#2 = render_next::$1
to:render_next::@2
render_next::@2: scope:[render_next] from render_next::@1 render_next::@3
render_next::screen_next_area#11 = phi( render_next::@1/render_next::screen_next_area#1, render_next::@3/render_next::screen_next_area#2 )
next_piece_idx#13 = phi( render_next::@1/next_piece_idx#26, render_next::@3/next_piece_idx#27 )
render_next::$6 = next_piece_idx#13 * SIZEOF_WORD
render_next::next_piece_gfx#0 = ((byte*)) PIECES[render_next::$6]
render_next::next_piece_char#0 = PIECES_NEXT_CHARS[next_piece_idx#13]
render_next::l#0 = 0
to:render_next::@4
render_next::@4: scope:[render_next] from render_next::@2 render_next::@9
render_next::l#7 = phi( render_next::@2/render_next::l#0, render_next::@9/render_next::l#1 )
render_next::screen_next_area#10 = phi( render_next::@2/render_next::screen_next_area#11, render_next::@9/render_next::screen_next_area#4 )
render_next::next_piece_char#3 = phi( render_next::@2/render_next::next_piece_char#0, render_next::@9/render_next::next_piece_char#5 )
render_next::next_piece_gfx#3 = phi( render_next::@2/render_next::next_piece_gfx#0, render_next::@9/render_next::next_piece_gfx#5 )
render_next::c#0 = 0
to:render_next::@5
render_next::@5: scope:[render_next] from render_next::@4 render_next::@7
render_next::l#6 = phi( render_next::@4/render_next::l#7, render_next::@7/render_next::l#3 )
render_next::c#5 = phi( render_next::@4/render_next::c#0, render_next::@7/render_next::c#1 )
render_next::screen_next_area#9 = phi( render_next::@4/render_next::screen_next_area#10, render_next::@7/render_next::screen_next_area#3 )
render_next::next_piece_char#2 = phi( render_next::@4/render_next::next_piece_char#3, render_next::@7/render_next::next_piece_char#4 )
render_next::next_piece_gfx#2 = phi( render_next::@4/render_next::next_piece_gfx#3, render_next::@7/render_next::next_piece_gfx#4 )
render_next::cell#0 = *render_next::next_piece_gfx#2
render_next::next_piece_gfx#1 = ++ render_next::next_piece_gfx#2
render_next::$3 = render_next::cell#0 != 0
if(render_next::$3) goto render_next::@6
to:render_next::@8
render_next::@6: scope:[render_next] from render_next::@5
render_next::l#4 = phi( render_next::@5/render_next::l#6 )
render_next::next_piece_gfx#6 = phi( render_next::@5/render_next::next_piece_gfx#1 )
render_next::c#3 = phi( render_next::@5/render_next::c#5 )
render_next::screen_next_area#5 = phi( render_next::@5/render_next::screen_next_area#9 )
render_next::next_piece_char#1 = phi( render_next::@5/render_next::next_piece_char#2 )
*render_next::screen_next_area#5 = render_next::next_piece_char#1
to:render_next::@7
render_next::@8: scope:[render_next] from render_next::@5
render_next::next_piece_char#6 = phi( render_next::@5/render_next::next_piece_char#2 )
render_next::l#5 = phi( render_next::@5/render_next::l#6 )
render_next::next_piece_gfx#7 = phi( render_next::@5/render_next::next_piece_gfx#1 )
render_next::c#4 = phi( render_next::@5/render_next::c#5 )
render_next::screen_next_area#6 = phi( render_next::@5/render_next::screen_next_area#9 )
*render_next::screen_next_area#6 = 0
to:render_next::@7
render_next::@7: scope:[render_next] from render_next::@6 render_next::@8
render_next::next_piece_char#4 = phi( render_next::@6/render_next::next_piece_char#1, render_next::@8/render_next::next_piece_char#6 )
render_next::l#3 = phi( render_next::@6/render_next::l#4, render_next::@8/render_next::l#5 )
render_next::next_piece_gfx#4 = phi( render_next::@6/render_next::next_piece_gfx#6, render_next::@8/render_next::next_piece_gfx#7 )
render_next::c#2 = phi( render_next::@6/render_next::c#3, render_next::@8/render_next::c#4 )
render_next::screen_next_area#7 = phi( render_next::@6/render_next::screen_next_area#5, render_next::@8/render_next::screen_next_area#6 )
render_next::screen_next_area#3 = ++ render_next::screen_next_area#7
render_next::c#1 = render_next::c#2 + rangenext(0,3)
render_next::$4 = render_next::c#1 != rangelast(0,3)
if(render_next::$4) goto render_next::@5
to:render_next::@9
render_next::@9: scope:[render_next] from render_next::@7
render_next::next_piece_char#5 = phi( render_next::@7/render_next::next_piece_char#4 )
render_next::next_piece_gfx#5 = phi( render_next::@7/render_next::next_piece_gfx#4 )
render_next::l#2 = phi( render_next::@7/render_next::l#3 )
render_next::screen_next_area#8 = phi( render_next::@7/render_next::screen_next_area#3 )
render_next::screen_next_area#4 = render_next::screen_next_area#8 + $24
render_next::l#1 = render_next::l#2 + rangenext(0,3)
render_next::$5 = render_next::l#1 != rangelast(0,3)
if(render_next::$5) goto render_next::@4
to:render_next::@return
render_next::@return: scope:[render_next] from render_next::@9
return
to:@return
void sprites_init()
sprites_init: scope:[sprites_init] from main::@10
*SPRITES_ENABLE = $f
*SPRITES_MC = 0
*SPRITES_EXPAND_Y = *SPRITES_MC
*SPRITES_EXPAND_X = *SPRITES_EXPAND_Y
sprites_init::xpos#0 = (byte)$18+$f*8
sprites_init::s#0 = 0
to:sprites_init::@1
sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1
sprites_init::xpos#2 = phi( sprites_init/sprites_init::xpos#0, sprites_init::@1/sprites_init::xpos#1 )
sprites_init::s#2 = phi( sprites_init/sprites_init::s#0, sprites_init::@1/sprites_init::s#1 )
sprites_init::$0 = sprites_init::s#2 * 2
sprites_init::s2#0 = sprites_init::$0
SPRITES_XPOS[sprites_init::s2#0] = sprites_init::xpos#2
SPRITES_COLOR[sprites_init::s#2] = BLACK
sprites_init::$1 = sprites_init::xpos#2 + $18
sprites_init::xpos#1 = sprites_init::$1
sprites_init::s#1 = sprites_init::s#2 + rangenext(0,3)
sprites_init::$2 = sprites_init::s#1 != rangelast(0,3)
if(sprites_init::$2) goto sprites_init::@1
to:sprites_init::@return
sprites_init::@return: scope:[sprites_init] from sprites_init::@1
return
to:@return
void sprites_irq_init()
sprites_irq_init: scope:[sprites_irq_init] from main::@11
asm { sei }
*IRQ_STATUS = IRQ_RASTER
asm { ldaCIA1_INTERRUPT }
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
*PROCPORT = PROCPORT_RAM_IO
*((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*VICII_CONTROL = *VICII_CONTROL & $7f
*RASTER = IRQ_RASTER_FIRST
*IRQ_ENABLE = IRQ_RASTER
*HARDWARE_IRQ = &sprites_irq
asm { cli }
to:sprites_irq_init::@return
sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init
return
to:@return
__interrupt(hardware_clobber) void sprites_irq()
sprites_irq: scope:[sprites_irq] from
asm { cld }
sprites_irq::ypos#0 = irq_sprite_ypos
SPRITES_YPOS[0] = sprites_irq::ypos#0
SPRITES_YPOS[2] = sprites_irq::ypos#0
SPRITES_YPOS[4] = sprites_irq::ypos#0
SPRITES_YPOS[6] = sprites_irq::ypos#0
sprites_irq::$0 = irq_raster_next + 1
sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
to:sprites_irq::@8
sprites_irq::@8: scope:[sprites_irq] from sprites_irq sprites_irq::@8
sprites_irq::$4 = *RASTER < sprites_irq::raster_sprite_gfx_modify
if(sprites_irq::$4) goto sprites_irq::@8
to:sprites_irq::@9
sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8
sprites_irq::ptr#0 = irq_sprite_ptr
sprites_irq::$1 = render_screen_showing == 0
if(sprites_irq::$1) goto sprites_irq::@1
to:sprites_irq::@10
sprites_irq::@1: scope:[sprites_irq] from sprites_irq::@9
sprites_irq::ptr#5 = phi( sprites_irq::@9/sprites_irq::ptr#0 )
PLAYFIELD_SPRITE_PTRS_1[0] = sprites_irq::ptr#5
sprites_irq::ptr#1 = ++ sprites_irq::ptr#5
PLAYFIELD_SPRITE_PTRS_1[1] = sprites_irq::ptr#1
PLAYFIELD_SPRITE_PTRS_1[2] = sprites_irq::ptr#1
sprites_irq::ptr#2 = ++ sprites_irq::ptr#1
PLAYFIELD_SPRITE_PTRS_1[3] = sprites_irq::ptr#2
to:sprites_irq::@2
sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@9
sprites_irq::ptr#6 = phi( sprites_irq::@9/sprites_irq::ptr#0 )
PLAYFIELD_SPRITE_PTRS_2[0] = sprites_irq::ptr#6
sprites_irq::ptr#3 = ++ sprites_irq::ptr#6
PLAYFIELD_SPRITE_PTRS_2[1] = sprites_irq::ptr#3
PLAYFIELD_SPRITE_PTRS_2[2] = sprites_irq::ptr#3
sprites_irq::ptr#4 = ++ sprites_irq::ptr#3
PLAYFIELD_SPRITE_PTRS_2[3] = sprites_irq::ptr#4
to:sprites_irq::@2
sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@1 sprites_irq::@10
irq_cnt = ++ irq_cnt
sprites_irq::$2 = irq_cnt == 9
if(sprites_irq::$2) goto sprites_irq::@3
to:sprites_irq::@6
sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2
irq_raster_next = irq_raster_next + $15
irq_sprite_ypos = SPRITES_FIRST_YPOS
sprites_irq::toSpritePtr1_sprite#0 = PLAYFIELD_SPRITES
to:sprites_irq::toSpritePtr1
sprites_irq::toSpritePtr1: scope:[sprites_irq] from sprites_irq::@3
sprites_irq::toSpritePtr1_sprite#1 = phi( sprites_irq::@3/sprites_irq::toSpritePtr1_sprite#0 )
sprites_irq::toSpritePtr1_$1 = (word)sprites_irq::toSpritePtr1_sprite#1
sprites_irq::toSpritePtr1_$0 = sprites_irq::toSpritePtr1_$1 / $40
sprites_irq::toSpritePtr1_return#0 = (byte)sprites_irq::toSpritePtr1_$0
to:sprites_irq::toSpritePtr1_@return
sprites_irq::toSpritePtr1_@return: scope:[sprites_irq] from sprites_irq::toSpritePtr1
sprites_irq::toSpritePtr1_return#2 = phi( sprites_irq::toSpritePtr1/sprites_irq::toSpritePtr1_return#0 )
sprites_irq::toSpritePtr1_return#1 = sprites_irq::toSpritePtr1_return#2
to:sprites_irq::@11
sprites_irq::@11: scope:[sprites_irq] from sprites_irq::toSpritePtr1_@return
sprites_irq::toSpritePtr1_return#3 = phi( sprites_irq::toSpritePtr1_@return/sprites_irq::toSpritePtr1_return#1 )
sprites_irq::$5 = sprites_irq::toSpritePtr1_return#3
irq_sprite_ptr = sprites_irq::$5
to:sprites_irq::@5
sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@2
sprites_irq::$3 = irq_cnt == $a
if(sprites_irq::$3) goto sprites_irq::@4
to:sprites_irq::@7
sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@6
irq_cnt = 0
irq_raster_next = IRQ_RASTER_FIRST
irq_sprite_ypos = irq_sprite_ypos + $15
irq_sprite_ptr = irq_sprite_ptr + 3
to:sprites_irq::@5
sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@6
irq_raster_next = irq_raster_next + $14
irq_sprite_ypos = irq_sprite_ypos + $15
irq_sprite_ptr = irq_sprite_ptr + 3
to:sprites_irq::@5
sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7
*RASTER = irq_raster_next
*IRQ_STATUS = IRQ_RASTER
to:sprites_irq::@return
sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@5
return
to:@return
void play_init()
play_init: scope:[play_init] from main::@12
level#46 = phi( main::@12/level#60 )
play_init::idx#0 = 0
play_init::pli#0 = playfield
play_init::j#0 = 0
to:play_init::@1
play_init::@1: scope:[play_init] from play_init play_init::@1
level#30 = phi( play_init/level#46, play_init::@1/level#30 )
play_init::idx#2 = phi( play_init/play_init::idx#0, play_init::@1/play_init::idx#1 )
play_init::pli#2 = phi( play_init/play_init::pli#0, play_init::@1/play_init::pli#1 )
play_init::j#2 = phi( play_init/play_init::j#0, play_init::@1/play_init::j#1 )
play_init::$2 = play_init::j#2 * SIZEOF_POINTER
playfield_lines[play_init::$2] = play_init::pli#2
playfield_lines_idx[play_init::j#2] = play_init::idx#2
play_init::pli#1 = play_init::pli#2 + PLAYFIELD_COLS
play_init::idx#1 = play_init::idx#2 + PLAYFIELD_COLS
play_init::j#1 = play_init::j#2 + rangenext(0,PLAYFIELD_LINES-1)
play_init::$0 = play_init::j#1 != rangelast(0,PLAYFIELD_LINES-1)
if(play_init::$0) goto play_init::@1
to:play_init::@2
play_init::@2: scope:[play_init] from play_init::@1
level#14 = phi( play_init::@1/level#30 )
playfield_lines_idx[PLAYFIELD_LINES] = PLAYFIELD_COLS*PLAYFIELD_LINES
current_movedown_slow#0 = MOVEDOWN_SLOW_SPEEDS[level#14]
play_init::b#0 = 0
to:play_init::@3
play_init::@3: scope:[play_init] from play_init::@2 play_init::@3
current_movedown_slow#31 = phi( play_init::@2/current_movedown_slow#0, play_init::@3/current_movedown_slow#31 )
play_init::b#2 = phi( play_init::@2/play_init::b#0, play_init::@3/play_init::b#1 )
play_init::$3 = play_init::b#2 * SIZEOF_DWORD
score_add_bcd[play_init::$3] = SCORE_BASE_BCD[play_init::$3]
play_init::b#1 = play_init::b#2 + rangenext(0,4)
play_init::$1 = play_init::b#1 != rangelast(0,4)
if(play_init::$1) goto play_init::@3
to:play_init::@return
play_init::@return: scope:[play_init] from play_init::@3
current_movedown_slow#17 = phi( play_init::@3/current_movedown_slow#31 )
current_movedown_slow#1 = current_movedown_slow#17
return
to:@return
byte play_movement(byte play_movement::key_event)
play_movement: scope:[play_movement] from main::@4
next_piece_idx#28 = phi( main::@4/next_piece_idx#35 )
game_over#25 = phi( main::@4/game_over#34 )
current_xpos#39 = phi( main::@4/current_xpos#58 )
current_piece_gfx#33 = phi( main::@4/current_piece_gfx#45 )
current_orientation#34 = phi( main::@4/current_orientation#49 )
current_piece_char#27 = phi( main::@4/current_piece_char#36 )
current_piece#26 = phi( main::@4/current_piece#39 )
level_bcd#29 = phi( main::@4/level_bcd#41 )
current_movedown_slow#32 = phi( main::@4/current_movedown_slow#46 )
level#31 = phi( main::@4/level#41 )
lines_bcd#24 = phi( main::@4/lines_bcd#32 )
current_ypos#34 = phi( main::@4/current_ypos#49 )
current_movedown_counter#20 = phi( main::@4/current_movedown_counter#26 )
play_movement::key_event#1 = phi( main::@4/play_movement::key_event#0 )
play_movement::render#0 = 0
play_move_down::key_event#0 = play_movement::key_event#1
call play_move_down
play_move_down::return#0 = play_move_down::return#3
to:play_movement::@3
play_movement::@3: scope:[play_movement] from play_movement
play_movement::key_event#4 = phi( play_movement/play_movement::key_event#1 )
play_movement::render#4 = phi( play_movement/play_movement::render#0 )
next_piece_idx#14 = phi( play_movement/next_piece_idx#3 )
game_over#13 = phi( play_movement/game_over#3 )
current_xpos#18 = phi( play_movement/current_xpos#4 )
current_piece_gfx#17 = phi( play_movement/current_piece_gfx#4 )
current_orientation#16 = phi( play_movement/current_orientation#4 )
current_piece_char#14 = phi( play_movement/current_piece_char#3 )
current_piece#13 = phi( play_movement/current_piece#3 )
level_bcd#15 = phi( play_movement/level_bcd#3 )
current_movedown_slow#18 = phi( play_movement/current_movedown_slow#5 )
level#15 = phi( play_movement/level#3 )
lines_bcd#13 = phi( play_movement/lines_bcd#3 )
current_ypos#15 = phi( play_movement/current_ypos#4 )
current_movedown_counter#10 = phi( play_movement/current_movedown_counter#4 )
play_move_down::return#4 = phi( play_movement/play_move_down::return#0 )
play_movement::$0 = play_move_down::return#4
current_movedown_counter#0 = current_movedown_counter#10
current_ypos#0 = current_ypos#15
lines_bcd#0 = lines_bcd#13
level#0 = level#15
current_movedown_slow#2 = current_movedown_slow#18
level_bcd#0 = level_bcd#15
current_piece#0 = current_piece#13
current_piece_char#0 = current_piece_char#14
current_orientation#0 = current_orientation#16
current_piece_gfx#0 = current_piece_gfx#17
current_xpos#0 = current_xpos#18
game_over#0 = game_over#13
next_piece_idx#0 = next_piece_idx#14
play_movement::render#1 = play_movement::render#4 + play_movement::$0
play_movement::$1 = game_over#0 != 0
play_movement::$2 = ! play_movement::$1
if(play_movement::$2) goto play_movement::@1
to:play_movement::@2
play_movement::@1: scope:[play_movement] from play_movement::@3
next_piece_idx#50 = phi( play_movement::@3/next_piece_idx#0 )
game_over#48 = phi( play_movement::@3/game_over#0 )
current_piece_char#55 = phi( play_movement::@3/current_piece_char#0 )
current_piece#56 = phi( play_movement::@3/current_piece#0 )
level_bcd#58 = phi( play_movement::@3/level_bcd#0 )
current_movedown_slow#61 = phi( play_movement::@3/current_movedown_slow#2 )
level#61 = phi( play_movement::@3/level#0 )
lines_bcd#48 = phi( play_movement::@3/lines_bcd#0 )
current_movedown_counter#36 = phi( play_movement::@3/current_movedown_counter#0 )
current_ypos#56 = phi( play_movement::@3/current_ypos#0 )
current_piece_gfx#50 = phi( play_movement::@3/current_piece_gfx#0 )
current_orientation#52 = phi( play_movement::@3/current_orientation#0 )
play_movement::render#8 = phi( play_movement::@3/play_movement::render#1 )
current_xpos#40 = phi( play_movement::@3/current_xpos#0 )
play_movement::key_event#2 = phi( play_movement::@3/play_movement::key_event#4 )
play_move_leftright::key_event#0 = play_movement::key_event#2
call play_move_leftright
play_move_leftright::return#0 = play_move_leftright::return#2
to:play_movement::@4
play_movement::@4: scope:[play_movement] from play_movement::@1
next_piece_idx#39 = phi( play_movement::@1/next_piece_idx#50 )
game_over#37 = phi( play_movement::@1/game_over#48 )
current_piece_char#41 = phi( play_movement::@1/current_piece_char#55 )
current_piece#42 = phi( play_movement::@1/current_piece#56 )
level_bcd#45 = phi( play_movement::@1/level_bcd#58 )
current_movedown_slow#49 = phi( play_movement::@1/current_movedown_slow#61 )
level#47 = phi( play_movement::@1/level#61 )
lines_bcd#36 = phi( play_movement::@1/lines_bcd#48 )
current_ypos#52 = phi( play_movement::@1/current_ypos#56 )
current_movedown_counter#29 = phi( play_movement::@1/current_movedown_counter#36 )
current_piece_gfx#34 = phi( play_movement::@1/current_piece_gfx#50 )
current_orientation#35 = phi( play_movement::@1/current_orientation#52 )
play_movement::key_event#3 = phi( play_movement::@1/play_movement::key_event#2 )
play_movement::render#5 = phi( play_movement::@1/play_movement::render#8 )
current_xpos#19 = phi( play_movement::@1/current_xpos#6 )
play_move_leftright::return#5 = phi( play_movement::@1/play_move_leftright::return#0 )
play_movement::$3 = play_move_leftright::return#5
current_xpos#1 = current_xpos#19
play_movement::render#2 = play_movement::render#5 + play_movement::$3
play_move_rotate::key_event#0 = play_movement::key_event#3
call play_move_rotate
play_move_rotate::return#0 = play_move_rotate::return#2
to:play_movement::@5
play_movement::@5: scope:[play_movement] from play_movement::@4
next_piece_idx#30 = phi( play_movement::@4/next_piece_idx#39 )
game_over#27 = phi( play_movement::@4/game_over#37 )
current_xpos#42 = phi( play_movement::@4/current_xpos#1 )
current_piece_char#29 = phi( play_movement::@4/current_piece_char#41 )
current_piece#28 = phi( play_movement::@4/current_piece#42 )
level_bcd#31 = phi( play_movement::@4/level_bcd#45 )
current_movedown_slow#34 = phi( play_movement::@4/current_movedown_slow#49 )
level#33 = phi( play_movement::@4/level#47 )
lines_bcd#26 = phi( play_movement::@4/lines_bcd#36 )
current_ypos#36 = phi( play_movement::@4/current_ypos#52 )
current_movedown_counter#22 = phi( play_movement::@4/current_movedown_counter#29 )
play_movement::render#6 = phi( play_movement::@4/play_movement::render#2 )
current_piece_gfx#18 = phi( play_movement::@4/current_piece_gfx#5 )
current_orientation#17 = phi( play_movement::@4/current_orientation#5 )
play_move_rotate::return#5 = phi( play_movement::@4/play_move_rotate::return#0 )
play_movement::$4 = play_move_rotate::return#5
current_orientation#1 = current_orientation#17
current_piece_gfx#1 = current_piece_gfx#18
play_movement::render#3 = play_movement::render#6 + play_movement::$4
play_movement::return#0 = play_movement::render#3
to:play_movement::@return
play_movement::@2: scope:[play_movement] from play_movement::@3
next_piece_idx#29 = phi( play_movement::@3/next_piece_idx#0 )
game_over#26 = phi( play_movement::@3/game_over#0 )
current_xpos#41 = phi( play_movement::@3/current_xpos#0 )
current_piece_gfx#35 = phi( play_movement::@3/current_piece_gfx#0 )
current_orientation#36 = phi( play_movement::@3/current_orientation#0 )
current_piece_char#28 = phi( play_movement::@3/current_piece_char#0 )
current_piece#27 = phi( play_movement::@3/current_piece#0 )
level_bcd#30 = phi( play_movement::@3/level_bcd#0 )
current_movedown_slow#33 = phi( play_movement::@3/current_movedown_slow#2 )
level#32 = phi( play_movement::@3/level#0 )
lines_bcd#25 = phi( play_movement::@3/lines_bcd#0 )
current_ypos#35 = phi( play_movement::@3/current_ypos#0 )
current_movedown_counter#21 = phi( play_movement::@3/current_movedown_counter#0 )
play_movement::render#7 = phi( play_movement::@3/play_movement::render#1 )
play_movement::return#1 = play_movement::render#7
to:play_movement::@return
play_movement::@return: scope:[play_movement] from play_movement::@2 play_movement::@5
next_piece_idx#15 = phi( play_movement::@2/next_piece_idx#29, play_movement::@5/next_piece_idx#30 )
game_over#14 = phi( play_movement::@2/game_over#26, play_movement::@5/game_over#27 )
current_xpos#20 = phi( play_movement::@2/current_xpos#41, play_movement::@5/current_xpos#42 )
current_piece_gfx#19 = phi( play_movement::@2/current_piece_gfx#35, play_movement::@5/current_piece_gfx#1 )
current_orientation#18 = phi( play_movement::@2/current_orientation#36, play_movement::@5/current_orientation#1 )
current_piece_char#15 = phi( play_movement::@2/current_piece_char#28, play_movement::@5/current_piece_char#29 )
current_piece#14 = phi( play_movement::@2/current_piece#27, play_movement::@5/current_piece#28 )
level_bcd#16 = phi( play_movement::@2/level_bcd#30, play_movement::@5/level_bcd#31 )
current_movedown_slow#19 = phi( play_movement::@2/current_movedown_slow#33, play_movement::@5/current_movedown_slow#34 )
level#16 = phi( play_movement::@2/level#32, play_movement::@5/level#33 )
lines_bcd#14 = phi( play_movement::@2/lines_bcd#25, play_movement::@5/lines_bcd#26 )
current_ypos#16 = phi( play_movement::@2/current_ypos#35, play_movement::@5/current_ypos#36 )
current_movedown_counter#11 = phi( play_movement::@2/current_movedown_counter#21, play_movement::@5/current_movedown_counter#22 )
play_movement::return#4 = phi( play_movement::@2/play_movement::return#1, play_movement::@5/play_movement::return#0 )
play_movement::return#2 = play_movement::return#4
current_movedown_counter#1 = current_movedown_counter#11
current_ypos#1 = current_ypos#16
lines_bcd#1 = lines_bcd#14
level#1 = level#16
current_movedown_slow#3 = current_movedown_slow#19
level_bcd#1 = level_bcd#16
current_piece#1 = current_piece#14
current_piece_char#1 = current_piece_char#15
current_orientation#2 = current_orientation#18
current_piece_gfx#2 = current_piece_gfx#19
current_xpos#2 = current_xpos#20
game_over#1 = game_over#14
next_piece_idx#1 = next_piece_idx#15
return
to:@return
byte play_move_down(byte play_move_down::key_event)
play_move_down: scope:[play_move_down] from play_movement
next_piece_idx#74 = phi( play_movement/next_piece_idx#28 )
game_over#79 = phi( play_movement/game_over#25 )
current_piece_gfx#106 = phi( play_movement/current_piece_gfx#33 )
current_piece_char#93 = phi( play_movement/current_piece_char#27 )
current_piece#87 = phi( play_movement/current_piece#26 )
level_bcd#86 = phi( play_movement/level_bcd#29 )
level#93 = phi( play_movement/level#31 )
lines_bcd#74 = phi( play_movement/lines_bcd#24 )
current_orientation#87 = phi( play_movement/current_orientation#34 )
current_xpos#109 = phi( play_movement/current_xpos#39 )
current_ypos#88 = phi( play_movement/current_ypos#34 )
current_movedown_slow#62 = phi( play_movement/current_movedown_slow#32 )
play_move_down::key_event#1 = phi( play_movement/play_move_down::key_event#0 )
current_movedown_counter#12 = phi( play_movement/current_movedown_counter#20 )
current_movedown_counter#2 = ++ current_movedown_counter#12
play_move_down::movedown#0 = 0
play_move_down::$0 = play_move_down::key_event#1 == KEY_SPACE
play_move_down::$1 = ! play_move_down::$0
if(play_move_down::$1) goto play_move_down::@1
to:play_move_down::@5
play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@5
next_piece_idx#70 = phi( play_move_down/next_piece_idx#74, play_move_down::@5/next_piece_idx#75 )
game_over#74 = phi( play_move_down/game_over#79, play_move_down::@5/game_over#80 )
current_piece_gfx#100 = phi( play_move_down/current_piece_gfx#106, play_move_down::@5/current_piece_gfx#107 )
current_piece_char#88 = phi( play_move_down/current_piece_char#93, play_move_down::@5/current_piece_char#94 )
current_piece#82 = phi( play_move_down/current_piece#87, play_move_down::@5/current_piece#88 )
level_bcd#80 = phi( play_move_down/level_bcd#86, play_move_down::@5/level_bcd#87 )
level#87 = phi( play_move_down/level#93, play_move_down::@5/level#94 )
lines_bcd#70 = phi( play_move_down/lines_bcd#74, play_move_down::@5/lines_bcd#75 )
current_orientation#77 = phi( play_move_down/current_orientation#87, play_move_down::@5/current_orientation#88 )
current_xpos#99 = phi( play_move_down/current_xpos#109, play_move_down::@5/current_xpos#110 )
current_ypos#79 = phi( play_move_down/current_ypos#88, play_move_down::@5/current_ypos#89 )
play_move_down::movedown#11 = phi( play_move_down/play_move_down::movedown#0, play_move_down::@5/play_move_down::movedown#1 )
current_movedown_slow#50 = phi( play_move_down/current_movedown_slow#62, play_move_down::@5/current_movedown_slow#63 )
current_movedown_counter#30 = phi( play_move_down/current_movedown_counter#2, play_move_down::@5/current_movedown_counter#37 )
keyboard_event_pressed::keycode#4 = KEY_SPACE
call keyboard_event_pressed
keyboard_event_pressed::return#6 = keyboard_event_pressed::return#5
to:play_move_down::@13
play_move_down::@13: scope:[play_move_down] from play_move_down::@1
next_piece_idx#59 = phi( play_move_down::@1/next_piece_idx#70 )
game_over#61 = phi( play_move_down::@1/game_over#74 )
current_piece_gfx#86 = phi( play_move_down::@1/current_piece_gfx#100 )
current_piece_char#72 = phi( play_move_down::@1/current_piece_char#88 )
current_piece#70 = phi( play_move_down::@1/current_piece#82 )
level_bcd#70 = phi( play_move_down::@1/level_bcd#80 )
level#74 = phi( play_move_down::@1/level#87 )
lines_bcd#60 = phi( play_move_down::@1/lines_bcd#70 )
current_orientation#64 = phi( play_move_down::@1/current_orientation#77 )
current_xpos#82 = phi( play_move_down::@1/current_xpos#99 )
current_ypos#67 = phi( play_move_down::@1/current_ypos#79 )
play_move_down::movedown#10 = phi( play_move_down::@1/play_move_down::movedown#11 )
current_movedown_slow#35 = phi( play_move_down::@1/current_movedown_slow#50 )
current_movedown_counter#23 = phi( play_move_down::@1/current_movedown_counter#30 )
keyboard_event_pressed::return#12 = phi( play_move_down::@1/keyboard_event_pressed::return#6 )
play_move_down::$2 = keyboard_event_pressed::return#12
play_move_down::$3 = play_move_down::$2 != 0
play_move_down::$4 = ! play_move_down::$3
if(play_move_down::$4) goto play_move_down::@2
to:play_move_down::@6
play_move_down::@5: scope:[play_move_down] from play_move_down
next_piece_idx#75 = phi( play_move_down/next_piece_idx#74 )
game_over#80 = phi( play_move_down/game_over#79 )
current_piece_gfx#107 = phi( play_move_down/current_piece_gfx#106 )
current_piece_char#94 = phi( play_move_down/current_piece_char#93 )
current_piece#88 = phi( play_move_down/current_piece#87 )
level_bcd#87 = phi( play_move_down/level_bcd#86 )
level#94 = phi( play_move_down/level#93 )
lines_bcd#75 = phi( play_move_down/lines_bcd#74 )
current_orientation#88 = phi( play_move_down/current_orientation#87 )
current_xpos#110 = phi( play_move_down/current_xpos#109 )
current_ypos#89 = phi( play_move_down/current_ypos#88 )
current_movedown_slow#63 = phi( play_move_down/current_movedown_slow#62 )
current_movedown_counter#37 = phi( play_move_down/current_movedown_counter#2 )
play_move_down::movedown#4 = phi( play_move_down/play_move_down::movedown#0 )
play_move_down::movedown#1 = ++ play_move_down::movedown#4
to:play_move_down::@1
play_move_down::@2: scope:[play_move_down] from play_move_down::@13 play_move_down::@6 play_move_down::@7
next_piece_idx#51 = phi( play_move_down::@13/next_piece_idx#59, play_move_down::@6/next_piece_idx#60, play_move_down::@7/next_piece_idx#61 )
game_over#49 = phi( play_move_down::@13/game_over#61, play_move_down::@6/game_over#62, play_move_down::@7/game_over#63 )
current_piece_gfx#68 = phi( play_move_down::@13/current_piece_gfx#86, play_move_down::@6/current_piece_gfx#87, play_move_down::@7/current_piece_gfx#88 )
current_piece_char#56 = phi( play_move_down::@13/current_piece_char#72, play_move_down::@6/current_piece_char#73, play_move_down::@7/current_piece_char#74 )
current_piece#57 = phi( play_move_down::@13/current_piece#70, play_move_down::@6/current_piece#71, play_move_down::@7/current_piece#72 )
level_bcd#59 = phi( play_move_down::@13/level_bcd#70, play_move_down::@6/level_bcd#71, play_move_down::@7/level_bcd#72 )
level#62 = phi( play_move_down::@13/level#74, play_move_down::@6/level#75, play_move_down::@7/level#76 )
lines_bcd#49 = phi( play_move_down::@13/lines_bcd#60, play_move_down::@6/lines_bcd#61, play_move_down::@7/lines_bcd#62 )
current_orientation#53 = phi( play_move_down::@13/current_orientation#64, play_move_down::@6/current_orientation#65, play_move_down::@7/current_orientation#66 )
current_xpos#63 = phi( play_move_down::@13/current_xpos#82, play_move_down::@6/current_xpos#83, play_move_down::@7/current_xpos#84 )
current_ypos#53 = phi( play_move_down::@13/current_ypos#67, play_move_down::@6/current_ypos#68, play_move_down::@7/current_ypos#69 )
play_move_down::movedown#9 = phi( play_move_down::@13/play_move_down::movedown#10, play_move_down::@6/play_move_down::movedown#8, play_move_down::@7/play_move_down::movedown#2 )
current_movedown_slow#20 = phi( play_move_down::@13/current_movedown_slow#35, play_move_down::@6/current_movedown_slow#36, play_move_down::@7/current_movedown_slow#37 )
current_movedown_counter#13 = phi( play_move_down::@13/current_movedown_counter#23, play_move_down::@6/current_movedown_counter#14, play_move_down::@7/current_movedown_counter#24 )
play_move_down::$5 = current_movedown_counter#13 >= current_movedown_slow#20
play_move_down::$6 = ! play_move_down::$5
if(play_move_down::$6) goto play_move_down::@3
to:play_move_down::@8
play_move_down::@6: scope:[play_move_down] from play_move_down::@13
next_piece_idx#60 = phi( play_move_down::@13/next_piece_idx#59 )
game_over#62 = phi( play_move_down::@13/game_over#61 )
current_piece_gfx#87 = phi( play_move_down::@13/current_piece_gfx#86 )
current_piece_char#73 = phi( play_move_down::@13/current_piece_char#72 )
current_piece#71 = phi( play_move_down::@13/current_piece#70 )
level_bcd#71 = phi( play_move_down::@13/level_bcd#70 )
level#75 = phi( play_move_down::@13/level#74 )
lines_bcd#61 = phi( play_move_down::@13/lines_bcd#60 )
current_orientation#65 = phi( play_move_down::@13/current_orientation#64 )
current_xpos#83 = phi( play_move_down::@13/current_xpos#82 )
current_ypos#68 = phi( play_move_down::@13/current_ypos#67 )
play_move_down::movedown#8 = phi( play_move_down::@13/play_move_down::movedown#10 )
current_movedown_slow#36 = phi( play_move_down::@13/current_movedown_slow#35 )
current_movedown_counter#14 = phi( play_move_down::@13/current_movedown_counter#23 )
play_move_down::$9 = current_movedown_counter#14 >= current_movedown_fast
play_move_down::$10 = ! play_move_down::$9
if(play_move_down::$10) goto play_move_down::@2
to:play_move_down::@7
play_move_down::@7: scope:[play_move_down] from play_move_down::@6
next_piece_idx#61 = phi( play_move_down::@6/next_piece_idx#60 )
game_over#63 = phi( play_move_down::@6/game_over#62 )
current_piece_gfx#88 = phi( play_move_down::@6/current_piece_gfx#87 )
current_piece_char#74 = phi( play_move_down::@6/current_piece_char#73 )
current_piece#72 = phi( play_move_down::@6/current_piece#71 )
level_bcd#72 = phi( play_move_down::@6/level_bcd#71 )
level#76 = phi( play_move_down::@6/level#75 )
lines_bcd#62 = phi( play_move_down::@6/lines_bcd#61 )
current_orientation#66 = phi( play_move_down::@6/current_orientation#65 )
current_xpos#84 = phi( play_move_down::@6/current_xpos#83 )
current_ypos#69 = phi( play_move_down::@6/current_ypos#68 )
current_movedown_slow#37 = phi( play_move_down::@6/current_movedown_slow#36 )
current_movedown_counter#24 = phi( play_move_down::@6/current_movedown_counter#14 )
play_move_down::movedown#5 = phi( play_move_down::@6/play_move_down::movedown#8 )
play_move_down::movedown#2 = ++ play_move_down::movedown#5
to:play_move_down::@2
play_move_down::@3: scope:[play_move_down] from play_move_down::@2 play_move_down::@8
next_piece_idx#40 = phi( play_move_down::@2/next_piece_idx#51, play_move_down::@8/next_piece_idx#52 )
game_over#38 = phi( play_move_down::@2/game_over#49, play_move_down::@8/game_over#50 )
current_piece_gfx#51 = phi( play_move_down::@2/current_piece_gfx#68, play_move_down::@8/current_piece_gfx#69 )
current_piece_char#42 = phi( play_move_down::@2/current_piece_char#56, play_move_down::@8/current_piece_char#57 )
current_piece#43 = phi( play_move_down::@2/current_piece#57, play_move_down::@8/current_piece#58 )
level_bcd#46 = phi( play_move_down::@2/level_bcd#59, play_move_down::@8/level_bcd#60 )
current_movedown_slow#51 = phi( play_move_down::@2/current_movedown_slow#20, play_move_down::@8/current_movedown_slow#64 )
level#48 = phi( play_move_down::@2/level#62, play_move_down::@8/level#63 )
lines_bcd#37 = phi( play_move_down::@2/lines_bcd#49, play_move_down::@8/lines_bcd#50 )
current_movedown_counter#31 = phi( play_move_down::@2/current_movedown_counter#13, play_move_down::@8/current_movedown_counter#38 )
current_orientation#37 = phi( play_move_down::@2/current_orientation#53, play_move_down::@8/current_orientation#54 )
current_xpos#43 = phi( play_move_down::@2/current_xpos#63, play_move_down::@8/current_xpos#64 )
current_ypos#37 = phi( play_move_down::@2/current_ypos#53, play_move_down::@8/current_ypos#54 )
play_move_down::movedown#6 = phi( play_move_down::@2/play_move_down::movedown#9, play_move_down::@8/play_move_down::movedown#3 )
play_move_down::$7 = play_move_down::movedown#6 != 0
play_move_down::$8 = ! play_move_down::$7
if(play_move_down::$8) goto play_move_down::@4
to:play_move_down::@9
play_move_down::@8: scope:[play_move_down] from play_move_down::@2
next_piece_idx#52 = phi( play_move_down::@2/next_piece_idx#51 )
game_over#50 = phi( play_move_down::@2/game_over#49 )
current_piece_gfx#69 = phi( play_move_down::@2/current_piece_gfx#68 )
current_piece_char#57 = phi( play_move_down::@2/current_piece_char#56 )
current_piece#58 = phi( play_move_down::@2/current_piece#57 )
level_bcd#60 = phi( play_move_down::@2/level_bcd#59 )
current_movedown_slow#64 = phi( play_move_down::@2/current_movedown_slow#20 )
level#63 = phi( play_move_down::@2/level#62 )
lines_bcd#50 = phi( play_move_down::@2/lines_bcd#49 )
current_movedown_counter#38 = phi( play_move_down::@2/current_movedown_counter#13 )
current_orientation#54 = phi( play_move_down::@2/current_orientation#53 )
current_xpos#64 = phi( play_move_down::@2/current_xpos#63 )
current_ypos#54 = phi( play_move_down::@2/current_ypos#53 )
play_move_down::movedown#7 = phi( play_move_down::@2/play_move_down::movedown#9 )
play_move_down::movedown#3 = ++ play_move_down::movedown#7
to:play_move_down::@3
play_move_down::@4: scope:[play_move_down] from play_move_down::@3
next_piece_idx#33 = phi( play_move_down::@3/next_piece_idx#40 )
game_over#30 = phi( play_move_down::@3/game_over#38 )
current_xpos#46 = phi( play_move_down::@3/current_xpos#43 )
current_piece_gfx#38 = phi( play_move_down::@3/current_piece_gfx#51 )
current_orientation#40 = phi( play_move_down::@3/current_orientation#37 )
current_piece_char#32 = phi( play_move_down::@3/current_piece_char#42 )
current_piece#31 = phi( play_move_down::@3/current_piece#43 )
level_bcd#34 = phi( play_move_down::@3/level_bcd#46 )
current_movedown_slow#40 = phi( play_move_down::@3/current_movedown_slow#51 )
level#36 = phi( play_move_down::@3/level#48 )
lines_bcd#29 = phi( play_move_down::@3/lines_bcd#37 )
current_ypos#41 = phi( play_move_down::@3/current_ypos#37 )
current_movedown_counter#25 = phi( play_move_down::@3/current_movedown_counter#31 )
play_move_down::return#1 = 0
to:play_move_down::@return
play_move_down::@9: scope:[play_move_down] from play_move_down::@3
next_piece_idx#62 = phi( play_move_down::@3/next_piece_idx#40 )
game_over#64 = phi( play_move_down::@3/game_over#38 )
current_piece_gfx#89 = phi( play_move_down::@3/current_piece_gfx#51 )
current_piece_char#75 = phi( play_move_down::@3/current_piece_char#42 )
level_bcd#73 = phi( play_move_down::@3/level_bcd#46 )
current_movedown_slow#73 = phi( play_move_down::@3/current_movedown_slow#51 )
level#77 = phi( play_move_down::@3/level#48 )
lines_bcd#63 = phi( play_move_down::@3/lines_bcd#37 )
current_piece#33 = phi( play_move_down::@3/current_piece#43 )
current_orientation#19 = phi( play_move_down::@3/current_orientation#37 )
current_xpos#21 = phi( play_move_down::@3/current_xpos#43 )
current_ypos#17 = phi( play_move_down::@3/current_ypos#37 )
play_move_down::$11 = current_ypos#17 + 1
play_collision::xpos#0 = current_xpos#21
play_collision::ypos#0 = play_move_down::$11
play_collision::orientation#0 = current_orientation#19
call play_collision
play_collision::return#0 = play_collision::return#5
to:play_move_down::@14
play_move_down::@14: scope:[play_move_down] from play_move_down::@9
next_piece_idx#53 = phi( play_move_down::@9/next_piece_idx#62 )
game_over#51 = phi( play_move_down::@9/game_over#64 )
current_xpos#85 = phi( play_move_down::@9/current_xpos#21 )
current_piece_gfx#70 = phi( play_move_down::@9/current_piece_gfx#89 )
current_orientation#67 = phi( play_move_down::@9/current_orientation#19 )
current_piece_char#58 = phi( play_move_down::@9/current_piece_char#75 )
current_piece#59 = phi( play_move_down::@9/current_piece#33 )
level_bcd#61 = phi( play_move_down::@9/level_bcd#73 )
current_movedown_slow#65 = phi( play_move_down::@9/current_movedown_slow#73 )
level#64 = phi( play_move_down::@9/level#77 )
lines_bcd#51 = phi( play_move_down::@9/lines_bcd#63 )
current_ypos#38 = phi( play_move_down::@9/current_ypos#17 )
play_collision::return#11 = phi( play_move_down::@9/play_collision::return#0 )
play_move_down::$12 = play_collision::return#11
play_move_down::$13 = play_move_down::$12 == COLLISION_NONE
if(play_move_down::$13) goto play_move_down::@11
to:play_move_down::@10
play_move_down::@11: scope:[play_move_down] from play_move_down::@14
next_piece_idx#42 = phi( play_move_down::@14/next_piece_idx#53 )
game_over#40 = phi( play_move_down::@14/game_over#51 )
current_xpos#66 = phi( play_move_down::@14/current_xpos#85 )
current_piece_gfx#53 = phi( play_move_down::@14/current_piece_gfx#70 )
current_orientation#56 = phi( play_move_down::@14/current_orientation#67 )
current_piece_char#44 = phi( play_move_down::@14/current_piece_char#58 )
current_piece#45 = phi( play_move_down::@14/current_piece#59 )
level_bcd#48 = phi( play_move_down::@14/level_bcd#61 )
current_movedown_slow#53 = phi( play_move_down::@14/current_movedown_slow#65 )
level#50 = phi( play_move_down::@14/level#64 )
lines_bcd#39 = phi( play_move_down::@14/lines_bcd#51 )
current_ypos#18 = phi( play_move_down::@14/current_ypos#38 )
current_ypos#2 = ++ current_ypos#18
to:play_move_down::@12
play_move_down::@10: scope:[play_move_down] from play_move_down::@14
next_piece_idx#63 = phi( play_move_down::@14/next_piece_idx#53 )
game_over#65 = phi( play_move_down::@14/game_over#51 )
current_orientation#78 = phi( play_move_down::@14/current_orientation#67 )
current_piece_char#76 = phi( play_move_down::@14/current_piece_char#58 )
current_piece#73 = phi( play_move_down::@14/current_piece#59 )
current_piece_gfx#74 = phi( play_move_down::@14/current_piece_gfx#70 )
level_bcd#62 = phi( play_move_down::@14/level_bcd#61 )
current_movedown_slow#66 = phi( play_move_down::@14/current_movedown_slow#65 )
level#65 = phi( play_move_down::@14/level#64 )
lines_bcd#52 = phi( play_move_down::@14/lines_bcd#51 )
current_xpos#69 = phi( play_move_down::@14/current_xpos#85 )
current_ypos#46 = phi( play_move_down::@14/current_ypos#38 )
call play_lock_current
to:play_move_down::@15
play_move_down::@15: scope:[play_move_down] from play_move_down::@10
next_piece_idx#54 = phi( play_move_down::@10/next_piece_idx#63 )
game_over#52 = phi( play_move_down::@10/game_over#65 )
current_ypos#70 = phi( play_move_down::@10/current_ypos#46 )
current_xpos#86 = phi( play_move_down::@10/current_xpos#69 )
current_piece_gfx#71 = phi( play_move_down::@10/current_piece_gfx#74 )
current_orientation#68 = phi( play_move_down::@10/current_orientation#78 )
current_piece_char#59 = phi( play_move_down::@10/current_piece_char#76 )
current_piece#60 = phi( play_move_down::@10/current_piece#73 )
level_bcd#47 = phi( play_move_down::@10/level_bcd#62 )
current_movedown_slow#52 = phi( play_move_down::@10/current_movedown_slow#66 )
level#49 = phi( play_move_down::@10/level#65 )
lines_bcd#38 = phi( play_move_down::@10/lines_bcd#52 )
call play_remove_lines
play_remove_lines::return#0 = play_remove_lines::return#2
to:play_move_down::@16
play_move_down::@16: scope:[play_move_down] from play_move_down::@15
next_piece_idx#41 = phi( play_move_down::@15/next_piece_idx#54 )
game_over#39 = phi( play_move_down::@15/game_over#52 )
current_ypos#55 = phi( play_move_down::@15/current_ypos#70 )
current_xpos#65 = phi( play_move_down::@15/current_xpos#86 )
current_piece_gfx#52 = phi( play_move_down::@15/current_piece_gfx#71 )
current_orientation#55 = phi( play_move_down::@15/current_orientation#68 )
current_piece_char#43 = phi( play_move_down::@15/current_piece_char#59 )
current_piece#44 = phi( play_move_down::@15/current_piece#60 )
level_bcd#32 = phi( play_move_down::@15/level_bcd#47 )
current_movedown_slow#38 = phi( play_move_down::@15/current_movedown_slow#52 )
level#34 = phi( play_move_down::@15/level#49 )
lines_bcd#27 = phi( play_move_down::@15/lines_bcd#38 )
play_remove_lines::return#3 = phi( play_move_down::@15/play_remove_lines::return#0 )
play_move_down::$15 = play_remove_lines::return#3
play_move_down::removed#0 = play_move_down::$15
play_update_score::removed#0 = play_move_down::removed#0
call play_update_score
to:play_move_down::@17
play_move_down::@17: scope:[play_move_down] from play_move_down::@16
next_piece_idx#31 = phi( play_move_down::@16/next_piece_idx#41 )
game_over#28 = phi( play_move_down::@16/game_over#39 )
current_ypos#39 = phi( play_move_down::@16/current_ypos#55 )
current_xpos#44 = phi( play_move_down::@16/current_xpos#65 )
current_piece_gfx#36 = phi( play_move_down::@16/current_piece_gfx#52 )
current_orientation#38 = phi( play_move_down::@16/current_orientation#55 )
current_piece_char#30 = phi( play_move_down::@16/current_piece_char#43 )
current_piece#29 = phi( play_move_down::@16/current_piece#44 )
level_bcd#17 = phi( play_move_down::@16/level_bcd#5 )
current_movedown_slow#21 = phi( play_move_down::@16/current_movedown_slow#7 )
level#17 = phi( play_move_down::@16/level#5 )
lines_bcd#15 = phi( play_move_down::@16/lines_bcd#5 )
lines_bcd#2 = lines_bcd#15
level#2 = level#17
current_movedown_slow#4 = current_movedown_slow#21
level_bcd#2 = level_bcd#17
call play_spawn_current
to:play_move_down::@18
play_move_down::@18: scope:[play_move_down] from play_move_down::@17
level_bcd#49 = phi( play_move_down::@17/level_bcd#2 )
current_movedown_slow#54 = phi( play_move_down::@17/current_movedown_slow#4 )
level#51 = phi( play_move_down::@17/level#2 )
lines_bcd#40 = phi( play_move_down::@17/lines_bcd#2 )
next_piece_idx#16 = phi( play_move_down::@17/next_piece_idx#5 )
game_over#15 = phi( play_move_down::@17/game_over#5 )
current_ypos#19 = phi( play_move_down::@17/current_ypos#6 )
current_xpos#22 = phi( play_move_down::@17/current_xpos#9 )
current_piece_gfx#20 = phi( play_move_down::@17/current_piece_gfx#8 )
current_orientation#20 = phi( play_move_down::@17/current_orientation#8 )
current_piece_char#16 = phi( play_move_down::@17/current_piece_char#5 )
current_piece#15 = phi( play_move_down::@17/current_piece#5 )
current_piece#2 = current_piece#15
current_piece_char#2 = current_piece_char#16
current_orientation#3 = current_orientation#20
current_piece_gfx#3 = current_piece_gfx#20
current_xpos#3 = current_xpos#22
current_ypos#3 = current_ypos#19
game_over#2 = game_over#15
next_piece_idx#2 = next_piece_idx#16
to:play_move_down::@12
play_move_down::@12: scope:[play_move_down] from play_move_down::@11 play_move_down::@18
next_piece_idx#32 = phi( play_move_down::@11/next_piece_idx#42, play_move_down::@18/next_piece_idx#2 )
game_over#29 = phi( play_move_down::@11/game_over#40, play_move_down::@18/game_over#2 )
current_xpos#45 = phi( play_move_down::@11/current_xpos#66, play_move_down::@18/current_xpos#3 )
current_piece_gfx#37 = phi( play_move_down::@11/current_piece_gfx#53, play_move_down::@18/current_piece_gfx#3 )
current_orientation#39 = phi( play_move_down::@11/current_orientation#56, play_move_down::@18/current_orientation#3 )
current_piece_char#31 = phi( play_move_down::@11/current_piece_char#44, play_move_down::@18/current_piece_char#2 )
current_piece#30 = phi( play_move_down::@11/current_piece#45, play_move_down::@18/current_piece#2 )
level_bcd#33 = phi( play_move_down::@11/level_bcd#48, play_move_down::@18/level_bcd#49 )
current_movedown_slow#39 = phi( play_move_down::@11/current_movedown_slow#53, play_move_down::@18/current_movedown_slow#54 )
level#35 = phi( play_move_down::@11/level#50, play_move_down::@18/level#51 )
lines_bcd#28 = phi( play_move_down::@11/lines_bcd#39, play_move_down::@18/lines_bcd#40 )
current_ypos#40 = phi( play_move_down::@11/current_ypos#2, play_move_down::@18/current_ypos#3 )
current_movedown_counter#3 = 0
play_move_down::return#2 = 1
to:play_move_down::@return
play_move_down::@return: scope:[play_move_down] from play_move_down::@12 play_move_down::@4
next_piece_idx#17 = phi( play_move_down::@12/next_piece_idx#32, play_move_down::@4/next_piece_idx#33 )
game_over#16 = phi( play_move_down::@12/game_over#29, play_move_down::@4/game_over#30 )
current_xpos#23 = phi( play_move_down::@12/current_xpos#45, play_move_down::@4/current_xpos#46 )
current_piece_gfx#21 = phi( play_move_down::@12/current_piece_gfx#37, play_move_down::@4/current_piece_gfx#38 )
current_orientation#21 = phi( play_move_down::@12/current_orientation#39, play_move_down::@4/current_orientation#40 )
current_piece_char#17 = phi( play_move_down::@12/current_piece_char#31, play_move_down::@4/current_piece_char#32 )
current_piece#16 = phi( play_move_down::@12/current_piece#30, play_move_down::@4/current_piece#31 )
level_bcd#18 = phi( play_move_down::@12/level_bcd#33, play_move_down::@4/level_bcd#34 )
current_movedown_slow#22 = phi( play_move_down::@12/current_movedown_slow#39, play_move_down::@4/current_movedown_slow#40 )
level#18 = phi( play_move_down::@12/level#35, play_move_down::@4/level#36 )
lines_bcd#16 = phi( play_move_down::@12/lines_bcd#28, play_move_down::@4/lines_bcd#29 )
current_ypos#20 = phi( play_move_down::@12/current_ypos#40, play_move_down::@4/current_ypos#41 )
current_movedown_counter#15 = phi( play_move_down::@12/current_movedown_counter#3, play_move_down::@4/current_movedown_counter#25 )
play_move_down::return#5 = phi( play_move_down::@12/play_move_down::return#2, play_move_down::@4/play_move_down::return#1 )
play_move_down::return#3 = play_move_down::return#5
current_movedown_counter#4 = current_movedown_counter#15
current_ypos#4 = current_ypos#20
lines_bcd#3 = lines_bcd#16
level#3 = level#18
current_movedown_slow#5 = current_movedown_slow#22
level_bcd#3 = level_bcd#18
current_piece#3 = current_piece#16
current_piece_char#3 = current_piece_char#17
current_orientation#4 = current_orientation#21
current_piece_gfx#4 = current_piece_gfx#21
current_xpos#4 = current_xpos#23
game_over#3 = game_over#16
next_piece_idx#3 = next_piece_idx#17
return
to:@return
byte play_move_leftright(byte play_move_leftright::key_event)
play_move_leftright: scope:[play_move_leftright] from play_movement::@1
current_piece#46 = phi( play_movement::@1/current_piece#56 )
current_orientation#41 = phi( play_movement::@1/current_orientation#52 )
current_ypos#42 = phi( play_movement::@1/current_ypos#56 )
current_xpos#47 = phi( play_movement::@1/current_xpos#40 )
play_move_leftright::key_event#1 = phi( play_movement::@1/play_move_leftright::key_event#0 )
play_move_leftright::$0 = play_move_leftright::key_event#1 == KEY_COMMA
if(play_move_leftright::$0) goto play_move_leftright::@1
to:play_move_leftright::@3
play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright
current_piece#34 = phi( play_move_leftright/current_piece#46 )
current_orientation#22 = phi( play_move_leftright/current_orientation#41 )
current_ypos#21 = phi( play_move_leftright/current_ypos#42 )
current_xpos#24 = phi( play_move_leftright/current_xpos#47 )
play_move_leftright::$7 = current_xpos#24 - 1
play_collision::xpos#1 = play_move_leftright::$7
play_collision::ypos#1 = current_ypos#21
play_collision::orientation#1 = current_orientation#22
call play_collision
play_collision::return#1 = play_collision::return#5
to:play_move_leftright::@7
play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@1
current_xpos#51 = phi( play_move_leftright::@1/current_xpos#24 )
play_collision::return#12 = phi( play_move_leftright::@1/play_collision::return#1 )
play_move_leftright::$8 = play_collision::return#12
play_move_leftright::$9 = play_move_leftright::$8 == COLLISION_NONE
play_move_leftright::$10 = ! play_move_leftright::$9
if(play_move_leftright::$10) goto play_move_leftright::@2
to:play_move_leftright::@6
play_move_leftright::@3: scope:[play_move_leftright] from play_move_leftright
current_piece#47 = phi( play_move_leftright/current_piece#46 )
current_orientation#42 = phi( play_move_leftright/current_orientation#41 )
current_ypos#43 = phi( play_move_leftright/current_ypos#42 )
current_xpos#48 = phi( play_move_leftright/current_xpos#47 )
play_move_leftright::key_event#2 = phi( play_move_leftright/play_move_leftright::key_event#1 )
play_move_leftright::$1 = play_move_leftright::key_event#2 == KEY_DOT
play_move_leftright::$2 = ! play_move_leftright::$1
if(play_move_leftright::$2) goto play_move_leftright::@2
to:play_move_leftright::@4
play_move_leftright::@4: scope:[play_move_leftright] from play_move_leftright::@3
current_piece#35 = phi( play_move_leftright::@3/current_piece#47 )
current_orientation#23 = phi( play_move_leftright::@3/current_orientation#42 )
current_ypos#22 = phi( play_move_leftright::@3/current_ypos#43 )
current_xpos#25 = phi( play_move_leftright::@3/current_xpos#48 )
play_move_leftright::$3 = current_xpos#25 + 1
play_collision::xpos#2 = play_move_leftright::$3
play_collision::ypos#2 = current_ypos#22
play_collision::orientation#2 = current_orientation#23
call play_collision
play_collision::return#2 = play_collision::return#5
to:play_move_leftright::@8
play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@4
current_xpos#49 = phi( play_move_leftright::@4/current_xpos#25 )
play_collision::return#13 = phi( play_move_leftright::@4/play_collision::return#2 )
play_move_leftright::$4 = play_collision::return#13
play_move_leftright::$5 = play_move_leftright::$4 == COLLISION_NONE
play_move_leftright::$6 = ! play_move_leftright::$5
if(play_move_leftright::$6) goto play_move_leftright::@2
to:play_move_leftright::@5
play_move_leftright::@5: scope:[play_move_leftright] from play_move_leftright::@8
current_xpos#26 = phi( play_move_leftright::@8/current_xpos#49 )
current_xpos#5 = ++ current_xpos#26
play_move_leftright::return#1 = 1
to:play_move_leftright::@return
play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@2 play_move_leftright::@5 play_move_leftright::@6
current_xpos#27 = phi( play_move_leftright::@2/current_xpos#50, play_move_leftright::@5/current_xpos#5, play_move_leftright::@6/current_xpos#7 )
play_move_leftright::return#6 = phi( play_move_leftright::@2/play_move_leftright::return#3, play_move_leftright::@5/play_move_leftright::return#1, play_move_leftright::@6/play_move_leftright::return#4 )
play_move_leftright::return#2 = play_move_leftright::return#6
current_xpos#6 = current_xpos#27
return
to:@return
play_move_leftright::@2: scope:[play_move_leftright] from play_move_leftright::@3 play_move_leftright::@7 play_move_leftright::@8
current_xpos#50 = phi( play_move_leftright::@3/current_xpos#48, play_move_leftright::@7/current_xpos#51, play_move_leftright::@8/current_xpos#49 )
play_move_leftright::return#3 = 0
to:play_move_leftright::@return
play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright::@7
current_xpos#28 = phi( play_move_leftright::@7/current_xpos#51 )
current_xpos#7 = -- current_xpos#28
play_move_leftright::return#4 = 1
to:play_move_leftright::@return
byte play_move_rotate(byte play_move_rotate::key_event)
play_move_rotate: scope:[play_move_rotate] from play_movement::@4
current_piece_gfx#72 = phi( play_movement::@4/current_piece_gfx#34 )
current_piece#61 = phi( play_movement::@4/current_piece#42 )
current_ypos#57 = phi( play_movement::@4/current_ypos#52 )
current_xpos#67 = phi( play_movement::@4/current_xpos#1 )
current_orientation#43 = phi( play_movement::@4/current_orientation#35 )
play_move_rotate::key_event#1 = phi( play_movement::@4/play_move_rotate::key_event#0 )
play_move_rotate::orientation#0 = $80
play_move_rotate::$0 = play_move_rotate::key_event#1 == KEY_Z
if(play_move_rotate::$0) goto play_move_rotate::@1
to:play_move_rotate::@5
play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate
current_piece_gfx#90 = phi( play_move_rotate/current_piece_gfx#72 )
current_piece#48 = phi( play_move_rotate/current_piece#61 )
current_ypos#44 = phi( play_move_rotate/current_ypos#57 )
current_xpos#52 = phi( play_move_rotate/current_xpos#67 )
current_orientation#24 = phi( play_move_rotate/current_orientation#43 )
play_move_rotate::$7 = current_orientation#24 - $10
play_move_rotate::$8 = play_move_rotate::$7 & $3f
play_move_rotate::orientation#1 = play_move_rotate::$8
to:play_move_rotate::@3
play_move_rotate::@5: scope:[play_move_rotate] from play_move_rotate
current_piece#62 = phi( play_move_rotate/current_piece#61 )
current_piece_gfx#54 = phi( play_move_rotate/current_piece_gfx#72 )
current_ypos#58 = phi( play_move_rotate/current_ypos#57 )
current_xpos#68 = phi( play_move_rotate/current_xpos#67 )
current_orientation#44 = phi( play_move_rotate/current_orientation#43 )
play_move_rotate::key_event#2 = phi( play_move_rotate/play_move_rotate::key_event#1 )
play_move_rotate::$1 = play_move_rotate::key_event#2 == KEY_X
if(play_move_rotate::$1) goto play_move_rotate::@2
to:play_move_rotate::@6
play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@5
current_piece_gfx#91 = phi( play_move_rotate::@5/current_piece_gfx#54 )
current_piece#49 = phi( play_move_rotate::@5/current_piece#62 )
current_ypos#45 = phi( play_move_rotate::@5/current_ypos#58 )
current_xpos#53 = phi( play_move_rotate::@5/current_xpos#68 )
current_orientation#25 = phi( play_move_rotate::@5/current_orientation#44 )
play_move_rotate::$5 = current_orientation#25 + $10
play_move_rotate::$6 = play_move_rotate::$5 & $3f
play_move_rotate::orientation#2 = play_move_rotate::$6
to:play_move_rotate::@3
play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate::@5
current_piece_gfx#40 = phi( play_move_rotate::@5/current_piece_gfx#54 )
current_orientation#46 = phi( play_move_rotate::@5/current_orientation#44 )
play_move_rotate::return#1 = 0
to:play_move_rotate::@return
play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@4 play_move_rotate::@6 play_move_rotate::@7
current_piece_gfx#22 = phi( play_move_rotate::@4/current_piece_gfx#39, play_move_rotate::@6/current_piece_gfx#40, play_move_rotate::@7/current_piece_gfx#6 )
current_orientation#26 = phi( play_move_rotate::@4/current_orientation#45, play_move_rotate::@6/current_orientation#46, play_move_rotate::@7/current_orientation#6 )
play_move_rotate::return#6 = phi( play_move_rotate::@4/play_move_rotate::return#3, play_move_rotate::@6/play_move_rotate::return#1, play_move_rotate::@7/play_move_rotate::return#4 )
play_move_rotate::return#2 = play_move_rotate::return#6
current_orientation#5 = current_orientation#26
current_piece_gfx#5 = current_piece_gfx#22
return
to:@return
play_move_rotate::@3: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2
current_piece_gfx#73 = phi( play_move_rotate::@1/current_piece_gfx#90, play_move_rotate::@2/current_piece_gfx#91 )
current_orientation#69 = phi( play_move_rotate::@1/current_orientation#24, play_move_rotate::@2/current_orientation#25 )
current_piece#36 = phi( play_move_rotate::@1/current_piece#48, play_move_rotate::@2/current_piece#49 )
play_move_rotate::orientation#3 = phi( play_move_rotate::@1/play_move_rotate::orientation#1, play_move_rotate::@2/play_move_rotate::orientation#2 )
current_ypos#23 = phi( play_move_rotate::@1/current_ypos#44, play_move_rotate::@2/current_ypos#45 )
current_xpos#29 = phi( play_move_rotate::@1/current_xpos#52, play_move_rotate::@2/current_xpos#53 )
play_collision::xpos#3 = current_xpos#29
play_collision::ypos#3 = current_ypos#23
play_collision::orientation#3 = play_move_rotate::orientation#3
call play_collision
play_collision::return#3 = play_collision::return#5
to:play_move_rotate::@8
play_move_rotate::@8: scope:[play_move_rotate] from play_move_rotate::@3
current_piece_gfx#55 = phi( play_move_rotate::@3/current_piece_gfx#73 )
current_orientation#57 = phi( play_move_rotate::@3/current_orientation#69 )
current_piece#32 = phi( play_move_rotate::@3/current_piece#36 )
play_move_rotate::orientation#5 = phi( play_move_rotate::@3/play_move_rotate::orientation#3 )
play_collision::return#14 = phi( play_move_rotate::@3/play_collision::return#3 )
play_move_rotate::$2 = play_collision::return#14
play_move_rotate::$3 = play_move_rotate::$2 == COLLISION_NONE
play_move_rotate::$4 = ! play_move_rotate::$3
if(play_move_rotate::$4) goto play_move_rotate::@4
to:play_move_rotate::@7
play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@8
current_piece_gfx#39 = phi( play_move_rotate::@8/current_piece_gfx#55 )
current_orientation#45 = phi( play_move_rotate::@8/current_orientation#57 )
play_move_rotate::return#3 = 0
to:play_move_rotate::@return
play_move_rotate::@7: scope:[play_move_rotate] from play_move_rotate::@8
current_piece#17 = phi( play_move_rotate::@8/current_piece#32 )
play_move_rotate::orientation#4 = phi( play_move_rotate::@8/play_move_rotate::orientation#5 )
current_orientation#6 = play_move_rotate::orientation#4
play_move_rotate::$9 = current_piece#17 + current_orientation#6
current_piece_gfx#6 = play_move_rotate::$9
play_move_rotate::return#4 = 1
to:play_move_rotate::@return
byte play_collision(byte play_collision::xpos , byte play_collision::ypos , byte play_collision::orientation)
play_collision: scope:[play_collision] from play_move_down::@9 play_move_leftright::@1 play_move_leftright::@4 play_move_rotate::@3 play_spawn_current
play_collision::xpos#6 = phi( play_move_down::@9/play_collision::xpos#0, play_move_leftright::@1/play_collision::xpos#1, play_move_leftright::@4/play_collision::xpos#2, play_move_rotate::@3/play_collision::xpos#3, play_spawn_current/play_collision::xpos#4 )
play_collision::ypos#5 = phi( play_move_down::@9/play_collision::ypos#0, play_move_leftright::@1/play_collision::ypos#1, play_move_leftright::@4/play_collision::ypos#2, play_move_rotate::@3/play_collision::ypos#3, play_spawn_current/play_collision::ypos#4 )
play_collision::orientation#5 = phi( play_move_down::@9/play_collision::orientation#0, play_move_leftright::@1/play_collision::orientation#1, play_move_leftright::@4/play_collision::orientation#2, play_move_rotate::@3/play_collision::orientation#3, play_spawn_current/play_collision::orientation#4 )
current_piece#18 = phi( play_move_down::@9/current_piece#33, play_move_leftright::@1/current_piece#34, play_move_leftright::@4/current_piece#35, play_move_rotate::@3/current_piece#36, play_spawn_current/current_piece#4 )
play_collision::$0 = current_piece#18 + play_collision::orientation#5
play_collision::piece_gfx#0 = play_collision::$0
play_collision::i#0 = 0
play_collision::yp#0 = play_collision::ypos#5
play_collision::l#0 = 0
to:play_collision::@1
play_collision::@1: scope:[play_collision] from play_collision play_collision::@12
play_collision::l#6 = phi( play_collision/play_collision::l#0, play_collision::@12/play_collision::l#1 )
play_collision::i#3 = phi( play_collision/play_collision::i#0, play_collision::@12/play_collision::i#5 )
play_collision::piece_gfx#2 = phi( play_collision/play_collision::piece_gfx#0, play_collision::@12/play_collision::piece_gfx#4 )
play_collision::xpos#5 = phi( play_collision/play_collision::xpos#6, play_collision::@12/play_collision::xpos#7 )
play_collision::yp#2 = phi( play_collision/play_collision::yp#0, play_collision::@12/play_collision::yp#1 )
play_collision::$14 = play_collision::yp#2 * SIZEOF_POINTER
play_collision::playfield_line#0 = playfield_lines[play_collision::$14]
play_collision::xp#0 = play_collision::xpos#5
play_collision::c#0 = 0
to:play_collision::@2
play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@3
play_collision::playfield_line#5 = phi( play_collision::@1/play_collision::playfield_line#0, play_collision::@3/play_collision::playfield_line#6 )
play_collision::xpos#9 = phi( play_collision::@1/play_collision::xpos#5, play_collision::@3/play_collision::xpos#8 )
play_collision::l#4 = phi( play_collision::@1/play_collision::l#6, play_collision::@3/play_collision::l#3 )
play_collision::yp#5 = phi( play_collision::@1/play_collision::yp#2, play_collision::@3/play_collision::yp#6 )
play_collision::c#3 = phi( play_collision::@1/play_collision::c#0, play_collision::@3/play_collision::c#1 )
play_collision::xp#6 = phi( play_collision::@1/play_collision::xp#0, play_collision::@3/play_collision::xp#1 )
play_collision::i#2 = phi( play_collision::@1/play_collision::i#3, play_collision::@3/play_collision::i#4 )
play_collision::piece_gfx#1 = phi( play_collision::@1/play_collision::piece_gfx#2, play_collision::@3/play_collision::piece_gfx#3 )
play_collision::$1 = play_collision::piece_gfx#1[play_collision::i#2] != 0
play_collision::i#1 = ++ play_collision::i#2
play_collision::$2 = ! play_collision::$1
if(play_collision::$2) goto play_collision::@3
to:play_collision::@10
play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@6
play_collision::playfield_line#6 = phi( play_collision::@2/play_collision::playfield_line#5, play_collision::@6/play_collision::playfield_line#1 )
play_collision::xpos#8 = phi( play_collision::@2/play_collision::xpos#9, play_collision::@6/play_collision::xpos#10 )
play_collision::l#3 = phi( play_collision::@2/play_collision::l#4, play_collision::@6/play_collision::l#5 )
play_collision::yp#6 = phi( play_collision::@2/play_collision::yp#5, play_collision::@6/play_collision::yp#7 )
play_collision::i#4 = phi( play_collision::@2/play_collision::i#1, play_collision::@6/play_collision::i#6 )
play_collision::piece_gfx#3 = phi( play_collision::@2/play_collision::piece_gfx#1, play_collision::@6/play_collision::piece_gfx#5 )
play_collision::c#2 = phi( play_collision::@2/play_collision::c#3, play_collision::@6/play_collision::c#4 )
play_collision::xp#2 = phi( play_collision::@2/play_collision::xp#6, play_collision::@6/play_collision::xp#5 )
play_collision::xp#1 = ++ play_collision::xp#2
play_collision::c#1 = play_collision::c#2 + rangenext(0,3)
play_collision::$12 = play_collision::c#1 != rangelast(0,3)
if(play_collision::$12) goto play_collision::@2
to:play_collision::@12
play_collision::@10: scope:[play_collision] from play_collision::@2
play_collision::xpos#13 = phi( play_collision::@2/play_collision::xpos#9 )
play_collision::l#9 = phi( play_collision::@2/play_collision::l#4 )
play_collision::i#9 = phi( play_collision::@2/play_collision::i#1 )
play_collision::piece_gfx#8 = phi( play_collision::@2/play_collision::piece_gfx#1 )
play_collision::c#7 = phi( play_collision::@2/play_collision::c#3 )
play_collision::playfield_line#4 = phi( play_collision::@2/play_collision::playfield_line#5 )
play_collision::xp#7 = phi( play_collision::@2/play_collision::xp#6 )
play_collision::yp#3 = phi( play_collision::@2/play_collision::yp#5 )
play_collision::$3 = play_collision::yp#3 >= PLAYFIELD_LINES
play_collision::$4 = ! play_collision::$3
if(play_collision::$4) goto play_collision::@4
to:play_collision::@11
play_collision::@4: scope:[play_collision] from play_collision::@10
play_collision::xpos#12 = phi( play_collision::@10/play_collision::xpos#13 )
play_collision::l#8 = phi( play_collision::@10/play_collision::l#9 )
play_collision::yp#9 = phi( play_collision::@10/play_collision::yp#3 )
play_collision::i#8 = phi( play_collision::@10/play_collision::i#9 )
play_collision::piece_gfx#7 = phi( play_collision::@10/play_collision::piece_gfx#8 )
play_collision::c#6 = phi( play_collision::@10/play_collision::c#7 )
play_collision::playfield_line#3 = phi( play_collision::@10/play_collision::playfield_line#4 )
play_collision::xp#3 = phi( play_collision::@10/play_collision::xp#7 )
play_collision::$5 = play_collision::xp#3 & $80
play_collision::$6 = play_collision::$5 != 0
play_collision::$7 = ! play_collision::$6
if(play_collision::$7) goto play_collision::@5
to:play_collision::@7
play_collision::@11: scope:[play_collision] from play_collision::@10
play_collision::return#4 = COLLISION_BOTTOM
to:play_collision::@return
play_collision::@return: scope:[play_collision] from play_collision::@11 play_collision::@13 play_collision::@7 play_collision::@8 play_collision::@9
play_collision::return#15 = phi( play_collision::@11/play_collision::return#4, play_collision::@13/play_collision::return#9, play_collision::@7/play_collision::return#6, play_collision::@8/play_collision::return#7, play_collision::@9/play_collision::return#8 )
play_collision::return#5 = play_collision::return#15
return
to:@return
play_collision::@5: scope:[play_collision] from play_collision::@4
play_collision::xpos#11 = phi( play_collision::@4/play_collision::xpos#12 )
play_collision::l#7 = phi( play_collision::@4/play_collision::l#8 )
play_collision::yp#8 = phi( play_collision::@4/play_collision::yp#9 )
play_collision::i#7 = phi( play_collision::@4/play_collision::i#8 )
play_collision::piece_gfx#6 = phi( play_collision::@4/play_collision::piece_gfx#7 )
play_collision::c#5 = phi( play_collision::@4/play_collision::c#6 )
play_collision::playfield_line#2 = phi( play_collision::@4/play_collision::playfield_line#3 )
play_collision::xp#4 = phi( play_collision::@4/play_collision::xp#3 )
play_collision::$8 = play_collision::xp#4 >= PLAYFIELD_COLS
play_collision::$9 = ! play_collision::$8
if(play_collision::$9) goto play_collision::@6
to:play_collision::@8
play_collision::@7: scope:[play_collision] from play_collision::@4
play_collision::return#6 = COLLISION_LEFT
to:play_collision::@return
play_collision::@6: scope:[play_collision] from play_collision::@5
play_collision::xpos#10 = phi( play_collision::@5/play_collision::xpos#11 )
play_collision::l#5 = phi( play_collision::@5/play_collision::l#7 )
play_collision::yp#7 = phi( play_collision::@5/play_collision::yp#8 )
play_collision::i#6 = phi( play_collision::@5/play_collision::i#7 )
play_collision::piece_gfx#5 = phi( play_collision::@5/play_collision::piece_gfx#6 )
play_collision::c#4 = phi( play_collision::@5/play_collision::c#5 )
play_collision::xp#5 = phi( play_collision::@5/play_collision::xp#4 )
play_collision::playfield_line#1 = phi( play_collision::@5/play_collision::playfield_line#2 )
play_collision::$10 = play_collision::playfield_line#1[play_collision::xp#5] != 0
play_collision::$11 = ! play_collision::$10
if(play_collision::$11) goto play_collision::@3
to:play_collision::@9
play_collision::@8: scope:[play_collision] from play_collision::@5
play_collision::return#7 = COLLISION_RIGHT
to:play_collision::@return
play_collision::@9: scope:[play_collision] from play_collision::@6
play_collision::return#8 = COLLISION_PLAYFIELD
to:play_collision::@return
play_collision::@12: scope:[play_collision] from play_collision::@3
play_collision::i#5 = phi( play_collision::@3/play_collision::i#4 )
play_collision::piece_gfx#4 = phi( play_collision::@3/play_collision::piece_gfx#3 )
play_collision::xpos#7 = phi( play_collision::@3/play_collision::xpos#8 )
play_collision::l#2 = phi( play_collision::@3/play_collision::l#3 )
play_collision::yp#4 = phi( play_collision::@3/play_collision::yp#6 )
play_collision::yp#1 = ++ play_collision::yp#4
play_collision::l#1 = play_collision::l#2 + rangenext(0,3)
play_collision::$13 = play_collision::l#1 != rangelast(0,3)
if(play_collision::$13) goto play_collision::@1
to:play_collision::@13
play_collision::@13: scope:[play_collision] from play_collision::@12
play_collision::return#9 = COLLISION_NONE
to:play_collision::@return
void play_lock_current()
play_lock_current: scope:[play_lock_current] from play_move_down::@10
current_piece_char#60 = phi( play_move_down::@10/current_piece_char#76 )
current_piece_gfx#56 = phi( play_move_down::@10/current_piece_gfx#74 )
current_xpos#54 = phi( play_move_down::@10/current_xpos#69 )
current_ypos#24 = phi( play_move_down::@10/current_ypos#46 )
play_lock_current::i#0 = 0
play_lock_current::yp#0 = current_ypos#24
play_lock_current::l#0 = 0
to:play_lock_current::@1
play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@5
play_lock_current::l#6 = phi( play_lock_current/play_lock_current::l#0, play_lock_current::@5/play_lock_current::l#1 )
current_piece_char#45 = phi( play_lock_current/current_piece_char#60, play_lock_current::@5/current_piece_char#61 )
play_lock_current::i#3 = phi( play_lock_current/play_lock_current::i#0, play_lock_current::@5/play_lock_current::i#5 )
current_piece_gfx#41 = phi( play_lock_current/current_piece_gfx#56, play_lock_current::@5/current_piece_gfx#57 )
current_xpos#30 = phi( play_lock_current/current_xpos#54, play_lock_current::@5/current_xpos#55 )
play_lock_current::yp#2 = phi( play_lock_current/play_lock_current::yp#0, play_lock_current::@5/play_lock_current::yp#1 )
play_lock_current::$4 = play_lock_current::yp#2 * SIZEOF_POINTER
play_lock_current::playfield_line#0 = playfield_lines[play_lock_current::$4]
play_lock_current::xp#0 = current_xpos#30
play_lock_current::c#0 = 0
to:play_lock_current::@2
play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@3
current_xpos#87 = phi( play_lock_current::@1/current_xpos#30, play_lock_current::@3/current_xpos#70 )
play_lock_current::l#4 = phi( play_lock_current::@1/play_lock_current::l#6, play_lock_current::@3/play_lock_current::l#3 )
play_lock_current::yp#5 = phi( play_lock_current::@1/play_lock_current::yp#2, play_lock_current::@3/play_lock_current::yp#4 )
play_lock_current::playfield_line#2 = phi( play_lock_current::@1/play_lock_current::playfield_line#0, play_lock_current::@3/play_lock_current::playfield_line#3 )
current_piece_char#33 = phi( play_lock_current::@1/current_piece_char#45, play_lock_current::@3/current_piece_char#46 )
play_lock_current::c#3 = phi( play_lock_current::@1/play_lock_current::c#0, play_lock_current::@3/play_lock_current::c#1 )
play_lock_current::xp#4 = phi( play_lock_current::@1/play_lock_current::xp#0, play_lock_current::@3/play_lock_current::xp#1 )
play_lock_current::i#2 = phi( play_lock_current::@1/play_lock_current::i#3, play_lock_current::@3/play_lock_current::i#4 )
current_piece_gfx#23 = phi( play_lock_current::@1/current_piece_gfx#41, play_lock_current::@3/current_piece_gfx#42 )
play_lock_current::$0 = current_piece_gfx#23[play_lock_current::i#2] != 0
play_lock_current::i#1 = ++ play_lock_current::i#2
play_lock_current::$1 = ! play_lock_current::$0
if(play_lock_current::$1) goto play_lock_current::@3
to:play_lock_current::@4
play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4
current_xpos#70 = phi( play_lock_current::@2/current_xpos#87, play_lock_current::@4/current_xpos#88 )
play_lock_current::playfield_line#3 = phi( play_lock_current::@2/play_lock_current::playfield_line#2, play_lock_current::@4/play_lock_current::playfield_line#1 )
current_piece_char#46 = phi( play_lock_current::@2/current_piece_char#33, play_lock_current::@4/current_piece_char#18 )
play_lock_current::l#3 = phi( play_lock_current::@2/play_lock_current::l#4, play_lock_current::@4/play_lock_current::l#5 )
play_lock_current::yp#4 = phi( play_lock_current::@2/play_lock_current::yp#5, play_lock_current::@4/play_lock_current::yp#6 )
play_lock_current::i#4 = phi( play_lock_current::@2/play_lock_current::i#1, play_lock_current::@4/play_lock_current::i#6 )
current_piece_gfx#42 = phi( play_lock_current::@2/current_piece_gfx#23, play_lock_current::@4/current_piece_gfx#58 )
play_lock_current::c#2 = phi( play_lock_current::@2/play_lock_current::c#3, play_lock_current::@4/play_lock_current::c#4 )
play_lock_current::xp#2 = phi( play_lock_current::@2/play_lock_current::xp#4, play_lock_current::@4/play_lock_current::xp#3 )
play_lock_current::xp#1 = ++ play_lock_current::xp#2
play_lock_current::c#1 = play_lock_current::c#2 + rangenext(0,3)
play_lock_current::$2 = play_lock_current::c#1 != rangelast(0,3)
if(play_lock_current::$2) goto play_lock_current::@2
to:play_lock_current::@5
play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2
current_xpos#88 = phi( play_lock_current::@2/current_xpos#87 )
play_lock_current::l#5 = phi( play_lock_current::@2/play_lock_current::l#4 )
play_lock_current::yp#6 = phi( play_lock_current::@2/play_lock_current::yp#5 )
play_lock_current::i#6 = phi( play_lock_current::@2/play_lock_current::i#1 )
current_piece_gfx#58 = phi( play_lock_current::@2/current_piece_gfx#23 )
play_lock_current::c#4 = phi( play_lock_current::@2/play_lock_current::c#3 )
play_lock_current::xp#3 = phi( play_lock_current::@2/play_lock_current::xp#4 )
play_lock_current::playfield_line#1 = phi( play_lock_current::@2/play_lock_current::playfield_line#2 )
current_piece_char#18 = phi( play_lock_current::@2/current_piece_char#33 )
play_lock_current::playfield_line#1[play_lock_current::xp#3] = current_piece_char#18
to:play_lock_current::@3
play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3
current_piece_char#61 = phi( play_lock_current::@3/current_piece_char#46 )
play_lock_current::i#5 = phi( play_lock_current::@3/play_lock_current::i#4 )
current_piece_gfx#57 = phi( play_lock_current::@3/current_piece_gfx#42 )
current_xpos#55 = phi( play_lock_current::@3/current_xpos#70 )
play_lock_current::l#2 = phi( play_lock_current::@3/play_lock_current::l#3 )
play_lock_current::yp#3 = phi( play_lock_current::@3/play_lock_current::yp#4 )
play_lock_current::yp#1 = ++ play_lock_current::yp#3
play_lock_current::l#1 = play_lock_current::l#2 + rangenext(0,3)
play_lock_current::$3 = play_lock_current::l#1 != rangelast(0,3)
if(play_lock_current::$3) goto play_lock_current::@1
to:play_lock_current::@return
play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5
return
to:@return
void play_spawn_current()
play_spawn_current: scope:[play_spawn_current] from main::@13 main::@14 play_move_down::@17
game_over#75 = phi( main::@13/game_over#32, main::@14/game_over#6, play_move_down::@17/game_over#28 )
next_piece_idx#18 = phi( main::@13/next_piece_idx#34, main::@14/next_piece_idx#6, play_move_down::@17/next_piece_idx#31 )
play_spawn_current::current_piece_idx#0 = next_piece_idx#18
play_spawn_current::$7 = play_spawn_current::current_piece_idx#0 * SIZEOF_WORD
current_piece#4 = ((byte*)) PIECES[play_spawn_current::$7]
current_piece_char#4 = PIECES_CHARS[play_spawn_current::current_piece_idx#0]
current_orientation#7 = 0
play_spawn_current::$0 = current_piece#4 + current_orientation#7
current_piece_gfx#7 = play_spawn_current::$0
current_xpos#8 = PIECES_START_X[play_spawn_current::current_piece_idx#0]
current_ypos#5 = PIECES_START_Y[play_spawn_current::current_piece_idx#0]
play_collision::xpos#4 = current_xpos#8
play_collision::ypos#4 = current_ypos#5
play_collision::orientation#4 = current_orientation#7
call play_collision
play_collision::return#10 = play_collision::return#5
to:play_spawn_current::@6
play_spawn_current::@6: scope:[play_spawn_current] from play_spawn_current
game_over#66 = phi( play_spawn_current/game_over#75 )
current_ypos#81 = phi( play_spawn_current/current_ypos#5 )
current_xpos#101 = phi( play_spawn_current/current_xpos#8 )
current_piece_gfx#93 = phi( play_spawn_current/current_piece_gfx#7 )
current_orientation#80 = phi( play_spawn_current/current_orientation#7 )
current_piece_char#78 = phi( play_spawn_current/current_piece_char#4 )
current_piece#75 = phi( play_spawn_current/current_piece#4 )
play_collision::return#16 = phi( play_spawn_current/play_collision::return#10 )
play_spawn_current::$1 = play_collision::return#16
play_spawn_current::$2 = play_spawn_current::$1 == COLLISION_PLAYFIELD
play_spawn_current::$3 = ! play_spawn_current::$2
if(play_spawn_current::$3) goto play_spawn_current::@1
to:play_spawn_current::@2
play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current::@2 play_spawn_current::@6
game_over#53 = phi( play_spawn_current::@2/game_over#4, play_spawn_current::@6/game_over#66 )
current_ypos#71 = phi( play_spawn_current::@2/current_ypos#80, play_spawn_current::@6/current_ypos#81 )
current_xpos#89 = phi( play_spawn_current::@2/current_xpos#100, play_spawn_current::@6/current_xpos#101 )
current_piece_gfx#75 = phi( play_spawn_current::@2/current_piece_gfx#92, play_spawn_current::@6/current_piece_gfx#93 )
current_orientation#70 = phi( play_spawn_current::@2/current_orientation#79, play_spawn_current::@6/current_orientation#80 )
current_piece_char#62 = phi( play_spawn_current::@2/current_piece_char#77, play_spawn_current::@6/current_piece_char#78 )
current_piece#63 = phi( play_spawn_current::@2/current_piece#74, play_spawn_current::@6/current_piece#75 )
play_spawn_current::piece_idx#0 = 7
to:play_spawn_current::@3
play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@6
current_ypos#80 = phi( play_spawn_current::@6/current_ypos#81 )
current_xpos#100 = phi( play_spawn_current::@6/current_xpos#101 )
current_piece_gfx#92 = phi( play_spawn_current::@6/current_piece_gfx#93 )
current_orientation#79 = phi( play_spawn_current::@6/current_orientation#80 )
current_piece_char#77 = phi( play_spawn_current::@6/current_piece_char#78 )
current_piece#74 = phi( play_spawn_current::@6/current_piece#75 )
game_over#4 = 1
to:play_spawn_current::@1
play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::@1 play_spawn_current::@5
game_over#41 = phi( play_spawn_current::@1/game_over#53, play_spawn_current::@5/game_over#54 )
current_ypos#59 = phi( play_spawn_current::@1/current_ypos#71, play_spawn_current::@5/current_ypos#72 )
current_xpos#71 = phi( play_spawn_current::@1/current_xpos#89, play_spawn_current::@5/current_xpos#90 )
current_piece_gfx#59 = phi( play_spawn_current::@1/current_piece_gfx#75, play_spawn_current::@5/current_piece_gfx#76 )
current_orientation#58 = phi( play_spawn_current::@1/current_orientation#70, play_spawn_current::@5/current_orientation#71 )
current_piece_char#47 = phi( play_spawn_current::@1/current_piece_char#62, play_spawn_current::@5/current_piece_char#63 )
current_piece#50 = phi( play_spawn_current::@1/current_piece#63, play_spawn_current::@5/current_piece#64 )
play_spawn_current::piece_idx#2 = phi( play_spawn_current::@1/play_spawn_current::piece_idx#0, play_spawn_current::@5/play_spawn_current::piece_idx#1 )
play_spawn_current::$4 = play_spawn_current::piece_idx#2 == 7
if(play_spawn_current::$4) goto play_spawn_current::sid_rnd1
to:play_spawn_current::@4
play_spawn_current::sid_rnd1: scope:[play_spawn_current] from play_spawn_current::@3
game_over#76 = phi( play_spawn_current::@3/game_over#41 )
current_ypos#90 = phi( play_spawn_current::@3/current_ypos#59 )
current_xpos#111 = phi( play_spawn_current::@3/current_xpos#71 )
current_piece_gfx#101 = phi( play_spawn_current::@3/current_piece_gfx#59 )
current_orientation#89 = phi( play_spawn_current::@3/current_orientation#58 )
current_piece_char#89 = phi( play_spawn_current::@3/current_piece_char#47 )
current_piece#83 = phi( play_spawn_current::@3/current_piece#50 )
play_spawn_current::sid_rnd1_return#0 = *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC)
to:play_spawn_current::sid_rnd1_@return
play_spawn_current::sid_rnd1_@return: scope:[play_spawn_current] from play_spawn_current::sid_rnd1
game_over#67 = phi( play_spawn_current::sid_rnd1/game_over#76 )
current_ypos#82 = phi( play_spawn_current::sid_rnd1/current_ypos#90 )
current_xpos#102 = phi( play_spawn_current::sid_rnd1/current_xpos#111 )
current_piece_gfx#94 = phi( play_spawn_current::sid_rnd1/current_piece_gfx#101 )
current_orientation#81 = phi( play_spawn_current::sid_rnd1/current_orientation#89 )
current_piece_char#79 = phi( play_spawn_current::sid_rnd1/current_piece_char#89 )
current_piece#76 = phi( play_spawn_current::sid_rnd1/current_piece#83 )
play_spawn_current::sid_rnd1_return#2 = phi( play_spawn_current::sid_rnd1/play_spawn_current::sid_rnd1_return#0 )
play_spawn_current::sid_rnd1_return#1 = play_spawn_current::sid_rnd1_return#2
to:play_spawn_current::@5
play_spawn_current::@5: scope:[play_spawn_current] from play_spawn_current::sid_rnd1_@return
game_over#54 = phi( play_spawn_current::sid_rnd1_@return/game_over#67 )
current_ypos#72 = phi( play_spawn_current::sid_rnd1_@return/current_ypos#82 )
current_xpos#90 = phi( play_spawn_current::sid_rnd1_@return/current_xpos#102 )
current_piece_gfx#76 = phi( play_spawn_current::sid_rnd1_@return/current_piece_gfx#94 )
current_orientation#71 = phi( play_spawn_current::sid_rnd1_@return/current_orientation#81 )
current_piece_char#63 = phi( play_spawn_current::sid_rnd1_@return/current_piece_char#79 )
current_piece#64 = phi( play_spawn_current::sid_rnd1_@return/current_piece#76 )
play_spawn_current::sid_rnd1_return#3 = phi( play_spawn_current::sid_rnd1_@return/play_spawn_current::sid_rnd1_return#1 )
play_spawn_current::$5 = play_spawn_current::sid_rnd1_return#3
play_spawn_current::$6 = play_spawn_current::$5 & 7
play_spawn_current::piece_idx#1 = play_spawn_current::$6
to:play_spawn_current::@3
play_spawn_current::@4: scope:[play_spawn_current] from play_spawn_current::@3
game_over#31 = phi( play_spawn_current::@3/game_over#41 )
current_ypos#47 = phi( play_spawn_current::@3/current_ypos#59 )
current_xpos#56 = phi( play_spawn_current::@3/current_xpos#71 )
current_piece_gfx#43 = phi( play_spawn_current::@3/current_piece_gfx#59 )
current_orientation#47 = phi( play_spawn_current::@3/current_orientation#58 )
current_piece_char#34 = phi( play_spawn_current::@3/current_piece_char#47 )
current_piece#37 = phi( play_spawn_current::@3/current_piece#50 )
play_spawn_current::piece_idx#3 = phi( play_spawn_current::@3/play_spawn_current::piece_idx#2 )
next_piece_idx#4 = play_spawn_current::piece_idx#3
to:play_spawn_current::@return
play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@4
next_piece_idx#19 = phi( play_spawn_current::@4/next_piece_idx#4 )
game_over#17 = phi( play_spawn_current::@4/game_over#31 )
current_ypos#25 = phi( play_spawn_current::@4/current_ypos#47 )
current_xpos#31 = phi( play_spawn_current::@4/current_xpos#56 )
current_piece_gfx#24 = phi( play_spawn_current::@4/current_piece_gfx#43 )
current_orientation#27 = phi( play_spawn_current::@4/current_orientation#47 )
current_piece_char#19 = phi( play_spawn_current::@4/current_piece_char#34 )
current_piece#19 = phi( play_spawn_current::@4/current_piece#37 )
current_piece#5 = current_piece#19
current_piece_char#5 = current_piece_char#19
current_orientation#8 = current_orientation#27
current_piece_gfx#8 = current_piece_gfx#24
current_xpos#9 = current_xpos#31
current_ypos#6 = current_ypos#25
game_over#5 = game_over#17
next_piece_idx#5 = next_piece_idx#19
return
to:@return
byte play_remove_lines()
play_remove_lines: scope:[play_remove_lines] from play_move_down::@15
play_remove_lines::r#0 = (byte)PLAYFIELD_LINES*PLAYFIELD_COLS-1
play_remove_lines::w#0 = (byte)PLAYFIELD_LINES*PLAYFIELD_COLS-1
play_remove_lines::removed#0 = 0
play_remove_lines::y#0 = 0
to:play_remove_lines::@1
play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@7
play_remove_lines::removed#11 = phi( play_remove_lines/play_remove_lines::removed#0, play_remove_lines::@7/play_remove_lines::removed#7 )
play_remove_lines::y#8 = phi( play_remove_lines/play_remove_lines::y#0, play_remove_lines::@7/play_remove_lines::y#1 )
play_remove_lines::w#12 = phi( play_remove_lines/play_remove_lines::w#0, play_remove_lines::@7/play_remove_lines::w#11 )
play_remove_lines::r#3 = phi( play_remove_lines/play_remove_lines::r#0, play_remove_lines::@7/play_remove_lines::r#5 )
play_remove_lines::full#0 = 1
play_remove_lines::x#0 = 0
to:play_remove_lines::@2
play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3
play_remove_lines::removed#9 = phi( play_remove_lines::@1/play_remove_lines::removed#11, play_remove_lines::@3/play_remove_lines::removed#6 )
play_remove_lines::y#6 = phi( play_remove_lines::@1/play_remove_lines::y#8, play_remove_lines::@3/play_remove_lines::y#5 )
play_remove_lines::full#4 = phi( play_remove_lines::@1/play_remove_lines::full#0, play_remove_lines::@3/play_remove_lines::full#3 )
play_remove_lines::x#3 = phi( play_remove_lines::@1/play_remove_lines::x#0, play_remove_lines::@3/play_remove_lines::x#1 )
play_remove_lines::w#8 = phi( play_remove_lines::@1/play_remove_lines::w#12, play_remove_lines::@3/play_remove_lines::w#1 )
play_remove_lines::r#2 = phi( play_remove_lines::@1/play_remove_lines::r#3, play_remove_lines::@3/play_remove_lines::r#4 )
play_remove_lines::c#0 = playfield[play_remove_lines::r#2]
play_remove_lines::r#1 = -- play_remove_lines::r#2
play_remove_lines::$0 = play_remove_lines::c#0 == 0
play_remove_lines::$1 = ! play_remove_lines::$0
if(play_remove_lines::$1) goto play_remove_lines::@3
to:play_remove_lines::@4
play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@2 play_remove_lines::@4
play_remove_lines::removed#6 = phi( play_remove_lines::@2/play_remove_lines::removed#9, play_remove_lines::@4/play_remove_lines::removed#10 )
play_remove_lines::y#5 = phi( play_remove_lines::@2/play_remove_lines::y#6, play_remove_lines::@4/play_remove_lines::y#7 )
play_remove_lines::full#3 = phi( play_remove_lines::@2/play_remove_lines::full#4, play_remove_lines::@4/play_remove_lines::full#1 )
play_remove_lines::r#4 = phi( play_remove_lines::@2/play_remove_lines::r#1, play_remove_lines::@4/play_remove_lines::r#6 )
play_remove_lines::x#2 = phi( play_remove_lines::@2/play_remove_lines::x#3, play_remove_lines::@4/play_remove_lines::x#4 )
play_remove_lines::w#4 = phi( play_remove_lines::@2/play_remove_lines::w#8, play_remove_lines::@4/play_remove_lines::w#9 )
play_remove_lines::c#1 = phi( play_remove_lines::@2/play_remove_lines::c#0, play_remove_lines::@4/play_remove_lines::c#2 )
playfield[play_remove_lines::w#4] = play_remove_lines::c#1
play_remove_lines::w#1 = -- play_remove_lines::w#4
play_remove_lines::x#1 = play_remove_lines::x#2 + rangenext(0,PLAYFIELD_COLS-1)
play_remove_lines::$2 = play_remove_lines::x#1 != rangelast(0,PLAYFIELD_COLS-1)
if(play_remove_lines::$2) goto play_remove_lines::@2
to:play_remove_lines::@5
play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@2
play_remove_lines::removed#10 = phi( play_remove_lines::@2/play_remove_lines::removed#9 )
play_remove_lines::y#7 = phi( play_remove_lines::@2/play_remove_lines::y#6 )
play_remove_lines::r#6 = phi( play_remove_lines::@2/play_remove_lines::r#1 )
play_remove_lines::x#4 = phi( play_remove_lines::@2/play_remove_lines::x#3 )
play_remove_lines::w#9 = phi( play_remove_lines::@2/play_remove_lines::w#8 )
play_remove_lines::c#2 = phi( play_remove_lines::@2/play_remove_lines::c#0 )
play_remove_lines::full#1 = 0
to:play_remove_lines::@3
play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@3
play_remove_lines::r#7 = phi( play_remove_lines::@3/play_remove_lines::r#4 )
play_remove_lines::removed#4 = phi( play_remove_lines::@3/play_remove_lines::removed#6 )
play_remove_lines::w#10 = phi( play_remove_lines::@3/play_remove_lines::w#1 )
play_remove_lines::y#3 = phi( play_remove_lines::@3/play_remove_lines::y#5 )
play_remove_lines::full#2 = phi( play_remove_lines::@3/play_remove_lines::full#3 )
play_remove_lines::$3 = play_remove_lines::full#2 == 1
play_remove_lines::$4 = ! play_remove_lines::$3
if(play_remove_lines::$4) goto play_remove_lines::@7
to:play_remove_lines::@6
play_remove_lines::@7: scope:[play_remove_lines] from play_remove_lines::@5 play_remove_lines::@6
play_remove_lines::removed#7 = phi( play_remove_lines::@5/play_remove_lines::removed#4, play_remove_lines::@6/play_remove_lines::removed#1 )
play_remove_lines::r#5 = phi( play_remove_lines::@5/play_remove_lines::r#7, play_remove_lines::@6/play_remove_lines::r#8 )
play_remove_lines::w#11 = phi( play_remove_lines::@5/play_remove_lines::w#10, play_remove_lines::@6/play_remove_lines::w#2 )
play_remove_lines::y#2 = phi( play_remove_lines::@5/play_remove_lines::y#3, play_remove_lines::@6/play_remove_lines::y#4 )
play_remove_lines::y#1 = play_remove_lines::y#2 + rangenext(0,PLAYFIELD_LINES-1)
play_remove_lines::$6 = play_remove_lines::y#1 != rangelast(0,PLAYFIELD_LINES-1)
if(play_remove_lines::$6) goto play_remove_lines::@1
to:play_remove_lines::@8
play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@5
play_remove_lines::r#8 = phi( play_remove_lines::@5/play_remove_lines::r#7 )
play_remove_lines::y#4 = phi( play_remove_lines::@5/play_remove_lines::y#3 )
play_remove_lines::removed#2 = phi( play_remove_lines::@5/play_remove_lines::removed#4 )
play_remove_lines::w#5 = phi( play_remove_lines::@5/play_remove_lines::w#10 )
play_remove_lines::$5 = play_remove_lines::w#5 + PLAYFIELD_COLS
play_remove_lines::w#2 = play_remove_lines::$5
play_remove_lines::removed#1 = ++ play_remove_lines::removed#2
to:play_remove_lines::@7
play_remove_lines::@8: scope:[play_remove_lines] from play_remove_lines::@7 play_remove_lines::@9
play_remove_lines::removed#5 = phi( play_remove_lines::@7/play_remove_lines::removed#7, play_remove_lines::@9/play_remove_lines::removed#8 )
play_remove_lines::w#6 = phi( play_remove_lines::@7/play_remove_lines::w#11, play_remove_lines::@9/play_remove_lines::w#3 )
play_remove_lines::$7 = play_remove_lines::w#6 != $ff
if(play_remove_lines::$7) goto play_remove_lines::@9
to:play_remove_lines::@10
play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@8
play_remove_lines::removed#8 = phi( play_remove_lines::@8/play_remove_lines::removed#5 )
play_remove_lines::w#7 = phi( play_remove_lines::@8/play_remove_lines::w#6 )
playfield[play_remove_lines::w#7] = 0
play_remove_lines::w#3 = -- play_remove_lines::w#7
to:play_remove_lines::@8
play_remove_lines::@10: scope:[play_remove_lines] from play_remove_lines::@8
play_remove_lines::removed#3 = phi( play_remove_lines::@8/play_remove_lines::removed#5 )
play_remove_lines::return#1 = play_remove_lines::removed#3
to:play_remove_lines::@return
play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@10
play_remove_lines::return#4 = phi( play_remove_lines::@10/play_remove_lines::return#1 )
play_remove_lines::return#2 = play_remove_lines::return#4
return
to:@return
void play_update_score(byte play_update_score::removed)
play_update_score: scope:[play_update_score] from play_move_down::@16
level_bcd#36 = phi( play_move_down::@16/level_bcd#32 )
current_movedown_slow#42 = phi( play_move_down::@16/current_movedown_slow#38 )
level#38 = phi( play_move_down::@16/level#34 )
lines_bcd#30 = phi( play_move_down::@16/lines_bcd#27 )
play_update_score::removed#1 = phi( play_move_down::@16/play_update_score::removed#0 )
play_update_score::$0 = play_update_score::removed#1 != 0
play_update_score::$1 = ! play_update_score::$0
if(play_update_score::$1) goto play_update_score::@return
to:play_update_score::@1
play_update_score::@1: scope:[play_update_score] from play_update_score
level_bcd#37 = phi( play_update_score/level_bcd#36 )
current_movedown_slow#43 = phi( play_update_score/current_movedown_slow#42 )
level#39 = phi( play_update_score/level#38 )
play_update_score::removed#2 = phi( play_update_score/play_update_score::removed#1 )
lines_bcd#17 = phi( play_update_score/lines_bcd#30 )
play_update_score::$2 = < lines_bcd#17
play_update_score::$3 = play_update_score::$2 & $f0
play_update_score::lines_before#0 = play_update_score::$3
play_update_score::$9 = play_update_score::removed#2 * SIZEOF_DWORD
play_update_score::add_bcd#0 = score_add_bcd[play_update_score::$9]
asm { sed }
lines_bcd#4 = lines_bcd#17 + play_update_score::removed#2
score_bcd = score_bcd + play_update_score::add_bcd#0
asm { cld }
play_update_score::$4 = < lines_bcd#4
play_update_score::$5 = play_update_score::$4 & $f0
play_update_score::lines_after#0 = play_update_score::$5
play_update_score::$6 = play_update_score::lines_before#0 != play_update_score::lines_after#0
play_update_score::$7 = ! play_update_score::$6
if(play_update_score::$7) goto play_update_score::@return
to:play_update_score::@2
play_update_score::@2: scope:[play_update_score] from play_update_score::@1
lines_bcd#41 = phi( play_update_score::@1/lines_bcd#4 )
level_bcd#35 = phi( play_update_score::@1/level_bcd#37 )
current_movedown_slow#41 = phi( play_update_score::@1/current_movedown_slow#43 )
level#37 = phi( play_update_score::@1/level#39 )
call play_increase_level
to:play_update_score::@3
play_update_score::@3: scope:[play_update_score] from play_update_score::@2
lines_bcd#31 = phi( play_update_score::@2/lines_bcd#41 )
level_bcd#19 = phi( play_update_score::@2/level_bcd#8 )
current_movedown_slow#23 = phi( play_update_score::@2/current_movedown_slow#10 )
level#19 = phi( play_update_score::@2/level#7 )
level#4 = level#19
current_movedown_slow#6 = current_movedown_slow#23
level_bcd#4 = level_bcd#19
to:play_update_score::@return
play_update_score::@return: scope:[play_update_score] from play_update_score play_update_score::@1 play_update_score::@3
level_bcd#20 = phi( play_update_score/level_bcd#36, play_update_score::@1/level_bcd#37, play_update_score::@3/level_bcd#4 )
current_movedown_slow#24 = phi( play_update_score/current_movedown_slow#42, play_update_score::@1/current_movedown_slow#43, play_update_score::@3/current_movedown_slow#6 )
level#20 = phi( play_update_score/level#38, play_update_score::@1/level#39, play_update_score::@3/level#4 )
lines_bcd#18 = phi( play_update_score/lines_bcd#30, play_update_score::@1/lines_bcd#4, play_update_score::@3/lines_bcd#31 )
lines_bcd#5 = lines_bcd#18
level#5 = level#20
current_movedown_slow#7 = current_movedown_slow#24
level_bcd#5 = level_bcd#20
return
to:@return
void play_increase_level()
play_increase_level: scope:[play_increase_level] from play_update_score::@2
level_bcd#50 = phi( play_update_score::@2/level_bcd#35 )
level#21 = phi( play_update_score::@2/level#37 )
level#6 = ++ level#21
play_increase_level::$0 = level#6 > $1d
if(play_increase_level::$0) goto play_increase_level::@1
to:play_increase_level::@4
play_increase_level::@1: scope:[play_increase_level] from play_increase_level
level#88 = phi( play_increase_level/level#6 )
level_bcd#38 = phi( play_increase_level/level_bcd#50 )
current_movedown_slow#8 = 1
to:play_increase_level::@2
play_increase_level::@4: scope:[play_increase_level] from play_increase_level
level_bcd#39 = phi( play_increase_level/level_bcd#50 )
level#22 = phi( play_increase_level/level#6 )
current_movedown_slow#9 = MOVEDOWN_SLOW_SPEEDS[level#22]
to:play_increase_level::@2
play_increase_level::@2: scope:[play_increase_level] from play_increase_level::@1 play_increase_level::@4
current_movedown_slow#74 = phi( play_increase_level::@1/current_movedown_slow#8, play_increase_level::@4/current_movedown_slow#9 )
level#78 = phi( play_increase_level::@1/level#88, play_increase_level::@4/level#22 )
level_bcd#21 = phi( play_increase_level::@1/level_bcd#38, play_increase_level::@4/level_bcd#39 )
level_bcd#6 = ++ level_bcd#21
play_increase_level::$1 = level_bcd#6 & $f
play_increase_level::$2 = play_increase_level::$1 == $a
play_increase_level::$3 = ! play_increase_level::$2
if(play_increase_level::$3) goto play_increase_level::@3
to:play_increase_level::@5
play_increase_level::@3: scope:[play_increase_level] from play_increase_level::@2 play_increase_level::@5
level_bcd#63 = phi( play_increase_level::@2/level_bcd#6, play_increase_level::@5/level_bcd#7 )
current_movedown_slow#67 = phi( play_increase_level::@2/current_movedown_slow#74, play_increase_level::@5/current_movedown_slow#75 )
level#66 = phi( play_increase_level::@2/level#78, play_increase_level::@5/level#79 )
asm { sed }
play_increase_level::b#0 = 0
to:play_increase_level::@6
play_increase_level::@5: scope:[play_increase_level] from play_increase_level::@2
current_movedown_slow#75 = phi( play_increase_level::@2/current_movedown_slow#74 )
level#79 = phi( play_increase_level::@2/level#78 )
level_bcd#22 = phi( play_increase_level::@2/level_bcd#6 )
level_bcd#7 = level_bcd#22 + 6
to:play_increase_level::@3
play_increase_level::@6: scope:[play_increase_level] from play_increase_level::@3 play_increase_level::@6
level_bcd#51 = phi( play_increase_level::@3/level_bcd#63, play_increase_level::@6/level_bcd#51 )
current_movedown_slow#55 = phi( play_increase_level::@3/current_movedown_slow#67, play_increase_level::@6/current_movedown_slow#55 )
level#52 = phi( play_increase_level::@3/level#66, play_increase_level::@6/level#52 )
play_increase_level::b#2 = phi( play_increase_level::@3/play_increase_level::b#0, play_increase_level::@6/play_increase_level::b#1 )
play_increase_level::$5 = play_increase_level::b#2 * SIZEOF_DWORD
score_add_bcd[play_increase_level::$5] = score_add_bcd[play_increase_level::$5] + SCORE_BASE_BCD[play_increase_level::$5]
play_increase_level::b#1 = play_increase_level::b#2 + rangenext(0,4)
play_increase_level::$4 = play_increase_level::b#1 != rangelast(0,4)
if(play_increase_level::$4) goto play_increase_level::@6
to:play_increase_level::@7
play_increase_level::@7: scope:[play_increase_level] from play_increase_level::@6
level_bcd#40 = phi( play_increase_level::@6/level_bcd#51 )
current_movedown_slow#44 = phi( play_increase_level::@6/current_movedown_slow#55 )
level#40 = phi( play_increase_level::@6/level#52 )
asm { cld }
to:play_increase_level::@return
play_increase_level::@return: scope:[play_increase_level] from play_increase_level::@7
level_bcd#23 = phi( play_increase_level::@7/level_bcd#40 )
current_movedown_slow#25 = phi( play_increase_level::@7/current_movedown_slow#44 )
level#23 = phi( play_increase_level::@7/level#40 )
level#7 = level#23
current_movedown_slow#10 = current_movedown_slow#25
level_bcd#8 = level_bcd#23
return
to:@return
void main()
main: scope:[main] from __start::@1
level_bcd#99 = phi( __start::@1/level_bcd#43 )
lines_bcd#86 = phi( __start::@1/lines_bcd#34 )
current_movedown_counter#60 = phi( __start::@1/current_movedown_counter#28 )
keyboard_modifiers#58 = phi( __start::@1/keyboard_modifiers#26 )
keyboard_events_size#76 = phi( __start::@1/keyboard_events_size#30 )
level#102 = phi( __start::@1/level#43 )
game_over#83 = phi( __start::@1/game_over#36 )
current_ypos#96 = phi( __start::@1/current_ypos#51 )
current_xpos#117 = phi( __start::@1/current_xpos#60 )
current_piece_gfx#110 = phi( __start::@1/current_piece_gfx#47 )
current_orientation#96 = phi( __start::@1/current_orientation#51 )
current_piece_char#98 = phi( __start::@1/current_piece_char#38 )
current_piece#92 = phi( __start::@1/current_piece#41 )
next_piece_idx#78 = phi( __start::@1/next_piece_idx#37 )
current_movedown_slow#85 = phi( __start::@1/current_movedown_slow#48 )
render_screen_render#45 = phi( __start::@1/render_screen_render#31 )
render_screen_show#37 = phi( __start::@1/render_screen_show#26 )
to:main::sid_rnd_init1
main::sid_rnd_init1: scope:[main] from main
level_bcd#98 = phi( main/level_bcd#99 )
lines_bcd#85 = phi( main/lines_bcd#86 )
current_movedown_counter#59 = phi( main/current_movedown_counter#60 )
keyboard_modifiers#57 = phi( main/keyboard_modifiers#58 )
keyboard_events_size#75 = phi( main/keyboard_events_size#76 )
level#99 = phi( main/level#102 )
game_over#81 = phi( main/game_over#83 )
current_ypos#94 = phi( main/current_ypos#96 )
current_xpos#115 = phi( main/current_xpos#117 )
current_piece_gfx#108 = phi( main/current_piece_gfx#110 )
current_orientation#93 = phi( main/current_orientation#96 )
current_piece_char#95 = phi( main/current_piece_char#98 )
current_piece#89 = phi( main/current_piece#92 )
next_piece_idx#76 = phi( main/next_piece_idx#78 )
current_movedown_slow#81 = phi( main/current_movedown_slow#85 )
render_screen_render#37 = phi( main/render_screen_render#45 )
render_screen_show#29 = phi( main/render_screen_show#37 )
*((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff
*((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE
to:main::@9
main::@9: scope:[main] from main::sid_rnd_init1
level_bcd#97 = phi( main::sid_rnd_init1/level_bcd#98 )
lines_bcd#84 = phi( main::sid_rnd_init1/lines_bcd#85 )
current_movedown_counter#58 = phi( main::sid_rnd_init1/current_movedown_counter#59 )
keyboard_modifiers#56 = phi( main::sid_rnd_init1/keyboard_modifiers#57 )
keyboard_events_size#74 = phi( main::sid_rnd_init1/keyboard_events_size#75 )
level#95 = phi( main::sid_rnd_init1/level#99 )
game_over#77 = phi( main::sid_rnd_init1/game_over#81 )
current_ypos#91 = phi( main::sid_rnd_init1/current_ypos#94 )
current_xpos#112 = phi( main::sid_rnd_init1/current_xpos#115 )
current_piece_gfx#102 = phi( main::sid_rnd_init1/current_piece_gfx#108 )
current_orientation#90 = phi( main::sid_rnd_init1/current_orientation#93 )
current_piece_char#90 = phi( main::sid_rnd_init1/current_piece_char#95 )
current_piece#84 = phi( main::sid_rnd_init1/current_piece#89 )
next_piece_idx#71 = phi( main::sid_rnd_init1/next_piece_idx#76 )
current_movedown_slow#76 = phi( main::sid_rnd_init1/current_movedown_slow#81 )
render_screen_render#29 = phi( main::sid_rnd_init1/render_screen_render#37 )
render_screen_show#24 = phi( main::sid_rnd_init1/render_screen_show#29 )
asm { sei }
call render_init
to:main::@10
main::@10: scope:[main] from main::@9
level_bcd#96 = phi( main::@9/level_bcd#97 )
lines_bcd#83 = phi( main::@9/lines_bcd#84 )
current_movedown_counter#57 = phi( main::@9/current_movedown_counter#58 )
keyboard_modifiers#55 = phi( main::@9/keyboard_modifiers#56 )
keyboard_events_size#73 = phi( main::@9/keyboard_events_size#74 )
level#89 = phi( main::@9/level#95 )
game_over#68 = phi( main::@9/game_over#77 )
current_ypos#83 = phi( main::@9/current_ypos#91 )
current_xpos#103 = phi( main::@9/current_xpos#112 )
current_piece_gfx#95 = phi( main::@9/current_piece_gfx#102 )
current_orientation#82 = phi( main::@9/current_orientation#90 )
current_piece_char#80 = phi( main::@9/current_piece_char#90 )
current_piece#77 = phi( main::@9/current_piece#84 )
next_piece_idx#64 = phi( main::@9/next_piece_idx#71 )
current_movedown_slow#68 = phi( main::@9/current_movedown_slow#76 )
render_screen_render#17 = phi( main::@9/render_screen_render#1 )
render_screen_show#15 = phi( main::@9/render_screen_show#1 )
render_screen_show#4 = render_screen_show#15
render_screen_render#4 = render_screen_render#17
call sprites_init
to:main::@11
main::@11: scope:[main] from main::@10
level_bcd#95 = phi( main::@10/level_bcd#96 )
lines_bcd#82 = phi( main::@10/lines_bcd#83 )
current_movedown_counter#56 = phi( main::@10/current_movedown_counter#57 )
keyboard_modifiers#54 = phi( main::@10/keyboard_modifiers#55 )
keyboard_events_size#72 = phi( main::@10/keyboard_events_size#73 )
render_screen_show#58 = phi( main::@10/render_screen_show#4 )
render_screen_render#59 = phi( main::@10/render_screen_render#4 )
level#80 = phi( main::@10/level#89 )
game_over#55 = phi( main::@10/game_over#68 )
current_ypos#73 = phi( main::@10/current_ypos#83 )
current_xpos#91 = phi( main::@10/current_xpos#103 )
current_piece_gfx#77 = phi( main::@10/current_piece_gfx#95 )
current_orientation#72 = phi( main::@10/current_orientation#82 )
current_piece_char#64 = phi( main::@10/current_piece_char#80 )
current_piece#65 = phi( main::@10/current_piece#77 )
next_piece_idx#55 = phi( main::@10/next_piece_idx#64 )
current_movedown_slow#56 = phi( main::@10/current_movedown_slow#68 )
call sprites_irq_init
to:main::@12
main::@12: scope:[main] from main::@11
level_bcd#94 = phi( main::@11/level_bcd#95 )
lines_bcd#81 = phi( main::@11/lines_bcd#82 )
current_movedown_counter#55 = phi( main::@11/current_movedown_counter#56 )
keyboard_modifiers#53 = phi( main::@11/keyboard_modifiers#54 )
keyboard_events_size#71 = phi( main::@11/keyboard_events_size#72 )
render_screen_show#57 = phi( main::@11/render_screen_show#58 )
render_screen_render#57 = phi( main::@11/render_screen_render#59 )
level#60 = phi( main::@11/level#80 )
game_over#42 = phi( main::@11/game_over#55 )
current_ypos#60 = phi( main::@11/current_ypos#73 )
current_xpos#72 = phi( main::@11/current_xpos#91 )
current_piece_gfx#60 = phi( main::@11/current_piece_gfx#77 )
current_orientation#59 = phi( main::@11/current_orientation#72 )
current_piece_char#48 = phi( main::@11/current_piece_char#64 )
current_piece#51 = phi( main::@11/current_piece#65 )
next_piece_idx#43 = phi( main::@11/next_piece_idx#55 )
current_movedown_slow#45 = phi( main::@11/current_movedown_slow#56 )
call play_init
to:main::@13
main::@13: scope:[main] from main::@12
level_bcd#92 = phi( main::@12/level_bcd#94 )
level#100 = phi( main::@12/level#60 )
lines_bcd#79 = phi( main::@12/lines_bcd#81 )
current_movedown_counter#53 = phi( main::@12/current_movedown_counter#55 )
keyboard_modifiers#51 = phi( main::@12/keyboard_modifiers#53 )
keyboard_events_size#68 = phi( main::@12/keyboard_events_size#71 )
render_screen_show#56 = phi( main::@12/render_screen_show#57 )
render_screen_render#52 = phi( main::@12/render_screen_render#57 )
game_over#32 = phi( main::@12/game_over#42 )
current_ypos#48 = phi( main::@12/current_ypos#60 )
current_xpos#57 = phi( main::@12/current_xpos#72 )
current_piece_gfx#44 = phi( main::@12/current_piece_gfx#60 )
current_orientation#48 = phi( main::@12/current_orientation#59 )
current_piece_char#35 = phi( main::@12/current_piece_char#48 )
current_piece#38 = phi( main::@12/current_piece#51 )
next_piece_idx#34 = phi( main::@12/next_piece_idx#43 )
current_movedown_slow#26 = phi( main::@12/current_movedown_slow#1 )
current_movedown_slow#11 = current_movedown_slow#26
call play_spawn_current
to:main::@14
main::@14: scope:[main] from main::@13
level_bcd#88 = phi( main::@13/level_bcd#92 )
level#96 = phi( main::@13/level#100 )
lines_bcd#76 = phi( main::@13/lines_bcd#79 )
current_movedown_counter#50 = phi( main::@13/current_movedown_counter#53 )
keyboard_modifiers#49 = phi( main::@13/keyboard_modifiers#51 )
keyboard_events_size#64 = phi( main::@13/keyboard_events_size#68 )
current_movedown_slow#86 = phi( main::@13/current_movedown_slow#11 )
render_screen_show#54 = phi( main::@13/render_screen_show#56 )
render_screen_render#46 = phi( main::@13/render_screen_render#52 )
next_piece_idx#20 = phi( main::@13/next_piece_idx#5 )
game_over#18 = phi( main::@13/game_over#5 )
current_ypos#26 = phi( main::@13/current_ypos#6 )
current_xpos#32 = phi( main::@13/current_xpos#9 )
current_piece_gfx#25 = phi( main::@13/current_piece_gfx#8 )
current_orientation#28 = phi( main::@13/current_orientation#8 )
current_piece_char#20 = phi( main::@13/current_piece_char#5 )
current_piece#20 = phi( main::@13/current_piece#5 )
current_piece#6 = current_piece#20
current_piece_char#6 = current_piece_char#20
current_orientation#9 = current_orientation#28
current_piece_gfx#9 = current_piece_gfx#25
current_xpos#10 = current_xpos#32
current_ypos#7 = current_ypos#26
game_over#6 = game_over#18
next_piece_idx#6 = next_piece_idx#20
call play_spawn_current
to:main::@15
main::@15: scope:[main] from main::@14
level_bcd#81 = phi( main::@14/level_bcd#88 )
level#90 = phi( main::@14/level#96 )
lines_bcd#71 = phi( main::@14/lines_bcd#76 )
current_movedown_counter#47 = phi( main::@14/current_movedown_counter#50 )
keyboard_modifiers#47 = phi( main::@14/keyboard_modifiers#49 )
keyboard_events_size#59 = phi( main::@14/keyboard_events_size#64 )
current_movedown_slow#82 = phi( main::@14/current_movedown_slow#86 )
render_screen_show#51 = phi( main::@14/render_screen_show#54 )
render_screen_render#32 = phi( main::@14/render_screen_render#46 )
next_piece_idx#21 = phi( main::@14/next_piece_idx#5 )
game_over#19 = phi( main::@14/game_over#5 )
current_ypos#27 = phi( main::@14/current_ypos#6 )
current_xpos#33 = phi( main::@14/current_xpos#9 )
current_piece_gfx#26 = phi( main::@14/current_piece_gfx#8 )
current_orientation#29 = phi( main::@14/current_orientation#8 )
current_piece_char#21 = phi( main::@14/current_piece_char#5 )
current_piece#21 = phi( main::@14/current_piece#5 )
current_piece#7 = current_piece#21
current_piece_char#7 = current_piece_char#21
current_orientation#10 = current_orientation#29
current_piece_gfx#10 = current_piece_gfx#26
current_xpos#11 = current_xpos#33
current_ypos#8 = current_ypos#27
game_over#7 = game_over#19
next_piece_idx#7 = next_piece_idx#21
call render_playfield
to:main::@16
main::@16: scope:[main] from main::@15
level_bcd#74 = phi( main::@15/level_bcd#81 )
level#81 = phi( main::@15/level#90 )
lines_bcd#64 = phi( main::@15/lines_bcd#71 )
current_movedown_counter#43 = phi( main::@15/current_movedown_counter#47 )
keyboard_modifiers#41 = phi( main::@15/keyboard_modifiers#47 )
keyboard_events_size#50 = phi( main::@15/keyboard_events_size#59 )
game_over#69 = phi( main::@15/game_over#7 )
current_orientation#83 = phi( main::@15/current_orientation#10 )
current_piece_char#81 = phi( main::@15/current_piece_char#7 )
current_piece#78 = phi( main::@15/current_piece#7 )
current_movedown_slow#77 = phi( main::@15/current_movedown_slow#82 )
render_screen_show#45 = phi( main::@15/render_screen_show#51 )
next_piece_idx#65 = phi( main::@15/next_piece_idx#7 )
current_piece_gfx#83 = phi( main::@15/current_piece_gfx#10 )
current_xpos#78 = phi( main::@15/current_xpos#11 )
render_screen_render#38 = phi( main::@15/render_screen_render#32 )
current_ypos#32 = phi( main::@15/current_ypos#8 )
call render_moving
to:main::@17
main::@17: scope:[main] from main::@16
level_bcd#64 = phi( main::@16/level_bcd#74 )
level#67 = phi( main::@16/level#81 )
lines_bcd#53 = phi( main::@16/lines_bcd#64 )
current_movedown_counter#39 = phi( main::@16/current_movedown_counter#43 )
keyboard_modifiers#35 = phi( main::@16/keyboard_modifiers#41 )
keyboard_events_size#42 = phi( main::@16/keyboard_events_size#50 )
game_over#56 = phi( main::@16/game_over#69 )
current_ypos#74 = phi( main::@16/current_ypos#32 )
current_xpos#92 = phi( main::@16/current_xpos#78 )
current_piece_gfx#78 = phi( main::@16/current_piece_gfx#83 )
current_orientation#73 = phi( main::@16/current_orientation#83 )
current_piece_char#65 = phi( main::@16/current_piece_char#81 )
current_piece#66 = phi( main::@16/current_piece#78 )
current_movedown_slow#69 = phi( main::@16/current_movedown_slow#77 )
render_screen_show#38 = phi( main::@16/render_screen_show#45 )
next_piece_idx#48 = phi( main::@16/next_piece_idx#65 )
render_screen_render#27 = phi( main::@16/render_screen_render#38 )
call render_next
to:main::@18
main::@18: scope:[main] from main::@17
level_bcd#52 = phi( main::@17/level_bcd#64 )
level#53 = phi( main::@17/level#67 )
lines_bcd#42 = phi( main::@17/lines_bcd#53 )
current_movedown_counter#32 = phi( main::@17/current_movedown_counter#39 )
keyboard_modifiers#30 = phi( main::@17/keyboard_modifiers#35 )
keyboard_events_size#34 = phi( main::@17/keyboard_events_size#42 )
next_piece_idx#44 = phi( main::@17/next_piece_idx#48 )
game_over#43 = phi( main::@17/game_over#56 )
current_ypos#61 = phi( main::@17/current_ypos#74 )
current_xpos#73 = phi( main::@17/current_xpos#92 )
current_piece_gfx#61 = phi( main::@17/current_piece_gfx#78 )
current_orientation#60 = phi( main::@17/current_orientation#73 )
current_piece_char#49 = phi( main::@17/current_piece_char#65 )
current_piece#52 = phi( main::@17/current_piece#66 )
current_movedown_slow#57 = phi( main::@17/current_movedown_slow#69 )
render_screen_render#39 = phi( main::@17/render_screen_render#27 )
render_screen_show#30 = phi( main::@17/render_screen_show#38 )
to:main::@1
main::@1: scope:[main] from main::@18 main::@27 main::@7
level_bcd#42 = phi( main::@18/level_bcd#52, main::@27/level_bcd#53, main::@7/level_bcd#54 )
level#42 = phi( main::@18/level#53, main::@27/level#54, main::@7/level#55 )
lines_bcd#33 = phi( main::@18/lines_bcd#42, main::@27/lines_bcd#43, main::@7/lines_bcd#44 )
current_movedown_counter#27 = phi( main::@18/current_movedown_counter#32, main::@27/current_movedown_counter#33, main::@7/current_movedown_counter#34 )
keyboard_modifiers#25 = phi( main::@18/keyboard_modifiers#30, main::@27/keyboard_modifiers#31, main::@7/keyboard_modifiers#32 )
keyboard_events_size#29 = phi( main::@18/keyboard_events_size#34, main::@27/keyboard_events_size#35, main::@7/keyboard_events_size#36 )
next_piece_idx#36 = phi( main::@18/next_piece_idx#44, main::@27/next_piece_idx#45, main::@7/next_piece_idx#46 )
game_over#35 = phi( main::@18/game_over#43, main::@27/game_over#44, main::@7/game_over#45 )
current_ypos#50 = phi( main::@18/current_ypos#61, main::@27/current_ypos#62, main::@7/current_ypos#63 )
current_xpos#59 = phi( main::@18/current_xpos#73, main::@27/current_xpos#74, main::@7/current_xpos#75 )
current_piece_gfx#46 = phi( main::@18/current_piece_gfx#61, main::@27/current_piece_gfx#62, main::@7/current_piece_gfx#63 )
current_orientation#50 = phi( main::@18/current_orientation#60, main::@27/current_orientation#61, main::@7/current_orientation#62 )
current_piece_char#37 = phi( main::@18/current_piece_char#49, main::@27/current_piece_char#50, main::@7/current_piece_char#51 )
current_piece#40 = phi( main::@18/current_piece#52, main::@27/current_piece#53, main::@7/current_piece#54 )
current_movedown_slow#47 = phi( main::@18/current_movedown_slow#57, main::@27/current_movedown_slow#58, main::@7/current_movedown_slow#59 )
render_screen_render#30 = phi( main::@18/render_screen_render#39, main::@27/render_screen_render#5, main::@7/render_screen_render#40 )
render_screen_show#25 = phi( main::@18/render_screen_show#30, main::@27/render_screen_show#5, main::@7/render_screen_show#31 )
if(true) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1 main::@2
render_screen_render#62 = phi( main::@1/render_screen_render#30, main::@2/render_screen_render#62 )
next_piece_idx#77 = phi( main::@1/next_piece_idx#36, main::@2/next_piece_idx#77 )
current_xpos#116 = phi( main::@1/current_xpos#59, main::@2/current_xpos#116 )
current_piece_gfx#109 = phi( main::@1/current_piece_gfx#46, main::@2/current_piece_gfx#109 )
current_orientation#94 = phi( main::@1/current_orientation#50, main::@2/current_orientation#94 )
current_piece_char#96 = phi( main::@1/current_piece_char#37, main::@2/current_piece_char#96 )
current_piece#90 = phi( main::@1/current_piece#40, main::@2/current_piece#90 )
level_bcd#89 = phi( main::@1/level_bcd#42, main::@2/level_bcd#89 )
current_movedown_slow#87 = phi( main::@1/current_movedown_slow#47, main::@2/current_movedown_slow#87 )
level#97 = phi( main::@1/level#42, main::@2/level#97 )
lines_bcd#77 = phi( main::@1/lines_bcd#33, main::@2/lines_bcd#77 )
current_ypos#95 = phi( main::@1/current_ypos#50, main::@2/current_ypos#95 )
current_movedown_counter#51 = phi( main::@1/current_movedown_counter#27, main::@2/current_movedown_counter#51 )
game_over#70 = phi( main::@1/game_over#35, main::@2/game_over#70 )
keyboard_modifiers#36 = phi( main::@1/keyboard_modifiers#25, main::@2/keyboard_modifiers#36 )
keyboard_events_size#43 = phi( main::@1/keyboard_events_size#29, main::@2/keyboard_events_size#43 )
render_screen_show#32 = phi( main::@1/render_screen_show#25, main::@2/render_screen_show#32 )
main::$10 = *RASTER != $ff
if(main::$10) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@2
render_screen_render#61 = phi( main::@2/render_screen_render#62 )
next_piece_idx#72 = phi( main::@2/next_piece_idx#77 )
current_xpos#113 = phi( main::@2/current_xpos#116 )
current_piece_gfx#103 = phi( main::@2/current_piece_gfx#109 )
current_orientation#91 = phi( main::@2/current_orientation#94 )
current_piece_char#91 = phi( main::@2/current_piece_char#96 )
current_piece#85 = phi( main::@2/current_piece#90 )
level_bcd#82 = phi( main::@2/level_bcd#89 )
current_movedown_slow#83 = phi( main::@2/current_movedown_slow#87 )
level#91 = phi( main::@2/level#97 )
lines_bcd#72 = phi( main::@2/lines_bcd#77 )
current_ypos#92 = phi( main::@2/current_ypos#95 )
current_movedown_counter#48 = phi( main::@2/current_movedown_counter#51 )
game_over#57 = phi( main::@2/game_over#70 )
keyboard_modifiers#33 = phi( main::@2/keyboard_modifiers#36 )
keyboard_events_size#37 = phi( main::@2/keyboard_events_size#43 )
render_screen_show#20 = phi( main::@2/render_screen_show#32 )
call render_show
to:main::@19
main::@19: scope:[main] from main::@3
render_screen_render#60 = phi( main::@3/render_screen_render#61 )
render_screen_show#55 = phi( main::@3/render_screen_show#20 )
next_piece_idx#66 = phi( main::@3/next_piece_idx#72 )
current_xpos#104 = phi( main::@3/current_xpos#113 )
current_piece_gfx#96 = phi( main::@3/current_piece_gfx#103 )
current_orientation#84 = phi( main::@3/current_orientation#91 )
current_piece_char#82 = phi( main::@3/current_piece_char#91 )
current_piece#79 = phi( main::@3/current_piece#85 )
level_bcd#75 = phi( main::@3/level_bcd#82 )
current_movedown_slow#78 = phi( main::@3/current_movedown_slow#83 )
level#82 = phi( main::@3/level#91 )
lines_bcd#65 = phi( main::@3/lines_bcd#72 )
current_ypos#84 = phi( main::@3/current_ypos#92 )
current_movedown_counter#44 = phi( main::@3/current_movedown_counter#48 )
game_over#46 = phi( main::@3/game_over#57 )
keyboard_modifiers#24 = phi( main::@3/keyboard_modifiers#33 )
keyboard_events_size#28 = phi( main::@3/keyboard_events_size#37 )
call keyboard_event_scan
to:main::@20
main::@20: scope:[main] from main::@19
render_screen_render#58 = phi( main::@19/render_screen_render#60 )
render_screen_show#52 = phi( main::@19/render_screen_show#55 )
next_piece_idx#56 = phi( main::@19/next_piece_idx#66 )
current_xpos#93 = phi( main::@19/current_xpos#104 )
current_piece_gfx#79 = phi( main::@19/current_piece_gfx#96 )
current_orientation#74 = phi( main::@19/current_orientation#84 )
current_piece_char#66 = phi( main::@19/current_piece_char#82 )
current_piece#67 = phi( main::@19/current_piece#79 )
level_bcd#65 = phi( main::@19/level_bcd#75 )
current_movedown_slow#70 = phi( main::@19/current_movedown_slow#78 )
level#68 = phi( main::@19/level#82 )
lines_bcd#54 = phi( main::@19/lines_bcd#65 )
current_ypos#75 = phi( main::@19/current_ypos#84 )
current_movedown_counter#40 = phi( main::@19/current_movedown_counter#44 )
game_over#33 = phi( main::@19/game_over#46 )
keyboard_modifiers#16 = phi( main::@19/keyboard_modifiers#5 )
keyboard_events_size#18 = phi( main::@19/keyboard_events_size#2 )
keyboard_events_size#5 = keyboard_events_size#18
keyboard_modifiers#6 = keyboard_modifiers#16
call keyboard_event_get
keyboard_event_get::return#3 = keyboard_event_get::return#2
to:main::@21
main::@21: scope:[main] from main::@20
keyboard_modifiers#43 = phi( main::@20/keyboard_modifiers#6 )
render_screen_render#54 = phi( main::@20/render_screen_render#58 )
render_screen_show#47 = phi( main::@20/render_screen_show#52 )
next_piece_idx#47 = phi( main::@20/next_piece_idx#56 )
current_xpos#76 = phi( main::@20/current_xpos#93 )
current_piece_gfx#64 = phi( main::@20/current_piece_gfx#79 )
current_orientation#63 = phi( main::@20/current_orientation#74 )
current_piece_char#52 = phi( main::@20/current_piece_char#66 )
current_piece#55 = phi( main::@20/current_piece#67 )
level_bcd#55 = phi( main::@20/level_bcd#65 )
current_movedown_slow#60 = phi( main::@20/current_movedown_slow#70 )
level#56 = phi( main::@20/level#68 )
lines_bcd#45 = phi( main::@20/lines_bcd#54 )
current_ypos#64 = phi( main::@20/current_ypos#75 )
current_movedown_counter#35 = phi( main::@20/current_movedown_counter#40 )
game_over#20 = phi( main::@20/game_over#33 )
keyboard_events_size#19 = phi( main::@20/keyboard_events_size#4 )
keyboard_event_get::return#5 = phi( main::@20/keyboard_event_get::return#3 )
main::$13 = keyboard_event_get::return#5
keyboard_events_size#6 = keyboard_events_size#19
main::key_event#0 = main::$13
main::render#0 = 0
main::$14 = game_over#20 == 0
if(main::$14) goto main::@4
to:main::@5
main::@4: scope:[main] from main::@21
keyboard_modifiers#42 = phi( main::@21/keyboard_modifiers#43 )
keyboard_events_size#51 = phi( main::@21/keyboard_events_size#6 )
render_screen_render#53 = phi( main::@21/render_screen_render#54 )
render_screen_show#46 = phi( main::@21/render_screen_show#47 )
next_piece_idx#35 = phi( main::@21/next_piece_idx#47 )
game_over#34 = phi( main::@21/game_over#20 )
current_xpos#58 = phi( main::@21/current_xpos#76 )
current_piece_gfx#45 = phi( main::@21/current_piece_gfx#64 )
current_orientation#49 = phi( main::@21/current_orientation#63 )
current_piece_char#36 = phi( main::@21/current_piece_char#52 )
current_piece#39 = phi( main::@21/current_piece#55 )
level_bcd#41 = phi( main::@21/level_bcd#55 )
current_movedown_slow#46 = phi( main::@21/current_movedown_slow#60 )
level#41 = phi( main::@21/level#56 )
lines_bcd#32 = phi( main::@21/lines_bcd#45 )
current_ypos#49 = phi( main::@21/current_ypos#64 )
current_movedown_counter#26 = phi( main::@21/current_movedown_counter#35 )
main::key_event#1 = phi( main::@21/main::key_event#0 )
play_movement::key_event#0 = main::key_event#1
call play_movement
play_movement::return#3 = play_movement::return#2
to:main::@22
main::@22: scope:[main] from main::@4
keyboard_modifiers#37 = phi( main::@4/keyboard_modifiers#42 )
keyboard_events_size#44 = phi( main::@4/keyboard_events_size#51 )
render_screen_render#47 = phi( main::@4/render_screen_render#53 )
render_screen_show#39 = phi( main::@4/render_screen_show#46 )
next_piece_idx#22 = phi( main::@4/next_piece_idx#1 )
game_over#21 = phi( main::@4/game_over#1 )
current_xpos#34 = phi( main::@4/current_xpos#2 )
current_piece_gfx#27 = phi( main::@4/current_piece_gfx#2 )
current_orientation#30 = phi( main::@4/current_orientation#2 )
current_piece_char#22 = phi( main::@4/current_piece_char#1 )
current_piece#22 = phi( main::@4/current_piece#1 )
level_bcd#24 = phi( main::@4/level_bcd#1 )
current_movedown_slow#27 = phi( main::@4/current_movedown_slow#3 )
level#24 = phi( main::@4/level#1 )
lines_bcd#19 = phi( main::@4/lines_bcd#1 )
current_ypos#28 = phi( main::@4/current_ypos#1 )
current_movedown_counter#16 = phi( main::@4/current_movedown_counter#1 )
play_movement::return#5 = phi( main::@4/play_movement::return#3 )
main::$16 = play_movement::return#5
current_movedown_counter#5 = current_movedown_counter#16
current_ypos#9 = current_ypos#28
lines_bcd#6 = lines_bcd#19
level#8 = level#24
current_movedown_slow#12 = current_movedown_slow#27
level_bcd#9 = level_bcd#24
current_piece#8 = current_piece#22
current_piece_char#8 = current_piece_char#22
current_orientation#11 = current_orientation#30
current_piece_gfx#11 = current_piece_gfx#27
current_xpos#12 = current_xpos#34
game_over#8 = game_over#21
next_piece_idx#8 = next_piece_idx#22
main::render#1 = main::$16
to:main::@7
main::@5: scope:[main] from main::@21 main::@6
level_bcd#66 = phi( main::@21/level_bcd#55, main::@6/level_bcd#76 )
level#69 = phi( main::@21/level#56, main::@6/level#83 )
lines_bcd#55 = phi( main::@21/lines_bcd#45, main::@6/lines_bcd#66 )
current_movedown_counter#41 = phi( main::@21/current_movedown_counter#35, main::@6/current_movedown_counter#45 )
keyboard_modifiers#38 = phi( main::@21/keyboard_modifiers#43, main::@6/keyboard_modifiers#44 )
keyboard_events_size#45 = phi( main::@21/keyboard_events_size#6, main::@6/keyboard_events_size#52 )
next_piece_idx#57 = phi( main::@21/next_piece_idx#47, main::@6/next_piece_idx#67 )
game_over#58 = phi( main::@21/game_over#20, main::@6/game_over#71 )
current_ypos#76 = phi( main::@21/current_ypos#64, main::@6/current_ypos#85 )
current_xpos#94 = phi( main::@21/current_xpos#76, main::@6/current_xpos#105 )
current_piece_gfx#80 = phi( main::@21/current_piece_gfx#64, main::@6/current_piece_gfx#97 )
current_orientation#75 = phi( main::@21/current_orientation#63, main::@6/current_orientation#85 )
current_piece_char#67 = phi( main::@21/current_piece_char#52, main::@6/current_piece_char#83 )
current_piece#68 = phi( main::@21/current_piece#55, main::@6/current_piece#80 )
current_movedown_slow#71 = phi( main::@21/current_movedown_slow#60, main::@6/current_movedown_slow#79 )
render_screen_render#48 = phi( main::@21/render_screen_render#54, main::@6/render_screen_render#55 )
render_screen_show#40 = phi( main::@21/render_screen_show#47, main::@6/render_screen_show#48 )
main::render#3 = phi( main::@21/main::render#0, main::@6/main::render#4 )
if(true) goto main::@6
to:main::@7
main::@6: scope:[main] from main::@5
level_bcd#76 = phi( main::@5/level_bcd#66 )
level#83 = phi( main::@5/level#69 )
lines_bcd#66 = phi( main::@5/lines_bcd#55 )
current_movedown_counter#45 = phi( main::@5/current_movedown_counter#41 )
keyboard_modifiers#44 = phi( main::@5/keyboard_modifiers#38 )
keyboard_events_size#52 = phi( main::@5/keyboard_events_size#45 )
next_piece_idx#67 = phi( main::@5/next_piece_idx#57 )
game_over#71 = phi( main::@5/game_over#58 )
current_ypos#85 = phi( main::@5/current_ypos#76 )
current_xpos#105 = phi( main::@5/current_xpos#94 )
current_piece_gfx#97 = phi( main::@5/current_piece_gfx#80 )
current_orientation#85 = phi( main::@5/current_orientation#75 )
current_piece_char#83 = phi( main::@5/current_piece_char#67 )
current_piece#80 = phi( main::@5/current_piece#68 )
current_movedown_slow#79 = phi( main::@5/current_movedown_slow#71 )
render_screen_render#55 = phi( main::@5/render_screen_render#48 )
render_screen_show#48 = phi( main::@5/render_screen_show#40 )
main::render#4 = phi( main::@5/main::render#3 )
*BORDER_COLOR = ++ *BORDER_COLOR
to:main::@5
main::@7: scope:[main] from main::@22 main::@5
level_bcd#54 = phi( main::@22/level_bcd#9, main::@5/level_bcd#66 )
level#55 = phi( main::@22/level#8, main::@5/level#69 )
lines_bcd#44 = phi( main::@22/lines_bcd#6, main::@5/lines_bcd#55 )
current_movedown_counter#34 = phi( main::@22/current_movedown_counter#5, main::@5/current_movedown_counter#41 )
keyboard_modifiers#32 = phi( main::@22/keyboard_modifiers#37, main::@5/keyboard_modifiers#38 )
keyboard_events_size#36 = phi( main::@22/keyboard_events_size#44, main::@5/keyboard_events_size#45 )
next_piece_idx#46 = phi( main::@22/next_piece_idx#8, main::@5/next_piece_idx#57 )
game_over#45 = phi( main::@22/game_over#8, main::@5/game_over#58 )
current_ypos#63 = phi( main::@22/current_ypos#9, main::@5/current_ypos#76 )
current_xpos#75 = phi( main::@22/current_xpos#12, main::@5/current_xpos#94 )
current_piece_gfx#63 = phi( main::@22/current_piece_gfx#11, main::@5/current_piece_gfx#80 )
current_orientation#62 = phi( main::@22/current_orientation#11, main::@5/current_orientation#75 )
current_piece_char#51 = phi( main::@22/current_piece_char#8, main::@5/current_piece_char#67 )
current_piece#54 = phi( main::@22/current_piece#8, main::@5/current_piece#68 )
current_movedown_slow#59 = phi( main::@22/current_movedown_slow#12, main::@5/current_movedown_slow#71 )
render_screen_render#40 = phi( main::@22/render_screen_render#47, main::@5/render_screen_render#48 )
render_screen_show#31 = phi( main::@22/render_screen_show#39, main::@5/render_screen_show#40 )
main::render#2 = phi( main::@22/main::render#1, main::@5/main::render#3 )
main::$17 = main::render#2 != 0
main::$18 = ! main::$17
if(main::$18) goto main::@1
to:main::@8
main::@8: scope:[main] from main::@7
level_bcd#93 = phi( main::@7/level_bcd#54 )
level#101 = phi( main::@7/level#55 )
lines_bcd#80 = phi( main::@7/lines_bcd#44 )
current_movedown_counter#54 = phi( main::@7/current_movedown_counter#34 )
keyboard_modifiers#52 = phi( main::@7/keyboard_modifiers#32 )
keyboard_events_size#69 = phi( main::@7/keyboard_events_size#36 )
game_over#84 = phi( main::@7/game_over#45 )
current_orientation#97 = phi( main::@7/current_orientation#62 )
current_piece#93 = phi( main::@7/current_piece#54 )
current_movedown_slow#89 = phi( main::@7/current_movedown_slow#59 )
current_piece_char#97 = phi( main::@7/current_piece_char#51 )
render_screen_show#53 = phi( main::@7/render_screen_show#31 )
next_piece_idx#73 = phi( main::@7/next_piece_idx#46 )
current_piece_gfx#104 = phi( main::@7/current_piece_gfx#63 )
current_xpos#106 = phi( main::@7/current_xpos#75 )
current_ypos#65 = phi( main::@7/current_ypos#63 )
render_screen_render#33 = phi( main::@7/render_screen_render#40 )
call render_playfield
to:main::@23
main::@23: scope:[main] from main::@8
level_bcd#90 = phi( main::@8/level_bcd#93 )
level#98 = phi( main::@8/level#101 )
lines_bcd#78 = phi( main::@8/lines_bcd#80 )
current_movedown_counter#52 = phi( main::@8/current_movedown_counter#54 )
keyboard_modifiers#50 = phi( main::@8/keyboard_modifiers#52 )
keyboard_events_size#65 = phi( main::@8/keyboard_events_size#69 )
game_over#82 = phi( main::@8/game_over#84 )
current_orientation#95 = phi( main::@8/current_orientation#97 )
current_piece#91 = phi( main::@8/current_piece#93 )
current_movedown_slow#88 = phi( main::@8/current_movedown_slow#89 )
current_piece_char#86 = phi( main::@8/current_piece_char#97 )
render_screen_show#49 = phi( main::@8/render_screen_show#53 )
next_piece_idx#68 = phi( main::@8/next_piece_idx#73 )
current_piece_gfx#84 = phi( main::@8/current_piece_gfx#104 )
current_xpos#79 = phi( main::@8/current_xpos#106 )
render_screen_render#41 = phi( main::@8/render_screen_render#33 )
current_ypos#33 = phi( main::@8/current_ypos#65 )
call render_moving
to:main::@24
main::@24: scope:[main] from main::@23
level_bcd#83 = phi( main::@23/level_bcd#90 )
level#92 = phi( main::@23/level#98 )
lines_bcd#73 = phi( main::@23/lines_bcd#78 )
current_movedown_counter#49 = phi( main::@23/current_movedown_counter#52 )
keyboard_modifiers#48 = phi( main::@23/keyboard_modifiers#50 )
keyboard_events_size#60 = phi( main::@23/keyboard_events_size#65 )
game_over#78 = phi( main::@23/game_over#82 )
current_ypos#93 = phi( main::@23/current_ypos#33 )
current_xpos#114 = phi( main::@23/current_xpos#79 )
current_piece_gfx#105 = phi( main::@23/current_piece_gfx#84 )
current_orientation#92 = phi( main::@23/current_orientation#95 )
current_piece_char#92 = phi( main::@23/current_piece_char#86 )
current_piece#86 = phi( main::@23/current_piece#91 )
current_movedown_slow#84 = phi( main::@23/current_movedown_slow#88 )
render_screen_show#41 = phi( main::@23/render_screen_show#49 )
next_piece_idx#49 = phi( main::@23/next_piece_idx#68 )
render_screen_render#28 = phi( main::@23/render_screen_render#41 )
call render_next
to:main::@25
main::@25: scope:[main] from main::@24
level_bcd#77 = phi( main::@24/level_bcd#83 )
level#84 = phi( main::@24/level#92 )
lines_bcd#67 = phi( main::@24/lines_bcd#73 )
current_movedown_counter#46 = phi( main::@24/current_movedown_counter#49 )
keyboard_modifiers#45 = phi( main::@24/keyboard_modifiers#48 )
keyboard_events_size#53 = phi( main::@24/keyboard_events_size#60 )
next_piece_idx#69 = phi( main::@24/next_piece_idx#49 )
game_over#72 = phi( main::@24/game_over#78 )
current_ypos#86 = phi( main::@24/current_ypos#93 )
current_xpos#107 = phi( main::@24/current_xpos#114 )
current_piece_gfx#98 = phi( main::@24/current_piece_gfx#105 )
current_orientation#86 = phi( main::@24/current_orientation#92 )
current_piece_char#84 = phi( main::@24/current_piece_char#92 )
current_piece#81 = phi( main::@24/current_piece#86 )
current_movedown_slow#80 = phi( main::@24/current_movedown_slow#84 )
render_screen_show#33 = phi( main::@24/render_screen_show#41 )
render_screen_render#23 = phi( main::@24/render_screen_render#28 )
call render_score
to:main::@26
main::@26: scope:[main] from main::@25
level_bcd#67 = phi( main::@25/level_bcd#77 )
level#70 = phi( main::@25/level#84 )
lines_bcd#56 = phi( main::@25/lines_bcd#67 )
current_movedown_counter#42 = phi( main::@25/current_movedown_counter#46 )
keyboard_modifiers#39 = phi( main::@25/keyboard_modifiers#45 )
keyboard_events_size#46 = phi( main::@25/keyboard_events_size#53 )
next_piece_idx#58 = phi( main::@25/next_piece_idx#69 )
game_over#59 = phi( main::@25/game_over#72 )
current_ypos#77 = phi( main::@25/current_ypos#86 )
current_xpos#95 = phi( main::@25/current_xpos#107 )
current_piece_gfx#81 = phi( main::@25/current_piece_gfx#98 )
current_orientation#76 = phi( main::@25/current_orientation#86 )
current_piece_char#68 = phi( main::@25/current_piece_char#84 )
current_piece#69 = phi( main::@25/current_piece#81 )
current_movedown_slow#72 = phi( main::@25/current_movedown_slow#80 )
render_screen_show#23 = phi( main::@25/render_screen_show#33 )
render_screen_render#22 = phi( main::@25/render_screen_render#23 )
call render_screen_swap
to:main::@27
main::@27: scope:[main] from main::@26
level_bcd#53 = phi( main::@26/level_bcd#67 )
level#54 = phi( main::@26/level#70 )
lines_bcd#43 = phi( main::@26/lines_bcd#56 )
current_movedown_counter#33 = phi( main::@26/current_movedown_counter#42 )
keyboard_modifiers#31 = phi( main::@26/keyboard_modifiers#39 )
keyboard_events_size#35 = phi( main::@26/keyboard_events_size#46 )
next_piece_idx#45 = phi( main::@26/next_piece_idx#58 )
game_over#44 = phi( main::@26/game_over#59 )
current_ypos#62 = phi( main::@26/current_ypos#77 )
current_xpos#74 = phi( main::@26/current_xpos#95 )
current_piece_gfx#62 = phi( main::@26/current_piece_gfx#81 )
current_orientation#61 = phi( main::@26/current_orientation#76 )
current_piece_char#50 = phi( main::@26/current_piece_char#68 )
current_piece#53 = phi( main::@26/current_piece#69 )
current_movedown_slow#58 = phi( main::@26/current_movedown_slow#72 )
render_screen_show#16 = phi( main::@26/render_screen_show#3 )
render_screen_render#18 = phi( main::@26/render_screen_render#3 )
render_screen_render#5 = render_screen_render#18
render_screen_show#5 = render_screen_show#16
to:main::@1
main::@return: scope:[main] from main::@1
level_bcd#25 = phi( main::@1/level_bcd#42 )
level#25 = phi( main::@1/level#42 )
lines_bcd#20 = phi( main::@1/lines_bcd#33 )
current_movedown_counter#17 = phi( main::@1/current_movedown_counter#27 )
keyboard_modifiers#17 = phi( main::@1/keyboard_modifiers#25 )
keyboard_events_size#20 = phi( main::@1/keyboard_events_size#29 )
next_piece_idx#23 = phi( main::@1/next_piece_idx#36 )
game_over#22 = phi( main::@1/game_over#35 )
current_ypos#29 = phi( main::@1/current_ypos#50 )
current_xpos#35 = phi( main::@1/current_xpos#59 )
current_piece_gfx#28 = phi( main::@1/current_piece_gfx#46 )
current_orientation#31 = phi( main::@1/current_orientation#50 )
current_piece_char#23 = phi( main::@1/current_piece_char#37 )
current_piece#23 = phi( main::@1/current_piece#40 )
current_movedown_slow#28 = phi( main::@1/current_movedown_slow#47 )
render_screen_render#19 = phi( main::@1/render_screen_render#30 )
render_screen_show#17 = phi( main::@1/render_screen_show#25 )
render_screen_show#6 = render_screen_show#17
render_screen_render#6 = render_screen_render#19
current_movedown_slow#13 = current_movedown_slow#28
current_piece#9 = current_piece#23
current_piece_char#9 = current_piece_char#23
current_orientation#12 = current_orientation#31
current_piece_gfx#12 = current_piece_gfx#28
current_xpos#13 = current_xpos#35
current_ypos#10 = current_ypos#29
game_over#9 = game_over#22
next_piece_idx#9 = next_piece_idx#23
keyboard_events_size#7 = keyboard_events_size#20
keyboard_modifiers#7 = keyboard_modifiers#17
current_movedown_counter#6 = current_movedown_counter#17
lines_bcd#7 = lines_bcd#20
level#9 = level#25
level_bcd#10 = level_bcd#25
return
to:@return
void __start()
__start: scope:[__start] from
to:__start::__init1
__start::__init1: scope:[__start] from __start
keyboard_events_size#8 = 0
keyboard_modifiers#8 = 0
current_piece_gfx#13 = (byte*) 0
current_piece_char#10 = 0
current_xpos#14 = 0
current_ypos#11 = 0
render_screen_render#7 = $20
render_screen_show#7 = 0
render_screen_showing = 0
score_bcd = 0
lines_bcd#8 = 0
level_bcd#11 = 0
level#10 = 0
game_over#10 = 0
irq_raster_next = IRQ_RASTER_FIRST
irq_sprite_ypos = (byte)SPRITES_FIRST_YPOS+$15
__start::__init1_toSpritePtr1_sprite#0 = PLAYFIELD_SPRITES
to:__start::__init1_toSpritePtr1
__start::__init1_toSpritePtr1: scope:[__start] from __start::__init1
level_bcd#78 = phi( __start::__init1/level_bcd#11 )
level#85 = phi( __start::__init1/level#10 )
lines_bcd#68 = phi( __start::__init1/lines_bcd#8 )
keyboard_modifiers#46 = phi( __start::__init1/keyboard_modifiers#8 )
keyboard_events_size#54 = phi( __start::__init1/keyboard_events_size#8 )
game_over#73 = phi( __start::__init1/game_over#10 )
current_ypos#87 = phi( __start::__init1/current_ypos#11 )
current_xpos#108 = phi( __start::__init1/current_xpos#14 )
current_piece_gfx#99 = phi( __start::__init1/current_piece_gfx#13 )
current_piece_char#85 = phi( __start::__init1/current_piece_char#10 )
render_screen_render#56 = phi( __start::__init1/render_screen_render#7 )
render_screen_show#50 = phi( __start::__init1/render_screen_show#7 )
__start::__init1_toSpritePtr1_sprite#1 = phi( __start::__init1/__start::__init1_toSpritePtr1_sprite#0 )
__start::__init1_toSpritePtr1_$1 = (word)__start::__init1_toSpritePtr1_sprite#1
__start::__init1_toSpritePtr1_$0 = __start::__init1_toSpritePtr1_$1 / $40
__start::__init1_toSpritePtr1_return#0 = (byte)__start::__init1_toSpritePtr1_$0
to:__start::__init1_toSpritePtr1_@return
__start::__init1_toSpritePtr1_@return: scope:[__start] from __start::__init1_toSpritePtr1
level_bcd#68 = phi( __start::__init1_toSpritePtr1/level_bcd#78 )
level#71 = phi( __start::__init1_toSpritePtr1/level#85 )
lines_bcd#57 = phi( __start::__init1_toSpritePtr1/lines_bcd#68 )
keyboard_modifiers#40 = phi( __start::__init1_toSpritePtr1/keyboard_modifiers#46 )
keyboard_events_size#47 = phi( __start::__init1_toSpritePtr1/keyboard_events_size#54 )
game_over#60 = phi( __start::__init1_toSpritePtr1/game_over#73 )
current_ypos#78 = phi( __start::__init1_toSpritePtr1/current_ypos#87 )
current_xpos#96 = phi( __start::__init1_toSpritePtr1/current_xpos#108 )
current_piece_gfx#82 = phi( __start::__init1_toSpritePtr1/current_piece_gfx#99 )
current_piece_char#69 = phi( __start::__init1_toSpritePtr1/current_piece_char#85 )
render_screen_render#49 = phi( __start::__init1_toSpritePtr1/render_screen_render#56 )
render_screen_show#42 = phi( __start::__init1_toSpritePtr1/render_screen_show#50 )
__start::__init1_toSpritePtr1_return#2 = phi( __start::__init1_toSpritePtr1/__start::__init1_toSpritePtr1_return#0 )
__start::__init1_toSpritePtr1_return#1 = __start::__init1_toSpritePtr1_return#2
to:__start::__init1_@1
__start::__init1_@1: scope:[__start] from __start::__init1_toSpritePtr1_@return
level_bcd#56 = phi( __start::__init1_toSpritePtr1_@return/level_bcd#68 )
level#57 = phi( __start::__init1_toSpritePtr1_@return/level#71 )
lines_bcd#46 = phi( __start::__init1_toSpritePtr1_@return/lines_bcd#57 )
keyboard_modifiers#34 = phi( __start::__init1_toSpritePtr1_@return/keyboard_modifiers#40 )
keyboard_events_size#38 = phi( __start::__init1_toSpritePtr1_@return/keyboard_events_size#47 )
game_over#47 = phi( __start::__init1_toSpritePtr1_@return/game_over#60 )
current_ypos#66 = phi( __start::__init1_toSpritePtr1_@return/current_ypos#78 )
current_xpos#77 = phi( __start::__init1_toSpritePtr1_@return/current_xpos#96 )
current_piece_gfx#65 = phi( __start::__init1_toSpritePtr1_@return/current_piece_gfx#82 )
current_piece_char#53 = phi( __start::__init1_toSpritePtr1_@return/current_piece_char#69 )
render_screen_render#42 = phi( __start::__init1_toSpritePtr1_@return/render_screen_render#49 )
render_screen_show#34 = phi( __start::__init1_toSpritePtr1_@return/render_screen_show#42 )
__start::__init1_toSpritePtr1_return#3 = phi( __start::__init1_toSpritePtr1_@return/__start::__init1_toSpritePtr1_return#1 )
__start::__init1_$0 = __start::__init1_toSpritePtr1_return#3
__start::__init1_$1 = __start::__init1_$0 + 3
irq_sprite_ptr = __start::__init1_$1
irq_cnt = 0
next_piece_idx#10 = 0
current_piece#10 = (byte*)0
current_orientation#13 = 0
current_movedown_slow#14 = $30
current_movedown_counter#7 = 0
to:__start::@1
__start::@1: scope:[__start] from __start::__init1_@1
level_bcd#43 = phi( __start::__init1_@1/level_bcd#56 )
level#43 = phi( __start::__init1_@1/level#57 )
lines_bcd#34 = phi( __start::__init1_@1/lines_bcd#46 )
current_movedown_counter#28 = phi( __start::__init1_@1/current_movedown_counter#7 )
keyboard_modifiers#26 = phi( __start::__init1_@1/keyboard_modifiers#34 )
keyboard_events_size#30 = phi( __start::__init1_@1/keyboard_events_size#38 )
next_piece_idx#37 = phi( __start::__init1_@1/next_piece_idx#10 )
game_over#36 = phi( __start::__init1_@1/game_over#47 )
current_ypos#51 = phi( __start::__init1_@1/current_ypos#66 )
current_xpos#60 = phi( __start::__init1_@1/current_xpos#77 )
current_piece_gfx#47 = phi( __start::__init1_@1/current_piece_gfx#65 )
current_orientation#51 = phi( __start::__init1_@1/current_orientation#13 )
current_piece_char#38 = phi( __start::__init1_@1/current_piece_char#53 )
current_piece#41 = phi( __start::__init1_@1/current_piece#10 )
current_movedown_slow#48 = phi( __start::__init1_@1/current_movedown_slow#14 )
render_screen_render#31 = phi( __start::__init1_@1/render_screen_render#42 )
render_screen_show#26 = phi( __start::__init1_@1/render_screen_show#34 )
call main
to:__start::@2
__start::@2: scope:[__start] from __start::@1
level_bcd#26 = phi( __start::@1/level_bcd#10 )
level#26 = phi( __start::@1/level#9 )
lines_bcd#21 = phi( __start::@1/lines_bcd#7 )
current_movedown_counter#18 = phi( __start::@1/current_movedown_counter#6 )
keyboard_modifiers#18 = phi( __start::@1/keyboard_modifiers#7 )
keyboard_events_size#21 = phi( __start::@1/keyboard_events_size#7 )
next_piece_idx#24 = phi( __start::@1/next_piece_idx#9 )
game_over#23 = phi( __start::@1/game_over#9 )
current_ypos#30 = phi( __start::@1/current_ypos#10 )
current_xpos#36 = phi( __start::@1/current_xpos#13 )
current_piece_gfx#29 = phi( __start::@1/current_piece_gfx#12 )
current_orientation#32 = phi( __start::@1/current_orientation#12 )
current_piece_char#24 = phi( __start::@1/current_piece_char#9 )
current_piece#24 = phi( __start::@1/current_piece#9 )
current_movedown_slow#29 = phi( __start::@1/current_movedown_slow#13 )
render_screen_render#20 = phi( __start::@1/render_screen_render#6 )
render_screen_show#18 = phi( __start::@1/render_screen_show#6 )
render_screen_show#8 = render_screen_show#18
render_screen_render#8 = render_screen_render#20
current_movedown_slow#15 = current_movedown_slow#29
current_piece#11 = current_piece#24
current_piece_char#11 = current_piece_char#24
current_orientation#14 = current_orientation#32
current_piece_gfx#14 = current_piece_gfx#29
current_xpos#15 = current_xpos#36
current_ypos#12 = current_ypos#30
game_over#11 = game_over#23
next_piece_idx#11 = next_piece_idx#24
keyboard_events_size#9 = keyboard_events_size#21
keyboard_modifiers#9 = keyboard_modifiers#18
current_movedown_counter#8 = current_movedown_counter#18
lines_bcd#9 = lines_bcd#21
level#11 = level#26
level_bcd#12 = level_bcd#26
to:__start::@return
__start::@return: scope:[__start] from __start::@2
current_movedown_counter#19 = phi( __start::@2/current_movedown_counter#8 )
current_movedown_slow#30 = phi( __start::@2/current_movedown_slow#15 )
current_orientation#33 = phi( __start::@2/current_orientation#14 )
current_piece#25 = phi( __start::@2/current_piece#11 )
next_piece_idx#25 = phi( __start::@2/next_piece_idx#11 )
game_over#24 = phi( __start::@2/game_over#11 )
level#27 = phi( __start::@2/level#11 )
level_bcd#27 = phi( __start::@2/level_bcd#12 )
lines_bcd#22 = phi( __start::@2/lines_bcd#9 )
render_screen_show#19 = phi( __start::@2/render_screen_show#8 )
render_screen_render#21 = phi( __start::@2/render_screen_render#8 )
current_ypos#31 = phi( __start::@2/current_ypos#12 )
current_xpos#37 = phi( __start::@2/current_xpos#15 )
current_piece_char#25 = phi( __start::@2/current_piece_char#11 )
current_piece_gfx#30 = phi( __start::@2/current_piece_gfx#14 )
keyboard_modifiers#19 = phi( __start::@2/keyboard_modifiers#9 )
keyboard_events_size#22 = phi( __start::@2/keyboard_events_size#9 )
keyboard_events_size#10 = keyboard_events_size#22
keyboard_modifiers#10 = keyboard_modifiers#19
current_piece_gfx#15 = current_piece_gfx#30
current_piece_char#12 = current_piece_char#25
current_xpos#16 = current_xpos#37
current_ypos#13 = current_ypos#31
render_screen_render#9 = render_screen_render#21
render_screen_show#9 = render_screen_show#19
lines_bcd#10 = lines_bcd#22
level_bcd#13 = level_bcd#27
level#12 = level#27
game_over#12 = game_over#24
next_piece_idx#12 = next_piece_idx#25
current_piece#12 = current_piece#25
current_orientation#15 = current_orientation#33
current_movedown_slow#16 = current_movedown_slow#30
current_movedown_counter#9 = current_movedown_counter#19
return
to:@return
SYMBOL TABLE SSA
const nomodify byte* BG_COLOR = (byte*)$d021
const nomodify byte* BG_COLOR1 = (byte*)$d022
const nomodify byte* BG_COLOR2 = (byte*)$d023
const nomodify byte* BG_COLOR3 = (byte*)$d024
const nomodify byte BLACK = 0
const nomodify byte BLUE = 6
const nomodify byte* BORDER_COLOR = (byte*)$d020
const nomodify struct MOS6526_CIA* CIA1 = (struct MOS6526_CIA*)$dc00
const nomodify byte* CIA1_INTERRUPT = (byte*)$dc0d
const nomodify struct MOS6526_CIA* CIA2 = (struct MOS6526_CIA*)$dd00
const nomodify byte CIA_INTERRUPT_CLEAR = $7f
const nomodify byte COLLISION_BOTTOM = 2
const nomodify byte COLLISION_LEFT = 4
const nomodify byte COLLISION_NONE = 0
const nomodify byte COLLISION_PLAYFIELD = 1
const nomodify byte COLLISION_RIGHT = 8
const nomodify byte* COLS = (byte*)$d800
const nomodify byte CYAN = 3
const nomodify byte* D011 = (byte*)$d011
const nomodify byte* D018 = (byte*)$d018
const nomodify byte DARK_GREY = $b
const nomodify byte GREEN = 5
const nomodify byte GREY = $c
const nomodify void()** HARDWARE_IRQ = (void()**)$fffe
const nomodify byte* IRQ_ENABLE = (byte*)$d01a
const nomodify byte IRQ_RASTER = 1
const nomodify byte IRQ_RASTER_FIRST = (byte)SPRITES_FIRST_YPOS+$13
const nomodify byte* IRQ_STATUS = (byte*)$d019
const nomodify byte KEY_COMMA = $2f
const nomodify byte KEY_COMMODORE = $3d
const nomodify byte KEY_CTRL = $3a
const nomodify byte KEY_DOT = $2c
const nomodify byte KEY_LSHIFT = $f
const nomodify byte KEY_MODIFIER_COMMODORE = 8
const nomodify byte KEY_MODIFIER_CTRL = 4
const nomodify byte KEY_MODIFIER_LSHIFT = 1
const nomodify byte KEY_MODIFIER_RSHIFT = 2
const nomodify byte KEY_RSHIFT = $34
const nomodify byte KEY_SPACE = $3c
const nomodify byte KEY_X = $17
const nomodify byte KEY_Z = $c
const nomodify byte LIGHT_BLUE = $e
const nomodify byte LIGHT_GREEN = $d
const to_nomodify byte* MOVEDOWN_SLOW_SPEEDS[] = { $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }
const nomodify word OFFSET_SPRITE_PTRS = $3f8
const byte OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
const byte OFFSET_STRUCT_MOS6526_CIA_PORT_A = 0
const byte OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
const byte OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
const byte OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL = $12
const byte OFFSET_STRUCT_MOS6581_SID_CH3_FREQ = $e
const byte OFFSET_STRUCT_MOS6581_SID_CH3_OSC = $1b
const nomodify byte ORANGE = 8
const word* PIECES[] = { (word)PIECE_T, (word)PIECE_S, (word)PIECE_Z, (word)PIECE_J, (word)PIECE_O, (word)PIECE_I, (word)PIECE_L }
const byte* PIECES_CHARS[] = { $65, $66, $a6, $66, $65, $65, $a6 }
const byte* PIECES_COLORS_1[] = { BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED }
const byte* PIECES_COLORS_2[] = { CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE }
const byte* PIECES_NEXT_CHARS[] = { $63, $64, $a4, $64, $63, $63, $a4 }
const byte* PIECES_START_X[] = { 4, 4, 4, 4, 4, 4, 4 }
const byte* PIECES_START_Y[] = { 1, 1, 1, 1, 1, 0, 1 }
const byte* PIECE_I[$40] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 }
const byte* PIECE_J[$40] = { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }
const byte* PIECE_L[$40] = { 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 }
const byte* PIECE_O[$40] = { 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0 }
const byte* PIECE_S[$40] = { 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }
const byte* PIECE_T[$40] = { 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }
const byte* PIECE_Z[$40] = { 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }
const nomodify byte PINK = $a
const byte* PLAYFIELD_CHARSET[] = kickasm {{ .fill 8,$00 // Place a filled char at the start of the charset
.import binary "playfield-screen.imap"
}}
const to_nomodify byte* PLAYFIELD_COLORS_ORIGINAL[] = kickasm {{ .import binary "playfield-screen.col"
}}
const nomodify byte PLAYFIELD_COLS = $a
const nomodify byte PLAYFIELD_LINES = $16
const nomodify byte* PLAYFIELD_SCREEN_1 = (byte*)$400
const nomodify byte* PLAYFIELD_SCREEN_2 = (byte*)$2c00
const to_nomodify byte* PLAYFIELD_SCREEN_ORIGINAL[] = kickasm {{ // Load chars for the screen
.var screen = LoadBinary("playfield-screen.iscr")
// Load extended colors for the screen
.var extended = LoadBinary("playfield-extended.col")
// screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8
// extended.get(i)-1 because the extended colors are 1-based (1/2/3/4)
// <<6 to move extended colors to the upper 2 bits
.fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 )
}}
const byte* PLAYFIELD_SPRITES[$1e*$40] = kickasm {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
// Put the sprites into memory
.for(var sy=0;sy<10;sy++) {
.var sprite_gfx_y = sy*20
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {
.var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21)
.for (var c=0; c<3; c++) {
.byte sprites.getSinglecolorByte(sx*3+c,gfx_y)
}
}
.byte 0
}
}
}}
const nomodify byte* PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+OFFSET_SPRITE_PTRS
const nomodify byte* PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+OFFSET_SPRITE_PTRS
const nomodify byte* PROCPORT = (byte*)1
const nomodify byte* PROCPORT_DDR = (byte*)0
const nomodify byte PROCPORT_DDR_MEMORY_MASK = 7
const nomodify byte PROCPORT_RAM_IO = 5
const nomodify byte PURPLE = 4
const nomodify byte* RASTER = (byte*)$d012
const nomodify byte RED = 2
const to_nomodify dword* SCORE_BASE_BCD[] = { 0, $40, $100, $300, $1200 }
const nomodify struct MOS6581_SID* SID = (struct MOS6581_SID*)$d400
const nomodify byte SID_CONTROL_NOISE = $80
const byte SIZEOF_DWORD = 4
const byte SIZEOF_POINTER = 2
const byte SIZEOF_WORD = 2
const nomodify byte* SPRITES_COLOR = (byte*)$d027
const nomodify byte* SPRITES_ENABLE = (byte*)$d015
const nomodify byte* SPRITES_EXPAND_X = (byte*)$d01d
const nomodify byte* SPRITES_EXPAND_Y = (byte*)$d017
const nomodify byte SPRITES_FIRST_YPOS = $31
const nomodify byte* SPRITES_MC = (byte*)$d01c
const nomodify byte* SPRITES_XPOS = (byte*)$d000
const nomodify byte* SPRITES_YPOS = (byte*)$d001
const nomodify byte* VICII_CONTROL = (byte*)$d011
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_ECM = $40
const nomodify byte VICII_RSEL = 8
void __start()
byte~ __start::__init1_$0
number~ __start::__init1_$1
number~ __start::__init1_toSpritePtr1_$0
word~ __start::__init1_toSpritePtr1_$1
byte __start::__init1_toSpritePtr1_return
byte __start::__init1_toSpritePtr1_return#0
byte __start::__init1_toSpritePtr1_return#1
byte __start::__init1_toSpritePtr1_return#2
byte __start::__init1_toSpritePtr1_return#3
byte* __start::__init1_toSpritePtr1_sprite
byte* __start::__init1_toSpritePtr1_sprite#0
byte* __start::__init1_toSpritePtr1_sprite#1
byte current_movedown_counter
byte current_movedown_counter#0
byte current_movedown_counter#1
byte current_movedown_counter#10
byte current_movedown_counter#11
byte current_movedown_counter#12
byte current_movedown_counter#13
byte current_movedown_counter#14
byte current_movedown_counter#15
byte current_movedown_counter#16
byte current_movedown_counter#17
byte current_movedown_counter#18
byte current_movedown_counter#19
byte current_movedown_counter#2
byte current_movedown_counter#20
byte current_movedown_counter#21
byte current_movedown_counter#22
byte current_movedown_counter#23
byte current_movedown_counter#24
byte current_movedown_counter#25
byte current_movedown_counter#26
byte current_movedown_counter#27
byte current_movedown_counter#28
byte current_movedown_counter#29
byte current_movedown_counter#3
byte current_movedown_counter#30
byte current_movedown_counter#31
byte current_movedown_counter#32
byte current_movedown_counter#33
byte current_movedown_counter#34
byte current_movedown_counter#35
byte current_movedown_counter#36
byte current_movedown_counter#37
byte current_movedown_counter#38
byte current_movedown_counter#39
byte current_movedown_counter#4
byte current_movedown_counter#40
byte current_movedown_counter#41
byte current_movedown_counter#42
byte current_movedown_counter#43
byte current_movedown_counter#44
byte current_movedown_counter#45
byte current_movedown_counter#46
byte current_movedown_counter#47
byte current_movedown_counter#48
byte current_movedown_counter#49
byte current_movedown_counter#5
byte current_movedown_counter#50
byte current_movedown_counter#51
byte current_movedown_counter#52
byte current_movedown_counter#53
byte current_movedown_counter#54
byte current_movedown_counter#55
byte current_movedown_counter#56
byte current_movedown_counter#57
byte current_movedown_counter#58
byte current_movedown_counter#59
byte current_movedown_counter#6
byte current_movedown_counter#60
byte current_movedown_counter#7
byte current_movedown_counter#8
byte current_movedown_counter#9
const nomodify byte current_movedown_fast = $a
byte current_movedown_slow
byte current_movedown_slow#0
byte current_movedown_slow#1
byte current_movedown_slow#10
byte current_movedown_slow#11
byte current_movedown_slow#12
byte current_movedown_slow#13
byte current_movedown_slow#14
byte current_movedown_slow#15
byte current_movedown_slow#16
byte current_movedown_slow#17
byte current_movedown_slow#18
byte current_movedown_slow#19
byte current_movedown_slow#2
byte current_movedown_slow#20
byte current_movedown_slow#21
byte current_movedown_slow#22
byte current_movedown_slow#23
byte current_movedown_slow#24
byte current_movedown_slow#25
byte current_movedown_slow#26
byte current_movedown_slow#27
byte current_movedown_slow#28
byte current_movedown_slow#29
byte current_movedown_slow#3
byte current_movedown_slow#30
byte current_movedown_slow#31
byte current_movedown_slow#32
byte current_movedown_slow#33
byte current_movedown_slow#34
byte current_movedown_slow#35
byte current_movedown_slow#36
byte current_movedown_slow#37
byte current_movedown_slow#38
byte current_movedown_slow#39
byte current_movedown_slow#4
byte current_movedown_slow#40
byte current_movedown_slow#41
byte current_movedown_slow#42
byte current_movedown_slow#43
byte current_movedown_slow#44
byte current_movedown_slow#45
byte current_movedown_slow#46
byte current_movedown_slow#47
byte current_movedown_slow#48
byte current_movedown_slow#49
byte current_movedown_slow#5
byte current_movedown_slow#50
byte current_movedown_slow#51
byte current_movedown_slow#52
byte current_movedown_slow#53
byte current_movedown_slow#54
byte current_movedown_slow#55
byte current_movedown_slow#56
byte current_movedown_slow#57
byte current_movedown_slow#58
byte current_movedown_slow#59
byte current_movedown_slow#6
byte current_movedown_slow#60
byte current_movedown_slow#61
byte current_movedown_slow#62
byte current_movedown_slow#63
byte current_movedown_slow#64
byte current_movedown_slow#65
byte current_movedown_slow#66
byte current_movedown_slow#67
byte current_movedown_slow#68
byte current_movedown_slow#69
byte current_movedown_slow#7
byte current_movedown_slow#70
byte current_movedown_slow#71
byte current_movedown_slow#72
byte current_movedown_slow#73
byte current_movedown_slow#74
byte current_movedown_slow#75
byte current_movedown_slow#76
byte current_movedown_slow#77
byte current_movedown_slow#78
byte current_movedown_slow#79
byte current_movedown_slow#8
byte current_movedown_slow#80
byte current_movedown_slow#81
byte current_movedown_slow#82
byte current_movedown_slow#83
byte current_movedown_slow#84
byte current_movedown_slow#85
byte current_movedown_slow#86
byte current_movedown_slow#87
byte current_movedown_slow#88
byte current_movedown_slow#89
byte current_movedown_slow#9
byte current_orientation
byte current_orientation#0
byte current_orientation#1
byte current_orientation#10
byte current_orientation#11
byte current_orientation#12
byte current_orientation#13
byte current_orientation#14
byte current_orientation#15
byte current_orientation#16
byte current_orientation#17
byte current_orientation#18
byte current_orientation#19
byte current_orientation#2
byte current_orientation#20
byte current_orientation#21
byte current_orientation#22
byte current_orientation#23
byte current_orientation#24
byte current_orientation#25
byte current_orientation#26
byte current_orientation#27
byte current_orientation#28
byte current_orientation#29
byte current_orientation#3
byte current_orientation#30
byte current_orientation#31
byte current_orientation#32
byte current_orientation#33
byte current_orientation#34
byte current_orientation#35
byte current_orientation#36
byte current_orientation#37
byte current_orientation#38
byte current_orientation#39
byte current_orientation#4
byte current_orientation#40
byte current_orientation#41
byte current_orientation#42
byte current_orientation#43
byte current_orientation#44
byte current_orientation#45
byte current_orientation#46
byte current_orientation#47
byte current_orientation#48
byte current_orientation#49
byte current_orientation#5
byte current_orientation#50
byte current_orientation#51
byte current_orientation#52
byte current_orientation#53
byte current_orientation#54
byte current_orientation#55
byte current_orientation#56
byte current_orientation#57
byte current_orientation#58
byte current_orientation#59
byte current_orientation#6
byte current_orientation#60
byte current_orientation#61
byte current_orientation#62
byte current_orientation#63
byte current_orientation#64
byte current_orientation#65
byte current_orientation#66
byte current_orientation#67
byte current_orientation#68
byte current_orientation#69
byte current_orientation#7
byte current_orientation#70
byte current_orientation#71
byte current_orientation#72
byte current_orientation#73
byte current_orientation#74
byte current_orientation#75
byte current_orientation#76
byte current_orientation#77
byte current_orientation#78
byte current_orientation#79
byte current_orientation#8
byte current_orientation#80
byte current_orientation#81
byte current_orientation#82
byte current_orientation#83
byte current_orientation#84
byte current_orientation#85
byte current_orientation#86
byte current_orientation#87
byte current_orientation#88
byte current_orientation#89
byte current_orientation#9
byte current_orientation#90
byte current_orientation#91
byte current_orientation#92
byte current_orientation#93
byte current_orientation#94
byte current_orientation#95
byte current_orientation#96
byte current_orientation#97
byte* current_piece
byte* current_piece#0
byte* current_piece#1
byte* current_piece#10
byte* current_piece#11
byte* current_piece#12
byte* current_piece#13
byte* current_piece#14
byte* current_piece#15
byte* current_piece#16
byte* current_piece#17
byte* current_piece#18
byte* current_piece#19
byte* current_piece#2
byte* current_piece#20
byte* current_piece#21
byte* current_piece#22
byte* current_piece#23
byte* current_piece#24
byte* current_piece#25
byte* current_piece#26
byte* current_piece#27
byte* current_piece#28
byte* current_piece#29
byte* current_piece#3
byte* current_piece#30
byte* current_piece#31
byte* current_piece#32
byte* current_piece#33
byte* current_piece#34
byte* current_piece#35
byte* current_piece#36
byte* current_piece#37
byte* current_piece#38
byte* current_piece#39
byte* current_piece#4
byte* current_piece#40
byte* current_piece#41
byte* current_piece#42
byte* current_piece#43
byte* current_piece#44
byte* current_piece#45
byte* current_piece#46
byte* current_piece#47
byte* current_piece#48
byte* current_piece#49
byte* current_piece#5
byte* current_piece#50
byte* current_piece#51
byte* current_piece#52
byte* current_piece#53
byte* current_piece#54
byte* current_piece#55
byte* current_piece#56
byte* current_piece#57
byte* current_piece#58
byte* current_piece#59
byte* current_piece#6
byte* current_piece#60
byte* current_piece#61
byte* current_piece#62
byte* current_piece#63
byte* current_piece#64
byte* current_piece#65
byte* current_piece#66
byte* current_piece#67
byte* current_piece#68
byte* current_piece#69
byte* current_piece#7
byte* current_piece#70
byte* current_piece#71
byte* current_piece#72
byte* current_piece#73
byte* current_piece#74
byte* current_piece#75
byte* current_piece#76
byte* current_piece#77
byte* current_piece#78
byte* current_piece#79
byte* current_piece#8
byte* current_piece#80
byte* current_piece#81
byte* current_piece#82
byte* current_piece#83
byte* current_piece#84
byte* current_piece#85
byte* current_piece#86
byte* current_piece#87
byte* current_piece#88
byte* current_piece#89
byte* current_piece#9
byte* current_piece#90
byte* current_piece#91
byte* current_piece#92
byte* current_piece#93
byte current_piece_char
byte current_piece_char#0
byte current_piece_char#1
byte current_piece_char#10
byte current_piece_char#11
byte current_piece_char#12
byte current_piece_char#13
byte current_piece_char#14
byte current_piece_char#15
byte current_piece_char#16
byte current_piece_char#17
byte current_piece_char#18
byte current_piece_char#19
byte current_piece_char#2
byte current_piece_char#20
byte current_piece_char#21
byte current_piece_char#22
byte current_piece_char#23
byte current_piece_char#24
byte current_piece_char#25
byte current_piece_char#26
byte current_piece_char#27
byte current_piece_char#28
byte current_piece_char#29
byte current_piece_char#3
byte current_piece_char#30
byte current_piece_char#31
byte current_piece_char#32
byte current_piece_char#33
byte current_piece_char#34
byte current_piece_char#35
byte current_piece_char#36
byte current_piece_char#37
byte current_piece_char#38
byte current_piece_char#39
byte current_piece_char#4
byte current_piece_char#40
byte current_piece_char#41
byte current_piece_char#42
byte current_piece_char#43
byte current_piece_char#44
byte current_piece_char#45
byte current_piece_char#46
byte current_piece_char#47
byte current_piece_char#48
byte current_piece_char#49
byte current_piece_char#5
byte current_piece_char#50
byte current_piece_char#51
byte current_piece_char#52
byte current_piece_char#53
byte current_piece_char#54
byte current_piece_char#55
byte current_piece_char#56
byte current_piece_char#57
byte current_piece_char#58
byte current_piece_char#59
byte current_piece_char#6
byte current_piece_char#60
byte current_piece_char#61
byte current_piece_char#62
byte current_piece_char#63
byte current_piece_char#64
byte current_piece_char#65
byte current_piece_char#66
byte current_piece_char#67
byte current_piece_char#68
byte current_piece_char#69
byte current_piece_char#7
byte current_piece_char#70
byte current_piece_char#71
byte current_piece_char#72
byte current_piece_char#73
byte current_piece_char#74
byte current_piece_char#75
byte current_piece_char#76
byte current_piece_char#77
byte current_piece_char#78
byte current_piece_char#79
byte current_piece_char#8
byte current_piece_char#80
byte current_piece_char#81
byte current_piece_char#82
byte current_piece_char#83
byte current_piece_char#84
byte current_piece_char#85
byte current_piece_char#86
byte current_piece_char#87
byte current_piece_char#88
byte current_piece_char#89
byte current_piece_char#9
byte current_piece_char#90
byte current_piece_char#91
byte current_piece_char#92
byte current_piece_char#93
byte current_piece_char#94
byte current_piece_char#95
byte current_piece_char#96
byte current_piece_char#97
byte current_piece_char#98
byte* current_piece_gfx
byte* current_piece_gfx#0
byte* current_piece_gfx#1
byte* current_piece_gfx#10
byte* current_piece_gfx#100
byte* current_piece_gfx#101
byte* current_piece_gfx#102
byte* current_piece_gfx#103
byte* current_piece_gfx#104
byte* current_piece_gfx#105
byte* current_piece_gfx#106
byte* current_piece_gfx#107
byte* current_piece_gfx#108
byte* current_piece_gfx#109
byte* current_piece_gfx#11
byte* current_piece_gfx#110
byte* current_piece_gfx#12
byte* current_piece_gfx#13
byte* current_piece_gfx#14
byte* current_piece_gfx#15
byte* current_piece_gfx#16
byte* current_piece_gfx#17
byte* current_piece_gfx#18
byte* current_piece_gfx#19
byte* current_piece_gfx#2
byte* current_piece_gfx#20
byte* current_piece_gfx#21
byte* current_piece_gfx#22
byte* current_piece_gfx#23
byte* current_piece_gfx#24
byte* current_piece_gfx#25
byte* current_piece_gfx#26
byte* current_piece_gfx#27
byte* current_piece_gfx#28
byte* current_piece_gfx#29
byte* current_piece_gfx#3
byte* current_piece_gfx#30
byte* current_piece_gfx#31
byte* current_piece_gfx#32
byte* current_piece_gfx#33
byte* current_piece_gfx#34
byte* current_piece_gfx#35
byte* current_piece_gfx#36
byte* current_piece_gfx#37
byte* current_piece_gfx#38
byte* current_piece_gfx#39
byte* current_piece_gfx#4
byte* current_piece_gfx#40
byte* current_piece_gfx#41
byte* current_piece_gfx#42
byte* current_piece_gfx#43
byte* current_piece_gfx#44
byte* current_piece_gfx#45
byte* current_piece_gfx#46
byte* current_piece_gfx#47
byte* current_piece_gfx#48
byte* current_piece_gfx#49
byte* current_piece_gfx#5
byte* current_piece_gfx#50
byte* current_piece_gfx#51
byte* current_piece_gfx#52
byte* current_piece_gfx#53
byte* current_piece_gfx#54
byte* current_piece_gfx#55
byte* current_piece_gfx#56
byte* current_piece_gfx#57
byte* current_piece_gfx#58
byte* current_piece_gfx#59
byte* current_piece_gfx#6
byte* current_piece_gfx#60
byte* current_piece_gfx#61
byte* current_piece_gfx#62
byte* current_piece_gfx#63
byte* current_piece_gfx#64
byte* current_piece_gfx#65
byte* current_piece_gfx#66
byte* current_piece_gfx#67
byte* current_piece_gfx#68
byte* current_piece_gfx#69
byte* current_piece_gfx#7
byte* current_piece_gfx#70
byte* current_piece_gfx#71
byte* current_piece_gfx#72
byte* current_piece_gfx#73
byte* current_piece_gfx#74
byte* current_piece_gfx#75
byte* current_piece_gfx#76
byte* current_piece_gfx#77
byte* current_piece_gfx#78
byte* current_piece_gfx#79
byte* current_piece_gfx#8
byte* current_piece_gfx#80
byte* current_piece_gfx#81
byte* current_piece_gfx#82
byte* current_piece_gfx#83
byte* current_piece_gfx#84
byte* current_piece_gfx#85
byte* current_piece_gfx#86
byte* current_piece_gfx#87
byte* current_piece_gfx#88
byte* current_piece_gfx#89
byte* current_piece_gfx#9
byte* current_piece_gfx#90
byte* current_piece_gfx#91
byte* current_piece_gfx#92
byte* current_piece_gfx#93
byte* current_piece_gfx#94
byte* current_piece_gfx#95
byte* current_piece_gfx#96
byte* current_piece_gfx#97
byte* current_piece_gfx#98
byte* current_piece_gfx#99
byte current_xpos
byte current_xpos#0
byte current_xpos#1
byte current_xpos#10
byte current_xpos#100
byte current_xpos#101
byte current_xpos#102
byte current_xpos#103
byte current_xpos#104
byte current_xpos#105
byte current_xpos#106
byte current_xpos#107
byte current_xpos#108
byte current_xpos#109
byte current_xpos#11
byte current_xpos#110
byte current_xpos#111
byte current_xpos#112
byte current_xpos#113
byte current_xpos#114
byte current_xpos#115
byte current_xpos#116
byte current_xpos#117
byte current_xpos#12
byte current_xpos#13
byte current_xpos#14
byte current_xpos#15
byte current_xpos#16
byte current_xpos#17
byte current_xpos#18
byte current_xpos#19
byte current_xpos#2
byte current_xpos#20
byte current_xpos#21
byte current_xpos#22
byte current_xpos#23
byte current_xpos#24
byte current_xpos#25
byte current_xpos#26
byte current_xpos#27
byte current_xpos#28
byte current_xpos#29
byte current_xpos#3
byte current_xpos#30
byte current_xpos#31
byte current_xpos#32
byte current_xpos#33
byte current_xpos#34
byte current_xpos#35
byte current_xpos#36
byte current_xpos#37
byte current_xpos#38
byte current_xpos#39
byte current_xpos#4
byte current_xpos#40
byte current_xpos#41
byte current_xpos#42
byte current_xpos#43
byte current_xpos#44
byte current_xpos#45
byte current_xpos#46
byte current_xpos#47
byte current_xpos#48
byte current_xpos#49
byte current_xpos#5
byte current_xpos#50
byte current_xpos#51
byte current_xpos#52
byte current_xpos#53
byte current_xpos#54
byte current_xpos#55
byte current_xpos#56
byte current_xpos#57
byte current_xpos#58
byte current_xpos#59
byte current_xpos#6
byte current_xpos#60
byte current_xpos#61
byte current_xpos#62
byte current_xpos#63
byte current_xpos#64
byte current_xpos#65
byte current_xpos#66
byte current_xpos#67
byte current_xpos#68
byte current_xpos#69
byte current_xpos#7
byte current_xpos#70
byte current_xpos#71
byte current_xpos#72
byte current_xpos#73
byte current_xpos#74
byte current_xpos#75
byte current_xpos#76
byte current_xpos#77
byte current_xpos#78
byte current_xpos#79
byte current_xpos#8
byte current_xpos#80
byte current_xpos#81
byte current_xpos#82
byte current_xpos#83
byte current_xpos#84
byte current_xpos#85
byte current_xpos#86
byte current_xpos#87
byte current_xpos#88
byte current_xpos#89
byte current_xpos#9
byte current_xpos#90
byte current_xpos#91
byte current_xpos#92
byte current_xpos#93
byte current_xpos#94
byte current_xpos#95
byte current_xpos#96
byte current_xpos#97
byte current_xpos#98
byte current_xpos#99
byte current_ypos
byte current_ypos#0
byte current_ypos#1
byte current_ypos#10
byte current_ypos#11
byte current_ypos#12
byte current_ypos#13
byte current_ypos#14
byte current_ypos#15
byte current_ypos#16
byte current_ypos#17
byte current_ypos#18
byte current_ypos#19
byte current_ypos#2
byte current_ypos#20
byte current_ypos#21
byte current_ypos#22
byte current_ypos#23
byte current_ypos#24
byte current_ypos#25
byte current_ypos#26
byte current_ypos#27
byte current_ypos#28
byte current_ypos#29
byte current_ypos#3
byte current_ypos#30
byte current_ypos#31
byte current_ypos#32
byte current_ypos#33
byte current_ypos#34
byte current_ypos#35
byte current_ypos#36
byte current_ypos#37
byte current_ypos#38
byte current_ypos#39
byte current_ypos#4
byte current_ypos#40
byte current_ypos#41
byte current_ypos#42
byte current_ypos#43
byte current_ypos#44
byte current_ypos#45
byte current_ypos#46
byte current_ypos#47
byte current_ypos#48
byte current_ypos#49
byte current_ypos#5
byte current_ypos#50
byte current_ypos#51
byte current_ypos#52
byte current_ypos#53
byte current_ypos#54
byte current_ypos#55
byte current_ypos#56
byte current_ypos#57
byte current_ypos#58
byte current_ypos#59
byte current_ypos#6
byte current_ypos#60
byte current_ypos#61
byte current_ypos#62
byte current_ypos#63
byte current_ypos#64
byte current_ypos#65
byte current_ypos#66
byte current_ypos#67
byte current_ypos#68
byte current_ypos#69
byte current_ypos#7
byte current_ypos#70
byte current_ypos#71
byte current_ypos#72
byte current_ypos#73
byte current_ypos#74
byte current_ypos#75
byte current_ypos#76
byte current_ypos#77
byte current_ypos#78
byte current_ypos#79
byte current_ypos#8
byte current_ypos#80
byte current_ypos#81
byte current_ypos#82
byte current_ypos#83
byte current_ypos#84
byte current_ypos#85
byte current_ypos#86
byte current_ypos#87
byte current_ypos#88
byte current_ypos#89
byte current_ypos#9
byte current_ypos#90
byte current_ypos#91
byte current_ypos#92
byte current_ypos#93
byte current_ypos#94
byte current_ypos#95
byte current_ypos#96
byte game_over
byte game_over#0
byte game_over#1
byte game_over#10
byte game_over#11
byte game_over#12
byte game_over#13
byte game_over#14
byte game_over#15
byte game_over#16
byte game_over#17
byte game_over#18
byte game_over#19
byte game_over#2
byte game_over#20
byte game_over#21
byte game_over#22
byte game_over#23
byte game_over#24
byte game_over#25
byte game_over#26
byte game_over#27
byte game_over#28
byte game_over#29
byte game_over#3
byte game_over#30
byte game_over#31
byte game_over#32
byte game_over#33
byte game_over#34
byte game_over#35
byte game_over#36
byte game_over#37
byte game_over#38
byte game_over#39
byte game_over#4
byte game_over#40
byte game_over#41
byte game_over#42
byte game_over#43
byte game_over#44
byte game_over#45
byte game_over#46
byte game_over#47
byte game_over#48
byte game_over#49
byte game_over#5
byte game_over#50
byte game_over#51
byte game_over#52
byte game_over#53
byte game_over#54
byte game_over#55
byte game_over#56
byte game_over#57
byte game_over#58
byte game_over#59
byte game_over#6
byte game_over#60
byte game_over#61
byte game_over#62
byte game_over#63
byte game_over#64
byte game_over#65
byte game_over#66
byte game_over#67
byte game_over#68
byte game_over#69
byte game_over#7
byte game_over#70
byte game_over#71
byte game_over#72
byte game_over#73
byte game_over#74
byte game_over#75
byte game_over#76
byte game_over#77
byte game_over#78
byte game_over#79
byte game_over#8
byte game_over#80
byte game_over#81
byte game_over#82
byte game_over#83
byte game_over#84
byte game_over#9
volatile byte irq_cnt loadstore
volatile byte irq_raster_next loadstore
volatile byte irq_sprite_ptr loadstore
volatile byte irq_sprite_ypos loadstore
byte keyboard_event_get()
bool~ keyboard_event_get::$0
byte keyboard_event_get::return
byte keyboard_event_get::return#0
byte keyboard_event_get::return#1
byte keyboard_event_get::return#2
byte keyboard_event_get::return#3
byte keyboard_event_get::return#4
byte keyboard_event_get::return#5
byte keyboard_event_pressed(byte keyboard_event_pressed::keycode)
byte~ keyboard_event_pressed::$0
number~ keyboard_event_pressed::$1
byte~ keyboard_event_pressed::$2
byte keyboard_event_pressed::keycode
byte keyboard_event_pressed::keycode#0
byte keyboard_event_pressed::keycode#1
byte keyboard_event_pressed::keycode#2
byte keyboard_event_pressed::keycode#3
byte keyboard_event_pressed::keycode#4
byte keyboard_event_pressed::keycode#5
byte keyboard_event_pressed::return
byte keyboard_event_pressed::return#0
byte keyboard_event_pressed::return#1
byte keyboard_event_pressed::return#10
byte keyboard_event_pressed::return#11
byte keyboard_event_pressed::return#12
byte keyboard_event_pressed::return#2
byte keyboard_event_pressed::return#3
byte keyboard_event_pressed::return#4
byte keyboard_event_pressed::return#5
byte keyboard_event_pressed::return#6
byte keyboard_event_pressed::return#7
byte keyboard_event_pressed::return#8
byte keyboard_event_pressed::return#9
byte keyboard_event_pressed::row_bits
byte keyboard_event_pressed::row_bits#0
void keyboard_event_scan()
byte~ keyboard_event_scan::$0
bool~ keyboard_event_scan::$1
bool~ keyboard_event_scan::$10
bool~ keyboard_event_scan::$11
byte~ keyboard_event_scan::$12
bool~ keyboard_event_scan::$13
number~ keyboard_event_scan::$14
byte~ keyboard_event_scan::$15
byte~ keyboard_event_scan::$16
bool~ keyboard_event_scan::$17
bool~ keyboard_event_scan::$18
bool~ keyboard_event_scan::$19
bool~ keyboard_event_scan::$2
bool~ keyboard_event_scan::$20
byte~ keyboard_event_scan::$21
bool~ keyboard_event_scan::$22
number~ keyboard_event_scan::$23
bool~ keyboard_event_scan::$24
bool~ keyboard_event_scan::$25
byte~ keyboard_event_scan::$26
byte~ keyboard_event_scan::$27
byte~ keyboard_event_scan::$28
byte~ keyboard_event_scan::$29
byte~ keyboard_event_scan::$3
bool~ keyboard_event_scan::$4
bool~ keyboard_event_scan::$5
byte~ keyboard_event_scan::$6
bool~ keyboard_event_scan::$7
bool~ keyboard_event_scan::$8
byte~ keyboard_event_scan::$9
byte keyboard_event_scan::col
byte keyboard_event_scan::col#0
byte keyboard_event_scan::col#1
byte keyboard_event_scan::col#2
byte keyboard_event_scan::col#3
byte keyboard_event_scan::col#4
byte keyboard_event_scan::col#5
byte keyboard_event_scan::col#6
byte keyboard_event_scan::col#7
byte keyboard_event_scan::event_type
byte keyboard_event_scan::event_type#0
byte keyboard_event_scan::keycode
byte keyboard_event_scan::keycode#0
byte keyboard_event_scan::keycode#1
byte keyboard_event_scan::keycode#10
byte keyboard_event_scan::keycode#11
byte keyboard_event_scan::keycode#12
byte keyboard_event_scan::keycode#13
byte keyboard_event_scan::keycode#14
byte keyboard_event_scan::keycode#2
byte keyboard_event_scan::keycode#3
byte keyboard_event_scan::keycode#4
byte keyboard_event_scan::keycode#5
byte keyboard_event_scan::keycode#6
byte keyboard_event_scan::keycode#7
byte keyboard_event_scan::keycode#8
byte keyboard_event_scan::keycode#9
byte keyboard_event_scan::row
byte keyboard_event_scan::row#0
byte keyboard_event_scan::row#1
byte keyboard_event_scan::row#10
byte keyboard_event_scan::row#11
byte keyboard_event_scan::row#12
byte keyboard_event_scan::row#13
byte keyboard_event_scan::row#2
byte keyboard_event_scan::row#3
byte keyboard_event_scan::row#4
byte keyboard_event_scan::row#5
byte keyboard_event_scan::row#6
byte keyboard_event_scan::row#7
byte keyboard_event_scan::row#8
byte keyboard_event_scan::row#9
byte keyboard_event_scan::row_scan
byte keyboard_event_scan::row_scan#0
byte keyboard_event_scan::row_scan#1
byte keyboard_event_scan::row_scan#2
byte keyboard_event_scan::row_scan#3
byte keyboard_event_scan::row_scan#4
byte keyboard_event_scan::row_scan#5
byte keyboard_event_scan::row_scan#6
byte keyboard_event_scan::row_scan#7
byte keyboard_event_scan::row_scan#8
const byte* keyboard_events[8] = { fill( 8, 0) }
byte keyboard_events_size
byte keyboard_events_size#0
byte keyboard_events_size#1
byte keyboard_events_size#10
byte keyboard_events_size#11
byte keyboard_events_size#12
byte keyboard_events_size#13
byte keyboard_events_size#14
byte keyboard_events_size#15
byte keyboard_events_size#16
byte keyboard_events_size#17
byte keyboard_events_size#18
byte keyboard_events_size#19
byte keyboard_events_size#2
byte keyboard_events_size#20
byte keyboard_events_size#21
byte keyboard_events_size#22
byte keyboard_events_size#23
byte keyboard_events_size#24
byte keyboard_events_size#25
byte keyboard_events_size#26
byte keyboard_events_size#27
byte keyboard_events_size#28
byte keyboard_events_size#29
byte keyboard_events_size#3
byte keyboard_events_size#30
byte keyboard_events_size#31
byte keyboard_events_size#32
byte keyboard_events_size#33
byte keyboard_events_size#34
byte keyboard_events_size#35
byte keyboard_events_size#36
byte keyboard_events_size#37
byte keyboard_events_size#38
byte keyboard_events_size#39
byte keyboard_events_size#4
byte keyboard_events_size#40
byte keyboard_events_size#41
byte keyboard_events_size#42
byte keyboard_events_size#43
byte keyboard_events_size#44
byte keyboard_events_size#45
byte keyboard_events_size#46
byte keyboard_events_size#47
byte keyboard_events_size#48
byte keyboard_events_size#49
byte keyboard_events_size#5
byte keyboard_events_size#50
byte keyboard_events_size#51
byte keyboard_events_size#52
byte keyboard_events_size#53
byte keyboard_events_size#54
byte keyboard_events_size#55
byte keyboard_events_size#56
byte keyboard_events_size#57
byte keyboard_events_size#58
byte keyboard_events_size#59
byte keyboard_events_size#6
byte keyboard_events_size#60
byte keyboard_events_size#61
byte keyboard_events_size#62
byte keyboard_events_size#63
byte keyboard_events_size#64
byte keyboard_events_size#65
byte keyboard_events_size#66
byte keyboard_events_size#67
byte keyboard_events_size#68
byte keyboard_events_size#69
byte keyboard_events_size#7
byte keyboard_events_size#70
byte keyboard_events_size#71
byte keyboard_events_size#72
byte keyboard_events_size#73
byte keyboard_events_size#74
byte keyboard_events_size#75
byte keyboard_events_size#76
byte keyboard_events_size#8
byte keyboard_events_size#9
const byte* keyboard_matrix_col_bitmask[8] = { 1, 2, 4, 8, $10, $20, $40, $80 }
byte keyboard_matrix_read(byte keyboard_matrix_read::rowid)
byte~ keyboard_matrix_read::$0
byte keyboard_matrix_read::return
byte keyboard_matrix_read::return#0
byte keyboard_matrix_read::return#1
byte keyboard_matrix_read::return#2
byte keyboard_matrix_read::return#3
byte keyboard_matrix_read::return#4
byte keyboard_matrix_read::row_pressed_bits
byte keyboard_matrix_read::row_pressed_bits#0
byte keyboard_matrix_read::rowid
byte keyboard_matrix_read::rowid#0
byte keyboard_matrix_read::rowid#1
const byte* keyboard_matrix_row_bitmask[8] = { $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f }
byte keyboard_modifiers
byte keyboard_modifiers#0
byte keyboard_modifiers#1
byte keyboard_modifiers#10
byte keyboard_modifiers#11
byte keyboard_modifiers#12
byte keyboard_modifiers#13
byte keyboard_modifiers#14
byte keyboard_modifiers#15
byte keyboard_modifiers#16
byte keyboard_modifiers#17
byte keyboard_modifiers#18
byte keyboard_modifiers#19
byte keyboard_modifiers#2
byte keyboard_modifiers#20
byte keyboard_modifiers#21
byte keyboard_modifiers#22
byte keyboard_modifiers#23
byte keyboard_modifiers#24
byte keyboard_modifiers#25
byte keyboard_modifiers#26
byte keyboard_modifiers#27
byte keyboard_modifiers#28
byte keyboard_modifiers#29
byte keyboard_modifiers#3
byte keyboard_modifiers#30
byte keyboard_modifiers#31
byte keyboard_modifiers#32
byte keyboard_modifiers#33
byte keyboard_modifiers#34
byte keyboard_modifiers#35
byte keyboard_modifiers#36
byte keyboard_modifiers#37
byte keyboard_modifiers#38
byte keyboard_modifiers#39
byte keyboard_modifiers#4
byte keyboard_modifiers#40
byte keyboard_modifiers#41
byte keyboard_modifiers#42
byte keyboard_modifiers#43
byte keyboard_modifiers#44
byte keyboard_modifiers#45
byte keyboard_modifiers#46
byte keyboard_modifiers#47
byte keyboard_modifiers#48
byte keyboard_modifiers#49
byte keyboard_modifiers#5
byte keyboard_modifiers#50
byte keyboard_modifiers#51
byte keyboard_modifiers#52
byte keyboard_modifiers#53
byte keyboard_modifiers#54
byte keyboard_modifiers#55
byte keyboard_modifiers#56
byte keyboard_modifiers#57
byte keyboard_modifiers#58
byte keyboard_modifiers#6
byte keyboard_modifiers#7
byte keyboard_modifiers#8
byte keyboard_modifiers#9
const byte* keyboard_scan_values[8] = { fill( 8, 0) }
byte level
byte level#0
byte level#1
byte level#10
byte level#100
byte level#101
byte level#102
byte level#11
byte level#12
byte level#13
byte level#14
byte level#15
byte level#16
byte level#17
byte level#18
byte level#19
byte level#2
byte level#20
byte level#21
byte level#22
byte level#23
byte level#24
byte level#25
byte level#26
byte level#27
byte level#28
byte level#29
byte level#3
byte level#30
byte level#31
byte level#32
byte level#33
byte level#34
byte level#35
byte level#36
byte level#37
byte level#38
byte level#39
byte level#4
byte level#40
byte level#41
byte level#42
byte level#43
byte level#44
byte level#45
byte level#46
byte level#47
byte level#48
byte level#49
byte level#5
byte level#50
byte level#51
byte level#52
byte level#53
byte level#54
byte level#55
byte level#56
byte level#57
byte level#58
byte level#59
byte level#6
byte level#60
byte level#61
byte level#62
byte level#63
byte level#64
byte level#65
byte level#66
byte level#67
byte level#68
byte level#69
byte level#7
byte level#70
byte level#71
byte level#72
byte level#73
byte level#74
byte level#75
byte level#76
byte level#77
byte level#78
byte level#79
byte level#8
byte level#80
byte level#81
byte level#82
byte level#83
byte level#84
byte level#85
byte level#86
byte level#87
byte level#88
byte level#89
byte level#9
byte level#90
byte level#91
byte level#92
byte level#93
byte level#94
byte level#95
byte level#96
byte level#97
byte level#98
byte level#99
byte level_bcd
byte level_bcd#0
byte level_bcd#1
byte level_bcd#10
byte level_bcd#11
byte level_bcd#12
byte level_bcd#13
byte level_bcd#14
byte level_bcd#15
byte level_bcd#16
byte level_bcd#17
byte level_bcd#18
byte level_bcd#19
byte level_bcd#2
byte level_bcd#20
byte level_bcd#21
byte level_bcd#22
byte level_bcd#23
byte level_bcd#24
byte level_bcd#25
byte level_bcd#26
byte level_bcd#27
byte level_bcd#28
byte level_bcd#29
byte level_bcd#3
byte level_bcd#30
byte level_bcd#31
byte level_bcd#32
byte level_bcd#33
byte level_bcd#34
byte level_bcd#35
byte level_bcd#36
byte level_bcd#37
byte level_bcd#38
byte level_bcd#39
byte level_bcd#4
byte level_bcd#40
byte level_bcd#41
byte level_bcd#42
byte level_bcd#43
byte level_bcd#44
byte level_bcd#45
byte level_bcd#46
byte level_bcd#47
byte level_bcd#48
byte level_bcd#49
byte level_bcd#5
byte level_bcd#50
byte level_bcd#51
byte level_bcd#52
byte level_bcd#53
byte level_bcd#54
byte level_bcd#55
byte level_bcd#56
byte level_bcd#57
byte level_bcd#58
byte level_bcd#59
byte level_bcd#6
byte level_bcd#60
byte level_bcd#61
byte level_bcd#62
byte level_bcd#63
byte level_bcd#64
byte level_bcd#65
byte level_bcd#66
byte level_bcd#67
byte level_bcd#68
byte level_bcd#69
byte level_bcd#7
byte level_bcd#70
byte level_bcd#71
byte level_bcd#72
byte level_bcd#73
byte level_bcd#74
byte level_bcd#75
byte level_bcd#76
byte level_bcd#77
byte level_bcd#78
byte level_bcd#79
byte level_bcd#8
byte level_bcd#80
byte level_bcd#81
byte level_bcd#82
byte level_bcd#83
byte level_bcd#84
byte level_bcd#85
byte level_bcd#86
byte level_bcd#87
byte level_bcd#88
byte level_bcd#89
byte level_bcd#9
byte level_bcd#90
byte level_bcd#91
byte level_bcd#92
byte level_bcd#93
byte level_bcd#94
byte level_bcd#95
byte level_bcd#96
byte level_bcd#97
byte level_bcd#98
byte level_bcd#99
word lines_bcd
word lines_bcd#0
word lines_bcd#1
word lines_bcd#10
word lines_bcd#11
word lines_bcd#12
word lines_bcd#13
word lines_bcd#14
word lines_bcd#15
word lines_bcd#16
word lines_bcd#17
word lines_bcd#18
word lines_bcd#19
word lines_bcd#2
word lines_bcd#20
word lines_bcd#21
word lines_bcd#22
word lines_bcd#23
word lines_bcd#24
word lines_bcd#25
word lines_bcd#26
word lines_bcd#27
word lines_bcd#28
word lines_bcd#29
word lines_bcd#3
word lines_bcd#30
word lines_bcd#31
word lines_bcd#32
word lines_bcd#33
word lines_bcd#34
word lines_bcd#35
word lines_bcd#36
word lines_bcd#37
word lines_bcd#38
word lines_bcd#39
word lines_bcd#4
word lines_bcd#40
word lines_bcd#41
word lines_bcd#42
word lines_bcd#43
word lines_bcd#44
word lines_bcd#45
word lines_bcd#46
word lines_bcd#47
word lines_bcd#48
word lines_bcd#49
word lines_bcd#5
word lines_bcd#50
word lines_bcd#51
word lines_bcd#52
word lines_bcd#53
word lines_bcd#54
word lines_bcd#55
word lines_bcd#56
word lines_bcd#57
word lines_bcd#58
word lines_bcd#59
word lines_bcd#6
word lines_bcd#60
word lines_bcd#61
word lines_bcd#62
word lines_bcd#63
word lines_bcd#64
word lines_bcd#65
word lines_bcd#66
word lines_bcd#67
word lines_bcd#68
word lines_bcd#69
word lines_bcd#7
word lines_bcd#70
word lines_bcd#71
word lines_bcd#72
word lines_bcd#73
word lines_bcd#74
word lines_bcd#75
word lines_bcd#76
word lines_bcd#77
word lines_bcd#78
word lines_bcd#79
word lines_bcd#8
word lines_bcd#80
word lines_bcd#81
word lines_bcd#82
word lines_bcd#83
word lines_bcd#84
word lines_bcd#85
word lines_bcd#86
word lines_bcd#9
void main()
bool~ main::$10
byte~ main::$13
bool~ main::$14
byte~ main::$16
bool~ main::$17
bool~ main::$18
byte main::key_event
byte main::key_event#0
byte main::key_event#1
byte main::render
byte main::render#0
byte main::render#1
byte main::render#2
byte main::render#3
byte main::render#4
byte next_piece_idx
byte next_piece_idx#0
byte next_piece_idx#1
byte next_piece_idx#10
byte next_piece_idx#11
byte next_piece_idx#12
byte next_piece_idx#13
byte next_piece_idx#14
byte next_piece_idx#15
byte next_piece_idx#16
byte next_piece_idx#17
byte next_piece_idx#18
byte next_piece_idx#19
byte next_piece_idx#2
byte next_piece_idx#20
byte next_piece_idx#21
byte next_piece_idx#22
byte next_piece_idx#23
byte next_piece_idx#24
byte next_piece_idx#25
byte next_piece_idx#26
byte next_piece_idx#27
byte next_piece_idx#28
byte next_piece_idx#29
byte next_piece_idx#3
byte next_piece_idx#30
byte next_piece_idx#31
byte next_piece_idx#32
byte next_piece_idx#33
byte next_piece_idx#34
byte next_piece_idx#35
byte next_piece_idx#36
byte next_piece_idx#37
byte next_piece_idx#38
byte next_piece_idx#39
byte next_piece_idx#4
byte next_piece_idx#40
byte next_piece_idx#41
byte next_piece_idx#42
byte next_piece_idx#43
byte next_piece_idx#44
byte next_piece_idx#45
byte next_piece_idx#46
byte next_piece_idx#47
byte next_piece_idx#48
byte next_piece_idx#49
byte next_piece_idx#5
byte next_piece_idx#50
byte next_piece_idx#51
byte next_piece_idx#52
byte next_piece_idx#53
byte next_piece_idx#54
byte next_piece_idx#55
byte next_piece_idx#56
byte next_piece_idx#57
byte next_piece_idx#58
byte next_piece_idx#59
byte next_piece_idx#6
byte next_piece_idx#60
byte next_piece_idx#61
byte next_piece_idx#62
byte next_piece_idx#63
byte next_piece_idx#64
byte next_piece_idx#65
byte next_piece_idx#66
byte next_piece_idx#67
byte next_piece_idx#68
byte next_piece_idx#69
byte next_piece_idx#7
byte next_piece_idx#70
byte next_piece_idx#71
byte next_piece_idx#72
byte next_piece_idx#73
byte next_piece_idx#74
byte next_piece_idx#75
byte next_piece_idx#76
byte next_piece_idx#77
byte next_piece_idx#78
byte next_piece_idx#8
byte next_piece_idx#9
byte play_collision(byte play_collision::xpos , byte play_collision::ypos , byte play_collision::orientation)
byte*~ play_collision::$0
bool~ play_collision::$1
bool~ play_collision::$10
bool~ play_collision::$11
bool~ play_collision::$12
bool~ play_collision::$13
byte~ play_collision::$14
bool~ play_collision::$2
bool~ play_collision::$3
bool~ play_collision::$4
number~ play_collision::$5
bool~ play_collision::$6
bool~ play_collision::$7
bool~ play_collision::$8
bool~ play_collision::$9
byte play_collision::c
byte play_collision::c#0
byte play_collision::c#1
byte play_collision::c#2
byte play_collision::c#3
byte play_collision::c#4
byte play_collision::c#5
byte play_collision::c#6
byte play_collision::c#7
byte play_collision::i
byte play_collision::i#0
byte play_collision::i#1
byte play_collision::i#2
byte play_collision::i#3
byte play_collision::i#4
byte play_collision::i#5
byte play_collision::i#6
byte play_collision::i#7
byte play_collision::i#8
byte play_collision::i#9
byte play_collision::l
byte play_collision::l#0
byte play_collision::l#1
byte play_collision::l#2
byte play_collision::l#3
byte play_collision::l#4
byte play_collision::l#5
byte play_collision::l#6
byte play_collision::l#7
byte play_collision::l#8
byte play_collision::l#9
byte play_collision::orientation
byte play_collision::orientation#0
byte play_collision::orientation#1
byte play_collision::orientation#2
byte play_collision::orientation#3
byte play_collision::orientation#4
byte play_collision::orientation#5
byte* play_collision::piece_gfx
byte* play_collision::piece_gfx#0
byte* play_collision::piece_gfx#1
byte* play_collision::piece_gfx#2
byte* play_collision::piece_gfx#3
byte* play_collision::piece_gfx#4
byte* play_collision::piece_gfx#5
byte* play_collision::piece_gfx#6
byte* play_collision::piece_gfx#7
byte* play_collision::piece_gfx#8
byte* play_collision::playfield_line
byte* play_collision::playfield_line#0
byte* play_collision::playfield_line#1
byte* play_collision::playfield_line#2
byte* play_collision::playfield_line#3
byte* play_collision::playfield_line#4
byte* play_collision::playfield_line#5
byte* play_collision::playfield_line#6
byte play_collision::return
byte play_collision::return#0
byte play_collision::return#1
byte play_collision::return#10
byte play_collision::return#11
byte play_collision::return#12
byte play_collision::return#13
byte play_collision::return#14
byte play_collision::return#15
byte play_collision::return#16
byte play_collision::return#2
byte play_collision::return#3
byte play_collision::return#4
byte play_collision::return#5
byte play_collision::return#6
byte play_collision::return#7
byte play_collision::return#8
byte play_collision::return#9
byte play_collision::xp
byte play_collision::xp#0
byte play_collision::xp#1
byte play_collision::xp#2
byte play_collision::xp#3
byte play_collision::xp#4
byte play_collision::xp#5
byte play_collision::xp#6
byte play_collision::xp#7
byte play_collision::xpos
byte play_collision::xpos#0
byte play_collision::xpos#1
byte play_collision::xpos#10
byte play_collision::xpos#11
byte play_collision::xpos#12
byte play_collision::xpos#13
byte play_collision::xpos#2
byte play_collision::xpos#3
byte play_collision::xpos#4
byte play_collision::xpos#5
byte play_collision::xpos#6
byte play_collision::xpos#7
byte play_collision::xpos#8
byte play_collision::xpos#9
byte play_collision::yp
byte play_collision::yp#0
byte play_collision::yp#1
byte play_collision::yp#2
byte play_collision::yp#3
byte play_collision::yp#4
byte play_collision::yp#5
byte play_collision::yp#6
byte play_collision::yp#7
byte play_collision::yp#8
byte play_collision::yp#9
byte play_collision::ypos
byte play_collision::ypos#0
byte play_collision::ypos#1
byte play_collision::ypos#2
byte play_collision::ypos#3
byte play_collision::ypos#4
byte play_collision::ypos#5
void play_increase_level()
bool~ play_increase_level::$0
number~ play_increase_level::$1
bool~ play_increase_level::$2
bool~ play_increase_level::$3
bool~ play_increase_level::$4
byte~ play_increase_level::$5
byte play_increase_level::b
byte play_increase_level::b#0
byte play_increase_level::b#1
byte play_increase_level::b#2
void play_init()
bool~ play_init::$0
bool~ play_init::$1
byte~ play_init::$2
byte~ play_init::$3
byte play_init::b
byte play_init::b#0
byte play_init::b#1
byte play_init::b#2
byte play_init::idx
byte play_init::idx#0
byte play_init::idx#1
byte play_init::idx#2
byte play_init::j
byte play_init::j#0
byte play_init::j#1
byte play_init::j#2
byte* play_init::pli
byte* play_init::pli#0
byte* play_init::pli#1
byte* play_init::pli#2
void play_lock_current()
bool~ play_lock_current::$0
bool~ play_lock_current::$1
bool~ play_lock_current::$2
bool~ play_lock_current::$3
byte~ play_lock_current::$4
byte play_lock_current::c
byte play_lock_current::c#0
byte play_lock_current::c#1
byte play_lock_current::c#2
byte play_lock_current::c#3
byte play_lock_current::c#4
byte play_lock_current::i
byte play_lock_current::i#0
byte play_lock_current::i#1
byte play_lock_current::i#2
byte play_lock_current::i#3
byte play_lock_current::i#4
byte play_lock_current::i#5
byte play_lock_current::i#6
byte play_lock_current::l
byte play_lock_current::l#0
byte play_lock_current::l#1
byte play_lock_current::l#2
byte play_lock_current::l#3
byte play_lock_current::l#4
byte play_lock_current::l#5
byte play_lock_current::l#6
byte* play_lock_current::playfield_line
byte* play_lock_current::playfield_line#0
byte* play_lock_current::playfield_line#1
byte* play_lock_current::playfield_line#2
byte* play_lock_current::playfield_line#3
byte play_lock_current::xp
byte play_lock_current::xp#0
byte play_lock_current::xp#1
byte play_lock_current::xp#2
byte play_lock_current::xp#3
byte play_lock_current::xp#4
byte play_lock_current::yp
byte play_lock_current::yp#0
byte play_lock_current::yp#1
byte play_lock_current::yp#2
byte play_lock_current::yp#3
byte play_lock_current::yp#4
byte play_lock_current::yp#5
byte play_lock_current::yp#6
byte play_move_down(byte play_move_down::key_event)
bool~ play_move_down::$0
bool~ play_move_down::$1
bool~ play_move_down::$10
number~ play_move_down::$11
byte~ play_move_down::$12
bool~ play_move_down::$13
byte~ play_move_down::$15
byte~ play_move_down::$2
bool~ play_move_down::$3
bool~ play_move_down::$4
bool~ play_move_down::$5
bool~ play_move_down::$6
bool~ play_move_down::$7
bool~ play_move_down::$8
bool~ play_move_down::$9
byte play_move_down::key_event
byte play_move_down::key_event#0
byte play_move_down::key_event#1
byte play_move_down::movedown
byte play_move_down::movedown#0
byte play_move_down::movedown#1
byte play_move_down::movedown#10
byte play_move_down::movedown#11
byte play_move_down::movedown#2
byte play_move_down::movedown#3
byte play_move_down::movedown#4
byte play_move_down::movedown#5
byte play_move_down::movedown#6
byte play_move_down::movedown#7
byte play_move_down::movedown#8
byte play_move_down::movedown#9
byte play_move_down::removed
byte play_move_down::removed#0
byte play_move_down::return
byte play_move_down::return#0
byte play_move_down::return#1
byte play_move_down::return#2
byte play_move_down::return#3
byte play_move_down::return#4
byte play_move_down::return#5
byte play_move_leftright(byte play_move_leftright::key_event)
bool~ play_move_leftright::$0
bool~ play_move_leftright::$1
bool~ play_move_leftright::$10
bool~ play_move_leftright::$2
number~ play_move_leftright::$3
byte~ play_move_leftright::$4
bool~ play_move_leftright::$5
bool~ play_move_leftright::$6
number~ play_move_leftright::$7
byte~ play_move_leftright::$8
bool~ play_move_leftright::$9
byte play_move_leftright::key_event
byte play_move_leftright::key_event#0
byte play_move_leftright::key_event#1
byte play_move_leftright::key_event#2
byte play_move_leftright::return
byte play_move_leftright::return#0
byte play_move_leftright::return#1
byte play_move_leftright::return#2
byte play_move_leftright::return#3
byte play_move_leftright::return#4
byte play_move_leftright::return#5
byte play_move_leftright::return#6
byte play_move_rotate(byte play_move_rotate::key_event)
bool~ play_move_rotate::$0
bool~ play_move_rotate::$1
byte~ play_move_rotate::$2
bool~ play_move_rotate::$3
bool~ play_move_rotate::$4
number~ play_move_rotate::$5
number~ play_move_rotate::$6
number~ play_move_rotate::$7
number~ play_move_rotate::$8
byte*~ play_move_rotate::$9
byte play_move_rotate::key_event
byte play_move_rotate::key_event#0
byte play_move_rotate::key_event#1
byte play_move_rotate::key_event#2
byte play_move_rotate::orientation
byte play_move_rotate::orientation#0
byte play_move_rotate::orientation#1
byte play_move_rotate::orientation#2
byte play_move_rotate::orientation#3
byte play_move_rotate::orientation#4
byte play_move_rotate::orientation#5
byte play_move_rotate::return
byte play_move_rotate::return#0
byte play_move_rotate::return#1
byte play_move_rotate::return#2
byte play_move_rotate::return#3
byte play_move_rotate::return#4
byte play_move_rotate::return#5
byte play_move_rotate::return#6
byte play_movement(byte play_movement::key_event)
byte~ play_movement::$0
bool~ play_movement::$1
bool~ play_movement::$2
byte~ play_movement::$3
byte~ play_movement::$4
byte play_movement::key_event
byte play_movement::key_event#0
byte play_movement::key_event#1
byte play_movement::key_event#2
byte play_movement::key_event#3
byte play_movement::key_event#4
byte play_movement::render
byte play_movement::render#0
byte play_movement::render#1
byte play_movement::render#2
byte play_movement::render#3
byte play_movement::render#4
byte play_movement::render#5
byte play_movement::render#6
byte play_movement::render#7
byte play_movement::render#8
byte play_movement::return
byte play_movement::return#0
byte play_movement::return#1
byte play_movement::return#2
byte play_movement::return#3
byte play_movement::return#4
byte play_movement::return#5
byte play_remove_lines()
bool~ play_remove_lines::$0
bool~ play_remove_lines::$1
bool~ play_remove_lines::$2
bool~ play_remove_lines::$3
bool~ play_remove_lines::$4
byte~ play_remove_lines::$5
bool~ play_remove_lines::$6
bool~ play_remove_lines::$7
byte play_remove_lines::c
byte play_remove_lines::c#0
byte play_remove_lines::c#1
byte play_remove_lines::c#2
byte play_remove_lines::full
byte play_remove_lines::full#0
byte play_remove_lines::full#1
byte play_remove_lines::full#2
byte play_remove_lines::full#3
byte play_remove_lines::full#4
byte play_remove_lines::r
byte play_remove_lines::r#0
byte play_remove_lines::r#1
byte play_remove_lines::r#2
byte play_remove_lines::r#3
byte play_remove_lines::r#4
byte play_remove_lines::r#5
byte play_remove_lines::r#6
byte play_remove_lines::r#7
byte play_remove_lines::r#8
byte play_remove_lines::removed
byte play_remove_lines::removed#0
byte play_remove_lines::removed#1
byte play_remove_lines::removed#10
byte play_remove_lines::removed#11
byte play_remove_lines::removed#2
byte play_remove_lines::removed#3
byte play_remove_lines::removed#4
byte play_remove_lines::removed#5
byte play_remove_lines::removed#6
byte play_remove_lines::removed#7
byte play_remove_lines::removed#8
byte play_remove_lines::removed#9
byte play_remove_lines::return
byte play_remove_lines::return#0
byte play_remove_lines::return#1
byte play_remove_lines::return#2
byte play_remove_lines::return#3
byte play_remove_lines::return#4
byte play_remove_lines::w
byte play_remove_lines::w#0
byte play_remove_lines::w#1
byte play_remove_lines::w#10
byte play_remove_lines::w#11
byte play_remove_lines::w#12
byte play_remove_lines::w#2
byte play_remove_lines::w#3
byte play_remove_lines::w#4
byte play_remove_lines::w#5
byte play_remove_lines::w#6
byte play_remove_lines::w#7
byte play_remove_lines::w#8
byte play_remove_lines::w#9
byte play_remove_lines::x
byte play_remove_lines::x#0
byte play_remove_lines::x#1
byte play_remove_lines::x#2
byte play_remove_lines::x#3
byte play_remove_lines::x#4
byte play_remove_lines::y
byte play_remove_lines::y#0
byte play_remove_lines::y#1
byte play_remove_lines::y#2
byte play_remove_lines::y#3
byte play_remove_lines::y#4
byte play_remove_lines::y#5
byte play_remove_lines::y#6
byte play_remove_lines::y#7
byte play_remove_lines::y#8
void play_spawn_current()
byte*~ play_spawn_current::$0
byte~ play_spawn_current::$1
bool~ play_spawn_current::$2
bool~ play_spawn_current::$3
bool~ play_spawn_current::$4
byte~ play_spawn_current::$5
number~ play_spawn_current::$6
byte~ play_spawn_current::$7
byte play_spawn_current::current_piece_idx
byte play_spawn_current::current_piece_idx#0
byte play_spawn_current::piece_idx
byte play_spawn_current::piece_idx#0
byte play_spawn_current::piece_idx#1
byte play_spawn_current::piece_idx#2
byte play_spawn_current::piece_idx#3
byte play_spawn_current::sid_rnd1_return
byte play_spawn_current::sid_rnd1_return#0
byte play_spawn_current::sid_rnd1_return#1
byte play_spawn_current::sid_rnd1_return#2
byte play_spawn_current::sid_rnd1_return#3
void play_update_score(byte play_update_score::removed)
bool~ play_update_score::$0
bool~ play_update_score::$1
byte~ play_update_score::$2
number~ play_update_score::$3
byte~ play_update_score::$4
number~ play_update_score::$5
bool~ play_update_score::$6
bool~ play_update_score::$7
byte~ play_update_score::$9
dword play_update_score::add_bcd
dword play_update_score::add_bcd#0
byte play_update_score::lines_after
byte play_update_score::lines_after#0
byte play_update_score::lines_before
byte play_update_score::lines_before#0
byte play_update_score::removed
byte play_update_score::removed#0
byte play_update_score::removed#1
byte play_update_score::removed#2
const byte* playfield[PLAYFIELD_LINES*PLAYFIELD_COLS] = { fill( PLAYFIELD_LINES*PLAYFIELD_COLS, 0) }
const byte** playfield_lines[PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
const byte* playfield_lines_idx[PLAYFIELD_LINES+1] = { fill( PLAYFIELD_LINES+1, 0) }
void render_bcd(byte* render_bcd::screen , word render_bcd::offset , byte render_bcd::bcd , byte render_bcd::only_low)
byte*~ render_bcd::$0
bool~ render_bcd::$1
bool~ render_bcd::$2
number~ render_bcd::$3
number~ render_bcd::$4
byte~ render_bcd::$5
byte~ render_bcd::$6
const nomodify byte render_bcd::ZERO_CHAR = $35
byte render_bcd::bcd
byte render_bcd::bcd#0
byte render_bcd::bcd#1
byte render_bcd::bcd#2
byte render_bcd::bcd#3
byte render_bcd::bcd#4
byte render_bcd::bcd#5
byte render_bcd::bcd#6
byte render_bcd::bcd#7
byte render_bcd::bcd#8
word render_bcd::offset
word render_bcd::offset#0
word render_bcd::offset#1
word render_bcd::offset#2
word render_bcd::offset#3
word render_bcd::offset#4
word render_bcd::offset#5
word render_bcd::offset#6
byte render_bcd::only_low
byte render_bcd::only_low#0
byte render_bcd::only_low#1
byte render_bcd::only_low#2
byte render_bcd::only_low#3
byte render_bcd::only_low#4
byte render_bcd::only_low#5
byte render_bcd::only_low#6
byte* render_bcd::screen
byte* render_bcd::screen#0
byte* render_bcd::screen#1
byte* render_bcd::screen#2
byte* render_bcd::screen#3
byte* render_bcd::screen#4
byte* render_bcd::screen#5
byte* render_bcd::screen#6
byte* render_bcd::screen_pos
byte* render_bcd::screen_pos#0
byte* render_bcd::screen_pos#1
byte* render_bcd::screen_pos#2
byte* render_bcd::screen_pos#3
byte* render_bcd::screen_pos#4
void render_init()
bool~ render_init::$3
byte~ render_init::$4
byte~ render_init::$5
byte render_init::i
byte render_init::i#0
byte render_init::i#1
byte render_init::i#2
byte* render_init::li_1
byte* render_init::li_1#0
byte* render_init::li_1#1
byte* render_init::li_1#2
byte* render_init::li_2
byte* render_init::li_2#0
byte* render_init::li_2#1
byte* render_init::li_2#2
byte~ render_init::vicSelectGfxBank1_$0
byte* render_init::vicSelectGfxBank1_gfx
byte* render_init::vicSelectGfxBank1_gfx#0
byte* render_init::vicSelectGfxBank1_gfx#1
byte~ render_init::vicSelectGfxBank1_toDd001_$0
number~ render_init::vicSelectGfxBank1_toDd001_$1
number~ render_init::vicSelectGfxBank1_toDd001_$2
byte* render_init::vicSelectGfxBank1_toDd001_gfx
byte* render_init::vicSelectGfxBank1_toDd001_gfx#0
byte* render_init::vicSelectGfxBank1_toDd001_gfx#1
byte render_init::vicSelectGfxBank1_toDd001_return
byte render_init::vicSelectGfxBank1_toDd001_return#0
byte render_init::vicSelectGfxBank1_toDd001_return#1
byte render_init::vicSelectGfxBank1_toDd001_return#2
byte render_init::vicSelectGfxBank1_toDd001_return#3
void render_moving()
bool~ render_moving::$0
byte~ render_moving::$1
bool~ render_moving::$2
bool~ render_moving::$3
bool~ render_moving::$4
bool~ render_moving::$5
byte~ render_moving::$6
byte render_moving::c
byte render_moving::c#0
byte render_moving::c#1
byte render_moving::c#2
byte render_moving::c#3
byte render_moving::c#4
byte render_moving::current_cell
byte render_moving::current_cell#0
byte render_moving::i
byte render_moving::i#0
byte render_moving::i#1
byte render_moving::i#2
byte render_moving::i#3
byte render_moving::i#4
byte render_moving::i#5
byte render_moving::i#6
byte render_moving::i#7
byte render_moving::i#8
byte render_moving::i#9
byte render_moving::l
byte render_moving::l#0
byte render_moving::l#1
byte render_moving::l#2
byte render_moving::l#3
byte render_moving::l#4
byte render_moving::l#5
byte render_moving::l#6
byte render_moving::l#7
byte render_moving::l#8
byte* render_moving::screen_line
byte* render_moving::screen_line#0
byte* render_moving::screen_line#1
byte* render_moving::screen_line#2
byte* render_moving::screen_line#3
byte render_moving::xpos
byte render_moving::xpos#0
byte render_moving::xpos#1
byte render_moving::xpos#2
byte render_moving::xpos#3
byte render_moving::xpos#4
byte render_moving::ypos
byte render_moving::ypos#0
byte render_moving::ypos#1
byte render_moving::ypos#2
byte render_moving::ypos#3
byte render_moving::ypos#4
byte render_moving::ypos#5
byte render_moving::ypos#6
byte render_moving::ypos#7
byte render_moving::ypos#8
void render_next()
bool~ render_next::$0
byte*~ render_next::$1
byte*~ render_next::$2
bool~ render_next::$3
bool~ render_next::$4
bool~ render_next::$5
byte~ render_next::$6
byte render_next::c
byte render_next::c#0
byte render_next::c#1
byte render_next::c#2
byte render_next::c#3
byte render_next::c#4
byte render_next::c#5
byte render_next::cell
byte render_next::cell#0
byte render_next::l
byte render_next::l#0
byte render_next::l#1
byte render_next::l#2
byte render_next::l#3
byte render_next::l#4
byte render_next::l#5
byte render_next::l#6
byte render_next::l#7
const word render_next::next_area_offset = (word)$28*$c+$18+4
byte render_next::next_piece_char
byte render_next::next_piece_char#0
byte render_next::next_piece_char#1
byte render_next::next_piece_char#2
byte render_next::next_piece_char#3
byte render_next::next_piece_char#4
byte render_next::next_piece_char#5
byte render_next::next_piece_char#6
byte* render_next::next_piece_gfx
byte* render_next::next_piece_gfx#0
byte* render_next::next_piece_gfx#1
byte* render_next::next_piece_gfx#2
byte* render_next::next_piece_gfx#3
byte* render_next::next_piece_gfx#4
byte* render_next::next_piece_gfx#5
byte* render_next::next_piece_gfx#6
byte* render_next::next_piece_gfx#7
byte* render_next::screen_next_area
byte* render_next::screen_next_area#0
byte* render_next::screen_next_area#1
byte* render_next::screen_next_area#10
byte* render_next::screen_next_area#11
byte* render_next::screen_next_area#2
byte* render_next::screen_next_area#3
byte* render_next::screen_next_area#4
byte* render_next::screen_next_area#5
byte* render_next::screen_next_area#6
byte* render_next::screen_next_area#7
byte* render_next::screen_next_area#8
byte* render_next::screen_next_area#9
void render_playfield()
byte~ render_playfield::$0
bool~ render_playfield::$1
bool~ render_playfield::$2
byte~ render_playfield::$3
byte render_playfield::c
byte render_playfield::c#0
byte render_playfield::c#1
byte render_playfield::c#2
byte render_playfield::i
byte render_playfield::i#0
byte render_playfield::i#1
byte render_playfield::i#2
byte render_playfield::i#3
byte render_playfield::i#4
byte render_playfield::l
byte render_playfield::l#0
byte render_playfield::l#1
byte render_playfield::l#2
byte render_playfield::l#3
byte render_playfield::l#4
byte* render_playfield::screen_line
byte* render_playfield::screen_line#0
byte* render_playfield::screen_line#1
byte* render_playfield::screen_line#2
void render_score()
bool~ render_score::$0
number~ render_score::$2
number~ render_score::$4
byte~ render_score::$6
number~ render_score::$8
byte~ render_score::$9
const word render_score::level_offset = (word)$28*$13+$1f
const word render_score::lines_offset = (word)$28*1+$16
const byte* render_score::score_bytes = (byte*)&score_bcd
const word render_score::score_offset = (word)$28*5+$1c
byte* render_score::screen
byte* render_score::screen#0
byte* render_score::screen#1
byte* render_score::screen#2
byte* render_score::screen#3
byte* render_score::screen#4
byte* render_score::screen#5
byte* render_score::screen#6
byte* render_score::screen#7
byte* render_score::screen#8
void render_screen_original(byte* render_screen_original::screen)
bool~ render_screen_original::$0
bool~ render_screen_original::$1
bool~ render_screen_original::$2
bool~ render_screen_original::$3
const byte render_screen_original::SPACE = 0
byte* render_screen_original::cols
byte* render_screen_original::cols#0
byte* render_screen_original::cols#1
byte* render_screen_original::cols#2
byte* render_screen_original::cols#3
byte* render_screen_original::cols#4
byte* render_screen_original::cols#5
byte* render_screen_original::cols#6
byte* render_screen_original::cols#7
byte* render_screen_original::cols#8
byte* render_screen_original::ocols
byte* render_screen_original::ocols#0
byte* render_screen_original::ocols#1
byte* render_screen_original::ocols#2
byte* render_screen_original::ocols#3
byte* render_screen_original::ocols#4
byte* render_screen_original::ocols#5
byte* render_screen_original::ocols#6
byte* render_screen_original::oscr
byte* render_screen_original::oscr#0
byte* render_screen_original::oscr#1
byte* render_screen_original::oscr#2
byte* render_screen_original::oscr#3
byte* render_screen_original::oscr#4
byte* render_screen_original::oscr#5
byte* render_screen_original::oscr#6
byte* render_screen_original::screen
byte* render_screen_original::screen#0
byte* render_screen_original::screen#1
byte* render_screen_original::screen#10
byte* render_screen_original::screen#2
byte* render_screen_original::screen#3
byte* render_screen_original::screen#4
byte* render_screen_original::screen#5
byte* render_screen_original::screen#6
byte* render_screen_original::screen#7
byte* render_screen_original::screen#8
byte* render_screen_original::screen#9
byte render_screen_original::x
byte render_screen_original::x#0
byte render_screen_original::x#1
byte render_screen_original::x#2
byte render_screen_original::x#3
byte render_screen_original::x#4
byte render_screen_original::x#5
byte render_screen_original::x#6
byte render_screen_original::y
byte render_screen_original::y#0
byte render_screen_original::y#1
byte render_screen_original::y#2
byte render_screen_original::y#3
byte render_screen_original::y#4
byte render_screen_original::y#5
byte render_screen_original::y#6
byte render_screen_render
byte render_screen_render#0
byte render_screen_render#1
byte render_screen_render#10
byte render_screen_render#11
byte render_screen_render#12
byte render_screen_render#13
byte render_screen_render#14
byte render_screen_render#15
byte render_screen_render#16
byte render_screen_render#17
byte render_screen_render#18
byte render_screen_render#19
byte render_screen_render#2
byte render_screen_render#20
byte render_screen_render#21
byte render_screen_render#22
byte render_screen_render#23
byte render_screen_render#24
byte render_screen_render#25
byte render_screen_render#26
byte render_screen_render#27
byte render_screen_render#28
byte render_screen_render#29
byte render_screen_render#3
byte render_screen_render#30
byte render_screen_render#31
byte render_screen_render#32
byte render_screen_render#33
byte render_screen_render#34
byte render_screen_render#35
byte render_screen_render#36
byte render_screen_render#37
byte render_screen_render#38
byte render_screen_render#39
byte render_screen_render#4
byte render_screen_render#40
byte render_screen_render#41
byte render_screen_render#42
byte render_screen_render#43
byte render_screen_render#44
byte render_screen_render#45
byte render_screen_render#46
byte render_screen_render#47
byte render_screen_render#48
byte render_screen_render#49
byte render_screen_render#5
byte render_screen_render#50
byte render_screen_render#51
byte render_screen_render#52
byte render_screen_render#53
byte render_screen_render#54
byte render_screen_render#55
byte render_screen_render#56
byte render_screen_render#57
byte render_screen_render#58
byte render_screen_render#59
byte render_screen_render#6
byte render_screen_render#60
byte render_screen_render#61
byte render_screen_render#62
byte render_screen_render#7
byte render_screen_render#8
byte render_screen_render#9
byte render_screen_show
byte render_screen_show#0
byte render_screen_show#1
byte render_screen_show#10
byte render_screen_show#11
byte render_screen_show#12
byte render_screen_show#13
byte render_screen_show#14
byte render_screen_show#15
byte render_screen_show#16
byte render_screen_show#17
byte render_screen_show#18
byte render_screen_show#19
byte render_screen_show#2
byte render_screen_show#20
byte render_screen_show#21
byte render_screen_show#22
byte render_screen_show#23
byte render_screen_show#24
byte render_screen_show#25
byte render_screen_show#26
byte render_screen_show#27
byte render_screen_show#28
byte render_screen_show#29
byte render_screen_show#3
byte render_screen_show#30
byte render_screen_show#31
byte render_screen_show#32
byte render_screen_show#33
byte render_screen_show#34
byte render_screen_show#35
byte render_screen_show#36
byte render_screen_show#37
byte render_screen_show#38
byte render_screen_show#39
byte render_screen_show#4
byte render_screen_show#40
byte render_screen_show#41
byte render_screen_show#42
byte render_screen_show#43
byte render_screen_show#44
byte render_screen_show#45
byte render_screen_show#46
byte render_screen_show#47
byte render_screen_show#48
byte render_screen_show#49
byte render_screen_show#5
byte render_screen_show#50
byte render_screen_show#51
byte render_screen_show#52
byte render_screen_show#53
byte render_screen_show#54
byte render_screen_show#55
byte render_screen_show#56
byte render_screen_show#57
byte render_screen_show#58
byte render_screen_show#6
byte render_screen_show#7
byte render_screen_show#8
byte render_screen_show#9
volatile byte render_screen_showing loadstore
void render_screen_swap()
void render_show()
bool~ render_show::$0
byte~ render_show::$1
byte~ render_show::$2
byte render_show::d018val
byte render_show::d018val#0
byte render_show::d018val#1
byte render_show::d018val#2
byte render_show::d018val#3
number~ render_show::toD0181_$0
number~ render_show::toD0181_$1
number~ render_show::toD0181_$2
byte~ render_show::toD0181_$3
number~ render_show::toD0181_$4
number~ render_show::toD0181_$5
number~ render_show::toD0181_$6
word~ render_show::toD0181_$7
byte* render_show::toD0181_gfx
byte* render_show::toD0181_gfx#0
byte* render_show::toD0181_gfx#1
byte render_show::toD0181_return
byte render_show::toD0181_return#0
byte render_show::toD0181_return#1
byte render_show::toD0181_return#2
byte render_show::toD0181_return#3
byte* render_show::toD0181_screen
byte* render_show::toD0181_screen#0
byte* render_show::toD0181_screen#1
number~ render_show::toD0182_$0
number~ render_show::toD0182_$1
number~ render_show::toD0182_$2
byte~ render_show::toD0182_$3
number~ render_show::toD0182_$4
number~ render_show::toD0182_$5
number~ render_show::toD0182_$6
word~ render_show::toD0182_$7
byte* render_show::toD0182_gfx
byte* render_show::toD0182_gfx#0
byte* render_show::toD0182_gfx#1
byte render_show::toD0182_return
byte render_show::toD0182_return#0
byte render_show::toD0182_return#1
byte render_show::toD0182_return#2
byte render_show::toD0182_return#3
byte* render_show::toD0182_screen
byte* render_show::toD0182_screen#0
byte* render_show::toD0182_screen#1
const dword* score_add_bcd[5] = { fill( 5, 0) }
volatile dword score_bcd loadstore
const byte** screen_lines_1[PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
const byte** screen_lines_2[PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
void sprites_init()
number~ sprites_init::$0
number~ sprites_init::$1
bool~ sprites_init::$2
byte sprites_init::s
byte sprites_init::s#0
byte sprites_init::s#1
byte sprites_init::s#2
byte sprites_init::s2
byte sprites_init::s2#0
byte sprites_init::xpos
byte sprites_init::xpos#0
byte sprites_init::xpos#1
byte sprites_init::xpos#2
__interrupt(hardware_clobber) void sprites_irq()
number~ sprites_irq::$0
bool~ sprites_irq::$1
bool~ sprites_irq::$2
bool~ sprites_irq::$3
bool~ sprites_irq::$4
byte~ sprites_irq::$5
byte sprites_irq::ptr
byte sprites_irq::ptr#0
byte sprites_irq::ptr#1
byte sprites_irq::ptr#2
byte sprites_irq::ptr#3
byte sprites_irq::ptr#4
byte sprites_irq::ptr#5
byte sprites_irq::ptr#6
volatile byte sprites_irq::raster_sprite_gfx_modify loadstore
number~ sprites_irq::toSpritePtr1_$0
word~ sprites_irq::toSpritePtr1_$1
byte sprites_irq::toSpritePtr1_return
byte sprites_irq::toSpritePtr1_return#0
byte sprites_irq::toSpritePtr1_return#1
byte sprites_irq::toSpritePtr1_return#2
byte sprites_irq::toSpritePtr1_return#3
byte* sprites_irq::toSpritePtr1_sprite
byte* sprites_irq::toSpritePtr1_sprite#0
byte* sprites_irq::toSpritePtr1_sprite#1
byte sprites_irq::ypos
byte sprites_irq::ypos#0
void sprites_irq_init()
Adding number conversion cast (unumber) $13 in
Adding number conversion cast (unumber) 1 in
Adding number conversion cast (unumber) 8 in keyboard_event_scan::$14 = keyboard_event_scan::keycode#3 + 8
Adding number conversion cast (unumber) keyboard_event_scan::$14 in keyboard_event_scan::$14 = keyboard_event_scan::keycode#3 + (unumber)8
Adding number conversion cast (unumber) 0 in keyboard_event_scan::$17 = keyboard_event_scan::$16 != 0
Adding number conversion cast (unumber) 8 in keyboard_event_scan::$19 = keyboard_events_size#11 != 8
Adding number conversion cast (unumber) 0 in keyboard_event_scan::$22 = keyboard_event_scan::event_type#0 == 0
Adding number conversion cast (unumber) $40 in keyboard_event_scan::$23 = keyboard_event_scan::keycode#5 | $40
Adding number conversion cast (unumber) keyboard_event_scan::$23 in keyboard_event_scan::$23 = keyboard_event_scan::keycode#5 | (unumber)$40
Adding number conversion cast (unumber) 0 in keyboard_modifiers#0 = 0
Adding number conversion cast (unumber) 0 in keyboard_event_scan::$1 = keyboard_event_scan::$0 != 0
Adding number conversion cast (unumber) 0 in keyboard_event_scan::$4 = keyboard_event_scan::$3 != 0
Adding number conversion cast (unumber) 0 in keyboard_event_scan::$7 = keyboard_event_scan::$6 != 0
Adding number conversion cast (unumber) 0 in keyboard_event_scan::$10 = keyboard_event_scan::$9 != 0
Adding number conversion cast (unumber) 3 in keyboard_event_pressed::$0 = keyboard_event_pressed::keycode#5 >> 3
Adding number conversion cast (unumber) 7 in keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#5 & 7
Adding number conversion cast (unumber) keyboard_event_pressed::$1 in keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#5 & (unumber)7
Adding number conversion cast (unumber) 0 in keyboard_event_get::$0 = keyboard_events_size#15 == 0
Adding number conversion cast (unumber) $ff in keyboard_event_get::return#0 = $ff
Adding number conversion cast (unumber) 3 in *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
Adding number conversion cast (unumber) $40 in render_init::vicSelectGfxBank1_toDd001_$1 = render_init::vicSelectGfxBank1_toDd001_$0 / $40
Adding number conversion cast (unumber) render_init::vicSelectGfxBank1_toDd001_$1 in render_init::vicSelectGfxBank1_toDd001_$1 = render_init::vicSelectGfxBank1_toDd001_$0 / (unumber)$40
Adding number conversion cast (unumber) 3 in render_init::vicSelectGfxBank1_toDd001_$2 = 3 ^ render_init::vicSelectGfxBank1_toDd001_$1
Adding number conversion cast (unumber) render_init::vicSelectGfxBank1_toDd001_$2 in render_init::vicSelectGfxBank1_toDd001_$2 = (unumber)3 ^ render_init::vicSelectGfxBank1_toDd001_$1
Adding number conversion cast (unumber) VICII_ECM|VICII_DEN|VICII_RSEL|3 in *D011 = VICII_ECM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VICII_ECM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) 0 in *BG_COLOR1 = PIECES_COLORS_1[0]
Adding number conversion cast (unumber) 0 in *BG_COLOR2 = PIECES_COLORS_2[0]
Adding number conversion cast (unumber) $10 in render_init::li_1#0 = PLAYFIELD_SCREEN_1+2*$28+$10
Adding number conversion cast (unumber) 2*$28 in render_init::li_1#0 = PLAYFIELD_SCREEN_1+2*$28+(unumber)$10
Adding number conversion cast (unumber) $10 in render_init::li_2#0 = PLAYFIELD_SCREEN_2+2*$28+$10
Adding number conversion cast (unumber) 2*$28 in render_init::li_2#0 = PLAYFIELD_SCREEN_2+2*$28+(unumber)$10
Adding number conversion cast (unumber) $28 in render_init::li_1#1 = render_init::li_1#2 + $28
Adding number conversion cast (unumber) $28 in render_init::li_2#1 = render_init::li_2#2 + $28
Adding number conversion cast (unumber) 1 in render_init::i#1 = render_init::i#2 + rangenext(0,PLAYFIELD_LINES-1)
Adding number conversion cast (unumber) 0 in render_screen_show#0 = 0
Adding number conversion cast (unumber) $20 in render_screen_render#0 = $20
Adding number conversion cast (unumber) 0 in render_show::$0 = render_screen_show#11 == 0
Adding number conversion cast (unumber) $3fff in render_show::toD0181_$0 = render_show::toD0181_$7 & $3fff
Adding number conversion cast (unumber) render_show::toD0181_$0 in render_show::toD0181_$0 = render_show::toD0181_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in render_show::toD0181_$1 = render_show::toD0181_$0 * 4
Adding number conversion cast (unumber) render_show::toD0181_$1 in render_show::toD0181_$1 = render_show::toD0181_$0 * (unumber)4
Adding number conversion cast (unumber) render_show::toD0181_$2 in render_show::toD0181_$2 = > render_show::toD0181_$1
Adding number conversion cast (unumber) 4 in render_show::toD0181_$4 = render_show::toD0181_$3 / 4
Adding number conversion cast (unumber) render_show::toD0181_$4 in render_show::toD0181_$4 = render_show::toD0181_$3 / (unumber)4
Adding number conversion cast (unumber) $f in render_show::toD0181_$5 = render_show::toD0181_$4 & $f
Adding number conversion cast (unumber) render_show::toD0181_$5 in render_show::toD0181_$5 = render_show::toD0181_$4 & (unumber)$f
Adding number conversion cast (unumber) render_show::toD0181_$6 in render_show::toD0181_$6 = render_show::toD0181_$2 | render_show::toD0181_$5
Adding number conversion cast (unumber) $3fff in render_show::toD0182_$0 = render_show::toD0182_$7 & $3fff
Adding number conversion cast (unumber) render_show::toD0182_$0 in render_show::toD0182_$0 = render_show::toD0182_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in render_show::toD0182_$1 = render_show::toD0182_$0 * 4
Adding number conversion cast (unumber) render_show::toD0182_$1 in render_show::toD0182_$1 = render_show::toD0182_$0 * (unumber)4
Adding number conversion cast (unumber) render_show::toD0182_$2 in render_show::toD0182_$2 = > render_show::toD0182_$1
Adding number conversion cast (unumber) 4 in render_show::toD0182_$4 = render_show::toD0182_$3 / 4
Adding number conversion cast (unumber) render_show::toD0182_$4 in render_show::toD0182_$4 = render_show::toD0182_$3 / (unumber)4
Adding number conversion cast (unumber) $f in render_show::toD0182_$5 = render_show::toD0182_$4 & $f
Adding number conversion cast (unumber) render_show::toD0182_$5 in render_show::toD0182_$5 = render_show::toD0182_$4 & (unumber)$f
Adding number conversion cast (unumber) render_show::toD0182_$6 in render_show::toD0182_$6 = render_show::toD0182_$2 | render_show::toD0182_$5
Adding number conversion cast (unumber) $20 in render_screen_render#2 = render_screen_render#11 ^ $20
Adding number conversion cast (unumber) $20 in render_screen_show#2 = render_screen_show#13 ^ $20
Adding number conversion cast (unumber) 0 in render_score::$0 = render_screen_render#13 == 0
Adding number conversion cast (unumber) 2 in render_bcd::bcd#0 = render_score::score_bytes[2]
Adding number conversion cast (unumber) 0 in render_bcd::only_low#0 = 0
Adding number conversion cast (unumber) 2 in render_score::$2 = render_score::score_offset + 2
Adding number conversion cast (unumber) render_score::$2 in render_score::$2 = render_score::score_offset + (unumber)2
Adding number conversion cast (unumber) 1 in render_bcd::bcd#1 = render_score::score_bytes[1]
Adding number conversion cast (unumber) 0 in render_bcd::only_low#1 = 0
Adding number conversion cast (unumber) 4 in render_score::$4 = render_score::score_offset + 4
Adding number conversion cast (unumber) render_score::$4 in render_score::$4 = render_score::score_offset + (unumber)4
Adding number conversion cast (unumber) 0 in render_bcd::bcd#2 = render_score::score_bytes[0]
Adding number conversion cast (unumber) 0 in render_bcd::only_low#2 = 0
Adding number conversion cast (unumber) 1 in render_bcd::only_low#3 = 1
Adding number conversion cast (unumber) 1 in render_score::$8 = render_score::lines_offset + 1
Adding number conversion cast (unumber) render_score::$8 in render_score::$8 = render_score::lines_offset + (unumber)1
Adding number conversion cast (unumber) 0 in render_bcd::only_low#4 = 0
Adding number conversion cast (unumber) 0 in render_bcd::only_low#5 = 0
Adding number conversion cast (unumber) 0 in render_bcd::$1 = render_bcd::only_low#6 == 0
Adding number conversion cast (unumber) $f in render_bcd::$3 = render_bcd::bcd#6 & $f
Adding number conversion cast (unumber) render_bcd::$3 in render_bcd::$3 = render_bcd::bcd#6 & (unumber)$f
Adding number conversion cast (unumber) render_bcd::$4 in render_bcd::$4 = render_bcd::ZERO_CHAR + render_bcd::$3
Adding number conversion cast (unumber) 4 in render_bcd::$5 = render_bcd::bcd#7 >> 4
Adding number conversion cast (unumber) $20*2 in render_screen_original::oscr#0 = PLAYFIELD_SCREEN_ORIGINAL+$20*2
Adding number conversion cast (unumber) $20*2 in render_screen_original::ocols#0 = PLAYFIELD_COLORS_ORIGINAL+$20*2
Adding number conversion cast (unumber) 4 in render_screen_original::$0 = render_screen_original::x#1 != 4
Adding number conversion cast (unumber) $24 in render_screen_original::$1 = render_screen_original::x#2 != $24
Adding number conversion cast (unumber) $28 in render_screen_original::$2 = render_screen_original::x#3 != $28
Adding number conversion cast (unumber) 2 in render_playfield::i#0 = (byte)PLAYFIELD_COLS*2
Adding number conversion cast (unumber) 1 in render_playfield::c#1 = render_playfield::c#2 + rangenext(0,PLAYFIELD_COLS-1)
Adding number conversion cast (unumber) 1 in render_playfield::l#1 = render_playfield::l#3 + rangenext(2,PLAYFIELD_LINES-1)
Adding number conversion cast (unumber) 1 in render_moving::$0 = render_moving::ypos#2 > 1
Adding number conversion cast (unumber) 4 in render_moving::i#1 = render_moving::i#3 + 4
Adding number conversion cast (unumber) 0 in render_moving::$2 = render_moving::current_cell#0 != 0
Adding number conversion cast (unumber) 0 in render_next::$0 = render_screen_render#16 == 0
Adding number conversion cast (unumber) 0 in render_next::$3 = render_next::cell#0 != 0
Adding number conversion cast (unumber) 0 in *render_next::screen_next_area#6 = 0
Adding number conversion cast (unumber) $24 in render_next::screen_next_area#4 = render_next::screen_next_area#8 + $24
Adding number conversion cast (unumber) $f in *SPRITES_ENABLE = $f
Adding number conversion cast (unumber) 0 in *SPRITES_MC = 0
Adding number conversion cast (unumber) 2 in sprites_init::$0 = sprites_init::s#2 * 2
Adding number conversion cast (unumber) sprites_init::$0 in sprites_init::$0 = sprites_init::s#2 * (unumber)2
Adding number conversion cast (unumber) $18 in sprites_init::$1 = sprites_init::xpos#2 + $18
Adding number conversion cast (unumber) sprites_init::$1 in sprites_init::$1 = sprites_init::xpos#2 + (unumber)$18
Adding number conversion cast (unumber) $7f in *VICII_CONTROL = *VICII_CONTROL & $7f
Adding number conversion cast (unumber) 0 in SPRITES_YPOS[0] = sprites_irq::ypos#0
Adding number conversion cast (unumber) 2 in SPRITES_YPOS[2] = sprites_irq::ypos#0
Adding number conversion cast (unumber) 4 in SPRITES_YPOS[4] = sprites_irq::ypos#0
Adding number conversion cast (unumber) 6 in SPRITES_YPOS[6] = sprites_irq::ypos#0
Adding number conversion cast (unumber) 1 in sprites_irq::$0 = irq_raster_next + 1
Adding number conversion cast (unumber) sprites_irq::$0 in sprites_irq::$0 = irq_raster_next + (unumber)1
Adding number conversion cast (unumber) 0 in sprites_irq::$1 = render_screen_showing == 0
Adding number conversion cast (unumber) 0 in PLAYFIELD_SPRITE_PTRS_1[0] = sprites_irq::ptr#5
Adding number conversion cast (unumber) 1 in PLAYFIELD_SPRITE_PTRS_1[1] = sprites_irq::ptr#1
Adding number conversion cast (unumber) 2 in PLAYFIELD_SPRITE_PTRS_1[2] = sprites_irq::ptr#1
Adding number conversion cast (unumber) 3 in PLAYFIELD_SPRITE_PTRS_1[3] = sprites_irq::ptr#2
Adding number conversion cast (unumber) 0 in PLAYFIELD_SPRITE_PTRS_2[0] = sprites_irq::ptr#6
Adding number conversion cast (unumber) 1 in PLAYFIELD_SPRITE_PTRS_2[1] = sprites_irq::ptr#3
Adding number conversion cast (unumber) 2 in PLAYFIELD_SPRITE_PTRS_2[2] = sprites_irq::ptr#3
Adding number conversion cast (unumber) 3 in PLAYFIELD_SPRITE_PTRS_2[3] = sprites_irq::ptr#4
Adding number conversion cast (unumber) 9 in sprites_irq::$2 = irq_cnt == 9
Adding number conversion cast (unumber) $15 in irq_raster_next = irq_raster_next + $15
Adding number conversion cast (unumber) $40 in sprites_irq::toSpritePtr1_$0 = sprites_irq::toSpritePtr1_$1 / $40
Adding number conversion cast (unumber) sprites_irq::toSpritePtr1_$0 in sprites_irq::toSpritePtr1_$0 = sprites_irq::toSpritePtr1_$1 / (unumber)$40
Adding number conversion cast (unumber) $a in sprites_irq::$3 = irq_cnt == $a
Adding number conversion cast (unumber) 0 in irq_cnt = 0
Adding number conversion cast (unumber) $15 in irq_sprite_ypos = irq_sprite_ypos + $15
Adding number conversion cast (unumber) 3 in irq_sprite_ptr = irq_sprite_ptr + 3
Adding number conversion cast (unumber) $14 in irq_raster_next = irq_raster_next + $14
Adding number conversion cast (unumber) $15 in irq_sprite_ypos = irq_sprite_ypos + $15
Adding number conversion cast (unumber) 3 in irq_sprite_ptr = irq_sprite_ptr + 3
Adding number conversion cast (unumber) 1 in play_init::j#1 = play_init::j#2 + rangenext(0,PLAYFIELD_LINES-1)
Adding number conversion cast (unumber) 0 in play_movement::$1 = game_over#0 != 0
Adding number conversion cast (unumber) 0 in play_move_down::$3 = play_move_down::$2 != 0
Adding number conversion cast (unumber) 0 in play_move_down::$7 = play_move_down::movedown#6 != 0
Adding number conversion cast (unumber) 0 in play_move_down::return#1 = 0
Adding number conversion cast (unumber) 1 in play_move_down::$11 = current_ypos#17 + 1
Adding number conversion cast (unumber) play_move_down::$11 in play_move_down::$11 = current_ypos#17 + (unumber)1
Adding number conversion cast (unumber) 0 in current_movedown_counter#3 = 0
Adding number conversion cast (unumber) 1 in play_move_down::return#2 = 1
Adding number conversion cast (unumber) 1 in play_move_leftright::$7 = current_xpos#24 - 1
Adding number conversion cast (unumber) play_move_leftright::$7 in play_move_leftright::$7 = current_xpos#24 - (unumber)1
Adding number conversion cast (unumber) 1 in play_move_leftright::$3 = current_xpos#25 + 1
Adding number conversion cast (unumber) play_move_leftright::$3 in play_move_leftright::$3 = current_xpos#25 + (unumber)1
Adding number conversion cast (unumber) 1 in play_move_leftright::return#1 = 1
Adding number conversion cast (unumber) 0 in play_move_leftright::return#3 = 0
Adding number conversion cast (unumber) 1 in play_move_leftright::return#4 = 1
Adding number conversion cast (unumber) $10 in play_move_rotate::$7 = current_orientation#24 - $10
Adding number conversion cast (unumber) play_move_rotate::$7 in play_move_rotate::$7 = current_orientation#24 - (unumber)$10
Adding number conversion cast (unumber) $3f in play_move_rotate::$8 = play_move_rotate::$7 & $3f
Adding number conversion cast (unumber) play_move_rotate::$8 in play_move_rotate::$8 = play_move_rotate::$7 & (unumber)$3f
Adding number conversion cast (unumber) $10 in play_move_rotate::$5 = current_orientation#25 + $10
Adding number conversion cast (unumber) play_move_rotate::$5 in play_move_rotate::$5 = current_orientation#25 + (unumber)$10
Adding number conversion cast (unumber) $3f in play_move_rotate::$6 = play_move_rotate::$5 & $3f
Adding number conversion cast (unumber) play_move_rotate::$6 in play_move_rotate::$6 = play_move_rotate::$5 & (unumber)$3f
Adding number conversion cast (unumber) 0 in play_move_rotate::return#1 = 0
Adding number conversion cast (unumber) 0 in play_move_rotate::return#3 = 0
Adding number conversion cast (unumber) 1 in play_move_rotate::return#4 = 1
Adding number conversion cast (unumber) 0 in play_collision::$1 = play_collision::piece_gfx#1[play_collision::i#2] != 0
Adding number conversion cast (unumber) $80 in play_collision::$5 = play_collision::xp#3 & $80
Adding number conversion cast (unumber) play_collision::$5 in play_collision::$5 = play_collision::xp#3 & (unumber)$80
Adding number conversion cast (unumber) 0 in play_collision::$6 = play_collision::$5 != 0
Adding number conversion cast (unumber) 0 in play_collision::$10 = play_collision::playfield_line#1[play_collision::xp#5] != 0
Adding number conversion cast (unumber) 0 in play_lock_current::$0 = current_piece_gfx#23[play_lock_current::i#2] != 0
Adding number conversion cast (unumber) 0 in current_orientation#7 = 0
Adding number conversion cast (unumber) 1 in game_over#4 = 1
Adding number conversion cast (unumber) 7 in play_spawn_current::$4 = play_spawn_current::piece_idx#2 == 7
Adding number conversion cast (unumber) 7 in play_spawn_current::$6 = play_spawn_current::$5 & 7
Adding number conversion cast (unumber) play_spawn_current::$6 in play_spawn_current::$6 = play_spawn_current::$5 & (unumber)7
Adding number conversion cast (unumber) 1 in play_remove_lines::r#0 = (byte)PLAYFIELD_LINES*PLAYFIELD_COLS-1
Adding number conversion cast (unumber) 1 in play_remove_lines::w#0 = (byte)PLAYFIELD_LINES*PLAYFIELD_COLS-1
Adding number conversion cast (unumber) 0 in play_remove_lines::$0 = play_remove_lines::c#0 == 0
Adding number conversion cast (unumber) 1 in play_remove_lines::x#1 = play_remove_lines::x#2 + rangenext(0,PLAYFIELD_COLS-1)
Adding number conversion cast (unumber) 0 in play_remove_lines::full#1 = 0
Adding number conversion cast (unumber) 1 in play_remove_lines::$3 = play_remove_lines::full#2 == 1
Adding number conversion cast (unumber) 1 in play_remove_lines::y#1 = play_remove_lines::y#2 + rangenext(0,PLAYFIELD_LINES-1)
Adding number conversion cast (unumber) $ff in play_remove_lines::$7 = play_remove_lines::w#6 != $ff
Adding number conversion cast (unumber) 0 in playfield[play_remove_lines::w#7] = 0
Adding number conversion cast (unumber) 0 in play_update_score::$0 = play_update_score::removed#1 != 0
Adding number conversion cast (unumber) $f0 in play_update_score::$3 = play_update_score::$2 & $f0
Adding number conversion cast (unumber) play_update_score::$3 in play_update_score::$3 = play_update_score::$2 & (unumber)$f0
Adding number conversion cast (unumber) $f0 in play_update_score::$5 = play_update_score::$4 & $f0
Adding number conversion cast (unumber) play_update_score::$5 in play_update_score::$5 = play_update_score::$4 & (unumber)$f0
Adding number conversion cast (unumber) $1d in play_increase_level::$0 = level#6 > $1d
Adding number conversion cast (unumber) 1 in current_movedown_slow#8 = 1
Adding number conversion cast (unumber) $f in play_increase_level::$1 = level_bcd#6 & $f
Adding number conversion cast (unumber) play_increase_level::$1 in play_increase_level::$1 = level_bcd#6 & (unumber)$f
Adding number conversion cast (unumber) $a in play_increase_level::$2 = play_increase_level::$1 == $a
Adding number conversion cast (unumber) 6 in level_bcd#7 = level_bcd#22 + 6
Adding number conversion cast (unumber) $ffff in *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff
Adding number conversion cast (unumber) $ff in main::$10 = *RASTER != $ff
Adding number conversion cast (unumber) 0 in main::$14 = game_over#20 == 0
Adding number conversion cast (unumber) 0 in main::$17 = main::render#2 != 0
Adding number conversion cast (unumber) $15 in irq_sprite_ypos = (byte)SPRITES_FIRST_YPOS+$15
Adding number conversion cast (unumber) $40 in __start::__init1_toSpritePtr1_$0 = __start::__init1_toSpritePtr1_$1 / $40
Adding number conversion cast (unumber) __start::__init1_toSpritePtr1_$0 in __start::__init1_toSpritePtr1_$0 = __start::__init1_toSpritePtr1_$1 / (unumber)$40
Adding number conversion cast (unumber) 3 in __start::__init1_$1 = __start::__init1_$0 + 3
Adding number conversion cast (unumber) __start::__init1_$1 in __start::__init1_$1 = __start::__init1_$0 + (unumber)3
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast keyboard_modifiers#0 = (unumber)0
Inlining cast keyboard_event_get::return#0 = (unumber)$ff
Inlining cast *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = (unumber)3
Inlining cast *D011 = (unumber)VICII_ECM|VICII_DEN|VICII_RSEL|(unumber)3
Inlining cast render_screen_show#0 = (unumber)0
Inlining cast render_screen_render#0 = (unumber)$20
Inlining cast render_bcd::only_low#0 = (unumber)0
Inlining cast render_bcd::only_low#1 = (unumber)0
Inlining cast render_bcd::only_low#2 = (unumber)0
Inlining cast render_bcd::only_low#3 = (unumber)1
Inlining cast render_bcd::only_low#4 = (unumber)0
Inlining cast render_bcd::only_low#5 = (unumber)0
Inlining cast render_next::next_piece_gfx#0 = (byte*)PIECES[render_next::$6]
Inlining cast *render_next::screen_next_area#6 = (unumber)0
Inlining cast *SPRITES_ENABLE = (unumber)$f
Inlining cast *SPRITES_MC = (unumber)0
Inlining cast irq_cnt = (unumber)0
Inlining cast play_move_down::return#1 = (unumber)0
Inlining cast current_movedown_counter#3 = (unumber)0
Inlining cast play_move_down::return#2 = (unumber)1
Inlining cast play_move_leftright::return#1 = (unumber)1
Inlining cast play_move_leftright::return#3 = (unumber)0
Inlining cast play_move_leftright::return#4 = (unumber)1
Inlining cast play_move_rotate::return#1 = (unumber)0
Inlining cast play_move_rotate::return#3 = (unumber)0
Inlining cast play_move_rotate::return#4 = (unumber)1
Inlining cast current_piece#4 = (byte*)PIECES[play_spawn_current::$7]
Inlining cast current_orientation#7 = (unumber)0
Inlining cast game_over#4 = (unumber)1
Inlining cast play_remove_lines::full#1 = (unumber)0
Inlining cast playfield[play_remove_lines::w#7] = (unumber)0
Inlining cast current_movedown_slow#8 = (unumber)1
Inlining cast *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = (unumber)$ffff
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 53248
Simplifying constant pointer cast (byte*) 53249
Simplifying constant pointer cast (byte*) 53287
Simplifying constant pointer cast (byte*) 53269
Simplifying constant pointer cast (byte*) 53271
Simplifying constant pointer cast (byte*) 53276
Simplifying constant pointer cast (byte*) 53277
Simplifying constant pointer cast (byte*) 53266
Simplifying constant pointer cast (byte*) 53280
Simplifying constant pointer cast (byte*) 53281
Simplifying constant pointer cast (byte*) 53282
Simplifying constant pointer cast (byte*) 53283
Simplifying constant pointer cast (byte*) 53284
Simplifying constant pointer cast (byte*) 53265
Simplifying constant pointer cast (byte*) 53265
Simplifying constant pointer cast (byte*) 53272
Simplifying constant pointer cast (byte*) 53273
Simplifying constant pointer cast (byte*) 53274
Simplifying constant pointer cast (byte*) 0
Simplifying constant pointer cast (byte*) 1
Simplifying constant pointer cast (struct MOS6581_SID*) 54272
Simplifying constant pointer cast (byte*) 55296
Simplifying constant pointer cast (struct MOS6526_CIA*) 56320
Simplifying constant pointer cast (struct MOS6526_CIA*) 56576
Simplifying constant pointer cast (byte*) 56333
Simplifying constant pointer cast (void()**) 65534
Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 11264
Simplifying constant integer cast $13
Simplifying constant integer cast 1
Simplifying constant integer cast 8
Simplifying constant integer cast 0
Simplifying constant integer cast 8
Simplifying constant integer cast 0
Simplifying constant integer cast $40
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 3
Simplifying constant integer cast 7
Simplifying constant integer cast 0
Simplifying constant integer cast $ff
Simplifying constant integer cast 3
Simplifying constant integer cast $40
Simplifying constant integer cast 3
Simplifying constant integer cast VICII_ECM|VICII_DEN|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $10
Simplifying constant integer cast $10
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $20
Simplifying constant integer cast 0
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast $20
Simplifying constant integer cast $20
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 4
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $f
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $24
Simplifying constant integer cast $28
Simplifying constant integer cast 2
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 4
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $24
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast $18
Simplifying constant integer cast $7f
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 4
Simplifying constant integer cast 6
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 3
Simplifying constant integer cast 9
Simplifying constant integer cast $15
Simplifying constant integer cast $40
Simplifying constant integer cast $a
Simplifying constant integer cast 0
Simplifying constant integer cast $15
Simplifying constant integer cast 3
Simplifying constant integer cast $14
Simplifying constant integer cast $15
Simplifying constant integer cast 3
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast $10
Simplifying constant integer cast $3f
Simplifying constant integer cast $10
Simplifying constant integer cast $3f
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast $ff
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $f0
Simplifying constant integer cast $f0
Simplifying constant integer cast $1d
Simplifying constant integer cast 1
Simplifying constant integer cast $f
Simplifying constant integer cast $a
Simplifying constant integer cast 6
Simplifying constant integer cast $ffff
Simplifying constant integer cast $ff
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $15
Simplifying constant integer cast $40
Simplifying constant integer cast 3
Simplifying constant pointer cast (byte*) 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $13
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $20
Finalized unsigned number type (byte) 0
Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) $20
Finalized unsigned number type (byte) $20
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $24
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $24
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $18
Finalized unsigned number type (byte) $7f
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 6
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 9
Finalized unsigned number type (byte) $15
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) $a
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $15
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) $14
Finalized unsigned number type (byte) $15
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $3f
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $3f
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $f0
Finalized unsigned number type (byte) $f0
Finalized unsigned number type (byte) $1d
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) $a
Finalized unsigned number type (byte) 6
Finalized unsigned number type (word) $ffff
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $15
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) 3
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in keyboard_event_scan::$14 = keyboard_event_scan::keycode#3 + 8
Inferred type updated to byte in keyboard_event_scan::$23 = keyboard_event_scan::keycode#5 | $40
Inferred type updated to byte in keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#5 & 7
Inferred type updated to byte in render_init::vicSelectGfxBank1_toDd001_$1 = render_init::vicSelectGfxBank1_toDd001_$0 / $40
Inferred type updated to byte in render_init::vicSelectGfxBank1_toDd001_$2 = 3 ^ render_init::vicSelectGfxBank1_toDd001_$1
Inferred type updated to word in render_show::toD0181_$0 = render_show::toD0181_$7 & $3fff
Inferred type updated to word in render_show::toD0181_$1 = render_show::toD0181_$0 * 4
Inferred type updated to byte in render_show::toD0181_$2 = > render_show::toD0181_$1
Inferred type updated to byte in render_show::toD0181_$4 = render_show::toD0181_$3 / 4
Inferred type updated to byte in render_show::toD0181_$5 = render_show::toD0181_$4 & $f
Inferred type updated to byte in render_show::toD0181_$6 = render_show::toD0181_$2 | render_show::toD0181_$5
Inferred type updated to word in render_show::toD0182_$0 = render_show::toD0182_$7 & $3fff
Inferred type updated to word in render_show::toD0182_$1 = render_show::toD0182_$0 * 4
Inferred type updated to byte in render_show::toD0182_$2 = > render_show::toD0182_$1
Inferred type updated to byte in render_show::toD0182_$4 = render_show::toD0182_$3 / 4
Inferred type updated to byte in render_show::toD0182_$5 = render_show::toD0182_$4 & $f
Inferred type updated to byte in render_show::toD0182_$6 = render_show::toD0182_$2 | render_show::toD0182_$5
Inferred type updated to word in render_score::$2 = render_score::score_offset + 2
Inferred type updated to word in render_score::$4 = render_score::score_offset + 4
Inferred type updated to word in render_score::$8 = render_score::lines_offset + 1
Inferred type updated to byte in render_bcd::$3 = render_bcd::bcd#6 & $f
Inferred type updated to byte in render_bcd::$4 = render_bcd::ZERO_CHAR + render_bcd::$3
Inferred type updated to byte in sprites_init::$0 = sprites_init::s#2 * 2
Inferred type updated to byte in sprites_init::$1 = sprites_init::xpos#2 + $18
Inferred type updated to byte in sprites_irq::$0 = irq_raster_next + 1
Inferred type updated to word in sprites_irq::toSpritePtr1_$0 = sprites_irq::toSpritePtr1_$1 / $40
Inferred type updated to byte in play_move_down::$11 = current_ypos#17 + 1
Inferred type updated to byte in play_move_leftright::$7 = current_xpos#24 - 1
Inferred type updated to byte in play_move_leftright::$3 = current_xpos#25 + 1
Inferred type updated to byte in play_move_rotate::$7 = current_orientation#24 - $10
Inferred type updated to byte in play_move_rotate::$8 = play_move_rotate::$7 & $3f
Inferred type updated to byte in play_move_rotate::$5 = current_orientation#25 + $10
Inferred type updated to byte in play_move_rotate::$6 = play_move_rotate::$5 & $3f
Inferred type updated to byte in play_collision::$5 = play_collision::xp#3 & $80
Inferred type updated to byte in play_spawn_current::$6 = play_spawn_current::$5 & 7
Inferred type updated to byte in play_update_score::$3 = play_update_score::$2 & $f0
Inferred type updated to byte in play_update_score::$5 = play_update_score::$4 & $f0
Inferred type updated to byte in play_increase_level::$1 = level_bcd#6 & $f
Inferred type updated to word in __start::__init1_toSpritePtr1_$0 = __start::__init1_toSpritePtr1_$1 / $40
Inferred type updated to byte in __start::__init1_$1 = __start::__init1_$0 + 3
Inversing boolean not [33] keyboard_event_scan::$18 = keyboard_event_scan::$16 == 0 from [32] keyboard_event_scan::$17 = keyboard_event_scan::$16 != 0
Inversing boolean not [42] keyboard_event_scan::$20 = keyboard_events_size#11 == 8 from [41] keyboard_event_scan::$19 = keyboard_events_size#11 != 8
Inversing boolean not [66] keyboard_event_scan::$2 = keyboard_event_scan::$0 == 0 from [65] keyboard_event_scan::$1 = keyboard_event_scan::$0 != 0
Inversing boolean not [75] keyboard_event_scan::$5 = keyboard_event_scan::$3 == 0 from [74] keyboard_event_scan::$4 = keyboard_event_scan::$3 != 0
Inversing boolean not [87] keyboard_event_scan::$8 = keyboard_event_scan::$6 == 0 from [86] keyboard_event_scan::$7 = keyboard_event_scan::$6 != 0
Inversing boolean not [99] keyboard_event_scan::$11 = keyboard_event_scan::$9 == 0 from [98] keyboard_event_scan::$10 = keyboard_event_scan::$9 != 0
Inversing boolean not [282] render_bcd::$2 = render_bcd::only_low#6 != 0 from [281] render_bcd::$1 = render_bcd::only_low#6 == 0
Inversing boolean not [377] render_moving::$3 = render_moving::current_cell#0 == 0 from [376] render_moving::$2 = render_moving::current_cell#0 != 0
Inversing boolean not [555] play_movement::$2 = game_over#0 == 0 from [554] play_movement::$1 = game_over#0 != 0
Inversing boolean not [596] play_move_down::$1 = play_move_down::key_event#1 != KEY_SPACE from [595] play_move_down::$0 = play_move_down::key_event#1 == KEY_SPACE
Inversing boolean not [605] play_move_down::$4 = play_move_down::$2 == 0 from [604] play_move_down::$3 = play_move_down::$2 != 0
Inversing boolean not [611] play_move_down::$6 = current_movedown_counter#13 < current_movedown_slow#20 from [610] play_move_down::$5 = current_movedown_counter#13 >= current_movedown_slow#20
Inversing boolean not [615] play_move_down::$10 = current_movedown_counter#14 < current_movedown_fast from [614] play_move_down::$9 = current_movedown_counter#14 >= current_movedown_fast
Inversing boolean not [621] play_move_down::$8 = play_move_down::movedown#6 == 0 from [620] play_move_down::$7 = play_move_down::movedown#6 != 0
Inversing boolean not [697] play_move_leftright::$10 = play_move_leftright::$8 != COLLISION_NONE from [696] play_move_leftright::$9 = play_move_leftright::$8 == COLLISION_NONE
Inversing boolean not [701] play_move_leftright::$2 = play_move_leftright::key_event#2 != KEY_DOT from [700] play_move_leftright::$1 = play_move_leftright::key_event#2 == KEY_DOT
Inversing boolean not [713] play_move_leftright::$6 = play_move_leftright::$4 != COLLISION_NONE from [712] play_move_leftright::$5 = play_move_leftright::$4 == COLLISION_NONE
Inversing boolean not [758] play_move_rotate::$4 = play_move_rotate::$2 != COLLISION_NONE from [757] play_move_rotate::$3 = play_move_rotate::$2 == COLLISION_NONE
Inversing boolean not [781] play_collision::$2 = play_collision::piece_gfx#1[play_collision::i#2] == 0 from [779] play_collision::$1 = play_collision::piece_gfx#1[play_collision::i#2] != 0
Inversing boolean not [790] play_collision::$4 = play_collision::yp#3 < PLAYFIELD_LINES from [789] play_collision::$3 = play_collision::yp#3 >= PLAYFIELD_LINES
Inversing boolean not [795] play_collision::$7 = play_collision::$5 == 0 from [794] play_collision::$6 = play_collision::$5 != 0
Inversing boolean not [803] play_collision::$9 = play_collision::xp#4 < PLAYFIELD_COLS from [802] play_collision::$8 = play_collision::xp#4 >= PLAYFIELD_COLS
Inversing boolean not [808] play_collision::$11 = play_collision::playfield_line#1[play_collision::xp#5] == 0 from [807] play_collision::$10 = play_collision::playfield_line#1[play_collision::xp#5] != 0
Inversing boolean not [830] play_lock_current::$1 = current_piece_gfx#23[play_lock_current::i#2] == 0 from [828] play_lock_current::$0 = current_piece_gfx#23[play_lock_current::i#2] != 0
Inversing boolean not [863] play_spawn_current::$3 = play_spawn_current::$1 != COLLISION_PLAYFIELD from [862] play_spawn_current::$2 = play_spawn_current::$1 == COLLISION_PLAYFIELD
Inversing boolean not [903] play_remove_lines::$1 = play_remove_lines::c#0 != 0 from [902] play_remove_lines::$0 = play_remove_lines::c#0 == 0
Inversing boolean not [915] play_remove_lines::$4 = play_remove_lines::full#2 != 1 from [914] play_remove_lines::$3 = play_remove_lines::full#2 == 1
Inversing boolean not [938] play_update_score::$1 = play_update_score::removed#1 == 0 from [937] play_update_score::$0 = play_update_score::removed#1 != 0
Inversing boolean not [954] play_update_score::$7 = play_update_score::lines_before#0 == play_update_score::lines_after#0 from [953] play_update_score::$6 = play_update_score::lines_before#0 != play_update_score::lines_after#0
Inversing boolean not [980] play_increase_level::$3 = play_increase_level::$1 != $a from [979] play_increase_level::$2 = play_increase_level::$1 == $a
Inversing boolean not [1090] main::$18 = main::render#2 == 0 from [1089] main::$17 = main::render#2 != 0
Successful SSA optimization Pass2UnaryNotSimplification
Alias candidate removed (volatile)render_screen_show#12 = render_screen_showing
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Alias candidate removed (volatile)sprites_irq::toSpritePtr1_return#0 = sprites_irq::toSpritePtr1_return#2 sprites_irq::toSpritePtr1_return#1 sprites_irq::toSpritePtr1_return#3 sprites_irq::$5 irq_sprite_ptr __start::__init1_$1
Alias keyboard_matrix_read::return#0 = keyboard_matrix_read::row_pressed_bits#0 keyboard_matrix_read::$0 keyboard_matrix_read::return#3 keyboard_matrix_read::return#1
Alias keyboard_matrix_read::return#2 = keyboard_matrix_read::return#4
Alias keyboard_event_scan::row#2 = keyboard_event_scan::row#3 keyboard_event_scan::row#9 keyboard_event_scan::row#7
Alias keyboard_event_scan::keycode#11 = keyboard_event_scan::keycode#7 keyboard_event_scan::keycode#12 keyboard_event_scan::keycode#3
Alias keyboard_events_size#32 = keyboard_events_size#39 keyboard_events_size#48 keyboard_events_size#62
Alias keyboard_event_scan::row_scan#0 = keyboard_event_scan::$12 keyboard_event_scan::row_scan#5
Alias keyboard_event_scan::keycode#1 = keyboard_event_scan::$14
Alias keyboard_events_size#11 = keyboard_events_size#23 keyboard_events_size#24 keyboard_events_size#12 keyboard_events_size#13
Alias keyboard_event_scan::keycode#10 = keyboard_event_scan::keycode#9 keyboard_event_scan::keycode#8 keyboard_event_scan::keycode#5 keyboard_event_scan::keycode#6
Alias keyboard_event_scan::col#2 = keyboard_event_scan::col#6 keyboard_event_scan::col#4 keyboard_event_scan::col#5 keyboard_event_scan::col#7
Alias keyboard_event_scan::row_scan#1 = keyboard_event_scan::row_scan#6 keyboard_event_scan::row_scan#2 keyboard_event_scan::row_scan#7 keyboard_event_scan::row_scan#8
Alias keyboard_event_scan::row#10 = keyboard_event_scan::row#11 keyboard_event_scan::row#5 keyboard_event_scan::row#13 keyboard_event_scan::row#12
Alias keyboard_event_scan::event_type#0 = keyboard_event_scan::$21
Alias keyboard_event_scan::row_scan#3 = keyboard_event_scan::row_scan#4
Alias keyboard_event_scan::row#6 = keyboard_event_scan::row#8
Alias keyboard_event_scan::keycode#14 = keyboard_event_scan::keycode#2
Alias keyboard_events_size#31 = keyboard_events_size#61
Alias keyboard_events_size#56 = keyboard_events_size#70 keyboard_events_size#67 keyboard_events_size#66
Alias keyboard_event_pressed::return#0 = keyboard_event_pressed::return#7
Alias keyboard_modifiers#0 = keyboard_modifiers#20 keyboard_modifiers#11
Alias keyboard_event_pressed::return#1 = keyboard_event_pressed::return#8
Alias keyboard_modifiers#12 = keyboard_modifiers#21 keyboard_modifiers#27
Alias keyboard_events_size#57 = keyboard_events_size#63 keyboard_events_size#58
Alias keyboard_modifiers#1 = keyboard_event_scan::$26
Alias keyboard_event_pressed::return#2 = keyboard_event_pressed::return#9
Alias keyboard_modifiers#13 = keyboard_modifiers#22 keyboard_modifiers#28
Alias keyboard_events_size#40 = keyboard_events_size#49 keyboard_events_size#41
Alias keyboard_modifiers#2 = keyboard_event_scan::$27
Alias keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3
Alias keyboard_modifiers#14 = keyboard_modifiers#23 keyboard_modifiers#29
Alias keyboard_events_size#25 = keyboard_events_size#33 keyboard_events_size#26
Alias keyboard_modifiers#3 = keyboard_event_scan::$28
Alias keyboard_modifiers#4 = keyboard_event_scan::$29
Alias keyboard_events_size#14 = keyboard_events_size#2
Alias keyboard_modifiers#15 = keyboard_modifiers#5
Alias keyboard_event_pressed::return#11 = keyboard_event_pressed::return#4 keyboard_event_pressed::$2 keyboard_event_pressed::return#5
Alias keyboard_events_size#15 = keyboard_events_size#27 keyboard_events_size#16
Alias keyboard_event_get::return#2 = keyboard_event_get::return#4
Alias keyboard_events_size#17 = keyboard_events_size#4
Alias render_init::vicSelectGfxBank1_gfx#0 = render_init::vicSelectGfxBank1_gfx#1 render_init::vicSelectGfxBank1_toDd001_gfx#0 render_init::vicSelectGfxBank1_toDd001_gfx#1
Alias render_init::vicSelectGfxBank1_toDd001_return#0 = render_init::vicSelectGfxBank1_toDd001_$2 render_init::vicSelectGfxBank1_toDd001_return#2 render_init::vicSelectGfxBank1_toDd001_return#1 render_init::vicSelectGfxBank1_toDd001_return#3 render_init::vicSelectGfxBank1_$0
Alias render_screen_show#0 = render_screen_show#10 render_screen_show#1
Alias render_screen_render#0 = render_screen_render#10 render_screen_render#1
Alias level#28 = level#72 level#86 level#58 level#44 level#73 level#59 level#45 level#29
Alias render_screen_show#11 = render_screen_show#43 render_screen_show#35 render_screen_show#27 render_screen_show#21 render_screen_show#44 render_screen_show#36 render_screen_show#28 render_screen_show#22
Alias render_show::toD0181_screen#0 = render_show::toD0181_screen#1
Alias render_show::toD0181_gfx#0 = render_show::toD0181_gfx#1
Alias render_show::toD0181_return#0 = render_show::toD0181_$6 render_show::toD0181_return#2 render_show::toD0181_return#1 render_show::toD0181_return#3 render_show::$2 render_show::d018val#1
Alias render_show::toD0182_screen#0 = render_show::toD0182_screen#1
Alias render_show::toD0182_gfx#0 = render_show::toD0182_gfx#1
Alias render_show::toD0182_return#0 = render_show::toD0182_$6 render_show::toD0182_return#2 render_show::toD0182_return#1 render_show::toD0182_return#3 render_show::$1 render_show::d018val#2
Alias render_screen_render#12 = render_screen_render#2 render_screen_render#3
Alias render_screen_show#14 = render_screen_show#2 render_screen_show#3
Alias lines_bcd#58 = lines_bcd#69 lines_bcd#59
Alias level_bcd#84 = level_bcd#91 level_bcd#85
Alias render_score::screen#3 = render_score::screen#4 render_score::screen#5 render_score::screen#6 render_score::screen#7 render_score::screen#8
Alias lines_bcd#11 = lines_bcd#35 lines_bcd#47 lines_bcd#23 lines_bcd#12
Alias level_bcd#14 = level_bcd#69 level_bcd#79 level_bcd#57 level_bcd#44 level_bcd#28
Alias render_bcd::offset#1 = render_score::$2
Alias render_bcd::offset#2 = render_score::$4
Alias render_bcd::bcd#3 = render_score::$6
Alias render_bcd::offset#4 = render_score::$8
Alias render_bcd::bcd#4 = render_score::$9
Alias render_bcd::screen_pos#0 = render_bcd::$0 render_bcd::screen_pos#4
Alias render_bcd::bcd#7 = render_bcd::bcd#8
Alias render_screen_original::y#2 = render_screen_original::y#3
Alias render_screen_original::screen#10 = render_screen_original::screen#4
Alias render_screen_original::cols#3 = render_screen_original::cols#8
Alias render_screen_original::oscr#5 = render_screen_original::oscr#6
Alias render_screen_original::ocols#5 = render_screen_original::ocols#6
Alias render_playfield::l#3 = render_playfield::l#4
Alias render_screen_render#25 = render_screen_render#34
Alias render_playfield::i#1 = render_playfield::i#4
Alias render_screen_render#15 = render_screen_render#26 render_screen_render#44
Alias render_moving::ypos#2 = render_moving::ypos#3 render_moving::ypos#6
Alias current_xpos#17 = current_xpos#38 current_xpos#81
Alias current_piece_gfx#31 = current_piece_gfx#48 current_piece_gfx#85
Alias render_moving::i#3 = render_moving::i#6 render_moving::i#5
Alias current_piece_char#39 = current_piece_char#54 current_piece_char#87
Alias render_moving::l#4 = render_moving::l#8 render_moving::l#5
Alias current_piece_char#13 = current_piece_char#26
Alias render_moving::screen_line#1 = render_moving::screen_line#2
Alias render_moving::xpos#3 = render_moving::xpos#4
Alias render_moving::c#3 = render_moving::c#4
Alias render_moving::ypos#7 = render_moving::ypos#8
Alias render_moving::l#6 = render_moving::l#7
Alias current_piece_gfx#16 = current_piece_gfx#49
Alias render_moving::i#2 = render_moving::i#9
Alias render_screen_render#50 = render_screen_render#51
Alias current_xpos#97 = current_xpos#98
Alias next_piece_idx#26 = next_piece_idx#38 next_piece_idx#27
Alias render_next::screen_next_area#1 = render_next::$2
Alias render_next::screen_next_area#2 = render_next::$1
Alias render_next::next_piece_char#1 = render_next::next_piece_char#2 render_next::next_piece_char#6
Alias render_next::screen_next_area#5 = render_next::screen_next_area#9 render_next::screen_next_area#6
Alias render_next::c#3 = render_next::c#5 render_next::c#4
Alias render_next::next_piece_gfx#1 = render_next::next_piece_gfx#6 render_next::next_piece_gfx#7
Alias render_next::l#4 = render_next::l#6 render_next::l#5
Alias render_next::screen_next_area#3 = render_next::screen_next_area#8
Alias render_next::l#2 = render_next::l#3
Alias render_next::next_piece_gfx#4 = render_next::next_piece_gfx#5
Alias render_next::next_piece_char#4 = render_next::next_piece_char#5
Alias sprites_init::s2#0 = sprites_init::$0
Alias sprites_init::xpos#1 = sprites_init::$1
Alias sprites_irq::ptr#0 = sprites_irq::ptr#5 sprites_irq::ptr#6
Alias sprites_irq::toSpritePtr1_sprite#0 = sprites_irq::toSpritePtr1_sprite#1
Alias level#14 = level#30
Alias current_movedown_slow#1 = current_movedown_slow#17 current_movedown_slow#31
Alias play_move_down::return#0 = play_move_down::return#4
Alias play_movement::render#0 = play_movement::render#4
Alias play_movement::key_event#1 = play_movement::key_event#4 play_movement::key_event#2 play_movement::key_event#3
Alias current_movedown_counter#0 = current_movedown_counter#10 current_movedown_counter#36 current_movedown_counter#29 current_movedown_counter#22 current_movedown_counter#21
Alias current_ypos#0 = current_ypos#15 current_ypos#56 current_ypos#52 current_ypos#36 current_ypos#35
Alias lines_bcd#0 = lines_bcd#13 lines_bcd#48 lines_bcd#36 lines_bcd#26 lines_bcd#25
Alias level#0 = level#15 level#61 level#47 level#33 level#32
Alias current_movedown_slow#18 = current_movedown_slow#2 current_movedown_slow#61 current_movedown_slow#49 current_movedown_slow#34 current_movedown_slow#33
Alias level_bcd#0 = level_bcd#15 level_bcd#58 level_bcd#45 level_bcd#31 level_bcd#30
Alias current_piece#0 = current_piece#13 current_piece#56 current_piece#42 current_piece#28 current_piece#27
Alias current_piece_char#0 = current_piece_char#14 current_piece_char#55 current_piece_char#41 current_piece_char#29 current_piece_char#28
Alias current_orientation#0 = current_orientation#16 current_orientation#52 current_orientation#35 current_orientation#36
Alias current_piece_gfx#0 = current_piece_gfx#17 current_piece_gfx#50 current_piece_gfx#34 current_piece_gfx#35
Alias current_xpos#0 = current_xpos#18 current_xpos#40 current_xpos#41
Alias game_over#0 = game_over#13 game_over#48 game_over#37 game_over#27 game_over#26
Alias next_piece_idx#0 = next_piece_idx#14 next_piece_idx#50 next_piece_idx#39 next_piece_idx#30 next_piece_idx#29
Alias play_movement::render#1 = play_movement::render#8 play_movement::render#5 play_movement::render#7 play_movement::return#1
Alias play_move_leftright::return#0 = play_move_leftright::return#5
Alias current_xpos#1 = current_xpos#19 current_xpos#42
Alias play_move_rotate::return#0 = play_move_rotate::return#5
Alias play_movement::render#2 = play_movement::render#6
Alias current_orientation#1 = current_orientation#17
Alias current_piece_gfx#1 = current_piece_gfx#18
Alias play_movement::return#0 = play_movement::render#3
Alias play_movement::return#2 = play_movement::return#4
Alias current_movedown_counter#1 = current_movedown_counter#11
Alias current_ypos#1 = current_ypos#16
Alias lines_bcd#1 = lines_bcd#14
Alias level#1 = level#16
Alias current_movedown_slow#19 = current_movedown_slow#3
Alias level_bcd#1 = level_bcd#16
Alias current_piece#1 = current_piece#14
Alias current_piece_char#1 = current_piece_char#15
Alias current_orientation#18 = current_orientation#2
Alias current_piece_gfx#19 = current_piece_gfx#2
Alias current_xpos#2 = current_xpos#20
Alias game_over#1 = game_over#14
Alias next_piece_idx#1 = next_piece_idx#15
Alias keyboard_event_pressed::return#12 = keyboard_event_pressed::return#6
Alias current_movedown_counter#14 = current_movedown_counter#23 current_movedown_counter#30 current_movedown_counter#24
Alias current_movedown_slow#35 = current_movedown_slow#50 current_movedown_slow#36 current_movedown_slow#37
Alias play_move_down::movedown#10 = play_move_down::movedown#11 play_move_down::movedown#8 play_move_down::movedown#5
Alias current_ypos#67 = current_ypos#79 current_ypos#68 current_ypos#69
Alias current_xpos#82 = current_xpos#99 current_xpos#83 current_xpos#84
Alias current_orientation#64 = current_orientation#77 current_orientation#65 current_orientation#66
Alias lines_bcd#60 = lines_bcd#70 lines_bcd#61 lines_bcd#62
Alias level#74 = level#87 level#75 level#76
Alias level_bcd#70 = level_bcd#80 level_bcd#71 level_bcd#72
Alias current_piece#70 = current_piece#82 current_piece#71 current_piece#72
Alias current_piece_char#72 = current_piece_char#88 current_piece_char#73 current_piece_char#74
Alias current_piece_gfx#100 = current_piece_gfx#86 current_piece_gfx#87 current_piece_gfx#88
Alias game_over#61 = game_over#74 game_over#62 game_over#63
Alias next_piece_idx#59 = next_piece_idx#70 next_piece_idx#60 next_piece_idx#61
Alias play_move_down::movedown#0 = play_move_down::movedown#4
Alias current_movedown_counter#2 = current_movedown_counter#37
Alias current_movedown_slow#62 = current_movedown_slow#63
Alias current_ypos#88 = current_ypos#89
Alias current_xpos#109 = current_xpos#110
Alias current_orientation#87 = current_orientation#88
Alias lines_bcd#74 = lines_bcd#75
Alias level#93 = level#94
Alias level_bcd#86 = level_bcd#87
Alias current_piece#87 = current_piece#88
Alias current_piece_char#93 = current_piece_char#94
Alias current_piece_gfx#106 = current_piece_gfx#107
Alias game_over#79 = game_over#80
Alias next_piece_idx#74 = next_piece_idx#75
Alias play_move_down::movedown#7 = play_move_down::movedown#9
Alias current_ypos#53 = current_ypos#54
Alias current_xpos#63 = current_xpos#64
Alias current_orientation#53 = current_orientation#54
Alias current_movedown_counter#13 = current_movedown_counter#38
Alias lines_bcd#49 = lines_bcd#50
Alias level#62 = level#63
Alias current_movedown_slow#20 = current_movedown_slow#64
Alias level_bcd#59 = level_bcd#60
Alias current_piece#57 = current_piece#58
Alias current_piece_char#56 = current_piece_char#57
Alias current_piece_gfx#68 = current_piece_gfx#69
Alias game_over#49 = game_over#50
Alias next_piece_idx#51 = next_piece_idx#52
Alias current_movedown_counter#25 = current_movedown_counter#31
Alias current_ypos#17 = current_ypos#41 current_ypos#37 current_ypos#38 current_ypos#18 current_ypos#46 current_ypos#70 current_ypos#55 current_ypos#39
Alias lines_bcd#27 = lines_bcd#29 lines_bcd#37 lines_bcd#63 lines_bcd#51 lines_bcd#39 lines_bcd#52 lines_bcd#38
Alias level#34 = level#36 level#48 level#77 level#64 level#50 level#65 level#49
Alias current_movedown_slow#38 = current_movedown_slow#40 current_movedown_slow#51 current_movedown_slow#73 current_movedown_slow#65 current_movedown_slow#53 current_movedown_slow#66 current_movedown_slow#52
Alias level_bcd#32 = level_bcd#34 level_bcd#46 level_bcd#73 level_bcd#61 level_bcd#48 level_bcd#62 level_bcd#47
Alias current_piece#29 = current_piece#31 current_piece#43 current_piece#33 current_piece#59 current_piece#45 current_piece#73 current_piece#60 current_piece#44
Alias current_piece_char#30 = current_piece_char#32 current_piece_char#42 current_piece_char#75 current_piece_char#58 current_piece_char#44 current_piece_char#76 current_piece_char#59 current_piece_char#43
Alias current_orientation#19 = current_orientation#40 current_orientation#37 current_orientation#67 current_orientation#56 current_orientation#78 current_orientation#68 current_orientation#55 current_orientation#38
Alias current_piece_gfx#36 = current_piece_gfx#38 current_piece_gfx#51 current_piece_gfx#89 current_piece_gfx#70 current_piece_gfx#53 current_piece_gfx#74 current_piece_gfx#71 current_piece_gfx#52
Alias current_xpos#21 = current_xpos#46 current_xpos#43 current_xpos#85 current_xpos#66 current_xpos#69 current_xpos#86 current_xpos#65 current_xpos#44
Alias game_over#28 = game_over#30 game_over#38 game_over#64 game_over#51 game_over#40 game_over#65 game_over#52 game_over#39
Alias next_piece_idx#31 = next_piece_idx#33 next_piece_idx#40 next_piece_idx#62 next_piece_idx#53 next_piece_idx#42 next_piece_idx#63 next_piece_idx#54 next_piece_idx#41
Alias play_collision::ypos#0 = play_move_down::$11
Alias play_collision::return#0 = play_collision::return#11
Alias play_remove_lines::return#0 = play_remove_lines::return#3
Alias play_move_down::removed#0 = play_move_down::$15
Alias lines_bcd#15 = lines_bcd#2 lines_bcd#40
Alias level#17 = level#2 level#51
Alias current_movedown_slow#21 = current_movedown_slow#4 current_movedown_slow#54
Alias level_bcd#17 = level_bcd#2 level_bcd#49
Alias current_piece#15 = current_piece#2
Alias current_piece_char#16 = current_piece_char#2
Alias current_orientation#20 = current_orientation#3
Alias current_piece_gfx#20 = current_piece_gfx#3
Alias current_xpos#22 = current_xpos#3
Alias current_ypos#19 = current_ypos#3
Alias game_over#15 = game_over#2
Alias next_piece_idx#16 = next_piece_idx#2
Alias play_move_down::return#3 = play_move_down::return#5
Alias current_movedown_counter#15 = current_movedown_counter#4
Alias current_ypos#20 = current_ypos#4
Alias lines_bcd#16 = lines_bcd#3
Alias level#18 = level#3
Alias current_movedown_slow#22 = current_movedown_slow#5
Alias level_bcd#18 = level_bcd#3
Alias current_piece#16 = current_piece#3
Alias current_piece_char#17 = current_piece_char#3
Alias current_orientation#21 = current_orientation#4
Alias current_piece_gfx#21 = current_piece_gfx#4
Alias current_xpos#23 = current_xpos#4
Alias game_over#16 = game_over#3
Alias next_piece_idx#17 = next_piece_idx#3
Alias current_xpos#24 = current_xpos#47 current_xpos#51 current_xpos#48 current_xpos#25 current_xpos#49 current_xpos#26 current_xpos#28
Alias current_ypos#21 = current_ypos#42 current_ypos#43 current_ypos#22
Alias current_orientation#22 = current_orientation#41 current_orientation#42 current_orientation#23
Alias current_piece#34 = current_piece#46 current_piece#47 current_piece#35
Alias play_collision::xpos#1 = play_move_leftright::$7
Alias play_collision::return#1 = play_collision::return#12
Alias play_move_leftright::key_event#1 = play_move_leftright::key_event#2
Alias play_collision::xpos#2 = play_move_leftright::$3
Alias play_collision::return#13 = play_collision::return#2
Alias play_move_leftright::return#2 = play_move_leftright::return#6
Alias current_xpos#27 = current_xpos#6
Alias current_orientation#24 = current_orientation#43 current_orientation#44 current_orientation#25 current_orientation#46
Alias current_xpos#52 = current_xpos#67 current_xpos#68 current_xpos#53
Alias current_ypos#44 = current_ypos#57 current_ypos#58 current_ypos#45
Alias current_piece#48 = current_piece#61 current_piece#62 current_piece#49
Alias current_piece_gfx#40 = current_piece_gfx#90 current_piece_gfx#72 current_piece_gfx#54 current_piece_gfx#91
Alias play_move_rotate::orientation#1 = play_move_rotate::$8
Alias play_move_rotate::key_event#1 = play_move_rotate::key_event#2
Alias play_move_rotate::orientation#2 = play_move_rotate::$6
Alias play_move_rotate::return#2 = play_move_rotate::return#6
Alias current_orientation#26 = current_orientation#5
Alias current_piece_gfx#22 = current_piece_gfx#5
Alias play_collision::return#14 = play_collision::return#3
Alias play_move_rotate::orientation#3 = play_move_rotate::orientation#5 play_move_rotate::orientation#4
Alias current_piece#17 = current_piece#32 current_piece#36
Alias current_orientation#45 = current_orientation#57 current_orientation#69
Alias current_piece_gfx#39 = current_piece_gfx#55 current_piece_gfx#73
Alias current_piece_gfx#6 = play_move_rotate::$9
Alias play_collision::piece_gfx#0 = play_collision::$0
Alias play_collision::yp#0 = play_collision::ypos#5
Alias play_collision::xp#0 = play_collision::xpos#5
Alias play_collision::yp#3 = play_collision::yp#5 play_collision::yp#9 play_collision::yp#8 play_collision::yp#7
Alias play_collision::xp#3 = play_collision::xp#7 play_collision::xp#6 play_collision::xp#4 play_collision::xp#5
Alias play_collision::playfield_line#1 = play_collision::playfield_line#4 play_collision::playfield_line#5 play_collision::playfield_line#3 play_collision::playfield_line#2
Alias play_collision::c#3 = play_collision::c#7 play_collision::c#6 play_collision::c#5 play_collision::c#4
Alias play_collision::piece_gfx#1 = play_collision::piece_gfx#8 play_collision::piece_gfx#7 play_collision::piece_gfx#6 play_collision::piece_gfx#5
Alias play_collision::i#1 = play_collision::i#9 play_collision::i#8 play_collision::i#7 play_collision::i#6
Alias play_collision::l#4 = play_collision::l#9 play_collision::l#8 play_collision::l#7 play_collision::l#5
Alias play_collision::xpos#10 = play_collision::xpos#13 play_collision::xpos#9 play_collision::xpos#12 play_collision::xpos#11
Alias play_collision::return#15 = play_collision::return#5
Alias play_collision::yp#4 = play_collision::yp#6
Alias play_collision::l#2 = play_collision::l#3
Alias play_collision::xpos#7 = play_collision::xpos#8
Alias play_collision::piece_gfx#3 = play_collision::piece_gfx#4
Alias play_collision::i#4 = play_collision::i#5
Alias current_piece_char#18 = current_piece_char#33
Alias play_lock_current::playfield_line#1 = play_lock_current::playfield_line#2
Alias play_lock_current::xp#3 = play_lock_current::xp#4
Alias play_lock_current::c#3 = play_lock_current::c#4
Alias current_piece_gfx#23 = current_piece_gfx#58
Alias play_lock_current::i#1 = play_lock_current::i#6
Alias play_lock_current::yp#5 = play_lock_current::yp#6
Alias play_lock_current::l#4 = play_lock_current::l#5
Alias current_xpos#87 = current_xpos#88
Alias play_lock_current::yp#3 = play_lock_current::yp#4
Alias play_lock_current::l#2 = play_lock_current::l#3
Alias current_xpos#55 = current_xpos#70
Alias current_piece_gfx#42 = current_piece_gfx#57
Alias play_lock_current::i#4 = play_lock_current::i#5
Alias current_piece_char#46 = current_piece_char#61
Alias current_piece_gfx#7 = play_spawn_current::$0 current_piece_gfx#93 current_piece_gfx#92
Alias play_collision::return#10 = play_collision::return#16
Alias current_piece#4 = current_piece#75 current_piece#74
Alias current_piece_char#4 = current_piece_char#78 current_piece_char#77
Alias current_orientation#7 = current_orientation#80 current_orientation#79
Alias current_xpos#100 = current_xpos#101 current_xpos#8
Alias current_ypos#5 = current_ypos#81 current_ypos#80
Alias game_over#66 = game_over#75
Alias current_piece#19 = current_piece#83 current_piece#50 current_piece#76 current_piece#64 current_piece#37 current_piece#5
Alias current_piece_char#19 = current_piece_char#89 current_piece_char#47 current_piece_char#79 current_piece_char#63 current_piece_char#34 current_piece_char#5
Alias current_orientation#27 = current_orientation#89 current_orientation#58 current_orientation#81 current_orientation#71 current_orientation#47 current_orientation#8
Alias current_piece_gfx#101 = current_piece_gfx#59 current_piece_gfx#94 current_piece_gfx#76 current_piece_gfx#43 current_piece_gfx#24 current_piece_gfx#8
Alias current_xpos#102 = current_xpos#111 current_xpos#71 current_xpos#90 current_xpos#56 current_xpos#31 current_xpos#9
Alias current_ypos#25 = current_ypos#90 current_ypos#59 current_ypos#82 current_ypos#72 current_ypos#47 current_ypos#6
Alias game_over#17 = game_over#76 game_over#41 game_over#67 game_over#54 game_over#31 game_over#5
Alias play_spawn_current::sid_rnd1_return#0 = play_spawn_current::sid_rnd1_return#2 play_spawn_current::sid_rnd1_return#1 play_spawn_current::sid_rnd1_return#3 play_spawn_current::$5
Alias play_spawn_current::piece_idx#1 = play_spawn_current::$6
Alias play_spawn_current::piece_idx#2 = play_spawn_current::piece_idx#3
Alias next_piece_idx#19 = next_piece_idx#4 next_piece_idx#5
Alias play_remove_lines::c#0 = play_remove_lines::c#2
Alias play_remove_lines::w#8 = play_remove_lines::w#9
Alias play_remove_lines::x#3 = play_remove_lines::x#4
Alias play_remove_lines::r#1 = play_remove_lines::r#6
Alias play_remove_lines::y#6 = play_remove_lines::y#7
Alias play_remove_lines::removed#10 = play_remove_lines::removed#9
Alias play_remove_lines::full#2 = play_remove_lines::full#3
Alias play_remove_lines::y#3 = play_remove_lines::y#5 play_remove_lines::y#4
Alias play_remove_lines::w#1 = play_remove_lines::w#10 play_remove_lines::w#5
Alias play_remove_lines::removed#2 = play_remove_lines::removed#4 play_remove_lines::removed#6
Alias play_remove_lines::r#4 = play_remove_lines::r#7 play_remove_lines::r#8
Alias play_remove_lines::w#2 = play_remove_lines::$5
Alias play_remove_lines::w#6 = play_remove_lines::w#7
Alias play_remove_lines::removed#3 = play_remove_lines::removed#8 play_remove_lines::removed#5 play_remove_lines::return#1 play_remove_lines::return#4 play_remove_lines::return#2
Alias lines_bcd#17 = lines_bcd#30
Alias play_update_score::removed#1 = play_update_score::removed#2
Alias level#37 = level#39 level#38
Alias current_movedown_slow#41 = current_movedown_slow#43 current_movedown_slow#42
Alias level_bcd#35 = level_bcd#37 level_bcd#36
Alias play_update_score::lines_before#0 = play_update_score::$3
Alias play_update_score::lines_after#0 = play_update_score::$5
Alias lines_bcd#31 = lines_bcd#41 lines_bcd#4
Alias level#19 = level#4
Alias current_movedown_slow#23 = current_movedown_slow#6
Alias level_bcd#19 = level_bcd#4
Alias lines_bcd#18 = lines_bcd#5
Alias level#20 = level#5
Alias current_movedown_slow#24 = current_movedown_slow#7
Alias level_bcd#20 = level_bcd#5
Alias level_bcd#38 = level_bcd#50 level_bcd#39
Alias level#22 = level#88 level#6
Alias level_bcd#22 = level_bcd#6
Alias level#78 = level#79
Alias current_movedown_slow#74 = current_movedown_slow#75
Alias level#23 = level#40 level#52 level#7
Alias current_movedown_slow#10 = current_movedown_slow#44 current_movedown_slow#55 current_movedown_slow#25
Alias level_bcd#23 = level_bcd#40 level_bcd#51 level_bcd#8
Alias render_screen_show#24 = render_screen_show#29 render_screen_show#37
Alias render_screen_render#29 = render_screen_render#37 render_screen_render#45
Alias current_movedown_slow#45 = current_movedown_slow#81 current_movedown_slow#85 current_movedown_slow#76 current_movedown_slow#68 current_movedown_slow#56
Alias next_piece_idx#34 = next_piece_idx#76 next_piece_idx#78 next_piece_idx#71 next_piece_idx#64 next_piece_idx#55 next_piece_idx#43
Alias current_piece#38 = current_piece#89 current_piece#92 current_piece#84 current_piece#77 current_piece#65 current_piece#51
Alias current_piece_char#35 = current_piece_char#95 current_piece_char#98 current_piece_char#90 current_piece_char#80 current_piece_char#64 current_piece_char#48
Alias current_orientation#48 = current_orientation#93 current_orientation#96 current_orientation#90 current_orientation#82 current_orientation#72 current_orientation#59
Alias current_piece_gfx#102 = current_piece_gfx#108 current_piece_gfx#110 current_piece_gfx#95 current_piece_gfx#77 current_piece_gfx#60 current_piece_gfx#44
Alias current_xpos#103 = current_xpos#115 current_xpos#117 current_xpos#112 current_xpos#91 current_xpos#72 current_xpos#57
Alias current_ypos#48 = current_ypos#94 current_ypos#96 current_ypos#91 current_ypos#83 current_ypos#73 current_ypos#60
Alias game_over#32 = game_over#81 game_over#83 game_over#77 game_over#68 game_over#55 game_over#42
Alias level#100 = level#99 level#102 level#95 level#89 level#80 level#60 level#96 level#90 level#81 level#67 level#53
Alias keyboard_events_size#34 = keyboard_events_size#75 keyboard_events_size#76 keyboard_events_size#74 keyboard_events_size#73 keyboard_events_size#72 keyboard_events_size#71 keyboard_events_size#68 keyboard_events_size#64 keyboard_events_size#59 keyboard_events_size#50 keyboard_events_size#42
Alias keyboard_modifiers#30 = keyboard_modifiers#57 keyboard_modifiers#58 keyboard_modifiers#56 keyboard_modifiers#55 keyboard_modifiers#54 keyboard_modifiers#53 keyboard_modifiers#51 keyboard_modifiers#49 keyboard_modifiers#47 keyboard_modifiers#41 keyboard_modifiers#35
Alias current_movedown_counter#32 = current_movedown_counter#59 current_movedown_counter#60 current_movedown_counter#58 current_movedown_counter#57 current_movedown_counter#56 current_movedown_counter#55 current_movedown_counter#53 current_movedown_counter#50 current_movedown_counter#47 current_movedown_counter#43 current_movedown_counter#39
Alias lines_bcd#42 = lines_bcd#85 lines_bcd#86 lines_bcd#84 lines_bcd#83 lines_bcd#82 lines_bcd#81 lines_bcd#79 lines_bcd#76 lines_bcd#71 lines_bcd#64 lines_bcd#53
Alias level_bcd#52 = level_bcd#98 level_bcd#99 level_bcd#97 level_bcd#96 level_bcd#95 level_bcd#94 level_bcd#92 level_bcd#88 level_bcd#81 level_bcd#74 level_bcd#64
Alias render_screen_show#15 = render_screen_show#4 render_screen_show#58 render_screen_show#57 render_screen_show#56 render_screen_show#54 render_screen_show#51 render_screen_show#45 render_screen_show#38 render_screen_show#30
Alias render_screen_render#17 = render_screen_render#4 render_screen_render#59 render_screen_render#57 render_screen_render#52 render_screen_render#46 render_screen_render#32 render_screen_render#38 render_screen_render#27 render_screen_render#39
Alias current_movedown_slow#11 = current_movedown_slow#26 current_movedown_slow#86 current_movedown_slow#82 current_movedown_slow#77 current_movedown_slow#69 current_movedown_slow#57
Alias current_piece#20 = current_piece#6
Alias current_piece_char#20 = current_piece_char#6
Alias current_orientation#28 = current_orientation#9
Alias current_piece_gfx#25 = current_piece_gfx#9
Alias current_xpos#10 = current_xpos#32
Alias current_ypos#26 = current_ypos#7
Alias game_over#18 = game_over#6
Alias next_piece_idx#20 = next_piece_idx#6
Alias current_piece#21 = current_piece#7 current_piece#78 current_piece#66 current_piece#52
Alias current_piece_char#21 = current_piece_char#7 current_piece_char#81 current_piece_char#65 current_piece_char#49
Alias current_orientation#10 = current_orientation#29 current_orientation#83 current_orientation#73 current_orientation#60
Alias current_piece_gfx#10 = current_piece_gfx#26 current_piece_gfx#83 current_piece_gfx#78 current_piece_gfx#61
Alias current_xpos#11 = current_xpos#33 current_xpos#78 current_xpos#92 current_xpos#73
Alias current_ypos#27 = current_ypos#8 current_ypos#32 current_ypos#74 current_ypos#61
Alias game_over#19 = game_over#7 game_over#69 game_over#56 game_over#43
Alias next_piece_idx#21 = next_piece_idx#7 next_piece_idx#65 next_piece_idx#48 next_piece_idx#44
Alias render_screen_show#20 = render_screen_show#32 render_screen_show#55 render_screen_show#52 render_screen_show#47 render_screen_show#46 render_screen_show#39
Alias keyboard_events_size#28 = keyboard_events_size#37 keyboard_events_size#43
Alias keyboard_modifiers#24 = keyboard_modifiers#33 keyboard_modifiers#36
Alias game_over#20 = game_over#57 game_over#70 game_over#46 game_over#33 game_over#34
Alias current_movedown_counter#26 = current_movedown_counter#48 current_movedown_counter#51 current_movedown_counter#44 current_movedown_counter#40 current_movedown_counter#35
Alias current_ypos#49 = current_ypos#92 current_ypos#95 current_ypos#84 current_ypos#75 current_ypos#64
Alias lines_bcd#32 = lines_bcd#72 lines_bcd#77 lines_bcd#65 lines_bcd#54 lines_bcd#45
Alias level#41 = level#91 level#97 level#82 level#68 level#56
Alias current_movedown_slow#46 = current_movedown_slow#83 current_movedown_slow#87 current_movedown_slow#78 current_movedown_slow#70 current_movedown_slow#60
Alias level_bcd#41 = level_bcd#82 level_bcd#89 level_bcd#75 level_bcd#65 level_bcd#55
Alias current_piece#39 = current_piece#85 current_piece#90 current_piece#79 current_piece#67 current_piece#55
Alias current_piece_char#36 = current_piece_char#91 current_piece_char#96 current_piece_char#82 current_piece_char#66 current_piece_char#52
Alias current_orientation#49 = current_orientation#91 current_orientation#94 current_orientation#84 current_orientation#74 current_orientation#63
Alias current_piece_gfx#103 = current_piece_gfx#109 current_piece_gfx#96 current_piece_gfx#79 current_piece_gfx#64 current_piece_gfx#45
Alias current_xpos#104 = current_xpos#113 current_xpos#116 current_xpos#93 current_xpos#76 current_xpos#58
Alias next_piece_idx#35 = next_piece_idx#72 next_piece_idx#77 next_piece_idx#66 next_piece_idx#56 next_piece_idx#47
Alias render_screen_render#47 = render_screen_render#61 render_screen_render#62 render_screen_render#60 render_screen_render#58 render_screen_render#54 render_screen_render#53
Alias keyboard_events_size#18 = keyboard_events_size#5
Alias keyboard_modifiers#16 = keyboard_modifiers#6 keyboard_modifiers#43 keyboard_modifiers#42 keyboard_modifiers#37
Alias keyboard_event_get::return#3 = keyboard_event_get::return#5
Alias keyboard_events_size#19 = keyboard_events_size#6 keyboard_events_size#51 keyboard_events_size#44
Alias main::key_event#0 = main::$13 main::key_event#1
Alias play_movement::return#3 = play_movement::return#5
Alias current_movedown_counter#16 = current_movedown_counter#5
Alias current_ypos#28 = current_ypos#9
Alias lines_bcd#19 = lines_bcd#6
Alias level#24 = level#8
Alias current_movedown_slow#12 = current_movedown_slow#27
Alias level_bcd#24 = level_bcd#9
Alias current_piece#22 = current_piece#8
Alias current_piece_char#22 = current_piece_char#8
Alias current_orientation#11 = current_orientation#30
Alias current_piece_gfx#11 = current_piece_gfx#27
Alias current_xpos#12 = current_xpos#34
Alias game_over#21 = game_over#8
Alias next_piece_idx#22 = next_piece_idx#8
Alias main::render#1 = main::$16
Alias main::render#3 = main::render#4
Alias render_screen_show#40 = render_screen_show#48
Alias render_screen_render#48 = render_screen_render#55
Alias current_movedown_slow#71 = current_movedown_slow#79
Alias current_piece#68 = current_piece#80
Alias current_piece_char#67 = current_piece_char#83
Alias current_orientation#75 = current_orientation#85
Alias current_piece_gfx#80 = current_piece_gfx#97
Alias current_xpos#105 = current_xpos#94
Alias current_ypos#76 = current_ypos#85
Alias game_over#58 = game_over#71
Alias next_piece_idx#57 = next_piece_idx#67
Alias keyboard_events_size#45 = keyboard_events_size#52
Alias keyboard_modifiers#38 = keyboard_modifiers#44
Alias current_movedown_counter#41 = current_movedown_counter#45
Alias lines_bcd#55 = lines_bcd#66
Alias level#69 = level#83
Alias level_bcd#66 = level_bcd#76
Alias render_screen_render#22 = render_screen_render#33 render_screen_render#40 render_screen_render#41 render_screen_render#28 render_screen_render#23
Alias current_ypos#33 = current_ypos#65 current_ypos#63 current_ypos#93 current_ypos#86 current_ypos#77 current_ypos#62
Alias current_xpos#106 = current_xpos#75 current_xpos#79 current_xpos#114 current_xpos#107 current_xpos#95 current_xpos#74
Alias current_piece_gfx#104 = current_piece_gfx#63 current_piece_gfx#84 current_piece_gfx#105 current_piece_gfx#98 current_piece_gfx#81 current_piece_gfx#62
Alias next_piece_idx#45 = next_piece_idx#73 next_piece_idx#46 next_piece_idx#68 next_piece_idx#49 next_piece_idx#69 next_piece_idx#58
Alias render_screen_show#23 = render_screen_show#53 render_screen_show#31 render_screen_show#49 render_screen_show#41 render_screen_show#33
Alias current_piece_char#50 = current_piece_char#97 current_piece_char#51 current_piece_char#86 current_piece_char#92 current_piece_char#84 current_piece_char#68
Alias current_movedown_slow#58 = current_movedown_slow#89 current_movedown_slow#59 current_movedown_slow#88 current_movedown_slow#84 current_movedown_slow#80 current_movedown_slow#72
Alias current_piece#53 = current_piece#93 current_piece#54 current_piece#91 current_piece#86 current_piece#81 current_piece#69
Alias current_orientation#61 = current_orientation#97 current_orientation#62 current_orientation#95 current_orientation#92 current_orientation#86 current_orientation#76
Alias game_over#44 = game_over#84 game_over#45 game_over#82 game_over#78 game_over#72 game_over#59
Alias keyboard_events_size#35 = keyboard_events_size#69 keyboard_events_size#36 keyboard_events_size#65 keyboard_events_size#60 keyboard_events_size#53 keyboard_events_size#46
Alias keyboard_modifiers#31 = keyboard_modifiers#52 keyboard_modifiers#32 keyboard_modifiers#50 keyboard_modifiers#48 keyboard_modifiers#45 keyboard_modifiers#39
Alias current_movedown_counter#33 = current_movedown_counter#54 current_movedown_counter#34 current_movedown_counter#52 current_movedown_counter#49 current_movedown_counter#46 current_movedown_counter#42
Alias lines_bcd#43 = lines_bcd#80 lines_bcd#44 lines_bcd#78 lines_bcd#73 lines_bcd#67 lines_bcd#56
Alias level#101 = level#55 level#98 level#92 level#84 level#70 level#54
Alias level_bcd#53 = level_bcd#93 level_bcd#54 level_bcd#90 level_bcd#83 level_bcd#77 level_bcd#67
Alias render_screen_render#18 = render_screen_render#5
Alias render_screen_show#16 = render_screen_show#5
Alias render_screen_show#17 = render_screen_show#25 render_screen_show#6
Alias render_screen_render#19 = render_screen_render#30 render_screen_render#6
Alias current_movedown_slow#13 = current_movedown_slow#28 current_movedown_slow#47
Alias current_piece#23 = current_piece#40 current_piece#9
Alias current_piece_char#23 = current_piece_char#37 current_piece_char#9
Alias current_orientation#12 = current_orientation#31 current_orientation#50
Alias current_piece_gfx#12 = current_piece_gfx#28 current_piece_gfx#46
Alias current_xpos#13 = current_xpos#35 current_xpos#59
Alias current_ypos#10 = current_ypos#29 current_ypos#50
Alias game_over#22 = game_over#35 game_over#9
Alias next_piece_idx#23 = next_piece_idx#36 next_piece_idx#9
Alias keyboard_events_size#20 = keyboard_events_size#29 keyboard_events_size#7
Alias keyboard_modifiers#17 = keyboard_modifiers#25 keyboard_modifiers#7
Alias current_movedown_counter#17 = current_movedown_counter#27 current_movedown_counter#6
Alias lines_bcd#20 = lines_bcd#33 lines_bcd#7
Alias level#25 = level#42 level#9
Alias level_bcd#10 = level_bcd#25 level_bcd#42
Alias __start::__init1_toSpritePtr1_sprite#0 = __start::__init1_toSpritePtr1_sprite#1
Alias render_screen_show#26 = render_screen_show#50 render_screen_show#7 render_screen_show#42 render_screen_show#34
Alias render_screen_render#31 = render_screen_render#56 render_screen_render#7 render_screen_render#49 render_screen_render#42
Alias current_piece_char#10 = current_piece_char#85 current_piece_char#69 current_piece_char#53 current_piece_char#38
Alias current_piece_gfx#13 = current_piece_gfx#99 current_piece_gfx#82 current_piece_gfx#65 current_piece_gfx#47
Alias current_xpos#108 = current_xpos#14 current_xpos#96 current_xpos#77 current_xpos#60
Alias current_ypos#11 = current_ypos#87 current_ypos#78 current_ypos#66 current_ypos#51
Alias game_over#10 = game_over#73 game_over#60 game_over#47 game_over#36
Alias keyboard_events_size#30 = keyboard_events_size#54 keyboard_events_size#8 keyboard_events_size#47 keyboard_events_size#38
Alias keyboard_modifiers#26 = keyboard_modifiers#46 keyboard_modifiers#8 keyboard_modifiers#40 keyboard_modifiers#34
Alias lines_bcd#34 = lines_bcd#68 lines_bcd#8 lines_bcd#57 lines_bcd#46
Alias level#10 = level#85 level#71 level#57 level#43
Alias level_bcd#11 = level_bcd#78 level_bcd#68 level_bcd#56 level_bcd#43
Alias __start::__init1_toSpritePtr1_return#0 = __start::__init1_toSpritePtr1_return#2 __start::__init1_toSpritePtr1_return#1 __start::__init1_toSpritePtr1_return#3 __start::__init1_$0
Alias current_movedown_slow#14 = current_movedown_slow#48
Alias current_piece#10 = current_piece#41
Alias current_orientation#13 = current_orientation#51
Alias next_piece_idx#10 = next_piece_idx#37
Alias current_movedown_counter#28 = current_movedown_counter#7
Alias render_screen_show#18 = render_screen_show#8 render_screen_show#19 render_screen_show#9
Alias render_screen_render#20 = render_screen_render#8 render_screen_render#21 render_screen_render#9
Alias current_movedown_slow#15 = current_movedown_slow#29 current_movedown_slow#30 current_movedown_slow#16
Alias current_piece#11 = current_piece#24 current_piece#25 current_piece#12
Alias current_piece_char#11 = current_piece_char#24 current_piece_char#25 current_piece_char#12
Alias current_orientation#14 = current_orientation#32 current_orientation#33 current_orientation#15
Alias current_piece_gfx#14 = current_piece_gfx#29 current_piece_gfx#30 current_piece_gfx#15
Alias current_xpos#15 = current_xpos#36 current_xpos#37 current_xpos#16
Alias current_ypos#12 = current_ypos#30 current_ypos#31 current_ypos#13
Alias game_over#11 = game_over#23 game_over#24 game_over#12
Alias next_piece_idx#11 = next_piece_idx#24 next_piece_idx#25 next_piece_idx#12
Alias keyboard_events_size#10 = keyboard_events_size#9 keyboard_events_size#21 keyboard_events_size#22
Alias keyboard_modifiers#10 = keyboard_modifiers#9 keyboard_modifiers#18 keyboard_modifiers#19
Alias current_movedown_counter#18 = current_movedown_counter#8 current_movedown_counter#19 current_movedown_counter#9
Alias lines_bcd#10 = lines_bcd#9 lines_bcd#21 lines_bcd#22
Alias level#11 = level#26 level#27 level#12
Alias level_bcd#12 = level_bcd#26 level_bcd#27 level_bcd#13
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)render_screen_show#11 = render_screen_show#12 render_screen_showing
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Alias candidate removed (volatile)sprites_irq::toSpritePtr1_return#0 = sprites_irq::toSpritePtr1_return#2 sprites_irq::toSpritePtr1_return#1 sprites_irq::toSpritePtr1_return#3 sprites_irq::$5 irq_sprite_ptr __start::__init1_$1
Alias keyboard_event_scan::keycode#10 = keyboard_event_scan::keycode#4
Alias keyboard_event_scan::col#2 = keyboard_event_scan::col#3
Alias keyboard_event_scan::row_scan#1 = keyboard_event_scan::row_scan#3
Alias keyboard_event_scan::row#10 = keyboard_event_scan::row#6
Alias keyboard_events_size#14 = keyboard_events_size#57 keyboard_events_size#56 keyboard_events_size#40 keyboard_events_size#25
Alias level#13 = level#28
Alias lines_bcd#11 = lines_bcd#58
Alias level_bcd#14 = level_bcd#84
Alias render_bcd::bcd#6 = render_bcd::bcd#7
Alias render_moving::xpos#2 = render_moving::xpos#3
Alias render_moving::c#2 = render_moving::c#3
Alias render_moving::ypos#5 = render_moving::ypos#7
Alias render_moving::l#3 = render_moving::l#6
Alias current_piece_gfx#16 = current_piece_gfx#32
Alias render_moving::i#2 = render_moving::i#7
Alias current_piece_char#13 = current_piece_char#40
Alias render_moving::screen_line#1 = render_moving::screen_line#3
Alias render_screen_render#43 = render_screen_render#50
Alias current_xpos#80 = current_xpos#97
Alias next_piece_idx#13 = next_piece_idx#26
Alias render_next::screen_next_area#5 = render_next::screen_next_area#7
Alias render_next::c#2 = render_next::c#3
Alias render_next::next_piece_gfx#1 = render_next::next_piece_gfx#4
Alias render_next::l#2 = render_next::l#4
Alias render_next::next_piece_char#1 = render_next::next_piece_char#4
Alias current_movedown_counter#0 = current_movedown_counter#1
Alias current_ypos#0 = current_ypos#1
Alias lines_bcd#0 = lines_bcd#1
Alias level#0 = level#1
Alias current_movedown_slow#18 = current_movedown_slow#19
Alias level_bcd#0 = level_bcd#1
Alias current_piece#0 = current_piece#1
Alias current_piece_char#0 = current_piece_char#1
Alias game_over#0 = game_over#1
Alias next_piece_idx#0 = next_piece_idx#1
Alias current_movedown_counter#13 = current_movedown_counter#14 current_movedown_counter#2 current_movedown_counter#25
Alias current_movedown_slow#20 = current_movedown_slow#35 current_movedown_slow#62 current_movedown_slow#38
Alias current_ypos#17 = current_ypos#67 current_ypos#88 current_ypos#53
Alias current_xpos#109 = current_xpos#82 current_xpos#63 current_xpos#21
Alias current_orientation#19 = current_orientation#64 current_orientation#87 current_orientation#53
Alias lines_bcd#27 = lines_bcd#60 lines_bcd#74 lines_bcd#49
Alias level#34 = level#74 level#93 level#62
Alias level_bcd#32 = level_bcd#70 level_bcd#86 level_bcd#59
Alias current_piece#29 = current_piece#70 current_piece#87 current_piece#57
Alias current_piece_char#30 = current_piece_char#72 current_piece_char#93 current_piece_char#56
Alias current_piece_gfx#100 = current_piece_gfx#106 current_piece_gfx#68 current_piece_gfx#36
Alias game_over#28 = game_over#61 game_over#79 game_over#49
Alias next_piece_idx#31 = next_piece_idx#59 next_piece_idx#74 next_piece_idx#51
Alias current_xpos#24 = current_xpos#50
Alias current_xpos#29 = current_xpos#52
Alias current_ypos#23 = current_ypos#44
Alias current_piece#17 = current_piece#48
Alias current_orientation#24 = current_orientation#45
Alias current_piece_gfx#39 = current_piece_gfx#40
Alias play_collision::xp#2 = play_collision::xp#3
Alias play_collision::c#2 = play_collision::c#3
Alias play_collision::piece_gfx#1 = play_collision::piece_gfx#3
Alias play_collision::i#1 = play_collision::i#4
Alias play_collision::yp#3 = play_collision::yp#4
Alias play_collision::l#2 = play_collision::l#4
Alias play_collision::xpos#10 = play_collision::xpos#7
Alias play_collision::playfield_line#1 = play_collision::playfield_line#6
Alias play_lock_current::xp#2 = play_lock_current::xp#3
Alias play_lock_current::c#2 = play_lock_current::c#3
Alias current_piece_gfx#23 = current_piece_gfx#42
Alias play_lock_current::i#1 = play_lock_current::i#4
Alias play_lock_current::yp#3 = play_lock_current::yp#5
Alias play_lock_current::l#2 = play_lock_current::l#4
Alias current_piece_char#18 = current_piece_char#46
Alias play_lock_current::playfield_line#1 = play_lock_current::playfield_line#3
Alias current_xpos#55 = current_xpos#87
Alias current_piece#4 = current_piece#63
Alias current_piece_char#4 = current_piece_char#62
Alias current_orientation#7 = current_orientation#70
Alias current_piece_gfx#7 = current_piece_gfx#75
Alias current_xpos#100 = current_xpos#89
Alias current_ypos#5 = current_ypos#71
Alias play_remove_lines::c#0 = play_remove_lines::c#1
Alias play_remove_lines::w#4 = play_remove_lines::w#8
Alias play_remove_lines::x#2 = play_remove_lines::x#3
Alias play_remove_lines::r#1 = play_remove_lines::r#4 play_remove_lines::r#5
Alias play_remove_lines::y#2 = play_remove_lines::y#3 play_remove_lines::y#6
Alias play_remove_lines::removed#10 = play_remove_lines::removed#2
Alias level_bcd#21 = level_bcd#38
Alias level#22 = level#78 level#66
Alias current_movedown_slow#67 = current_movedown_slow#74
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)render_screen_show#11 = render_screen_show#12 render_screen_showing
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Alias candidate removed (volatile)sprites_irq::toSpritePtr1_return#0 = sprites_irq::toSpritePtr1_return#2 sprites_irq::toSpritePtr1_return#1 sprites_irq::toSpritePtr1_return#3 sprites_irq::$5 irq_sprite_ptr __start::__init1_$1
Identical Phi Values keyboard_matrix_read::rowid#1 keyboard_matrix_read::rowid#0
Identical Phi Values keyboard_events_size#55 keyboard_events_size#28
Identical Phi Values keyboard_event_scan::row_scan#1 keyboard_event_scan::row_scan#0
Identical Phi Values keyboard_event_scan::row#10 keyboard_event_scan::row#2
Identical Phi Values keyboard_events_size#15 keyboard_events_size#18
Identical Phi Values render_screen_show#11 render_screen_show#20
Identical Phi Values level#13 level#41
Identical Phi Values render_screen_show#12 render_screen_show#11
Identical Phi Values render_screen_render#11 render_screen_render#22
Identical Phi Values render_screen_show#13 render_screen_show#23
Identical Phi Values render_screen_render#13 render_screen_render#22
Identical Phi Values lines_bcd#11 lines_bcd#43
Identical Phi Values level_bcd#14 level_bcd#53
Identical Phi Values render_screen_original::oscr#3 render_screen_original::oscr#4
Identical Phi Values render_screen_original::ocols#3 render_screen_original::ocols#4
Identical Phi Values render_screen_original::y#5 render_screen_original::y#6
Identical Phi Values render_screen_original::y#4 render_screen_original::y#5
Identical Phi Values render_screen_original::y#2 render_screen_original::y#4
Identical Phi Values render_screen_original::oscr#5 render_screen_original::oscr#1
Identical Phi Values render_screen_original::ocols#5 render_screen_original::ocols#1
Identical Phi Values render_playfield::l#3 render_playfield::l#2
Identical Phi Values render_screen_render#25 render_screen_render#14
Identical Phi Values current_piece_gfx#16 current_piece_gfx#31
Identical Phi Values current_piece_char#13 current_piece_char#39
Identical Phi Values render_moving::screen_line#1 render_moving::screen_line#0
Identical Phi Values render_moving::ypos#5 render_moving::ypos#2
Identical Phi Values render_moving::l#3 render_moving::l#4
Identical Phi Values render_screen_render#43 render_screen_render#15
Identical Phi Values current_xpos#80 current_xpos#17
Identical Phi Values render_next::next_piece_char#1 render_next::next_piece_char#3
Identical Phi Values render_next::l#2 render_next::l#7
Identical Phi Values sprites_irq::toSpritePtr1_return#2 sprites_irq::toSpritePtr1_return#0
Identical Phi Values sprites_irq::toSpritePtr1_return#3 sprites_irq::toSpritePtr1_return#1
Identical Phi Values level#46 level#100
Identical Phi Values level#14 level#46
Identical Phi Values current_movedown_slow#1 current_movedown_slow#0
Identical Phi Values play_movement::key_event#1 play_movement::key_event#0
Identical Phi Values current_movedown_counter#20 current_movedown_counter#26
Identical Phi Values current_ypos#34 current_ypos#49
Identical Phi Values lines_bcd#24 lines_bcd#32
Identical Phi Values level#31 level#41
Identical Phi Values current_movedown_slow#32 current_movedown_slow#46
Identical Phi Values level_bcd#29 level_bcd#41
Identical Phi Values current_piece#26 current_piece#39
Identical Phi Values current_piece_char#27 current_piece_char#36
Identical Phi Values current_orientation#34 current_orientation#49
Identical Phi Values current_piece_gfx#33 current_piece_gfx#103
Identical Phi Values current_xpos#39 current_xpos#104
Identical Phi Values game_over#25 game_over#20
Identical Phi Values next_piece_idx#28 next_piece_idx#35
Identical Phi Values current_movedown_counter#0 current_movedown_counter#15
Identical Phi Values current_ypos#0 current_ypos#20
Identical Phi Values lines_bcd#0 lines_bcd#16
Identical Phi Values level#0 level#18
Identical Phi Values current_movedown_slow#18 current_movedown_slow#22
Identical Phi Values level_bcd#0 level_bcd#18
Identical Phi Values current_piece#0 current_piece#16
Identical Phi Values current_piece_char#0 current_piece_char#17
Identical Phi Values current_orientation#0 current_orientation#21
Identical Phi Values current_piece_gfx#0 current_piece_gfx#21
Identical Phi Values current_xpos#0 current_xpos#23
Identical Phi Values game_over#0 game_over#16
Identical Phi Values next_piece_idx#0 next_piece_idx#17
Identical Phi Values current_xpos#1 current_xpos#27
Identical Phi Values current_orientation#1 current_orientation#26
Identical Phi Values current_piece_gfx#1 current_piece_gfx#22
Identical Phi Values current_movedown_counter#12 current_movedown_counter#20
Identical Phi Values play_move_down::key_event#1 play_move_down::key_event#0
Identical Phi Values current_movedown_slow#20 current_movedown_slow#32
Identical Phi Values current_ypos#17 current_ypos#34
Identical Phi Values current_xpos#109 current_xpos#39
Identical Phi Values current_orientation#19 current_orientation#34
Identical Phi Values lines_bcd#27 lines_bcd#24
Identical Phi Values level#34 level#31
Identical Phi Values level_bcd#32 level_bcd#29
Identical Phi Values current_piece#29 current_piece#26
Identical Phi Values current_piece_char#30 current_piece_char#27
Identical Phi Values current_piece_gfx#100 current_piece_gfx#33
Identical Phi Values game_over#28 game_over#25
Identical Phi Values next_piece_idx#31 next_piece_idx#28
Identical Phi Values lines_bcd#15 lines_bcd#18
Identical Phi Values level#17 level#20
Identical Phi Values current_movedown_slow#21 current_movedown_slow#24
Identical Phi Values level_bcd#17 level_bcd#20
Identical Phi Values current_piece#15 current_piece#19
Identical Phi Values current_piece_char#16 current_piece_char#19
Identical Phi Values current_orientation#20 current_orientation#27
Identical Phi Values current_piece_gfx#20 current_piece_gfx#101
Identical Phi Values current_xpos#22 current_xpos#102
Identical Phi Values current_ypos#19 current_ypos#25
Identical Phi Values game_over#15 game_over#17
Identical Phi Values next_piece_idx#16 next_piece_idx#19
Identical Phi Values play_move_leftright::key_event#1 play_move_leftright::key_event#0
Identical Phi Values current_xpos#24 current_xpos#0
Identical Phi Values current_ypos#21 current_ypos#0
Identical Phi Values current_orientation#22 current_orientation#0
Identical Phi Values current_piece#34 current_piece#0
Identical Phi Values play_move_rotate::key_event#1 play_move_rotate::key_event#0
Identical Phi Values current_orientation#24 current_orientation#0
Identical Phi Values current_xpos#29 current_xpos#1
Identical Phi Values current_ypos#23 current_ypos#0
Identical Phi Values current_piece#17 current_piece#0
Identical Phi Values current_piece_gfx#39 current_piece_gfx#0
Identical Phi Values play_collision::piece_gfx#1 play_collision::piece_gfx#2
Identical Phi Values play_collision::yp#3 play_collision::yp#2
Identical Phi Values play_collision::l#2 play_collision::l#6
Identical Phi Values play_collision::xpos#10 play_collision::xp#0
Identical Phi Values play_collision::playfield_line#1 play_collision::playfield_line#0
Identical Phi Values current_ypos#24 current_ypos#17
Identical Phi Values current_xpos#54 current_xpos#109
Identical Phi Values current_piece_gfx#56 current_piece_gfx#100
Identical Phi Values current_piece_char#60 current_piece_char#30
Identical Phi Values current_piece_gfx#23 current_piece_gfx#41
Identical Phi Values current_piece_char#18 current_piece_char#45
Identical Phi Values play_lock_current::playfield_line#1 play_lock_current::playfield_line#0
Identical Phi Values play_lock_current::yp#3 play_lock_current::yp#2
Identical Phi Values play_lock_current::l#2 play_lock_current::l#6
Identical Phi Values current_xpos#55 current_xpos#30
Identical Phi Values current_piece#19 current_piece#4
Identical Phi Values current_piece_char#19 current_piece_char#4
Identical Phi Values current_orientation#27 current_orientation#7
Identical Phi Values current_piece_gfx#101 current_piece_gfx#7
Identical Phi Values current_xpos#102 current_xpos#100
Identical Phi Values current_ypos#25 current_ypos#5
Identical Phi Values game_over#17 game_over#53
Identical Phi Values play_remove_lines::y#2 play_remove_lines::y#8
Identical Phi Values play_remove_lines::removed#10 play_remove_lines::removed#11
Identical Phi Values play_remove_lines::removed#3 play_remove_lines::removed#7
Identical Phi Values play_update_score::removed#1 play_update_score::removed#0
Identical Phi Values lines_bcd#17 lines_bcd#27
Identical Phi Values level#37 level#34
Identical Phi Values current_movedown_slow#41 current_movedown_slow#20
Identical Phi Values level_bcd#35 level_bcd#32
Identical Phi Values level#19 level#23
Identical Phi Values current_movedown_slow#23 current_movedown_slow#10
Identical Phi Values level_bcd#19 level_bcd#23
Identical Phi Values level#21 level#37
Identical Phi Values level_bcd#21 level_bcd#35
Identical Phi Values level#23 level#22
Identical Phi Values current_movedown_slow#10 current_movedown_slow#67
Identical Phi Values level_bcd#23 level_bcd#63
Identical Phi Values render_screen_show#24 render_screen_show#26
Identical Phi Values render_screen_render#29 render_screen_render#31
Identical Phi Values current_movedown_slow#45 current_movedown_slow#14
Identical Phi Values next_piece_idx#34 next_piece_idx#10
Identical Phi Values current_piece#38 current_piece#10
Identical Phi Values current_piece_char#35 current_piece_char#10
Identical Phi Values current_orientation#48 current_orientation#13
Identical Phi Values current_piece_gfx#102 current_piece_gfx#13
Identical Phi Values current_xpos#103 current_xpos#108
Identical Phi Values current_ypos#48 current_ypos#11
Identical Phi Values game_over#32 game_over#10
Identical Phi Values level#100 level#10
Identical Phi Values keyboard_events_size#34 keyboard_events_size#30
Identical Phi Values keyboard_modifiers#30 keyboard_modifiers#26
Identical Phi Values current_movedown_counter#32 current_movedown_counter#28
Identical Phi Values lines_bcd#42 lines_bcd#34
Identical Phi Values level_bcd#52 level_bcd#11
Identical Phi Values render_screen_show#15 render_screen_show#0
Identical Phi Values render_screen_render#17 render_screen_render#0
Identical Phi Values current_movedown_slow#11 current_movedown_slow#1
Identical Phi Values current_piece#20 current_piece#19
Identical Phi Values current_piece_char#20 current_piece_char#19
Identical Phi Values current_orientation#28 current_orientation#27
Identical Phi Values current_piece_gfx#25 current_piece_gfx#101
Identical Phi Values current_xpos#10 current_xpos#102
Identical Phi Values current_ypos#26 current_ypos#25
Identical Phi Values game_over#18 game_over#17
Identical Phi Values next_piece_idx#20 next_piece_idx#19
Identical Phi Values current_piece#21 current_piece#19
Identical Phi Values current_piece_char#21 current_piece_char#19
Identical Phi Values current_orientation#10 current_orientation#27
Identical Phi Values current_piece_gfx#10 current_piece_gfx#101
Identical Phi Values current_xpos#11 current_xpos#102
Identical Phi Values current_ypos#27 current_ypos#25
Identical Phi Values game_over#19 game_over#17
Identical Phi Values next_piece_idx#21 next_piece_idx#19
Identical Phi Values render_screen_show#20 render_screen_show#17
Identical Phi Values keyboard_events_size#28 keyboard_events_size#20
Identical Phi Values keyboard_modifiers#24 keyboard_modifiers#17
Identical Phi Values game_over#20 game_over#22
Identical Phi Values current_movedown_counter#26 current_movedown_counter#17
Identical Phi Values current_ypos#49 current_ypos#10
Identical Phi Values lines_bcd#32 lines_bcd#20
Identical Phi Values level#41 level#25
Identical Phi Values current_movedown_slow#46 current_movedown_slow#13
Identical Phi Values level_bcd#41 level_bcd#10
Identical Phi Values current_piece#39 current_piece#23
Identical Phi Values current_piece_char#36 current_piece_char#23
Identical Phi Values current_orientation#49 current_orientation#12
Identical Phi Values current_piece_gfx#103 current_piece_gfx#12
Identical Phi Values current_xpos#104 current_xpos#13
Identical Phi Values next_piece_idx#35 next_piece_idx#23
Identical Phi Values render_screen_render#47 render_screen_render#19
Identical Phi Values keyboard_events_size#18 keyboard_events_size#14
Identical Phi Values keyboard_modifiers#16 keyboard_modifiers#15
Identical Phi Values keyboard_events_size#19 keyboard_events_size#17
Identical Phi Values current_movedown_counter#16 current_movedown_counter#0
Identical Phi Values current_ypos#28 current_ypos#0
Identical Phi Values lines_bcd#19 lines_bcd#0
Identical Phi Values level#24 level#0
Identical Phi Values current_movedown_slow#12 current_movedown_slow#18
Identical Phi Values level_bcd#24 level_bcd#0
Identical Phi Values current_piece#22 current_piece#0
Identical Phi Values current_piece_char#22 current_piece_char#0
Identical Phi Values current_orientation#11 current_orientation#18
Identical Phi Values current_piece_gfx#11 current_piece_gfx#19
Identical Phi Values current_xpos#12 current_xpos#2
Identical Phi Values game_over#21 game_over#0
Identical Phi Values next_piece_idx#22 next_piece_idx#0
Identical Phi Values main::render#3 main::render#0
Identical Phi Values render_screen_show#40 render_screen_show#20
Identical Phi Values render_screen_render#48 render_screen_render#47
Identical Phi Values current_movedown_slow#71 current_movedown_slow#46
Identical Phi Values current_piece#68 current_piece#39
Identical Phi Values current_piece_char#67 current_piece_char#36
Identical Phi Values current_orientation#75 current_orientation#49
Identical Phi Values current_piece_gfx#80 current_piece_gfx#103
Identical Phi Values current_xpos#105 current_xpos#104
Identical Phi Values current_ypos#76 current_ypos#49
Identical Phi Values game_over#58 game_over#20
Identical Phi Values next_piece_idx#57 next_piece_idx#35
Identical Phi Values keyboard_events_size#45 keyboard_events_size#19
Identical Phi Values keyboard_modifiers#38 keyboard_modifiers#16
Identical Phi Values current_movedown_counter#41 current_movedown_counter#26
Identical Phi Values lines_bcd#55 lines_bcd#32
Identical Phi Values level#69 level#41
Identical Phi Values level_bcd#66 level_bcd#41
Identical Phi Values render_screen_render#18 render_screen_render#12
Identical Phi Values render_screen_show#16 render_screen_show#14
Identical Phi Values render_screen_show#18 render_screen_show#17
Identical Phi Values render_screen_render#20 render_screen_render#19
Identical Phi Values current_movedown_slow#15 current_movedown_slow#13
Identical Phi Values current_piece#11 current_piece#23
Identical Phi Values current_piece_char#11 current_piece_char#23
Identical Phi Values current_orientation#14 current_orientation#12
Identical Phi Values current_piece_gfx#14 current_piece_gfx#12
Identical Phi Values current_xpos#15 current_xpos#13
Identical Phi Values current_ypos#12 current_ypos#10
Identical Phi Values game_over#11 game_over#22
Identical Phi Values next_piece_idx#11 next_piece_idx#23
Identical Phi Values keyboard_events_size#10 keyboard_events_size#20
Identical Phi Values keyboard_modifiers#10 keyboard_modifiers#17
Identical Phi Values current_movedown_counter#18 current_movedown_counter#17
Identical Phi Values lines_bcd#10 lines_bcd#20
Identical Phi Values level#11 level#25
Identical Phi Values level_bcd#12 level_bcd#10
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values keyboard_event_scan::row#4 keyboard_event_scan::row#2
Identical Phi Values render_screen_render#14 render_screen_render#24
Identical Phi Values render_moving::ypos#4 render_moving::ypos#2
Identical Phi Values render_moving::l#2 render_moving::l#4
Identical Phi Values render_screen_render#36 render_screen_render#15
Identical Phi Values current_xpos#62 current_xpos#17
Identical Phi Values current_piece_gfx#67 current_piece_gfx#31
Identical Phi Values current_piece_char#71 current_piece_char#39
Identical Phi Values render_next::next_piece_char#3 render_next::next_piece_char#0
Identical Phi Values play_collision::xp#0 play_collision::xpos#6
Identical Phi Values play_collision::piece_gfx#2 play_collision::piece_gfx#0
Identical Phi Values current_xpos#30 current_xpos#13
Identical Phi Values current_piece_gfx#41 current_piece_gfx#12
Identical Phi Values current_piece_char#45 current_piece_char#23
Identical Phi Values render_screen_show#23 render_screen_show#17
Identical Phi Values render_screen_render#22 render_screen_render#19
Identical Phi Values keyboard_events_size#35 keyboard_events_size#17
Identical Phi Values keyboard_modifiers#31 keyboard_modifiers#15
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values render_screen_render#15 render_screen_render#35
Identical Phi Values current_xpos#17 current_xpos#61
Identical Phi Values current_piece_gfx#31 current_piece_gfx#66
Identical Phi Values current_piece_char#39 current_piece_char#70
Successful SSA optimization Pass2IdenticalPhiElimination
Identified duplicate assignment right side [162] render_init::$5 = render_init::i#2 * SIZEOF_POINTER
Successful SSA optimization Pass2DuplicateRValueIdentification
Simple Condition keyboard_event_scan::$13 [13] if(keyboard_event_scan::row_scan#0!=keyboard_scan_values[keyboard_event_scan::row#2]) goto keyboard_event_scan::@8
Simple Condition keyboard_event_scan::$25 [19] if(keyboard_event_scan::row#1!=rangelast(0,7)) goto keyboard_event_scan::@7
Simple Condition keyboard_event_scan::$18 [24] if(keyboard_event_scan::$16==0) goto keyboard_event_scan::@11
Simple Condition keyboard_event_scan::$24 [29] if(keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@10
Simple Condition keyboard_event_scan::$20 [31] if(keyboard_events_size#11==8) goto keyboard_event_scan::@11
Simple Condition keyboard_event_scan::$22 [34] if(keyboard_event_scan::event_type#0==0) goto keyboard_event_scan::@12
Simple Condition keyboard_event_scan::$2 [47] if(keyboard_event_scan::$0==0) goto keyboard_event_scan::@1
Simple Condition keyboard_event_scan::$5 [54] if(keyboard_event_scan::$3==0) goto keyboard_event_scan::@2
Simple Condition keyboard_event_scan::$8 [62] if(keyboard_event_scan::$6==0) goto keyboard_event_scan::@3
Simple Condition keyboard_event_scan::$11 [70] if(keyboard_event_scan::$9==0) goto keyboard_event_scan::@return
Simple Condition keyboard_event_get::$0 [83] if(keyboard_events_size#14==0) goto keyboard_event_get::@1
Simple Condition render_init::$3 [117] if(render_init::i#1!=rangelast(0,PLAYFIELD_LINES-1)) goto render_init::@1
Simple Condition render_show::$0 [124] if(render_screen_show#17==0) goto render_show::@1
Simple Condition render_score::$0 [158] if(render_screen_render#19==0) goto render_score::@1
Simple Condition render_bcd::$2 [196] if(render_bcd::only_low#6!=0) goto render_bcd::@1
Simple Condition render_screen_original::$0 [221] if(render_screen_original::x#1!=4) goto render_screen_original::@2
Simple Condition render_screen_original::$1 [231] if(render_screen_original::x#2!=$24) goto render_screen_original::@3
Simple Condition render_screen_original::$2 [239] if(render_screen_original::x#3!=$28) goto render_screen_original::@4
Simple Condition render_screen_original::$3 [242] if(render_screen_original::y#1!=rangelast(0,$18)) goto render_screen_original::@1
Simple Condition render_playfield::$1 [258] if(render_playfield::c#1!=rangelast(0,PLAYFIELD_COLS-1)) goto render_playfield::@2
Simple Condition render_playfield::$2 [261] if(render_playfield::l#1!=rangelast(2,PLAYFIELD_LINES-1)) goto render_playfield::@1
Simple Condition render_moving::$0 [269] if(render_moving::ypos#2>1) goto render_moving::@2
Simple Condition render_moving::$5 [280] if(render_moving::l#1!=rangelast(0,3)) goto render_moving::@1
Simple Condition render_moving::$3 [285] if(render_moving::current_cell#0==0) goto render_moving::@5
Simple Condition render_moving::$4 [289] if(render_moving::c#1!=rangelast(0,3)) goto render_moving::@4
Simple Condition render_next::$0 [295] if(render_screen_render#16==0) goto render_next::@1
Simple Condition render_next::$3 [309] if(render_next::cell#0!=0) goto render_next::@6
Simple Condition render_next::$4 [315] if(render_next::c#1!=rangelast(0,3)) goto render_next::@5
Simple Condition render_next::$5 [319] if(render_next::l#1!=rangelast(0,3)) goto render_next::@4
Simple Condition sprites_init::$2 [334] if(sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1
Simple Condition sprites_irq::$4 [357] if(*RASTER<sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8
Simple Condition sprites_irq::$1 [360] if(render_screen_showing==0) goto sprites_irq::@1
Simple Condition sprites_irq::$2 [375] if(irq_cnt==9) goto sprites_irq::@3
Simple Condition sprites_irq::$3 [388] if(irq_cnt==$a) goto sprites_irq::@4
Simple Condition play_init::$0 [411] if(play_init::j#1!=rangelast(0,PLAYFIELD_LINES-1)) goto play_init::@1
Simple Condition play_init::$1 [420] if(play_init::b#1!=rangelast(0,4)) goto play_init::@3
Simple Condition play_movement::$2 [431] if(game_over#16==0) goto play_movement::@1
Simple Condition play_move_down::$1 [450] if(play_move_down::key_event#0!=KEY_SPACE) goto play_move_down::@1
Simple Condition play_move_down::$4 [457] if(play_move_down::$2==0) goto play_move_down::@2
Simple Condition play_move_down::$6 [461] if(current_movedown_counter#13<current_movedown_slow#13) goto play_move_down::@3
Simple Condition play_move_down::$10 [463] if(current_movedown_counter#13<current_movedown_fast) goto play_move_down::@2
Simple Condition play_move_down::$8 [467] if(play_move_down::movedown#6==0) goto play_move_down::@4
Simple Condition play_move_down::$13 [477] if(play_move_down::$12==COLLISION_NONE) goto play_move_down::@11
Simple Condition play_move_leftright::$0 [495] if(play_move_leftright::key_event#0==KEY_COMMA) goto play_move_leftright::@1
Simple Condition play_move_leftright::$10 [503] if(play_move_leftright::$8!=COLLISION_NONE) goto play_move_leftright::@2
Simple Condition play_move_leftright::$2 [505] if(play_move_leftright::key_event#0!=KEY_DOT) goto play_move_leftright::@2
Simple Condition play_move_leftright::$6 [513] if(play_move_leftright::$4!=COLLISION_NONE) goto play_move_leftright::@2
Simple Condition play_move_rotate::$0 [524] if(play_move_rotate::key_event#0==KEY_Z) goto play_move_rotate::@1
Simple Condition play_move_rotate::$1 [528] if(play_move_rotate::key_event#0==KEY_X) goto play_move_rotate::@2
Simple Condition play_move_rotate::$4 [542] if(play_move_rotate::$2!=COLLISION_NONE) goto play_move_rotate::@4
Simple Condition play_collision::$2 [558] if(play_collision::piece_gfx#0[play_collision::i#2]==0) goto play_collision::@3
Simple Condition play_collision::$12 [562] if(play_collision::c#1!=rangelast(0,3)) goto play_collision::@2
Simple Condition play_collision::$4 [564] if(play_collision::yp#2<PLAYFIELD_LINES) goto play_collision::@4
Simple Condition play_collision::$7 [567] if(play_collision::$5==0) goto play_collision::@5
Simple Condition play_collision::$9 [572] if(play_collision::xp#2<PLAYFIELD_COLS) goto play_collision::@6
Simple Condition play_collision::$11 [575] if(play_collision::playfield_line#0[play_collision::xp#2]==0) goto play_collision::@3
Simple Condition play_collision::$13 [581] if(play_collision::l#1!=rangelast(0,3)) goto play_collision::@1
Simple Condition play_lock_current::$1 [595] if(current_piece_gfx#12[play_lock_current::i#2]==0) goto play_lock_current::@3
Simple Condition play_lock_current::$2 [599] if(play_lock_current::c#1!=rangelast(0,3)) goto play_lock_current::@2
Simple Condition play_lock_current::$3 [604] if(play_lock_current::l#1!=rangelast(0,3)) goto play_lock_current::@1
Simple Condition play_spawn_current::$3 [622] if(play_spawn_current::$1!=COLLISION_PLAYFIELD) goto play_spawn_current::@1
Simple Condition play_spawn_current::$4 [628] if(play_spawn_current::piece_idx#2==7) goto play_spawn_current::sid_rnd1
Simple Condition play_remove_lines::$1 [644] if(play_remove_lines::c#0!=0) goto play_remove_lines::@3
Simple Condition play_remove_lines::$2 [650] if(play_remove_lines::x#1!=rangelast(0,PLAYFIELD_COLS-1)) goto play_remove_lines::@2
Simple Condition play_remove_lines::$4 [653] if(play_remove_lines::full#2!=1) goto play_remove_lines::@7
Simple Condition play_remove_lines::$6 [657] if(play_remove_lines::y#1!=rangelast(0,PLAYFIELD_LINES-1)) goto play_remove_lines::@1
Simple Condition play_remove_lines::$7 [662] if(play_remove_lines::w#6!=$ff) goto play_remove_lines::@9
Simple Condition play_update_score::$1 [668] if(play_update_score::removed#0==0) goto play_update_score::@return
Simple Condition play_update_score::$7 [680] if(play_update_score::lines_before#0==play_update_score::lines_after#0) goto play_update_score::@return
Simple Condition play_increase_level::$0 [688] if(level#22>$1d) goto play_increase_level::@1
Simple Condition play_increase_level::$3 [695] if(play_increase_level::$1!=$a) goto play_increase_level::@3
Simple Condition play_increase_level::$4 [705] if(play_increase_level::b#1!=rangelast(0,4)) goto play_increase_level::@6
Simple Condition main::$10 [729] if(*RASTER!=$ff) goto main::@2
Simple Condition main::$14 [739] if(game_over#22==0) goto main::@4
Simple Condition main::$18 [750] if(main::render#2==0) goto main::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant right-side identified [167] render_bcd::offset#1 = render_score::score_offset + 2
Constant right-side identified [172] render_bcd::offset#2 = render_score::score_offset + 4
Constant right-side identified [182] render_bcd::offset#4 = render_score::lines_offset + 1
Constant right-side identified [296] render_next::screen_next_area#1 = PLAYFIELD_SCREEN_1 + render_next::next_area_offset
Constant right-side identified [297] render_next::screen_next_area#2 = PLAYFIELD_SCREEN_2 + render_next::next_area_offset
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant keyboard_event_scan::keycode#0 = 0
Constant keyboard_event_scan::row#0 = 0
Constant keyboard_event_scan::col#0 = 0
Constant keyboard_modifiers#0 = 0
Constant keyboard_event_pressed::keycode#0 = KEY_LSHIFT
Constant keyboard_event_pressed::keycode#1 = KEY_RSHIFT
Constant keyboard_event_pressed::keycode#2 = KEY_CTRL
Constant keyboard_event_pressed::keycode#3 = KEY_COMMODORE
Constant keyboard_event_get::return#0 = $ff
Constant render_init::vicSelectGfxBank1_gfx#0 = PLAYFIELD_CHARSET
Constant render_screen_original::screen#0 = PLAYFIELD_SCREEN_1
Constant render_screen_original::screen#1 = PLAYFIELD_SCREEN_2
Constant render_init::li_1#0 = PLAYFIELD_SCREEN_1+(byte)2*$28+$10
Constant render_init::li_2#0 = PLAYFIELD_SCREEN_2+(byte)2*$28+$10
Constant render_init::i#0 = 0
Constant render_screen_show#0 = 0
Constant render_screen_render#0 = $20
Constant render_show::d018val#0 = 0
Constant render_show::toD0181_screen#0 = PLAYFIELD_SCREEN_1
Constant render_show::toD0181_gfx#0 = PLAYFIELD_CHARSET
Constant render_show::toD0182_screen#0 = PLAYFIELD_SCREEN_2
Constant render_show::toD0182_gfx#0 = PLAYFIELD_CHARSET
Constant render_score::screen#0 = (byte*) 0
Constant render_score::screen#1 = PLAYFIELD_SCREEN_1
Constant render_score::screen#2 = PLAYFIELD_SCREEN_2
Constant render_bcd::offset#0 = render_score::score_offset
Constant render_bcd::only_low#0 = 0
Constant render_bcd::offset#1 = render_score::score_offset+2
Constant render_bcd::only_low#1 = 0
Constant render_bcd::offset#2 = render_score::score_offset+4
Constant render_bcd::only_low#2 = 0
Constant render_bcd::offset#3 = render_score::lines_offset
Constant render_bcd::only_low#3 = 1
Constant render_bcd::offset#4 = render_score::lines_offset+1
Constant render_bcd::only_low#4 = 0
Constant render_bcd::offset#5 = render_score::level_offset
Constant render_bcd::only_low#5 = 0
Constant render_screen_original::oscr#0 = PLAYFIELD_SCREEN_ORIGINAL+(byte)$20*2
Constant render_screen_original::ocols#0 = PLAYFIELD_COLORS_ORIGINAL+(byte)$20*2
Constant render_screen_original::cols#0 = COLS
Constant render_screen_original::y#0 = 0
Constant render_screen_original::x#0 = 0
Constant render_playfield::i#0 = (byte)PLAYFIELD_COLS*2
Constant render_playfield::l#0 = 2
Constant render_playfield::c#0 = 0
Constant render_moving::i#0 = 0
Constant render_moving::l#0 = 0
Constant render_moving::c#0 = 0
Constant render_next::screen_next_area#0 = (byte*) 0
Constant render_next::screen_next_area#1 = PLAYFIELD_SCREEN_1+render_next::next_area_offset
Constant render_next::screen_next_area#2 = PLAYFIELD_SCREEN_2+render_next::next_area_offset
Constant render_next::l#0 = 0
Constant render_next::c#0 = 0
Constant sprites_init::xpos#0 = (byte)$18+$f*8
Constant sprites_init::s#0 = 0
Constant sprites_irq::toSpritePtr1_sprite#0 = PLAYFIELD_SPRITES
Constant play_init::idx#0 = 0
Constant play_init::pli#0 = playfield
Constant play_init::j#0 = 0
Constant play_init::b#0 = 0
Constant play_movement::render#0 = 0
Constant play_move_down::movedown#0 = 0
Constant keyboard_event_pressed::keycode#4 = KEY_SPACE
Constant play_move_down::return#1 = 0
Constant current_movedown_counter#3 = 0
Constant play_move_down::return#2 = 1
Constant play_move_leftright::return#1 = 1
Constant play_move_leftright::return#3 = 0
Constant play_move_leftright::return#4 = 1
Constant play_move_rotate::orientation#0 = $80
Constant play_move_rotate::return#1 = 0
Constant play_move_rotate::return#3 = 0
Constant play_move_rotate::return#4 = 1
Constant play_collision::i#0 = 0
Constant play_collision::l#0 = 0
Constant play_collision::c#0 = 0
Constant play_collision::return#4 = COLLISION_BOTTOM
Constant play_collision::return#6 = COLLISION_LEFT
Constant play_collision::return#7 = COLLISION_RIGHT
Constant play_collision::return#8 = COLLISION_PLAYFIELD
Constant play_collision::return#9 = COLLISION_NONE
Constant play_lock_current::i#0 = 0
Constant play_lock_current::l#0 = 0
Constant play_lock_current::c#0 = 0
Constant current_orientation#7 = 0
Constant play_spawn_current::piece_idx#0 = 7
Constant game_over#4 = 1
Constant play_remove_lines::r#0 = (byte)PLAYFIELD_LINES*PLAYFIELD_COLS-1
Constant play_remove_lines::w#0 = (byte)PLAYFIELD_LINES*PLAYFIELD_COLS-1
Constant play_remove_lines::removed#0 = 0
Constant play_remove_lines::y#0 = 0
Constant play_remove_lines::full#0 = 1
Constant play_remove_lines::x#0 = 0
Constant play_remove_lines::full#1 = 0
Constant current_movedown_slow#8 = 1
Constant play_increase_level::b#0 = 0
Constant main::render#0 = 0
Constant keyboard_events_size#30 = 0
Constant keyboard_modifiers#26 = 0
Constant current_piece_gfx#13 = (byte*) 0
Constant current_piece_char#10 = 0
Constant current_xpos#108 = 0
Constant current_ypos#11 = 0
Constant render_screen_render#31 = $20
Constant render_screen_show#26 = 0
Constant lines_bcd#34 = 0
Constant level_bcd#11 = 0
Constant level#10 = 0
Constant game_over#10 = 0
Constant __start::__init1_toSpritePtr1_sprite#0 = PLAYFIELD_SPRITES
Constant next_piece_idx#10 = 0
Constant current_piece#10 = (byte*) 0
Constant current_orientation#13 = 0
Constant current_movedown_slow#14 = $30
Constant current_movedown_counter#28 = 0
Successful SSA optimization Pass2ConstantIdentification
Constant render_show::toD0181_$7 = (word)render_show::toD0181_screen#0
Constant render_show::toD0182_$7 = (word)render_show::toD0182_screen#0
Constant sprites_irq::toSpritePtr1_$1 = (word)sprites_irq::toSpritePtr1_sprite#0
Constant play_collision::orientation#4 = current_orientation#7
Constant __start::__init1_toSpritePtr1_$1 = (word)__start::__init1_toSpritePtr1_sprite#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (word)render_init::vicSelectGfxBank1_gfx#0 in [91] render_init::vicSelectGfxBank1_toDd001_$0 = > (word)render_init::vicSelectGfxBank1_gfx#0
Constant value identified (word)render_show::toD0181_gfx#0 in [131] render_show::toD0181_$3 = > (word)render_show::toD0181_gfx#0
Constant value identified (word)render_show::toD0182_gfx#0 in [141] render_show::toD0182_$3 = > (word)render_show::toD0182_gfx#0
Successful SSA optimization Pass2ConstantValues
if() condition always true - replacing block destination [726] if(true) goto main::@2
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
Removing PHI-reference to removed block (main::@5) in block main::@7
if() condition always true - replacing block destination [746] if(true) goto main::@6
Successful SSA optimization Pass2ConstantIfs
Resolved ranged next value [17] keyboard_event_scan::row#1 = ++ keyboard_event_scan::row#2 to ++
Resolved ranged comparison value [19] if(keyboard_event_scan::row#1!=rangelast(0,7)) goto keyboard_event_scan::@7 to 8
Resolved ranged next value [27] keyboard_event_scan::col#1 = ++ keyboard_event_scan::col#2 to ++
Resolved ranged comparison value [29] if(keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@10 to 8
Resolved ranged next value [115] render_init::i#1 = ++ render_init::i#2 to ++
Resolved ranged comparison value [117] if(render_init::i#1!=rangelast(0,PLAYFIELD_LINES-1)) goto render_init::@1 to PLAYFIELD_LINES-1+1
Resolved ranged next value [240] render_screen_original::y#1 = ++ render_screen_original::y#6 to ++
Resolved ranged comparison value [242] if(render_screen_original::y#1!=rangelast(0,$18)) goto render_screen_original::@1 to $19
Resolved ranged next value [256] render_playfield::c#1 = ++ render_playfield::c#2 to ++
Resolved ranged comparison value [258] if(render_playfield::c#1!=rangelast(0,PLAYFIELD_COLS-1)) goto render_playfield::@2 to PLAYFIELD_COLS-1+1
Resolved ranged next value [259] render_playfield::l#1 = ++ render_playfield::l#2 to ++
Resolved ranged comparison value [261] if(render_playfield::l#1!=rangelast(2,PLAYFIELD_LINES-1)) goto render_playfield::@1 to PLAYFIELD_LINES-1+1
Resolved ranged next value [278] render_moving::l#1 = ++ render_moving::l#4 to ++
Resolved ranged comparison value [280] if(render_moving::l#1!=rangelast(0,3)) goto render_moving::@1 to 4
Resolved ranged next value [287] render_moving::c#1 = ++ render_moving::c#2 to ++
Resolved ranged comparison value [289] if(render_moving::c#1!=rangelast(0,3)) goto render_moving::@4 to 4
Resolved ranged next value [313] render_next::c#1 = ++ render_next::c#2 to ++
Resolved ranged comparison value [315] if(render_next::c#1!=rangelast(0,3)) goto render_next::@5 to 4
Resolved ranged next value [317] render_next::l#1 = ++ render_next::l#7 to ++
Resolved ranged comparison value [319] if(render_next::l#1!=rangelast(0,3)) goto render_next::@4 to 4
Resolved ranged next value [332] sprites_init::s#1 = ++ sprites_init::s#2 to ++
Resolved ranged comparison value [334] if(sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 to 4
Resolved ranged next value [409] play_init::j#1 = ++ play_init::j#2 to ++
Resolved ranged comparison value [411] if(play_init::j#1!=rangelast(0,PLAYFIELD_LINES-1)) goto play_init::@1 to PLAYFIELD_LINES-1+1
Resolved ranged next value [418] play_init::b#1 = ++ play_init::b#2 to ++
Resolved ranged comparison value [420] if(play_init::b#1!=rangelast(0,4)) goto play_init::@3 to 5
Resolved ranged next value [560] play_collision::c#1 = ++ play_collision::c#2 to ++
Resolved ranged comparison value [562] if(play_collision::c#1!=rangelast(0,3)) goto play_collision::@2 to 4
Resolved ranged next value [579] play_collision::l#1 = ++ play_collision::l#6 to ++
Resolved ranged comparison value [581] if(play_collision::l#1!=rangelast(0,3)) goto play_collision::@1 to 4
Resolved ranged next value [597] play_lock_current::c#1 = ++ play_lock_current::c#2 to ++
Resolved ranged comparison value [599] if(play_lock_current::c#1!=rangelast(0,3)) goto play_lock_current::@2 to 4
Resolved ranged next value [602] play_lock_current::l#1 = ++ play_lock_current::l#6 to ++
Resolved ranged comparison value [604] if(play_lock_current::l#1!=rangelast(0,3)) goto play_lock_current::@1 to 4
Resolved ranged next value [648] play_remove_lines::x#1 = ++ play_remove_lines::x#2 to ++
Resolved ranged comparison value [650] if(play_remove_lines::x#1!=rangelast(0,PLAYFIELD_COLS-1)) goto play_remove_lines::@2 to PLAYFIELD_COLS-1+1
Resolved ranged next value [655] play_remove_lines::y#1 = ++ play_remove_lines::y#8 to ++
Resolved ranged comparison value [657] if(play_remove_lines::y#1!=rangelast(0,PLAYFIELD_LINES-1)) goto play_remove_lines::@1 to PLAYFIELD_LINES-1+1
Resolved ranged next value [703] play_increase_level::b#1 = ++ play_increase_level::b#2 to ++
Resolved ranged comparison value [705] if(play_increase_level::b#1!=rangelast(0,4)) goto play_increase_level::@6 to 5
Rewriting conditional comparison [269] if(render_moving::ypos#2>1) goto render_moving::@2
Rewriting conditional comparison [688] if(level#22>$1d) goto play_increase_level::@1
Simplifying expression containing zero (byte*)CIA1 in [1] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = keyboard_matrix_row_bitmask[keyboard_matrix_read::rowid#0]
Simplifying expression containing zero KEY_MODIFIER_LSHIFT in [55] keyboard_modifiers#1 = keyboard_modifiers#0 | KEY_MODIFIER_LSHIFT
Simplifying expression containing zero (byte*)CIA2 in [94] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = render_init::vicSelectGfxBank1_toDd001_return#0
Simplifying expression containing zero PIECES_COLORS_1 in [98] *BG_COLOR1 = PIECES_COLORS_1[0]
Simplifying expression containing zero PIECES_COLORS_2 in [99] *BG_COLOR2 = PIECES_COLORS_2[0]
Simplifying expression containing zero render_score::score_bytes in [174] render_bcd::bcd#2 = render_score::score_bytes[0]
Simplifying expression containing zero SPRITES_YPOS in [350] SPRITES_YPOS[0] = sprites_irq::ypos#0
Simplifying expression containing zero PLAYFIELD_SPRITE_PTRS_1 in [361] PLAYFIELD_SPRITE_PTRS_1[0] = sprites_irq::ptr#0
Simplifying expression containing zero PLAYFIELD_SPRITE_PTRS_2 in [367] PLAYFIELD_SPRITE_PTRS_2[0] = sprites_irq::ptr#0
Simplifying expression containing zero MOVEDOWN_SLOW_SPEEDS in [413] current_movedown_slow#0 = MOVEDOWN_SLOW_SPEEDS[level#10]
Simplifying expression containing zero play_movement::$0 in [429] play_movement::render#1 = play_movement::render#0 + play_movement::$0
Simplifying expression containing zero current_piece#4 in [612] current_piece_gfx#7 = current_piece#4 + current_orientation#7
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating unused variable render_bcd::screen_pos#1 and assignment [141] render_bcd::screen_pos#1 = ++ render_bcd::screen_pos#3
Eliminating unused variable - keeping the phi block keyboard_modifiers#17
Eliminating unused constant render_show::d018val#0
Eliminating unused constant render_score::screen#0
Eliminating unused constant render_next::screen_next_area#0
Eliminating unused constant play_movement::render#0
Eliminating unused constant play_move_rotate::orientation#0
Eliminating unused constant main::render#0
Eliminating unused constant OFFSET_STRUCT_MOS6526_CIA_PORT_A
Eliminating unused constant current_piece_gfx#13
Eliminating unused constant current_piece_char#10
Eliminating unused constant current_xpos#108
Eliminating unused constant current_ypos#11
Eliminating unused constant render_screen_render#31
Eliminating unused constant render_screen_show#26
Eliminating unused constant current_piece#10
Eliminating unused constant current_orientation#13
Eliminating unused constant current_movedown_slow#14
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused variable - keeping the phi block keyboard_modifiers#15
Eliminating unused constant keyboard_modifiers#26
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused variable keyboard_modifiers#4 and assignment [52] keyboard_modifiers#4 = keyboard_modifiers#14 | KEY_MODIFIER_COMMODORE
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused variable - keeping the phi block keyboard_modifiers#14
Eliminating unused constant KEY_MODIFIER_COMMODORE
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused variable keyboard_modifiers#3 and assignment [51] keyboard_modifiers#3 = keyboard_modifiers#13 | KEY_MODIFIER_CTRL
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused variable - keeping the phi block keyboard_modifiers#13
Eliminating unused constant KEY_MODIFIER_CTRL
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused variable keyboard_modifiers#2 and assignment [45] keyboard_modifiers#2 = keyboard_modifiers#12 | KEY_MODIFIER_RSHIFT
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused variable - keeping the phi block keyboard_modifiers#12
Eliminating unused constant KEY_MODIFIER_RSHIFT
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused variable keyboard_modifiers#1 and assignment [39] keyboard_modifiers#1 = KEY_MODIFIER_LSHIFT
Eliminating unused constant keyboard_modifiers#0
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant KEY_MODIFIER_LSHIFT
Successful SSA optimization PassNEliminateUnusedVars
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Adding number conversion cast (unumber) 8 in if(keyboard_event_scan::row#1!=8) goto keyboard_event_scan::@7
Adding number conversion cast (unumber) 8 in if(keyboard_event_scan::col#1!=8) goto keyboard_event_scan::@10
Adding number conversion cast (unumber) PLAYFIELD_LINES-1+1 in if(render_init::i#1!=PLAYFIELD_LINES-1+1) goto render_init::@1
Adding number conversion cast (unumber) 1 in if(render_init::i#1!=(unumber)PLAYFIELD_LINES-1+1) goto render_init::@1
Adding number conversion cast (unumber) $19 in if(render_screen_original::y#1!=$19) goto render_screen_original::@1
Adding number conversion cast (unumber) PLAYFIELD_COLS-1+1 in if(render_playfield::c#1!=PLAYFIELD_COLS-1+1) goto render_playfield::@2
Adding number conversion cast (unumber) 1 in if(render_playfield::c#1!=(unumber)PLAYFIELD_COLS-1+1) goto render_playfield::@2
Adding number conversion cast (unumber) PLAYFIELD_LINES-1+1 in if(render_playfield::l#1!=PLAYFIELD_LINES-1+1) goto render_playfield::@1
Adding number conversion cast (unumber) 1 in if(render_playfield::l#1!=(unumber)PLAYFIELD_LINES-1+1) goto render_playfield::@1
Adding number conversion cast (unumber) 1+1 in if(render_moving::ypos#2>=1+1) goto render_moving::@2
Adding number conversion cast (unumber) 1 in if(render_moving::ypos#2>=(unumber)1+1) goto render_moving::@2
Adding number conversion cast (unumber) 4 in if(render_moving::l#1!=4) goto render_moving::@1
Adding number conversion cast (unumber) 4 in if(render_moving::c#1!=4) goto render_moving::@4
Adding number conversion cast (unumber) 4 in if(render_next::c#1!=4) goto render_next::@5
Adding number conversion cast (unumber) 4 in if(render_next::l#1!=4) goto render_next::@4
Adding number conversion cast (unumber) 4 in if(sprites_init::s#1!=4) goto sprites_init::@1
Adding number conversion cast (unumber) PLAYFIELD_LINES-1+1 in if(play_init::j#1!=PLAYFIELD_LINES-1+1) goto play_init::@1
Adding number conversion cast (unumber) 1 in if(play_init::j#1!=(unumber)PLAYFIELD_LINES-1+1) goto play_init::@1
Adding number conversion cast (unumber) 5 in if(play_init::b#1!=5) goto play_init::@3
Adding number conversion cast (unumber) 4 in if(play_collision::c#1!=4) goto play_collision::@2
Adding number conversion cast (unumber) 4 in if(play_collision::l#1!=4) goto play_collision::@1
Adding number conversion cast (unumber) 4 in if(play_lock_current::c#1!=4) goto play_lock_current::@2
Adding number conversion cast (unumber) 4 in if(play_lock_current::l#1!=4) goto play_lock_current::@1
Adding number conversion cast (unumber) PLAYFIELD_COLS-1+1 in if(play_remove_lines::x#1!=PLAYFIELD_COLS-1+1) goto play_remove_lines::@2
Adding number conversion cast (unumber) 1 in if(play_remove_lines::x#1!=(unumber)PLAYFIELD_COLS-1+1) goto play_remove_lines::@2
Adding number conversion cast (unumber) PLAYFIELD_LINES-1+1 in if(play_remove_lines::y#1!=PLAYFIELD_LINES-1+1) goto play_remove_lines::@1
Adding number conversion cast (unumber) 1 in if(play_remove_lines::y#1!=(unumber)PLAYFIELD_LINES-1+1) goto play_remove_lines::@1
Adding number conversion cast (unumber) $1d+1 in if(level#22>=$1d+1) goto play_increase_level::@1
Adding number conversion cast (unumber) 1 in if(level#22>=(unumber)$1d+1) goto play_increase_level::@1
Adding number conversion cast (unumber) 5 in if(play_increase_level::b#1!=5) goto play_increase_level::@6
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast PLAYFIELD_COLS*2
Simplifying constant integer cast SPRITES_FIRST_YPOS+$13
Simplifying constant integer cast PLAYFIELD_LINES*PLAYFIELD_COLS-1
Simplifying constant integer cast PLAYFIELD_LINES*PLAYFIELD_COLS-1
Simplifying constant integer cast 8
Simplifying constant integer cast 8
Simplifying constant integer cast PLAYFIELD_LINES-1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $19
Simplifying constant integer cast PLAYFIELD_COLS-1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast PLAYFIELD_LINES-1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast 1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast PLAYFIELD_LINES-1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast 5
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast PLAYFIELD_COLS-1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast PLAYFIELD_LINES-1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $1d+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast 5
Simplifying constant integer cast SPRITES_FIRST_YPOS+$15
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $19
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 5
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Alias candidate removed (volatile)sprites_irq::toSpritePtr1_return#0 = sprites_irq::toSpritePtr1_return#1 sprites_irq::$5 irq_sprite_ptr __start::__init1_$1
Alias render_init::$5 = render_init::$4
Alias play_movement::render#1 = play_movement::$0
Alias current_piece_gfx#7 = current_piece#4
Alias main::render#1 = main::render#2
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Alias candidate removed (volatile)sprites_irq::toSpritePtr1_return#0 = sprites_irq::toSpritePtr1_return#1 sprites_irq::$5 irq_sprite_ptr __start::__init1_$1
Identical Phi Values current_movedown_slow#58 current_movedown_slow#22
Identical Phi Values current_piece#53 current_piece#16
Identical Phi Values current_piece_char#50 current_piece_char#17
Identical Phi Values current_orientation#61 current_orientation#18
Identical Phi Values current_piece_gfx#104 current_piece_gfx#19
Identical Phi Values current_xpos#106 current_xpos#2
Identical Phi Values current_ypos#33 current_ypos#20
Identical Phi Values game_over#44 game_over#16
Identical Phi Values next_piece_idx#45 next_piece_idx#17
Identical Phi Values current_movedown_counter#33 current_movedown_counter#15
Identical Phi Values lines_bcd#43 lines_bcd#16
Identical Phi Values level#101 level#18
Identical Phi Values level_bcd#53 level_bcd#18
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [59] render_init::vicSelectGfxBank1_toDd001_$0 = > (word)render_init::vicSelectGfxBank1_gfx#0
Constant right-side identified [81] render_show::toD0181_$0 = render_show::toD0181_$7 & $3fff
Constant right-side identified [84] render_show::toD0181_$3 = > (word)render_show::toD0181_gfx#0
Constant right-side identified [88] render_show::toD0182_$0 = render_show::toD0182_$7 & $3fff
Constant right-side identified [91] render_show::toD0182_$3 = > (word)render_show::toD0182_gfx#0
Constant right-side identified [272] sprites_irq::toSpritePtr1_$0 = sprites_irq::toSpritePtr1_$1 / $40
Constant right-side identified [328] play_move_down::movedown#1 = ++ play_move_down::movedown#0
Constant right-side identified [538] __start::__init1_toSpritePtr1_$0 = __start::__init1_toSpritePtr1_$1 / $40
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant render_init::vicSelectGfxBank1_toDd001_$0 = >(word)render_init::vicSelectGfxBank1_gfx#0
Constant render_show::toD0181_$0 = render_show::toD0181_$7&$3fff
Constant render_show::toD0181_$3 = >(word)render_show::toD0181_gfx#0
Constant render_show::toD0182_$0 = render_show::toD0182_$7&$3fff
Constant render_show::toD0182_$3 = >(word)render_show::toD0182_gfx#0
Constant sprites_irq::toSpritePtr1_$0 = sprites_irq::toSpritePtr1_$1/$40
Constant play_move_down::movedown#1 = ++play_move_down::movedown#0
Constant __start::__init1_toSpritePtr1_$0 = __start::__init1_toSpritePtr1_$1/$40
Successful SSA optimization Pass2ConstantIdentification
Constant sprites_irq::toSpritePtr1_return#0 = (byte)sprites_irq::toSpritePtr1_$0
Constant __start::__init1_toSpritePtr1_return#0 = (byte)__start::__init1_toSpritePtr1_$0
Successful SSA optimization Pass2ConstantIdentification
Constant sprites_irq::toSpritePtr1_return#1 = sprites_irq::toSpritePtr1_return#0
Successful SSA optimization Pass2ConstantIdentification
Constant sprites_irq::$5 = sprites_irq::toSpritePtr1_return#1
Successful SSA optimization Pass2ConstantIdentification
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Alias candidate removed (volatile)irq_sprite_ptr = __start::__init1_$1
Constant right-side identified [59] render_init::vicSelectGfxBank1_toDd001_$1 = render_init::vicSelectGfxBank1_toDd001_$0 / $40
Constant right-side identified [80] render_show::toD0181_$1 = render_show::toD0181_$0 * 4
Constant right-side identified [82] render_show::toD0181_$4 = render_show::toD0181_$3 / 4
Constant right-side identified [85] render_show::toD0182_$1 = render_show::toD0182_$0 * 4
Constant right-side identified [87] render_show::toD0182_$4 = render_show::toD0182_$3 / 4
Constant right-side identified [527] __start::__init1_$1 = __start::__init1_toSpritePtr1_return#0 + 3
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant render_init::vicSelectGfxBank1_toDd001_$1 = render_init::vicSelectGfxBank1_toDd001_$0/$40
Constant render_show::toD0181_$1 = render_show::toD0181_$0*4
Constant render_show::toD0181_$4 = render_show::toD0181_$3/4
Constant render_show::toD0182_$1 = render_show::toD0182_$0*4
Constant render_show::toD0182_$4 = render_show::toD0182_$3/4
Constant __start::__init1_$1 = __start::__init1_toSpritePtr1_return#0+3
Successful SSA optimization Pass2ConstantIdentification
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Constant right-side identified [59] render_init::vicSelectGfxBank1_toDd001_return#0 = 3 ^ render_init::vicSelectGfxBank1_toDd001_$1
Constant right-side identified [79] render_show::toD0181_$2 = > render_show::toD0181_$1
Constant right-side identified [80] render_show::toD0181_$5 = render_show::toD0181_$4 & $f
Constant right-side identified [82] render_show::toD0182_$2 = > render_show::toD0182_$1
Constant right-side identified [83] render_show::toD0182_$5 = render_show::toD0182_$4 & $f
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant render_init::vicSelectGfxBank1_toDd001_return#0 = 3^render_init::vicSelectGfxBank1_toDd001_$1
Constant render_show::toD0181_$2 = >render_show::toD0181_$1
Constant render_show::toD0181_$5 = render_show::toD0181_$4&$f
Constant render_show::toD0182_$2 = >render_show::toD0182_$1
Constant render_show::toD0182_$5 = render_show::toD0182_$4&$f
Successful SSA optimization Pass2ConstantIdentification
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Constant right-side identified [78] render_show::toD0181_return#0 = render_show::toD0181_$2 | render_show::toD0181_$5
Constant right-side identified [79] render_show::toD0182_return#0 = render_show::toD0182_$2 | render_show::toD0182_$5
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant render_show::toD0181_return#0 = render_show::toD0181_$2|render_show::toD0181_$5
Constant render_show::toD0182_return#0 = render_show::toD0182_$2|render_show::toD0182_$5
Successful SSA optimization Pass2ConstantIdentification
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Inlining Noop Cast [188] render_next::next_piece_gfx#0 = (byte*)PIECES[render_next::$6] keeping PIECES[render_next::$6]
Inlining Noop Cast [410] current_piece_gfx#7 = (byte*)PIECES[play_spawn_current::$7] keeping PIECES[play_spawn_current::$7]
Successful SSA optimization Pass2NopCastInlining
Rewriting multiplication to use shift [69] render_init::$5 = render_init::i#2 * SIZEOF_POINTER
Rewriting multiplication to use shift [151] render_playfield::$3 = render_playfield::$0 * SIZEOF_POINTER
Rewriting multiplication to use shift [167] render_moving::$6 = render_moving::$1 * SIZEOF_POINTER
Rewriting multiplication to use shift [187] render_next::$6 = next_piece_idx#13 * SIZEOF_WORD
Rewriting multiplication to use shift [209] sprites_init::s2#0 = sprites_init::s#2 * 2
Rewriting multiplication to use shift [268] play_init::$2 = play_init::j#2 * SIZEOF_POINTER
Rewriting multiplication to use shift [278] play_init::$3 = play_init::b#2 * SIZEOF_DWORD
Rewriting multiplication to use shift [373] play_collision::$14 = play_collision::yp#2 * SIZEOF_POINTER
Rewriting multiplication to use shift [393] play_lock_current::$4 = play_lock_current::yp#2 * SIZEOF_POINTER
Rewriting multiplication to use shift [409] play_spawn_current::$7 = play_spawn_current::current_piece_idx#0 * SIZEOF_WORD
Rewriting multiplication to use shift [451] play_update_score::$9 = play_update_score::removed#0 * SIZEOF_DWORD
Rewriting multiplication to use shift [474] play_increase_level::$5 = play_increase_level::b#2 * SIZEOF_DWORD
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings keyboard_event_scan::keycode#0
Inlining constant with var siblings keyboard_event_scan::row#0
Inlining constant with var siblings keyboard_event_scan::col#0
Inlining constant with var siblings keyboard_event_pressed::keycode#0
Inlining constant with var siblings keyboard_event_pressed::keycode#1
Inlining constant with var siblings keyboard_event_pressed::keycode#2
Inlining constant with var siblings keyboard_event_pressed::keycode#3
Inlining constant with var siblings keyboard_event_pressed::keycode#4
Inlining constant with var siblings keyboard_event_get::return#0
Inlining constant with var siblings render_init::li_1#0
Inlining constant with var siblings render_init::li_2#0
Inlining constant with var siblings render_init::i#0
Inlining constant with var siblings render_score::screen#1
Inlining constant with var siblings render_score::screen#2
Inlining constant with var siblings render_bcd::offset#0
Inlining constant with var siblings render_bcd::only_low#0
Inlining constant with var siblings render_bcd::offset#1
Inlining constant with var siblings render_bcd::only_low#1
Inlining constant with var siblings render_bcd::offset#2
Inlining constant with var siblings render_bcd::only_low#2
Inlining constant with var siblings render_bcd::offset#3
Inlining constant with var siblings render_bcd::only_low#3
Inlining constant with var siblings render_bcd::offset#4
Inlining constant with var siblings render_bcd::only_low#4
Inlining constant with var siblings render_bcd::offset#5
Inlining constant with var siblings render_bcd::only_low#5
Inlining constant with var siblings render_screen_original::screen#0
Inlining constant with var siblings render_screen_original::screen#1
Inlining constant with var siblings render_screen_original::oscr#0
Inlining constant with var siblings render_screen_original::ocols#0
Inlining constant with var siblings render_screen_original::cols#0
Inlining constant with var siblings render_screen_original::y#0
Inlining constant with var siblings render_screen_original::x#0
Inlining constant with var siblings render_playfield::i#0
Inlining constant with var siblings render_playfield::l#0
Inlining constant with var siblings render_playfield::c#0
Inlining constant with var siblings render_moving::i#0
Inlining constant with var siblings render_moving::l#0
Inlining constant with var siblings render_moving::c#0
Inlining constant with var siblings render_next::screen_next_area#1
Inlining constant with var siblings render_next::screen_next_area#2
Inlining constant with var siblings render_next::l#0
Inlining constant with var siblings render_next::c#0
Inlining constant with var siblings sprites_init::xpos#0
Inlining constant with var siblings sprites_init::s#0
Inlining constant with different constant siblings sprites_irq::toSpritePtr1_return#1
Inlining constant with var siblings play_init::idx#0
Inlining constant with var siblings play_init::pli#0
Inlining constant with var siblings play_init::j#0
Inlining constant with var siblings play_init::b#0
Inlining constant with var siblings play_move_down::movedown#0
Inlining constant with var siblings play_move_down::return#1
Inlining constant with var siblings play_move_down::return#2
Inlining constant with var siblings play_move_down::movedown#1
Inlining constant with var siblings play_move_leftright::return#1
Inlining constant with var siblings play_move_leftright::return#3
Inlining constant with var siblings play_move_leftright::return#4
Inlining constant with var siblings play_move_rotate::return#1
Inlining constant with var siblings play_move_rotate::return#3
Inlining constant with var siblings play_move_rotate::return#4
Inlining constant with var siblings play_collision::i#0
Inlining constant with var siblings play_collision::l#0
Inlining constant with var siblings play_collision::c#0
Inlining constant with var siblings play_collision::return#4
Inlining constant with var siblings play_collision::return#6
Inlining constant with var siblings play_collision::return#7
Inlining constant with var siblings play_collision::return#8
Inlining constant with var siblings play_collision::return#9
Inlining constant with var siblings play_collision::orientation#4
Inlining constant with var siblings play_lock_current::i#0
Inlining constant with var siblings play_lock_current::l#0
Inlining constant with var siblings play_lock_current::c#0
Inlining constant with var siblings play_spawn_current::piece_idx#0
Inlining constant with var siblings play_remove_lines::r#0
Inlining constant with var siblings play_remove_lines::w#0
Inlining constant with var siblings play_remove_lines::removed#0
Inlining constant with var siblings play_remove_lines::y#0
Inlining constant with var siblings play_remove_lines::full#0
Inlining constant with var siblings play_remove_lines::x#0
Inlining constant with var siblings play_remove_lines::full#1
Inlining constant with var siblings play_increase_level::b#0
Inlining constant with var siblings render_screen_show#0
Inlining constant with var siblings render_screen_render#0
Inlining constant with var siblings current_movedown_counter#3
Inlining constant with var siblings current_orientation#7
Inlining constant with var siblings game_over#4
Inlining constant with var siblings current_movedown_slow#8
Inlining constant with var siblings keyboard_events_size#30
Inlining constant with var siblings lines_bcd#34
Inlining constant with var siblings level_bcd#11
Inlining constant with var siblings level#10
Inlining constant with var siblings game_over#10
Inlining constant with var siblings next_piece_idx#10
Inlining constant with var siblings current_movedown_counter#28
Constant inlined play_remove_lines::x#0 = 0
Constant inlined play_init::pli#0 = playfield
Constant inlined render_show::toD0182_$0 = (word)PLAYFIELD_SCREEN_2&$3fff
Constant inlined play_move_rotate::return#1 = 0
Constant inlined render_show::toD0182_$1 = (word)PLAYFIELD_SCREEN_2&$3fff*4
Constant inlined play_move_rotate::return#4 = 1
Constant inlined sprites_irq::toSpritePtr1_sprite#0 = PLAYFIELD_SPRITES
Constant inlined render_show::toD0182_$2 = >(word)PLAYFIELD_SCREEN_2&$3fff*4
Constant inlined play_move_rotate::return#3 = 0
Constant inlined game_over#10 = 0
Constant inlined current_movedown_counter#3 = 0
Constant inlined render_screen_original::screen#1 = PLAYFIELD_SCREEN_2
Constant inlined keyboard_events_size#30 = 0
Constant inlined render_screen_original::screen#0 = PLAYFIELD_SCREEN_1
Constant inlined render_init::vicSelectGfxBank1_toDd001_$1 = >(word)PLAYFIELD_CHARSET/$40
Constant inlined render_init::vicSelectGfxBank1_toDd001_$0 = >(word)PLAYFIELD_CHARSET
Constant inlined render_show::toD0182_$3 = >(word)PLAYFIELD_CHARSET
Constant inlined render_show::toD0182_$4 = >(word)PLAYFIELD_CHARSET/4
Constant inlined render_show::toD0182_$5 = >(word)PLAYFIELD_CHARSET/4&$f
Constant inlined __start::__init1_toSpritePtr1_sprite#0 = PLAYFIELD_SPRITES
Constant inlined render_show::toD0182_$7 = (word)PLAYFIELD_SCREEN_2
Constant inlined render_screen_original::y#0 = 0
Constant inlined render_playfield::i#0 = PLAYFIELD_COLS*2
Constant inlined current_movedown_slow#8 = 1
Constant inlined lines_bcd#34 = 0
Constant inlined level_bcd#11 = 0
Constant inlined play_collision::i#0 = 0
Constant inlined render_bcd::offset#0 = render_score::score_offset
Constant inlined render_bcd::offset#1 = render_score::score_offset+2
Constant inlined render_bcd::offset#4 = render_score::lines_offset+1
Constant inlined render_bcd::offset#5 = render_score::level_offset
Constant inlined render_bcd::offset#2 = render_score::score_offset+4
Constant inlined render_bcd::offset#3 = render_score::lines_offset
Constant inlined render_show::toD0182_gfx#0 = PLAYFIELD_CHARSET
Constant inlined play_lock_current::i#0 = 0
Constant inlined play_remove_lines::y#0 = 0
Constant inlined render_next::screen_next_area#1 = PLAYFIELD_SCREEN_1+render_next::next_area_offset
Constant inlined render_next::screen_next_area#2 = PLAYFIELD_SCREEN_2+render_next::next_area_offset
Constant inlined keyboard_event_scan::col#0 = 0
Constant inlined next_piece_idx#10 = 0
Constant inlined sprites_irq::$5 = sprites_irq::toSpritePtr1_return#0
Constant inlined render_show::toD0181_screen#0 = PLAYFIELD_SCREEN_1
Constant inlined current_orientation#7 = 0
Constant inlined render_playfield::l#0 = 2
Constant inlined render_moving::c#0 = 0
Constant inlined render_screen_original::x#0 = 0
Constant inlined render_bcd::only_low#0 = 0
Constant inlined render_bcd::only_low#1 = 0
Constant inlined render_bcd::only_low#2 = 0
Constant inlined keyboard_event_pressed::keycode#4 = KEY_SPACE
Constant inlined render_bcd::only_low#3 = 1
Constant inlined render_bcd::only_low#4 = 0
Constant inlined render_bcd::only_low#5 = 0
Constant inlined __start::__init1_toSpritePtr1_$0 = (word)PLAYFIELD_SPRITES/$40
Constant inlined __start::__init1_toSpritePtr1_$1 = (word)PLAYFIELD_SPRITES
Constant inlined game_over#4 = 1
Constant inlined keyboard_event_pressed::keycode#3 = KEY_COMMODORE
Constant inlined keyboard_event_pressed::keycode#2 = KEY_CTRL
Constant inlined render_init::i#0 = 0
Constant inlined keyboard_event_pressed::keycode#1 = KEY_RSHIFT
Constant inlined keyboard_event_pressed::keycode#0 = KEY_LSHIFT
Constant inlined play_collision::return#7 = COLLISION_RIGHT
Constant inlined play_collision::return#6 = COLLISION_LEFT
Constant inlined play_collision::return#4 = COLLISION_BOTTOM
Constant inlined play_move_down::return#2 = 1
Constant inlined play_move_down::return#1 = 0
Constant inlined render_init::vicSelectGfxBank1_gfx#0 = PLAYFIELD_CHARSET
Constant inlined play_collision::return#9 = COLLISION_NONE
Constant inlined play_collision::return#8 = COLLISION_PLAYFIELD
Constant inlined render_next::l#0 = 0
Constant inlined play_remove_lines::r#0 = PLAYFIELD_LINES*PLAYFIELD_COLS-1
Constant inlined sprites_init::xpos#0 = (byte)$18+$f*8
Constant inlined render_screen_render#0 = $20
Constant inlined play_lock_current::l#0 = 0
Constant inlined level#10 = 0
Constant inlined render_show::toD0181_gfx#0 = PLAYFIELD_CHARSET
Constant inlined render_playfield::c#0 = 0
Constant inlined play_spawn_current::piece_idx#0 = 7
Constant inlined play_remove_lines::removed#0 = 0
Constant inlined play_remove_lines::full#1 = 0
Constant inlined play_remove_lines::full#0 = 1
Constant inlined sprites_irq::toSpritePtr1_return#1 = sprites_irq::toSpritePtr1_return#0
Constant inlined sprites_init::s#0 = 0
Constant inlined render_moving::l#0 = 0
Constant inlined play_move_leftright::return#1 = 1
Constant inlined play_move_leftright::return#4 = 1
Constant inlined play_move_leftright::return#3 = 0
Constant inlined render_show::toD0181_$1 = (word)PLAYFIELD_SCREEN_1&$3fff*4
Constant inlined render_show::toD0181_$0 = (word)PLAYFIELD_SCREEN_1&$3fff
Constant inlined sprites_irq::toSpritePtr1_$1 = (word)PLAYFIELD_SPRITES
Constant inlined sprites_irq::toSpritePtr1_$0 = (word)PLAYFIELD_SPRITES/$40
Constant inlined keyboard_event_scan::keycode#0 = 0
Constant inlined play_collision::c#0 = 0
Constant inlined render_show::toD0181_$7 = (word)PLAYFIELD_SCREEN_1
Constant inlined render_show::toD0181_$5 = >(word)PLAYFIELD_CHARSET/4&$f
Constant inlined render_show::toD0181_$4 = >(word)PLAYFIELD_CHARSET/4
Constant inlined current_movedown_counter#28 = 0
Constant inlined render_show::toD0181_$3 = >(word)PLAYFIELD_CHARSET
Constant inlined render_show::toD0181_$2 = >(word)PLAYFIELD_SCREEN_1&$3fff*4
Constant inlined __start::__init1_$1 = __start::__init1_toSpritePtr1_return#0+3
Constant inlined render_init::li_2#0 = PLAYFIELD_SCREEN_2+(byte)2*$28+$10
Constant inlined play_move_down::movedown#1 = ++0
Constant inlined play_move_down::movedown#0 = 0
Constant inlined play_remove_lines::w#0 = PLAYFIELD_LINES*PLAYFIELD_COLS-1
Constant inlined play_init::j#0 = 0
Constant inlined render_screen_original::ocols#0 = PLAYFIELD_COLORS_ORIGINAL+(byte)$20*2
Constant inlined play_lock_current::c#0 = 0
Constant inlined keyboard_event_scan::row#0 = 0
Constant inlined play_init::b#0 = 0
Constant inlined render_next::c#0 = 0
Constant inlined play_init::idx#0 = 0
Constant inlined play_collision::orientation#4 = 0
Constant inlined render_moving::i#0 = 0
Constant inlined render_show::toD0182_screen#0 = PLAYFIELD_SCREEN_2
Constant inlined render_screen_original::oscr#0 = PLAYFIELD_SCREEN_ORIGINAL+(byte)$20*2
Constant inlined render_score::screen#1 = PLAYFIELD_SCREEN_1
Constant inlined play_increase_level::b#0 = 0
Constant inlined render_screen_show#0 = 0
Constant inlined render_score::screen#2 = PLAYFIELD_SCREEN_2
Constant inlined play_collision::l#0 = 0
Constant inlined keyboard_event_get::return#0 = $ff
Constant inlined render_init::li_1#0 = PLAYFIELD_SCREEN_1+(byte)2*$28+$10
Constant inlined render_screen_original::cols#0 = COLS
Successful SSA optimization Pass2ConstantInlining
Consolidated array index constant in *(render_score::score_bytes+2)
Consolidated array index constant in *(render_score::score_bytes+1)
Consolidated array index constant in *(SPRITES_YPOS+2)
Consolidated array index constant in *(SPRITES_YPOS+4)
Consolidated array index constant in *(SPRITES_YPOS+6)
Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_1+1)
Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_1+2)
Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_1+3)
Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2+1)
Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2+2)
Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2+3)
Consolidated array index constant in *(playfield_lines_idx+PLAYFIELD_LINES)
Successful SSA optimization Pass2ConstantAdditionElimination
Simplifying constant integer increment ++0
Successful SSA optimization Pass2ConstantSimplification
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Eliminating unused constant SIZEOF_POINTER
Eliminating unused constant SIZEOF_WORD
Eliminating unused constant SIZEOF_DWORD
Successful SSA optimization PassNEliminateUnusedVars
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) $1e
Finalized unsigned number type (byte) $40
Finalized unsigned number type (word) $3000
Finalized unsigned number type (word) $2800
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) $1c
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $16
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $13
Finalized unsigned number type (byte) $1f
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $c
Finalized unsigned number type (byte) $18
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $20
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $20
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $18
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 8
Successful SSA optimization PassNFinalizeNumberTypeConversions
Simplifying constant integer cast 2*$28
Simplifying constant integer cast 2*$28
Simplifying constant integer cast $20*2
Simplifying constant integer cast $20*2
Simplifying constant integer cast $18+$f*8
Successful SSA optimization PassNCastSimplification
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
Added new block during phi lifting keyboard_event_scan::@25(between keyboard_event_scan::@9 and keyboard_event_scan::@7)
Added new block during phi lifting keyboard_event_scan::@26(between keyboard_event_scan::@11 and keyboard_event_scan::@10)
Added new block during phi lifting keyboard_event_scan::@27(between keyboard_event_scan::@10 and keyboard_event_scan::@11)
Added new block during phi lifting keyboard_event_scan::@28(between keyboard_event_scan::@13 and keyboard_event_scan::@11)
Added new block during phi lifting render_init::@6(between render_init::@1 and render_init::@1)
Added new block during phi lifting render_bcd::@3(between render_bcd and render_bcd::@1)
Added new block during phi lifting render_screen_original::@6(between render_screen_original::@5 and render_screen_original::@1)
Added new block during phi lifting render_screen_original::@7(between render_screen_original::@2 and render_screen_original::@2)
Added new block during phi lifting render_screen_original::@8(between render_screen_original::@2 and render_screen_original::@3)
Added new block during phi lifting render_screen_original::@9(between render_screen_original::@3 and render_screen_original::@3)
Added new block during phi lifting render_screen_original::@10(between render_screen_original::@3 and render_screen_original::@4)
Added new block during phi lifting render_screen_original::@11(between render_screen_original::@4 and render_screen_original::@4)
Added new block during phi lifting render_playfield::@4(between render_playfield::@3 and render_playfield::@1)
Added new block during phi lifting render_playfield::@5(between render_playfield::@2 and render_playfield::@2)
Added new block during phi lifting render_moving::@8(between render_moving::@3 and render_moving::@1)
Added new block during phi lifting render_moving::@9(between render_moving::@5 and render_moving::@3)
Added new block during phi lifting render_moving::@10(between render_moving::@5 and render_moving::@4)
Added new block during phi lifting render_next::@10(between render_next::@9 and render_next::@4)
Added new block during phi lifting render_next::@11(between render_next::@7 and render_next::@5)
Added new block during phi lifting sprites_init::@2(between sprites_init::@1 and sprites_init::@1)
Added new block during phi lifting play_init::@4(between play_init::@1 and play_init::@1)
Added new block during phi lifting play_init::@5(between play_init::@3 and play_init::@3)
Added new block during phi lifting play_move_down::@19(between play_move_down::@13 and play_move_down::@2)
Added new block during phi lifting play_move_down::@20(between play_move_down::@6 and play_move_down::@2)
Added new block during phi lifting play_move_down::@21(between play_move_down::@2 and play_move_down::@3)
Added new block during phi lifting play_collision::@14(between play_collision::@12 and play_collision::@1)
Added new block during phi lifting play_collision::@15(between play_collision::@3 and play_collision::@2)
Added new block during phi lifting play_lock_current::@6(between play_lock_current::@5 and play_lock_current::@1)
Added new block during phi lifting play_lock_current::@7(between play_lock_current::@3 and play_lock_current::@2)
Added new block during phi lifting play_spawn_current::@7(between play_spawn_current::@6 and play_spawn_current::@1)
Added new block during phi lifting play_remove_lines::@11(between play_remove_lines::@7 and play_remove_lines::@1)
Added new block during phi lifting play_remove_lines::@12(between play_remove_lines::@3 and play_remove_lines::@2)
Added new block during phi lifting play_remove_lines::@13(between play_remove_lines::@2 and play_remove_lines::@3)
Added new block during phi lifting play_remove_lines::@14(between play_remove_lines::@5 and play_remove_lines::@7)
Added new block during phi lifting play_remove_lines::@15(between play_remove_lines::@7 and play_remove_lines::@8)
Added new block during phi lifting play_update_score::@4(between play_update_score and play_update_score::@return)
Added new block during phi lifting play_update_score::@5(between play_update_score::@1 and play_update_score::@return)
Added new block during phi lifting play_increase_level::@8(between play_increase_level::@2 and play_increase_level::@3)
Added new block during phi lifting play_increase_level::@9(between play_increase_level::@6 and play_increase_level::@6)
Added new block during phi lifting main::@28(between main::@7 and main::@1)
Adding NOP phi() at start of __start
Adding NOP phi() at start of __start::__init1_toSpritePtr1
Adding NOP phi() at start of __start::__init1_toSpritePtr1_@return
Adding NOP phi() at start of __start::@1
Adding NOP phi() at start of __start::@2
Adding NOP phi() at start of sprites_irq::toSpritePtr1
Adding NOP phi() at start of sprites_irq::toSpritePtr1_@return
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@10
Adding NOP phi() at start of main::@11
Adding NOP phi() at start of main::@12
Adding NOP phi() at start of main::@13
Adding NOP phi() at start of main::@15
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@19
Adding NOP phi() at start of main::@20
Adding NOP phi() at start of main::@5
Adding NOP phi() at start of main::@25
Adding NOP phi() at start of main::@26
Adding NOP phi() at start of render_init
Adding NOP phi() at start of render_init::vicSelectGfxBank1_toDd001
Adding NOP phi() at start of render_init::vicSelectGfxBank1_toDd001_@return
Adding NOP phi() at start of render_init::@4
Adding NOP phi() at start of render_init::@5
Adding NOP phi() at start of render_init::@2
Adding NOP phi() at start of play_init
Adding NOP phi() at start of play_spawn_current::@2
Adding NOP phi() at start of play_spawn_current::sid_rnd1_@return
Adding NOP phi() at start of render_next::@3
Adding NOP phi() at start of render_next::@1
Adding NOP phi() at start of render_show::@3
Adding NOP phi() at start of render_show::toD0182
Adding NOP phi() at start of render_show::toD0182_@return
Adding NOP phi() at start of render_show::@5
Adding NOP phi() at start of render_show::@1
Adding NOP phi() at start of render_show::toD0181
Adding NOP phi() at start of render_show::toD0181_@return
Adding NOP phi() at start of render_show::@4
Adding NOP phi() at start of keyboard_event_scan::@18
Adding NOP phi() at start of keyboard_event_scan::@19
Adding NOP phi() at start of keyboard_event_scan::@1
Adding NOP phi() at start of keyboard_event_scan::@4
Adding NOP phi() at start of keyboard_event_scan::@2
Adding NOP phi() at start of keyboard_event_scan::@5
Adding NOP phi() at start of keyboard_event_scan::@3
Adding NOP phi() at start of keyboard_event_scan::@6
Adding NOP phi() at start of render_score::@3
Adding NOP phi() at start of render_score::@9
Adding NOP phi() at start of render_score::@1
Adding NOP phi() at start of play_collision::@11
Adding NOP phi() at start of play_collision::@7
Adding NOP phi() at start of play_collision::@8
Adding NOP phi() at start of play_collision::@9
Adding NOP phi() at start of play_collision::@13
Adding NOP phi() at start of play_move_down::@5
Adding NOP phi() at start of play_move_down::@10
Adding NOP phi() at start of play_move_down::@15
Adding NOP phi() at start of play_remove_lines
Adding NOP phi() at start of play_remove_lines::@4
Adding NOP phi() at start of play_remove_lines::@10
Adding NOP phi() at start of play_update_score::@2
Adding NOP phi() at start of play_increase_level::@1
CALL GRAPH
Calls in [__start] to main:10
Calls in [main] to render_init:58 sprites_init:60 sprites_irq_init:62 play_init:64 play_spawn_current:66 play_spawn_current:69 render_playfield:71 render_moving:76 render_next:78 render_show:90 keyboard_event_scan:92 keyboard_event_get:94 play_movement:101 render_playfield:106 render_moving:112 render_next:115 render_score:117 render_screen_swap:119
Calls in [render_init] to render_screen_original:163 render_screen_original:165
Calls in [play_spawn_current] to play_collision:238
Calls in [keyboard_event_scan] to keyboard_matrix_read:356 keyboard_event_pressed:367 keyboard_event_pressed:373 keyboard_event_pressed:379 keyboard_event_pressed:385
Calls in [play_movement] to play_move_down:431 play_move_leftright:442 play_move_rotate:447
Calls in [render_score] to render_bcd:462 render_bcd:467 render_bcd:472 render_bcd:477 render_bcd:482 render_bcd:487
Calls in [play_move_down] to keyboard_event_pressed:597 play_collision:617 play_lock_current:622 play_remove_lines:624 play_update_score:628 play_spawn_current:631
Calls in [play_move_leftright] to play_collision:696 play_collision:712
Calls in [play_move_rotate] to play_collision:735
Calls in [play_update_score] to play_increase_level:841
Created 167 initial phi equivalence classes
Coalesced [67] next_piece_idx#85 = next_piece_idx#19
Coalesced [68] game_over#89 = game_over#53
Not coalescing [72] current_ypos#97 = current_ypos#5
Not coalescing [73] current_xpos#118 = current_xpos#100
Not coalescing [75] current_piece_char#99 = current_piece_char#4
Not coalescing [77] next_piece_idx#79 = next_piece_idx#19
Coalesced [79] current_movedown_slow#98 = current_movedown_slow#0
Coalesced [81] current_piece_char#105 = current_piece_char#4
Coalesced [83] current_xpos#129 = current_xpos#100
Coalesced [84] current_ypos#103 = current_ypos#5
Coalesced [85] game_over#92 = game_over#53
Coalesced [86] next_piece_idx#87 = next_piece_idx#19
Not coalescing [105] render_screen_render#63 = render_screen_render#19
Not coalescing [107] current_ypos#98 = current_ypos#20
Not coalescing [108] render_screen_render#64 = render_screen_render#19
Not coalescing [109] current_xpos#119 = current_xpos#2
Not coalescing [110] current_piece_gfx#112 = current_piece_gfx#19
Not coalescing [111] current_piece_char#100 = current_piece_char#17
Not coalescing [113] render_screen_render#65 = render_screen_render#19
Not coalescing [114] next_piece_idx#80 = next_piece_idx#17
Coalesced [120] render_screen_show#59 = render_screen_show#14
Coalesced [121] render_screen_render#66 = render_screen_render#12
Coalesced [122] current_movedown_slow#99 = current_movedown_slow#22
Coalesced [123] current_piece#104 = current_piece#16
Coalesced [124] current_piece_char#106 = current_piece_char#17
Coalesced [125] current_orientation#106 = current_orientation#18
Coalesced [126] current_piece_gfx#123 = current_piece_gfx#19
Coalesced [127] current_xpos#130 = current_xpos#2
Coalesced [128] current_ypos#104 = current_ypos#20
Coalesced [129] game_over#93 = game_over#16
Coalesced [130] next_piece_idx#88 = next_piece_idx#17
Coalesced [131] keyboard_events_size#89 = keyboard_events_size#17
Coalesced [132] current_movedown_counter#62 = current_movedown_counter#15
Coalesced [133] lines_bcd#94 = lines_bcd#16
Coalesced [134] level#110 = level#18
Coalesced [135] level_bcd#109 = level_bcd#18
Coalesced (already) [136] render_screen_show#60 = render_screen_show#17
Coalesced (already) [137] render_screen_render#67 = render_screen_render#19
Coalesced (already) [138] current_movedown_slow#100 = current_movedown_slow#22
Coalesced (already) [139] current_piece#105 = current_piece#16
Coalesced (already) [140] current_piece_char#107 = current_piece_char#17
Coalesced (already) [141] current_orientation#107 = current_orientation#18
Coalesced (already) [142] current_piece_gfx#124 = current_piece_gfx#19
Coalesced (already) [143] current_xpos#131 = current_xpos#2
Coalesced (already) [144] current_ypos#105 = current_ypos#20
Coalesced (already) [145] game_over#94 = game_over#16
Coalesced (already) [146] next_piece_idx#89 = next_piece_idx#17
Coalesced (already) [147] keyboard_events_size#90 = keyboard_events_size#17
Coalesced (already) [148] current_movedown_counter#63 = current_movedown_counter#15
Coalesced (already) [149] lines_bcd#95 = lines_bcd#16
Coalesced (already) [150] level#111 = level#18
Coalesced (already) [151] level_bcd#110 = level_bcd#18
Coalesced [177] render_init::i#3 = render_init::i#1
Coalesced [178] render_init::li_1#3 = render_init::li_1#1
Coalesced [179] render_init::li_2#3 = render_init::li_2#1
Coalesced [192] sprites_init::s#3 = sprites_init::s#1
Coalesced [193] sprites_init::xpos#3 = sprites_init::xpos#1
Coalesced [223] play_init::b#3 = play_init::b#1
Coalesced [224] play_init::j#3 = play_init::j#1
Coalesced [225] play_init::pli#3 = play_init::pli#1
Coalesced [226] play_init::idx#3 = play_init::idx#1
Coalesced [236] play_collision::yp#14 = play_collision::ypos#4
Coalesced [237] play_collision::xpos#18 = play_collision::xpos#4
Coalesced [246] next_piece_idx#19 = play_spawn_current::piece_idx#2
Coalesced [251] play_spawn_current::piece_idx#4 = play_spawn_current::piece_idx#1
Coalesced (already) [252] game_over#91 = game_over#66
Coalesced [258] render_playfield::i#6 = render_playfield::i#3
Coalesced [259] render_playfield::screen_line#3 = render_playfield::screen_line#0
Coalesced [269] render_playfield::l#5 = render_playfield::l#1
Coalesced [270] render_playfield::i#5 = render_playfield::i#1
Coalesced (already) [271] render_playfield::i#7 = render_playfield::i#1
Coalesced [272] render_playfield::screen_line#4 = render_playfield::screen_line#1
Coalesced [273] render_playfield::c#3 = render_playfield::c#1
Coalesced [276] render_moving::ypos#9 = render_moving::ypos#0
Coalesced [280] render_moving::i#12 = render_moving::i#1
Coalesced [286] render_moving::ypos#10 = render_moving::ypos#1
Coalesced [287] render_moving::i#10 = render_moving::i#8
Coalesced [288] render_moving::l#9 = render_moving::l#1
Coalesced [293] render_moving::i#13 = render_moving::i#3
Coalesced [294] render_moving::xpos#5 = render_moving::xpos#0
Coalesced [303] render_moving::i#11 = render_moving::i#2
Coalesced (already) [304] render_moving::i#14 = render_moving::i#2
Coalesced [305] render_moving::xpos#6 = render_moving::xpos#1
Coalesced [306] render_moving::c#5 = render_moving::c#1
Coalesced [314] render_next::screen_next_area#12 = render_next::screen_next_area#11
Coalesced [316] render_next::next_piece_gfx#10 = render_next::next_piece_gfx#3
Coalesced [317] render_next::screen_next_area#14 = render_next::screen_next_area#10
Coalesced [330] render_next::next_piece_gfx#9 = render_next::next_piece_gfx#1
Coalesced [331] render_next::screen_next_area#13 = render_next::screen_next_area#4
Coalesced [332] render_next::l#8 = render_next::l#1
Coalesced (already) [333] render_next::next_piece_gfx#11 = render_next::next_piece_gfx#1
Coalesced [334] render_next::screen_next_area#15 = render_next::screen_next_area#3
Coalesced [335] render_next::c#6 = render_next::c#1
Coalesced [353] keyboard_events_size#77 = keyboard_events_size#20
Coalesced [361] keyboard_event_scan::keycode#17 = keyboard_event_scan::keycode#1
Coalesced [362] keyboard_events_size#80 = keyboard_events_size#32
Coalesced [391] keyboard_event_scan::row#14 = keyboard_event_scan::row#1
Coalesced [392] keyboard_event_scan::keycode#15 = keyboard_event_scan::keycode#13
Coalesced (already) [393] keyboard_events_size#78 = keyboard_events_size#14
Coalesced [394] keyboard_event_scan::keycode#19 = keyboard_event_scan::keycode#11
Coalesced [395] keyboard_events_size#82 = keyboard_events_size#32
Coalesced [405] keyboard_events_size#86 = keyboard_events_size#1
Coalesced [411] keyboard_event_scan::keycode#16 = keyboard_event_scan::keycode#14
Coalesced [412] keyboard_events_size#79 = keyboard_events_size#31
Coalesced [413] keyboard_event_scan::col#8 = keyboard_event_scan::col#1
Coalesced (already) [414] keyboard_event_scan::keycode#18 = keyboard_event_scan::keycode#14
Coalesced (already) [415] keyboard_events_size#81 = keyboard_events_size#31
Coalesced [419] keyboard_events_size#84 = keyboard_events_size#0
Coalesced (already) [420] keyboard_events_size#85 = keyboard_events_size#11
Coalesced (already) [421] keyboard_events_size#83 = keyboard_events_size#11
Coalesced [425] keyboard_event_get::return#6 = keyboard_event_get::return#1
Coalesced [426] keyboard_events_size#88 = keyboard_events_size#3
Coalesced (already) [429] keyboard_events_size#87 = keyboard_events_size#14
Coalesced [435] play_movement::return#6 = play_movement::render#1
Coalesced [436] current_orientation#98 = current_orientation#21
Coalesced [437] current_piece_gfx#113 = current_piece_gfx#21
Coalesced [438] current_xpos#120 = current_xpos#23
Coalesced [451] play_movement::return#7 = play_movement::return#0
Coalesced [452] current_orientation#99 = current_orientation#26
Coalesced [453] current_piece_gfx#114 = current_piece_gfx#22
Coalesced [454] current_xpos#121 = current_xpos#27
Coalesced [460] render_bcd::screen#7 = render_bcd::screen#0
Coalesced [461] render_bcd::bcd#9 = render_bcd::bcd#0
Coalesced [465] render_bcd::screen#8 = render_bcd::screen#1
Coalesced [466] render_bcd::bcd#10 = render_bcd::bcd#1
Coalesced [470] render_bcd::screen#9 = render_bcd::screen#2
Coalesced [471] render_bcd::bcd#11 = render_bcd::bcd#2
Coalesced [475] render_bcd::screen#10 = render_bcd::screen#3
Coalesced [476] render_bcd::bcd#12 = render_bcd::bcd#3
Coalesced [480] render_bcd::screen#11 = render_bcd::screen#4
Coalesced [481] render_bcd::bcd#13 = render_bcd::bcd#4
Coalesced [485] render_bcd::screen#12 = render_bcd::screen#5
Coalesced [486] render_bcd::bcd#14 = render_bcd::bcd#5
Coalesced [495] render_screen_original::screen#11 = render_screen_original::screen#9
Coalesced [497] render_screen_original::screen#13 = render_screen_original::screen#8
Coalesced [498] render_screen_original::cols#10 = render_screen_original::cols#7
Coalesced [506] render_screen_original::oscr#8 = render_screen_original::oscr#4
Coalesced [507] render_screen_original::screen#15 = render_screen_original::screen#2
Coalesced [508] render_screen_original::ocols#8 = render_screen_original::ocols#4
Coalesced [509] render_screen_original::cols#12 = render_screen_original::cols#1
Coalesced [510] render_screen_original::x#8 = render_screen_original::x#1
Coalesced [520] render_screen_original::screen#17 = render_screen_original::screen#3
Coalesced [521] render_screen_original::cols#14 = render_screen_original::cols#2
Coalesced [522] render_screen_original::x#10 = render_screen_original::x#2
Coalesced [533] render_screen_original::screen#12 = render_screen_original::screen#10
Coalesced [534] render_screen_original::cols#9 = render_screen_original::cols#3
Coalesced [535] render_screen_original::oscr#7 = render_screen_original::oscr#1
Coalesced [536] render_screen_original::ocols#7 = render_screen_original::ocols#1
Coalesced [537] render_screen_original::y#7 = render_screen_original::y#1
Coalesced [538] render_screen_original::screen#18 = render_screen_original::screen#10
Coalesced [539] render_screen_original::cols#15 = render_screen_original::cols#3
Coalesced [540] render_screen_original::x#11 = render_screen_original::x#3
Coalesced (already) [541] render_screen_original::oscr#9 = render_screen_original::oscr#1
Coalesced [542] render_screen_original::screen#16 = render_screen_original::screen#3
Coalesced (already) [543] render_screen_original::ocols#9 = render_screen_original::ocols#1
Coalesced [544] render_screen_original::cols#13 = render_screen_original::cols#2
Coalesced [545] render_screen_original::x#9 = render_screen_original::x#2
Coalesced (already) [546] render_screen_original::screen#14 = render_screen_original::screen#2
Coalesced (already) [547] render_screen_original::cols#11 = render_screen_original::cols#1
Coalesced [548] render_screen_original::x#7 = render_screen_original::x#1
Coalesced [551] play_collision::yp#15 = play_collision::yp#0
Coalesced [555] play_collision::i#11 = play_collision::i#3
Not coalescing [556] play_collision::xp#8 = play_collision::xpos#6
Coalesced [578] play_collision::yp#16 = play_collision::yp#1
Not coalescing [579] play_collision::i#10 = play_collision::i#1
Coalesced [580] play_collision::l#10 = play_collision::l#1
Not coalescing [581] play_collision::i#12 = play_collision::i#1
Coalesced [582] play_collision::xp#9 = play_collision::xp#1
Coalesced [583] play_collision::c#8 = play_collision::c#1
Coalesced [603] play_move_down::movedown#14 = play_move_down::movedown#2
Coalesced [607] play_move_down::movedown#16 = play_move_down::movedown#3
Not coalescing [613] current_piece#98 = current_piece#23
Coalesced [614] play_collision::orientation#6 = play_collision::orientation#0
Coalesced [615] play_collision::yp#10 = play_collision::ypos#0
Coalesced [616] play_collision::xpos#14 = play_collision::xpos#0
Coalesced (already) [629] next_piece_idx#86 = next_piece_idx#23
Coalesced (already) [630] game_over#90 = game_over#22
Coalesced [632] current_ypos#100 = current_ypos#5
Coalesced [633] lines_bcd#88 = lines_bcd#18
Coalesced [634] level#104 = level#20
Coalesced [635] current_movedown_slow#91 = current_movedown_slow#24
Coalesced [636] level_bcd#101 = level_bcd#20
Coalesced [638] current_piece_char#102 = current_piece_char#4
Coalesced [640] current_xpos#123 = current_xpos#100
Coalesced [641] game_over#86 = game_over#53
Coalesced [642] next_piece_idx#82 = next_piece_idx#19
Coalesced (already) [644] current_ypos#101 = current_ypos#40
Coalesced [645] lines_bcd#89 = lines_bcd#28
Coalesced [646] level#105 = level#35
Coalesced [647] current_movedown_slow#92 = current_movedown_slow#39
Coalesced [648] level_bcd#102 = level_bcd#33
Coalesced [649] current_piece#96 = current_piece#30
Coalesced (already) [650] current_piece_char#103 = current_piece_char#31
Coalesced [651] current_orientation#101 = current_orientation#39
Coalesced [652] current_piece_gfx#117 = current_piece_gfx#37
Coalesced (already) [653] current_xpos#124 = current_xpos#45
Coalesced (already) [654] game_over#87 = game_over#29
Coalesced (already) [655] next_piece_idx#83 = next_piece_idx#32
Coalesced [659] current_ypos#99 = current_ypos#2
Coalesced (already) [660] lines_bcd#87 = lines_bcd#20
Coalesced (already) [661] level#103 = level#25
Coalesced (already) [662] current_movedown_slow#90 = current_movedown_slow#13
Coalesced (already) [663] level_bcd#100 = level_bcd#10
Coalesced (already) [664] current_piece#94 = current_piece#23
Coalesced (already) [665] current_piece_char#101 = current_piece_char#23
Coalesced (already) [666] current_orientation#100 = current_orientation#12
Coalesced (already) [667] current_piece_gfx#115 = current_piece_gfx#12
Coalesced (already) [668] current_xpos#122 = current_xpos#13
Coalesced (already) [669] game_over#85 = game_over#22
Coalesced (already) [670] next_piece_idx#81 = next_piece_idx#23
Coalesced [671] current_movedown_counter#61 = current_movedown_counter#13
Coalesced (already) [672] current_ypos#102 = current_ypos#10
Coalesced (already) [673] lines_bcd#90 = lines_bcd#20
Coalesced (already) [674] level#106 = level#25
Coalesced (already) [675] current_movedown_slow#93 = current_movedown_slow#13
Coalesced (already) [676] level_bcd#103 = level_bcd#10
Coalesced (already) [677] current_piece#97 = current_piece#23
Coalesced (already) [678] current_piece_char#104 = current_piece_char#23
Coalesced (already) [679] current_orientation#102 = current_orientation#12
Coalesced (already) [680] current_piece_gfx#118 = current_piece_gfx#12
Coalesced (already) [681] current_xpos#125 = current_xpos#13
Coalesced (already) [682] game_over#88 = game_over#22
Coalesced (already) [683] next_piece_idx#84 = next_piece_idx#23
Coalesced [684] play_move_down::movedown#15 = play_move_down::movedown#7
Coalesced [685] play_move_down::movedown#13 = play_move_down::movedown#10
Coalesced (already) [686] play_move_down::movedown#12 = play_move_down::movedown#10
Not coalescing [692] current_piece#100 = current_piece#16
Coalesced [693] play_collision::orientation#8 = play_collision::orientation#2
Coalesced [694] play_collision::yp#12 = play_collision::ypos#2
Coalesced [695] play_collision::xpos#16 = play_collision::xpos#2
Coalesced [701] current_xpos#127 = current_xpos#5
Coalesced (already) [704] current_xpos#126 = current_xpos#23
Not coalescing [708] current_piece#99 = current_piece#16
Coalesced [709] play_collision::orientation#7 = play_collision::orientation#1
Coalesced [710] play_collision::yp#11 = play_collision::ypos#1
Coalesced [711] play_collision::xpos#15 = play_collision::xpos#1
Coalesced [717] current_xpos#128 = current_xpos#7
Coalesced (already) [720] current_orientation#104 = current_orientation#21
Coalesced (already) [721] current_piece_gfx#120 = current_piece_gfx#21
Coalesced [726] play_move_rotate::orientation#7 = play_move_rotate::orientation#2
Not coalescing [731] current_piece#101 = current_piece#16
Coalesced [732] play_collision::orientation#9 = play_collision::orientation#3
Coalesced [733] play_collision::yp#13 = play_collision::ypos#3
Coalesced [734] play_collision::xpos#17 = play_collision::xpos#3
Coalesced [741] current_orientation#105 = current_orientation#6
Coalesced [742] current_piece_gfx#121 = current_piece_gfx#6
Coalesced (already) [743] current_orientation#103 = current_orientation#21
Coalesced (already) [744] current_piece_gfx#119 = current_piece_gfx#21
Coalesced [747] play_move_rotate::orientation#6 = play_move_rotate::orientation#1
Coalesced [755] render_bcd::screen_pos#6 = render_bcd::screen_pos#2
Coalesced [761] render_bcd::screen_pos#5 = render_bcd::screen_pos#0
Coalesced [763] play_lock_current::yp#7 = play_lock_current::yp#0
Coalesced [768] play_lock_current::i#8 = play_lock_current::i#3
Coalesced [769] play_lock_current::xp#5 = play_lock_current::xp#0
Coalesced [781] play_lock_current::yp#8 = play_lock_current::yp#1
Not coalescing [782] play_lock_current::i#7 = play_lock_current::i#1
Coalesced [783] play_lock_current::l#7 = play_lock_current::l#1
Not coalescing [784] play_lock_current::i#9 = play_lock_current::i#1
Coalesced [785] play_lock_current::xp#6 = play_lock_current::xp#1
Coalesced [786] play_lock_current::c#5 = play_lock_current::c#1
Coalesced [789] play_remove_lines::r#10 = play_remove_lines::r#3
Coalesced [790] play_remove_lines::w#14 = play_remove_lines::w#12
Coalesced [804] play_remove_lines::w#17 = play_remove_lines::w#2
Coalesced [805] play_remove_lines::removed#14 = play_remove_lines::removed#1
Coalesced [809] play_remove_lines::w#18 = play_remove_lines::w#11
Coalesced [816] play_remove_lines::w#19 = play_remove_lines::w#3
Coalesced [817] play_remove_lines::r#9 = play_remove_lines::r#1
Coalesced [818] play_remove_lines::w#13 = play_remove_lines::w#11
Coalesced [819] play_remove_lines::y#9 = play_remove_lines::y#1
Coalesced [820] play_remove_lines::removed#12 = play_remove_lines::removed#7
Coalesced [821] play_remove_lines::w#16 = play_remove_lines::w#1
Coalesced (already) [822] play_remove_lines::removed#13 = play_remove_lines::removed#11
Coalesced (already) [823] play_remove_lines::r#11 = play_remove_lines::r#1
Coalesced (already) [824] play_remove_lines::w#15 = play_remove_lines::w#1
Coalesced [825] play_remove_lines::x#5 = play_remove_lines::x#1
Coalesced [826] play_remove_lines::full#5 = play_remove_lines::full#2
Coalesced (already) [827] play_remove_lines::full#6 = play_remove_lines::full#4
Coalesced [842] lines_bcd#93 = lines_bcd#31
Coalesced [843] level#109 = level#22
Coalesced [844] current_movedown_slow#96 = current_movedown_slow#67
Coalesced [845] level_bcd#106 = level_bcd#63
Coalesced (already) [848] lines_bcd#92 = lines_bcd#31
Coalesced (already) [849] level#108 = level#25
Coalesced (already) [850] current_movedown_slow#95 = current_movedown_slow#13
Coalesced (already) [851] level_bcd#105 = level_bcd#10
Coalesced (already) [852] lines_bcd#91 = lines_bcd#20
Coalesced (already) [853] level#107 = level#25
Coalesced (already) [854] current_movedown_slow#94 = current_movedown_slow#13
Coalesced (already) [855] level_bcd#104 = level_bcd#10
Coalesced [859] current_movedown_slow#97 = current_movedown_slow#9
Coalesced [865] level_bcd#108 = level_bcd#7
Coalesced [875] play_increase_level::b#3 = play_increase_level::b#1
Coalesced [876] level_bcd#107 = level_bcd#22
Coalesced down to 93 phi equivalence classes
Culled Empty Block label __start::__init1_toSpritePtr1_@return
Culled Empty Block label __start::@2
Culled Empty Block label sprites_irq::toSpritePtr1_@return
Culled Empty Block label main::@5
Culled Empty Block label main::@27
Culled Empty Block label main::@28
Culled Empty Block label render_init::vicSelectGfxBank1_toDd001_@return
Culled Empty Block label render_init::@5
Culled Empty Block label render_init::@2
Culled Empty Block label render_init::@6
Culled Empty Block label sprites_init::@2
Culled Empty Block label play_init::@5
Culled Empty Block label play_init::@4
Culled Empty Block label play_spawn_current::@2
Culled Empty Block label play_spawn_current::@4
Culled Empty Block label play_spawn_current::sid_rnd1_@return
Culled Empty Block label render_playfield::@4
Culled Empty Block label render_playfield::@5
Culled Empty Block label render_moving::@8
Culled Empty Block label render_moving::@9
Culled Empty Block label render_moving::@10
Culled Empty Block label render_next::@3
Culled Empty Block label render_next::@10
Culled Empty Block label render_next::@11
Culled Empty Block label render_show::@3
Culled Empty Block label render_show::toD0182_@return
Culled Empty Block label render_show::@5
Culled Empty Block label render_show::@1
Culled Empty Block label render_show::toD0181_@return
Culled Empty Block label render_show::@4
Culled Empty Block label keyboard_event_scan::@25
Culled Empty Block label keyboard_event_scan::@8
Culled Empty Block label keyboard_event_scan::@26
Culled Empty Block label keyboard_event_scan::@28
Culled Empty Block label keyboard_event_scan::@27
Culled Empty Block label keyboard_event_get::@1
Culled Empty Block label play_movement::@2
Culled Empty Block label render_score::@3
Culled Empty Block label render_score::@9
Culled Empty Block label render_screen_original::@8
Culled Empty Block label render_screen_original::@10
Culled Empty Block label render_screen_original::@6
Culled Empty Block label render_screen_original::@11
Culled Empty Block label render_screen_original::@9
Culled Empty Block label render_screen_original::@7
Culled Empty Block label play_collision::@11
Culled Empty Block label play_collision::@7
Culled Empty Block label play_collision::@8
Culled Empty Block label play_collision::@9
Culled Empty Block label play_collision::@13
Culled Empty Block label play_move_down::@4
Culled Empty Block label play_move_down::@21
Culled Empty Block label play_move_down::@20
Culled Empty Block label play_move_down::@19
Culled Empty Block label play_move_leftright::@2
Culled Empty Block label play_move_rotate::@6
Culled Empty Block label play_move_rotate::@4
Culled Empty Block label render_bcd::@3
Culled Empty Block label play_remove_lines::@4
Culled Empty Block label play_remove_lines::@15
Culled Empty Block label play_remove_lines::@10
Culled Empty Block label play_remove_lines::@11
Culled Empty Block label play_remove_lines::@14
Culled Empty Block label play_remove_lines::@12
Culled Empty Block label play_update_score::@3
Culled Empty Block label play_update_score::@5
Culled Empty Block label play_update_score::@4
Culled Empty Block label play_increase_level::@9
Culled Empty Block label play_increase_level::@8
Culled Empty Block label play_increase_level::@1
Renumbering block keyboard_event_scan::@9 to keyboard_event_scan::@8
Renumbering block keyboard_event_scan::@10 to keyboard_event_scan::@9
Renumbering block keyboard_event_scan::@11 to keyboard_event_scan::@10
Renumbering block keyboard_event_scan::@12 to keyboard_event_scan::@11
Renumbering block keyboard_event_scan::@13 to keyboard_event_scan::@12
Renumbering block keyboard_event_scan::@14 to keyboard_event_scan::@13
Renumbering block keyboard_event_scan::@15 to keyboard_event_scan::@14
Renumbering block keyboard_event_scan::@16 to keyboard_event_scan::@15
Renumbering block keyboard_event_scan::@17 to keyboard_event_scan::@16
Renumbering block keyboard_event_scan::@18 to keyboard_event_scan::@17
Renumbering block keyboard_event_scan::@19 to keyboard_event_scan::@18
Renumbering block keyboard_event_scan::@20 to keyboard_event_scan::@19
Renumbering block keyboard_event_scan::@21 to keyboard_event_scan::@20
Renumbering block keyboard_event_scan::@22 to keyboard_event_scan::@21
Renumbering block keyboard_event_scan::@23 to keyboard_event_scan::@22
Renumbering block keyboard_event_scan::@24 to keyboard_event_scan::@23
Renumbering block keyboard_event_get::@2 to keyboard_event_get::@1
Renumbering block render_init::@3 to render_init::@2
Renumbering block render_init::@4 to render_init::@3
Renumbering block render_show::@2 to render_show::@1
Renumbering block render_score::@4 to render_score::@3
Renumbering block render_score::@5 to render_score::@4
Renumbering block render_score::@6 to render_score::@5
Renumbering block render_score::@7 to render_score::@6
Renumbering block render_score::@8 to render_score::@7
Renumbering block render_next::@4 to render_next::@3
Renumbering block render_next::@5 to render_next::@4
Renumbering block render_next::@6 to render_next::@5
Renumbering block render_next::@7 to render_next::@6
Renumbering block render_next::@8 to render_next::@7
Renumbering block render_next::@9 to render_next::@8
Renumbering block play_movement::@3 to play_movement::@2
Renumbering block play_movement::@4 to play_movement::@3
Renumbering block play_movement::@5 to play_movement::@4
Renumbering block play_move_down::@5 to play_move_down::@4
Renumbering block play_move_down::@6 to play_move_down::@5
Renumbering block play_move_down::@7 to play_move_down::@6
Renumbering block play_move_down::@8 to play_move_down::@7
Renumbering block play_move_down::@9 to play_move_down::@8
Renumbering block play_move_down::@10 to play_move_down::@9
Renumbering block play_move_down::@11 to play_move_down::@10
Renumbering block play_move_down::@12 to play_move_down::@11
Renumbering block play_move_down::@13 to play_move_down::@12
Renumbering block play_move_down::@14 to play_move_down::@13
Renumbering block play_move_down::@15 to play_move_down::@14
Renumbering block play_move_down::@16 to play_move_down::@15
Renumbering block play_move_down::@17 to play_move_down::@16
Renumbering block play_move_down::@18 to play_move_down::@17
Renumbering block play_move_leftright::@3 to play_move_leftright::@2
Renumbering block play_move_leftright::@4 to play_move_leftright::@3
Renumbering block play_move_leftright::@5 to play_move_leftright::@4
Renumbering block play_move_leftright::@6 to play_move_leftright::@5
Renumbering block play_move_leftright::@7 to play_move_leftright::@6
Renumbering block play_move_leftright::@8 to play_move_leftright::@7
Renumbering block play_move_rotate::@5 to play_move_rotate::@4
Renumbering block play_move_rotate::@7 to play_move_rotate::@5
Renumbering block play_move_rotate::@8 to play_move_rotate::@6
Renumbering block play_collision::@10 to play_collision::@7
Renumbering block play_collision::@12 to play_collision::@8
Renumbering block play_collision::@14 to play_collision::@9
Renumbering block play_collision::@15 to play_collision::@10
Renumbering block play_spawn_current::@3 to play_spawn_current::@2
Renumbering block play_spawn_current::@5 to play_spawn_current::@3
Renumbering block play_spawn_current::@6 to play_spawn_current::@4
Renumbering block play_spawn_current::@7 to play_spawn_current::@5
Renumbering block play_remove_lines::@5 to play_remove_lines::@4
Renumbering block play_remove_lines::@6 to play_remove_lines::@5
Renumbering block play_remove_lines::@7 to play_remove_lines::@6
Renumbering block play_remove_lines::@8 to play_remove_lines::@7
Renumbering block play_remove_lines::@9 to play_remove_lines::@8
Renumbering block play_remove_lines::@13 to play_remove_lines::@9
Renumbering block play_increase_level::@2 to play_increase_level::@1
Renumbering block play_increase_level::@3 to play_increase_level::@2
Renumbering block play_increase_level::@4 to play_increase_level::@3
Renumbering block play_increase_level::@5 to play_increase_level::@4
Renumbering block play_increase_level::@6 to play_increase_level::@5
Renumbering block play_increase_level::@7 to play_increase_level::@6
Renumbering block main::@6 to main::@5
Renumbering block main::@7 to main::@6
Renumbering block main::@8 to main::@7
Renumbering block main::@9 to main::@8
Renumbering block main::@10 to main::@9
Renumbering block main::@11 to main::@10
Renumbering block main::@12 to main::@11
Renumbering block main::@13 to main::@12
Renumbering block main::@14 to main::@13
Renumbering block main::@15 to main::@14
Renumbering block main::@16 to main::@15
Renumbering block main::@17 to main::@16
Renumbering block main::@18 to main::@17
Renumbering block main::@19 to main::@18
Renumbering block main::@20 to main::@19
Renumbering block main::@21 to main::@20
Renumbering block main::@22 to main::@21
Renumbering block main::@23 to main::@22
Renumbering block main::@24 to main::@23
Renumbering block main::@25 to main::@24
Renumbering block main::@26 to main::@25
Adding NOP phi() at start of __start
Adding NOP phi() at start of __start::__init1_toSpritePtr1
Adding NOP phi() at start of __start::@1
Adding NOP phi() at start of sprites_irq::toSpritePtr1
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@9
Adding NOP phi() at start of main::@10
Adding NOP phi() at start of main::@11
Adding NOP phi() at start of main::@12
Adding NOP phi() at start of main::@13
Adding NOP phi() at start of main::@14
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@18
Adding NOP phi() at start of main::@19
Adding NOP phi() at start of main::@24
Adding NOP phi() at start of main::@25
Adding NOP phi() at start of render_init
Adding NOP phi() at start of render_init::vicSelectGfxBank1_toDd001
Adding NOP phi() at start of render_init::@3
Adding NOP phi() at start of play_init
Adding NOP phi() at start of play_spawn_current::@5
Adding NOP phi() at start of render_next::@1
Adding NOP phi() at start of render_show::toD0182
Adding NOP phi() at start of render_show::toD0181
Adding NOP phi() at start of keyboard_event_scan
Adding NOP phi() at start of keyboard_event_scan::@17
Adding NOP phi() at start of keyboard_event_scan::@18
Adding NOP phi() at start of keyboard_event_scan::@1
Adding NOP phi() at start of keyboard_event_scan::@4
Adding NOP phi() at start of keyboard_event_scan::@2
Adding NOP phi() at start of keyboard_event_scan::@5
Adding NOP phi() at start of keyboard_event_scan::@3
Adding NOP phi() at start of keyboard_event_scan::@6
Adding NOP phi() at start of render_score::@1
Adding NOP phi() at start of play_move_down::@4
Adding NOP phi() at start of play_move_down::@9
Adding NOP phi() at start of play_move_down::@14
Adding NOP phi() at start of play_move_down::@16
Adding NOP phi() at start of play_remove_lines
Adding NOP phi() at start of play_remove_lines::@9
Adding NOP phi() at start of play_update_score::@2
FINAL CONTROL FLOW GRAPH
void __start()
__start: scope:[__start] from
[0] phi()
to:__start::__init1
__start::__init1: scope:[__start] from __start
[1] render_screen_showing = 0
[2] score_bcd = 0
[3] irq_raster_next = IRQ_RASTER_FIRST
[4] irq_sprite_ypos = SPRITES_FIRST_YPOS+$15
to:__start::__init1_toSpritePtr1
__start::__init1_toSpritePtr1: scope:[__start] from __start::__init1
[5] phi()
to:__start::__init1_@1
__start::__init1_@1: scope:[__start] from __start::__init1_toSpritePtr1
[6] irq_sprite_ptr = __start::__init1_toSpritePtr1_return#0+3
[7] irq_cnt = 0
to:__start::@1
__start::@1: scope:[__start] from __start::__init1_@1
[8] phi()
[9] call main
to:__start::@return
__start::@return: scope:[__start] from __start::@1
[10] return
to:@return
__interrupt(hardware_clobber) void sprites_irq()
sprites_irq: scope:[sprites_irq] from
asm { cld }
[12] sprites_irq::ypos#0 = irq_sprite_ypos
[13] *SPRITES_YPOS = sprites_irq::ypos#0
[14] *(SPRITES_YPOS+2) = sprites_irq::ypos#0
[15] *(SPRITES_YPOS+4) = sprites_irq::ypos#0
[16] *(SPRITES_YPOS+6) = sprites_irq::ypos#0
[17] sprites_irq::$0 = irq_raster_next + 1
[18] sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0
to:sprites_irq::@8
sprites_irq::@8: scope:[sprites_irq] from sprites_irq sprites_irq::@8
[19] if(*RASTER<sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8
to:sprites_irq::@9
sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8
[20] sprites_irq::ptr#0 = irq_sprite_ptr
[21] if(render_screen_showing==0) goto sprites_irq::@1
to:sprites_irq::@10
sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@9
[22] *PLAYFIELD_SPRITE_PTRS_2 = sprites_irq::ptr#0
[23] sprites_irq::ptr#3 = ++ sprites_irq::ptr#0
[24] *(PLAYFIELD_SPRITE_PTRS_2+1) = sprites_irq::ptr#3
[25] *(PLAYFIELD_SPRITE_PTRS_2+2) = sprites_irq::ptr#3
[26] sprites_irq::ptr#4 = ++ sprites_irq::ptr#3
[27] *(PLAYFIELD_SPRITE_PTRS_2+3) = sprites_irq::ptr#4
to:sprites_irq::@2
sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@1 sprites_irq::@10
[28] irq_cnt = ++ irq_cnt
[29] if(irq_cnt==9) goto sprites_irq::@3
to:sprites_irq::@6
sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@2
[30] if(irq_cnt==$a) goto sprites_irq::@4
to:sprites_irq::@7
sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@6
[31] irq_raster_next = irq_raster_next + $14
[32] irq_sprite_ypos = irq_sprite_ypos + $15
[33] irq_sprite_ptr = irq_sprite_ptr + 3
to:sprites_irq::@5
sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7
[34] *RASTER = irq_raster_next
[35] *IRQ_STATUS = IRQ_RASTER
to:sprites_irq::@return
sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@5
[36] return
to:@return
sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@6
[37] irq_cnt = 0
[38] irq_raster_next = IRQ_RASTER_FIRST
[39] irq_sprite_ypos = irq_sprite_ypos + $15
[40] irq_sprite_ptr = irq_sprite_ptr + 3
to:sprites_irq::@5
sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2
[41] irq_raster_next = irq_raster_next + $15
[42] irq_sprite_ypos = SPRITES_FIRST_YPOS
to:sprites_irq::toSpritePtr1
sprites_irq::toSpritePtr1: scope:[sprites_irq] from sprites_irq::@3
[43] phi()
to:sprites_irq::@11
sprites_irq::@11: scope:[sprites_irq] from sprites_irq::toSpritePtr1
[44] irq_sprite_ptr = sprites_irq::toSpritePtr1_return#0
to:sprites_irq::@5
sprites_irq::@1: scope:[sprites_irq] from sprites_irq::@9
[45] *PLAYFIELD_SPRITE_PTRS_1 = sprites_irq::ptr#0
[46] sprites_irq::ptr#1 = ++ sprites_irq::ptr#0
[47] *(PLAYFIELD_SPRITE_PTRS_1+1) = sprites_irq::ptr#1
[48] *(PLAYFIELD_SPRITE_PTRS_1+2) = sprites_irq::ptr#1
[49] sprites_irq::ptr#2 = ++ sprites_irq::ptr#1
[50] *(PLAYFIELD_SPRITE_PTRS_1+3) = sprites_irq::ptr#2
to:sprites_irq::@2
void main()
main: scope:[main] from __start::@1
[51] phi()
to:main::sid_rnd_init1
main::sid_rnd_init1: scope:[main] from main
[52] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff
[53] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE
to:main::@8
main::@8: scope:[main] from main::sid_rnd_init1
asm { sei }
[55] call render_init
to:main::@9
main::@9: scope:[main] from main::@8
[56] phi()
[57] call sprites_init
to:main::@10
main::@10: scope:[main] from main::@9
[58] phi()
[59] call sprites_irq_init
to:main::@11
main::@11: scope:[main] from main::@10
[60] phi()
[61] call play_init
to:main::@12
main::@12: scope:[main] from main::@11
[62] phi()
[63] call play_spawn_current
to:main::@13
main::@13: scope:[main] from main::@12
[64] phi()
[65] call play_spawn_current
to:main::@14
main::@14: scope:[main] from main::@13
[66] phi()
[67] call render_playfield
to:main::@15
main::@15: scope:[main] from main::@14
[68] current_ypos#97 = current_ypos#5
[69] current_xpos#118 = current_xpos#100
[70] current_piece_gfx#111 = (byte*)PIECES[play_spawn_current::$7]
[71] current_piece_char#99 = current_piece_char#4
[72] call render_moving
to:main::@16
main::@16: scope:[main] from main::@15
[73] next_piece_idx#79 = play_spawn_current::piece_idx#2
[74] call render_next
to:main::@17
main::@17: scope:[main] from main::@16
[75] current_piece#103 = (byte*)PIECES[play_spawn_current::$7]
[76] current_piece_gfx#122 = (byte*)PIECES[play_spawn_current::$7]
to:main::@1
main::@1: scope:[main] from main::@17 main::@25 main::@6
[77] level_bcd#10 = phi( main::@17/0, main::@25/level_bcd#18, main::@6/level_bcd#18 )
[77] level#25 = phi( main::@17/0, main::@25/level#18, main::@6/level#18 )
[77] lines_bcd#20 = phi( main::@17/0, main::@25/lines_bcd#16, main::@6/lines_bcd#16 )
[77] current_movedown_counter#17 = phi( main::@17/0, main::@25/current_movedown_counter#15, main::@6/current_movedown_counter#15 )
[77] keyboard_events_size#20 = phi( main::@17/0, main::@25/keyboard_events_size#17, main::@6/keyboard_events_size#17 )
[77] next_piece_idx#23 = phi( main::@17/play_spawn_current::piece_idx#2, main::@25/next_piece_idx#17, main::@6/next_piece_idx#17 )
[77] game_over#22 = phi( main::@17/game_over#53, main::@25/game_over#16, main::@6/game_over#16 )
[77] current_ypos#10 = phi( main::@17/current_ypos#5, main::@25/current_ypos#20, main::@6/current_ypos#20 )
[77] current_xpos#13 = phi( main::@17/current_xpos#100, main::@25/current_xpos#2, main::@6/current_xpos#2 )
[77] current_piece_gfx#12 = phi( main::@17/current_piece_gfx#122, main::@25/current_piece_gfx#19, main::@6/current_piece_gfx#19 )
[77] current_orientation#12 = phi( main::@17/0, main::@25/current_orientation#18, main::@6/current_orientation#18 )
[77] current_piece_char#23 = phi( main::@17/current_piece_char#4, main::@25/current_piece_char#17, main::@6/current_piece_char#17 )
[77] current_piece#23 = phi( main::@17/current_piece#103, main::@25/current_piece#16, main::@6/current_piece#16 )
[77] current_movedown_slow#13 = phi( main::@17/current_movedown_slow#0, main::@25/current_movedown_slow#22, main::@6/current_movedown_slow#22 )
[77] render_screen_render#19 = phi( main::@17/$20, main::@25/render_screen_render#12, main::@6/render_screen_render#19 )
[77] render_screen_show#17 = phi( main::@17/0, main::@25/render_screen_show#14, main::@6/render_screen_show#17 )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
[78] if(*RASTER!=$ff) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@2
[79] phi()
[80] call render_show
to:main::@18
main::@18: scope:[main] from main::@3
[81] phi()
[82] call keyboard_event_scan
to:main::@19
main::@19: scope:[main] from main::@18
[83] phi()
[84] call keyboard_event_get
[85] keyboard_event_get::return#3 = keyboard_event_get::return#2
to:main::@20
main::@20: scope:[main] from main::@19
[86] main::key_event#0 = keyboard_event_get::return#3
[87] if(game_over#22==0) goto main::@4
to:main::@5
main::@5: scope:[main] from main::@20 main::@5
[88] *BORDER_COLOR = ++ *BORDER_COLOR
to:main::@5
main::@4: scope:[main] from main::@20
[89] play_movement::key_event#0 = main::key_event#0
[90] call play_movement
[91] play_movement::return#3 = play_movement::return#2
to:main::@21
main::@21: scope:[main] from main::@4
[92] main::render#1 = play_movement::return#3
to:main::@6
main::@6: scope:[main] from main::@21
[93] if(main::render#1==0) goto main::@1
to:main::@7
main::@7: scope:[main] from main::@6
[94] render_screen_render#63 = render_screen_render#19
[95] call render_playfield
to:main::@22
main::@22: scope:[main] from main::@7
[96] current_ypos#98 = current_ypos#20
[97] render_screen_render#64 = render_screen_render#19
[98] current_xpos#119 = current_xpos#2
[99] current_piece_gfx#112 = current_piece_gfx#19
[100] current_piece_char#100 = current_piece_char#17
[101] call render_moving
to:main::@23
main::@23: scope:[main] from main::@22
[102] render_screen_render#65 = render_screen_render#19
[103] next_piece_idx#80 = next_piece_idx#17
[104] call render_next
to:main::@24
main::@24: scope:[main] from main::@23
[105] phi()
[106] call render_score
to:main::@25
main::@25: scope:[main] from main::@24
[107] phi()
[108] call render_screen_swap
to:main::@1
void render_init()
render_init: scope:[render_init] from main::@8
[109] phi()
to:render_init::vicSelectGfxBank1
render_init::vicSelectGfxBank1: scope:[render_init] from render_init
[110] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
to:render_init::vicSelectGfxBank1_toDd001
render_init::vicSelectGfxBank1_toDd001: scope:[render_init] from render_init::vicSelectGfxBank1
[111] phi()
to:render_init::vicSelectGfxBank1_@1
render_init::vicSelectGfxBank1_@1: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001
[112] *((byte*)CIA2) = render_init::vicSelectGfxBank1_toDd001_return#0
to:render_init::@2
render_init::@2: scope:[render_init] from render_init::vicSelectGfxBank1_@1
[113] *D011 = VICII_ECM|VICII_DEN|VICII_RSEL|3
[114] *BORDER_COLOR = BLACK
[115] *BG_COLOR = BLACK
[116] *BG_COLOR1 = *PIECES_COLORS_1
[117] *BG_COLOR2 = *PIECES_COLORS_2
[118] *BG_COLOR3 = GREY
[119] call render_screen_original
to:render_init::@3
render_init::@3: scope:[render_init] from render_init::@2
[120] phi()
[121] call render_screen_original
to:render_init::@1
render_init::@1: scope:[render_init] from render_init::@1 render_init::@3
[122] render_init::li_2#2 = phi( render_init::@1/render_init::li_2#1, render_init::@3/PLAYFIELD_SCREEN_2+2*$28+$10 )
[122] render_init::li_1#2 = phi( render_init::@1/render_init::li_1#1, render_init::@3/PLAYFIELD_SCREEN_1+2*$28+$10 )
[122] render_init::i#2 = phi( render_init::@1/render_init::i#1, render_init::@3/0 )
[123] render_init::$5 = render_init::i#2 << 1
[124] screen_lines_1[render_init::$5] = render_init::li_1#2
[125] screen_lines_2[render_init::$5] = render_init::li_2#2
[126] render_init::li_1#1 = render_init::li_1#2 + $28
[127] render_init::li_2#1 = render_init::li_2#2 + $28
[128] render_init::i#1 = ++ render_init::i#2
[129] if(render_init::i#1!=PLAYFIELD_LINES-1+1) goto render_init::@1
to:render_init::@return
render_init::@return: scope:[render_init] from render_init::@1
[130] return
to:@return
void sprites_init()
sprites_init: scope:[sprites_init] from main::@9
[131] *SPRITES_ENABLE = $f
[132] *SPRITES_MC = 0
[133] *SPRITES_EXPAND_Y = *SPRITES_MC
[134] *SPRITES_EXPAND_X = *SPRITES_EXPAND_Y
to:sprites_init::@1
sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1
[135] sprites_init::xpos#2 = phi( sprites_init/$18+$f*8, sprites_init::@1/sprites_init::xpos#1 )
[135] sprites_init::s#2 = phi( sprites_init/0, sprites_init::@1/sprites_init::s#1 )
[136] sprites_init::s2#0 = sprites_init::s#2 << 1
[137] SPRITES_XPOS[sprites_init::s2#0] = sprites_init::xpos#2
[138] SPRITES_COLOR[sprites_init::s#2] = BLACK
[139] sprites_init::xpos#1 = sprites_init::xpos#2 + $18
[140] sprites_init::s#1 = ++ sprites_init::s#2
[141] if(sprites_init::s#1!=4) goto sprites_init::@1
to:sprites_init::@return
sprites_init::@return: scope:[sprites_init] from sprites_init::@1
[142] return
to:@return
void sprites_irq_init()
sprites_irq_init: scope:[sprites_irq_init] from main::@10
asm { sei }
[144] *IRQ_STATUS = IRQ_RASTER
asm { ldaCIA1_INTERRUPT }
[146] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[147] *PROCPORT = PROCPORT_RAM_IO
[148] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[149] *VICII_CONTROL = *VICII_CONTROL & $7f
[150] *RASTER = IRQ_RASTER_FIRST
[151] *IRQ_ENABLE = IRQ_RASTER
[152] *HARDWARE_IRQ = &sprites_irq
asm { cli }
to:sprites_irq_init::@return
sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init
[154] return
to:@return
void play_init()
play_init: scope:[play_init] from main::@11
[155] phi()
to:play_init::@1
play_init::@1: scope:[play_init] from play_init play_init::@1
[156] play_init::idx#2 = phi( play_init/0, play_init::@1/play_init::idx#1 )
[156] play_init::pli#2 = phi( play_init/playfield, play_init::@1/play_init::pli#1 )
[156] play_init::j#2 = phi( play_init/0, play_init::@1/play_init::j#1 )
[157] play_init::$2 = play_init::j#2 << 1
[158] playfield_lines[play_init::$2] = play_init::pli#2
[159] playfield_lines_idx[play_init::j#2] = play_init::idx#2
[160] play_init::pli#1 = play_init::pli#2 + PLAYFIELD_COLS
[161] play_init::idx#1 = play_init::idx#2 + PLAYFIELD_COLS
[162] play_init::j#1 = ++ play_init::j#2
[163] if(play_init::j#1!=PLAYFIELD_LINES-1+1) goto play_init::@1
to:play_init::@2
play_init::@2: scope:[play_init] from play_init::@1
[164] *(playfield_lines_idx+PLAYFIELD_LINES) = PLAYFIELD_COLS*PLAYFIELD_LINES
[165] current_movedown_slow#0 = *MOVEDOWN_SLOW_SPEEDS
to:play_init::@3
play_init::@3: scope:[play_init] from play_init::@2 play_init::@3
[166] play_init::b#2 = phi( play_init::@2/0, play_init::@3/play_init::b#1 )
[167] play_init::$3 = play_init::b#2 << 2
[168] score_add_bcd[play_init::$3] = SCORE_BASE_BCD[play_init::$3]
[169] play_init::b#1 = ++ play_init::b#2
[170] if(play_init::b#1!=5) goto play_init::@3
to:play_init::@return
play_init::@return: scope:[play_init] from play_init::@3
[171] return
to:@return
void play_spawn_current()
play_spawn_current: scope:[play_spawn_current] from main::@12 main::@13 play_move_down::@16
[172] game_over#66 = phi( main::@12/0, main::@13/game_over#53, play_move_down::@16/game_over#22 )
[172] next_piece_idx#18 = phi( main::@12/0, main::@13/play_spawn_current::piece_idx#2, play_move_down::@16/next_piece_idx#23 )
[173] play_spawn_current::current_piece_idx#0 = next_piece_idx#18
[174] play_spawn_current::$7 = play_spawn_current::current_piece_idx#0 << 1
[175] current_piece_char#4 = PIECES_CHARS[play_spawn_current::current_piece_idx#0]
[176] current_xpos#100 = PIECES_START_X[play_spawn_current::current_piece_idx#0]
[177] current_ypos#5 = PIECES_START_Y[play_spawn_current::current_piece_idx#0]
[178] play_collision::xpos#4 = current_xpos#100
[179] play_collision::ypos#4 = current_ypos#5
[180] current_piece#102 = (byte*)PIECES[play_spawn_current::$7]
[181] call play_collision
[182] play_collision::return#10 = play_collision::return#15
to:play_spawn_current::@4
play_spawn_current::@4: scope:[play_spawn_current] from play_spawn_current
[183] play_spawn_current::$1 = play_collision::return#10
[184] if(play_spawn_current::$1!=COLLISION_PLAYFIELD) goto play_spawn_current::@5
to:play_spawn_current::@1
play_spawn_current::@5: scope:[play_spawn_current] from play_spawn_current::@4
[185] phi()
to:play_spawn_current::@1
play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current::@4 play_spawn_current::@5
[186] game_over#53 = phi( play_spawn_current::@4/1, play_spawn_current::@5/game_over#66 )
to:play_spawn_current::@2
play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 play_spawn_current::@3
[187] play_spawn_current::piece_idx#2 = phi( play_spawn_current::@1/7, play_spawn_current::@3/play_spawn_current::piece_idx#1 )
[188] if(play_spawn_current::piece_idx#2==7) goto play_spawn_current::sid_rnd1
to:play_spawn_current::@return
play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@2
[189] return
to:@return
play_spawn_current::sid_rnd1: scope:[play_spawn_current] from play_spawn_current::@2
[190] play_spawn_current::sid_rnd1_return#0 = *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC)
to:play_spawn_current::@3
play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::sid_rnd1
[191] play_spawn_current::piece_idx#1 = play_spawn_current::sid_rnd1_return#0 & 7
to:play_spawn_current::@2
void render_playfield()
render_playfield: scope:[render_playfield] from main::@14 main::@7
[192] render_screen_render#24 = phi( main::@14/$20, main::@7/render_screen_render#63 )
to:render_playfield::@1
render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3
[193] render_playfield::i#3 = phi( render_playfield/PLAYFIELD_COLS*2, render_playfield::@3/render_playfield::i#1 )
[193] render_playfield::l#2 = phi( render_playfield/2, render_playfield::@3/render_playfield::l#1 )
[194] render_playfield::$0 = render_screen_render#24 + render_playfield::l#2
[195] render_playfield::$3 = render_playfield::$0 << 1
[196] render_playfield::screen_line#0 = screen_lines_1[render_playfield::$3]
to:render_playfield::@2
render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2
[197] render_playfield::c#2 = phi( render_playfield::@1/0, render_playfield::@2/render_playfield::c#1 )
[197] render_playfield::screen_line#2 = phi( render_playfield::@1/render_playfield::screen_line#0, render_playfield::@2/render_playfield::screen_line#1 )
[197] render_playfield::i#2 = phi( render_playfield::@1/render_playfield::i#3, render_playfield::@2/render_playfield::i#1 )
[198] *render_playfield::screen_line#2 = playfield[render_playfield::i#2]
[199] render_playfield::screen_line#1 = ++ render_playfield::screen_line#2
[200] render_playfield::i#1 = ++ render_playfield::i#2
[201] render_playfield::c#1 = ++ render_playfield::c#2
[202] if(render_playfield::c#1!=PLAYFIELD_COLS-1+1) goto render_playfield::@2
to:render_playfield::@3
render_playfield::@3: scope:[render_playfield] from render_playfield::@2
[203] render_playfield::l#1 = ++ render_playfield::l#2
[204] if(render_playfield::l#1!=PLAYFIELD_LINES-1+1) goto render_playfield::@1
to:render_playfield::@return
render_playfield::@return: scope:[render_playfield] from render_playfield::@3
[205] return
to:@return
void render_moving()
render_moving: scope:[render_moving] from main::@15 main::@22
[206] current_piece_char#70 = phi( main::@15/current_piece_char#99, main::@22/current_piece_char#100 )
[206] current_piece_gfx#66 = phi( main::@15/current_piece_gfx#111, main::@22/current_piece_gfx#112 )
[206] current_xpos#61 = phi( main::@15/current_xpos#118, main::@22/current_xpos#119 )
[206] render_screen_render#35 = phi( main::@15/$20, main::@22/render_screen_render#64 )
[206] current_ypos#14 = phi( main::@15/current_ypos#97, main::@22/current_ypos#98 )
[207] render_moving::ypos#0 = current_ypos#14
to:render_moving::@1
render_moving::@1: scope:[render_moving] from render_moving render_moving::@3
[208] render_moving::l#4 = phi( render_moving/0, render_moving::@3/render_moving::l#1 )
[208] render_moving::i#3 = phi( render_moving/0, render_moving::@3/render_moving::i#8 )
[208] render_moving::ypos#2 = phi( render_moving/render_moving::ypos#0, render_moving::@3/render_moving::ypos#1 )
[209] if(render_moving::ypos#2>=1+1) goto render_moving::@2
to:render_moving::@7
render_moving::@7: scope:[render_moving] from render_moving::@1
[210] render_moving::i#1 = render_moving::i#3 + 4
to:render_moving::@3
render_moving::@3: scope:[render_moving] from render_moving::@5 render_moving::@7
[211] render_moving::i#8 = phi( render_moving::@5/render_moving::i#2, render_moving::@7/render_moving::i#1 )
[212] render_moving::ypos#1 = ++ render_moving::ypos#2
[213] render_moving::l#1 = ++ render_moving::l#4
[214] if(render_moving::l#1!=4) goto render_moving::@1
to:render_moving::@return
render_moving::@return: scope:[render_moving] from render_moving::@3
[215] return
to:@return
render_moving::@2: scope:[render_moving] from render_moving::@1
[216] render_moving::$1 = render_screen_render#35 + render_moving::ypos#2
[217] render_moving::$6 = render_moving::$1 << 1
[218] render_moving::screen_line#0 = screen_lines_1[render_moving::$6]
[219] render_moving::xpos#0 = current_xpos#61
to:render_moving::@4
render_moving::@4: scope:[render_moving] from render_moving::@2 render_moving::@5
[220] render_moving::c#2 = phi( render_moving::@2/0, render_moving::@5/render_moving::c#1 )
[220] render_moving::xpos#2 = phi( render_moving::@2/render_moving::xpos#0, render_moving::@5/render_moving::xpos#1 )
[220] render_moving::i#4 = phi( render_moving::@2/render_moving::i#3, render_moving::@5/render_moving::i#2 )
[221] render_moving::current_cell#0 = current_piece_gfx#66[render_moving::i#4]
[222] render_moving::i#2 = ++ render_moving::i#4
[223] if(render_moving::current_cell#0==0) goto render_moving::@5
to:render_moving::@6
render_moving::@6: scope:[render_moving] from render_moving::@4
[224] render_moving::screen_line#0[render_moving::xpos#2] = current_piece_char#70
to:render_moving::@5
render_moving::@5: scope:[render_moving] from render_moving::@4 render_moving::@6
[225] render_moving::xpos#1 = ++ render_moving::xpos#2
[226] render_moving::c#1 = ++ render_moving::c#2
[227] if(render_moving::c#1!=4) goto render_moving::@4
to:render_moving::@3
void render_next()
render_next: scope:[render_next] from main::@16 main::@23
[228] next_piece_idx#13 = phi( main::@16/next_piece_idx#79, main::@23/next_piece_idx#80 )
[228] render_screen_render#16 = phi( main::@16/$20, main::@23/render_screen_render#65 )
[229] if(render_screen_render#16==0) goto render_next::@1
to:render_next::@2
render_next::@1: scope:[render_next] from render_next
[230] phi()
to:render_next::@2
render_next::@2: scope:[render_next] from render_next render_next::@1
[231] render_next::screen_next_area#11 = phi( render_next::@1/PLAYFIELD_SCREEN_1+render_next::next_area_offset, render_next/PLAYFIELD_SCREEN_2+render_next::next_area_offset )
[232] render_next::$6 = next_piece_idx#13 << 1
[233] render_next::next_piece_char#0 = PIECES_NEXT_CHARS[next_piece_idx#13]
[234] render_next::next_piece_gfx#8 = (byte*)PIECES[render_next::$6]
to:render_next::@3
render_next::@3: scope:[render_next] from render_next::@2 render_next::@8
[235] render_next::l#7 = phi( render_next::@2/0, render_next::@8/render_next::l#1 )
[235] render_next::screen_next_area#10 = phi( render_next::@2/render_next::screen_next_area#11, render_next::@8/render_next::screen_next_area#4 )
[235] render_next::next_piece_gfx#3 = phi( render_next::@2/render_next::next_piece_gfx#8, render_next::@8/render_next::next_piece_gfx#1 )
to:render_next::@4
render_next::@4: scope:[render_next] from render_next::@3 render_next::@6
[236] render_next::c#2 = phi( render_next::@3/0, render_next::@6/render_next::c#1 )
[236] render_next::screen_next_area#5 = phi( render_next::@3/render_next::screen_next_area#10, render_next::@6/render_next::screen_next_area#3 )
[236] render_next::next_piece_gfx#2 = phi( render_next::@3/render_next::next_piece_gfx#3, render_next::@6/render_next::next_piece_gfx#1 )
[237] render_next::cell#0 = *render_next::next_piece_gfx#2
[238] render_next::next_piece_gfx#1 = ++ render_next::next_piece_gfx#2
[239] if(render_next::cell#0!=0) goto render_next::@5
to:render_next::@7
render_next::@7: scope:[render_next] from render_next::@4
[240] *render_next::screen_next_area#5 = 0
to:render_next::@6
render_next::@6: scope:[render_next] from render_next::@5 render_next::@7
[241] render_next::screen_next_area#3 = ++ render_next::screen_next_area#5
[242] render_next::c#1 = ++ render_next::c#2
[243] if(render_next::c#1!=4) goto render_next::@4
to:render_next::@8
render_next::@8: scope:[render_next] from render_next::@6
[244] render_next::screen_next_area#4 = render_next::screen_next_area#3 + $24
[245] render_next::l#1 = ++ render_next::l#7
[246] if(render_next::l#1!=4) goto render_next::@3
to:render_next::@return
render_next::@return: scope:[render_next] from render_next::@8
[247] return
to:@return
render_next::@5: scope:[render_next] from render_next::@4
[248] *render_next::screen_next_area#5 = render_next::next_piece_char#0
to:render_next::@6
void render_show()
render_show: scope:[render_show] from main::@3
[249] if(render_screen_show#17==0) goto render_show::toD0181
to:render_show::toD0182
render_show::toD0182: scope:[render_show] from render_show
[250] phi()
to:render_show::@1
render_show::@1: scope:[render_show] from render_show::toD0181 render_show::toD0182
[251] render_show::d018val#3 = phi( render_show::toD0181/render_show::toD0181_return#0, render_show::toD0182/render_show::toD0182_return#0 )
[252] *D018 = render_show::d018val#3
[253] *BG_COLOR1 = PIECES_COLORS_1[level#25]
[254] *BG_COLOR2 = PIECES_COLORS_2[level#25]
[255] render_screen_showing = render_screen_show#17
to:render_show::@return
render_show::@return: scope:[render_show] from render_show::@1
[256] return
to:@return
render_show::toD0181: scope:[render_show] from render_show
[257] phi()
to:render_show::@1
void keyboard_event_scan()
keyboard_event_scan: scope:[keyboard_event_scan] from main::@18
[258] phi()
to:keyboard_event_scan::@7
keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8
[259] keyboard_events_size#32 = phi( keyboard_event_scan/keyboard_events_size#20, keyboard_event_scan::@8/keyboard_events_size#14 )
[259] keyboard_event_scan::keycode#11 = phi( keyboard_event_scan/0, keyboard_event_scan::@8/keyboard_event_scan::keycode#13 )
[259] keyboard_event_scan::row#2 = phi( keyboard_event_scan/0, keyboard_event_scan::@8/keyboard_event_scan::row#1 )
[260] keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2
[261] call keyboard_matrix_read
[262] keyboard_matrix_read::return#2 = keyboard_matrix_read::return#0
to:keyboard_event_scan::@19
keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@7
[263] keyboard_event_scan::row_scan#0 = keyboard_matrix_read::return#2
[264] if(keyboard_event_scan::row_scan#0!=keyboard_scan_values[keyboard_event_scan::row#2]) goto keyboard_event_scan::@9
to:keyboard_event_scan::@16
keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@19
[265] keyboard_event_scan::keycode#1 = keyboard_event_scan::keycode#11 + 8
to:keyboard_event_scan::@8
keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@16
[266] keyboard_events_size#14 = phi( keyboard_event_scan::@15/keyboard_events_size#31, keyboard_event_scan::@16/keyboard_events_size#32 )
[266] keyboard_event_scan::keycode#13 = phi( keyboard_event_scan::@15/keyboard_event_scan::keycode#14, keyboard_event_scan::@16/keyboard_event_scan::keycode#1 )
[267] keyboard_event_scan::row#1 = ++ keyboard_event_scan::row#2
[268] if(keyboard_event_scan::row#1!=8) goto keyboard_event_scan::@7
to:keyboard_event_scan::@17
keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@8
[269] phi()
[270] call keyboard_event_pressed
[271] keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11
to:keyboard_event_scan::@20
keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@17
[272] keyboard_event_scan::$0 = keyboard_event_pressed::return#0
[273] if(keyboard_event_scan::$0==0) goto keyboard_event_scan::@1
to:keyboard_event_scan::@18
keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@20
[274] phi()
to:keyboard_event_scan::@1
keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@20
[275] phi()
[276] call keyboard_event_pressed
[277] keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11
to:keyboard_event_scan::@21
keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@1
[278] keyboard_event_scan::$3 = keyboard_event_pressed::return#1
[279] if(keyboard_event_scan::$3==0) goto keyboard_event_scan::@2
to:keyboard_event_scan::@4
keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@21
[280] phi()
to:keyboard_event_scan::@2
keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@4
[281] phi()
[282] call keyboard_event_pressed
[283] keyboard_event_pressed::return#2 = keyboard_event_pressed::return#11
to:keyboard_event_scan::@22
keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@2
[284] keyboard_event_scan::$6 = keyboard_event_pressed::return#2
[285] if(keyboard_event_scan::$6==0) goto keyboard_event_scan::@3
to:keyboard_event_scan::@5
keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@22
[286] phi()
to:keyboard_event_scan::@3
keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@5
[287] phi()
[288] call keyboard_event_pressed
[289] keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11
to:keyboard_event_scan::@23
keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@3
[290] keyboard_event_scan::$9 = keyboard_event_pressed::return#10
[291] if(keyboard_event_scan::$9==0) goto keyboard_event_scan::@return
to:keyboard_event_scan::@6
keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@23
[292] phi()
to:keyboard_event_scan::@return
keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@6
[293] return
to:@return
keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@19
[294] keyboard_events_size#11 = phi( keyboard_event_scan::@10/keyboard_events_size#31, keyboard_event_scan::@19/keyboard_events_size#32 )
[294] keyboard_event_scan::keycode#10 = phi( keyboard_event_scan::@10/keyboard_event_scan::keycode#14, keyboard_event_scan::@19/keyboard_event_scan::keycode#11 )
[294] keyboard_event_scan::col#2 = phi( keyboard_event_scan::@10/keyboard_event_scan::col#1, keyboard_event_scan::@19/0 )
[295] keyboard_event_scan::$15 = keyboard_event_scan::row_scan#0 ^ keyboard_scan_values[keyboard_event_scan::row#2]
[296] keyboard_event_scan::$16 = keyboard_event_scan::$15 & keyboard_matrix_col_bitmask[keyboard_event_scan::col#2]
[297] if(keyboard_event_scan::$16==0) goto keyboard_event_scan::@10
to:keyboard_event_scan::@12
keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@9
[298] if(keyboard_events_size#11==8) goto keyboard_event_scan::@10
to:keyboard_event_scan::@13
keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@12
[299] keyboard_event_scan::event_type#0 = keyboard_event_scan::row_scan#0 & keyboard_matrix_col_bitmask[keyboard_event_scan::col#2]
[300] if(keyboard_event_scan::event_type#0==0) goto keyboard_event_scan::@11
to:keyboard_event_scan::@14
keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@13
[301] keyboard_events[keyboard_events_size#11] = keyboard_event_scan::keycode#10
[302] keyboard_events_size#1 = ++ keyboard_events_size#11
to:keyboard_event_scan::@10
keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9
[303] keyboard_events_size#31 = phi( keyboard_event_scan::@9/keyboard_events_size#11, keyboard_event_scan::@11/keyboard_events_size#0, keyboard_event_scan::@12/keyboard_events_size#11, keyboard_event_scan::@14/keyboard_events_size#1 )
[304] keyboard_event_scan::keycode#14 = ++ keyboard_event_scan::keycode#10
[305] keyboard_event_scan::col#1 = ++ keyboard_event_scan::col#2
[306] if(keyboard_event_scan::col#1!=8) goto keyboard_event_scan::@9
to:keyboard_event_scan::@15
keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@10
[307] keyboard_scan_values[keyboard_event_scan::row#2] = keyboard_event_scan::row_scan#0
to:keyboard_event_scan::@8
keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@13
[308] keyboard_event_scan::$23 = keyboard_event_scan::keycode#10 | $40
[309] keyboard_events[keyboard_events_size#11] = keyboard_event_scan::$23
[310] keyboard_events_size#0 = ++ keyboard_events_size#11
to:keyboard_event_scan::@10
byte keyboard_event_get()
keyboard_event_get: scope:[keyboard_event_get] from main::@19
[311] if(keyboard_events_size#14==0) goto keyboard_event_get::@return
to:keyboard_event_get::@1
keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get
[312] keyboard_events_size#3 = -- keyboard_events_size#14
[313] keyboard_event_get::return#1 = keyboard_events[keyboard_events_size#3]
to:keyboard_event_get::@return
keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@1
[314] keyboard_events_size#17 = phi( keyboard_event_get/keyboard_events_size#14, keyboard_event_get::@1/keyboard_events_size#3 )
[314] keyboard_event_get::return#2 = phi( keyboard_event_get/$ff, keyboard_event_get::@1/keyboard_event_get::return#1 )
[315] return
to:@return
byte play_movement(byte play_movement::key_event)
play_movement: scope:[play_movement] from main::@4
[316] play_move_down::key_event#0 = play_movement::key_event#0
[317] call play_move_down
[318] play_move_down::return#0 = play_move_down::return#3
to:play_movement::@2
play_movement::@2: scope:[play_movement] from play_movement
[319] play_movement::render#1 = play_move_down::return#0
[320] if(game_over#16==0) goto play_movement::@1
to:play_movement::@return
play_movement::@return: scope:[play_movement] from play_movement::@2 play_movement::@4
[321] current_xpos#2 = phi( play_movement::@2/current_xpos#23, play_movement::@4/current_xpos#27 )
[321] current_piece_gfx#19 = phi( play_movement::@2/current_piece_gfx#21, play_movement::@4/current_piece_gfx#22 )
[321] current_orientation#18 = phi( play_movement::@2/current_orientation#21, play_movement::@4/current_orientation#26 )
[321] play_movement::return#2 = phi( play_movement::@2/play_movement::render#1, play_movement::@4/play_movement::return#0 )
[322] return
to:@return
play_movement::@1: scope:[play_movement] from play_movement::@2
[323] play_move_leftright::key_event#0 = play_movement::key_event#0
[324] call play_move_leftright
[325] play_move_leftright::return#0 = play_move_leftright::return#2
to:play_movement::@3
play_movement::@3: scope:[play_movement] from play_movement::@1
[326] play_movement::$3 = play_move_leftright::return#0
[327] play_movement::render#2 = play_movement::render#1 + play_movement::$3
[328] play_move_rotate::key_event#0 = play_movement::key_event#0
[329] call play_move_rotate
[330] play_move_rotate::return#0 = play_move_rotate::return#2
to:play_movement::@4
play_movement::@4: scope:[play_movement] from play_movement::@3
[331] play_movement::$4 = play_move_rotate::return#0
[332] play_movement::return#0 = play_movement::render#2 + play_movement::$4
to:play_movement::@return
void render_score()
render_score: scope:[render_score] from main::@24
[333] if(render_screen_render#19==0) goto render_score::@1
to:render_score::@2
render_score::@1: scope:[render_score] from render_score
[334] phi()
to:render_score::@2
render_score::@2: scope:[render_score] from render_score render_score::@1
[335] render_score::screen#3 = phi( render_score::@1/PLAYFIELD_SCREEN_1, render_score/PLAYFIELD_SCREEN_2 )
[336] render_bcd::screen#0 = render_score::screen#3
[337] render_bcd::bcd#0 = *(render_score::score_bytes+2)
[338] call render_bcd
to:render_score::@3
render_score::@3: scope:[render_score] from render_score::@2
[339] render_bcd::screen#1 = render_score::screen#3
[340] render_bcd::bcd#1 = *(render_score::score_bytes+1)
[341] call render_bcd
to:render_score::@4
render_score::@4: scope:[render_score] from render_score::@3
[342] render_bcd::screen#2 = render_score::screen#3
[343] render_bcd::bcd#2 = *render_score::score_bytes
[344] call render_bcd
to:render_score::@5
render_score::@5: scope:[render_score] from render_score::@4
[345] render_bcd::bcd#3 = > lines_bcd#16
[346] render_bcd::screen#3 = render_score::screen#3
[347] call render_bcd
to:render_score::@6
render_score::@6: scope:[render_score] from render_score::@5
[348] render_bcd::bcd#4 = < lines_bcd#16
[349] render_bcd::screen#4 = render_score::screen#3
[350] call render_bcd
to:render_score::@7
render_score::@7: scope:[render_score] from render_score::@6
[351] render_bcd::screen#5 = render_score::screen#3
[352] render_bcd::bcd#5 = level_bcd#18
[353] call render_bcd
to:render_score::@return
render_score::@return: scope:[render_score] from render_score::@7
[354] return
to:@return
void render_screen_swap()
render_screen_swap: scope:[render_screen_swap] from main::@25
[355] render_screen_render#12 = render_screen_render#19 ^ $20
[356] render_screen_show#14 = render_screen_show#17 ^ $20
to:render_screen_swap::@return
render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap
[357] return
to:@return
void render_screen_original(byte* render_screen_original::screen)
render_screen_original: scope:[render_screen_original] from render_init::@2 render_init::@3
[358] render_screen_original::screen#9 = phi( render_init::@2/PLAYFIELD_SCREEN_1, render_init::@3/PLAYFIELD_SCREEN_2 )
to:render_screen_original::@1
render_screen_original::@1: scope:[render_screen_original] from render_screen_original render_screen_original::@5
[359] render_screen_original::y#6 = phi( render_screen_original/0, render_screen_original::@5/render_screen_original::y#1 )
[359] render_screen_original::ocols#4 = phi( render_screen_original/PLAYFIELD_COLORS_ORIGINAL+$20*2, render_screen_original::@5/render_screen_original::ocols#1 )
[359] render_screen_original::oscr#4 = phi( render_screen_original/PLAYFIELD_SCREEN_ORIGINAL+$20*2, render_screen_original::@5/render_screen_original::oscr#1 )
[359] render_screen_original::cols#7 = phi( render_screen_original/COLS, render_screen_original::@5/render_screen_original::cols#3 )
[359] render_screen_original::screen#8 = phi( render_screen_original/render_screen_original::screen#9, render_screen_original::@5/render_screen_original::screen#10 )
to:render_screen_original::@2
render_screen_original::@2: scope:[render_screen_original] from render_screen_original::@1 render_screen_original::@2
[360] render_screen_original::x#4 = phi( render_screen_original::@1/0, render_screen_original::@2/render_screen_original::x#1 )
[360] render_screen_original::cols#4 = phi( render_screen_original::@1/render_screen_original::cols#7, render_screen_original::@2/render_screen_original::cols#1 )
[360] render_screen_original::screen#5 = phi( render_screen_original::@1/render_screen_original::screen#8, render_screen_original::@2/render_screen_original::screen#2 )
[361] *render_screen_original::screen#5 = render_screen_original::SPACE
[362] render_screen_original::screen#2 = ++ render_screen_original::screen#5
[363] *render_screen_original::cols#4 = BLACK
[364] render_screen_original::cols#1 = ++ render_screen_original::cols#4
[365] render_screen_original::x#1 = ++ render_screen_original::x#4
[366] if(render_screen_original::x#1!=4) goto render_screen_original::@2
to:render_screen_original::@3
render_screen_original::@3: scope:[render_screen_original] from render_screen_original::@2 render_screen_original::@3
[367] render_screen_original::x#5 = phi( render_screen_original::@2/render_screen_original::x#1, render_screen_original::@3/render_screen_original::x#2 )
[367] render_screen_original::cols#5 = phi( render_screen_original::@2/render_screen_original::cols#1, render_screen_original::@3/render_screen_original::cols#2 )
[367] render_screen_original::ocols#2 = phi( render_screen_original::@2/render_screen_original::ocols#4, render_screen_original::@3/render_screen_original::ocols#1 )
[367] render_screen_original::screen#6 = phi( render_screen_original::@2/render_screen_original::screen#2, render_screen_original::@3/render_screen_original::screen#3 )
[367] render_screen_original::oscr#2 = phi( render_screen_original::@2/render_screen_original::oscr#4, render_screen_original::@3/render_screen_original::oscr#1 )
[368] *render_screen_original::screen#6 = *render_screen_original::oscr#2
[369] render_screen_original::screen#3 = ++ render_screen_original::screen#6
[370] render_screen_original::oscr#1 = ++ render_screen_original::oscr#2
[371] *render_screen_original::cols#5 = *render_screen_original::ocols#2
[372] render_screen_original::cols#2 = ++ render_screen_original::cols#5
[373] render_screen_original::ocols#1 = ++ render_screen_original::ocols#2
[374] render_screen_original::x#2 = ++ render_screen_original::x#5
[375] if(render_screen_original::x#2!=$24) goto render_screen_original::@3
to:render_screen_original::@4
render_screen_original::@4: scope:[render_screen_original] from render_screen_original::@3 render_screen_original::@4
[376] render_screen_original::x#6 = phi( render_screen_original::@3/render_screen_original::x#2, render_screen_original::@4/render_screen_original::x#3 )
[376] render_screen_original::cols#6 = phi( render_screen_original::@3/render_screen_original::cols#2, render_screen_original::@4/render_screen_original::cols#3 )
[376] render_screen_original::screen#7 = phi( render_screen_original::@3/render_screen_original::screen#3, render_screen_original::@4/render_screen_original::screen#10 )
[377] *render_screen_original::screen#7 = render_screen_original::SPACE
[378] render_screen_original::screen#10 = ++ render_screen_original::screen#7
[379] *render_screen_original::cols#6 = BLACK
[380] render_screen_original::cols#3 = ++ render_screen_original::cols#6
[381] render_screen_original::x#3 = ++ render_screen_original::x#6
[382] if(render_screen_original::x#3!=$28) goto render_screen_original::@4
to:render_screen_original::@5
render_screen_original::@5: scope:[render_screen_original] from render_screen_original::@4
[383] render_screen_original::y#1 = ++ render_screen_original::y#6
[384] if(render_screen_original::y#1!=$19) goto render_screen_original::@1
to:render_screen_original::@return
render_screen_original::@return: scope:[render_screen_original] from render_screen_original::@5
[385] return
to:@return
byte play_collision(byte play_collision::xpos , byte play_collision::ypos , byte play_collision::orientation)
play_collision: scope:[play_collision] from play_move_down::@8 play_move_leftright::@1 play_move_leftright::@3 play_move_rotate::@3 play_spawn_current
[386] play_collision::xpos#6 = phi( play_move_down::@8/play_collision::xpos#0, play_move_leftright::@1/play_collision::xpos#1, play_move_leftright::@3/play_collision::xpos#2, play_move_rotate::@3/play_collision::xpos#3, play_spawn_current/play_collision::xpos#4 )
[386] play_collision::yp#0 = phi( play_move_down::@8/play_collision::ypos#0, play_move_leftright::@1/play_collision::ypos#1, play_move_leftright::@3/play_collision::ypos#2, play_move_rotate::@3/play_collision::ypos#3, play_spawn_current/play_collision::ypos#4 )
[386] play_collision::orientation#5 = phi( play_move_down::@8/play_collision::orientation#0, play_move_leftright::@1/play_collision::orientation#1, play_move_leftright::@3/play_collision::orientation#2, play_move_rotate::@3/play_collision::orientation#3, play_spawn_current/0 )
[386] current_piece#18 = phi( play_move_down::@8/current_piece#98, play_move_leftright::@1/current_piece#99, play_move_leftright::@3/current_piece#100, play_move_rotate::@3/current_piece#101, play_spawn_current/current_piece#102 )
[387] play_collision::piece_gfx#0 = current_piece#18 + play_collision::orientation#5
to:play_collision::@1
play_collision::@1: scope:[play_collision] from play_collision play_collision::@9
[388] play_collision::l#6 = phi( play_collision/0, play_collision::@9/play_collision::l#1 )
[388] play_collision::i#3 = phi( play_collision/0, play_collision::@9/play_collision::i#10 )
[388] play_collision::yp#2 = phi( play_collision/play_collision::yp#0, play_collision::@9/play_collision::yp#1 )
[389] play_collision::$14 = play_collision::yp#2 << 1
[390] play_collision::playfield_line#0 = playfield_lines[play_collision::$14]
[391] play_collision::xp#8 = play_collision::xpos#6
to:play_collision::@2
play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@10
[392] play_collision::c#2 = phi( play_collision::@1/0, play_collision::@10/play_collision::c#1 )
[392] play_collision::xp#2 = phi( play_collision::@1/play_collision::xp#8, play_collision::@10/play_collision::xp#1 )
[392] play_collision::i#2 = phi( play_collision::@1/play_collision::i#3, play_collision::@10/play_collision::i#12 )
[393] play_collision::i#1 = ++ play_collision::i#2
[394] if(play_collision::piece_gfx#0[play_collision::i#2]==0) goto play_collision::@3
to:play_collision::@7
play_collision::@7: scope:[play_collision] from play_collision::@2
[395] if(play_collision::yp#2<PLAYFIELD_LINES) goto play_collision::@4
to:play_collision::@return
play_collision::@4: scope:[play_collision] from play_collision::@7
[396] play_collision::$5 = play_collision::xp#2 & $80
[397] if(play_collision::$5==0) goto play_collision::@5
to:play_collision::@return
play_collision::@5: scope:[play_collision] from play_collision::@4
[398] if(play_collision::xp#2<PLAYFIELD_COLS) goto play_collision::@6
to:play_collision::@return
play_collision::@6: scope:[play_collision] from play_collision::@5
[399] if(play_collision::playfield_line#0[play_collision::xp#2]==0) goto play_collision::@3
to:play_collision::@return
play_collision::@return: scope:[play_collision] from play_collision::@4 play_collision::@5 play_collision::@6 play_collision::@7 play_collision::@8
[400] play_collision::return#15 = phi( play_collision::@7/COLLISION_BOTTOM, play_collision::@8/COLLISION_NONE, play_collision::@4/COLLISION_LEFT, play_collision::@5/COLLISION_RIGHT, play_collision::@6/COLLISION_PLAYFIELD )
[401] return
to:@return
play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@6
[402] play_collision::xp#1 = ++ play_collision::xp#2
[403] play_collision::c#1 = ++ play_collision::c#2
[404] if(play_collision::c#1!=4) goto play_collision::@10
to:play_collision::@8
play_collision::@8: scope:[play_collision] from play_collision::@3
[405] play_collision::yp#1 = ++ play_collision::yp#2
[406] play_collision::l#1 = ++ play_collision::l#6
[407] if(play_collision::l#1!=4) goto play_collision::@9
to:play_collision::@return
play_collision::@9: scope:[play_collision] from play_collision::@8
[408] play_collision::i#10 = play_collision::i#1
to:play_collision::@1
play_collision::@10: scope:[play_collision] from play_collision::@3
[409] play_collision::i#12 = play_collision::i#1
to:play_collision::@2
byte keyboard_matrix_read(byte keyboard_matrix_read::rowid)
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@7
[410] *((byte*)CIA1) = keyboard_matrix_row_bitmask[keyboard_matrix_read::rowid#0]
[411] keyboard_matrix_read::return#0 = ~ *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_B)
to:keyboard_matrix_read::@return
keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read
[412] return
to:@return
byte keyboard_event_pressed(byte keyboard_event_pressed::keycode)
keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@1 keyboard_event_scan::@17 keyboard_event_scan::@2 keyboard_event_scan::@3 play_move_down::@1
[413] keyboard_event_pressed::keycode#5 = phi( keyboard_event_scan::@1/KEY_RSHIFT, keyboard_event_scan::@17/KEY_LSHIFT, keyboard_event_scan::@2/KEY_CTRL, keyboard_event_scan::@3/KEY_COMMODORE, play_move_down::@1/KEY_SPACE )
[414] keyboard_event_pressed::$0 = keyboard_event_pressed::keycode#5 >> 3
[415] keyboard_event_pressed::row_bits#0 = keyboard_scan_values[keyboard_event_pressed::$0]
[416] keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#5 & 7
[417] keyboard_event_pressed::return#11 = keyboard_event_pressed::row_bits#0 & keyboard_matrix_col_bitmask[keyboard_event_pressed::$1]
to:keyboard_event_pressed::@return
keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed
[418] return
to:@return
byte play_move_down(byte play_move_down::key_event)
play_move_down: scope:[play_move_down] from play_movement
[419] current_movedown_counter#13 = ++ current_movedown_counter#17
[420] if(play_move_down::key_event#0!=KEY_SPACE) goto play_move_down::@1
to:play_move_down::@4
play_move_down::@4: scope:[play_move_down] from play_move_down
[421] phi()
to:play_move_down::@1
play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@4
[422] play_move_down::movedown#10 = phi( play_move_down/0, play_move_down::@4/1 )
[423] call keyboard_event_pressed
[424] keyboard_event_pressed::return#12 = keyboard_event_pressed::return#11
to:play_move_down::@12
play_move_down::@12: scope:[play_move_down] from play_move_down::@1
[425] play_move_down::$2 = keyboard_event_pressed::return#12
[426] if(play_move_down::$2==0) goto play_move_down::@2
to:play_move_down::@5
play_move_down::@5: scope:[play_move_down] from play_move_down::@12
[427] if(current_movedown_counter#13<current_movedown_fast) goto play_move_down::@2
to:play_move_down::@6
play_move_down::@6: scope:[play_move_down] from play_move_down::@5
[428] play_move_down::movedown#2 = ++ play_move_down::movedown#10
to:play_move_down::@2
play_move_down::@2: scope:[play_move_down] from play_move_down::@12 play_move_down::@5 play_move_down::@6
[429] play_move_down::movedown#7 = phi( play_move_down::@12/play_move_down::movedown#10, play_move_down::@5/play_move_down::movedown#10, play_move_down::@6/play_move_down::movedown#2 )
[430] if(current_movedown_counter#13<current_movedown_slow#13) goto play_move_down::@3
to:play_move_down::@7
play_move_down::@7: scope:[play_move_down] from play_move_down::@2
[431] play_move_down::movedown#3 = ++ play_move_down::movedown#7
to:play_move_down::@3
play_move_down::@3: scope:[play_move_down] from play_move_down::@2 play_move_down::@7
[432] play_move_down::movedown#6 = phi( play_move_down::@2/play_move_down::movedown#7, play_move_down::@7/play_move_down::movedown#3 )
[433] if(play_move_down::movedown#6==0) goto play_move_down::@return
to:play_move_down::@8
play_move_down::@8: scope:[play_move_down] from play_move_down::@3
[434] play_collision::ypos#0 = current_ypos#10 + 1
[435] play_collision::xpos#0 = current_xpos#13
[436] play_collision::orientation#0 = current_orientation#12
[437] current_piece#98 = current_piece#23
[438] call play_collision
[439] play_collision::return#0 = play_collision::return#15
to:play_move_down::@13
play_move_down::@13: scope:[play_move_down] from play_move_down::@8
[440] play_move_down::$12 = play_collision::return#0
[441] if(play_move_down::$12==COLLISION_NONE) goto play_move_down::@10
to:play_move_down::@9
play_move_down::@9: scope:[play_move_down] from play_move_down::@13
[442] phi()
[443] call play_lock_current
to:play_move_down::@14
play_move_down::@14: scope:[play_move_down] from play_move_down::@9
[444] phi()
[445] call play_remove_lines
[446] play_remove_lines::return#0 = play_remove_lines::removed#7
to:play_move_down::@15
play_move_down::@15: scope:[play_move_down] from play_move_down::@14
[447] play_move_down::removed#0 = play_remove_lines::return#0
[448] play_update_score::removed#0 = play_move_down::removed#0
[449] call play_update_score
to:play_move_down::@16
play_move_down::@16: scope:[play_move_down] from play_move_down::@15
[450] phi()
[451] call play_spawn_current
to:play_move_down::@17
play_move_down::@17: scope:[play_move_down] from play_move_down::@16
[452] current_piece#95 = (byte*)PIECES[play_spawn_current::$7]
[453] current_piece_gfx#116 = (byte*)PIECES[play_spawn_current::$7]
to:play_move_down::@11
play_move_down::@11: scope:[play_move_down] from play_move_down::@10 play_move_down::@17
[454] next_piece_idx#32 = phi( play_move_down::@10/next_piece_idx#23, play_move_down::@17/play_spawn_current::piece_idx#2 )
[454] game_over#29 = phi( play_move_down::@10/game_over#22, play_move_down::@17/game_over#53 )
[454] current_xpos#45 = phi( play_move_down::@10/current_xpos#13, play_move_down::@17/current_xpos#100 )
[454] current_piece_gfx#37 = phi( play_move_down::@10/current_piece_gfx#12, play_move_down::@17/current_piece_gfx#116 )
[454] current_orientation#39 = phi( play_move_down::@10/current_orientation#12, play_move_down::@17/0 )
[454] current_piece_char#31 = phi( play_move_down::@10/current_piece_char#23, play_move_down::@17/current_piece_char#4 )
[454] current_piece#30 = phi( play_move_down::@10/current_piece#23, play_move_down::@17/current_piece#95 )
[454] level_bcd#33 = phi( play_move_down::@10/level_bcd#10, play_move_down::@17/level_bcd#20 )
[454] current_movedown_slow#39 = phi( play_move_down::@10/current_movedown_slow#13, play_move_down::@17/current_movedown_slow#24 )
[454] level#35 = phi( play_move_down::@10/level#25, play_move_down::@17/level#20 )
[454] lines_bcd#28 = phi( play_move_down::@10/lines_bcd#20, play_move_down::@17/lines_bcd#18 )
[454] current_ypos#40 = phi( play_move_down::@10/current_ypos#2, play_move_down::@17/current_ypos#5 )
to:play_move_down::@return
play_move_down::@return: scope:[play_move_down] from play_move_down::@11 play_move_down::@3
[455] next_piece_idx#17 = phi( play_move_down::@11/next_piece_idx#32, play_move_down::@3/next_piece_idx#23 )
[455] game_over#16 = phi( play_move_down::@11/game_over#29, play_move_down::@3/game_over#22 )
[455] current_xpos#23 = phi( play_move_down::@11/current_xpos#45, play_move_down::@3/current_xpos#13 )
[455] current_piece_gfx#21 = phi( play_move_down::@11/current_piece_gfx#37, play_move_down::@3/current_piece_gfx#12 )
[455] current_orientation#21 = phi( play_move_down::@11/current_orientation#39, play_move_down::@3/current_orientation#12 )
[455] current_piece_char#17 = phi( play_move_down::@11/current_piece_char#31, play_move_down::@3/current_piece_char#23 )
[455] current_piece#16 = phi( play_move_down::@11/current_piece#30, play_move_down::@3/current_piece#23 )
[455] level_bcd#18 = phi( play_move_down::@11/level_bcd#33, play_move_down::@3/level_bcd#10 )
[455] current_movedown_slow#22 = phi( play_move_down::@11/current_movedown_slow#39, play_move_down::@3/current_movedown_slow#13 )
[455] level#18 = phi( play_move_down::@11/level#35, play_move_down::@3/level#25 )
[455] lines_bcd#16 = phi( play_move_down::@11/lines_bcd#28, play_move_down::@3/lines_bcd#20 )
[455] current_ypos#20 = phi( play_move_down::@11/current_ypos#40, play_move_down::@3/current_ypos#10 )
[455] current_movedown_counter#15 = phi( play_move_down::@11/0, play_move_down::@3/current_movedown_counter#13 )
[455] play_move_down::return#3 = phi( play_move_down::@11/1, play_move_down::@3/0 )
[456] return
to:@return
play_move_down::@10: scope:[play_move_down] from play_move_down::@13
[457] current_ypos#2 = ++ current_ypos#10
to:play_move_down::@11
byte play_move_leftright(byte play_move_leftright::key_event)
play_move_leftright: scope:[play_move_leftright] from play_movement::@1
[458] if(play_move_leftright::key_event#0==KEY_COMMA) goto play_move_leftright::@1
to:play_move_leftright::@2
play_move_leftright::@2: scope:[play_move_leftright] from play_move_leftright
[459] if(play_move_leftright::key_event#0!=KEY_DOT) goto play_move_leftright::@return
to:play_move_leftright::@3
play_move_leftright::@3: scope:[play_move_leftright] from play_move_leftright::@2
[460] play_collision::xpos#2 = current_xpos#23 + 1
[461] play_collision::ypos#2 = current_ypos#20
[462] play_collision::orientation#2 = current_orientation#21
[463] current_piece#100 = current_piece#16
[464] call play_collision
[465] play_collision::return#13 = play_collision::return#15
to:play_move_leftright::@7
play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@3
[466] play_move_leftright::$4 = play_collision::return#13
[467] if(play_move_leftright::$4!=COLLISION_NONE) goto play_move_leftright::@return
to:play_move_leftright::@4
play_move_leftright::@4: scope:[play_move_leftright] from play_move_leftright::@7
[468] current_xpos#5 = ++ current_xpos#23
to:play_move_leftright::@return
play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@2 play_move_leftright::@4 play_move_leftright::@5 play_move_leftright::@6 play_move_leftright::@7
[469] current_xpos#27 = phi( play_move_leftright::@2/current_xpos#23, play_move_leftright::@4/current_xpos#5, play_move_leftright::@5/current_xpos#7, play_move_leftright::@6/current_xpos#23, play_move_leftright::@7/current_xpos#23 )
[469] play_move_leftright::return#2 = phi( play_move_leftright::@2/0, play_move_leftright::@4/1, play_move_leftright::@5/1, play_move_leftright::@6/0, play_move_leftright::@7/0 )
[470] return
to:@return
play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright
[471] play_collision::xpos#1 = current_xpos#23 - 1
[472] play_collision::ypos#1 = current_ypos#20
[473] play_collision::orientation#1 = current_orientation#21
[474] current_piece#99 = current_piece#16
[475] call play_collision
[476] play_collision::return#1 = play_collision::return#15
to:play_move_leftright::@6
play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright::@1
[477] play_move_leftright::$8 = play_collision::return#1
[478] if(play_move_leftright::$8!=COLLISION_NONE) goto play_move_leftright::@return
to:play_move_leftright::@5
play_move_leftright::@5: scope:[play_move_leftright] from play_move_leftright::@6
[479] current_xpos#7 = -- current_xpos#23
to:play_move_leftright::@return
byte play_move_rotate(byte play_move_rotate::key_event)
play_move_rotate: scope:[play_move_rotate] from play_movement::@3
[480] if(play_move_rotate::key_event#0==KEY_Z) goto play_move_rotate::@1
to:play_move_rotate::@4
play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate
[481] if(play_move_rotate::key_event#0==KEY_X) goto play_move_rotate::@2
to:play_move_rotate::@return
play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@4 play_move_rotate::@5 play_move_rotate::@6
[482] current_piece_gfx#22 = phi( play_move_rotate::@6/current_piece_gfx#21, play_move_rotate::@4/current_piece_gfx#21, play_move_rotate::@5/current_piece_gfx#6 )
[482] current_orientation#26 = phi( play_move_rotate::@6/current_orientation#21, play_move_rotate::@4/current_orientation#21, play_move_rotate::@5/current_orientation#6 )
[482] play_move_rotate::return#2 = phi( play_move_rotate::@6/0, play_move_rotate::@4/0, play_move_rotate::@5/1 )
[483] return
to:@return
play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@4
[484] play_move_rotate::$5 = current_orientation#21 + $10
[485] play_move_rotate::orientation#2 = play_move_rotate::$5 & $3f
to:play_move_rotate::@3
play_move_rotate::@3: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2
[486] play_move_rotate::orientation#3 = phi( play_move_rotate::@1/play_move_rotate::orientation#1, play_move_rotate::@2/play_move_rotate::orientation#2 )
[487] play_collision::xpos#3 = current_xpos#27
[488] play_collision::ypos#3 = current_ypos#20
[489] play_collision::orientation#3 = play_move_rotate::orientation#3
[490] current_piece#101 = current_piece#16
[491] call play_collision
[492] play_collision::return#14 = play_collision::return#15
to:play_move_rotate::@6
play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate::@3
[493] play_move_rotate::$2 = play_collision::return#14
[494] if(play_move_rotate::$2!=COLLISION_NONE) goto play_move_rotate::@return
to:play_move_rotate::@5
play_move_rotate::@5: scope:[play_move_rotate] from play_move_rotate::@6
[495] current_orientation#6 = play_move_rotate::orientation#3
[496] current_piece_gfx#6 = current_piece#16 + current_orientation#6
to:play_move_rotate::@return
play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate
[497] play_move_rotate::$7 = current_orientation#21 - $10
[498] play_move_rotate::orientation#1 = play_move_rotate::$7 & $3f
to:play_move_rotate::@3
void render_bcd(byte* render_bcd::screen , word render_bcd::offset , byte render_bcd::bcd , byte render_bcd::only_low)
render_bcd: scope:[render_bcd] from render_score::@2 render_score::@3 render_score::@4 render_score::@5 render_score::@6 render_score::@7
[499] render_bcd::bcd#6 = phi( render_score::@2/render_bcd::bcd#0, render_score::@3/render_bcd::bcd#1, render_score::@4/render_bcd::bcd#2, render_score::@5/render_bcd::bcd#3, render_score::@6/render_bcd::bcd#4, render_score::@7/render_bcd::bcd#5 )
[499] render_bcd::only_low#6 = phi( render_score::@2/0, render_score::@3/0, render_score::@4/0, render_score::@5/1, render_score::@6/0, render_score::@7/0 )
[499] render_bcd::offset#6 = phi( render_score::@2/render_score::score_offset, render_score::@3/render_score::score_offset+2, render_score::@4/render_score::score_offset+4, render_score::@5/render_score::lines_offset, render_score::@6/render_score::lines_offset+1, render_score::@7/render_score::level_offset )
[499] render_bcd::screen#6 = phi( render_score::@2/render_bcd::screen#0, render_score::@3/render_bcd::screen#1, render_score::@4/render_bcd::screen#2, render_score::@5/render_bcd::screen#3, render_score::@6/render_bcd::screen#4, render_score::@7/render_bcd::screen#5 )
[500] render_bcd::screen_pos#0 = render_bcd::screen#6 + render_bcd::offset#6
[501] if(render_bcd::only_low#6!=0) goto render_bcd::@1
to:render_bcd::@2
render_bcd::@2: scope:[render_bcd] from render_bcd
[502] render_bcd::$5 = render_bcd::bcd#6 >> 4
[503] render_bcd::$6 = render_bcd::ZERO_CHAR + render_bcd::$5
[504] *render_bcd::screen_pos#0 = render_bcd::$6
[505] render_bcd::screen_pos#2 = ++ render_bcd::screen_pos#0
to:render_bcd::@1
render_bcd::@1: scope:[render_bcd] from render_bcd render_bcd::@2
[506] render_bcd::screen_pos#3 = phi( render_bcd/render_bcd::screen_pos#0, render_bcd::@2/render_bcd::screen_pos#2 )
[507] render_bcd::$3 = render_bcd::bcd#6 & $f
[508] render_bcd::$4 = render_bcd::ZERO_CHAR + render_bcd::$3
[509] *render_bcd::screen_pos#3 = render_bcd::$4
to:render_bcd::@return
render_bcd::@return: scope:[render_bcd] from render_bcd::@1
[510] return
to:@return
void play_lock_current()
play_lock_current: scope:[play_lock_current] from play_move_down::@9
[511] play_lock_current::yp#0 = current_ypos#10
to:play_lock_current::@1
play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@6
[512] play_lock_current::l#6 = phi( play_lock_current/0, play_lock_current::@6/play_lock_current::l#1 )
[512] play_lock_current::i#3 = phi( play_lock_current/0, play_lock_current::@6/play_lock_current::i#7 )
[512] play_lock_current::yp#2 = phi( play_lock_current/play_lock_current::yp#0, play_lock_current::@6/play_lock_current::yp#1 )
[513] play_lock_current::$4 = play_lock_current::yp#2 << 1
[514] play_lock_current::playfield_line#0 = playfield_lines[play_lock_current::$4]
[515] play_lock_current::xp#0 = current_xpos#13
to:play_lock_current::@2
play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@7
[516] play_lock_current::c#2 = phi( play_lock_current::@1/0, play_lock_current::@7/play_lock_current::c#1 )
[516] play_lock_current::xp#2 = phi( play_lock_current::@1/play_lock_current::xp#0, play_lock_current::@7/play_lock_current::xp#1 )
[516] play_lock_current::i#2 = phi( play_lock_current::@1/play_lock_current::i#3, play_lock_current::@7/play_lock_current::i#9 )
[517] play_lock_current::i#1 = ++ play_lock_current::i#2
[518] if(current_piece_gfx#12[play_lock_current::i#2]==0) goto play_lock_current::@3
to:play_lock_current::@4
play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2
[519] play_lock_current::playfield_line#0[play_lock_current::xp#2] = current_piece_char#23
to:play_lock_current::@3
play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4
[520] play_lock_current::xp#1 = ++ play_lock_current::xp#2
[521] play_lock_current::c#1 = ++ play_lock_current::c#2
[522] if(play_lock_current::c#1!=4) goto play_lock_current::@7
to:play_lock_current::@5
play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3
[523] play_lock_current::yp#1 = ++ play_lock_current::yp#2
[524] play_lock_current::l#1 = ++ play_lock_current::l#6
[525] if(play_lock_current::l#1!=4) goto play_lock_current::@6
to:play_lock_current::@return
play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5
[526] return
to:@return
play_lock_current::@6: scope:[play_lock_current] from play_lock_current::@5
[527] play_lock_current::i#7 = play_lock_current::i#1
to:play_lock_current::@1
play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@3
[528] play_lock_current::i#9 = play_lock_current::i#1
to:play_lock_current::@2
byte play_remove_lines()
play_remove_lines: scope:[play_remove_lines] from play_move_down::@14
[529] phi()
to:play_remove_lines::@1
play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@6
[530] play_remove_lines::removed#11 = phi( play_remove_lines/0, play_remove_lines::@6/play_remove_lines::removed#7 )
[530] play_remove_lines::y#8 = phi( play_remove_lines/0, play_remove_lines::@6/play_remove_lines::y#1 )
[530] play_remove_lines::w#12 = phi( play_remove_lines/PLAYFIELD_LINES*PLAYFIELD_COLS-1, play_remove_lines::@6/play_remove_lines::w#11 )
[530] play_remove_lines::r#3 = phi( play_remove_lines/PLAYFIELD_LINES*PLAYFIELD_COLS-1, play_remove_lines::@6/play_remove_lines::r#1 )
to:play_remove_lines::@2
play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3
[531] play_remove_lines::full#4 = phi( play_remove_lines::@1/1, play_remove_lines::@3/play_remove_lines::full#2 )
[531] play_remove_lines::x#2 = phi( play_remove_lines::@1/0, play_remove_lines::@3/play_remove_lines::x#1 )
[531] play_remove_lines::w#4 = phi( play_remove_lines::@1/play_remove_lines::w#12, play_remove_lines::@3/play_remove_lines::w#1 )
[531] play_remove_lines::r#2 = phi( play_remove_lines::@1/play_remove_lines::r#3, play_remove_lines::@3/play_remove_lines::r#1 )
[532] play_remove_lines::c#0 = playfield[play_remove_lines::r#2]
[533] play_remove_lines::r#1 = -- play_remove_lines::r#2
[534] if(play_remove_lines::c#0!=0) goto play_remove_lines::@9
to:play_remove_lines::@3
play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@2
[535] phi()
to:play_remove_lines::@3
play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@2 play_remove_lines::@9
[536] play_remove_lines::full#2 = phi( play_remove_lines::@9/play_remove_lines::full#4, play_remove_lines::@2/0 )
[537] playfield[play_remove_lines::w#4] = play_remove_lines::c#0
[538] play_remove_lines::w#1 = -- play_remove_lines::w#4
[539] play_remove_lines::x#1 = ++ play_remove_lines::x#2
[540] if(play_remove_lines::x#1!=PLAYFIELD_COLS-1+1) goto play_remove_lines::@2
to:play_remove_lines::@4
play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@3
[541] if(play_remove_lines::full#2!=1) goto play_remove_lines::@6
to:play_remove_lines::@5
play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@4
[542] play_remove_lines::w#2 = play_remove_lines::w#1 + PLAYFIELD_COLS
[543] play_remove_lines::removed#1 = ++ play_remove_lines::removed#11
to:play_remove_lines::@6
play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@4 play_remove_lines::@5
[544] play_remove_lines::removed#7 = phi( play_remove_lines::@4/play_remove_lines::removed#11, play_remove_lines::@5/play_remove_lines::removed#1 )
[544] play_remove_lines::w#11 = phi( play_remove_lines::@4/play_remove_lines::w#1, play_remove_lines::@5/play_remove_lines::w#2 )
[545] play_remove_lines::y#1 = ++ play_remove_lines::y#8
[546] if(play_remove_lines::y#1!=PLAYFIELD_LINES-1+1) goto play_remove_lines::@1
to:play_remove_lines::@7
play_remove_lines::@7: scope:[play_remove_lines] from play_remove_lines::@6 play_remove_lines::@8
[547] play_remove_lines::w#6 = phi( play_remove_lines::@6/play_remove_lines::w#11, play_remove_lines::@8/play_remove_lines::w#3 )
[548] if(play_remove_lines::w#6!=$ff) goto play_remove_lines::@8
to:play_remove_lines::@return
play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@7
[549] return
to:@return
play_remove_lines::@8: scope:[play_remove_lines] from play_remove_lines::@7
[550] playfield[play_remove_lines::w#6] = 0
[551] play_remove_lines::w#3 = -- play_remove_lines::w#6
to:play_remove_lines::@7
void play_update_score(byte play_update_score::removed)
play_update_score: scope:[play_update_score] from play_move_down::@15
[552] if(play_update_score::removed#0==0) goto play_update_score::@return
to:play_update_score::@1
play_update_score::@1: scope:[play_update_score] from play_update_score
[553] play_update_score::$2 = < lines_bcd#20
[554] play_update_score::lines_before#0 = play_update_score::$2 & $f0
[555] play_update_score::$9 = play_update_score::removed#0 << 2
[556] play_update_score::add_bcd#0 = score_add_bcd[play_update_score::$9]
asm { sed }
[558] lines_bcd#31 = lines_bcd#20 + play_update_score::removed#0
[559] score_bcd = score_bcd + play_update_score::add_bcd#0
asm { cld }
[561] play_update_score::$4 = < lines_bcd#31
[562] play_update_score::lines_after#0 = play_update_score::$4 & $f0
[563] if(play_update_score::lines_before#0==play_update_score::lines_after#0) goto play_update_score::@return
to:play_update_score::@2
play_update_score::@2: scope:[play_update_score] from play_update_score::@1
[564] phi()
[565] call play_increase_level
to:play_update_score::@return
play_update_score::@return: scope:[play_update_score] from play_update_score play_update_score::@1 play_update_score::@2
[566] level_bcd#20 = phi( play_update_score/level_bcd#10, play_update_score::@1/level_bcd#10, play_update_score::@2/level_bcd#63 )
[566] current_movedown_slow#24 = phi( play_update_score/current_movedown_slow#13, play_update_score::@1/current_movedown_slow#13, play_update_score::@2/current_movedown_slow#67 )
[566] level#20 = phi( play_update_score/level#25, play_update_score::@1/level#25, play_update_score::@2/level#22 )
[566] lines_bcd#18 = phi( play_update_score/lines_bcd#20, play_update_score::@1/lines_bcd#31, play_update_score::@2/lines_bcd#31 )
[567] return
to:@return
void play_increase_level()
play_increase_level: scope:[play_increase_level] from play_update_score::@2
[568] level#22 = ++ level#25
[569] if(level#22>=$1d+1) goto play_increase_level::@1
to:play_increase_level::@3
play_increase_level::@3: scope:[play_increase_level] from play_increase_level
[570] current_movedown_slow#9 = MOVEDOWN_SLOW_SPEEDS[level#22]
to:play_increase_level::@1
play_increase_level::@1: scope:[play_increase_level] from play_increase_level play_increase_level::@3
[571] current_movedown_slow#67 = phi( play_increase_level/1, play_increase_level::@3/current_movedown_slow#9 )
[572] level_bcd#22 = ++ level_bcd#10
[573] play_increase_level::$1 = level_bcd#22 & $f
[574] if(play_increase_level::$1!=$a) goto play_increase_level::@2
to:play_increase_level::@4
play_increase_level::@4: scope:[play_increase_level] from play_increase_level::@1
[575] level_bcd#7 = level_bcd#22 + 6
to:play_increase_level::@2
play_increase_level::@2: scope:[play_increase_level] from play_increase_level::@1 play_increase_level::@4
[576] level_bcd#63 = phi( play_increase_level::@1/level_bcd#22, play_increase_level::@4/level_bcd#7 )
asm { sed }
to:play_increase_level::@5
play_increase_level::@5: scope:[play_increase_level] from play_increase_level::@2 play_increase_level::@5
[578] play_increase_level::b#2 = phi( play_increase_level::@2/0, play_increase_level::@5/play_increase_level::b#1 )
[579] play_increase_level::$5 = play_increase_level::b#2 << 2
[580] score_add_bcd[play_increase_level::$5] = score_add_bcd[play_increase_level::$5] + SCORE_BASE_BCD[play_increase_level::$5]
[581] play_increase_level::b#1 = ++ play_increase_level::b#2
[582] if(play_increase_level::b#1!=5) goto play_increase_level::@5
to:play_increase_level::@6
play_increase_level::@6: scope:[play_increase_level] from play_increase_level::@5
asm { cld }
to:play_increase_level::@return
play_increase_level::@return: scope:[play_increase_level] from play_increase_level::@6
[584] return
to:@return
VARIABLE REGISTER WEIGHTS
void __start()
byte __start::__init1_toSpritePtr1_return
byte* __start::__init1_toSpritePtr1_sprite
byte current_movedown_counter
byte current_movedown_counter#13 26666.933333333334
byte current_movedown_counter#15 2732.5135135135133
byte current_movedown_counter#17 7777.153846153846
byte current_movedown_slow
byte current_movedown_slow#0 4.869565217391305
byte current_movedown_slow#13 41091.392857142855
byte current_movedown_slow#22 5435.243243243243
byte current_movedown_slow#24 442857.7142857142
byte current_movedown_slow#39 300003.0
byte current_movedown_slow#67 733333.4666666666
byte current_movedown_slow#9 2.0000002E7
byte current_orientation
byte current_orientation#12 8137.972972972973
byte current_orientation#18 1004.952380952381
byte current_orientation#21 16530.79591836735
byte current_orientation#26 51667.33333333333
byte current_orientation#39 200002.0
byte current_orientation#6 150001.5
byte* current_piece
byte* current_piece#100 200002.0
byte* current_piece#101 200002.0
byte* current_piece#102 2000002.0
byte* current_piece#103 11.0
byte* current_piece#16 7706.51282051282
byte* current_piece#18 1.1400006E7
byte* current_piece#23 8138.27027027027
byte* current_piece#30 300003.0
byte* current_piece#95 100001.0
byte* current_piece#98 200002.0
byte* current_piece#99 200002.0
byte current_piece_char
byte current_piece_char#100 202.0
byte current_piece_char#17 5437.9729729729725
byte current_piece_char#23 1.8182183847272727E8
byte current_piece_char#31 300003.0
byte current_piece_char#4 34375.75
byte current_piece_char#70 47624.42857142857
byte current_piece_char#99 22.0
byte* current_piece_gfx
byte* current_piece_gfx#111 11.0
byte* current_piece_gfx#112 101.0
byte* current_piece_gfx#116 200002.0
byte* current_piece_gfx#12 1.8182183847272727E8
byte* current_piece_gfx#122 22.0
byte* current_piece_gfx#19 1009.7619047619048
byte* current_piece_gfx#21 15185.37037037037
byte* current_piece_gfx#22 51667.33333333333
byte* current_piece_gfx#37 300003.0
byte* current_piece_gfx#6 200002.0
byte* current_piece_gfx#66 47624.42857142857
byte current_xpos
byte current_xpos#100 67742.74193548388
byte current_xpos#118 7.333333333333333
byte current_xpos#119 67.33333333333333
byte current_xpos#13 1.8187293036363635E7
byte current_xpos#2 1009.7619047619048
byte current_xpos#23 36400.4
byte current_xpos#27 20333.566666666666
byte current_xpos#45 300003.0
byte current_xpos#5 200002.0
byte current_xpos#61 4767.285714285714
byte current_xpos#7 200002.0
byte current_ypos
byte current_ypos#10 35165.32432432432
byte current_ypos#14 1113.0
byte current_ypos#2 200002.0
byte current_ypos#20 6425.74358974359
byte current_ypos#40 300003.0
byte current_ypos#5 70000.83333333334
byte current_ypos#97 5.5
byte current_ypos#98 40.4
byte game_over
byte game_over#16 5705.54054054054
byte game_over#22 6567.760869565218
byte game_over#29 300003.0
byte game_over#53 47827.13043478261
byte game_over#66 78572.35714285714
volatile byte irq_cnt loadstore 0.48000000000000004
volatile byte irq_raster_next loadstore 0.44444444444444453
volatile byte irq_sprite_ptr loadstore 0.45161290322580644
volatile byte irq_sprite_ypos loadstore 0.48275862068965525
byte keyboard_event_get()
byte keyboard_event_get::return
byte keyboard_event_get::return#1 20002.0
byte keyboard_event_get::return#2 3667.333333333333
byte keyboard_event_get::return#3 2002.0
byte keyboard_event_pressed(byte keyboard_event_pressed::keycode)
byte~ keyboard_event_pressed::$0 2000002.0
byte~ keyboard_event_pressed::$1 2000002.0
byte keyboard_event_pressed::keycode
byte keyboard_event_pressed::keycode#5 666667.3333333334
byte keyboard_event_pressed::return
byte keyboard_event_pressed::return#0 20002.0
byte keyboard_event_pressed::return#1 20002.0
byte keyboard_event_pressed::return#10 20002.0
byte keyboard_event_pressed::return#11 162857.99999999997
byte keyboard_event_pressed::return#12 200002.0
byte keyboard_event_pressed::return#2 20002.0
byte keyboard_event_pressed::row_bits
byte keyboard_event_pressed::row_bits#0 1000001.0
void keyboard_event_scan()
byte~ keyboard_event_scan::$0 20002.0
byte~ keyboard_event_scan::$15 2.00000002E8
byte~ keyboard_event_scan::$16 2.00000002E8
byte~ keyboard_event_scan::$23 2.00000002E8
byte~ keyboard_event_scan::$3 20002.0
byte~ keyboard_event_scan::$6 20002.0
byte~ keyboard_event_scan::$9 20002.0
byte keyboard_event_scan::col
byte keyboard_event_scan::col#1 1.500000015E8
byte keyboard_event_scan::col#2 2.857142885714286E7
byte keyboard_event_scan::event_type
byte keyboard_event_scan::event_type#0 2.00000002E8
byte keyboard_event_scan::keycode
byte keyboard_event_scan::keycode#1 2.0000002E7
byte keyboard_event_scan::keycode#10 3.153846192307692E7
byte keyboard_event_scan::keycode#11 5000000.5
byte keyboard_event_scan::keycode#13 1.0000001E7
byte keyboard_event_scan::keycode#14 5.250000075E7
byte keyboard_event_scan::row
byte keyboard_event_scan::row#1 1.50000015E7
byte keyboard_event_scan::row#2 6000000.24
byte keyboard_event_scan::row_scan
byte keyboard_event_scan::row_scan#0 1.2777778055555556E7
byte keyboard_events_size
byte keyboard_events_size#0 2.00000002E8
byte keyboard_events_size#1 2.00000002E8
byte keyboard_events_size#11 8.100000089999999E7
byte keyboard_events_size#14 968709.8709677419
byte keyboard_events_size#17 811.6923076923076
byte keyboard_events_size#20 1850.5
byte keyboard_events_size#3 15001.5
byte keyboard_events_size#31 1.020000012E8
byte keyboard_events_size#32 4287143.428571429
byte keyboard_matrix_read(byte keyboard_matrix_read::rowid)
byte keyboard_matrix_read::return
byte keyboard_matrix_read::return#0 3.6666667333333336E7
byte keyboard_matrix_read::return#2 2.0000002E7
byte keyboard_matrix_read::row_pressed_bits
byte keyboard_matrix_read::rowid
byte keyboard_matrix_read::rowid#0 1.10000002E8
byte keyboard_modifiers
byte level
byte level#18 5435.243243243243
byte level#20 442857.7142857142
byte level#22 1722222.4444444445
byte level#25 185168.31818181818
byte level#35 300003.0
byte level_bcd
byte level_bcd#10 200018.1475409836
byte level_bcd#18 3425.508474576271
byte level_bcd#20 442857.7142857142
byte level_bcd#22 1.3333334666666666E7
byte level_bcd#33 300003.0
byte level_bcd#63 2100000.3
byte level_bcd#7 2.0000002E7
word lines_bcd
word lines_bcd#16 3442.4745762711864
word lines_bcd#18 442857.7142857142
word lines_bcd#20 64022.14
word lines_bcd#28 300003.0
word lines_bcd#31 500000.5
void main()
byte main::key_event
byte main::key_event#0 1001.0
byte main::render
byte main::render#1 2002.0
byte next_piece_idx
byte next_piece_idx#13 422.79999999999995
byte next_piece_idx#17 5437.9729729729725
byte next_piece_idx#18 1100013.0
byte next_piece_idx#23 6546.0
byte next_piece_idx#32 300003.0
byte next_piece_idx#79 22.0
byte next_piece_idx#80 202.0
byte play_collision(byte play_collision::xpos , byte play_collision::ypos , byte play_collision::orientation)
byte~ play_collision::$14 2.0000000002E10
byte~ play_collision::$5 2.00000000002E11
byte play_collision::c
byte play_collision::c#1 1.00000000001E11
byte play_collision::c#2 2.2222222222444443E10
byte play_collision::i
byte play_collision::i#1 1.6153846154076923E10
byte play_collision::i#10 2.0000000002E10
byte play_collision::i#12 2.00000000002E11
byte play_collision::i#2 1.55000000002E11
byte play_collision::i#3 5.0000000005E9
byte play_collision::l
byte play_collision::l#1 1.0000000001E10
byte play_collision::l#6 1.1764705883529413E9
byte play_collision::orientation
byte play_collision::orientation#0 100001.0
byte play_collision::orientation#1 100001.0
byte play_collision::orientation#2 100001.0
byte play_collision::orientation#3 100001.0
byte play_collision::orientation#5 1.0400005E7
byte* play_collision::piece_gfx
byte* play_collision::piece_gfx#0 4.762380952476191E9
byte* play_collision::playfield_line
byte* play_collision::playfield_line#0 7.857142857285714E9
byte play_collision::return
byte play_collision::return#0 200002.0
byte play_collision::return#1 200002.0
byte play_collision::return#10 2000002.0
byte play_collision::return#13 200002.0
byte play_collision::return#14 200002.0
byte play_collision::return#15 200000.71428571423
byte play_collision::xp
byte play_collision::xp#1 5.00000000005E10
byte play_collision::xp#2 6.375000000075E10
byte play_collision::xp#8 2.0000000002E10
byte play_collision::xpos
byte play_collision::xpos#0 66667.33333333333
byte play_collision::xpos#1 50000.5
byte play_collision::xpos#2 50000.5
byte play_collision::xpos#3 50000.5
byte play_collision::xpos#4 666667.3333333334
byte play_collision::xpos#6 4.546090911818181E8
byte play_collision::yp
byte play_collision::yp#0 5700003.0
byte play_collision::yp#1 5.0000000005E9
byte play_collision::yp#2 8.1256250003125E9
byte play_collision::ypos
byte play_collision::ypos#0 50000.5
byte play_collision::ypos#1 66667.33333333333
byte play_collision::ypos#2 66667.33333333333
byte play_collision::ypos#3 66667.33333333333
byte play_collision::ypos#4 1000001.0
void play_increase_level()
byte~ play_increase_level::$1 2.0000002E7
byte~ play_increase_level::$5 4.0000000004E10
byte play_increase_level::b
byte play_increase_level::b#1 1.50000000015E10
byte play_increase_level::b#2 1.0000000001E10
void play_init()
byte~ play_init::$2 2002.0
byte~ play_init::$3 3003.0
byte play_init::b
byte play_init::b#1 1501.5
byte play_init::b#2 1001.0
byte play_init::idx
byte play_init::idx#1 667.3333333333334
byte play_init::idx#2 600.5999999999999
byte play_init::j
byte play_init::j#1 1501.5
byte play_init::j#2 667.3333333333334
byte* play_init::pli
byte* play_init::pli#1 500.5
byte* play_init::pli#2 750.75
void play_lock_current()
byte~ play_lock_current::$4 2.000000002E9
byte play_lock_current::c
byte play_lock_current::c#1 1.0000000001E10
byte play_lock_current::c#2 4.0000000004E9
byte play_lock_current::i
byte play_lock_current::i#1 2.333333333666667E9
byte play_lock_current::i#2 1.5500000002E10
byte play_lock_current::i#3 5.000000005E8
byte play_lock_current::i#7 2.000000002E9
byte play_lock_current::i#9 2.0000000002E10
byte play_lock_current::l
byte play_lock_current::l#1 1.000000001E9
byte play_lock_current::l#6 1.53846154E8
byte* play_lock_current::playfield_line
byte* play_lock_current::playfield_line#0 1.1000000002E9
byte play_lock_current::xp
byte play_lock_current::xp#0 2.000000002E9
byte play_lock_current::xp#1 5.0000000005E9
byte play_lock_current::xp#2 7.750000001E9
byte play_lock_current::yp
byte play_lock_current::yp#0 2000002.0
byte play_lock_current::yp#1 5.000000005E8
byte play_lock_current::yp#2 2.500833336666667E8
byte play_move_down(byte play_move_down::key_event)
byte~ play_move_down::$12 200002.0
byte~ play_move_down::$2 200002.0
byte play_move_down::key_event
byte play_move_down::key_event#0 55001.0
byte play_move_down::movedown
byte play_move_down::movedown#10 50000.5
byte play_move_down::movedown#2 200002.0
byte play_move_down::movedown#3 200002.0
byte play_move_down::movedown#6 300003.0
byte play_move_down::movedown#7 250002.5
byte play_move_down::removed
byte play_move_down::removed#0 200002.0
byte play_move_down::return
byte play_move_down::return#0 20002.0
byte play_move_down::return#3 3333.6666666666665
byte play_move_leftright(byte play_move_leftright::key_event)
byte~ play_move_leftright::$4 200002.0
byte~ play_move_leftright::$8 200002.0
byte play_move_leftright::key_event
byte play_move_leftright::key_event#0 105001.5
byte play_move_leftright::return
byte play_move_leftright::return#0 20002.0
byte play_move_leftright::return#2 3333.6666666666665
byte play_move_rotate(byte play_move_rotate::key_event)
byte~ play_move_rotate::$2 200002.0
byte~ play_move_rotate::$5 200002.0
byte~ play_move_rotate::$7 200002.0
byte play_move_rotate::key_event
byte play_move_rotate::key_event#0 105001.5
byte play_move_rotate::orientation
byte play_move_rotate::orientation#1 200002.0
byte play_move_rotate::orientation#2 200002.0
byte play_move_rotate::orientation#3 44444.88888888889
byte play_move_rotate::return
byte play_move_rotate::return#0 20002.0
byte play_move_rotate::return#2 3333.6666666666665
byte play_movement(byte play_movement::key_event)
byte~ play_movement::$3 20002.0
byte~ play_movement::$4 20002.0
byte play_movement::key_event
byte play_movement::key_event#0 2818.5454545454545
byte play_movement::render
byte play_movement::render#1 5000.5
byte play_movement::render#2 4000.4
byte play_movement::return
byte play_movement::return#0 20002.0
byte play_movement::return#2 7001.0
byte play_movement::return#3 2002.0
byte play_remove_lines()
byte play_remove_lines::c
byte play_remove_lines::c#0 6.0000000006E9
byte play_remove_lines::full
byte play_remove_lines::full#2 4.2000000006E9
byte play_remove_lines::full#4 4.0000000004E9
byte play_remove_lines::r
byte play_remove_lines::r#1 1.5000000002142856E9
byte play_remove_lines::r#2 1.5500000002E10
byte play_remove_lines::r#3 2.000000002E9
byte play_remove_lines::removed
byte play_remove_lines::removed#1 2.000000002E9
byte play_remove_lines::removed#11 2.30769231E8
byte play_remove_lines::removed#7 3.333444448888889E8
byte play_remove_lines::return
byte play_remove_lines::return#0 200002.0
byte play_remove_lines::w
byte play_remove_lines::w#1 5.500000001E9
byte play_remove_lines::w#11 1.3333333346666667E9
byte play_remove_lines::w#12 2.000000002E9
byte play_remove_lines::w#2 1.000000001E9
byte play_remove_lines::w#3 2.000000002E9
byte play_remove_lines::w#4 4.428571429142857E9
byte play_remove_lines::w#6 1.6666666683333335E9
byte play_remove_lines::x
byte play_remove_lines::x#1 1.50000000015E10
byte play_remove_lines::x#2 2.50000000025E9
byte play_remove_lines::y
byte play_remove_lines::y#1 1.5000000015E9
byte play_remove_lines::y#8 1.3333333346666667E8
void play_spawn_current()
byte~ play_spawn_current::$1 2000002.0
byte~ play_spawn_current::$7 32258.09677419355
byte play_spawn_current::current_piece_idx
byte play_spawn_current::current_piece_idx#0 1250001.25
byte play_spawn_current::piece_idx
byte play_spawn_current::piece_idx#1 2.000000002E9
byte play_spawn_current::piece_idx#2 1.000050018E8
byte play_spawn_current::sid_rnd1_return
byte play_spawn_current::sid_rnd1_return#0 2.000000002E9
void play_update_score(byte play_update_score::removed)
byte~ play_update_score::$2 2000002.0
byte~ play_update_score::$4 2000002.0
byte~ play_update_score::$9 2000002.0
dword play_update_score::add_bcd
dword play_update_score::add_bcd#0 666667.3333333334
byte play_update_score::lines_after
byte play_update_score::lines_after#0 2000002.0
byte play_update_score::lines_before
byte play_update_score::lines_before#0 222222.44444444444
byte play_update_score::removed
byte play_update_score::removed#0 442857.7142857142
void render_bcd(byte* render_bcd::screen , word render_bcd::offset , byte render_bcd::bcd , byte render_bcd::only_low)
byte~ render_bcd::$3 20002.0
byte~ render_bcd::$4 20002.0
byte~ render_bcd::$5 20002.0
byte~ render_bcd::$6 20002.0
byte render_bcd::bcd
byte render_bcd::bcd#0 2002.0
byte render_bcd::bcd#1 2002.0
byte render_bcd::bcd#2 2002.0
byte render_bcd::bcd#3 1001.0
byte render_bcd::bcd#4 1001.0
byte render_bcd::bcd#5 2002.0
byte render_bcd::bcd#6 3251.0
word render_bcd::offset
word render_bcd::offset#6 10001.0
byte render_bcd::only_low
byte render_bcd::only_low#6 5000.5
byte* render_bcd::screen
byte* render_bcd::screen#0 1001.0
byte* render_bcd::screen#1 1001.0
byte* render_bcd::screen#2 1001.0
byte* render_bcd::screen#3 2002.0
byte* render_bcd::screen#4 2002.0
byte* render_bcd::screen#5 1001.0
byte* render_bcd::screen#6 16007.0
byte* render_bcd::screen_pos
byte* render_bcd::screen_pos#0 8000.8
byte* render_bcd::screen_pos#2 20002.0
byte* render_bcd::screen_pos#3 10001.0
void render_init()
byte~ render_init::$5 1501.5
byte render_init::i
byte render_init::i#1 1501.5
byte render_init::i#2 500.5
byte* render_init::li_1
byte* render_init::li_1#1 500.5
byte* render_init::li_1#2 750.75
byte* render_init::li_2
byte* render_init::li_2#1 667.3333333333334
byte* render_init::li_2#2 600.5999999999999
byte* render_init::vicSelectGfxBank1_gfx
byte* render_init::vicSelectGfxBank1_toDd001_gfx
byte render_init::vicSelectGfxBank1_toDd001_return
void render_moving()
byte~ render_moving::$1 200002.0
byte~ render_moving::$6 200002.0
byte render_moving::c
byte render_moving::c#1 1500001.5
byte render_moving::c#2 333333.6666666667
byte render_moving::current_cell
byte render_moving::current_cell#0 1000001.0
byte render_moving::i
byte render_moving::i#1 200002.0
byte render_moving::i#2 500000.5
byte render_moving::i#3 50000.5
byte render_moving::i#4 1550002.0
byte render_moving::i#8 300000.75
byte render_moving::l
byte render_moving::l#1 150001.5
byte render_moving::l#4 11764.823529411764
byte* render_moving::screen_line
byte* render_moving::screen_line#0 110000.20000000001
byte render_moving::xpos
byte render_moving::xpos#0 200002.0
byte render_moving::xpos#1 666667.3333333334
byte render_moving::xpos#2 620000.8
byte render_moving::ypos
byte render_moving::ypos#0 2002.0
byte render_moving::ypos#1 66667.33333333333
byte render_moving::ypos#2 25062.8125
void render_next()
byte~ render_next::$6 500.5
byte render_next::c
byte render_next::c#1 1500001.5
byte render_next::c#2 285714.5714285714
byte render_next::cell
byte render_next::cell#0 1000001.0
byte render_next::l
byte render_next::l#1 150001.5
byte render_next::l#7 18182.0
byte render_next::next_piece_char
byte render_next::next_piece_char#0 66733.46666666667
byte* render_next::next_piece_gfx
byte* render_next::next_piece_gfx#1 210000.30000000002
byte* render_next::next_piece_gfx#2 1550002.0
byte* render_next::next_piece_gfx#3 201003.0
byte* render_next::next_piece_gfx#8 2002.0
byte* render_next::screen_next_area
byte* render_next::screen_next_area#10 201003.0
byte* render_next::screen_next_area#11 250.25
byte* render_next::screen_next_area#3 700001.0
byte* render_next::screen_next_area#4 66667.33333333333
byte* render_next::screen_next_area#5 683334.1666666667
void render_playfield()
byte~ render_playfield::$0 200002.0
byte~ render_playfield::$3 200002.0
byte render_playfield::c
byte render_playfield::c#1 1500001.5
byte render_playfield::c#2 500000.5
byte render_playfield::i
byte render_playfield::i#1 420000.60000000003
byte render_playfield::i#2 1033334.6666666667
byte render_playfield::i#3 50000.5
byte render_playfield::l
byte render_playfield::l#1 150001.5
byte render_playfield::l#2 30000.300000000003
byte* render_playfield::screen_line
byte* render_playfield::screen_line#0 200002.0
byte* render_playfield::screen_line#1 500000.5
byte* render_playfield::screen_line#2 1550002.0
void render_score()
byte* render_score::screen
byte* render_score::screen#3 375.375
void render_screen_original(byte* render_screen_original::screen)
byte* render_screen_original::cols
byte* render_screen_original::cols#1 100001.0
byte* render_screen_original::cols#2 75000.75
byte* render_screen_original::cols#3 42000.600000000006
byte* render_screen_original::cols#4 77501.0
byte* render_screen_original::cols#5 80000.8
byte* render_screen_original::cols#6 100001.0
byte* render_screen_original::cols#7 20002.0
byte* render_screen_original::ocols
byte* render_screen_original::ocols#1 17500.25
byte* render_screen_original::ocols#2 66667.33333333333
byte* render_screen_original::ocols#4 13750.25
byte* render_screen_original::oscr
byte* render_screen_original::oscr#1 14000.2
byte* render_screen_original::oscr#2 133334.66666666666
byte* render_screen_original::oscr#4 13750.25
byte* render_screen_original::screen
byte* render_screen_original::screen#10 30000.428571428572
byte* render_screen_original::screen#2 60000.600000000006
byte* render_screen_original::screen#3 42857.57142857143
byte* render_screen_original::screen#5 155002.0
byte* render_screen_original::screen#6 200002.0
byte* render_screen_original::screen#7 200002.0
byte* render_screen_original::screen#8 21003.0
byte* render_screen_original::screen#9 1001.0
byte render_screen_original::x
byte render_screen_original::x#1 200002.0
byte render_screen_original::x#2 200002.0
byte render_screen_original::x#3 150001.5
byte render_screen_original::x#4 40000.4
byte render_screen_original::x#5 42857.57142857143
byte render_screen_original::x#6 60000.600000000006
byte render_screen_original::y
byte render_screen_original::y#1 15001.5
byte render_screen_original::y#6 833.4166666666666
byte render_screen_render
byte render_screen_render#12 275.5
byte render_screen_render#16 1102.0
byte render_screen_render#19 84.76923076923077
byte render_screen_render#24 7700.153846153846
byte render_screen_render#35 4766.761904761905
byte render_screen_render#63 202.0
byte render_screen_render#64 50.5
byte render_screen_render#65 101.0
byte render_screen_show
byte render_screen_show#14 367.33333333333337
byte render_screen_show#17 577.65
volatile byte render_screen_showing loadstore 1000.5
void render_screen_swap()
void render_show()
byte render_show::d018val
byte render_show::d018val#3 10001.0
byte* render_show::toD0181_gfx
byte render_show::toD0181_return
byte* render_show::toD0181_screen
byte* render_show::toD0182_gfx
byte render_show::toD0182_return
byte* render_show::toD0182_screen
volatile dword score_bcd loadstore 14705.911764705883
void sprites_init()
byte sprites_init::s
byte sprites_init::s#1 1501.5
byte sprites_init::s#2 800.8
byte sprites_init::s2
byte sprites_init::s2#0 2002.0
byte sprites_init::xpos
byte sprites_init::xpos#1 667.3333333333334
byte sprites_init::xpos#2 750.75
__interrupt(hardware_clobber) void sprites_irq()
byte~ sprites_irq::$0 4.0
byte sprites_irq::ptr
byte sprites_irq::ptr#0 2.5
byte sprites_irq::ptr#1 2.6666666666666665
byte sprites_irq::ptr#2 4.0
byte sprites_irq::ptr#3 2.6666666666666665
byte sprites_irq::ptr#4 4.0
volatile byte sprites_irq::raster_sprite_gfx_modify loadstore 6.5
byte sprites_irq::toSpritePtr1_return
byte* sprites_irq::toSpritePtr1_sprite
byte sprites_irq::ypos
byte sprites_irq::ypos#0 2.5
void sprites_irq_init()
Initial phi equivalence classes
[ render_screen_show#17 render_screen_show#14 ]
[ render_screen_render#19 render_screen_render#12 ]
[ current_movedown_counter#17 current_movedown_counter#15 current_movedown_counter#13 ]
[ render_init::i#2 render_init::i#1 ]
[ render_init::li_1#2 render_init::li_1#1 ]
[ render_init::li_2#2 render_init::li_2#1 ]
[ sprites_init::s#2 sprites_init::s#1 ]
[ sprites_init::xpos#2 sprites_init::xpos#1 ]
[ play_init::j#2 play_init::j#1 ]
[ play_init::pli#2 play_init::pli#1 ]
[ play_init::idx#2 play_init::idx#1 ]
[ play_init::b#2 play_init::b#1 ]
[ render_screen_render#24 render_screen_render#63 ]
[ render_playfield::l#2 render_playfield::l#1 ]
[ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
[ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ]
[ render_playfield::c#2 render_playfield::c#1 ]
[ current_ypos#14 current_ypos#97 current_ypos#98 ]
[ render_screen_render#35 render_screen_render#64 ]
[ current_xpos#61 current_xpos#118 current_xpos#119 ]
[ current_piece_gfx#66 current_piece_gfx#111 current_piece_gfx#112 ]
[ current_piece_char#70 current_piece_char#99 current_piece_char#100 ]
[ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
[ render_moving::l#4 render_moving::l#1 ]
[ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ]
[ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
[ render_moving::c#2 render_moving::c#1 ]
[ render_screen_render#16 render_screen_render#65 ]
[ next_piece_idx#13 next_piece_idx#79 next_piece_idx#80 ]
[ render_next::l#7 render_next::l#1 ]
[ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#8 render_next::next_piece_gfx#1 ]
[ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#11 render_next::screen_next_area#4 render_next::screen_next_area#3 ]
[ render_next::c#2 render_next::c#1 ]
[ render_show::d018val#3 ]
[ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
[ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
[ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ]
[ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ]
[ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
[ play_movement::return#2 play_movement::render#1 play_movement::return#0 ]
[ render_score::screen#3 ]
[ render_screen_original::y#6 render_screen_original::y#1 ]
[ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ]
[ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ]
[ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ]
[ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ]
[ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ]
[ current_piece#18 current_piece#98 current_piece#99 current_piece#100 current_piece#101 current_piece#102 ]
[ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
[ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ]
[ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ]
[ play_collision::l#6 play_collision::l#1 ]
[ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ]
[ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ]
[ play_collision::c#2 play_collision::c#1 ]
[ play_collision::return#15 ]
[ keyboard_event_pressed::keycode#5 ]
[ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ]
[ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ]
[ lines_bcd#28 lines_bcd#20 lines_bcd#16 lines_bcd#18 lines_bcd#31 ]
[ level#35 level#25 level#18 level#20 level#22 ]
[ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ]
[ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ]
[ current_piece#30 current_piece#23 current_piece#103 current_piece#16 current_piece#95 ]
[ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ]
[ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ]
[ current_piece_gfx#37 current_piece_gfx#12 current_piece_gfx#122 current_piece_gfx#19 current_piece_gfx#21 current_piece_gfx#22 current_piece_gfx#116 current_piece_gfx#6 ]
[ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ]
[ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ]
[ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ]
[ play_move_down::return#3 ]
[ play_move_leftright::return#2 ]
[ play_move_rotate::return#2 ]
[ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ]
[ 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 ]
[ render_bcd::offset#6 ]
[ render_bcd::only_low#6 ]
[ 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 ]
[ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ]
[ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
[ play_lock_current::l#6 play_lock_current::l#1 ]
[ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ]
[ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ]
[ play_lock_current::c#2 play_lock_current::c#1 ]
[ play_remove_lines::y#8 play_remove_lines::y#1 ]
[ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ]
[ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ]
[ play_remove_lines::x#2 play_remove_lines::x#1 ]
[ play_remove_lines::full#4 play_remove_lines::full#2 ]
[ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ]
[ play_increase_level::b#2 play_increase_level::b#1 ]
Added variable render_screen_showing to live range equivalence class [ render_screen_showing ]
Added variable score_bcd to live range equivalence class [ score_bcd ]
Added variable irq_raster_next to live range equivalence class [ irq_raster_next ]
Added variable irq_sprite_ypos to live range equivalence class [ irq_sprite_ypos ]
Added variable irq_sprite_ptr to live range equivalence class [ irq_sprite_ptr ]
Added variable irq_cnt to live range equivalence class [ irq_cnt ]
Added variable sprites_irq::ypos#0 to live range equivalence class [ sprites_irq::ypos#0 ]
Added variable sprites_irq::$0 to live range equivalence class [ sprites_irq::$0 ]
Added variable sprites_irq::raster_sprite_gfx_modify to live range equivalence class [ sprites_irq::raster_sprite_gfx_modify ]
Added variable sprites_irq::ptr#0 to live range equivalence class [ sprites_irq::ptr#0 ]
Added variable sprites_irq::ptr#3 to live range equivalence class [ sprites_irq::ptr#3 ]
Added variable sprites_irq::ptr#4 to live range equivalence class [ sprites_irq::ptr#4 ]
Added variable sprites_irq::ptr#1 to live range equivalence class [ sprites_irq::ptr#1 ]
Added variable sprites_irq::ptr#2 to live range equivalence class [ sprites_irq::ptr#2 ]
Added variable keyboard_event_get::return#3 to live range equivalence class [ keyboard_event_get::return#3 ]
Added variable main::key_event#0 to live range equivalence class [ main::key_event#0 ]
Added variable play_movement::key_event#0 to live range equivalence class [ play_movement::key_event#0 ]
Added variable play_movement::return#3 to live range equivalence class [ play_movement::return#3 ]
Added variable main::render#1 to live range equivalence class [ main::render#1 ]
Added variable render_init::$5 to live range equivalence class [ render_init::$5 ]
Added variable sprites_init::s2#0 to live range equivalence class [ sprites_init::s2#0 ]
Added variable play_init::$2 to live range equivalence class [ play_init::$2 ]
Added variable play_init::$3 to live range equivalence class [ play_init::$3 ]
Added variable play_spawn_current::current_piece_idx#0 to live range equivalence class [ play_spawn_current::current_piece_idx#0 ]
Added variable play_spawn_current::$7 to live range equivalence class [ play_spawn_current::$7 ]
Added variable play_collision::return#10 to live range equivalence class [ play_collision::return#10 ]
Added variable play_spawn_current::$1 to live range equivalence class [ play_spawn_current::$1 ]
Added variable play_spawn_current::sid_rnd1_return#0 to live range equivalence class [ play_spawn_current::sid_rnd1_return#0 ]
Added variable render_playfield::$0 to live range equivalence class [ render_playfield::$0 ]
Added variable render_playfield::$3 to live range equivalence class [ render_playfield::$3 ]
Added variable render_moving::$1 to live range equivalence class [ render_moving::$1 ]
Added variable render_moving::$6 to live range equivalence class [ render_moving::$6 ]
Added variable render_moving::screen_line#0 to live range equivalence class [ render_moving::screen_line#0 ]
Added variable render_moving::current_cell#0 to live range equivalence class [ render_moving::current_cell#0 ]
Added variable render_next::$6 to live range equivalence class [ render_next::$6 ]
Added variable render_next::next_piece_char#0 to live range equivalence class [ render_next::next_piece_char#0 ]
Added variable render_next::cell#0 to live range equivalence class [ render_next::cell#0 ]
Added variable keyboard_matrix_read::rowid#0 to live range equivalence class [ keyboard_matrix_read::rowid#0 ]
Added variable keyboard_matrix_read::return#2 to live range equivalence class [ keyboard_matrix_read::return#2 ]
Added variable keyboard_event_scan::row_scan#0 to live range equivalence class [ keyboard_event_scan::row_scan#0 ]
Added variable keyboard_event_pressed::return#0 to live range equivalence class [ keyboard_event_pressed::return#0 ]
Added variable keyboard_event_scan::$0 to live range equivalence class [ keyboard_event_scan::$0 ]
Added variable keyboard_event_pressed::return#1 to live range equivalence class [ keyboard_event_pressed::return#1 ]
Added variable keyboard_event_scan::$3 to live range equivalence class [ keyboard_event_scan::$3 ]
Added variable keyboard_event_pressed::return#2 to live range equivalence class [ keyboard_event_pressed::return#2 ]
Added variable keyboard_event_scan::$6 to live range equivalence class [ keyboard_event_scan::$6 ]
Added variable keyboard_event_pressed::return#10 to live range equivalence class [ keyboard_event_pressed::return#10 ]
Added variable keyboard_event_scan::$9 to live range equivalence class [ keyboard_event_scan::$9 ]
Added variable keyboard_event_scan::$15 to live range equivalence class [ keyboard_event_scan::$15 ]
Added variable keyboard_event_scan::$16 to live range equivalence class [ keyboard_event_scan::$16 ]
Added variable keyboard_event_scan::event_type#0 to live range equivalence class [ keyboard_event_scan::event_type#0 ]
Added variable keyboard_event_scan::$23 to live range equivalence class [ keyboard_event_scan::$23 ]
Added variable play_move_down::key_event#0 to live range equivalence class [ play_move_down::key_event#0 ]
Added variable play_move_down::return#0 to live range equivalence class [ play_move_down::return#0 ]
Added variable play_move_leftright::key_event#0 to live range equivalence class [ play_move_leftright::key_event#0 ]
Added variable play_move_leftright::return#0 to live range equivalence class [ play_move_leftright::return#0 ]
Added variable play_movement::$3 to live range equivalence class [ play_movement::$3 ]
Added variable play_movement::render#2 to live range equivalence class [ play_movement::render#2 ]
Added variable play_move_rotate::key_event#0 to live range equivalence class [ play_move_rotate::key_event#0 ]
Added variable play_move_rotate::return#0 to live range equivalence class [ play_move_rotate::return#0 ]
Added variable play_movement::$4 to live range equivalence class [ play_movement::$4 ]
Added variable play_collision::piece_gfx#0 to live range equivalence class [ play_collision::piece_gfx#0 ]
Added variable play_collision::$14 to live range equivalence class [ play_collision::$14 ]
Added variable play_collision::playfield_line#0 to live range equivalence class [ play_collision::playfield_line#0 ]
Added variable play_collision::i#1 to live range equivalence class [ play_collision::i#1 ]
Added variable play_collision::$5 to live range equivalence class [ play_collision::$5 ]
Added variable keyboard_matrix_read::return#0 to live range equivalence class [ keyboard_matrix_read::return#0 ]
Added variable keyboard_event_pressed::$0 to live range equivalence class [ keyboard_event_pressed::$0 ]
Added variable keyboard_event_pressed::row_bits#0 to live range equivalence class [ keyboard_event_pressed::row_bits#0 ]
Added variable keyboard_event_pressed::$1 to live range equivalence class [ keyboard_event_pressed::$1 ]
Added variable keyboard_event_pressed::return#11 to live range equivalence class [ keyboard_event_pressed::return#11 ]
Added variable keyboard_event_pressed::return#12 to live range equivalence class [ keyboard_event_pressed::return#12 ]
Added variable play_move_down::$2 to live range equivalence class [ play_move_down::$2 ]
Added variable play_collision::return#0 to live range equivalence class [ play_collision::return#0 ]
Added variable play_move_down::$12 to live range equivalence class [ play_move_down::$12 ]
Added variable play_remove_lines::return#0 to live range equivalence class [ play_remove_lines::return#0 ]
Added variable play_move_down::removed#0 to live range equivalence class [ play_move_down::removed#0 ]
Added variable play_update_score::removed#0 to live range equivalence class [ play_update_score::removed#0 ]
Added variable play_collision::return#13 to live range equivalence class [ play_collision::return#13 ]
Added variable play_move_leftright::$4 to live range equivalence class [ play_move_leftright::$4 ]
Added variable play_collision::return#1 to live range equivalence class [ play_collision::return#1 ]
Added variable play_move_leftright::$8 to live range equivalence class [ play_move_leftright::$8 ]
Added variable play_move_rotate::$5 to live range equivalence class [ play_move_rotate::$5 ]
Added variable play_collision::return#14 to live range equivalence class [ play_collision::return#14 ]
Added variable play_move_rotate::$2 to live range equivalence class [ play_move_rotate::$2 ]
Added variable play_move_rotate::$7 to live range equivalence class [ play_move_rotate::$7 ]
Added variable render_bcd::$5 to live range equivalence class [ render_bcd::$5 ]
Added variable render_bcd::$6 to live range equivalence class [ render_bcd::$6 ]
Added variable render_bcd::$3 to live range equivalence class [ render_bcd::$3 ]
Added variable render_bcd::$4 to live range equivalence class [ render_bcd::$4 ]
Added variable play_lock_current::$4 to live range equivalence class [ play_lock_current::$4 ]
Added variable play_lock_current::playfield_line#0 to live range equivalence class [ play_lock_current::playfield_line#0 ]
Added variable play_lock_current::i#1 to live range equivalence class [ play_lock_current::i#1 ]
Added variable play_remove_lines::c#0 to live range equivalence class [ play_remove_lines::c#0 ]
Added variable play_update_score::$2 to live range equivalence class [ play_update_score::$2 ]
Added variable play_update_score::lines_before#0 to live range equivalence class [ play_update_score::lines_before#0 ]
Added variable play_update_score::$9 to live range equivalence class [ play_update_score::$9 ]
Added variable play_update_score::add_bcd#0 to live range equivalence class [ play_update_score::add_bcd#0 ]
Added variable play_update_score::$4 to live range equivalence class [ play_update_score::$4 ]
Added variable play_update_score::lines_after#0 to live range equivalence class [ play_update_score::lines_after#0 ]
Added variable play_increase_level::$1 to live range equivalence class [ play_increase_level::$1 ]
Added variable play_increase_level::$5 to live range equivalence class [ play_increase_level::$5 ]
Complete equivalence classes
[ render_screen_show#17 render_screen_show#14 ]
[ render_screen_render#19 render_screen_render#12 ]
[ current_movedown_counter#17 current_movedown_counter#15 current_movedown_counter#13 ]
[ render_init::i#2 render_init::i#1 ]
[ render_init::li_1#2 render_init::li_1#1 ]
[ render_init::li_2#2 render_init::li_2#1 ]
[ sprites_init::s#2 sprites_init::s#1 ]
[ sprites_init::xpos#2 sprites_init::xpos#1 ]
[ play_init::j#2 play_init::j#1 ]
[ play_init::pli#2 play_init::pli#1 ]
[ play_init::idx#2 play_init::idx#1 ]
[ play_init::b#2 play_init::b#1 ]
[ render_screen_render#24 render_screen_render#63 ]
[ render_playfield::l#2 render_playfield::l#1 ]
[ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
[ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ]
[ render_playfield::c#2 render_playfield::c#1 ]
[ current_ypos#14 current_ypos#97 current_ypos#98 ]
[ render_screen_render#35 render_screen_render#64 ]
[ current_xpos#61 current_xpos#118 current_xpos#119 ]
[ current_piece_gfx#66 current_piece_gfx#111 current_piece_gfx#112 ]
[ current_piece_char#70 current_piece_char#99 current_piece_char#100 ]
[ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
[ render_moving::l#4 render_moving::l#1 ]
[ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ]
[ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
[ render_moving::c#2 render_moving::c#1 ]
[ render_screen_render#16 render_screen_render#65 ]
[ next_piece_idx#13 next_piece_idx#79 next_piece_idx#80 ]
[ render_next::l#7 render_next::l#1 ]
[ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#8 render_next::next_piece_gfx#1 ]
[ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#11 render_next::screen_next_area#4 render_next::screen_next_area#3 ]
[ render_next::c#2 render_next::c#1 ]
[ render_show::d018val#3 ]
[ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
[ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
[ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ]
[ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ]
[ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
[ play_movement::return#2 play_movement::render#1 play_movement::return#0 ]
[ render_score::screen#3 ]
[ render_screen_original::y#6 render_screen_original::y#1 ]
[ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ]
[ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ]
[ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ]
[ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ]
[ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ]
[ current_piece#18 current_piece#98 current_piece#99 current_piece#100 current_piece#101 current_piece#102 ]
[ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
[ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ]
[ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ]
[ play_collision::l#6 play_collision::l#1 ]
[ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ]
[ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ]
[ play_collision::c#2 play_collision::c#1 ]
[ play_collision::return#15 ]
[ keyboard_event_pressed::keycode#5 ]
[ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ]
[ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ]
[ lines_bcd#28 lines_bcd#20 lines_bcd#16 lines_bcd#18 lines_bcd#31 ]
[ level#35 level#25 level#18 level#20 level#22 ]
[ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ]
[ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ]
[ current_piece#30 current_piece#23 current_piece#103 current_piece#16 current_piece#95 ]
[ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ]
[ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ]
[ current_piece_gfx#37 current_piece_gfx#12 current_piece_gfx#122 current_piece_gfx#19 current_piece_gfx#21 current_piece_gfx#22 current_piece_gfx#116 current_piece_gfx#6 ]
[ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ]
[ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ]
[ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ]
[ play_move_down::return#3 ]
[ play_move_leftright::return#2 ]
[ play_move_rotate::return#2 ]
[ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ]
[ 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 ]
[ render_bcd::offset#6 ]
[ render_bcd::only_low#6 ]
[ 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 ]
[ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ]
[ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
[ play_lock_current::l#6 play_lock_current::l#1 ]
[ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ]
[ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ]
[ play_lock_current::c#2 play_lock_current::c#1 ]
[ play_remove_lines::y#8 play_remove_lines::y#1 ]
[ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ]
[ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ]
[ play_remove_lines::x#2 play_remove_lines::x#1 ]
[ play_remove_lines::full#4 play_remove_lines::full#2 ]
[ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ]
[ play_increase_level::b#2 play_increase_level::b#1 ]
[ render_screen_showing ]
[ score_bcd ]
[ irq_raster_next ]
[ irq_sprite_ypos ]
[ irq_sprite_ptr ]
[ irq_cnt ]
[ sprites_irq::ypos#0 ]
[ sprites_irq::$0 ]
[ sprites_irq::raster_sprite_gfx_modify ]
[ sprites_irq::ptr#0 ]
[ sprites_irq::ptr#3 ]
[ sprites_irq::ptr#4 ]
[ sprites_irq::ptr#1 ]
[ sprites_irq::ptr#2 ]
[ keyboard_event_get::return#3 ]
[ main::key_event#0 ]
[ play_movement::key_event#0 ]
[ play_movement::return#3 ]
[ main::render#1 ]
[ render_init::$5 ]
[ sprites_init::s2#0 ]
[ play_init::$2 ]
[ play_init::$3 ]
[ play_spawn_current::current_piece_idx#0 ]
[ play_spawn_current::$7 ]
[ play_collision::return#10 ]
[ play_spawn_current::$1 ]
[ play_spawn_current::sid_rnd1_return#0 ]
[ render_playfield::$0 ]
[ render_playfield::$3 ]
[ render_moving::$1 ]
[ render_moving::$6 ]
[ render_moving::screen_line#0 ]
[ render_moving::current_cell#0 ]
[ render_next::$6 ]
[ render_next::next_piece_char#0 ]
[ render_next::cell#0 ]
[ keyboard_matrix_read::rowid#0 ]
[ keyboard_matrix_read::return#2 ]
[ keyboard_event_scan::row_scan#0 ]
[ keyboard_event_pressed::return#0 ]
[ keyboard_event_scan::$0 ]
[ keyboard_event_pressed::return#1 ]
[ keyboard_event_scan::$3 ]
[ keyboard_event_pressed::return#2 ]
[ keyboard_event_scan::$6 ]
[ keyboard_event_pressed::return#10 ]
[ keyboard_event_scan::$9 ]
[ keyboard_event_scan::$15 ]
[ keyboard_event_scan::$16 ]
[ keyboard_event_scan::event_type#0 ]
[ keyboard_event_scan::$23 ]
[ play_move_down::key_event#0 ]
[ play_move_down::return#0 ]
[ play_move_leftright::key_event#0 ]
[ play_move_leftright::return#0 ]
[ play_movement::$3 ]
[ play_movement::render#2 ]
[ play_move_rotate::key_event#0 ]
[ play_move_rotate::return#0 ]
[ play_movement::$4 ]
[ play_collision::piece_gfx#0 ]
[ play_collision::$14 ]
[ play_collision::playfield_line#0 ]
[ play_collision::i#1 ]
[ play_collision::$5 ]
[ keyboard_matrix_read::return#0 ]
[ keyboard_event_pressed::$0 ]
[ keyboard_event_pressed::row_bits#0 ]
[ keyboard_event_pressed::$1 ]
[ keyboard_event_pressed::return#11 ]
[ keyboard_event_pressed::return#12 ]
[ play_move_down::$2 ]
[ play_collision::return#0 ]
[ play_move_down::$12 ]
[ play_remove_lines::return#0 ]
[ play_move_down::removed#0 ]
[ play_update_score::removed#0 ]
[ play_collision::return#13 ]
[ play_move_leftright::$4 ]
[ play_collision::return#1 ]
[ play_move_leftright::$8 ]
[ play_move_rotate::$5 ]
[ play_collision::return#14 ]
[ play_move_rotate::$2 ]
[ play_move_rotate::$7 ]
[ render_bcd::$5 ]
[ render_bcd::$6 ]
[ render_bcd::$3 ]
[ render_bcd::$4 ]
[ play_lock_current::$4 ]
[ play_lock_current::playfield_line#0 ]
[ play_lock_current::i#1 ]
[ play_remove_lines::c#0 ]
[ play_update_score::$2 ]
[ play_update_score::lines_before#0 ]
[ play_update_score::$9 ]
[ play_update_score::add_bcd#0 ]
[ play_update_score::$4 ]
[ play_update_score::lines_after#0 ]
[ play_increase_level::$1 ]
[ play_increase_level::$5 ]
Allocated zp[1]:2 [ render_screen_show#17 render_screen_show#14 ]
Allocated zp[1]:3 [ render_screen_render#19 render_screen_render#12 ]
Allocated zp[1]:4 [ current_movedown_counter#17 current_movedown_counter#15 current_movedown_counter#13 ]
Allocated zp[1]:5 [ render_init::i#2 render_init::i#1 ]
Allocated zp[2]:6 [ render_init::li_1#2 render_init::li_1#1 ]
Allocated zp[2]:8 [ render_init::li_2#2 render_init::li_2#1 ]
Allocated zp[1]:10 [ sprites_init::s#2 sprites_init::s#1 ]
Allocated zp[1]:11 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Allocated zp[1]:12 [ play_init::j#2 play_init::j#1 ]
Allocated zp[2]:13 [ play_init::pli#2 play_init::pli#1 ]
Allocated zp[1]:15 [ play_init::idx#2 play_init::idx#1 ]
Allocated zp[1]:16 [ play_init::b#2 play_init::b#1 ]
Allocated zp[1]:17 [ render_screen_render#24 render_screen_render#63 ]
Allocated zp[1]:18 [ render_playfield::l#2 render_playfield::l#1 ]
Allocated zp[1]:19 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
Allocated zp[2]:20 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ]
Allocated zp[1]:22 [ render_playfield::c#2 render_playfield::c#1 ]
Allocated zp[1]:23 [ current_ypos#14 current_ypos#97 current_ypos#98 ]
Allocated zp[1]:24 [ render_screen_render#35 render_screen_render#64 ]
Allocated zp[1]:25 [ current_xpos#61 current_xpos#118 current_xpos#119 ]
Allocated zp[2]:26 [ current_piece_gfx#66 current_piece_gfx#111 current_piece_gfx#112 ]
Allocated zp[1]:28 [ current_piece_char#70 current_piece_char#99 current_piece_char#100 ]
Allocated zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
Allocated zp[1]:30 [ render_moving::l#4 render_moving::l#1 ]
Allocated zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ]
Allocated zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
Allocated zp[1]:33 [ render_moving::c#2 render_moving::c#1 ]
Allocated zp[1]:34 [ render_screen_render#16 render_screen_render#65 ]
Allocated zp[1]:35 [ next_piece_idx#13 next_piece_idx#79 next_piece_idx#80 ]
Allocated zp[1]:36 [ render_next::l#7 render_next::l#1 ]
Allocated zp[2]:37 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#8 render_next::next_piece_gfx#1 ]
Allocated zp[2]:39 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#11 render_next::screen_next_area#4 render_next::screen_next_area#3 ]
Allocated zp[1]:41 [ render_next::c#2 render_next::c#1 ]
Allocated zp[1]:42 [ render_show::d018val#3 ]
Allocated zp[1]:43 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
Allocated zp[1]:44 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
Allocated zp[1]:45 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ]
Allocated zp[1]:46 [ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ]
Allocated zp[1]:47 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
Allocated zp[1]:48 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ]
Allocated zp[2]:49 [ render_score::screen#3 ]
Allocated zp[1]:51 [ render_screen_original::y#6 render_screen_original::y#1 ]
Allocated zp[2]:52 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ]
Allocated zp[2]:54 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ]
Allocated zp[2]:56 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ]
Allocated zp[2]:58 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ]
Allocated zp[1]:60 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ]
Allocated zp[2]:61 [ current_piece#18 current_piece#98 current_piece#99 current_piece#100 current_piece#101 current_piece#102 ]
Allocated zp[1]:63 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
Allocated zp[1]:64 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ]
Allocated zp[1]:65 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ]
Allocated zp[1]:66 [ play_collision::l#6 play_collision::l#1 ]
Allocated zp[1]:67 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ]
Allocated zp[1]:68 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ]
Allocated zp[1]:69 [ play_collision::c#2 play_collision::c#1 ]
Allocated zp[1]:70 [ play_collision::return#15 ]
Allocated zp[1]:71 [ keyboard_event_pressed::keycode#5 ]
Allocated zp[1]:72 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ]
Allocated zp[1]:73 [ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ]
Allocated zp[2]:74 [ lines_bcd#28 lines_bcd#20 lines_bcd#16 lines_bcd#18 lines_bcd#31 ]
Allocated zp[1]:76 [ level#35 level#25 level#18 level#20 level#22 ]
Allocated zp[1]:77 [ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ]
Allocated zp[1]:78 [ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ]
Allocated zp[2]:79 [ current_piece#30 current_piece#23 current_piece#103 current_piece#16 current_piece#95 ]
Allocated zp[1]:81 [ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ]
Allocated zp[1]:82 [ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ]
Allocated zp[2]:83 [ current_piece_gfx#37 current_piece_gfx#12 current_piece_gfx#122 current_piece_gfx#19 current_piece_gfx#21 current_piece_gfx#22 current_piece_gfx#116 current_piece_gfx#6 ]
Allocated zp[1]:85 [ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ]
Allocated zp[1]:86 [ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ]
Allocated zp[1]:87 [ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ]
Allocated zp[1]:88 [ play_move_down::return#3 ]
Allocated zp[1]:89 [ play_move_leftright::return#2 ]
Allocated zp[1]:90 [ play_move_rotate::return#2 ]
Allocated zp[1]:91 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ]
Allocated zp[2]:92 [ 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 ]
Allocated zp[2]:94 [ render_bcd::offset#6 ]
Allocated zp[1]:96 [ render_bcd::only_low#6 ]
Allocated zp[1]:97 [ 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 ]
Allocated zp[2]:98 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ]
Allocated zp[1]:100 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
Allocated zp[1]:101 [ play_lock_current::l#6 play_lock_current::l#1 ]
Allocated zp[1]:102 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ]
Allocated zp[1]:103 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ]
Allocated zp[1]:104 [ play_lock_current::c#2 play_lock_current::c#1 ]
Allocated zp[1]:105 [ play_remove_lines::y#8 play_remove_lines::y#1 ]
Allocated zp[1]:106 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ]
Allocated zp[1]:107 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ]
Allocated zp[1]:108 [ play_remove_lines::x#2 play_remove_lines::x#1 ]
Allocated zp[1]:109 [ play_remove_lines::full#4 play_remove_lines::full#2 ]
Allocated zp[1]:110 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ]
Allocated zp[1]:111 [ play_increase_level::b#2 play_increase_level::b#1 ]
Allocated zp[1]:112 [ render_screen_showing ]
Allocated zp[4]:113 [ score_bcd ]
Allocated zp[1]:117 [ irq_raster_next ]
Allocated zp[1]:118 [ irq_sprite_ypos ]
Allocated zp[1]:119 [ irq_sprite_ptr ]
Allocated zp[1]:120 [ irq_cnt ]
Allocated zp[1]:121 [ sprites_irq::ypos#0 ]
Allocated zp[1]:122 [ sprites_irq::$0 ]
Allocated zp[1]:123 [ sprites_irq::raster_sprite_gfx_modify ]
Allocated zp[1]:124 [ sprites_irq::ptr#0 ]
Allocated zp[1]:125 [ sprites_irq::ptr#3 ]
Allocated zp[1]:126 [ sprites_irq::ptr#4 ]
Allocated zp[1]:127 [ sprites_irq::ptr#1 ]
Allocated zp[1]:128 [ sprites_irq::ptr#2 ]
Allocated zp[1]:129 [ keyboard_event_get::return#3 ]
Allocated zp[1]:130 [ main::key_event#0 ]
Allocated zp[1]:131 [ play_movement::key_event#0 ]
Allocated zp[1]:132 [ play_movement::return#3 ]
Allocated zp[1]:133 [ main::render#1 ]
Allocated zp[1]:134 [ render_init::$5 ]
Allocated zp[1]:135 [ sprites_init::s2#0 ]
Allocated zp[1]:136 [ play_init::$2 ]
Allocated zp[1]:137 [ play_init::$3 ]
Allocated zp[1]:138 [ play_spawn_current::current_piece_idx#0 ]
Allocated zp[1]:139 [ play_spawn_current::$7 ]
Allocated zp[1]:140 [ play_collision::return#10 ]
Allocated zp[1]:141 [ play_spawn_current::$1 ]
Allocated zp[1]:142 [ play_spawn_current::sid_rnd1_return#0 ]
Allocated zp[1]:143 [ render_playfield::$0 ]
Allocated zp[1]:144 [ render_playfield::$3 ]
Allocated zp[1]:145 [ render_moving::$1 ]
Allocated zp[1]:146 [ render_moving::$6 ]
Allocated zp[2]:147 [ render_moving::screen_line#0 ]
Allocated zp[1]:149 [ render_moving::current_cell#0 ]
Allocated zp[1]:150 [ render_next::$6 ]
Allocated zp[1]:151 [ render_next::next_piece_char#0 ]
Allocated zp[1]:152 [ render_next::cell#0 ]
Allocated zp[1]:153 [ keyboard_matrix_read::rowid#0 ]
Allocated zp[1]:154 [ keyboard_matrix_read::return#2 ]
Allocated zp[1]:155 [ keyboard_event_scan::row_scan#0 ]
Allocated zp[1]:156 [ keyboard_event_pressed::return#0 ]
Allocated zp[1]:157 [ keyboard_event_scan::$0 ]
Allocated zp[1]:158 [ keyboard_event_pressed::return#1 ]
Allocated zp[1]:159 [ keyboard_event_scan::$3 ]
Allocated zp[1]:160 [ keyboard_event_pressed::return#2 ]
Allocated zp[1]:161 [ keyboard_event_scan::$6 ]
Allocated zp[1]:162 [ keyboard_event_pressed::return#10 ]
Allocated zp[1]:163 [ keyboard_event_scan::$9 ]
Allocated zp[1]:164 [ keyboard_event_scan::$15 ]
Allocated zp[1]:165 [ keyboard_event_scan::$16 ]
Allocated zp[1]:166 [ keyboard_event_scan::event_type#0 ]
Allocated zp[1]:167 [ keyboard_event_scan::$23 ]
Allocated zp[1]:168 [ play_move_down::key_event#0 ]
Allocated zp[1]:169 [ play_move_down::return#0 ]
Allocated zp[1]:170 [ play_move_leftright::key_event#0 ]
Allocated zp[1]:171 [ play_move_leftright::return#0 ]
Allocated zp[1]:172 [ play_movement::$3 ]
Allocated zp[1]:173 [ play_movement::render#2 ]
Allocated zp[1]:174 [ play_move_rotate::key_event#0 ]
Allocated zp[1]:175 [ play_move_rotate::return#0 ]
Allocated zp[1]:176 [ play_movement::$4 ]
Allocated zp[2]:177 [ play_collision::piece_gfx#0 ]
Allocated zp[1]:179 [ play_collision::$14 ]
Allocated zp[2]:180 [ play_collision::playfield_line#0 ]
Allocated zp[1]:182 [ play_collision::i#1 ]
Allocated zp[1]:183 [ play_collision::$5 ]
Allocated zp[1]:184 [ keyboard_matrix_read::return#0 ]
Allocated zp[1]:185 [ keyboard_event_pressed::$0 ]
Allocated zp[1]:186 [ keyboard_event_pressed::row_bits#0 ]
Allocated zp[1]:187 [ keyboard_event_pressed::$1 ]
Allocated zp[1]:188 [ keyboard_event_pressed::return#11 ]
Allocated zp[1]:189 [ keyboard_event_pressed::return#12 ]
Allocated zp[1]:190 [ play_move_down::$2 ]
Allocated zp[1]:191 [ play_collision::return#0 ]
Allocated zp[1]:192 [ play_move_down::$12 ]
Allocated zp[1]:193 [ play_remove_lines::return#0 ]
Allocated zp[1]:194 [ play_move_down::removed#0 ]
Allocated zp[1]:195 [ play_update_score::removed#0 ]
Allocated zp[1]:196 [ play_collision::return#13 ]
Allocated zp[1]:197 [ play_move_leftright::$4 ]
Allocated zp[1]:198 [ play_collision::return#1 ]
Allocated zp[1]:199 [ play_move_leftright::$8 ]
Allocated zp[1]:200 [ play_move_rotate::$5 ]
Allocated zp[1]:201 [ play_collision::return#14 ]
Allocated zp[1]:202 [ play_move_rotate::$2 ]
Allocated zp[1]:203 [ play_move_rotate::$7 ]
Allocated zp[1]:204 [ render_bcd::$5 ]
Allocated zp[1]:205 [ render_bcd::$6 ]
Allocated zp[1]:206 [ render_bcd::$3 ]
Allocated zp[1]:207 [ render_bcd::$4 ]
Allocated zp[1]:208 [ play_lock_current::$4 ]
Allocated zp[2]:209 [ play_lock_current::playfield_line#0 ]
Allocated zp[1]:211 [ play_lock_current::i#1 ]
Allocated zp[1]:212 [ play_remove_lines::c#0 ]
Allocated zp[1]:213 [ play_update_score::$2 ]
Allocated zp[1]:214 [ play_update_score::lines_before#0 ]
Allocated zp[1]:215 [ play_update_score::$9 ]
Allocated zp[4]:216 [ play_update_score::add_bcd#0 ]
Allocated zp[1]:220 [ play_update_score::$4 ]
Allocated zp[1]:221 [ play_update_score::lines_after#0 ]
Allocated zp[1]:222 [ play_increase_level::$1 ]
Allocated zp[1]:223 [ play_increase_level::$5 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [1] render_screen_showing = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] score_bcd = 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [3] irq_raster_next = IRQ_RASTER_FIRST [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [4] irq_sprite_ypos = SPRITES_FIRST_YPOS+$15 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [6] irq_sprite_ptr = __start::__init1_toSpritePtr1_return#0+3 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [7] irq_cnt = 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [19] if(*RASTER<sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] { } ) always clobbers reg byte a
Statement [21] if(render_screen_showing==0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:124 [ sprites_irq::ptr#0 ]
Statement [29] if(irq_cnt==9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] { } ) always clobbers reg byte a
Statement [30] if(irq_cnt==$a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a
Statement [31] irq_raster_next = irq_raster_next + $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x
Statement [32] irq_sprite_ypos = irq_sprite_ypos + $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x
Statement [33] irq_sprite_ptr = irq_sprite_ptr + 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x
Statement [34] *RASTER = irq_raster_next [ ] ( [ ] { } ) always clobbers reg byte a
Statement [35] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [36] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [37] irq_cnt = 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a
Statement [38] irq_raster_next = IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a
Statement [39] irq_sprite_ypos = irq_sprite_ypos + $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x
Statement [40] irq_sprite_ptr = irq_sprite_ptr + 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x
Statement [41] irq_raster_next = irq_raster_next + $15 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x
Statement [42] irq_sprite_ypos = SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a
Statement [44] irq_sprite_ptr = sprites_irq::toSpritePtr1_return#0 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a
Statement [52] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ score_bcd ] ( main:9 [ score_bcd ] { } ) always clobbers reg byte a
Statement [53] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ score_bcd ] ( main:9 [ score_bcd ] { } ) always clobbers reg byte a
Statement [70] current_piece_gfx#111 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#97 current_ypos#5 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 ] ( main:9 [ score_bcd current_ypos#97 current_ypos#5 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:23 [ current_ypos#14 current_ypos#97 current_ypos#98 ]
Removing always clobbered register reg byte a as potential for zp[1]:73 [ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ]
Removing always clobbered register reg byte a as potential for zp[1]:25 [ current_xpos#61 current_xpos#118 current_xpos#119 ]
Removing always clobbered register reg byte a as potential for zp[1]:85 [ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ]
Removing always clobbered register reg byte a as potential for zp[1]:139 [ play_spawn_current::$7 ]
Removing always clobbered register reg byte a as potential for zp[1]:81 [ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ]
Removing always clobbered register reg byte a as potential for zp[1]:87 [ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:77 [ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ]
Removing always clobbered register reg byte a as potential for zp[1]:86 [ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ]
Statement [75] current_piece#103 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_movedown_slow#0 game_over#53 ] ( main:9 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_movedown_slow#0 game_over#53 ] { } ) always clobbers reg byte a
Statement [76] current_piece_gfx#122 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_piece_gfx#122 current_movedown_slow#0 game_over#53 ] ( main:9 [ score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_piece_gfx#122 current_movedown_slow#0 game_over#53 ] { } ) always clobbers reg byte a
Statement [78] if(*RASTER!=$ff) goto main::@2 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 ] ( main:9 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:2 [ render_screen_show#17 render_screen_show#14 ]
Removing always clobbered register reg byte a as potential for zp[1]:3 [ render_screen_render#19 render_screen_render#12 ]
Removing always clobbered register reg byte a as potential for zp[1]:82 [ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ]
Removing always clobbered register reg byte a as potential for zp[1]:46 [ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ]
Removing always clobbered register reg byte a as potential for zp[1]:4 [ current_movedown_counter#17 current_movedown_counter#15 current_movedown_counter#13 ]
Removing always clobbered register reg byte a as potential for zp[1]:76 [ level#35 level#25 level#18 level#20 level#22 ]
Removing always clobbered register reg byte a as potential for zp[1]:78 [ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ]
Statement [99] current_piece_gfx#112 = current_piece_gfx#19 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ( main:9 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:24 [ render_screen_render#35 render_screen_render#64 ]
Statement [110] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [112] *((byte*)CIA2) = render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [113] *D011 = VICII_ECM|VICII_DEN|VICII_RSEL|3 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [114] *BORDER_COLOR = BLACK [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [115] *BG_COLOR = BLACK [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [116] *BG_COLOR1 = *PIECES_COLORS_1 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [117] *BG_COLOR2 = *PIECES_COLORS_2 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [118] *BG_COLOR3 = GREY [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [123] render_init::$5 = render_init::i#2 << 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:5 [ render_init::i#2 render_init::i#1 ]
Statement [124] screen_lines_1[render_init::$5] = render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:134 [ render_init::$5 ]
Statement [125] screen_lines_2[render_init::$5] = render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] { } ) always clobbers reg byte a
Statement [126] render_init::li_1#1 = render_init::li_1#2 + $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] { } ) always clobbers reg byte a
Statement [127] render_init::li_2#1 = render_init::li_2#2 + $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] { } ) always clobbers reg byte a
Statement [131] *SPRITES_ENABLE = $f [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [132] *SPRITES_MC = 0 [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [133] *SPRITES_EXPAND_Y = *SPRITES_MC [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [134] *SPRITES_EXPAND_X = *SPRITES_EXPAND_Y [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [136] sprites_init::s2#0 = sprites_init::s#2 << 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:10 [ sprites_init::s#2 sprites_init::s#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:11 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Statement [137] SPRITES_XPOS[sprites_init::s2#0] = sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a
Statement [138] SPRITES_COLOR[sprites_init::s#2] = BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a
Statement [139] sprites_init::xpos#1 = sprites_init::xpos#2 + $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#1 ] { } ) always clobbers reg byte a
Statement [144] *IRQ_STATUS = IRQ_RASTER [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a
Statement [146] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [147] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [148] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [149] *VICII_CONTROL = *VICII_CONTROL & $7f [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [150] *RASTER = IRQ_RASTER_FIRST [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [151] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [152] *HARDWARE_IRQ = &sprites_irq [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [157] play_init::$2 = play_init::j#2 << 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:12 [ play_init::j#2 play_init::j#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:15 [ play_init::idx#2 play_init::idx#1 ]
Statement [158] playfield_lines[play_init::$2] = play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a
Statement [159] playfield_lines_idx[play_init::j#2] = play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a
Statement [160] play_init::pli#1 = play_init::pli#2 + PLAYFIELD_COLS [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::idx#2 play_init::pli#1 ] { } ) always clobbers reg byte a
Statement [161] play_init::idx#1 = play_init::idx#2 + PLAYFIELD_COLS [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#1 play_init::idx#1 ] { } ) always clobbers reg byte a
Statement [164] *(playfield_lines_idx+PLAYFIELD_LINES) = PLAYFIELD_COLS*PLAYFIELD_LINES [ ] ( main:9::play_init:61 [ score_bcd ] { } ) always clobbers reg byte a
Statement [167] play_init::$3 = play_init::b#2 << 2 [ current_movedown_slow#0 play_init::b#2 play_init::$3 ] ( main:9::play_init:61 [ score_bcd current_movedown_slow#0 play_init::b#2 play_init::$3 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:16 [ play_init::b#2 play_init::b#1 ]
Statement [168] score_add_bcd[play_init::$3] = SCORE_BASE_BCD[play_init::$3] [ current_movedown_slow#0 play_init::b#2 ] ( main:9::play_init:61 [ score_bcd current_movedown_slow#0 play_init::b#2 ] { } ) always clobbers reg byte a
Statement [174] play_spawn_current::$7 = play_spawn_current::current_piece_idx#0 << 1 [ play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:138 [ play_spawn_current::current_piece_idx#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:131 [ play_movement::key_event#0 ]
Statement [180] current_piece#102 = (byte*)PIECES[play_spawn_current::$7] [ current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:64 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ]
Removing always clobbered register reg byte a as potential for zp[1]:65 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ]
Statement [194] render_playfield::$0 = render_screen_render#24 + render_playfield::l#2 [ render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:17 [ render_screen_render#24 render_screen_render#63 ]
Removing always clobbered register reg byte a as potential for zp[1]:18 [ render_playfield::l#2 render_playfield::l#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:19 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
Statement [195] render_playfield::$3 = render_playfield::$0 << 1 [ render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a
Statement [196] render_playfield::screen_line#0 = screen_lines_1[render_playfield::$3] [ render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a
Statement [198] *render_playfield::screen_line#2 = playfield[render_playfield::i#2] [ render_screen_render#24 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:73 [ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ]
Removing always clobbered register reg byte y as potential for zp[1]:85 [ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ]
Removing always clobbered register reg byte y as potential for zp[1]:139 [ play_spawn_current::$7 ]
Removing always clobbered register reg byte y as potential for zp[1]:81 [ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ]
Removing always clobbered register reg byte y as potential for zp[1]:87 [ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:77 [ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ]
Removing always clobbered register reg byte y as potential for zp[1]:86 [ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ]
Removing always clobbered register reg byte y as potential for zp[1]:17 [ render_screen_render#24 render_screen_render#63 ]
Removing always clobbered register reg byte y as potential for zp[1]:18 [ render_playfield::l#2 render_playfield::l#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:19 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:22 [ render_playfield::c#2 render_playfield::c#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:22 [ render_playfield::c#2 render_playfield::c#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:2 [ render_screen_show#17 render_screen_show#14 ]
Removing always clobbered register reg byte y as potential for zp[1]:3 [ render_screen_render#19 render_screen_render#12 ]
Removing always clobbered register reg byte y as potential for zp[1]:82 [ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ]
Removing always clobbered register reg byte y as potential for zp[1]:46 [ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ]
Removing always clobbered register reg byte y as potential for zp[1]:4 [ current_movedown_counter#17 current_movedown_counter#15 current_movedown_counter#13 ]
Removing always clobbered register reg byte y as potential for zp[1]:76 [ level#35 level#25 level#18 level#20 level#22 ]
Removing always clobbered register reg byte y as potential for zp[1]:78 [ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ]
Statement [210] render_moving::i#1 = render_moving::i#3 + 4 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:28 [ current_piece_char#70 current_piece_char#99 current_piece_char#100 ]
Removing always clobbered register reg byte a as potential for zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:30 [ render_moving::l#4 render_moving::l#1 ]
Statement [216] render_moving::$1 = render_screen_render#35 + render_moving::ypos#2 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ]
Statement [217] render_moving::$6 = render_moving::$1 << 1 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [218] render_moving::screen_line#0 = screen_lines_1[render_moving::$6] [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [221] render_moving::current_cell#0 = current_piece_gfx#66[render_moving::i#4] [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#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:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#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 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#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 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:33 [ render_moving::c#2 render_moving::c#1 ]
Statement [224] render_moving::screen_line#0[render_moving::xpos#2] = current_piece_char#70 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [232] render_next::$6 = next_piece_idx#13 << 1 [ next_piece_idx#13 render_next::screen_next_area#11 render_next::$6 ] ( main:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 next_piece_idx#13 render_next::screen_next_area#11 render_next::$6 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 next_piece_idx#13 render_next::screen_next_area#11 render_next::$6 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:35 [ next_piece_idx#13 next_piece_idx#79 next_piece_idx#80 ]
Statement [234] render_next::next_piece_gfx#8 = (byte*)PIECES[render_next::$6] [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#8 ] ( main:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#8 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#8 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:151 [ render_next::next_piece_char#0 ]
Statement [237] render_next::cell#0 = *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:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 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 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 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 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:151 [ render_next::next_piece_char#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:36 [ render_next::l#7 render_next::l#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:36 [ render_next::l#7 render_next::l#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:41 [ render_next::c#2 render_next::c#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:41 [ render_next::c#2 render_next::c#1 ]
Statement [240] *render_next::screen_next_area#5 = 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:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 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 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 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 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a reg byte y
Statement [244] render_next::screen_next_area#4 = render_next::screen_next_area#3 + $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a
Statement [248] *render_next::screen_next_area#5 = 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:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 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 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 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 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a reg byte y
Statement [253] *BG_COLOR1 = PIECES_COLORS_1[level#25] [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a
Statement [254] *BG_COLOR2 = PIECES_COLORS_2[level#25] [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a
Statement [265] keyboard_event_scan::keycode#1 = keyboard_event_scan::keycode#11 + 8 [ keyboard_event_scan::row#2 keyboard_events_size#32 keyboard_event_scan::keycode#1 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_events_size#32 keyboard_event_scan::keycode#1 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:43 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
Statement [295] keyboard_event_scan::$15 = keyboard_event_scan::row_scan#0 ^ keyboard_scan_values[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#11 keyboard_event_scan::$15 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::$15 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:155 [ keyboard_event_scan::row_scan#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:44 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:45 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ]
Statement [299] keyboard_event_scan::event_type#0 = keyboard_event_scan::row_scan#0 & keyboard_matrix_col_bitmask[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#11 keyboard_event_scan::event_type#0 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::event_type#0 ] { } ) always clobbers reg byte a
Statement [301] keyboard_events[keyboard_events_size#11] = 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#11 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 ] { } ) always clobbers reg byte a
Statement [307] keyboard_scan_values[keyboard_event_scan::row#2] = keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#31 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#31 ] { } ) always clobbers reg byte a
Statement [308] keyboard_event_scan::$23 = keyboard_event_scan::keycode#10 | $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#11 keyboard_event_scan::$23 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::$23 ] { } ) always clobbers reg byte a
Statement [327] play_movement::render#2 = play_movement::render#1 + play_movement::$3 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_movement::render#2 ] ( main:9::play_movement:90 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_movement::render#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [332] play_movement::return#0 = play_movement::render#2 + play_movement::$4 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::return#0 current_orientation#26 current_piece_gfx#22 current_xpos#27 ] ( main:9::play_movement:90 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::return#0 current_orientation#26 current_piece_gfx#22 current_xpos#27 ] { { play_movement::key_event#0 = main::key_event#0 } { play_movement::return#2 = play_movement::return#3 } } ) always clobbers reg byte a
Statement [336] render_bcd::screen#0 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#0 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [339] render_bcd::screen#1 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#1 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#1 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [342] render_bcd::screen#2 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#2 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#2 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [346] render_bcd::screen#3 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:97 [ 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 ]
Statement [349] render_bcd::screen#4 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [351] render_bcd::screen#5 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::screen#5 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::screen#5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [355] render_screen_render#12 = render_screen_render#19 ^ $20 [ render_screen_show#17 render_screen_render#12 ] ( main:9::render_screen_swap:108 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_show#17 render_screen_render#12 ] { } ) always clobbers reg byte a
Statement [356] render_screen_show#14 = render_screen_show#17 ^ $20 [ render_screen_show#14 render_screen_render#12 ] ( main:9::render_screen_swap:108 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_show#14 render_screen_render#12 ] { } ) always clobbers reg byte a
Statement [361] *render_screen_original::screen#5 = render_screen_original::SPACE [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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
Removing always clobbered register reg byte a as potential for zp[1]:51 [ render_screen_original::y#6 render_screen_original::y#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:51 [ render_screen_original::y#6 render_screen_original::y#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:60 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ]
Removing always clobbered register reg byte y as potential for zp[1]:60 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ]
Statement [363] *render_screen_original::cols#4 = BLACK [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [368] *render_screen_original::screen#6 = *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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [371] *render_screen_original::cols#5 = *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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [377] *render_screen_original::screen#7 = render_screen_original::SPACE [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [379] *render_screen_original::cols#6 = BLACK [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [387] play_collision::piece_gfx#0 = current_piece#18 + play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:48 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:173 [ play_movement::render#2 ]
Removing always clobbered register reg byte a as potential for zp[1]:91 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ]
Statement [389] play_collision::$14 = play_collision::yp#2 << 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:67 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ]
Removing always clobbered register reg byte a as potential for zp[1]:66 [ play_collision::l#6 play_collision::l#1 ]
Statement [390] play_collision::playfield_line#0 = playfield_lines[play_collision::$14] [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [394] if(play_collision::piece_gfx#0[play_collision::i#2]==0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:68 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:69 [ play_collision::c#2 play_collision::c#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:182 [ play_collision::i#1 ]
Statement [396] play_collision::$5 = play_collision::xp#2 & $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [399] if(play_collision::playfield_line#0[play_collision::xp#2]==0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [410] *((byte*)CIA1) = keyboard_matrix_row_bitmask[keyboard_matrix_read::rowid#0] [ ] ( main:9::keyboard_event_scan:82::keyboard_matrix_read:261 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a
Statement [411] keyboard_matrix_read::return#0 = ~ *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:9::keyboard_event_scan:82::keyboard_matrix_read:261 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 keyboard_matrix_read::return#0 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a
Statement [414] keyboard_event_pressed::$0 = keyboard_event_pressed::keycode#5 >> 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:9::keyboard_event_scan:82::keyboard_event_pressed:270 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:276 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:282 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:288 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } main:9::play_movement:90::play_move_down:317::keyboard_event_pressed:423 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:71 [ keyboard_event_pressed::keycode#5 ]
Removing always clobbered register reg byte a as potential for zp[1]:72 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ]
Statement [416] keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#5 & 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:9::keyboard_event_scan:82::keyboard_event_pressed:270 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:276 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:282 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:288 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } main:9::play_movement:90::play_move_down:317::keyboard_event_pressed:423 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:186 [ keyboard_event_pressed::row_bits#0 ]
Statement [417] keyboard_event_pressed::return#11 = keyboard_event_pressed::row_bits#0 & keyboard_matrix_col_bitmask[keyboard_event_pressed::$1] [ keyboard_event_pressed::return#11 ] ( main:9::keyboard_event_scan:82::keyboard_event_pressed:270 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:276 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:282 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:288 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } main:9::play_movement:90::play_move_down:317::keyboard_event_pressed:423 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } ) always clobbers reg byte a
Statement [437] current_piece#98 = current_piece#23 [ score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece#98 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece#98 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:63 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
Statement [452] current_piece#95 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [453] current_piece_gfx#116 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 current_piece_gfx#116 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 current_piece_gfx#116 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [463] current_piece#100 = current_piece#16 [ current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#100 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:9::play_movement:90::play_move_leftright:324 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#100 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [474] current_piece#99 = current_piece#16 [ current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#99 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:9::play_movement:90::play_move_leftright:324 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#99 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [484] play_move_rotate::$5 = current_orientation#21 + $10 [ current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$5 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [490] current_piece#101 = current_piece#16 [ current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 current_piece#101 play_collision::orientation#3 play_collision::ypos#3 play_collision::xpos#3 play_move_rotate::orientation#3 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 current_piece#101 play_collision::orientation#3 play_collision::ypos#3 play_collision::xpos#3 play_move_rotate::orientation#3 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [496] current_piece_gfx#6 = current_piece#16 + current_orientation#6 [ current_piece#16 current_ypos#20 current_xpos#27 current_orientation#6 current_piece_gfx#6 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_xpos#27 current_orientation#6 current_piece_gfx#6 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [497] play_move_rotate::$7 = current_orientation#21 - $10 [ current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$7 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [500] render_bcd::screen_pos#0 = render_bcd::screen#6 + render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:96 [ render_bcd::only_low#6 ]
Statement [502] render_bcd::$5 = render_bcd::bcd#6 >> 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [504] *render_bcd::screen_pos#0 = render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:97 [ 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 ]
Statement [507] render_bcd::$3 = render_bcd::bcd#6 & $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [509] *render_bcd::screen_pos#3 = render_bcd::$4 [ ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte y
Statement [513] play_lock_current::$4 = play_lock_current::yp#2 << 1 [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:100 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:102 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ]
Removing always clobbered register reg byte a as potential for zp[1]:101 [ play_lock_current::l#6 play_lock_current::l#1 ]
Statement [514] play_lock_current::playfield_line#0 = playfield_lines[play_lock_current::$4] [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [518] if(current_piece_gfx#12[play_lock_current::i#2]==0) goto play_lock_current::@3 [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:103 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:104 [ play_lock_current::c#2 play_lock_current::c#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:211 [ play_lock_current::i#1 ]
Statement [519] play_lock_current::playfield_line#0[play_lock_current::xp#2] = current_piece_char#23 [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [542] play_remove_lines::w#2 = play_remove_lines::w#1 + PLAYFIELD_COLS [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:9::play_movement:90::play_move_down:317::play_remove_lines:445 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#7 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:105 [ play_remove_lines::y#8 play_remove_lines::y#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:106 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:107 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ]
Statement [550] playfield[play_remove_lines::w#6] = 0 [ play_remove_lines::removed#7 play_remove_lines::w#6 ] ( main:9::play_movement:90::play_move_down:317::play_remove_lines:445 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_remove_lines::removed#7 play_remove_lines::w#6 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#7 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:110 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ]
Statement [555] play_update_score::$9 = play_update_score::removed#0 << 2 [ score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:195 [ play_update_score::removed#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:214 [ play_update_score::lines_before#0 ]
Statement [556] play_update_score::add_bcd#0 = score_add_bcd[play_update_score::$9] [ score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [558] lines_bcd#31 = lines_bcd#20 + play_update_score::removed#0 [ score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#31 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#31 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [559] score_bcd = score_bcd + play_update_score::add_bcd#0 [ score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 lines_bcd#31 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 lines_bcd#31 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [573] play_increase_level::$1 = level_bcd#22 & $f [ level#22 current_movedown_slow#67 level_bcd#22 play_increase_level::$1 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#22 play_increase_level::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [575] level_bcd#7 = level_bcd#22 + 6 [ level#22 current_movedown_slow#67 level_bcd#7 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a reg byte x
Removing always clobbered register reg byte x as potential for zp[1]:2 [ render_screen_show#17 render_screen_show#14 ]
Removing always clobbered register reg byte x as potential for zp[1]:3 [ render_screen_render#19 render_screen_render#12 ]
Removing always clobbered register reg byte x as potential for zp[1]:46 [ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ]
Removing always clobbered register reg byte x as potential for zp[1]:131 [ play_movement::key_event#0 ]
Removing always clobbered register reg byte x as potential for zp[1]:86 [ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ]
Removing always clobbered register reg byte x as potential for zp[1]:87 [ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ]
Removing always clobbered register reg byte x as potential for zp[1]:76 [ level#35 level#25 level#18 level#20 level#22 ]
Removing always clobbered register reg byte x as potential for zp[1]:77 [ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ]
Statement [579] play_increase_level::$5 = play_increase_level::b#2 << 2 [ level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 play_increase_level::$5 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 play_increase_level::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:111 [ play_increase_level::b#2 play_increase_level::b#1 ]
Statement [580] score_add_bcd[play_increase_level::$5] = score_add_bcd[play_increase_level::$5] + SCORE_BASE_BCD[play_increase_level::$5] [ level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [1] render_screen_showing = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] score_bcd = 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [3] irq_raster_next = IRQ_RASTER_FIRST [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [4] irq_sprite_ypos = SPRITES_FIRST_YPOS+$15 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [6] irq_sprite_ptr = __start::__init1_toSpritePtr1_return#0+3 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [7] irq_cnt = 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [19] if(*RASTER<sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] { } ) always clobbers reg byte a
Statement [21] if(render_screen_showing==0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] { } ) always clobbers reg byte a
Statement [29] if(irq_cnt==9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] { } ) always clobbers reg byte a
Statement [30] if(irq_cnt==$a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a
Statement [31] irq_raster_next = irq_raster_next + $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x
Statement [32] irq_sprite_ypos = irq_sprite_ypos + $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x
Statement [33] irq_sprite_ptr = irq_sprite_ptr + 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x
Statement [34] *RASTER = irq_raster_next [ ] ( [ ] { } ) always clobbers reg byte a
Statement [35] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [36] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [37] irq_cnt = 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a
Statement [38] irq_raster_next = IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a
Statement [39] irq_sprite_ypos = irq_sprite_ypos + $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x
Statement [40] irq_sprite_ptr = irq_sprite_ptr + 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x
Statement [41] irq_raster_next = irq_raster_next + $15 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x
Statement [42] irq_sprite_ypos = SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a
Statement [44] irq_sprite_ptr = sprites_irq::toSpritePtr1_return#0 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a
Statement [52] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ score_bcd ] ( main:9 [ score_bcd ] { } ) always clobbers reg byte a
Statement [53] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ score_bcd ] ( main:9 [ score_bcd ] { } ) always clobbers reg byte a
Statement [70] current_piece_gfx#111 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#97 current_ypos#5 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 ] ( main:9 [ score_bcd current_ypos#97 current_ypos#5 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } ) always clobbers reg byte a
Statement [75] current_piece#103 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_movedown_slow#0 game_over#53 ] ( main:9 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_movedown_slow#0 game_over#53 ] { } ) always clobbers reg byte a
Statement [76] current_piece_gfx#122 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_piece_gfx#122 current_movedown_slow#0 game_over#53 ] ( main:9 [ score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_piece_gfx#122 current_movedown_slow#0 game_over#53 ] { } ) always clobbers reg byte a
Statement [78] if(*RASTER!=$ff) goto main::@2 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 ] ( main:9 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 ] { } ) always clobbers reg byte a
Statement [87] if(game_over#22==0) goto main::@4 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#17 main::key_event#0 ] ( main:9 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#17 main::key_event#0 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:130 [ main::key_event#0 ]
Statement [99] current_piece_gfx#112 = current_piece_gfx#19 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ( main:9 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [110] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [112] *((byte*)CIA2) = render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [113] *D011 = VICII_ECM|VICII_DEN|VICII_RSEL|3 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [114] *BORDER_COLOR = BLACK [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [115] *BG_COLOR = BLACK [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [116] *BG_COLOR1 = *PIECES_COLORS_1 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [117] *BG_COLOR2 = *PIECES_COLORS_2 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [118] *BG_COLOR3 = GREY [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [123] render_init::$5 = render_init::i#2 << 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a
Statement [124] screen_lines_1[render_init::$5] = render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a
Statement [125] screen_lines_2[render_init::$5] = render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] { } ) always clobbers reg byte a
Statement [126] render_init::li_1#1 = render_init::li_1#2 + $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] { } ) always clobbers reg byte a
Statement [127] render_init::li_2#1 = render_init::li_2#2 + $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] { } ) always clobbers reg byte a
Statement [131] *SPRITES_ENABLE = $f [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [132] *SPRITES_MC = 0 [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [133] *SPRITES_EXPAND_Y = *SPRITES_MC [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [134] *SPRITES_EXPAND_X = *SPRITES_EXPAND_Y [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [136] sprites_init::s2#0 = sprites_init::s#2 << 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] { } ) always clobbers reg byte a
Statement [137] SPRITES_XPOS[sprites_init::s2#0] = sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a
Statement [138] SPRITES_COLOR[sprites_init::s#2] = BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a
Statement [139] sprites_init::xpos#1 = sprites_init::xpos#2 + $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#1 ] { } ) always clobbers reg byte a
Statement [144] *IRQ_STATUS = IRQ_RASTER [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a
Statement [146] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [147] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [148] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [149] *VICII_CONTROL = *VICII_CONTROL & $7f [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [150] *RASTER = IRQ_RASTER_FIRST [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [151] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [152] *HARDWARE_IRQ = &sprites_irq [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [157] play_init::$2 = play_init::j#2 << 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] { } ) always clobbers reg byte a
Statement [158] playfield_lines[play_init::$2] = play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a
Statement [159] playfield_lines_idx[play_init::j#2] = play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a
Statement [160] play_init::pli#1 = play_init::pli#2 + PLAYFIELD_COLS [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::idx#2 play_init::pli#1 ] { } ) always clobbers reg byte a
Statement [161] play_init::idx#1 = play_init::idx#2 + PLAYFIELD_COLS [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#1 play_init::idx#1 ] { } ) always clobbers reg byte a
Statement [164] *(playfield_lines_idx+PLAYFIELD_LINES) = PLAYFIELD_COLS*PLAYFIELD_LINES [ ] ( main:9::play_init:61 [ score_bcd ] { } ) always clobbers reg byte a
Statement [165] current_movedown_slow#0 = *MOVEDOWN_SLOW_SPEEDS [ current_movedown_slow#0 ] ( main:9::play_init:61 [ score_bcd current_movedown_slow#0 ] { } ) always clobbers reg byte a
Statement [167] play_init::$3 = play_init::b#2 << 2 [ current_movedown_slow#0 play_init::b#2 play_init::$3 ] ( main:9::play_init:61 [ score_bcd current_movedown_slow#0 play_init::b#2 play_init::$3 ] { } ) always clobbers reg byte a
Statement [168] score_add_bcd[play_init::$3] = SCORE_BASE_BCD[play_init::$3] [ current_movedown_slow#0 play_init::b#2 ] ( main:9::play_init:61 [ score_bcd current_movedown_slow#0 play_init::b#2 ] { } ) always clobbers reg byte a
Statement [174] play_spawn_current::$7 = play_spawn_current::current_piece_idx#0 << 1 [ play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [180] current_piece#102 = (byte*)PIECES[play_spawn_current::$7] [ current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [188] if(play_spawn_current::piece_idx#2==7) goto play_spawn_current::sid_rnd1 [ current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 ] { } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } } ) always clobbers reg byte a
Statement [191] play_spawn_current::piece_idx#1 = play_spawn_current::sid_rnd1_return#0 & 7 [ current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#53 play_spawn_current::piece_idx#1 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#53 play_spawn_current::piece_idx#1 ] { } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#53 play_spawn_current::piece_idx#1 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#53 play_spawn_current::piece_idx#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } } ) always clobbers reg byte a
Statement [194] render_playfield::$0 = render_screen_render#24 + render_playfield::l#2 [ render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a
Statement [195] render_playfield::$3 = render_playfield::$0 << 1 [ render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a
Statement [196] render_playfield::screen_line#0 = screen_lines_1[render_playfield::$3] [ render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a
Statement [198] *render_playfield::screen_line#2 = playfield[render_playfield::i#2] [ render_screen_render#24 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a reg byte y
Statement [210] render_moving::i#1 = render_moving::i#3 + 4 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [216] render_moving::$1 = render_screen_render#35 + render_moving::ypos#2 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [217] render_moving::$6 = render_moving::$1 << 1 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [218] render_moving::screen_line#0 = screen_lines_1[render_moving::$6] [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [221] render_moving::current_cell#0 = current_piece_gfx#66[render_moving::i#4] [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#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:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#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 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#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 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [224] render_moving::screen_line#0[render_moving::xpos#2] = current_piece_char#70 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [232] render_next::$6 = next_piece_idx#13 << 1 [ next_piece_idx#13 render_next::screen_next_area#11 render_next::$6 ] ( main:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 next_piece_idx#13 render_next::screen_next_area#11 render_next::$6 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 next_piece_idx#13 render_next::screen_next_area#11 render_next::$6 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a
Statement [234] render_next::next_piece_gfx#8 = (byte*)PIECES[render_next::$6] [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#8 ] ( main:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#8 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#8 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a
Statement [237] render_next::cell#0 = *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:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 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 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 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 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a reg byte y
Statement [240] *render_next::screen_next_area#5 = 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:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 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 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 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 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a reg byte y
Statement [244] render_next::screen_next_area#4 = render_next::screen_next_area#3 + $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a
Statement [248] *render_next::screen_next_area#5 = 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:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 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 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 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 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a reg byte y
Statement [249] if(render_screen_show#17==0) goto render_show::toD0181 [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a
Statement [253] *BG_COLOR1 = PIECES_COLORS_1[level#25] [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a reg byte y
Statement [254] *BG_COLOR2 = PIECES_COLORS_2[level#25] [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a reg byte y
Statement [255] render_screen_showing = render_screen_show#17 [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a
Statement [264] if(keyboard_event_scan::row_scan#0!=keyboard_scan_values[keyboard_event_scan::row#2]) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 keyboard_event_scan::row_scan#0 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 keyboard_event_scan::row_scan#0 ] { } ) always clobbers reg byte a
Statement [265] keyboard_event_scan::keycode#1 = keyboard_event_scan::keycode#11 + 8 [ keyboard_event_scan::row#2 keyboard_events_size#32 keyboard_event_scan::keycode#1 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_events_size#32 keyboard_event_scan::keycode#1 ] { } ) always clobbers reg byte a
Statement [295] keyboard_event_scan::$15 = keyboard_event_scan::row_scan#0 ^ keyboard_scan_values[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#11 keyboard_event_scan::$15 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::$15 ] { } ) always clobbers reg byte a
Statement [298] if(keyboard_events_size#11==8) goto keyboard_event_scan::@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#11 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 ] { } ) always clobbers reg byte a
Statement [299] keyboard_event_scan::event_type#0 = keyboard_event_scan::row_scan#0 & keyboard_matrix_col_bitmask[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#11 keyboard_event_scan::event_type#0 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::event_type#0 ] { } ) always clobbers reg byte a
Statement [301] keyboard_events[keyboard_events_size#11] = 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#11 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 ] { } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:43 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:155 [ keyboard_event_scan::row_scan#0 ]
Removing always clobbered register reg byte y as potential for zp[1]:44 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:45 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ]
Statement [307] keyboard_scan_values[keyboard_event_scan::row#2] = keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#31 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#31 ] { } ) always clobbers reg byte a
Statement [308] keyboard_event_scan::$23 = keyboard_event_scan::keycode#10 | $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#11 keyboard_event_scan::$23 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::$23 ] { } ) always clobbers reg byte a
Statement [309] keyboard_events[keyboard_events_size#11] = keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#11 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 ] { } ) always clobbers reg byte y
Statement [311] if(keyboard_events_size#14==0) goto keyboard_event_get::@return [ keyboard_events_size#14 ] ( main:9::keyboard_event_get:84 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 ] { { keyboard_event_get::return#2 = keyboard_event_get::return#3 } } ) always clobbers reg byte a
Statement [313] keyboard_event_get::return#1 = keyboard_events[keyboard_events_size#3] [ keyboard_events_size#3 keyboard_event_get::return#1 ] ( main:9::keyboard_event_get:84 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#3 keyboard_event_get::return#1 ] { { keyboard_event_get::return#2 = keyboard_event_get::return#3 } } ) always clobbers reg byte y
Statement [320] if(game_over#16==0) goto play_movement::@1 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_orientation#21 current_piece_gfx#21 current_xpos#23 ] ( main:9::play_movement:90 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_orientation#21 current_piece_gfx#21 current_xpos#23 ] { { play_movement::key_event#0 = main::key_event#0 } { play_movement::return#2 = play_movement::return#3 } } ) always clobbers reg byte a
Statement [327] play_movement::render#2 = play_movement::render#1 + play_movement::$3 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_movement::render#2 ] ( main:9::play_movement:90 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_movement::render#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [332] play_movement::return#0 = play_movement::render#2 + play_movement::$4 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::return#0 current_orientation#26 current_piece_gfx#22 current_xpos#27 ] ( main:9::play_movement:90 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::return#0 current_orientation#26 current_piece_gfx#22 current_xpos#27 ] { { play_movement::key_event#0 = main::key_event#0 } { play_movement::return#2 = play_movement::return#3 } } ) always clobbers reg byte a
Statement [333] if(render_screen_render#19==0) goto render_score::@1 [ render_screen_render#19 lines_bcd#16 level_bcd#18 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 ] { } ) always clobbers reg byte a
Statement [336] render_bcd::screen#0 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#0 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [339] render_bcd::screen#1 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#1 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#1 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [342] render_bcd::screen#2 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#2 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#2 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [346] render_bcd::screen#3 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [349] render_bcd::screen#4 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [351] render_bcd::screen#5 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::screen#5 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::screen#5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [355] render_screen_render#12 = render_screen_render#19 ^ $20 [ render_screen_show#17 render_screen_render#12 ] ( main:9::render_screen_swap:108 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_show#17 render_screen_render#12 ] { } ) always clobbers reg byte a
Statement [356] render_screen_show#14 = render_screen_show#17 ^ $20 [ render_screen_show#14 render_screen_render#12 ] ( main:9::render_screen_swap:108 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_show#14 render_screen_render#12 ] { } ) always clobbers reg byte a
Statement [361] *render_screen_original::screen#5 = render_screen_original::SPACE [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [363] *render_screen_original::cols#4 = BLACK [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [368] *render_screen_original::screen#6 = *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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [371] *render_screen_original::cols#5 = *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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [377] *render_screen_original::screen#7 = render_screen_original::SPACE [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [379] *render_screen_original::cols#6 = BLACK [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [387] play_collision::piece_gfx#0 = current_piece#18 + play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [389] play_collision::$14 = play_collision::yp#2 << 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [390] play_collision::playfield_line#0 = playfield_lines[play_collision::$14] [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [394] if(play_collision::piece_gfx#0[play_collision::i#2]==0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [396] play_collision::$5 = play_collision::xp#2 & $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [399] if(play_collision::playfield_line#0[play_collision::xp#2]==0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [410] *((byte*)CIA1) = keyboard_matrix_row_bitmask[keyboard_matrix_read::rowid#0] [ ] ( main:9::keyboard_event_scan:82::keyboard_matrix_read:261 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a
Statement [411] keyboard_matrix_read::return#0 = ~ *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:9::keyboard_event_scan:82::keyboard_matrix_read:261 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 keyboard_matrix_read::return#0 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a
Statement [414] keyboard_event_pressed::$0 = keyboard_event_pressed::keycode#5 >> 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:9::keyboard_event_scan:82::keyboard_event_pressed:270 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:276 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:282 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:288 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } main:9::play_movement:90::play_move_down:317::keyboard_event_pressed:423 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } ) always clobbers reg byte a
Statement [416] keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#5 & 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:9::keyboard_event_scan:82::keyboard_event_pressed:270 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:276 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:282 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:288 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } main:9::play_movement:90::play_move_down:317::keyboard_event_pressed:423 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } ) always clobbers reg byte a
Statement [417] keyboard_event_pressed::return#11 = keyboard_event_pressed::row_bits#0 & keyboard_matrix_col_bitmask[keyboard_event_pressed::$1] [ keyboard_event_pressed::return#11 ] ( main:9::keyboard_event_scan:82::keyboard_event_pressed:270 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:276 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:282 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:288 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } main:9::play_movement:90::play_move_down:317::keyboard_event_pressed:423 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } ) always clobbers reg byte a
Statement [437] current_piece#98 = current_piece#23 [ score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece#98 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece#98 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [452] current_piece#95 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [453] current_piece_gfx#116 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 current_piece_gfx#116 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 current_piece_gfx#116 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [463] current_piece#100 = current_piece#16 [ current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#100 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:9::play_movement:90::play_move_leftright:324 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#100 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [474] current_piece#99 = current_piece#16 [ current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#99 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:9::play_movement:90::play_move_leftright:324 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#99 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [484] play_move_rotate::$5 = current_orientation#21 + $10 [ current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$5 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [490] current_piece#101 = current_piece#16 [ current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 current_piece#101 play_collision::orientation#3 play_collision::ypos#3 play_collision::xpos#3 play_move_rotate::orientation#3 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 current_piece#101 play_collision::orientation#3 play_collision::ypos#3 play_collision::xpos#3 play_move_rotate::orientation#3 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [496] current_piece_gfx#6 = current_piece#16 + current_orientation#6 [ current_piece#16 current_ypos#20 current_xpos#27 current_orientation#6 current_piece_gfx#6 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_xpos#27 current_orientation#6 current_piece_gfx#6 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [497] play_move_rotate::$7 = current_orientation#21 - $10 [ current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$7 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [500] render_bcd::screen_pos#0 = render_bcd::screen#6 + render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [502] render_bcd::$5 = render_bcd::bcd#6 >> 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [504] *render_bcd::screen_pos#0 = render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte y
Statement [507] render_bcd::$3 = render_bcd::bcd#6 & $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [509] *render_bcd::screen_pos#3 = render_bcd::$4 [ ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte y
Statement [513] play_lock_current::$4 = play_lock_current::yp#2 << 1 [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [514] play_lock_current::playfield_line#0 = playfield_lines[play_lock_current::$4] [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [518] if(current_piece_gfx#12[play_lock_current::i#2]==0) goto play_lock_current::@3 [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [519] play_lock_current::playfield_line#0[play_lock_current::xp#2] = current_piece_char#23 [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [542] play_remove_lines::w#2 = play_remove_lines::w#1 + PLAYFIELD_COLS [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:9::play_movement:90::play_move_down:317::play_remove_lines:445 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#7 } } ) always clobbers reg byte a
Statement [550] playfield[play_remove_lines::w#6] = 0 [ play_remove_lines::removed#7 play_remove_lines::w#6 ] ( main:9::play_movement:90::play_move_down:317::play_remove_lines:445 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_remove_lines::removed#7 play_remove_lines::w#6 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#7 } } ) always clobbers reg byte a
Statement [555] play_update_score::$9 = play_update_score::removed#0 << 2 [ score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [556] play_update_score::add_bcd#0 = score_add_bcd[play_update_score::$9] [ score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [558] lines_bcd#31 = lines_bcd#20 + play_update_score::removed#0 [ score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#31 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#31 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [559] score_bcd = score_bcd + play_update_score::add_bcd#0 [ score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 lines_bcd#31 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 lines_bcd#31 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [569] if(level#22>=$1d+1) goto play_increase_level::@1 [ level_bcd#10 level#22 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level_bcd#10 level#22 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [570] current_movedown_slow#9 = MOVEDOWN_SLOW_SPEEDS[level#22] [ level_bcd#10 level#22 current_movedown_slow#9 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level_bcd#10 level#22 current_movedown_slow#9 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:131 [ play_movement::key_event#0 ]
Statement [573] play_increase_level::$1 = level_bcd#22 & $f [ level#22 current_movedown_slow#67 level_bcd#22 play_increase_level::$1 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#22 play_increase_level::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [575] level_bcd#7 = level_bcd#22 + 6 [ level#22 current_movedown_slow#67 level_bcd#7 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a reg byte x
Statement [579] play_increase_level::$5 = play_increase_level::b#2 << 2 [ level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 play_increase_level::$5 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 play_increase_level::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [580] score_add_bcd[play_increase_level::$5] = score_add_bcd[play_increase_level::$5] + SCORE_BASE_BCD[play_increase_level::$5] [ level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [1] render_screen_showing = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] score_bcd = 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [3] irq_raster_next = IRQ_RASTER_FIRST [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [4] irq_sprite_ypos = SPRITES_FIRST_YPOS+$15 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [6] irq_sprite_ptr = __start::__init1_toSpritePtr1_return#0+3 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [7] irq_cnt = 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [19] if(*RASTER<sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] { } ) always clobbers reg byte a
Statement [21] if(render_screen_showing==0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] { } ) always clobbers reg byte a
Statement [29] if(irq_cnt==9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] { } ) always clobbers reg byte a
Statement [30] if(irq_cnt==$a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a
Statement [31] irq_raster_next = irq_raster_next + $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x
Statement [32] irq_sprite_ypos = irq_sprite_ypos + $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x
Statement [33] irq_sprite_ptr = irq_sprite_ptr + 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x
Statement [34] *RASTER = irq_raster_next [ ] ( [ ] { } ) always clobbers reg byte a
Statement [35] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [36] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [37] irq_cnt = 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a
Statement [38] irq_raster_next = IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a
Statement [39] irq_sprite_ypos = irq_sprite_ypos + $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x
Statement [40] irq_sprite_ptr = irq_sprite_ptr + 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x
Statement [41] irq_raster_next = irq_raster_next + $15 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x
Statement [42] irq_sprite_ypos = SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a
Statement [44] irq_sprite_ptr = sprites_irq::toSpritePtr1_return#0 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a
Statement [52] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ score_bcd ] ( main:9 [ score_bcd ] { } ) always clobbers reg byte a
Statement [53] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ score_bcd ] ( main:9 [ score_bcd ] { } ) always clobbers reg byte a
Statement [70] current_piece_gfx#111 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#97 current_ypos#5 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 ] ( main:9 [ score_bcd current_ypos#97 current_ypos#5 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } ) always clobbers reg byte a
Statement [75] current_piece#103 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_movedown_slow#0 game_over#53 ] ( main:9 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_movedown_slow#0 game_over#53 ] { } ) always clobbers reg byte a
Statement [76] current_piece_gfx#122 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_piece_gfx#122 current_movedown_slow#0 game_over#53 ] ( main:9 [ score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_piece_gfx#122 current_movedown_slow#0 game_over#53 ] { } ) always clobbers reg byte a
Statement [78] if(*RASTER!=$ff) goto main::@2 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 ] ( main:9 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 ] { } ) always clobbers reg byte a
Statement [87] if(game_over#22==0) goto main::@4 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#17 main::key_event#0 ] ( main:9 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#17 main::key_event#0 ] { } ) always clobbers reg byte a
Statement [99] current_piece_gfx#112 = current_piece_gfx#19 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ( main:9 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [110] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [112] *((byte*)CIA2) = render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [113] *D011 = VICII_ECM|VICII_DEN|VICII_RSEL|3 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [114] *BORDER_COLOR = BLACK [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [115] *BG_COLOR = BLACK [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [116] *BG_COLOR1 = *PIECES_COLORS_1 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [117] *BG_COLOR2 = *PIECES_COLORS_2 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [118] *BG_COLOR3 = GREY [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [123] render_init::$5 = render_init::i#2 << 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a
Statement [124] screen_lines_1[render_init::$5] = render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a
Statement [125] screen_lines_2[render_init::$5] = render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] { } ) always clobbers reg byte a
Statement [126] render_init::li_1#1 = render_init::li_1#2 + $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] { } ) always clobbers reg byte a
Statement [127] render_init::li_2#1 = render_init::li_2#2 + $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] { } ) always clobbers reg byte a
Statement [131] *SPRITES_ENABLE = $f [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [132] *SPRITES_MC = 0 [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [133] *SPRITES_EXPAND_Y = *SPRITES_MC [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [134] *SPRITES_EXPAND_X = *SPRITES_EXPAND_Y [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [136] sprites_init::s2#0 = sprites_init::s#2 << 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] { } ) always clobbers reg byte a
Statement [137] SPRITES_XPOS[sprites_init::s2#0] = sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a
Statement [138] SPRITES_COLOR[sprites_init::s#2] = BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a
Statement [139] sprites_init::xpos#1 = sprites_init::xpos#2 + $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#1 ] { } ) always clobbers reg byte a
Statement [144] *IRQ_STATUS = IRQ_RASTER [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a
Statement [146] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [147] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [148] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [149] *VICII_CONTROL = *VICII_CONTROL & $7f [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [150] *RASTER = IRQ_RASTER_FIRST [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [151] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [152] *HARDWARE_IRQ = &sprites_irq [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [157] play_init::$2 = play_init::j#2 << 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] { } ) always clobbers reg byte a
Statement [158] playfield_lines[play_init::$2] = play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a
Statement [159] playfield_lines_idx[play_init::j#2] = play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a
Statement [160] play_init::pli#1 = play_init::pli#2 + PLAYFIELD_COLS [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::idx#2 play_init::pli#1 ] { } ) always clobbers reg byte a
Statement [161] play_init::idx#1 = play_init::idx#2 + PLAYFIELD_COLS [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#1 play_init::idx#1 ] { } ) always clobbers reg byte a
Statement [164] *(playfield_lines_idx+PLAYFIELD_LINES) = PLAYFIELD_COLS*PLAYFIELD_LINES [ ] ( main:9::play_init:61 [ score_bcd ] { } ) always clobbers reg byte a
Statement [165] current_movedown_slow#0 = *MOVEDOWN_SLOW_SPEEDS [ current_movedown_slow#0 ] ( main:9::play_init:61 [ score_bcd current_movedown_slow#0 ] { } ) always clobbers reg byte a
Statement [167] play_init::$3 = play_init::b#2 << 2 [ current_movedown_slow#0 play_init::b#2 play_init::$3 ] ( main:9::play_init:61 [ score_bcd current_movedown_slow#0 play_init::b#2 play_init::$3 ] { } ) always clobbers reg byte a
Statement [168] score_add_bcd[play_init::$3] = SCORE_BASE_BCD[play_init::$3] [ current_movedown_slow#0 play_init::b#2 ] ( main:9::play_init:61 [ score_bcd current_movedown_slow#0 play_init::b#2 ] { } ) always clobbers reg byte a
Statement [174] play_spawn_current::$7 = play_spawn_current::current_piece_idx#0 << 1 [ play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [180] current_piece#102 = (byte*)PIECES[play_spawn_current::$7] [ current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [188] if(play_spawn_current::piece_idx#2==7) goto play_spawn_current::sid_rnd1 [ current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 ] { } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } } ) always clobbers reg byte a
Statement [191] play_spawn_current::piece_idx#1 = play_spawn_current::sid_rnd1_return#0 & 7 [ current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#53 play_spawn_current::piece_idx#1 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#53 play_spawn_current::piece_idx#1 ] { } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#53 play_spawn_current::piece_idx#1 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#53 play_spawn_current::piece_idx#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } } ) always clobbers reg byte a
Statement [194] render_playfield::$0 = render_screen_render#24 + render_playfield::l#2 [ render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a
Statement [195] render_playfield::$3 = render_playfield::$0 << 1 [ render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a
Statement [196] render_playfield::screen_line#0 = screen_lines_1[render_playfield::$3] [ render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a
Statement [198] *render_playfield::screen_line#2 = playfield[render_playfield::i#2] [ render_screen_render#24 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a reg byte y
Statement [210] render_moving::i#1 = render_moving::i#3 + 4 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [216] render_moving::$1 = render_screen_render#35 + render_moving::ypos#2 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [217] render_moving::$6 = render_moving::$1 << 1 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [218] render_moving::screen_line#0 = screen_lines_1[render_moving::$6] [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [221] render_moving::current_cell#0 = current_piece_gfx#66[render_moving::i#4] [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#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:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#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 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#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 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [224] render_moving::screen_line#0[render_moving::xpos#2] = current_piece_char#70 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [232] render_next::$6 = next_piece_idx#13 << 1 [ next_piece_idx#13 render_next::screen_next_area#11 render_next::$6 ] ( main:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 next_piece_idx#13 render_next::screen_next_area#11 render_next::$6 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 next_piece_idx#13 render_next::screen_next_area#11 render_next::$6 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a
Statement [234] render_next::next_piece_gfx#8 = (byte*)PIECES[render_next::$6] [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#8 ] ( main:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#8 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#8 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a
Statement [237] render_next::cell#0 = *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:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 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 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 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 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a reg byte y
Statement [240] *render_next::screen_next_area#5 = 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:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 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 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 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 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a reg byte y
Statement [244] render_next::screen_next_area#4 = render_next::screen_next_area#3 + $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a
Statement [248] *render_next::screen_next_area#5 = 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:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 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 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 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 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a reg byte y
Statement [249] if(render_screen_show#17==0) goto render_show::toD0181 [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a
Statement [253] *BG_COLOR1 = PIECES_COLORS_1[level#25] [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a reg byte y
Statement [254] *BG_COLOR2 = PIECES_COLORS_2[level#25] [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a reg byte y
Statement [255] render_screen_showing = render_screen_show#17 [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a
Statement [264] if(keyboard_event_scan::row_scan#0!=keyboard_scan_values[keyboard_event_scan::row#2]) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 keyboard_event_scan::row_scan#0 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 keyboard_event_scan::row_scan#0 ] { } ) always clobbers reg byte a
Statement [265] keyboard_event_scan::keycode#1 = keyboard_event_scan::keycode#11 + 8 [ keyboard_event_scan::row#2 keyboard_events_size#32 keyboard_event_scan::keycode#1 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_events_size#32 keyboard_event_scan::keycode#1 ] { } ) always clobbers reg byte a reg byte x
Removing always clobbered register reg byte x as potential for zp[1]:81 [ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ]
Removing always clobbered register reg byte x as potential for zp[1]:82 [ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ]
Removing always clobbered register reg byte x as potential for zp[1]:85 [ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ]
Removing always clobbered register reg byte x as potential for zp[1]:73 [ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ]
Removing always clobbered register reg byte x as potential for zp[1]:4 [ current_movedown_counter#17 current_movedown_counter#15 current_movedown_counter#13 ]
Removing always clobbered register reg byte x as potential for zp[1]:78 [ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ]
Removing always clobbered register reg byte x as potential for zp[1]:43 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
Statement [268] if(keyboard_event_scan::row#1!=8) goto keyboard_event_scan::@7 [ keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 keyboard_events_size#14 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 keyboard_events_size#14 ] { } ) always clobbers reg byte a
Statement [295] keyboard_event_scan::$15 = keyboard_event_scan::row_scan#0 ^ keyboard_scan_values[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#11 keyboard_event_scan::$15 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::$15 ] { } ) always clobbers reg byte a
Statement [296] keyboard_event_scan::$16 = keyboard_event_scan::$15 & keyboard_matrix_col_bitmask[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#11 keyboard_event_scan::$16 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::$16 ] { } ) always clobbers reg byte a
Statement [298] if(keyboard_events_size#11==8) goto keyboard_event_scan::@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#11 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 ] { } ) always clobbers reg byte a
Statement [299] keyboard_event_scan::event_type#0 = keyboard_event_scan::row_scan#0 & keyboard_matrix_col_bitmask[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#11 keyboard_event_scan::event_type#0 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::event_type#0 ] { } ) always clobbers reg byte a
Statement [301] keyboard_events[keyboard_events_size#11] = 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#11 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 ] { } ) always clobbers reg byte a reg byte y
Statement [307] keyboard_scan_values[keyboard_event_scan::row#2] = keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#31 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#31 ] { } ) always clobbers reg byte a reg byte y
Statement [308] keyboard_event_scan::$23 = keyboard_event_scan::keycode#10 | $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#11 keyboard_event_scan::$23 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::$23 ] { } ) always clobbers reg byte a
Statement [309] keyboard_events[keyboard_events_size#11] = keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#11 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 ] { } ) always clobbers reg byte y
Statement [311] if(keyboard_events_size#14==0) goto keyboard_event_get::@return [ keyboard_events_size#14 ] ( main:9::keyboard_event_get:84 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 ] { { keyboard_event_get::return#2 = keyboard_event_get::return#3 } } ) always clobbers reg byte a
Statement [313] keyboard_event_get::return#1 = keyboard_events[keyboard_events_size#3] [ keyboard_events_size#3 keyboard_event_get::return#1 ] ( main:9::keyboard_event_get:84 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#3 keyboard_event_get::return#1 ] { { keyboard_event_get::return#2 = keyboard_event_get::return#3 } } ) always clobbers reg byte y
Statement [320] if(game_over#16==0) goto play_movement::@1 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_orientation#21 current_piece_gfx#21 current_xpos#23 ] ( main:9::play_movement:90 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_orientation#21 current_piece_gfx#21 current_xpos#23 ] { { play_movement::key_event#0 = main::key_event#0 } { play_movement::return#2 = play_movement::return#3 } } ) always clobbers reg byte a
Statement [327] play_movement::render#2 = play_movement::render#1 + play_movement::$3 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_movement::render#2 ] ( main:9::play_movement:90 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_movement::render#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [332] play_movement::return#0 = play_movement::render#2 + play_movement::$4 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::return#0 current_orientation#26 current_piece_gfx#22 current_xpos#27 ] ( main:9::play_movement:90 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::return#0 current_orientation#26 current_piece_gfx#22 current_xpos#27 ] { { play_movement::key_event#0 = main::key_event#0 } { play_movement::return#2 = play_movement::return#3 } } ) always clobbers reg byte a
Statement [333] if(render_screen_render#19==0) goto render_score::@1 [ render_screen_render#19 lines_bcd#16 level_bcd#18 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 ] { } ) always clobbers reg byte a
Statement [336] render_bcd::screen#0 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#0 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [339] render_bcd::screen#1 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#1 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#1 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [342] render_bcd::screen#2 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#2 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#2 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [346] render_bcd::screen#3 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [349] render_bcd::screen#4 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [351] render_bcd::screen#5 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::screen#5 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::screen#5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [355] render_screen_render#12 = render_screen_render#19 ^ $20 [ render_screen_show#17 render_screen_render#12 ] ( main:9::render_screen_swap:108 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_show#17 render_screen_render#12 ] { } ) always clobbers reg byte a
Statement [356] render_screen_show#14 = render_screen_show#17 ^ $20 [ render_screen_show#14 render_screen_render#12 ] ( main:9::render_screen_swap:108 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_show#14 render_screen_render#12 ] { } ) always clobbers reg byte a
Statement [361] *render_screen_original::screen#5 = render_screen_original::SPACE [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [363] *render_screen_original::cols#4 = BLACK [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [368] *render_screen_original::screen#6 = *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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [371] *render_screen_original::cols#5 = *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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [377] *render_screen_original::screen#7 = render_screen_original::SPACE [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [379] *render_screen_original::cols#6 = BLACK [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [387] play_collision::piece_gfx#0 = current_piece#18 + play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [389] play_collision::$14 = play_collision::yp#2 << 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [390] play_collision::playfield_line#0 = playfield_lines[play_collision::$14] [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [394] if(play_collision::piece_gfx#0[play_collision::i#2]==0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [396] play_collision::$5 = play_collision::xp#2 & $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [399] if(play_collision::playfield_line#0[play_collision::xp#2]==0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [410] *((byte*)CIA1) = keyboard_matrix_row_bitmask[keyboard_matrix_read::rowid#0] [ ] ( main:9::keyboard_event_scan:82::keyboard_matrix_read:261 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a
Statement [411] keyboard_matrix_read::return#0 = ~ *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:9::keyboard_event_scan:82::keyboard_matrix_read:261 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 keyboard_matrix_read::return#0 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a
Statement [414] keyboard_event_pressed::$0 = keyboard_event_pressed::keycode#5 >> 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:9::keyboard_event_scan:82::keyboard_event_pressed:270 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:276 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:282 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:288 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } main:9::play_movement:90::play_move_down:317::keyboard_event_pressed:423 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } ) always clobbers reg byte a
Statement [416] keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#5 & 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:9::keyboard_event_scan:82::keyboard_event_pressed:270 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:276 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:282 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:288 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } main:9::play_movement:90::play_move_down:317::keyboard_event_pressed:423 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } ) always clobbers reg byte a
Statement [417] keyboard_event_pressed::return#11 = keyboard_event_pressed::row_bits#0 & keyboard_matrix_col_bitmask[keyboard_event_pressed::$1] [ keyboard_event_pressed::return#11 ] ( main:9::keyboard_event_scan:82::keyboard_event_pressed:270 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:276 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:282 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:288 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } main:9::play_movement:90::play_move_down:317::keyboard_event_pressed:423 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } ) always clobbers reg byte a
Statement [427] if(current_movedown_counter#13<current_movedown_fast) goto play_move_down::@2 [ score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [430] if(current_movedown_counter#13<current_movedown_slow#13) goto play_move_down::@3 [ score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#7 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [437] current_piece#98 = current_piece#23 [ score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece#98 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece#98 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [452] current_piece#95 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [453] current_piece_gfx#116 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 current_piece_gfx#116 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 current_piece_gfx#116 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [463] current_piece#100 = current_piece#16 [ current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#100 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:9::play_movement:90::play_move_leftright:324 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#100 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [474] current_piece#99 = current_piece#16 [ current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#99 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:9::play_movement:90::play_move_leftright:324 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#99 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [484] play_move_rotate::$5 = current_orientation#21 + $10 [ current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$5 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [490] current_piece#101 = current_piece#16 [ current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 current_piece#101 play_collision::orientation#3 play_collision::ypos#3 play_collision::xpos#3 play_move_rotate::orientation#3 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 current_piece#101 play_collision::orientation#3 play_collision::ypos#3 play_collision::xpos#3 play_move_rotate::orientation#3 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [496] current_piece_gfx#6 = current_piece#16 + current_orientation#6 [ current_piece#16 current_ypos#20 current_xpos#27 current_orientation#6 current_piece_gfx#6 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_xpos#27 current_orientation#6 current_piece_gfx#6 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [497] play_move_rotate::$7 = current_orientation#21 - $10 [ current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$7 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [500] render_bcd::screen_pos#0 = render_bcd::screen#6 + render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [502] render_bcd::$5 = render_bcd::bcd#6 >> 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [504] *render_bcd::screen_pos#0 = render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte y
Statement [507] render_bcd::$3 = render_bcd::bcd#6 & $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [509] *render_bcd::screen_pos#3 = render_bcd::$4 [ ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte y
Statement [513] play_lock_current::$4 = play_lock_current::yp#2 << 1 [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [514] play_lock_current::playfield_line#0 = playfield_lines[play_lock_current::$4] [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [518] if(current_piece_gfx#12[play_lock_current::i#2]==0) goto play_lock_current::@3 [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [519] play_lock_current::playfield_line#0[play_lock_current::xp#2] = current_piece_char#23 [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [542] play_remove_lines::w#2 = play_remove_lines::w#1 + PLAYFIELD_COLS [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:9::play_movement:90::play_move_down:317::play_remove_lines:445 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#7 } } ) always clobbers reg byte a
Statement [550] playfield[play_remove_lines::w#6] = 0 [ play_remove_lines::removed#7 play_remove_lines::w#6 ] ( main:9::play_movement:90::play_move_down:317::play_remove_lines:445 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_remove_lines::removed#7 play_remove_lines::w#6 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#7 } } ) always clobbers reg byte a
Statement [555] play_update_score::$9 = play_update_score::removed#0 << 2 [ score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [556] play_update_score::add_bcd#0 = score_add_bcd[play_update_score::$9] [ score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [558] lines_bcd#31 = lines_bcd#20 + play_update_score::removed#0 [ score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#31 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#31 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [559] score_bcd = score_bcd + play_update_score::add_bcd#0 [ score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 lines_bcd#31 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 lines_bcd#31 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [569] if(level#22>=$1d+1) goto play_increase_level::@1 [ level_bcd#10 level#22 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level_bcd#10 level#22 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [570] current_movedown_slow#9 = MOVEDOWN_SLOW_SPEEDS[level#22] [ level_bcd#10 level#22 current_movedown_slow#9 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level_bcd#10 level#22 current_movedown_slow#9 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a reg byte y
Statement [573] play_increase_level::$1 = level_bcd#22 & $f [ level#22 current_movedown_slow#67 level_bcd#22 play_increase_level::$1 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#22 play_increase_level::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [575] level_bcd#7 = level_bcd#22 + 6 [ level#22 current_movedown_slow#67 level_bcd#7 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a reg byte x
Statement [579] play_increase_level::$5 = play_increase_level::b#2 << 2 [ level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 play_increase_level::$5 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 play_increase_level::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [580] score_add_bcd[play_increase_level::$5] = score_add_bcd[play_increase_level::$5] + SCORE_BASE_BCD[play_increase_level::$5] [ level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [1] render_screen_showing = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] score_bcd = 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [3] irq_raster_next = IRQ_RASTER_FIRST [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [4] irq_sprite_ypos = SPRITES_FIRST_YPOS+$15 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [6] irq_sprite_ptr = __start::__init1_toSpritePtr1_return#0+3 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [7] irq_cnt = 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a
Statement [19] if(*RASTER<sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] { } ) always clobbers reg byte a
Statement [21] if(render_screen_showing==0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] { } ) always clobbers reg byte a
Statement [29] if(irq_cnt==9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] { } ) always clobbers reg byte a
Statement [30] if(irq_cnt==$a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a
Statement [31] irq_raster_next = irq_raster_next + $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x
Statement [32] irq_sprite_ypos = irq_sprite_ypos + $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x
Statement [33] irq_sprite_ptr = irq_sprite_ptr + 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x
Statement [34] *RASTER = irq_raster_next [ ] ( [ ] { } ) always clobbers reg byte a
Statement [35] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [36] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [37] irq_cnt = 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a
Statement [38] irq_raster_next = IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a
Statement [39] irq_sprite_ypos = irq_sprite_ypos + $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x
Statement [40] irq_sprite_ptr = irq_sprite_ptr + 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x
Statement [41] irq_raster_next = irq_raster_next + $15 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x
Statement [42] irq_sprite_ypos = SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a
Statement [44] irq_sprite_ptr = sprites_irq::toSpritePtr1_return#0 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a
Statement [52] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ score_bcd ] ( main:9 [ score_bcd ] { } ) always clobbers reg byte a
Statement [53] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ score_bcd ] ( main:9 [ score_bcd ] { } ) always clobbers reg byte a
Statement [70] current_piece_gfx#111 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#97 current_ypos#5 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 ] ( main:9 [ score_bcd current_ypos#97 current_ypos#5 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } ) always clobbers reg byte a
Statement [75] current_piece#103 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_movedown_slow#0 game_over#53 ] ( main:9 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_movedown_slow#0 game_over#53 ] { } ) always clobbers reg byte a
Statement [76] current_piece_gfx#122 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_piece_gfx#122 current_movedown_slow#0 game_over#53 ] ( main:9 [ score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 current_piece#103 current_piece_gfx#122 current_movedown_slow#0 game_over#53 ] { } ) always clobbers reg byte a
Statement [78] if(*RASTER!=$ff) goto main::@2 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 ] ( main:9 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 ] { } ) always clobbers reg byte a
Statement [87] if(game_over#22==0) goto main::@4 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#17 main::key_event#0 ] ( main:9 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#17 main::key_event#0 ] { } ) always clobbers reg byte a
Statement [99] current_piece_gfx#112 = current_piece_gfx#19 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ( main:9 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [110] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [112] *((byte*)CIA2) = render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [113] *D011 = VICII_ECM|VICII_DEN|VICII_RSEL|3 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [114] *BORDER_COLOR = BLACK [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [115] *BG_COLOR = BLACK [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [116] *BG_COLOR1 = *PIECES_COLORS_1 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [117] *BG_COLOR2 = *PIECES_COLORS_2 [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [118] *BG_COLOR3 = GREY [ ] ( main:9::render_init:55 [ score_bcd ] { } ) always clobbers reg byte a
Statement [123] render_init::$5 = render_init::i#2 << 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a
Statement [124] screen_lines_1[render_init::$5] = render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a
Statement [125] screen_lines_2[render_init::$5] = render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] { } ) always clobbers reg byte a
Statement [126] render_init::li_1#1 = render_init::li_1#2 + $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] { } ) always clobbers reg byte a
Statement [127] render_init::li_2#1 = render_init::li_2#2 + $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:9::render_init:55 [ score_bcd render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] { } ) always clobbers reg byte a
Statement [131] *SPRITES_ENABLE = $f [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [132] *SPRITES_MC = 0 [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [133] *SPRITES_EXPAND_Y = *SPRITES_MC [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [134] *SPRITES_EXPAND_X = *SPRITES_EXPAND_Y [ ] ( main:9::sprites_init:57 [ score_bcd ] { } ) always clobbers reg byte a
Statement [136] sprites_init::s2#0 = sprites_init::s#2 << 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] { } ) always clobbers reg byte a
Statement [137] SPRITES_XPOS[sprites_init::s2#0] = sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a
Statement [138] SPRITES_COLOR[sprites_init::s#2] = BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a
Statement [139] sprites_init::xpos#1 = sprites_init::xpos#2 + $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:9::sprites_init:57 [ score_bcd sprites_init::s#2 sprites_init::xpos#1 ] { } ) always clobbers reg byte a
Statement [144] *IRQ_STATUS = IRQ_RASTER [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a
Statement [146] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [147] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [148] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [149] *VICII_CONTROL = *VICII_CONTROL & $7f [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [150] *RASTER = IRQ_RASTER_FIRST [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [151] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [152] *HARDWARE_IRQ = &sprites_irq [ ] ( main:9::sprites_irq_init:59 [ score_bcd ] { } ) always clobbers reg byte a
Statement [157] play_init::$2 = play_init::j#2 << 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] { } ) always clobbers reg byte a
Statement [158] playfield_lines[play_init::$2] = play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a
Statement [159] playfield_lines_idx[play_init::j#2] = play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a
Statement [160] play_init::pli#1 = play_init::pli#2 + PLAYFIELD_COLS [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::idx#2 play_init::pli#1 ] { } ) always clobbers reg byte a
Statement [161] play_init::idx#1 = play_init::idx#2 + PLAYFIELD_COLS [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:9::play_init:61 [ score_bcd play_init::j#2 play_init::pli#1 play_init::idx#1 ] { } ) always clobbers reg byte a
Statement [164] *(playfield_lines_idx+PLAYFIELD_LINES) = PLAYFIELD_COLS*PLAYFIELD_LINES [ ] ( main:9::play_init:61 [ score_bcd ] { } ) always clobbers reg byte a
Statement [165] current_movedown_slow#0 = *MOVEDOWN_SLOW_SPEEDS [ current_movedown_slow#0 ] ( main:9::play_init:61 [ score_bcd current_movedown_slow#0 ] { } ) always clobbers reg byte a
Statement [167] play_init::$3 = play_init::b#2 << 2 [ current_movedown_slow#0 play_init::b#2 play_init::$3 ] ( main:9::play_init:61 [ score_bcd current_movedown_slow#0 play_init::b#2 play_init::$3 ] { } ) always clobbers reg byte a
Statement [168] score_add_bcd[play_init::$3] = SCORE_BASE_BCD[play_init::$3] [ current_movedown_slow#0 play_init::b#2 ] ( main:9::play_init:61 [ score_bcd current_movedown_slow#0 play_init::b#2 ] { } ) always clobbers reg byte a
Statement [174] play_spawn_current::$7 = play_spawn_current::current_piece_idx#0 << 1 [ play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 play_spawn_current::$7 game_over#66 play_spawn_current::current_piece_idx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [175] current_piece_char#4 = PIECES_CHARS[play_spawn_current::current_piece_idx#0] [ play_spawn_current::$7 current_piece_char#4 game_over#66 play_spawn_current::current_piece_idx#0 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 play_spawn_current::$7 current_piece_char#4 game_over#66 play_spawn_current::current_piece_idx#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 play_spawn_current::$7 current_piece_char#4 game_over#66 play_spawn_current::current_piece_idx#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 play_spawn_current::$7 current_piece_char#4 game_over#66 play_spawn_current::current_piece_idx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [176] current_xpos#100 = PIECES_START_X[play_spawn_current::current_piece_idx#0] [ current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_spawn_current::current_piece_idx#0 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_spawn_current::current_piece_idx#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_spawn_current::current_piece_idx#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_spawn_current::current_piece_idx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [177] current_ypos#5 = PIECES_START_Y[play_spawn_current::current_piece_idx#0] [ current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [180] current_piece#102 = (byte*)PIECES[play_spawn_current::$7] [ current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#4 play_collision::ypos#4 current_piece#102 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [188] if(play_spawn_current::piece_idx#2==7) goto play_spawn_current::sid_rnd1 [ current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 ] { } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } } ) always clobbers reg byte a
Statement [191] play_spawn_current::piece_idx#1 = play_spawn_current::sid_rnd1_return#0 & 7 [ current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#53 play_spawn_current::piece_idx#1 ] ( main:9::play_spawn_current:63 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#53 play_spawn_current::piece_idx#1 ] { } main:9::play_spawn_current:65 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#53 play_spawn_current::piece_idx#1 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#53 play_spawn_current::piece_idx#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } } ) always clobbers reg byte a
Statement [194] render_playfield::$0 = render_screen_render#24 + render_playfield::l#2 [ render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a
Statement [195] render_playfield::$3 = render_playfield::$0 << 1 [ render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a
Statement [196] render_playfield::screen_line#0 = screen_lines_1[render_playfield::$3] [ render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a
Statement [198] *render_playfield::screen_line#2 = playfield[render_playfield::i#2] [ render_screen_render#24 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:9::render_playfield:67 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#24 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { } main:9::render_playfield:95 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#24 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { { render_screen_render#24 = render_screen_render#63 } } ) always clobbers reg byte a reg byte y
Statement [210] render_moving::i#1 = render_moving::i#3 + 4 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [216] render_moving::$1 = render_screen_render#35 + render_moving::ypos#2 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [217] render_moving::$6 = render_moving::$1 << 1 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [218] render_moving::screen_line#0 = screen_lines_1[render_moving::$6] [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [221] render_moving::current_cell#0 = current_piece_gfx#66[render_moving::i#4] [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#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:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#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 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#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 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [224] render_moving::screen_line#0[render_moving::xpos#2] = current_piece_char#70 [ render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:9::render_moving:72 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#14 = current_ypos#97 } { current_xpos#118 = current_xpos#61 } { current_piece_gfx#111 = current_piece_gfx#66 } { current_piece_char#70 = current_piece_char#99 } } main:9::render_moving:101 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_render#35 current_xpos#61 current_piece_gfx#66 current_piece_char#70 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#14 = current_ypos#98 } { render_screen_render#35 = render_screen_render#64 } { current_xpos#119 = current_xpos#61 } { current_piece_gfx#112 = current_piece_gfx#66 } { current_piece_char#100 = current_piece_char#70 } } ) always clobbers reg byte a
Statement [232] render_next::$6 = next_piece_idx#13 << 1 [ next_piece_idx#13 render_next::screen_next_area#11 render_next::$6 ] ( main:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 next_piece_idx#13 render_next::screen_next_area#11 render_next::$6 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 next_piece_idx#13 render_next::screen_next_area#11 render_next::$6 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a
Statement [234] render_next::next_piece_gfx#8 = (byte*)PIECES[render_next::$6] [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#8 ] ( main:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#8 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#8 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a
Statement [237] render_next::cell#0 = *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:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 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 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 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 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a reg byte y
Statement [240] *render_next::screen_next_area#5 = 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:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 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 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 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 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a reg byte y
Statement [244] render_next::screen_next_area#4 = render_next::screen_next_area#3 + $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a
Statement [248] *render_next::screen_next_area#5 = 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:9::render_next:74 [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 current_movedown_slow#0 game_over#53 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 ] { { next_piece_idx#13 = next_piece_idx#79 } } main:9::render_next:104 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 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 ] { { render_screen_render#16 = render_screen_render#65 } { next_piece_idx#13 = next_piece_idx#80 } } ) always clobbers reg byte a reg byte y
Statement [249] if(render_screen_show#17==0) goto render_show::toD0181 [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a
Statement [253] *BG_COLOR1 = PIECES_COLORS_1[level#25] [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a reg byte y
Statement [254] *BG_COLOR2 = PIECES_COLORS_2[level#25] [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a reg byte y
Statement [255] render_screen_showing = render_screen_show#17 [ render_screen_show#17 level#25 ] ( main:9::render_show:80 [ score_bcd render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 keyboard_events_size#20 current_movedown_counter#17 lines_bcd#20 level_bcd#10 render_screen_show#17 level#25 ] { } ) always clobbers reg byte a
Statement [264] if(keyboard_event_scan::row_scan#0!=keyboard_scan_values[keyboard_event_scan::row#2]) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 keyboard_event_scan::row_scan#0 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 keyboard_event_scan::row_scan#0 ] { } ) always clobbers reg byte a reg byte y
Statement [265] keyboard_event_scan::keycode#1 = keyboard_event_scan::keycode#11 + 8 [ keyboard_event_scan::row#2 keyboard_events_size#32 keyboard_event_scan::keycode#1 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_events_size#32 keyboard_event_scan::keycode#1 ] { } ) always clobbers reg byte a reg byte x
Statement [268] if(keyboard_event_scan::row#1!=8) goto keyboard_event_scan::@7 [ keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 keyboard_events_size#14 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 keyboard_events_size#14 ] { } ) always clobbers reg byte a
Statement [295] keyboard_event_scan::$15 = keyboard_event_scan::row_scan#0 ^ keyboard_scan_values[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#11 keyboard_event_scan::$15 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::$15 ] { } ) always clobbers reg byte a
Statement [296] keyboard_event_scan::$16 = keyboard_event_scan::$15 & keyboard_matrix_col_bitmask[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#11 keyboard_event_scan::$16 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::$16 ] { } ) always clobbers reg byte a
Statement [298] if(keyboard_events_size#11==8) goto keyboard_event_scan::@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#11 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 ] { } ) always clobbers reg byte a
Statement [299] keyboard_event_scan::event_type#0 = keyboard_event_scan::row_scan#0 & keyboard_matrix_col_bitmask[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#11 keyboard_event_scan::event_type#0 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::event_type#0 ] { } ) always clobbers reg byte a
Statement [301] keyboard_events[keyboard_events_size#11] = 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#11 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 ] { } ) always clobbers reg byte a reg byte y
Statement [307] keyboard_scan_values[keyboard_event_scan::row#2] = keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#31 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#31 ] { } ) always clobbers reg byte a reg byte y
Statement [308] keyboard_event_scan::$23 = keyboard_event_scan::keycode#10 | $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#11 keyboard_event_scan::$23 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 keyboard_event_scan::$23 ] { } ) always clobbers reg byte a
Statement [309] keyboard_events[keyboard_events_size#11] = keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#11 ] ( main:9::keyboard_event_scan:82 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#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#11 ] { } ) always clobbers reg byte y
Statement [311] if(keyboard_events_size#14==0) goto keyboard_event_get::@return [ keyboard_events_size#14 ] ( main:9::keyboard_event_get:84 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 ] { { keyboard_event_get::return#2 = keyboard_event_get::return#3 } } ) always clobbers reg byte a
Statement [313] keyboard_event_get::return#1 = keyboard_events[keyboard_events_size#3] [ keyboard_events_size#3 keyboard_event_get::return#1 ] ( main:9::keyboard_event_get:84 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#3 keyboard_event_get::return#1 ] { { keyboard_event_get::return#2 = keyboard_event_get::return#3 } } ) always clobbers reg byte y
Statement [320] if(game_over#16==0) goto play_movement::@1 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_orientation#21 current_piece_gfx#21 current_xpos#23 ] ( main:9::play_movement:90 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_orientation#21 current_piece_gfx#21 current_xpos#23 ] { { play_movement::key_event#0 = main::key_event#0 } { play_movement::return#2 = play_movement::return#3 } } ) always clobbers reg byte a
Statement [327] play_movement::render#2 = play_movement::render#1 + play_movement::$3 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_movement::render#2 ] ( main:9::play_movement:90 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_movement::render#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [332] play_movement::return#0 = play_movement::render#2 + play_movement::$4 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::return#0 current_orientation#26 current_piece_gfx#22 current_xpos#27 ] ( main:9::play_movement:90 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_ypos#20 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::return#0 current_orientation#26 current_piece_gfx#22 current_xpos#27 ] { { play_movement::key_event#0 = main::key_event#0 } { play_movement::return#2 = play_movement::return#3 } } ) always clobbers reg byte a
Statement [333] if(render_screen_render#19==0) goto render_score::@1 [ render_screen_render#19 lines_bcd#16 level_bcd#18 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 ] { } ) always clobbers reg byte a
Statement [336] render_bcd::screen#0 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#0 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [339] render_bcd::screen#1 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#1 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#1 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [342] render_bcd::screen#2 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#2 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen#2 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [346] render_bcd::screen#3 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [349] render_bcd::screen#4 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } ) always clobbers reg byte a
Statement [351] render_bcd::screen#5 = render_score::screen#3 [ render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::screen#5 ] ( main:9::render_score:106 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::screen#5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [355] render_screen_render#12 = render_screen_render#19 ^ $20 [ render_screen_show#17 render_screen_render#12 ] ( main:9::render_screen_swap:108 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_show#17 render_screen_render#12 ] { } ) always clobbers reg byte a
Statement [356] render_screen_show#14 = render_screen_show#17 ^ $20 [ render_screen_show#14 render_screen_render#12 ] ( main:9::render_screen_swap:108 [ score_bcd current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 render_screen_show#14 render_screen_render#12 ] { } ) always clobbers reg byte a
Statement [361] *render_screen_original::screen#5 = render_screen_original::SPACE [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [363] *render_screen_original::cols#4 = BLACK [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [368] *render_screen_original::screen#6 = *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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [371] *render_screen_original::cols#5 = *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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [377] *render_screen_original::screen#7 = render_screen_original::SPACE [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [379] *render_screen_original::cols#6 = BLACK [ 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:9::render_init:55::render_screen_original:119 [ score_bcd 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:9::render_init:55::render_screen_original:121 [ score_bcd 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 [387] play_collision::piece_gfx#0 = current_piece#18 + play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [389] play_collision::$14 = play_collision::yp#2 << 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [390] play_collision::playfield_line#0 = playfield_lines[play_collision::$14] [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [394] if(play_collision::piece_gfx#0[play_collision::i#2]==0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [396] play_collision::$5 = play_collision::xp#2 & $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [399] if(play_collision::playfield_line#0[play_collision::xp#2]==0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:9::play_spawn_current:63::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_spawn_current:65::play_collision:181 [ score_bcd current_movedown_slow#0 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#18 = play_spawn_current::piece_idx#2 } { game_over#53 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_spawn_current:451::play_collision:181 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 game_over#66 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#18 = next_piece_idx#23 } { game_over#22 = game_over#66 } { current_piece#102 = current_piece#18 } { current_ypos#5 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:9::play_movement:90::play_move_down:317::play_collision:438 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:464 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:9::play_movement:90::play_move_leftright:324::play_collision:475 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:9::play_movement:90::play_move_rotate:329::play_collision:491 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [410] *((byte*)CIA1) = keyboard_matrix_row_bitmask[keyboard_matrix_read::rowid#0] [ ] ( main:9::keyboard_event_scan:82::keyboard_matrix_read:261 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a
Statement [411] keyboard_matrix_read::return#0 = ~ *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:9::keyboard_event_scan:82::keyboard_matrix_read:261 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#32 keyboard_matrix_read::return#0 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a
Statement [414] keyboard_event_pressed::$0 = keyboard_event_pressed::keycode#5 >> 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:9::keyboard_event_scan:82::keyboard_event_pressed:270 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:276 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:282 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:288 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } main:9::play_movement:90::play_move_down:317::keyboard_event_pressed:423 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } ) always clobbers reg byte a
Statement [416] keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#5 & 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:9::keyboard_event_scan:82::keyboard_event_pressed:270 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:276 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:282 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:288 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } main:9::play_movement:90::play_move_down:317::keyboard_event_pressed:423 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } ) always clobbers reg byte a
Statement [417] keyboard_event_pressed::return#11 = keyboard_event_pressed::row_bits#0 & keyboard_matrix_col_bitmask[keyboard_event_pressed::$1] [ keyboard_event_pressed::return#11 ] ( main:9::keyboard_event_scan:82::keyboard_event_pressed:270 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:276 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:282 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:9::keyboard_event_scan:82::keyboard_event_pressed:288 [ score_bcd render_screen_show#17 render_screen_render#19 current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 current_movedown_counter#17 lines_bcd#20 level#25 level_bcd#10 keyboard_events_size#14 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } main:9::play_movement:90::play_move_down:317::keyboard_event_pressed:423 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } ) always clobbers reg byte a
Statement [427] if(current_movedown_counter#13<current_movedown_fast) goto play_move_down::@2 [ score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#10 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [430] if(current_movedown_counter#13<current_movedown_slow#13) goto play_move_down::@3 [ score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#7 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_movedown_counter#13 play_move_down::movedown#7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [437] current_piece#98 = current_piece#23 [ score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece#98 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 current_piece#23 current_piece_char#23 current_orientation#12 current_piece_gfx#12 current_xpos#13 current_ypos#10 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece#98 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#18 = current_piece#98 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#12 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#13 } { play_collision::return#0 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [452] current_piece#95 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_ypos#5 current_xpos#100 play_spawn_current::$7 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [453] current_piece_gfx#116 = (byte*)PIECES[play_spawn_current::$7] [ score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 current_piece_gfx#116 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] ( main:9::play_movement:90::play_move_down:317 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_ypos#5 current_xpos#100 current_piece_char#4 play_spawn_current::piece_idx#2 game_over#53 current_piece#95 current_piece_gfx#116 lines_bcd#18 level#20 current_movedown_slow#24 level_bcd#20 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [463] current_piece#100 = current_piece#16 [ current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#100 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:9::play_movement:90::play_move_leftright:324 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#100 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#100 = current_piece#18 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [474] current_piece#99 = current_piece#16 [ current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#99 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:9::play_movement:90::play_move_leftright:324 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#21 current_piece#16 current_ypos#20 current_orientation#21 current_xpos#23 current_piece#99 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#18 = current_piece#99 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#21 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [484] play_move_rotate::$5 = current_orientation#21 + $10 [ current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$5 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [490] current_piece#101 = current_piece#16 [ current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 current_piece#101 play_collision::orientation#3 play_collision::ypos#3 play_collision::xpos#3 play_move_rotate::orientation#3 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 current_piece#101 play_collision::orientation#3 play_collision::ypos#3 play_collision::xpos#3 play_move_rotate::orientation#3 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#101 = current_piece#18 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#20 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#27 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a
Statement [496] current_piece_gfx#6 = current_piece#16 + current_orientation#6 [ current_piece#16 current_ypos#20 current_xpos#27 current_orientation#6 current_piece_gfx#6 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_xpos#27 current_orientation#6 current_piece_gfx#6 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [497] play_move_rotate::$7 = current_orientation#21 - $10 [ current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$7 ] ( main:9::play_movement:90::play_move_rotate:329 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 score_bcd current_movedown_slow#22 current_piece_char#17 game_over#16 next_piece_idx#17 current_movedown_counter#15 lines_bcd#16 level#18 level_bcd#18 play_movement::render#2 current_piece#16 current_ypos#20 current_orientation#21 current_piece_gfx#21 current_xpos#27 play_move_rotate::$7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a
Statement [500] render_bcd::screen_pos#0 = render_bcd::screen#6 + render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [502] render_bcd::$5 = render_bcd::bcd#6 >> 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [504] *render_bcd::screen_pos#0 = render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte y
Statement [507] render_bcd::$3 = render_bcd::bcd#6 & $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte a
Statement [509] *render_bcd::screen_pos#3 = render_bcd::$4 [ ] ( main:9::render_score:106::render_bcd:338 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:341 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:344 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:347 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:350 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 render_score::screen#3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:9::render_score:106::render_bcd:353 [ score_bcd render_screen_show#17 current_movedown_slow#22 current_piece#16 current_piece_char#17 current_orientation#18 current_piece_gfx#19 current_xpos#2 current_ypos#20 game_over#16 next_piece_idx#17 keyboard_events_size#17 current_movedown_counter#15 level#18 render_screen_render#19 lines_bcd#16 level_bcd#18 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#18 } } ) always clobbers reg byte y
Statement [513] play_lock_current::$4 = play_lock_current::yp#2 << 1 [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [514] play_lock_current::playfield_line#0 = playfield_lines[play_lock_current::$4] [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [518] if(current_piece_gfx#12[play_lock_current::i#2]==0) goto play_lock_current::@3 [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [519] play_lock_current::playfield_line#0[play_lock_current::xp#2] = current_piece_char#23 [ current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:9::play_movement:90::play_move_down:317::play_lock_current:443 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 current_piece_char#23 current_piece_gfx#12 current_xpos#13 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a
Statement [542] play_remove_lines::w#2 = play_remove_lines::w#1 + PLAYFIELD_COLS [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:9::play_movement:90::play_move_down:317::play_remove_lines:445 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#7 } } ) always clobbers reg byte a
Statement [550] playfield[play_remove_lines::w#6] = 0 [ play_remove_lines::removed#7 play_remove_lines::w#6 ] ( main:9::play_movement:90::play_move_down:317::play_remove_lines:445 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 score_bcd current_movedown_slow#13 game_over#22 next_piece_idx#23 lines_bcd#20 level#25 level_bcd#10 play_remove_lines::removed#7 play_remove_lines::w#6 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#7 } } ) always clobbers reg byte a
Statement [555] play_update_score::$9 = play_update_score::removed#0 << 2 [ score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [556] play_update_score::add_bcd#0 = score_add_bcd[play_update_score::$9] [ score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 lines_bcd#20 level#25 level_bcd#10 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [558] lines_bcd#31 = lines_bcd#20 + play_update_score::removed#0 [ score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#31 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#31 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [559] score_bcd = score_bcd + play_update_score::add_bcd#0 [ score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 lines_bcd#31 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd current_movedown_slow#13 level#25 level_bcd#10 play_update_score::lines_before#0 lines_bcd#31 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [569] if(level#22>=$1d+1) goto play_increase_level::@1 [ level_bcd#10 level#22 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level_bcd#10 level#22 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [570] current_movedown_slow#9 = MOVEDOWN_SLOW_SPEEDS[level#22] [ level_bcd#10 level#22 current_movedown_slow#9 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level_bcd#10 level#22 current_movedown_slow#9 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a reg byte y
Statement [573] play_increase_level::$1 = level_bcd#22 & $f [ level#22 current_movedown_slow#67 level_bcd#22 play_increase_level::$1 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#22 play_increase_level::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [575] level_bcd#7 = level_bcd#22 + 6 [ level#22 current_movedown_slow#67 level_bcd#7 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a reg byte x
Statement [579] play_increase_level::$5 = play_increase_level::b#2 << 2 [ level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 play_increase_level::$5 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 play_increase_level::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Statement [580] score_add_bcd[play_increase_level::$5] = score_add_bcd[play_increase_level::$5] + SCORE_BASE_BCD[play_increase_level::$5] [ level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 ] ( main:9::play_movement:90::play_move_down:317::play_update_score:449::play_increase_level:565 [ render_screen_show#17 render_screen_render#19 keyboard_events_size#17 play_movement::key_event#0 game_over#22 next_piece_idx#23 score_bcd lines_bcd#31 level#22 current_movedown_slow#67 level_bcd#63 play_increase_level::b#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a
Potential registers zp[1]:2 [ render_screen_show#17 render_screen_show#14 ] : zp[1]:2 ,
Potential registers zp[1]:3 [ render_screen_render#19 render_screen_render#12 ] : zp[1]:3 ,
Potential registers zp[1]:4 [ current_movedown_counter#17 current_movedown_counter#15 current_movedown_counter#13 ] : zp[1]:4 ,
Potential registers zp[1]:5 [ render_init::i#2 render_init::i#1 ] : zp[1]:5 , reg byte x , reg byte y ,
Potential registers zp[2]:6 [ render_init::li_1#2 render_init::li_1#1 ] : zp[2]:6 ,
Potential registers zp[2]:8 [ render_init::li_2#2 render_init::li_2#1 ] : zp[2]:8 ,
Potential registers zp[1]:10 [ sprites_init::s#2 sprites_init::s#1 ] : zp[1]:10 , reg byte x , reg byte y ,
Potential registers zp[1]:11 [ sprites_init::xpos#2 sprites_init::xpos#1 ] : zp[1]:11 , reg byte x , reg byte y ,
Potential registers zp[1]:12 [ play_init::j#2 play_init::j#1 ] : zp[1]:12 , reg byte x , reg byte y ,
Potential registers zp[2]:13 [ play_init::pli#2 play_init::pli#1 ] : zp[2]:13 ,
Potential registers zp[1]:15 [ play_init::idx#2 play_init::idx#1 ] : zp[1]:15 , reg byte x , reg byte y ,
Potential registers zp[1]:16 [ play_init::b#2 play_init::b#1 ] : zp[1]:16 , reg byte x , reg byte y ,
Potential registers zp[1]:17 [ render_screen_render#24 render_screen_render#63 ] : zp[1]:17 , reg byte x ,
Potential registers zp[1]:18 [ render_playfield::l#2 render_playfield::l#1 ] : zp[1]:18 , reg byte x ,
Potential registers zp[1]:19 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] : zp[1]:19 , reg byte x ,
Potential registers zp[2]:20 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] : zp[2]:20 ,
Potential registers zp[1]:22 [ render_playfield::c#2 render_playfield::c#1 ] : zp[1]:22 , reg byte x ,
Potential registers zp[1]:23 [ current_ypos#14 current_ypos#97 current_ypos#98 ] : zp[1]:23 , reg byte x , reg byte y ,
Potential registers zp[1]:24 [ render_screen_render#35 render_screen_render#64 ] : zp[1]:24 , reg byte x , reg byte y ,
Potential registers zp[1]:25 [ current_xpos#61 current_xpos#118 current_xpos#119 ] : zp[1]:25 , reg byte x , reg byte y ,
Potential registers zp[2]:26 [ current_piece_gfx#66 current_piece_gfx#111 current_piece_gfx#112 ] : zp[2]:26 ,
Potential registers zp[1]:28 [ current_piece_char#70 current_piece_char#99 current_piece_char#100 ] : zp[1]:28 , reg byte x , reg byte y ,
Potential registers zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] : zp[1]:29 , reg byte x , reg byte y ,
Potential registers zp[1]:30 [ render_moving::l#4 render_moving::l#1 ] : zp[1]:30 , reg byte x , reg byte y ,
Potential registers zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] : zp[1]:31 , reg byte x , reg byte y ,
Potential registers zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] : zp[1]:32 , reg byte x , reg byte y ,
Potential registers zp[1]:33 [ render_moving::c#2 render_moving::c#1 ] : zp[1]:33 , reg byte x , reg byte y ,
Potential registers zp[1]:34 [ render_screen_render#16 render_screen_render#65 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:35 [ next_piece_idx#13 next_piece_idx#79 next_piece_idx#80 ] : zp[1]:35 , reg byte x , reg byte y ,
Potential registers zp[1]:36 [ render_next::l#7 render_next::l#1 ] : zp[1]:36 , reg byte x ,
Potential registers zp[2]:37 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#8 render_next::next_piece_gfx#1 ] : zp[2]:37 ,
Potential registers zp[2]:39 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#11 render_next::screen_next_area#4 render_next::screen_next_area#3 ] : zp[2]:39 ,
Potential registers zp[1]:41 [ render_next::c#2 render_next::c#1 ] : zp[1]:41 , reg byte x ,
Potential registers zp[1]:42 [ render_show::d018val#3 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:43 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp[1]:43 ,
Potential registers zp[1]:44 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp[1]:44 , reg byte x ,
Potential registers zp[1]:45 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] : zp[1]:45 , reg byte x ,
Potential registers zp[1]:46 [ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ] : zp[1]:46 ,
Potential registers zp[1]:47 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:48 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] : zp[1]:48 , reg byte x , reg byte y ,
Potential registers zp[2]:49 [ render_score::screen#3 ] : zp[2]:49 ,
Potential registers zp[1]:51 [ render_screen_original::y#6 render_screen_original::y#1 ] : zp[1]:51 , reg byte x ,
Potential registers zp[2]:52 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] : zp[2]:52 ,
Potential registers zp[2]:54 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] : zp[2]:54 ,
Potential registers zp[2]:56 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] : zp[2]:56 ,
Potential registers zp[2]:58 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] : zp[2]:58 ,
Potential registers zp[1]:60 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] : zp[1]:60 , reg byte x ,
Potential registers zp[2]:61 [ current_piece#18 current_piece#98 current_piece#99 current_piece#100 current_piece#101 current_piece#102 ] : zp[2]:61 ,
Potential registers zp[1]:63 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] : zp[1]:63 , reg byte x , reg byte y ,
Potential registers zp[1]:64 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] : zp[1]:64 , reg byte x , reg byte y ,
Potential registers zp[1]:65 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] : zp[1]:65 , reg byte x , reg byte y ,
Potential registers zp[1]:66 [ play_collision::l#6 play_collision::l#1 ] : zp[1]:66 , reg byte x , reg byte y ,
Potential registers zp[1]:67 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] : zp[1]:67 , reg byte x , reg byte y ,
Potential registers zp[1]:68 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] : zp[1]:68 , reg byte x , reg byte y ,
Potential registers zp[1]:69 [ play_collision::c#2 play_collision::c#1 ] : zp[1]:69 , reg byte x , reg byte y ,
Potential registers zp[1]:70 [ play_collision::return#15 ] : zp[1]:70 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:71 [ keyboard_event_pressed::keycode#5 ] : zp[1]:71 , reg byte x , reg byte y ,
Potential registers zp[1]:72 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] : zp[1]:72 , reg byte x , reg byte y ,
Potential registers zp[1]:73 [ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ] : zp[1]:73 ,
Potential registers zp[2]:74 [ lines_bcd#28 lines_bcd#20 lines_bcd#16 lines_bcd#18 lines_bcd#31 ] : zp[2]:74 ,
Potential registers zp[1]:76 [ level#35 level#25 level#18 level#20 level#22 ] : zp[1]:76 ,
Potential registers zp[1]:77 [ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ] : zp[1]:77 ,
Potential registers zp[1]:78 [ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ] : zp[1]:78 ,
Potential registers zp[2]:79 [ current_piece#30 current_piece#23 current_piece#103 current_piece#16 current_piece#95 ] : zp[2]:79 ,
Potential registers zp[1]:81 [ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ] : zp[1]:81 ,
Potential registers zp[1]:82 [ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ] : zp[1]:82 ,
Potential registers zp[2]:83 [ current_piece_gfx#37 current_piece_gfx#12 current_piece_gfx#122 current_piece_gfx#19 current_piece_gfx#21 current_piece_gfx#22 current_piece_gfx#116 current_piece_gfx#6 ] : zp[2]:83 ,
Potential registers zp[1]:85 [ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ] : zp[1]:85 ,
Potential registers zp[1]:86 [ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ] : zp[1]:86 ,
Potential registers zp[1]:87 [ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ] : zp[1]:87 ,
Potential registers zp[1]:88 [ play_move_down::return#3 ] : zp[1]:88 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:89 [ play_move_leftright::return#2 ] : zp[1]:89 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:90 [ play_move_rotate::return#2 ] : zp[1]:90 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:91 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] : zp[1]:91 , reg byte x , reg byte y ,
Potential registers zp[2]:92 [ 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 ] : zp[2]:92 ,
Potential registers zp[2]:94 [ render_bcd::offset#6 ] : zp[2]:94 ,
Potential registers zp[1]:96 [ render_bcd::only_low#6 ] : zp[1]:96 , reg byte x , reg byte y ,
Potential registers zp[1]:97 [ 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[1]:97 , reg byte x ,
Potential registers zp[2]:98 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] : zp[2]:98 ,
Potential registers zp[1]:100 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] : zp[1]:100 , reg byte x , reg byte y ,
Potential registers zp[1]:101 [ play_lock_current::l#6 play_lock_current::l#1 ] : zp[1]:101 , reg byte x , reg byte y ,
Potential registers zp[1]:102 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] : zp[1]:102 , reg byte x , reg byte y ,
Potential registers zp[1]:103 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] : zp[1]:103 , reg byte x , reg byte y ,
Potential registers zp[1]:104 [ play_lock_current::c#2 play_lock_current::c#1 ] : zp[1]:104 , reg byte x , reg byte y ,
Potential registers zp[1]:105 [ play_remove_lines::y#8 play_remove_lines::y#1 ] : zp[1]:105 , reg byte x , reg byte y ,
Potential registers zp[1]:106 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] : zp[1]:106 , reg byte x , reg byte y ,
Potential registers zp[1]:107 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] : zp[1]:107 , reg byte x , reg byte y ,
Potential registers zp[1]:108 [ play_remove_lines::x#2 play_remove_lines::x#1 ] : zp[1]:108 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:109 [ play_remove_lines::full#4 play_remove_lines::full#2 ] : zp[1]:109 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:110 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] : zp[1]:110 , reg byte x , reg byte y ,
Potential registers zp[1]:111 [ play_increase_level::b#2 play_increase_level::b#1 ] : zp[1]:111 , reg byte x , reg byte y ,
Potential registers zp[1]:112 [ render_screen_showing ] : zp[1]:112 ,
Potential registers zp[4]:113 [ score_bcd ] : zp[4]:113 ,
Potential registers zp[1]:117 [ irq_raster_next ] : zp[1]:117 ,
Potential registers zp[1]:118 [ irq_sprite_ypos ] : zp[1]:118 ,
Potential registers zp[1]:119 [ irq_sprite_ptr ] : zp[1]:119 ,
Potential registers zp[1]:120 [ irq_cnt ] : zp[1]:120 ,
Potential registers zp[1]:121 [ sprites_irq::ypos#0 ] : zp[1]:121 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:122 [ sprites_irq::$0 ] : zp[1]:122 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:123 [ sprites_irq::raster_sprite_gfx_modify ] : zp[1]:123 ,
Potential registers zp[1]:124 [ sprites_irq::ptr#0 ] : zp[1]:124 , reg byte x , reg byte y ,
Potential registers zp[1]:125 [ sprites_irq::ptr#3 ] : zp[1]:125 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:126 [ sprites_irq::ptr#4 ] : zp[1]:126 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:127 [ sprites_irq::ptr#1 ] : zp[1]:127 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:128 [ sprites_irq::ptr#2 ] : zp[1]:128 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:129 [ keyboard_event_get::return#3 ] : zp[1]:129 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:130 [ main::key_event#0 ] : zp[1]:130 , reg byte x , reg byte y ,
Potential registers zp[1]:131 [ play_movement::key_event#0 ] : zp[1]:131 ,
Potential registers zp[1]:132 [ play_movement::return#3 ] : zp[1]:132 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:133 [ main::render#1 ] : zp[1]:133 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:134 [ render_init::$5 ] : zp[1]:134 , reg byte x , reg byte y ,
Potential registers zp[1]:135 [ sprites_init::s2#0 ] : zp[1]:135 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:136 [ play_init::$2 ] : zp[1]:136 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:137 [ play_init::$3 ] : zp[1]:137 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:138 [ play_spawn_current::current_piece_idx#0 ] : zp[1]:138 , reg byte x , reg byte y ,
Potential registers zp[1]:139 [ play_spawn_current::$7 ] : zp[1]:139 , reg byte x ,
Potential registers zp[1]:140 [ play_collision::return#10 ] : zp[1]:140 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:141 [ play_spawn_current::$1 ] : zp[1]:141 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:142 [ play_spawn_current::sid_rnd1_return#0 ] : zp[1]:142 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:143 [ render_playfield::$0 ] : zp[1]:143 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:144 [ render_playfield::$3 ] : zp[1]:144 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:145 [ render_moving::$1 ] : zp[1]:145 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:146 [ render_moving::$6 ] : zp[1]:146 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:147 [ render_moving::screen_line#0 ] : zp[2]:147 ,
Potential registers zp[1]:149 [ render_moving::current_cell#0 ] : zp[1]:149 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:150 [ render_next::$6 ] : zp[1]:150 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:151 [ render_next::next_piece_char#0 ] : zp[1]:151 , reg byte x ,
Potential registers zp[1]:152 [ render_next::cell#0 ] : zp[1]:152 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:153 [ keyboard_matrix_read::rowid#0 ] : zp[1]:153 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:154 [ keyboard_matrix_read::return#2 ] : zp[1]:154 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:155 [ keyboard_event_scan::row_scan#0 ] : zp[1]:155 , reg byte x ,
Potential registers zp[1]:156 [ keyboard_event_pressed::return#0 ] : zp[1]:156 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:157 [ keyboard_event_scan::$0 ] : zp[1]:157 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:158 [ keyboard_event_pressed::return#1 ] : zp[1]:158 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:159 [ keyboard_event_scan::$3 ] : zp[1]:159 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:160 [ keyboard_event_pressed::return#2 ] : zp[1]:160 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:161 [ keyboard_event_scan::$6 ] : zp[1]:161 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:162 [ keyboard_event_pressed::return#10 ] : zp[1]:162 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:163 [ keyboard_event_scan::$9 ] : zp[1]:163 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:164 [ keyboard_event_scan::$15 ] : zp[1]:164 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:165 [ keyboard_event_scan::$16 ] : zp[1]:165 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:166 [ keyboard_event_scan::event_type#0 ] : zp[1]:166 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:167 [ keyboard_event_scan::$23 ] : zp[1]:167 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:168 [ play_move_down::key_event#0 ] : zp[1]:168 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:169 [ play_move_down::return#0 ] : zp[1]:169 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:170 [ play_move_leftright::key_event#0 ] : zp[1]:170 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:171 [ play_move_leftright::return#0 ] : zp[1]:171 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:172 [ play_movement::$3 ] : zp[1]:172 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:173 [ play_movement::render#2 ] : zp[1]:173 , reg byte x , reg byte y ,
Potential registers zp[1]:174 [ play_move_rotate::key_event#0 ] : zp[1]:174 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:175 [ play_move_rotate::return#0 ] : zp[1]:175 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:176 [ play_movement::$4 ] : zp[1]:176 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:177 [ play_collision::piece_gfx#0 ] : zp[2]:177 ,
Potential registers zp[1]:179 [ play_collision::$14 ] : zp[1]:179 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:180 [ play_collision::playfield_line#0 ] : zp[2]:180 ,
Potential registers zp[1]:182 [ play_collision::i#1 ] : zp[1]:182 , reg byte x , reg byte y ,
Potential registers zp[1]:183 [ play_collision::$5 ] : zp[1]:183 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:184 [ keyboard_matrix_read::return#0 ] : zp[1]:184 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:185 [ keyboard_event_pressed::$0 ] : zp[1]:185 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:186 [ keyboard_event_pressed::row_bits#0 ] : zp[1]:186 , reg byte x , reg byte y ,
Potential registers zp[1]:187 [ keyboard_event_pressed::$1 ] : zp[1]:187 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:188 [ keyboard_event_pressed::return#11 ] : zp[1]:188 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:189 [ keyboard_event_pressed::return#12 ] : zp[1]:189 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:190 [ play_move_down::$2 ] : zp[1]:190 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:191 [ play_collision::return#0 ] : zp[1]:191 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:192 [ play_move_down::$12 ] : zp[1]:192 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:193 [ play_remove_lines::return#0 ] : zp[1]:193 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:194 [ play_move_down::removed#0 ] : zp[1]:194 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:195 [ play_update_score::removed#0 ] : zp[1]:195 , reg byte x , reg byte y ,
Potential registers zp[1]:196 [ play_collision::return#13 ] : zp[1]:196 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:197 [ play_move_leftright::$4 ] : zp[1]:197 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:198 [ play_collision::return#1 ] : zp[1]:198 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:199 [ play_move_leftright::$8 ] : zp[1]:199 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:200 [ play_move_rotate::$5 ] : zp[1]:200 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:201 [ play_collision::return#14 ] : zp[1]:201 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:202 [ play_move_rotate::$2 ] : zp[1]:202 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:203 [ play_move_rotate::$7 ] : zp[1]:203 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:204 [ render_bcd::$5 ] : zp[1]:204 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:205 [ render_bcd::$6 ] : zp[1]:205 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:206 [ render_bcd::$3 ] : zp[1]:206 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:207 [ render_bcd::$4 ] : zp[1]:207 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:208 [ play_lock_current::$4 ] : zp[1]:208 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:209 [ play_lock_current::playfield_line#0 ] : zp[2]:209 ,
Potential registers zp[1]:211 [ play_lock_current::i#1 ] : zp[1]:211 , reg byte x , reg byte y ,
Potential registers zp[1]:212 [ play_remove_lines::c#0 ] : zp[1]:212 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:213 [ play_update_score::$2 ] : zp[1]:213 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:214 [ play_update_score::lines_before#0 ] : zp[1]:214 , reg byte x , reg byte y ,
Potential registers zp[1]:215 [ play_update_score::$9 ] : zp[1]:215 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[4]:216 [ play_update_score::add_bcd#0 ] : zp[4]:216 ,
Potential registers zp[1]:220 [ play_update_score::$4 ] : zp[1]:220 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:221 [ play_update_score::lines_after#0 ] : zp[1]:221 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:222 [ play_increase_level::$1 ] : zp[1]:222 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:223 [ play_increase_level::$5 ] : zp[1]:223 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [play_collision] 380,000,000,006.5: zp[1]:67 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] 200,000,000,002: zp[1]:183 [ play_collision::$5 ] 133,750,000,003.25: zp[1]:68 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] 122,222,222,223.44: zp[1]:69 [ play_collision::c#2 play_collision::c#1 ] 20,000,000,002: zp[1]:179 [ play_collision::$14 ] 16,153,846,154.08: zp[1]:182 [ play_collision::i#1 ] 13,132,575,007.31: zp[1]:65 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] 11,176,470,589.35: zp[1]:66 [ play_collision::l#6 play_collision::l#1 ] 7,857,142,857.29: zp[2]:180 [ play_collision::playfield_line#0 ] 4,762,380,952.48: zp[2]:177 [ play_collision::piece_gfx#0 ] 455,492,427.35: zp[1]:64 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] 10,800,009: zp[1]:63 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 2,000,002: zp[1]:140 [ play_collision::return#10 ] 200,002: zp[1]:191 [ play_collision::return#0 ] 200,002: zp[1]:196 [ play_collision::return#13 ] 200,002: zp[1]:198 [ play_collision::return#1 ] 200,002: zp[1]:201 [ play_collision::return#14 ] 200,000.71: zp[1]:70 [ play_collision::return#15 ]
Uplift Scope [play_lock_current] 38,000,000,006.5: zp[1]:102 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] 14,750,000,003.5: zp[1]:103 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] 14,000,000,001.4: zp[1]:104 [ play_lock_current::c#2 play_lock_current::c#1 ] 2,333,333,333.67: zp[1]:211 [ play_lock_current::i#1 ] 2,000,000,002: zp[1]:208 [ play_lock_current::$4 ] 1,153,846,155: zp[1]:101 [ play_lock_current::l#6 play_lock_current::l#1 ] 1,100,000,000.2: zp[2]:209 [ play_lock_current::playfield_line#0 ] 752,083,336.17: zp[1]:100 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
Uplift Scope [play_remove_lines] 19,000,000,004.21: zp[1]:107 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 17,928,571,438.14: zp[1]:110 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] 17,500,000,001.75: zp[1]:108 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 8,200,000,001: zp[1]:109 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 6,000,000,000.6: zp[1]:212 [ play_remove_lines::c#0 ] 2,564,113,677.89: zp[1]:106 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] 1,633,333,334.97: zp[1]:105 [ play_remove_lines::y#8 play_remove_lines::y#1 ] 200,002: zp[1]:193 [ play_remove_lines::return#0 ]
Uplift Scope [play_increase_level] 40,000,000,004: zp[1]:223 [ play_increase_level::$5 ] 25,000,000,002.5: zp[1]:111 [ play_increase_level::b#2 play_increase_level::b#1 ] 20,000,002: zp[1]:222 [ play_increase_level::$1 ]
Uplift Scope [] 2,101,417,003.77: zp[1]:87 [ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ] 588,273,523.09: zp[1]:46 [ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ] 182,589,729.94: zp[2]:83 [ current_piece_gfx#37 current_piece_gfx#12 current_piece_gfx#122 current_piece_gfx#19 current_piece_gfx#21 current_piece_gfx#22 current_piece_gfx#116 current_piece_gfx#6 ] 182,161,655.2: zp[1]:81 [ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ] 36,379,641.34: zp[1]:78 [ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ] 21,522,727.69: zp[1]:77 [ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ] 19,012,786.51: zp[1]:85 [ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ] 14,200,016: zp[2]:61 [ current_piece#18 current_piece#98 current_piece#99 current_piece#100 current_piece#101 current_piece#102 ] 2,655,686.72: zp[1]:76 [ level#35 level#25 level#18 level#20 level#22 ] 1,310,325.83: zp[2]:74 [ lines_bcd#28 lines_bcd#20 lines_bcd#16 lines_bcd#18 lines_bcd#31 ] 611,596.9: zp[1]:73 [ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ] 438,675.79: zp[1]:86 [ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ] 427,344.55: zp[1]:82 [ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ] 415,859.78: zp[2]:79 [ current_piece#30 current_piece#23 current_piece#103 current_piece#16 current_piece#95 ] 47,848.43: zp[1]:28 [ current_piece_char#70 current_piece_char#99 current_piece_char#100 ] 47,736.43: zp[2]:26 [ current_piece_gfx#66 current_piece_gfx#111 current_piece_gfx#112 ] 37,176.6: zp[1]:4 [ current_movedown_counter#17 current_movedown_counter#15 current_movedown_counter#13 ] 14,705.91: zp[4]:113 [ score_bcd ] 7,902.15: zp[1]:17 [ render_screen_render#24 render_screen_render#63 ] 4,841.95: zp[1]:25 [ current_xpos#61 current_xpos#118 current_xpos#119 ] 4,817.26: zp[1]:24 [ render_screen_render#35 render_screen_render#64 ] 1,203: zp[1]:34 [ render_screen_render#16 render_screen_render#65 ] 1,158.9: zp[1]:23 [ current_ypos#14 current_ypos#97 current_ypos#98 ] 1,000.5: zp[1]:112 [ render_screen_showing ] 944.98: zp[1]:2 [ render_screen_show#17 render_screen_show#14 ] 646.8: zp[1]:35 [ next_piece_idx#13 next_piece_idx#79 next_piece_idx#80 ] 360.27: zp[1]:3 [ render_screen_render#19 render_screen_render#12 ] 0.48: zp[1]:118 [ irq_sprite_ypos ] 0.48: zp[1]:120 [ irq_cnt ] 0.45: zp[1]:119 [ irq_sprite_ptr ] 0.44: zp[1]:117 [ irq_raster_next ]
Uplift Scope [play_spawn_current] 2,000,000,002: zp[1]:142 [ play_spawn_current::sid_rnd1_return#0 ] 2,000,002: zp[1]:141 [ play_spawn_current::$1 ] 1,250,001.25: zp[1]:138 [ play_spawn_current::current_piece_idx#0 ] 32,258.1: zp[1]:139 [ play_spawn_current::$7 ]
Uplift Scope [keyboard_event_scan] 200,000,002: zp[1]:164 [ keyboard_event_scan::$15 ] 200,000,002: zp[1]:165 [ keyboard_event_scan::$16 ] 200,000,002: zp[1]:166 [ keyboard_event_scan::event_type#0 ] 200,000,002: zp[1]:167 [ keyboard_event_scan::$23 ] 178,571,430.36: zp[1]:44 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 119,038,466.17: zp[1]:45 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] 21,000,001.74: zp[1]:43 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 12,777,778.06: zp[1]:155 [ keyboard_event_scan::row_scan#0 ] 20,002: zp[1]:157 [ keyboard_event_scan::$0 ] 20,002: zp[1]:159 [ keyboard_event_scan::$3 ] 20,002: zp[1]:161 [ keyboard_event_scan::$6 ] 20,002: zp[1]:163 [ keyboard_event_scan::$9 ]
Uplift Scope [keyboard_matrix_read] 110,000,002: zp[1]:153 [ keyboard_matrix_read::rowid#0 ] 36,666,667.33: zp[1]:184 [ keyboard_matrix_read::return#0 ] 20,000,002: zp[1]:154 [ keyboard_matrix_read::return#2 ]
Uplift Scope [play_update_score] 2,000,002: zp[1]:213 [ play_update_score::$2 ] 2,000,002: zp[1]:215 [ play_update_score::$9 ] 2,000,002: zp[1]:220 [ play_update_score::$4 ] 2,000,002: zp[1]:221 [ play_update_score::lines_after#0 ] 666,667.33: zp[4]:216 [ play_update_score::add_bcd#0 ] 442,857.71: zp[1]:195 [ play_update_score::removed#0 ] 222,222.44: zp[1]:214 [ play_update_score::lines_before#0 ]
Uplift Scope [render_moving] 2,600,005.75: zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] 1,833,335.17: zp[1]:33 [ render_moving::c#2 render_moving::c#1 ] 1,486,670.13: zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] 1,000,001: zp[1]:149 [ render_moving::current_cell#0 ] 200,002: zp[1]:145 [ render_moving::$1 ] 200,002: zp[1]:146 [ render_moving::$6 ] 161,766.32: zp[1]:30 [ render_moving::l#4 render_moving::l#1 ] 110,000.2: zp[2]:147 [ render_moving::screen_line#0 ] 93,732.15: zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
Uplift Scope [render_next] 1,963,007.3: zp[2]:37 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#8 render_next::next_piece_gfx#1 ] 1,785,716.07: zp[1]:41 [ render_next::c#2 render_next::c#1 ] 1,651,255.75: zp[2]:39 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#11 render_next::screen_next_area#4 render_next::screen_next_area#3 ] 1,000,001: zp[1]:152 [ render_next::cell#0 ] 168,183.5: zp[1]:36 [ render_next::l#7 render_next::l#1 ] 66,733.47: zp[1]:151 [ render_next::next_piece_char#0 ] 500.5: zp[1]:150 [ render_next::$6 ]
Uplift Scope [render_playfield] 2,250,004.5: zp[2]:20 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] 2,000,002: zp[1]:22 [ render_playfield::c#2 render_playfield::c#1 ] 1,503,335.77: zp[1]:19 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 200,002: zp[1]:143 [ render_playfield::$0 ] 200,002: zp[1]:144 [ render_playfield::$3 ] 180,001.8: zp[1]:18 [ render_playfield::l#2 render_playfield::l#1 ]
Uplift Scope [keyboard_event_pressed] 2,000,002: zp[1]:185 [ keyboard_event_pressed::$0 ] 2,000,002: zp[1]:187 [ keyboard_event_pressed::$1 ] 1,000,001: zp[1]:186 [ keyboard_event_pressed::row_bits#0 ] 666,667.33: zp[1]:71 [ keyboard_event_pressed::keycode#5 ] 200,002: zp[1]:189 [ keyboard_event_pressed::return#12 ] 162,858: zp[1]:188 [ keyboard_event_pressed::return#11 ] 20,002: zp[1]:156 [ keyboard_event_pressed::return#0 ] 20,002: zp[1]:158 [ keyboard_event_pressed::return#1 ] 20,002: zp[1]:160 [ keyboard_event_pressed::return#2 ] 20,002: zp[1]:162 [ keyboard_event_pressed::return#10 ]
Uplift Scope [render_screen_original] 709,868.6: zp[2]:56 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] 692,864.07: zp[1]:60 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] 494,507.15: zp[2]:58 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] 161,085.12: zp[2]:52 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] 97,917.83: zp[2]:54 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] 15,834.92: zp[1]:51 [ render_screen_original::y#6 render_screen_original::y#1 ]
Uplift Scope [play_move_down] 1,000,010: zp[1]:72 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] 200,002: zp[1]:190 [ play_move_down::$2 ] 200,002: zp[1]:192 [ play_move_down::$12 ] 200,002: zp[1]:194 [ play_move_down::removed#0 ] 55,001: zp[1]:168 [ play_move_down::key_event#0 ] 20,002: zp[1]:169 [ play_move_down::return#0 ] 3,333.67: zp[1]:88 [ play_move_down::return#3 ]
Uplift Scope [play_move_rotate] 444,448.89: zp[1]:91 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 200,002: zp[1]:200 [ play_move_rotate::$5 ] 200,002: zp[1]:202 [ play_move_rotate::$2 ] 200,002: zp[1]:203 [ play_move_rotate::$7 ] 105,001.5: zp[1]:174 [ play_move_rotate::key_event#0 ] 20,002: zp[1]:175 [ play_move_rotate::return#0 ] 3,333.67: zp[1]:90 [ play_move_rotate::return#2 ]
Uplift Scope [play_move_leftright] 200,002: zp[1]:197 [ play_move_leftright::$4 ] 200,002: zp[1]:199 [ play_move_leftright::$8 ] 105,001.5: zp[1]:170 [ play_move_leftright::key_event#0 ] 20,002: zp[1]:171 [ play_move_leftright::return#0 ] 3,333.67: zp[1]:89 [ play_move_leftright::return#2 ]
Uplift Scope [render_bcd] 38,003.8: zp[2]:98 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] 24,015: zp[2]:92 [ 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 ] 20,002: zp[1]:204 [ render_bcd::$5 ] 20,002: zp[1]:205 [ render_bcd::$6 ] 20,002: zp[1]:206 [ render_bcd::$3 ] 20,002: zp[1]:207 [ render_bcd::$4 ] 13,261: zp[1]:97 [ 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 ] 10,001: zp[2]:94 [ render_bcd::offset#6 ] 5,000.5: zp[1]:96 [ render_bcd::only_low#6 ]
Uplift Scope [play_movement] 32,003.5: zp[1]:48 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] 20,002: zp[1]:172 [ play_movement::$3 ] 20,002: zp[1]:176 [ play_movement::$4 ] 4,000.4: zp[1]:173 [ play_movement::render#2 ] 2,818.55: zp[1]:131 [ play_movement::key_event#0 ] 2,002: zp[1]:132 [ play_movement::return#3 ]
Uplift Scope [keyboard_event_get] 23,669.33: zp[1]:47 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] 2,002: zp[1]:129 [ keyboard_event_get::return#3 ]
Uplift Scope [play_init] 3,003: zp[1]:137 [ play_init::$3 ] 2,502.5: zp[1]:16 [ play_init::b#2 play_init::b#1 ] 2,168.83: zp[1]:12 [ play_init::j#2 play_init::j#1 ] 2,002: zp[1]:136 [ play_init::$2 ] 1,267.93: zp[1]:15 [ play_init::idx#2 play_init::idx#1 ] 1,251.25: zp[2]:13 [ play_init::pli#2 play_init::pli#1 ]
Uplift Scope [render_show] 10,001: zp[1]:42 [ render_show::d018val#3 ]
Uplift Scope [render_init] 2,002: zp[1]:5 [ render_init::i#2 render_init::i#1 ] 1,501.5: zp[1]:134 [ render_init::$5 ] 1,267.93: zp[2]:8 [ render_init::li_2#2 render_init::li_2#1 ] 1,251.25: zp[2]:6 [ render_init::li_1#2 render_init::li_1#1 ]
Uplift Scope [sprites_init] 2,302.3: zp[1]:10 [ sprites_init::s#2 sprites_init::s#1 ] 2,002: zp[1]:135 [ sprites_init::s2#0 ] 1,418.08: zp[1]:11 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplift Scope [main] 2,002: zp[1]:133 [ main::render#1 ] 1,001: zp[1]:130 [ main::key_event#0 ]
Uplift Scope [render_score] 375.38: zp[2]:49 [ render_score::screen#3 ]
Uplift Scope [sprites_irq] 6.5: zp[1]:123 [ sprites_irq::raster_sprite_gfx_modify ] 4: zp[1]:122 [ sprites_irq::$0 ] 4: zp[1]:126 [ sprites_irq::ptr#4 ] 4: zp[1]:128 [ sprites_irq::ptr#2 ] 2.67: zp[1]:125 [ sprites_irq::ptr#3 ] 2.67: zp[1]:127 [ sprites_irq::ptr#1 ] 2.5: zp[1]:121 [ sprites_irq::ypos#0 ] 2.5: zp[1]:124 [ sprites_irq::ptr#0 ]
Uplift Scope [MOS6526_CIA]
Uplift Scope [MOS6569_VICII]
Uplift Scope [MOS6581_SID]
Uplift Scope [render_screen_swap]
Uplift Scope [sprites_irq_init]
Uplift Scope [__start]
Uplifting [play_collision] best 4788740 combination zp[1]:67 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] reg byte a [ play_collision::$5 ] zp[1]:68 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp[1]:179 [ play_collision::$14 ] zp[1]:182 [ play_collision::i#1 ] zp[1]:65 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] zp[1]:66 [ play_collision::l#6 play_collision::l#1 ] zp[2]:180 [ play_collision::playfield_line#0 ] zp[2]:177 [ play_collision::piece_gfx#0 ] zp[1]:64 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] zp[1]:63 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp[1]:140 [ play_collision::return#10 ] zp[1]:191 [ play_collision::return#0 ] zp[1]:196 [ play_collision::return#13 ] zp[1]:198 [ play_collision::return#1 ] zp[1]:201 [ play_collision::return#14 ] zp[1]:70 [ play_collision::return#15 ]
Limited combination testing to 100 combinations of 429981696 possible.
Uplifting [play_lock_current] best 4694740 combination zp[1]:102 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp[1]:103 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp[1]:211 [ play_lock_current::i#1 ] reg byte a [ play_lock_current::$4 ] zp[1]:101 [ play_lock_current::l#6 play_lock_current::l#1 ] zp[2]:209 [ play_lock_current::playfield_line#0 ] zp[1]:100 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
Limited combination testing to 100 combinations of 2916 possible.
Uplifting [play_remove_lines] best 4555740 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] zp[1]:108 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp[1]:109 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp[1]:212 [ play_remove_lines::c#0 ] zp[1]:106 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] zp[1]:105 [ play_remove_lines::y#8 play_remove_lines::y#1 ] zp[1]:193 [ play_remove_lines::return#0 ]
Limited combination testing to 100 combinations of 20736 possible.
Uplifting [play_increase_level] best 4541734 combination reg byte a [ play_increase_level::$5 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte a [ play_increase_level::$1 ]
Uplifting [] best 4541601 combination zp[1]:87 [ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ] zp[1]:46 [ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ] zp[2]:83 [ current_piece_gfx#37 current_piece_gfx#12 current_piece_gfx#122 current_piece_gfx#19 current_piece_gfx#21 current_piece_gfx#22 current_piece_gfx#116 current_piece_gfx#6 ] zp[1]:81 [ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ] zp[1]:78 [ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ] zp[1]:77 [ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ] zp[1]:85 [ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ] zp[2]:61 [ current_piece#18 current_piece#98 current_piece#99 current_piece#100 current_piece#101 current_piece#102 ] zp[1]:76 [ level#35 level#25 level#18 level#20 level#22 ] zp[2]:74 [ lines_bcd#28 lines_bcd#20 lines_bcd#16 lines_bcd#18 lines_bcd#31 ] zp[1]:73 [ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ] zp[1]:86 [ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ] zp[1]:82 [ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ] zp[2]:79 [ current_piece#30 current_piece#23 current_piece#103 current_piece#16 current_piece#95 ] zp[1]:28 [ current_piece_char#70 current_piece_char#99 current_piece_char#100 ] zp[2]:26 [ current_piece_gfx#66 current_piece_gfx#111 current_piece_gfx#112 ] zp[1]:4 [ current_movedown_counter#17 current_movedown_counter#15 current_movedown_counter#13 ] zp[4]:113 [ score_bcd ] reg byte x [ render_screen_render#24 render_screen_render#63 ] zp[1]:25 [ current_xpos#61 current_xpos#118 current_xpos#119 ] zp[1]:24 [ render_screen_render#35 render_screen_render#64 ] zp[1]:34 [ render_screen_render#16 render_screen_render#65 ] zp[1]:23 [ current_ypos#14 current_ypos#97 current_ypos#98 ] zp[1]:112 [ render_screen_showing ] zp[1]:2 [ render_screen_show#17 render_screen_show#14 ] zp[1]:35 [ next_piece_idx#13 next_piece_idx#79 next_piece_idx#80 ] zp[1]:3 [ render_screen_render#19 render_screen_render#12 ] zp[1]:118 [ irq_sprite_ypos ] zp[1]:120 [ irq_cnt ] zp[1]:119 [ irq_sprite_ptr ] zp[1]:117 [ irq_raster_next ]
Limited combination testing to 100 combinations of 1944 possible.
Uplifting [play_spawn_current] best 4535582 combination reg byte a [ play_spawn_current::sid_rnd1_return#0 ] reg byte a [ play_spawn_current::$1 ] reg byte x [ play_spawn_current::current_piece_idx#0 ] zp[1]:139 [ play_spawn_current::$7 ]
Uplifting [keyboard_event_scan] best 4295582 combination reg byte a [ keyboard_event_scan::$15 ] reg byte a [ keyboard_event_scan::$16 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$23 ] zp[1]:44 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp[1]:45 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] zp[1]:43 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp[1]:155 [ keyboard_event_scan::row_scan#0 ] zp[1]:157 [ keyboard_event_scan::$0 ] zp[1]:159 [ keyboard_event_scan::$3 ] zp[1]:161 [ keyboard_event_scan::$6 ] zp[1]:163 [ keyboard_event_scan::$9 ]
Limited combination testing to 100 combinations of 524288 possible.
Uplifting [keyboard_matrix_read] best 4283576 combination reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ keyboard_matrix_read::return#2 ]
Uplifting [play_update_score] best 4283554 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$9 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::lines_after#0 ] zp[4]:216 [ play_update_score::add_bcd#0 ] zp[1]:195 [ play_update_score::removed#0 ] zp[1]:214 [ play_update_score::lines_before#0 ]
Limited combination testing to 100 combinations of 2304 possible.
Uplifting [render_moving] best 4268554 combination zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte x [ render_moving::c#2 render_moving::c#1 ] zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte a [ render_moving::current_cell#0 ] zp[1]:145 [ render_moving::$1 ] zp[1]:146 [ render_moving::$6 ] zp[1]:30 [ render_moving::l#4 render_moving::l#1 ] zp[2]:147 [ render_moving::screen_line#0 ] zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
Limited combination testing to 100 combinations of 15552 possible.
Uplifting [render_next] best 4253550 combination zp[2]:37 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#8 render_next::next_piece_gfx#1 ] reg byte x [ render_next::c#2 render_next::c#1 ] zp[2]:39 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#11 render_next::screen_next_area#4 render_next::screen_next_area#3 ] reg byte a [ render_next::cell#0 ] zp[1]:36 [ render_next::l#7 render_next::l#1 ] zp[1]:151 [ render_next::next_piece_char#0 ] reg byte x [ render_next::$6 ]
Limited combination testing to 100 combinations of 128 possible.
Uplifting [render_playfield] best 4252550 combination zp[2]:20 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp[1]:22 [ render_playfield::c#2 render_playfield::c#1 ] zp[1]:19 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$0 ] reg byte a [ render_playfield::$3 ] zp[1]:18 [ render_playfield::l#2 render_playfield::l#1 ]
Limited combination testing to 100 combinations of 128 possible.
Uplifting [keyboard_event_pressed] best 4252521 combination reg byte y [ keyboard_event_pressed::$0 ] reg byte x [ keyboard_event_pressed::$1 ] reg byte y [ keyboard_event_pressed::row_bits#0 ] reg byte x [ keyboard_event_pressed::keycode#5 ] zp[1]:189 [ keyboard_event_pressed::return#12 ] zp[1]:188 [ keyboard_event_pressed::return#11 ] zp[1]:156 [ keyboard_event_pressed::return#0 ] zp[1]:158 [ keyboard_event_pressed::return#1 ] zp[1]:160 [ keyboard_event_pressed::return#2 ] zp[1]:162 [ keyboard_event_pressed::return#10 ]
Limited combination testing to 100 combinations of 589824 possible.
Uplifting [render_screen_original] best 4250421 combination zp[2]:56 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] zp[2]:58 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] zp[2]:52 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] zp[2]:54 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp[1]:51 [ render_screen_original::y#6 render_screen_original::y#1 ]
Uplifting [play_move_down] best 4250403 combination zp[1]:72 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] reg byte a [ play_move_down::$2 ] reg byte a [ play_move_down::$12 ] reg byte a [ play_move_down::removed#0 ] zp[1]:168 [ play_move_down::key_event#0 ] zp[1]:169 [ play_move_down::return#0 ] zp[1]:88 [ play_move_down::return#3 ]
Limited combination testing to 100 combinations of 12288 possible.
Uplifting [play_move_rotate] best 4250387 combination zp[1]:91 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte x [ play_move_rotate::$5 ] reg byte a [ play_move_rotate::$2 ] reg byte a [ play_move_rotate::$7 ] zp[1]:174 [ play_move_rotate::key_event#0 ] zp[1]:175 [ play_move_rotate::return#0 ] zp[1]:90 [ play_move_rotate::return#2 ]
Limited combination testing to 100 combinations of 12288 possible.
Uplifting [play_move_leftright] best 4250360 combination reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::return#0 ] zp[1]:89 [ play_move_leftright::return#2 ]
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [render_bcd] best 4250340 combination zp[2]:98 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] zp[2]:92 [ 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 a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] reg byte a [ render_bcd::$4 ] zp[1]:97 [ 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[2]:94 [ render_bcd::offset#6 ] zp[1]:96 [ render_bcd::only_low#6 ]
Limited combination testing to 100 combinations of 1536 possible.
Uplifting [play_movement] best 4250328 combination zp[1]:48 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] reg byte a [ play_movement::$3 ] reg byte a [ play_movement::$4 ] zp[1]:173 [ play_movement::render#2 ] zp[1]:131 [ play_movement::key_event#0 ] zp[1]:132 [ play_movement::return#3 ]
Limited combination testing to 100 combinations of 576 possible.
Uplifting [keyboard_event_get] best 4249422 combination reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] reg byte a [ keyboard_event_get::return#3 ]
Uplifting [play_init] best 4249212 combination reg byte a [ play_init::$3 ] zp[1]:16 [ play_init::b#2 play_init::b#1 ] reg byte y [ play_init::j#2 play_init::j#1 ] reg byte x [ play_init::$2 ] zp[1]:15 [ play_init::idx#2 play_init::idx#1 ] zp[2]:13 [ play_init::pli#2 play_init::pli#1 ]
Limited combination testing to 100 combinations of 432 possible.
Uplifting [render_show] best 4249203 combination reg byte a [ render_show::d018val#3 ]
Uplifting [render_init] best 4249033 combination reg byte y [ render_init::i#2 render_init::i#1 ] reg byte x [ render_init::$5 ] zp[2]:8 [ render_init::li_2#2 render_init::li_2#1 ] zp[2]:6 [ render_init::li_1#2 render_init::li_1#1 ]
Uplifting [sprites_init] best 4248863 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp[1]:11 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [main] best 4247863 combination reg byte a [ main::render#1 ] reg byte x [ main::key_event#0 ]
Uplifting [render_score] best 4247863 combination zp[2]:49 [ render_score::screen#3 ]
Uplifting [sprites_irq] best 4247839 combination zp[1]:123 [ sprites_irq::raster_sprite_gfx_modify ] 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[1]:127 [ sprites_irq::ptr#1 ] zp[1]:121 [ sprites_irq::ypos#0 ] zp[1]:124 [ sprites_irq::ptr#0 ]
Limited combination testing to 100 combinations of 12288 possible.
Uplifting [MOS6526_CIA] best 4247839 combination
Uplifting [MOS6569_VICII] best 4247839 combination
Uplifting [MOS6581_SID] best 4247839 combination
Uplifting [render_screen_swap] best 4247839 combination
Uplifting [sprites_irq_init] best 4247839 combination
Uplifting [__start] best 4247839 combination
Attempting to uplift remaining variables inzp[1]:67 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ]
Uplifting [play_collision] best 4247839 combination zp[1]:67 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ]
Attempting to uplift remaining variables inzp[1]:68 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ]
Uplifting [play_collision] best 4247839 combination zp[1]:68 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ]
Attempting to uplift remaining variables inzp[1]:102 [ 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 4247839 combination zp[1]:102 [ 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[1]:179 [ play_collision::$14 ]
Uplifting [play_collision] best 4243839 combination reg byte a [ play_collision::$14 ]
Attempting to uplift remaining variables inzp[1]:108 [ play_remove_lines::x#2 play_remove_lines::x#1 ]
Uplifting [play_remove_lines] best 4243839 combination zp[1]:108 [ play_remove_lines::x#2 play_remove_lines::x#1 ]
Attempting to uplift remaining variables inzp[1]:182 [ play_collision::i#1 ]
Uplifting [play_collision] best 4243839 combination zp[1]:182 [ play_collision::i#1 ]
Attempting to uplift remaining variables inzp[1]:103 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ]
Uplifting [play_lock_current] best 4243839 combination zp[1]:103 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ]
Attempting to uplift remaining variables inzp[1]:65 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ]
Uplifting [play_collision] best 4243839 combination zp[1]:65 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ]
Attempting to uplift remaining variables inzp[1]:66 [ play_collision::l#6 play_collision::l#1 ]
Uplifting [play_collision] best 4243839 combination zp[1]:66 [ play_collision::l#6 play_collision::l#1 ]
Attempting to uplift remaining variables inzp[1]:109 [ play_remove_lines::full#4 play_remove_lines::full#2 ]
Uplifting [play_remove_lines] best 4243839 combination zp[1]:109 [ play_remove_lines::full#4 play_remove_lines::full#2 ]
Attempting to uplift remaining variables inzp[1]:212 [ play_remove_lines::c#0 ]
Uplifting [play_remove_lines] best 4243839 combination zp[1]:212 [ play_remove_lines::c#0 ]
Attempting to uplift remaining variables inzp[1]:106 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ]
Uplifting [play_remove_lines] best 4243839 combination zp[1]:106 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ]
Attempting to uplift remaining variables inzp[1]:211 [ play_lock_current::i#1 ]
Uplifting [play_lock_current] best 4243839 combination zp[1]:211 [ play_lock_current::i#1 ]
Attempting to uplift remaining variables inzp[1]:87 [ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ]
Uplifting [] best 4243839 combination zp[1]:87 [ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ]
Attempting to uplift remaining variables inzp[1]:105 [ play_remove_lines::y#8 play_remove_lines::y#1 ]
Uplifting [play_remove_lines] best 4243839 combination zp[1]:105 [ play_remove_lines::y#8 play_remove_lines::y#1 ]
Attempting to uplift remaining variables inzp[1]:101 [ play_lock_current::l#6 play_lock_current::l#1 ]
Uplifting [play_lock_current] best 4243839 combination zp[1]:101 [ play_lock_current::l#6 play_lock_current::l#1 ]
Attempting to uplift remaining variables inzp[1]:100 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
Uplifting [play_lock_current] best 4243839 combination zp[1]:100 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
Attempting to uplift remaining variables inzp[1]:46 [ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ]
Uplifting [] best 4243839 combination zp[1]:46 [ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ]
Attempting to uplift remaining variables inzp[1]:64 [ 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 4243839 combination zp[1]:64 [ 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[1]:81 [ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ]
Uplifting [] best 4243839 combination zp[1]:81 [ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ]
Attempting to uplift remaining variables inzp[1]:44 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
Uplifting [keyboard_event_scan] best 4093839 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
Attempting to uplift remaining variables inzp[1]:45 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ]
Uplifting [keyboard_event_scan] best 4093839 combination zp[1]:45 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ]
Attempting to uplift remaining variables inzp[1]:78 [ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ]
Uplifting [] best 4093839 combination zp[1]:78 [ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ]
Attempting to uplift remaining variables inzp[1]:77 [ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ]
Uplifting [] best 4093839 combination zp[1]:77 [ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ]
Attempting to uplift remaining variables inzp[1]:43 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
Uplifting [keyboard_event_scan] best 4093839 combination zp[1]:43 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
Attempting to uplift remaining variables inzp[1]:85 [ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ]
Uplifting [] best 4093839 combination zp[1]:85 [ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ]
Attempting to uplift remaining variables inzp[1]:155 [ keyboard_event_scan::row_scan#0 ]
Uplifting [keyboard_event_scan] best 4093839 combination zp[1]:155 [ keyboard_event_scan::row_scan#0 ]
Attempting to uplift remaining variables inzp[1]:63 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
Uplifting [play_collision] best 4093823 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[1]:76 [ level#35 level#25 level#18 level#20 level#22 ]
Uplifting [] best 4093823 combination zp[1]:76 [ level#35 level#25 level#18 level#20 level#22 ]
Attempting to uplift remaining variables inzp[1]: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 4093823 combination zp[1]: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[1]:22 [ render_playfield::c#2 render_playfield::c#1 ]
Uplifting [render_playfield] best 4093823 combination zp[1]:22 [ render_playfield::c#2 render_playfield::c#1 ]
Attempting to uplift remaining variables inzp[1]:140 [ play_collision::return#10 ]
Uplifting [play_collision] best 4093817 combination reg byte a [ play_collision::return#10 ]
Attempting to uplift remaining variables inzp[1]:19 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
Uplifting [render_playfield] best 4093817 combination zp[1]:19 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
Attempting to uplift remaining variables inzp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
Uplifting [render_moving] best 4093817 combination zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
Attempting to uplift remaining variables inzp[1]:72 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ]
Uplifting [play_move_down] best 4093817 combination zp[1]:72 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ]
Attempting to uplift remaining variables inzp[1]:73 [ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ]
Uplifting [] best 4093817 combination zp[1]:73 [ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ]
Attempting to uplift remaining variables inzp[1]:91 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ]
Uplifting [play_move_rotate] best 4093817 combination zp[1]:91 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ]
Attempting to uplift remaining variables inzp[1]:195 [ play_update_score::removed#0 ]
Uplifting [play_update_score] best 4093811 combination reg byte x [ play_update_score::removed#0 ]
Attempting to uplift remaining variables inzp[1]:86 [ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ]
Uplifting [] best 4093811 combination zp[1]:86 [ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ]
Attempting to uplift remaining variables inzp[1]:82 [ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ]
Uplifting [] best 4093811 combination zp[1]:82 [ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ]
Attempting to uplift remaining variables inzp[1]:214 [ play_update_score::lines_before#0 ]
Uplifting [play_update_score] best 4093811 combination zp[1]:214 [ play_update_score::lines_before#0 ]
Attempting to uplift remaining variables inzp[1]:145 [ render_moving::$1 ]
Uplifting [render_moving] best 4093211 combination reg byte a [ render_moving::$1 ]
Attempting to uplift remaining variables inzp[1]:146 [ render_moving::$6 ]
Uplifting [render_moving] best 4092811 combination reg byte a [ render_moving::$6 ]
Attempting to uplift remaining variables inzp[1]:189 [ keyboard_event_pressed::return#12 ]
Uplifting [keyboard_event_pressed] best 4092805 combination reg byte a [ keyboard_event_pressed::return#12 ]
Attempting to uplift remaining variables inzp[1]:191 [ play_collision::return#0 ]
Uplifting [play_collision] best 4092799 combination reg byte a [ play_collision::return#0 ]
Attempting to uplift remaining variables inzp[1]:193 [ play_remove_lines::return#0 ]
Uplifting [play_remove_lines] best 4092793 combination reg byte a [ play_remove_lines::return#0 ]
Attempting to uplift remaining variables inzp[1]:196 [ play_collision::return#13 ]
Uplifting [play_collision] best 4092787 combination reg byte a [ play_collision::return#13 ]
Attempting to uplift remaining variables inzp[1]:198 [ play_collision::return#1 ]
Uplifting [play_collision] best 4092781 combination reg byte a [ play_collision::return#1 ]
Attempting to uplift remaining variables inzp[1]:201 [ play_collision::return#14 ]
Uplifting [play_collision] best 4092775 combination reg byte a [ play_collision::return#14 ]
Attempting to uplift remaining variables inzp[1]:70 [ play_collision::return#15 ]
Uplifting [play_collision] best 4092745 combination reg byte a [ play_collision::return#15 ]
Attempting to uplift remaining variables inzp[1]:18 [ render_playfield::l#2 render_playfield::l#1 ]
Uplifting [render_playfield] best 4092745 combination zp[1]:18 [ render_playfield::l#2 render_playfield::l#1 ]
Attempting to uplift remaining variables inzp[1]:36 [ render_next::l#7 render_next::l#1 ]
Uplifting [render_next] best 4092745 combination zp[1]:36 [ render_next::l#7 render_next::l#1 ]
Attempting to uplift remaining variables inzp[1]:188 [ keyboard_event_pressed::return#11 ]
Uplifting [keyboard_event_pressed] best 4092727 combination reg byte a [ keyboard_event_pressed::return#11 ]
Attempting to uplift remaining variables inzp[1]:30 [ render_moving::l#4 render_moving::l#1 ]
Uplifting [render_moving] best 4092727 combination zp[1]:30 [ render_moving::l#4 render_moving::l#1 ]
Attempting to uplift remaining variables inzp[1]:174 [ play_move_rotate::key_event#0 ]
Uplifting [play_move_rotate] best 4092718 combination reg byte a [ play_move_rotate::key_event#0 ]
Attempting to uplift remaining variables inzp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
Uplifting [render_moving] best 4092718 combination zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
Attempting to uplift remaining variables inzp[1]:151 [ render_next::next_piece_char#0 ]
Uplifting [render_next] best 4092718 combination zp[1]:151 [ render_next::next_piece_char#0 ]
Attempting to uplift remaining variables inzp[1]:168 [ play_move_down::key_event#0 ]
Uplifting [play_move_down] best 4092712 combination reg byte a [ play_move_down::key_event#0 ]
Attempting to uplift remaining variables inzp[1]:28 [ current_piece_char#70 current_piece_char#99 current_piece_char#100 ]
Uplifting [] best 4092712 combination zp[1]:28 [ current_piece_char#70 current_piece_char#99 current_piece_char#100 ]
Attempting to uplift remaining variables inzp[1]:4 [ current_movedown_counter#17 current_movedown_counter#15 current_movedown_counter#13 ]
Uplifting [] best 4092712 combination zp[1]:4 [ current_movedown_counter#17 current_movedown_counter#15 current_movedown_counter#13 ]
Attempting to uplift remaining variables inzp[1]:139 [ play_spawn_current::$7 ]
Uplifting [play_spawn_current] best 4092712 combination zp[1]:139 [ play_spawn_current::$7 ]
Attempting to uplift remaining variables inzp[1]:48 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ]
Uplifting [play_movement] best 4092712 combination zp[1]:48 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ]
Attempting to uplift remaining variables inzp[1]:156 [ keyboard_event_pressed::return#0 ]
Uplifting [keyboard_event_pressed] best 4092706 combination reg byte a [ keyboard_event_pressed::return#0 ]
Attempting to uplift remaining variables inzp[1]:157 [ keyboard_event_scan::$0 ]
Uplifting [keyboard_event_scan] best 4092700 combination reg byte a [ keyboard_event_scan::$0 ]
Attempting to uplift remaining variables inzp[1]:158 [ keyboard_event_pressed::return#1 ]
Uplifting [keyboard_event_pressed] best 4092694 combination reg byte a [ keyboard_event_pressed::return#1 ]
Attempting to uplift remaining variables inzp[1]:159 [ keyboard_event_scan::$3 ]
Uplifting [keyboard_event_scan] best 4092688 combination reg byte a [ keyboard_event_scan::$3 ]
Attempting to uplift remaining variables inzp[1]:160 [ keyboard_event_pressed::return#2 ]
Uplifting [keyboard_event_pressed] best 4092682 combination reg byte a [ keyboard_event_pressed::return#2 ]
Attempting to uplift remaining variables inzp[1]:161 [ keyboard_event_scan::$6 ]
Uplifting [keyboard_event_scan] best 4092676 combination reg byte a [ keyboard_event_scan::$6 ]
Attempting to uplift remaining variables inzp[1]:162 [ keyboard_event_pressed::return#10 ]
Uplifting [keyboard_event_pressed] best 4092670 combination reg byte a [ keyboard_event_pressed::return#10 ]
Attempting to uplift remaining variables inzp[1]:163 [ keyboard_event_scan::$9 ]
Uplifting [keyboard_event_scan] best 4092664 combination reg byte a [ keyboard_event_scan::$9 ]
Attempting to uplift remaining variables inzp[1]:169 [ play_move_down::return#0 ]
Uplifting [play_move_down] best 4092658 combination reg byte a [ play_move_down::return#0 ]
Attempting to uplift remaining variables inzp[1]:175 [ play_move_rotate::return#0 ]
Uplifting [play_move_rotate] best 4092652 combination reg byte a [ play_move_rotate::return#0 ]
Attempting to uplift remaining variables inzp[1]:51 [ render_screen_original::y#6 render_screen_original::y#1 ]
Uplifting [render_screen_original] best 4092652 combination zp[1]:51 [ render_screen_original::y#6 render_screen_original::y#1 ]
Attempting to uplift remaining variables inzp[1]:97 [ 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 ]
Uplifting [render_bcd] best 4092632 combination 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 ]
Attempting to uplift remaining variables inzp[1]:96 [ render_bcd::only_low#6 ]
Uplifting [render_bcd] best 4092611 combination reg byte y [ render_bcd::only_low#6 ]
Attempting to uplift remaining variables inzp[1]:25 [ current_xpos#61 current_xpos#118 current_xpos#119 ]
Uplifting [] best 4092611 combination zp[1]:25 [ current_xpos#61 current_xpos#118 current_xpos#119 ]
Attempting to uplift remaining variables inzp[1]:24 [ render_screen_render#35 render_screen_render#64 ]
Uplifting [] best 4092611 combination zp[1]:24 [ render_screen_render#35 render_screen_render#64 ]
Attempting to uplift remaining variables inzp[1]:173 [ play_movement::render#2 ]
Uplifting [play_movement] best 4092611 combination zp[1]:173 [ play_movement::render#2 ]
Attempting to uplift remaining variables inzp[1]:88 [ play_move_down::return#3 ]
Uplifting [play_move_down] best 4092604 combination reg byte x [ play_move_down::return#3 ]
Attempting to uplift remaining variables inzp[1]:89 [ play_move_leftright::return#2 ]
Uplifting [play_move_leftright] best 4092595 combination reg byte a [ play_move_leftright::return#2 ]
Attempting to uplift remaining variables inzp[1]:90 [ play_move_rotate::return#2 ]
Uplifting [play_move_rotate] best 4092586 combination reg byte a [ play_move_rotate::return#2 ]
Attempting to uplift remaining variables inzp[1]:131 [ play_movement::key_event#0 ]
Uplifting [play_movement] best 4092586 combination zp[1]:131 [ play_movement::key_event#0 ]
Attempting to uplift remaining variables inzp[1]:16 [ play_init::b#2 play_init::b#1 ]
Uplifting [play_init] best 4092486 combination reg byte x [ play_init::b#2 play_init::b#1 ]
Attempting to uplift remaining variables inzp[1]:132 [ play_movement::return#3 ]
Uplifting [play_movement] best 4091886 combination reg byte a [ play_movement::return#3 ]
Attempting to uplift remaining variables inzp[1]:11 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [sprites_init] best 4091886 combination zp[1]:11 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Attempting to uplift remaining variables inzp[1]:15 [ play_init::idx#2 play_init::idx#1 ]
Uplifting [play_init] best 4091886 combination zp[1]:15 [ play_init::idx#2 play_init::idx#1 ]
Attempting to uplift remaining variables inzp[1]:34 [ render_screen_render#16 render_screen_render#65 ]
Uplifting [] best 4091850 combination reg byte x [ render_screen_render#16 render_screen_render#65 ]
Attempting to uplift remaining variables inzp[1]:23 [ current_ypos#14 current_ypos#97 current_ypos#98 ]
Uplifting [] best 4091814 combination reg byte x [ current_ypos#14 current_ypos#97 current_ypos#98 ]
Attempting to uplift remaining variables inzp[1]:112 [ render_screen_showing ]
Uplifting [] best 4091814 combination zp[1]:112 [ render_screen_showing ]
Attempting to uplift remaining variables inzp[1]:2 [ render_screen_show#17 render_screen_show#14 ]
Uplifting [] best 4091814 combination zp[1]:2 [ render_screen_show#17 render_screen_show#14 ]
Attempting to uplift remaining variables inzp[1]:35 [ next_piece_idx#13 next_piece_idx#79 next_piece_idx#80 ]
Uplifting [] best 4091777 combination reg byte y [ next_piece_idx#13 next_piece_idx#79 next_piece_idx#80 ]
Attempting to uplift remaining variables inzp[1]:3 [ render_screen_render#19 render_screen_render#12 ]
Uplifting [] best 4091777 combination zp[1]:3 [ render_screen_render#19 render_screen_render#12 ]
Attempting to uplift remaining variables inzp[1]:123 [ sprites_irq::raster_sprite_gfx_modify ]
Uplifting [sprites_irq] best 4091777 combination zp[1]:123 [ sprites_irq::raster_sprite_gfx_modify ]
Attempting to uplift remaining variables inzp[1]:127 [ sprites_irq::ptr#1 ]
Uplifting [sprites_irq] best 4091765 combination reg byte x [ sprites_irq::ptr#1 ]
Attempting to uplift remaining variables inzp[1]:121 [ sprites_irq::ypos#0 ]
Uplifting [sprites_irq] best 4091750 combination reg byte a [ sprites_irq::ypos#0 ]
Attempting to uplift remaining variables inzp[1]:124 [ sprites_irq::ptr#0 ]
Uplifting [sprites_irq] best 4091735 combination reg byte x [ sprites_irq::ptr#0 ]
Attempting to uplift remaining variables inzp[1]:118 [ irq_sprite_ypos ]
Uplifting [] best 4091735 combination zp[1]:118 [ irq_sprite_ypos ]
Attempting to uplift remaining variables inzp[1]:120 [ irq_cnt ]
Uplifting [] best 4091735 combination zp[1]:120 [ irq_cnt ]
Attempting to uplift remaining variables inzp[1]:119 [ irq_sprite_ptr ]
Uplifting [] best 4091735 combination zp[1]:119 [ irq_sprite_ptr ]
Attempting to uplift remaining variables inzp[1]:117 [ irq_raster_next ]
Uplifting [] best 4091735 combination zp[1]:117 [ irq_raster_next ]
Coalescing zero page register [ zp[2]:49 [ render_score::screen#3 ] ] with [ zp[2]:92 [ 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 [ zp[1]:48 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] ] with [ zp[1]:173 [ play_movement::render#2 ] ] - score: 2
Coalescing zero page register [ zp[2]:94 [ render_bcd::offset#6 ] ] with [ zp[2]:98 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] ] - score: 1
Coalescing zero page register [ zp[2]:13 [ play_init::pli#2 play_init::pli#1 ] ] with [ zp[2]:6 [ render_init::li_1#2 render_init::li_1#1 ] ]
Coalescing zero page register [ zp[1]:15 [ play_init::idx#2 play_init::idx#1 ] ] with [ zp[1]:11 [ sprites_init::xpos#2 sprites_init::xpos#1 ] ]
Coalescing zero page register [ zp[2]:20 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] with [ zp[2]:8 [ render_init::li_2#2 render_init::li_2#1 ] ]
Coalescing zero page register [ zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] ] with [ zp[1]:18 [ render_playfield::l#2 render_playfield::l#1 ] ]
Coalescing zero page register [ zp[1]:30 [ render_moving::l#4 render_moving::l#1 ] ] with [ zp[1]:19 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ]
Coalescing zero page register [ zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] ] with [ zp[1]:22 [ render_playfield::c#2 render_playfield::c#1 ] ]
Coalescing zero page register [ zp[1]:36 [ render_next::l#7 render_next::l#1 ] ] with [ zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] ]
Coalescing zero page register [ zp[1]:48 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 ] ] with [ zp[1]:43 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ]
Coalescing zero page register [ zp[2]:49 [ render_score::screen#3 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 ] ] with [ zp[2]:37 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#8 render_next::next_piece_gfx#1 ] ]
Coalescing zero page register [ zp[1]:51 [ render_screen_original::y#6 render_screen_original::y#1 ] ] with [ zp[1]:45 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] ]
Coalescing zero page register [ zp[2]:52 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] ] with [ zp[2]:39 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#11 render_next::screen_next_area#4 render_next::screen_next_area#3 ] ]
Coalescing zero page register [ zp[1]:72 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] ] with [ zp[1]:64 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] ]
Coalescing zero page register [ zp[2]:94 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] ] with [ zp[2]:54 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] ]
Coalescing zero page register [ zp[1]:100 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] ] with [ zp[1]:65 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] ]
Coalescing zero page register [ zp[1]:101 [ play_lock_current::l#6 play_lock_current::l#1 ] ] with [ zp[1]:66 [ play_collision::l#6 play_collision::l#1 ] ]
Coalescing zero page register [ zp[1]:102 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] with [ zp[1]:67 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] ]
Coalescing zero page register [ zp[1]:103 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] ] with [ zp[1]:68 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] ]
Coalescing zero page register [ zp[1]:105 [ play_remove_lines::y#8 play_remove_lines::y#1 ] ] with [ zp[1]:91 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ]
Coalescing zero page register [ zp[1]:139 [ play_spawn_current::$7 ] ] with [ zp[1]:106 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] ]
Coalescing zero page register [ zp[2]:147 [ render_moving::screen_line#0 ] ] with [ zp[2]:56 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] ]
Coalescing zero page register [ zp[1]:151 [ render_next::next_piece_char#0 ] ] with [ zp[1]:108 [ play_remove_lines::x#2 play_remove_lines::x#1 ] ]
Coalescing zero page register [ zp[1]:155 [ keyboard_event_scan::row_scan#0 ] ] with [ zp[1]:109 [ play_remove_lines::full#4 play_remove_lines::full#2 ] ]
Coalescing zero page register [ zp[2]:177 [ play_collision::piece_gfx#0 ] ] with [ zp[2]:58 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] ]
Coalescing zero page register [ zp[2]:209 [ play_lock_current::playfield_line#0 ] ] with [ zp[2]:180 [ play_collision::playfield_line#0 ] ]
Coalescing zero page register [ zp[1]:211 [ play_lock_current::i#1 ] ] with [ zp[1]:182 [ play_collision::i#1 ] ]
Coalescing zero page register [ zp[1]:214 [ play_update_score::lines_before#0 ] ] with [ zp[1]:212 [ play_remove_lines::c#0 ] ]
Coalescing zero page register [ zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 render_playfield::l#2 render_playfield::l#1 ] ] with [ zp[1]:15 [ play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 ] ]
Coalescing zero page register [ zp[1]:48 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] with [ zp[1]:30 [ render_moving::l#4 render_moving::l#1 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ]
Coalescing zero page register [ zp[2]:49 [ render_score::screen#3 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 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#8 render_next::next_piece_gfx#1 ] ] with [ zp[2]:13 [ play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 ] ]
Coalescing zero page register [ zp[1]:51 [ render_screen_original::y#6 render_screen_original::y#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] ] with [ zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 render_playfield::c#2 render_playfield::c#1 ] ]
Coalescing zero page register [ zp[1]:72 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] ] with [ zp[1]:36 [ render_next::l#7 render_next::l#1 render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] ]
Coalescing zero page register [ zp[1]:151 [ render_next::next_piece_char#0 play_remove_lines::x#2 play_remove_lines::x#1 ] ] with [ zp[1]:100 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] ]
Coalescing zero page register [ zp[1]:155 [ keyboard_event_scan::row_scan#0 play_remove_lines::full#4 play_remove_lines::full#2 ] ] with [ zp[1]:101 [ play_lock_current::l#6 play_lock_current::l#1 play_collision::l#6 play_collision::l#1 ] ]
Coalescing zero page register [ zp[2]:209 [ play_lock_current::playfield_line#0 play_collision::playfield_line#0 ] ] with [ zp[2]:20 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 render_init::li_2#2 render_init::li_2#1 ] ]
Coalescing zero page register [ zp[1]:214 [ play_update_score::lines_before#0 play_remove_lines::c#0 ] ] with [ zp[1]:102 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] ]
Coalescing zero page register [ zp[1]:103 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] ] with [ zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 render_playfield::l#2 render_playfield::l#1 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 ] ]
Coalescing zero page register [ zp[1]:105 [ play_remove_lines::y#8 play_remove_lines::y#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] with [ zp[1]:51 [ render_screen_original::y#6 render_screen_original::y#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 render_playfield::c#2 render_playfield::c#1 ] ]
Coalescing zero page register [ zp[2]:209 [ play_lock_current::playfield_line#0 play_collision::playfield_line#0 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 render_init::li_2#2 render_init::li_2#1 ] ] with [ zp[2]:52 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#11 render_next::screen_next_area#4 render_next::screen_next_area#3 ] ]
Allocated (was zp[1]:24) zp[1]:5 [ render_screen_render#35 render_screen_render#64 ]
Allocated (was zp[1]:25) zp[1]:6 [ current_xpos#61 current_xpos#118 current_xpos#119 ]
Allocated (was zp[2]:26) zp[2]:7 [ current_piece_gfx#66 current_piece_gfx#111 current_piece_gfx#112 ]
Allocated (was zp[1]:28) zp[1]:9 [ current_piece_char#70 current_piece_char#99 current_piece_char#100 ]
Allocated (was zp[1]:46) zp[1]:10 [ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ]
Allocated (was zp[1]:48) zp[1]:11 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 keyboard_event_scan::row#2 keyboard_event_scan::row#1 render_moving::l#4 render_moving::l#1 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
Allocated (was zp[2]:49) zp[2]:12 [ render_score::screen#3 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 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#8 render_next::next_piece_gfx#1 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 ]
Allocated (was zp[2]:61) zp[2]:14 [ current_piece#18 current_piece#98 current_piece#99 current_piece#100 current_piece#101 current_piece#102 ]
Allocated (was zp[1]:72) zp[1]:16 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 render_next::l#7 render_next::l#1 render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
Allocated (was zp[1]:73) zp[1]:17 [ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ]
Allocated (was zp[2]:74) zp[2]:18 [ lines_bcd#28 lines_bcd#20 lines_bcd#16 lines_bcd#18 lines_bcd#31 ]
Allocated (was zp[1]:76) zp[1]:20 [ level#35 level#25 level#18 level#20 level#22 ]
Allocated (was zp[1]:77) zp[1]:21 [ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ]
Allocated (was zp[1]:78) zp[1]:22 [ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ]
Allocated (was zp[2]:79) zp[2]:23 [ current_piece#30 current_piece#23 current_piece#103 current_piece#16 current_piece#95 ]
Allocated (was zp[1]:81) zp[1]:25 [ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ]
Allocated (was zp[1]:82) zp[1]:26 [ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ]
Allocated (was zp[2]:83) zp[2]:27 [ current_piece_gfx#37 current_piece_gfx#12 current_piece_gfx#122 current_piece_gfx#19 current_piece_gfx#21 current_piece_gfx#22 current_piece_gfx#116 current_piece_gfx#6 ]
Allocated (was zp[1]:85) zp[1]:29 [ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ]
Allocated (was zp[1]:86) zp[1]:30 [ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ]
Allocated (was zp[1]:87) zp[1]:31 [ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ]
Allocated (was zp[2]:94) zp[2]:32 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ]
Allocated (was zp[1]:103) zp[1]:34 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 render_playfield::l#2 render_playfield::l#1 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 ]
Allocated (was zp[1]:105) zp[1]:35 [ play_remove_lines::y#8 play_remove_lines::y#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 render_screen_original::y#6 render_screen_original::y#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 render_playfield::c#2 render_playfield::c#1 ]
Allocated (was zp[1]:112) zp[1]:36 [ render_screen_showing ]
Allocated (was zp[4]:113) zp[4]:37 [ score_bcd ]
Allocated (was zp[1]:117) zp[1]:41 [ irq_raster_next ]
Allocated (was zp[1]:118) zp[1]:42 [ irq_sprite_ypos ]
Allocated (was zp[1]:119) zp[1]:43 [ irq_sprite_ptr ]
Allocated (was zp[1]:120) zp[1]:44 [ irq_cnt ]
Allocated (was zp[1]:123) zp[1]:45 [ sprites_irq::raster_sprite_gfx_modify ]
Allocated (was zp[1]:131) zp[1]:46 [ play_movement::key_event#0 ]
Allocated (was zp[1]:139) zp[1]:47 [ play_spawn_current::$7 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ]
Allocated (was zp[2]:147) zp[2]:48 [ render_moving::screen_line#0 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ]
Allocated (was zp[1]:151) zp[1]:50 [ render_next::next_piece_char#0 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ]
Allocated (was zp[1]:155) zp[1]:51 [ keyboard_event_scan::row_scan#0 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::l#6 play_lock_current::l#1 play_collision::l#6 play_collision::l#1 ]
Allocated (was zp[2]:177) zp[2]:52 [ play_collision::piece_gfx#0 render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ]
Allocated (was zp[2]:209) zp[2]:54 [ play_lock_current::playfield_line#0 play_collision::playfield_line#0 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 render_init::li_2#2 render_init::li_2#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#11 render_next::screen_next_area#4 render_next::screen_next_area#3 ]
Allocated (was zp[1]:211) zp[1]:56 [ play_lock_current::i#1 play_collision::i#1 ]
Allocated (was zp[1]:214) zp[1]:57 [ play_update_score::lines_before#0 play_remove_lines::c#0 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ]
Allocated (was zp[4]:216) zp[4]:58 [ play_update_score::add_bcd#0 ]
Interrupt procedure sprites_irq clobbers AXcnzvdP
ASSEMBLER BEFORE OPTIMIZATION
// File Comments
// Tetris Game for the Commodore 64
// The tetris game tries to match NES tetris gameplay pretty closely
// Source: https://meatfighter.com/nintendotetrisai/
// Upstart
// Commodore 64 PRG executable file
.file [name="tetris.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(__start)
// Global Constants & labels
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
// The offset of the sprite pointers from the screen start address
.const OFFSET_SPRITE_PTRS = $3f8
.const VICII_ECM = $40
.const VICII_DEN = $10
.const VICII_RSEL = 8
// Bits for the VICII IRQ Status/Enable Registers
.const IRQ_RASTER = 1
// SID Channel Control Register Noise Waveform
.const SID_CONTROL_NOISE = $80
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in 0xA000, 0xE000 I/O in 0xD000
.const PROCPORT_RAM_IO = 5
// The colors of the C64
.const BLACK = 0
.const RED = 2
.const CYAN = 3
.const PURPLE = 4
.const GREEN = 5
.const BLUE = 6
.const ORANGE = 8
.const PINK = $a
.const DARK_GREY = $b
.const GREY = $c
.const LIGHT_GREEN = $d
.const LIGHT_BLUE = $e
.const KEY_Z = $c
.const KEY_LSHIFT = $f
.const KEY_X = $17
.const KEY_DOT = $2c
.const KEY_COMMA = $2f
.const KEY_RSHIFT = $34
.const KEY_CTRL = $3a
.const KEY_SPACE = $3c
.const KEY_COMMODORE = $3d
// The size of the playfield
.const PLAYFIELD_LINES = $16
.const PLAYFIELD_COLS = $a
// The Y-position of the first sprite row
.const SPRITES_FIRST_YPOS = $31
// The line of the first IRQ
.const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13
// The rate of moving down the current piece fast (number of frames between moves if movedown is not forced)
.const current_movedown_fast = $a
// No collision
.const COLLISION_NONE = 0
// Playfield piece collision (cell on top of other cell on the playfield)
.const COLLISION_PLAYFIELD = 1
// Bottom collision (cell below bottom of the playfield)
.const COLLISION_BOTTOM = 2
// Left side collision (cell beyond the left side of the playfield)
.const COLLISION_LEFT = 4
// Right side collision (cell beyond the right side of the playfield)
.const COLLISION_RIGHT = 8
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
.const OFFSET_STRUCT_MOS6581_SID_CH3_FREQ = $e
.const OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL = $12
.const OFFSET_STRUCT_MOS6581_SID_CH3_OSC = $1b
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.label SPRITES_XPOS = $d000
.label SPRITES_YPOS = $d001
.label SPRITES_COLOR = $d027
.label SPRITES_ENABLE = $d015
.label SPRITES_EXPAND_Y = $d017
.label SPRITES_MC = $d01c
.label SPRITES_EXPAND_X = $d01d
.label RASTER = $d012
.label BORDER_COLOR = $d020
.label BG_COLOR = $d021
.label BG_COLOR1 = $d022
.label BG_COLOR2 = $d023
.label BG_COLOR3 = $d024
.label VICII_CONTROL = $d011
.label D011 = $d011
.label D018 = $d018
// VIC II IRQ Status Register
.label IRQ_STATUS = $d019
// VIC II IRQ Enable Register
.label IRQ_ENABLE = $d01a
// Processor port data direction register
.label PROCPORT_DDR = 0
// Processor Port Register controlling RAM/ROM configuration and the datasette
.label PROCPORT = 1
// The SID MOS 6581/8580
.label SID = $d400
// Color Ram
.label COLS = $d800
// The CIA#1: keyboard matrix, joystick #1/#2
.label CIA1 = $dc00
// The CIA#2: Serial bus, RS-232, VIC memory bank
.label CIA2 = $dd00
// CIA#1 Interrupt for reading in ASM
.label CIA1_INTERRUPT = $dc0d
// The vector used when the HARDWARE serves IRQ interrupts
.label HARDWARE_IRQ = $fffe
// Address of the first screen
.label PLAYFIELD_SCREEN_1 = $400
// Address of the second screen
.label PLAYFIELD_SCREEN_2 = $2c00
// Screen Sprite pointers on screen 1
.label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+OFFSET_SPRITE_PTRS
// Screen Sprite pointers on screen 2
.label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+OFFSET_SPRITE_PTRS
// The screen currently being showed to the user. 0x00 for screen 1 / 0x20 for screen 2.
.label render_screen_showing = $24
// Current score in BCD-format
.label score_bcd = $25
// The raster line of the next IRQ
.label irq_raster_next = $29
// Y-pos of the sprites on the next IRQ
.label irq_sprite_ypos = $2a
// Index of the sprites to show on the next IRQ
.label irq_sprite_ptr = $2b
// Counting the 10 IRQs
.label irq_cnt = $2c
// Keyboard event buffer size. The number of events currently in the event buffer
.label keyboard_events_size = $a
// The rate of moving down the current piece (number of frames between moves if movedown is not forced)
.label current_movedown_slow = $15
// Position of top left corner of current moving piece on the playfield
.label current_xpos = $1d
.label current_ypos = $11
// The curent piece orientation - each piece have 4 orientations (00/0x10/0x20/0x30).
// The orientation chooses one of the 4 sub-graphics of the piece.
.label current_orientation = $1a
// Pointer to the current piece in the current orientation. Updated each time current_orientation is updated.
.label current_piece_gfx = $1b
// The char of the current piece
.label current_piece_char = $19
// Current level BCD-format
.label level_bcd = $16
// The screen currently being rendered to. 0x00 for screen 1 / 0x20 for screen 2.
.label render_screen_render = 3
// The screen currently to show next to the user. 0x00 for screen 1 / 0x20 for screen 2.
// Show showing screen 1 and rendering to screen 2
.label render_screen_show = 2
// Counts up to the next movedown of current piece
.label current_movedown_counter = 4
// Current number of cleared lines in BCD-format
.label lines_bcd = $12
// Current level in normal (non-BCD) format
.label level = $14
// The current moving piece. Points to the start of the piece definition.
.label current_piece = $17
// Is the game over?
.label game_over = $1e
// The index of the next moving piece. (0-6)
.label next_piece_idx = $1f
// The current moving piece. Points to the start of the piece definition.
.label current_piece_1 = $e
// The screen currently being rendered to. 0x00 for screen 1 / 0x20 for screen 2.
.label render_screen_render_1 = 5
// Position of top left corner of current moving piece on the playfield
.label current_xpos_1 = 6
// Pointer to the current piece in the current orientation. Updated each time current_orientation is updated.
.label current_piece_gfx_1 = 7
// The char of the current piece
.label current_piece_char_1 = 9
.segment Code
// __start
__start: {
.const __init1_toSpritePtr1_return = $ff&PLAYFIELD_SPRITES/$40
jmp __init1
// __start::__init1
__init1:
// [1] render_screen_showing = 0 -- vbuz1=vbuc1
lda #0
sta.z render_screen_showing
// [2] score_bcd = 0 -- vduz1=vduc1
lda #<0
sta.z score_bcd
lda #>0
sta.z score_bcd+1
lda #<0>>$10
sta.z score_bcd+2
lda #>0>>$10
sta.z score_bcd+3
// [3] irq_raster_next = IRQ_RASTER_FIRST -- vbuz1=vbuc1
lda #IRQ_RASTER_FIRST
sta.z irq_raster_next
// [4] irq_sprite_ypos = SPRITES_FIRST_YPOS+$15 -- vbuz1=vbuc1
lda #SPRITES_FIRST_YPOS+$15
sta.z irq_sprite_ypos
// [5] phi from __start::__init1 to __start::__init1_toSpritePtr1 [phi:__start::__init1->__start::__init1_toSpritePtr1]
__init1_toSpritePtr1_from___init1:
jmp __init1_toSpritePtr1
// __start::__init1_toSpritePtr1
__init1_toSpritePtr1:
jmp __init1___b1
// __start::__init1_@1
__init1___b1:
// [6] irq_sprite_ptr = __start::__init1_toSpritePtr1_return#0+3 -- vbuz1=vbuc1
lda #__init1_toSpritePtr1_return+3
sta.z irq_sprite_ptr
// [7] irq_cnt = 0 -- vbuz1=vbuc1
lda #0
sta.z irq_cnt
// [8] phi from __start::__init1_@1 to __start::@1 [phi:__start::__init1_@1->__start::@1]
__b1_from___init1___b1:
jmp __b1
// __start::@1
__b1:
// [9] call main
// [51] phi from __start::@1 to main [phi:__start::@1->main]
main_from___b1:
jsr main
jmp __breturn
// __start::@return
__breturn:
// [10] return
rts
}
// sprites_irq
// Raster Interrupt Routine - sets up the sprites covering the playfield
// Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST
// Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers
sprites_irq: {
.const toSpritePtr1_return = $ff&PLAYFIELD_SPRITES/$40
.label raster_sprite_gfx_modify = $2d
// interrupt(isr_hardware_clobber_entry) -- isr_hardware_all_entry
sta rega+1
stx regx+1
// asm { cld }
//(*BG_COLOR)++;
// Clear decimal flag (because it is used by the score algorithm)
cld
// [12] sprites_irq::ypos#0 = irq_sprite_ypos -- vbuaa=vbuz1
// Place the sprites
lda.z irq_sprite_ypos
// [13] *SPRITES_YPOS = sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa
sta SPRITES_YPOS
// [14] *(SPRITES_YPOS+2) = sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa
sta SPRITES_YPOS+2
// [15] *(SPRITES_YPOS+4) = sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa
sta SPRITES_YPOS+4
// [16] *(SPRITES_YPOS+6) = sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa
sta SPRITES_YPOS+6
// [17] sprites_irq::$0 = irq_raster_next + 1 -- vbuxx=vbuz1_plus_1
ldx.z irq_raster_next
inx
// [18] sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 -- vbuz1=vbuxx
// Wait for the y-position before changing sprite pointers
stx.z raster_sprite_gfx_modify
jmp __b8
// sprites_irq::@8
__b8:
// [19] if(*RASTER<sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1
lda RASTER
cmp.z raster_sprite_gfx_modify
bcc __b8
jmp __b9
// sprites_irq::@9
__b9:
// [20] sprites_irq::ptr#0 = irq_sprite_ptr -- vbuxx=vbuz1
ldx.z irq_sprite_ptr
// [21] if(render_screen_showing==0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1
lda.z render_screen_showing
cmp #0
beq __b1
jmp __b10
// sprites_irq::@10
__b10:
// [22] *PLAYFIELD_SPRITE_PTRS_2 = sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx
stx PLAYFIELD_SPRITE_PTRS_2
// [23] sprites_irq::ptr#3 = ++ sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx
inx
txa
// [24] *(PLAYFIELD_SPRITE_PTRS_2+1) = sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa
sta PLAYFIELD_SPRITE_PTRS_2+1
// [25] *(PLAYFIELD_SPRITE_PTRS_2+2) = sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa
sta PLAYFIELD_SPRITE_PTRS_2+2
// [26] sprites_irq::ptr#4 = ++ sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa
clc
adc #1
// [27] *(PLAYFIELD_SPRITE_PTRS_2+3) = sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa
sta PLAYFIELD_SPRITE_PTRS_2+3
jmp __b2
// sprites_irq::@2
__b2:
// [28] irq_cnt = ++ irq_cnt -- vbuz1=_inc_vbuz1
inc.z irq_cnt
// [29] if(irq_cnt==9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1
lda #9
cmp.z irq_cnt
beq __b3
jmp __b6
// sprites_irq::@6
__b6:
// [30] if(irq_cnt==$a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1
lda #$a
cmp.z irq_cnt
beq __b4
jmp __b7
// sprites_irq::@7
__b7:
// [31] irq_raster_next = irq_raster_next + $14 -- vbuz1=vbuz1_plus_vbuc1
lax.z irq_raster_next
axs #-[$14]
stx.z irq_raster_next
// [32] irq_sprite_ypos = irq_sprite_ypos + $15 -- vbuz1=vbuz1_plus_vbuc1
lax.z irq_sprite_ypos
axs #-[$15]
stx.z irq_sprite_ypos
// [33] irq_sprite_ptr = irq_sprite_ptr + 3 -- vbuz1=vbuz1_plus_vbuc1
lax.z irq_sprite_ptr
axs #-[3]
stx.z irq_sprite_ptr
jmp __b5
// sprites_irq::@5
__b5:
// [34] *RASTER = irq_raster_next -- _deref_pbuc1=vbuz1
// Setup next interrupt
lda.z irq_raster_next
sta RASTER
// [35] *IRQ_STATUS = IRQ_RASTER -- _deref_pbuc1=vbuc2
// Acknowledge the IRQ and setup the next one
lda #IRQ_RASTER
sta IRQ_STATUS
jmp __breturn
// sprites_irq::@return
__breturn:
// [36] return
// interrupt(isr_hardware_clobber_exit) -- isr_hardware_all_exit
rega:
lda #0
regx:
ldx #0
rti
// sprites_irq::@4
__b4:
// [37] irq_cnt = 0 -- vbuz1=vbuc1
lda #0
sta.z irq_cnt
// [38] irq_raster_next = IRQ_RASTER_FIRST -- vbuz1=vbuc1
lda #IRQ_RASTER_FIRST
sta.z irq_raster_next
// [39] irq_sprite_ypos = irq_sprite_ypos + $15 -- vbuz1=vbuz1_plus_vbuc1
lax.z irq_sprite_ypos
axs #-[$15]
stx.z irq_sprite_ypos
// [40] irq_sprite_ptr = irq_sprite_ptr + 3 -- vbuz1=vbuz1_plus_vbuc1
lax.z irq_sprite_ptr
axs #-[3]
stx.z irq_sprite_ptr
jmp __b5
// sprites_irq::@3
__b3:
// [41] irq_raster_next = irq_raster_next + $15 -- vbuz1=vbuz1_plus_vbuc1
lax.z irq_raster_next
axs #-[$15]
stx.z irq_raster_next
// [42] irq_sprite_ypos = SPRITES_FIRST_YPOS -- vbuz1=vbuc1
lda #SPRITES_FIRST_YPOS
sta.z irq_sprite_ypos
// [43] phi from sprites_irq::@3 to sprites_irq::toSpritePtr1 [phi:sprites_irq::@3->sprites_irq::toSpritePtr1]
toSpritePtr1_from___b3:
jmp toSpritePtr1
// sprites_irq::toSpritePtr1
toSpritePtr1:
jmp __b11
// sprites_irq::@11
__b11:
// [44] irq_sprite_ptr = sprites_irq::toSpritePtr1_return#0 -- vbuz1=vbuc1
lda #toSpritePtr1_return
sta.z irq_sprite_ptr
jmp __b5
// sprites_irq::@1
__b1:
// [45] *PLAYFIELD_SPRITE_PTRS_1 = sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx
stx PLAYFIELD_SPRITE_PTRS_1
// [46] sprites_irq::ptr#1 = ++ sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx
inx
// [47] *(PLAYFIELD_SPRITE_PTRS_1+1) = sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx
stx PLAYFIELD_SPRITE_PTRS_1+1
// [48] *(PLAYFIELD_SPRITE_PTRS_1+2) = sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx
stx PLAYFIELD_SPRITE_PTRS_1+2
// [49] sprites_irq::ptr#2 = ++ sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx
inx
txa
// [50] *(PLAYFIELD_SPRITE_PTRS_1+3) = sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa
sta PLAYFIELD_SPRITE_PTRS_1+3
jmp __b2
}
// main
main: {
jmp sid_rnd_init1
// main::sid_rnd_init1
sid_rnd_init1:
// [52] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff -- _deref_pwuc1=vwuc2
lda #<$ffff
sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ
lda #>$ffff
sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ+1
// [53] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE -- _deref_pbuc1=vbuc2
lda #SID_CONTROL_NOISE
sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL
jmp __b8
// main::@8
__b8:
// asm { sei }
sei
// [55] call render_init
// [109] phi from main::@8 to render_init [phi:main::@8->render_init]
render_init_from___b8:
jsr render_init
// [56] phi from main::@8 to main::@9 [phi:main::@8->main::@9]
__b9_from___b8:
jmp __b9
// main::@9
__b9:
// [57] call sprites_init
jsr sprites_init
// [58] phi from main::@9 to main::@10 [phi:main::@9->main::@10]
__b10_from___b9:
jmp __b10
// main::@10
__b10:
// [59] call sprites_irq_init
jsr sprites_irq_init
// [60] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
__b11_from___b10:
jmp __b11
// main::@11
__b11:
// [61] call play_init
// [155] phi from main::@11 to play_init [phi:main::@11->play_init]
play_init_from___b11:
jsr play_init
// [62] phi from main::@11 to main::@12 [phi:main::@11->main::@12]
__b12_from___b11:
jmp __b12
// main::@12
__b12:
// [63] call play_spawn_current
// Spawn twice to spawn both current & next
// [172] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current]
play_spawn_current_from___b12:
// [172] phi game_over#66 = 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1
lda #0
sta.z game_over
// [172] phi next_piece_idx#18 = 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1
lda #0
sta.z next_piece_idx
jsr play_spawn_current
// [64] phi from main::@12 to main::@13 [phi:main::@12->main::@13]
__b13_from___b12:
jmp __b13
// main::@13
__b13:
// [65] call play_spawn_current
// [172] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current]
play_spawn_current_from___b13:
// [172] phi game_over#66 = game_over#53 [phi:main::@13->play_spawn_current#0] -- register_copy
// [172] phi next_piece_idx#18 = play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy
jsr play_spawn_current
// [66] phi from main::@13 to main::@14 [phi:main::@13->main::@14]
__b14_from___b13:
jmp __b14
// main::@14
__b14:
// [67] call render_playfield
// [192] phi from main::@14 to render_playfield [phi:main::@14->render_playfield]
render_playfield_from___b14:
// [192] phi render_screen_render#24 = $20 [phi:main::@14->render_playfield#0] -- vbuxx=vbuc1
ldx #$20
jsr render_playfield
jmp __b15
// main::@15
__b15:
// [68] current_ypos#97 = current_ypos#5 -- vbuxx=vbuz1
ldx.z current_ypos
// [69] current_xpos#118 = current_xpos#100 -- vbuz1=vbuz2
lda.z current_xpos
sta.z current_xpos_1
// [70] current_piece_gfx#111 = (byte*)PIECES[play_spawn_current::$7] -- pbuz1=qbuc1_derefidx_vbuz2
ldy.z play_spawn_current.__7
lda PIECES,y
sta.z current_piece_gfx_1
lda PIECES+1,y
sta.z current_piece_gfx_1+1
// [71] current_piece_char#99 = current_piece_char#4 -- vbuz1=vbuz2
lda.z current_piece_char
sta.z current_piece_char_1
// [72] call render_moving
// [206] phi from main::@15 to render_moving [phi:main::@15->render_moving]
render_moving_from___b15:
// [206] phi current_piece_char#70 = current_piece_char#99 [phi:main::@15->render_moving#0] -- register_copy
// [206] phi current_piece_gfx#66 = current_piece_gfx#111 [phi:main::@15->render_moving#1] -- register_copy
// [206] phi current_xpos#61 = current_xpos#118 [phi:main::@15->render_moving#2] -- register_copy
// [206] phi render_screen_render#35 = $20 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1
lda #$20
sta.z render_screen_render_1
// [206] phi current_ypos#14 = current_ypos#97 [phi:main::@15->render_moving#4] -- register_copy
jsr render_moving
jmp __b16
// main::@16
__b16:
// [73] next_piece_idx#79 = play_spawn_current::piece_idx#2 -- vbuyy=vbuz1
ldy.z play_spawn_current.piece_idx
// [74] call render_next
// [228] phi from main::@16 to render_next [phi:main::@16->render_next]
render_next_from___b16:
// [228] phi next_piece_idx#13 = next_piece_idx#79 [phi:main::@16->render_next#0] -- register_copy
// [228] phi render_screen_render#16 = $20 [phi:main::@16->render_next#1] -- vbuxx=vbuc1
ldx #$20
jsr render_next
jmp __b17
// main::@17
__b17:
// [75] current_piece#103 = (byte*)PIECES[play_spawn_current::$7] -- pbuz1=qbuc1_derefidx_vbuz2
ldy.z play_spawn_current.__7
lda PIECES,y
sta.z current_piece
lda PIECES+1,y
sta.z current_piece+1
// [76] current_piece_gfx#122 = (byte*)PIECES[play_spawn_current::$7] -- pbuz1=qbuc1_derefidx_vbuz2
ldy.z play_spawn_current.__7
lda PIECES,y
sta.z current_piece_gfx
lda PIECES+1,y
sta.z current_piece_gfx+1
// [77] phi from main::@17 to main::@1 [phi:main::@17->main::@1]
__b1_from___b17:
// [77] phi level_bcd#10 = 0 [phi:main::@17->main::@1#0] -- vbuz1=vbuc1
lda #0
sta.z level_bcd
// [77] phi level#25 = 0 [phi:main::@17->main::@1#1] -- vbuz1=vbuc1
lda #0
sta.z level
// [77] phi lines_bcd#20 = 0 [phi:main::@17->main::@1#2] -- vwuz1=vwuc1
lda #<0
sta.z lines_bcd
lda #>0
sta.z lines_bcd+1
// [77] phi current_movedown_counter#17 = 0 [phi:main::@17->main::@1#3] -- vbuz1=vbuc1
lda #0
sta.z current_movedown_counter
// [77] phi keyboard_events_size#20 = 0 [phi:main::@17->main::@1#4] -- vbuz1=vbuc1
lda #0
sta.z keyboard_events_size
// [77] phi next_piece_idx#23 = play_spawn_current::piece_idx#2 [phi:main::@17->main::@1#5] -- register_copy
// [77] phi game_over#22 = game_over#53 [phi:main::@17->main::@1#6] -- register_copy
// [77] phi current_ypos#10 = current_ypos#5 [phi:main::@17->main::@1#7] -- register_copy
// [77] phi current_xpos#13 = current_xpos#100 [phi:main::@17->main::@1#8] -- register_copy
// [77] phi current_piece_gfx#12 = current_piece_gfx#122 [phi:main::@17->main::@1#9] -- register_copy
// [77] phi current_orientation#12 = 0 [phi:main::@17->main::@1#10] -- vbuz1=vbuc1
lda #0
sta.z current_orientation
// [77] phi current_piece_char#23 = current_piece_char#4 [phi:main::@17->main::@1#11] -- register_copy
// [77] phi current_piece#23 = current_piece#103 [phi:main::@17->main::@1#12] -- register_copy
// [77] phi current_movedown_slow#13 = current_movedown_slow#0 [phi:main::@17->main::@1#13] -- register_copy
// [77] phi render_screen_render#19 = $20 [phi:main::@17->main::@1#14] -- vbuz1=vbuc1
lda #$20
sta.z render_screen_render
// [77] phi render_screen_show#17 = 0 [phi:main::@17->main::@1#15] -- vbuz1=vbuc1
lda #0
sta.z render_screen_show
jmp __b1
// [77] phi from main::@25 main::@6 to main::@1 [phi:main::@25/main::@6->main::@1]
__b1_from___b25:
__b1_from___b6:
// [77] phi level_bcd#10 = level_bcd#18 [phi:main::@25/main::@6->main::@1#0] -- register_copy
// [77] phi level#25 = level#18 [phi:main::@25/main::@6->main::@1#1] -- register_copy
// [77] phi lines_bcd#20 = lines_bcd#16 [phi:main::@25/main::@6->main::@1#2] -- register_copy
// [77] phi current_movedown_counter#17 = current_movedown_counter#15 [phi:main::@25/main::@6->main::@1#3] -- register_copy
// [77] phi keyboard_events_size#20 = keyboard_events_size#17 [phi:main::@25/main::@6->main::@1#4] -- register_copy
// [77] phi next_piece_idx#23 = next_piece_idx#17 [phi:main::@25/main::@6->main::@1#5] -- register_copy
// [77] phi game_over#22 = game_over#16 [phi:main::@25/main::@6->main::@1#6] -- register_copy
// [77] phi current_ypos#10 = current_ypos#20 [phi:main::@25/main::@6->main::@1#7] -- register_copy
// [77] phi current_xpos#13 = current_xpos#2 [phi:main::@25/main::@6->main::@1#8] -- register_copy
// [77] phi current_piece_gfx#12 = current_piece_gfx#19 [phi:main::@25/main::@6->main::@1#9] -- register_copy
// [77] phi current_orientation#12 = current_orientation#18 [phi:main::@25/main::@6->main::@1#10] -- register_copy
// [77] phi current_piece_char#23 = current_piece_char#17 [phi:main::@25/main::@6->main::@1#11] -- register_copy
// [77] phi current_piece#23 = current_piece#16 [phi:main::@25/main::@6->main::@1#12] -- register_copy
// [77] phi current_movedown_slow#13 = current_movedown_slow#22 [phi:main::@25/main::@6->main::@1#13] -- register_copy
// [77] phi render_screen_render#19 = render_screen_render#12 [phi:main::@25/main::@6->main::@1#14] -- register_copy
// [77] phi render_screen_show#17 = render_screen_show#14 [phi:main::@25/main::@6->main::@1#15] -- register_copy
jmp __b1
// main::@1
__b1:
jmp __b2
// Wait for a frame to pass
// main::@2
__b2:
// [78] if(*RASTER!=$ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1
lda #$ff
cmp RASTER
bne __b2
// [79] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
__b3_from___b2:
jmp __b3
// main::@3
__b3:
// [80] call render_show
//*BORDER_COLOR = render_screen_show/0x10;
// Update D018 to show the selected screen
jsr render_show
// [81] phi from main::@3 to main::@18 [phi:main::@3->main::@18]
__b18_from___b3:
jmp __b18
// main::@18
__b18:
// [82] call keyboard_event_scan
// Scan keyboard events
// [258] phi from main::@18 to keyboard_event_scan [phi:main::@18->keyboard_event_scan]
keyboard_event_scan_from___b18:
jsr keyboard_event_scan
// [83] phi from main::@18 to main::@19 [phi:main::@18->main::@19]
__b19_from___b18:
jmp __b19
// main::@19
__b19:
// [84] call keyboard_event_get
jsr keyboard_event_get
// [85] keyboard_event_get::return#3 = keyboard_event_get::return#2
jmp __b20
// main::@20
__b20:
// [86] main::key_event#0 = keyboard_event_get::return#3 -- vbuxx=vbuaa
tax
// [87] if(game_over#22==0) goto main::@4 -- vbuz1_eq_0_then_la1
lda.z game_over
cmp #0
beq __b4
jmp __b5
// main::@5
__b5:
// [88] *BORDER_COLOR = ++ *BORDER_COLOR -- _deref_pbuc1=_inc__deref_pbuc1
inc BORDER_COLOR
jmp __b5
// main::@4
__b4:
// [89] play_movement::key_event#0 = main::key_event#0 -- vbuz1=vbuxx
stx.z play_movement.key_event
// [90] call play_movement
jsr play_movement
// [91] play_movement::return#3 = play_movement::return#2 -- vbuaa=vbuz1
lda.z play_movement.return
jmp __b21
// main::@21
__b21:
// [92] main::render#1 = play_movement::return#3
jmp __b6
// main::@6
__b6:
// [93] if(main::render#1==0) goto main::@1 -- vbuaa_eq_0_then_la1
cmp #0
beq __b1_from___b6
jmp __b7
// main::@7
__b7:
// [94] render_screen_render#63 = render_screen_render#19 -- vbuxx=vbuz1
ldx.z render_screen_render
// [95] call render_playfield
// [192] phi from main::@7 to render_playfield [phi:main::@7->render_playfield]
render_playfield_from___b7:
// [192] phi render_screen_render#24 = render_screen_render#63 [phi:main::@7->render_playfield#0] -- register_copy
jsr render_playfield
jmp __b22
// main::@22
__b22:
// [96] current_ypos#98 = current_ypos#20 -- vbuxx=vbuz1
ldx.z current_ypos
// [97] render_screen_render#64 = render_screen_render#19 -- vbuz1=vbuz2
lda.z render_screen_render
sta.z render_screen_render_1
// [98] current_xpos#119 = current_xpos#2 -- vbuz1=vbuz2
lda.z current_xpos
sta.z current_xpos_1
// [99] current_piece_gfx#112 = current_piece_gfx#19 -- pbuz1=pbuz2
lda.z current_piece_gfx
sta.z current_piece_gfx_1
lda.z current_piece_gfx+1
sta.z current_piece_gfx_1+1
// [100] current_piece_char#100 = current_piece_char#17 -- vbuz1=vbuz2
lda.z current_piece_char
sta.z current_piece_char_1
// [101] call render_moving
// [206] phi from main::@22 to render_moving [phi:main::@22->render_moving]
render_moving_from___b22:
// [206] phi current_piece_char#70 = current_piece_char#100 [phi:main::@22->render_moving#0] -- register_copy
// [206] phi current_piece_gfx#66 = current_piece_gfx#112 [phi:main::@22->render_moving#1] -- register_copy
// [206] phi current_xpos#61 = current_xpos#119 [phi:main::@22->render_moving#2] -- register_copy
// [206] phi render_screen_render#35 = render_screen_render#64 [phi:main::@22->render_moving#3] -- register_copy
// [206] phi current_ypos#14 = current_ypos#98 [phi:main::@22->render_moving#4] -- register_copy
jsr render_moving
jmp __b23
// main::@23
__b23:
// [102] render_screen_render#65 = render_screen_render#19 -- vbuxx=vbuz1
ldx.z render_screen_render
// [103] next_piece_idx#80 = next_piece_idx#17 -- vbuyy=vbuz1
ldy.z next_piece_idx
// [104] call render_next
// [228] phi from main::@23 to render_next [phi:main::@23->render_next]
render_next_from___b23:
// [228] phi next_piece_idx#13 = next_piece_idx#80 [phi:main::@23->render_next#0] -- register_copy
// [228] phi render_screen_render#16 = render_screen_render#65 [phi:main::@23->render_next#1] -- register_copy
jsr render_next
// [105] phi from main::@23 to main::@24 [phi:main::@23->main::@24]
__b24_from___b23:
jmp __b24
// main::@24
__b24:
// [106] call render_score
jsr render_score
// [107] phi from main::@24 to main::@25 [phi:main::@24->main::@25]
__b25_from___b24:
jmp __b25
// main::@25
__b25:
// [108] call render_screen_swap
jsr render_screen_swap
jmp __b1_from___b25
}
// render_init
// Initialize rendering
render_init: {
.const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)/$40
// Initialize the screen line pointers;
.label li_1 = $c
.label li_2 = $36
jmp vicSelectGfxBank1
// render_init::vicSelectGfxBank1
vicSelectGfxBank1:
// [110] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3 -- _deref_pbuc1=vbuc2
lda #3
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR
// [111] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001]
vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1:
jmp vicSelectGfxBank1_toDd001
// render_init::vicSelectGfxBank1_toDd001
vicSelectGfxBank1_toDd001:
jmp vicSelectGfxBank1___b1
// render_init::vicSelectGfxBank1_@1
vicSelectGfxBank1___b1:
// [112] *((byte*)CIA2) = render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2
lda #vicSelectGfxBank1_toDd001_return
sta CIA2
jmp __b2
// render_init::@2
__b2:
// [113] *D011 = VICII_ECM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
// Enable Extended Background Color Mode
lda #VICII_ECM|VICII_DEN|VICII_RSEL|3
sta D011
// [114] *BORDER_COLOR = BLACK -- _deref_pbuc1=vbuc2
lda #BLACK
sta BORDER_COLOR
// [115] *BG_COLOR = BLACK -- _deref_pbuc1=vbuc2
lda #BLACK
sta BG_COLOR
// [116] *BG_COLOR1 = *PIECES_COLORS_1 -- _deref_pbuc1=_deref_pbuc2
lda PIECES_COLORS_1
sta BG_COLOR1
// [117] *BG_COLOR2 = *PIECES_COLORS_2 -- _deref_pbuc1=_deref_pbuc2
lda PIECES_COLORS_2
sta BG_COLOR2
// [118] *BG_COLOR3 = GREY -- _deref_pbuc1=vbuc2
lda #GREY
sta BG_COLOR3
// [119] call render_screen_original
// Setup chars on the screens
// [358] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original]
render_screen_original_from___b2:
// [358] phi render_screen_original::screen#9 = PLAYFIELD_SCREEN_1 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_1
sta.z render_screen_original.screen
lda #>PLAYFIELD_SCREEN_1
sta.z render_screen_original.screen+1
jsr render_screen_original
// [120] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3]
__b3_from___b2:
jmp __b3
// render_init::@3
__b3:
// [121] call render_screen_original
// [358] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original]
render_screen_original_from___b3:
// [358] phi render_screen_original::screen#9 = PLAYFIELD_SCREEN_2 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_2
sta.z render_screen_original.screen
lda #>PLAYFIELD_SCREEN_2
sta.z render_screen_original.screen+1
jsr render_screen_original
// [122] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1]
__b1_from___b3:
// [122] phi render_init::li_2#2 = PLAYFIELD_SCREEN_2+2*$28+$10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_2+2*$28+$10
sta.z li_2
lda #>PLAYFIELD_SCREEN_2+2*$28+$10
sta.z li_2+1
// [122] phi render_init::li_1#2 = PLAYFIELD_SCREEN_1+2*$28+$10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_1+2*$28+$10
sta.z li_1
lda #>PLAYFIELD_SCREEN_1+2*$28+$10
sta.z li_1+1
// [122] phi render_init::i#2 = 0 [phi:render_init::@3->render_init::@1#2] -- vbuyy=vbuc1
ldy #0
jmp __b1
// [122] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1]
__b1_from___b1:
// [122] phi render_init::li_2#2 = render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy
// [122] phi render_init::li_1#2 = render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy
// [122] phi render_init::i#2 = render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy
jmp __b1
// render_init::@1
__b1:
// [123] render_init::$5 = render_init::i#2 << 1 -- vbuxx=vbuyy_rol_1
tya
asl
tax
// [124] screen_lines_1[render_init::$5] = render_init::li_1#2 -- qbuc1_derefidx_vbuxx=pbuz1
lda.z li_1
sta screen_lines_1,x
lda.z li_1+1
sta screen_lines_1+1,x
// [125] screen_lines_2[render_init::$5] = render_init::li_2#2 -- qbuc1_derefidx_vbuxx=pbuz1
lda.z li_2
sta screen_lines_2,x
lda.z li_2+1
sta screen_lines_2+1,x
// [126] render_init::li_1#1 = render_init::li_1#2 + $28 -- pbuz1=pbuz1_plus_vbuc1
lda #$28
clc
adc.z li_1
sta.z li_1
bcc !+
inc.z li_1+1
!:
// [127] render_init::li_2#1 = render_init::li_2#2 + $28 -- pbuz1=pbuz1_plus_vbuc1
lda #$28
clc
adc.z li_2
sta.z li_2
bcc !+
inc.z li_2+1
!:
// [128] render_init::i#1 = ++ render_init::i#2 -- vbuyy=_inc_vbuyy
iny
// [129] if(render_init::i#1!=PLAYFIELD_LINES-1+1) goto render_init::@1 -- vbuyy_neq_vbuc1_then_la1
cpy #PLAYFIELD_LINES-1+1
bne __b1_from___b1
jmp __breturn
// render_init::@return
__breturn:
// [130] return
rts
}
// sprites_init
// Setup the sprites
sprites_init: {
.label xpos = $22
// [131] *SPRITES_ENABLE = $f -- _deref_pbuc1=vbuc2
lda #$f
sta SPRITES_ENABLE
// [132] *SPRITES_MC = 0 -- _deref_pbuc1=vbuc2
lda #0
sta SPRITES_MC
// [133] *SPRITES_EXPAND_Y = *SPRITES_MC -- _deref_pbuc1=_deref_pbuc2
lda SPRITES_MC
sta SPRITES_EXPAND_Y
// [134] *SPRITES_EXPAND_X = *SPRITES_EXPAND_Y -- _deref_pbuc1=_deref_pbuc2
lda SPRITES_EXPAND_Y
sta SPRITES_EXPAND_X
// [135] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1]
__b1_from_sprites_init:
// [135] phi sprites_init::xpos#2 = $18+$f*8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1
lda #$18+$f*8
sta.z xpos
// [135] phi sprites_init::s#2 = 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1
ldy #0
jmp __b1
// [135] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1]
__b1_from___b1:
// [135] phi sprites_init::xpos#2 = sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy
// [135] phi sprites_init::s#2 = sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy
jmp __b1
// sprites_init::@1
__b1:
// [136] sprites_init::s2#0 = sprites_init::s#2 << 1 -- vbuxx=vbuyy_rol_1
tya
asl
tax
// [137] SPRITES_XPOS[sprites_init::s2#0] = sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1
lda.z xpos
sta SPRITES_XPOS,x
// [138] SPRITES_COLOR[sprites_init::s#2] = BLACK -- pbuc1_derefidx_vbuyy=vbuc2
lda #BLACK
sta SPRITES_COLOR,y
// [139] sprites_init::xpos#1 = sprites_init::xpos#2 + $18 -- vbuz1=vbuz1_plus_vbuc1
lax.z xpos
axs #-[$18]
stx.z xpos
// [140] sprites_init::s#1 = ++ sprites_init::s#2 -- vbuyy=_inc_vbuyy
iny
// [141] if(sprites_init::s#1!=4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1
cpy #4
bne __b1_from___b1
jmp __breturn
// sprites_init::@return
__breturn:
// [142] return
rts
}
// sprites_irq_init
// Setup the IRQ
sprites_irq_init: {
// asm { sei }
sei
// [144] *IRQ_STATUS = IRQ_RASTER -- _deref_pbuc1=vbuc2
// Acknowledge any IRQ and setup the next one
lda #IRQ_RASTER
sta IRQ_STATUS
// asm { ldaCIA1_INTERRUPT }
lda CIA1_INTERRUPT
// [146] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2
// Disable kernal & basic
lda #PROCPORT_DDR_MEMORY_MASK
sta PROCPORT_DDR
// [147] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta PROCPORT
// [148] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [149] *VICII_CONTROL = *VICII_CONTROL & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// Set raster line
lda #$7f
and VICII_CONTROL
sta VICII_CONTROL
// [150] *RASTER = IRQ_RASTER_FIRST -- _deref_pbuc1=vbuc2
lda #IRQ_RASTER_FIRST
sta RASTER
// [151] *IRQ_ENABLE = IRQ_RASTER -- _deref_pbuc1=vbuc2
// Enable Raster Interrupt
lda #IRQ_RASTER
sta IRQ_ENABLE
// [152] *HARDWARE_IRQ = &sprites_irq -- _deref_qprc1=pprc2
// Set the IRQ routine
lda #<sprites_irq
sta HARDWARE_IRQ
lda #>sprites_irq
sta HARDWARE_IRQ+1
// asm { cli }
cli
jmp __breturn
// sprites_irq_init::@return
__breturn:
// [154] return
rts
}
// play_init
// Initialize play data tables
play_init: {
.label pli = $c
// Initialize the playfield line pointers;
.label idx = $22
// [156] phi from play_init to play_init::@1 [phi:play_init->play_init::@1]
__b1_from_play_init:
// [156] phi play_init::idx#2 = 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1
lda #0
sta.z idx
// [156] phi play_init::pli#2 = playfield [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1
lda #<playfield
sta.z pli
lda #>playfield
sta.z pli+1
// [156] phi play_init::j#2 = 0 [phi:play_init->play_init::@1#2] -- vbuyy=vbuc1
ldy #0
jmp __b1
// [156] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1]
__b1_from___b1:
// [156] phi play_init::idx#2 = play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy
// [156] phi play_init::pli#2 = play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy
// [156] phi play_init::j#2 = play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy
jmp __b1
// play_init::@1
__b1:
// [157] play_init::$2 = play_init::j#2 << 1 -- vbuxx=vbuyy_rol_1
tya
asl
tax
// [158] playfield_lines[play_init::$2] = play_init::pli#2 -- qbuc1_derefidx_vbuxx=pbuz1
lda.z pli
sta playfield_lines,x
lda.z pli+1
sta playfield_lines+1,x
// [159] playfield_lines_idx[play_init::j#2] = play_init::idx#2 -- pbuc1_derefidx_vbuyy=vbuz1
lda.z idx
sta playfield_lines_idx,y
// [160] play_init::pli#1 = play_init::pli#2 + PLAYFIELD_COLS -- pbuz1=pbuz1_plus_vbuc1
lda #PLAYFIELD_COLS
clc
adc.z pli
sta.z pli
bcc !+
inc.z pli+1
!:
// [161] play_init::idx#1 = play_init::idx#2 + PLAYFIELD_COLS -- vbuz1=vbuz1_plus_vbuc1
lax.z idx
axs #-[PLAYFIELD_COLS]
stx.z idx
// [162] play_init::j#1 = ++ play_init::j#2 -- vbuyy=_inc_vbuyy
iny
// [163] if(play_init::j#1!=PLAYFIELD_LINES-1+1) goto play_init::@1 -- vbuyy_neq_vbuc1_then_la1
cpy #PLAYFIELD_LINES-1+1
bne __b1_from___b1
jmp __b2
// play_init::@2
__b2:
// [164] *(playfield_lines_idx+PLAYFIELD_LINES) = PLAYFIELD_COLS*PLAYFIELD_LINES -- _deref_pbuc1=vbuc2
lda #PLAYFIELD_COLS*PLAYFIELD_LINES
sta playfield_lines_idx+PLAYFIELD_LINES
// [165] current_movedown_slow#0 = *MOVEDOWN_SLOW_SPEEDS -- vbuz1=_deref_pbuc1
// Set initial speed of moving down a tetromino
lda MOVEDOWN_SLOW_SPEEDS
sta.z current_movedown_slow
// [166] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3]
__b3_from___b2:
// [166] phi play_init::b#2 = 0 [phi:play_init::@2->play_init::@3#0] -- vbuxx=vbuc1
ldx #0
jmp __b3
// Set the initial score add values
// [166] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3]
__b3_from___b3:
// [166] phi play_init::b#2 = play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy
jmp __b3
// play_init::@3
__b3:
// [167] play_init::$3 = play_init::b#2 << 2 -- vbuaa=vbuxx_rol_2
txa
asl
asl
// [168] score_add_bcd[play_init::$3] = SCORE_BASE_BCD[play_init::$3] -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa
tay
lda SCORE_BASE_BCD,y
sta score_add_bcd,y
lda SCORE_BASE_BCD+1,y
sta score_add_bcd+1,y
lda SCORE_BASE_BCD+2,y
sta score_add_bcd+2,y
lda SCORE_BASE_BCD+3,y
sta score_add_bcd+3,y
// [169] play_init::b#1 = ++ play_init::b#2 -- vbuxx=_inc_vbuxx
inx
// [170] if(play_init::b#1!=5) goto play_init::@3 -- vbuxx_neq_vbuc1_then_la1
cpx #5
bne __b3_from___b3
jmp __breturn
// play_init::@return
__breturn:
// [171] return
rts
}
// play_spawn_current
// Spawn a new piece
// Moves the next piece into the current and spawns a new next piece
play_spawn_current: {
.label __7 = $2f
// Spawn a new next piece
// Pick a random piece (0-6)
.label piece_idx = $1f
// [173] play_spawn_current::current_piece_idx#0 = next_piece_idx#18 -- vbuxx=vbuz1
// Move next piece into current
ldx.z next_piece_idx
// [174] play_spawn_current::$7 = play_spawn_current::current_piece_idx#0 << 1 -- vbuz1=vbuxx_rol_1
txa
asl
sta.z __7
// [175] current_piece_char#4 = PIECES_CHARS[play_spawn_current::current_piece_idx#0] -- vbuz1=pbuc1_derefidx_vbuxx
lda PIECES_CHARS,x
sta.z current_piece_char
// [176] current_xpos#100 = PIECES_START_X[play_spawn_current::current_piece_idx#0] -- vbuz1=pbuc1_derefidx_vbuxx
lda PIECES_START_X,x
sta.z current_xpos
// [177] current_ypos#5 = PIECES_START_Y[play_spawn_current::current_piece_idx#0] -- vbuz1=pbuc1_derefidx_vbuxx
lda PIECES_START_Y,x
sta.z current_ypos
// [178] play_collision::xpos#4 = current_xpos#100 -- vbuz1=vbuz2
lda.z current_xpos
sta.z play_collision.xpos
// [179] play_collision::ypos#4 = current_ypos#5 -- vbuz1=vbuz2
lda.z current_ypos
sta.z play_collision.ypos
// [180] current_piece#102 = (byte*)PIECES[play_spawn_current::$7] -- pbuz1=qbuc1_derefidx_vbuz2
ldy.z __7
lda PIECES,y
sta.z current_piece_1
lda PIECES+1,y
sta.z current_piece_1+1
// [181] call play_collision
// [386] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision]
play_collision_from_play_spawn_current:
// [386] phi play_collision::xpos#6 = play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy
// [386] phi play_collision::yp#0 = play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy
// [386] phi play_collision::orientation#5 = 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1
ldx #0
// [386] phi current_piece#18 = current_piece#102 [phi:play_spawn_current->play_collision#3] -- register_copy
jsr play_collision
// [182] play_collision::return#10 = play_collision::return#15
jmp __b4
// play_spawn_current::@4
__b4:
// [183] play_spawn_current::$1 = play_collision::return#10
// [184] if(play_spawn_current::$1!=COLLISION_PLAYFIELD) goto play_spawn_current::@5 -- vbuaa_neq_vbuc1_then_la1
cmp #COLLISION_PLAYFIELD
bne __b5_from___b4
// [186] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1]
__b1_from___b4:
// [186] phi game_over#53 = 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1
lda #1
sta.z game_over
jmp __b1
// [185] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5]
__b5_from___b4:
jmp __b5
// play_spawn_current::@5
__b5:
// [186] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1]
__b1_from___b5:
// [186] phi game_over#53 = game_over#66 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy
jmp __b1
// play_spawn_current::@1
__b1:
// [187] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2]
__b2_from___b1:
// [187] phi play_spawn_current::piece_idx#2 = 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1
lda #7
sta.z piece_idx
jmp __b2
// play_spawn_current::@2
__b2:
// [188] if(play_spawn_current::piece_idx#2==7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1
lda #7
cmp.z piece_idx
beq sid_rnd1
jmp __breturn
// play_spawn_current::@return
__breturn:
// [189] return
rts
// play_spawn_current::sid_rnd1
sid_rnd1:
// [190] play_spawn_current::sid_rnd1_return#0 = *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC) -- vbuaa=_deref_pbuc1
lda SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC
jmp __b3
// play_spawn_current::@3
__b3:
// [191] play_spawn_current::piece_idx#1 = play_spawn_current::sid_rnd1_return#0 & 7 -- vbuz1=vbuaa_band_vbuc1
and #7
sta.z piece_idx
// [187] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2]
__b2_from___b3:
// [187] phi play_spawn_current::piece_idx#2 = play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy
jmp __b2
}
// render_playfield
// Render the static playfield on the screen (all pieces already locked into place)
render_playfield: {
.label screen_line = $36
// Do not render the top 2 lines.
.label i = $b
.label c = $23
.label l = $22
// [193] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1]
__b1_from_render_playfield:
// [193] phi render_playfield::i#3 = PLAYFIELD_COLS*2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1
lda #PLAYFIELD_COLS*2
sta.z i
// [193] phi render_playfield::l#2 = 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1
lda #2
sta.z l
jmp __b1
// [193] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1]
__b1_from___b3:
// [193] phi render_playfield::i#3 = render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy
// [193] phi render_playfield::l#2 = render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy
jmp __b1
// render_playfield::@1
__b1:
// [194] render_playfield::$0 = render_screen_render#24 + render_playfield::l#2 -- vbuaa=vbuxx_plus_vbuz1
txa
clc
adc.z l
// [195] render_playfield::$3 = render_playfield::$0 << 1 -- vbuaa=vbuaa_rol_1
asl
// [196] render_playfield::screen_line#0 = screen_lines_1[render_playfield::$3] -- pbuz1=qbuc1_derefidx_vbuaa
tay
lda screen_lines_1,y
sta.z screen_line
lda screen_lines_1+1,y
sta.z screen_line+1
// [197] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2]
__b2_from___b1:
// [197] phi render_playfield::c#2 = 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1
lda #0
sta.z c
// [197] phi render_playfield::screen_line#2 = render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy
// [197] phi render_playfield::i#2 = render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy
jmp __b2
// [197] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2]
__b2_from___b2:
// [197] phi render_playfield::c#2 = render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy
// [197] phi render_playfield::screen_line#2 = render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy
// [197] phi render_playfield::i#2 = render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy
jmp __b2
// render_playfield::@2
__b2:
// [198] *render_playfield::screen_line#2 = playfield[render_playfield::i#2] -- _deref_pbuz1=pbuc1_derefidx_vbuz2
ldy.z i
lda playfield,y
ldy #0
sta (screen_line),y
// [199] render_playfield::screen_line#1 = ++ render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1
inc.z screen_line
bne !+
inc.z screen_line+1
!:
// [200] render_playfield::i#1 = ++ render_playfield::i#2 -- vbuz1=_inc_vbuz1
inc.z i
// [201] render_playfield::c#1 = ++ render_playfield::c#2 -- vbuz1=_inc_vbuz1
inc.z c
// [202] if(render_playfield::c#1!=PLAYFIELD_COLS-1+1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1
lda #PLAYFIELD_COLS-1+1
cmp.z c
bne __b2_from___b2
jmp __b3
// render_playfield::@3
__b3:
// [203] render_playfield::l#1 = ++ render_playfield::l#2 -- vbuz1=_inc_vbuz1
inc.z l
// [204] if(render_playfield::l#1!=PLAYFIELD_LINES-1+1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1
lda #PLAYFIELD_LINES-1+1
cmp.z l
bne __b1_from___b3
jmp __breturn
// render_playfield::@return
__breturn:
// [205] return
rts
}
// render_moving
// Render the current moving piece at position (current_xpos, current_ypos)
// Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this.
render_moving: {
.label ypos = $22
.label screen_line = $30
.label xpos = $10
.label i = $23
.label l = $b
// [207] render_moving::ypos#0 = current_ypos#14 -- vbuz1=vbuxx
stx.z ypos
// [208] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1]
__b1_from_render_moving:
// [208] phi render_moving::l#4 = 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1
lda #0
sta.z l
// [208] phi render_moving::i#3 = 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1
lda #0
sta.z i
// [208] phi render_moving::ypos#2 = render_moving::ypos#0 [phi:render_moving->render_moving::@1#2] -- register_copy
jmp __b1
// [208] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1]
__b1_from___b3:
// [208] phi render_moving::l#4 = render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy
// [208] phi render_moving::i#3 = render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy
// [208] phi render_moving::ypos#2 = render_moving::ypos#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy
jmp __b1
// render_moving::@1
__b1:
// [209] if(render_moving::ypos#2>=1+1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1
lda.z ypos
cmp #1+1
bcs __b2
jmp __b7
// render_moving::@7
__b7:
// [210] render_moving::i#1 = render_moving::i#3 + 4 -- vbuz1=vbuz1_plus_vbuc1
lax.z i
axs #-[4]
stx.z i
// [211] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3]
__b3_from___b5:
__b3_from___b7:
// [211] phi render_moving::i#8 = render_moving::i#2 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy
jmp __b3
// render_moving::@3
__b3:
// [212] render_moving::ypos#1 = ++ render_moving::ypos#2 -- vbuz1=_inc_vbuz1
inc.z ypos
// [213] render_moving::l#1 = ++ render_moving::l#4 -- vbuz1=_inc_vbuz1
inc.z l
// [214] if(render_moving::l#1!=4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1
lda #4
cmp.z l
bne __b1_from___b3
jmp __breturn
// render_moving::@return
__breturn:
// [215] return
rts
// render_moving::@2
__b2:
// [216] render_moving::$1 = render_screen_render#35 + render_moving::ypos#2 -- vbuaa=vbuz1_plus_vbuz2
lda.z render_screen_render_1
clc
adc.z ypos
// [217] render_moving::$6 = render_moving::$1 << 1 -- vbuaa=vbuaa_rol_1
asl
// [218] render_moving::screen_line#0 = screen_lines_1[render_moving::$6] -- pbuz1=qbuc1_derefidx_vbuaa
tay
lda screen_lines_1,y
sta.z screen_line
lda screen_lines_1+1,y
sta.z screen_line+1
// [219] render_moving::xpos#0 = current_xpos#61 -- vbuz1=vbuz2
lda.z current_xpos_1
sta.z xpos
// [220] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4]
__b4_from___b2:
// [220] phi render_moving::c#2 = 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuxx=vbuc1
ldx #0
// [220] phi render_moving::xpos#2 = render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy
// [220] phi render_moving::i#4 = render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy
jmp __b4
// [220] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4]
__b4_from___b5:
// [220] phi render_moving::c#2 = render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy
// [220] phi render_moving::xpos#2 = render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy
// [220] phi render_moving::i#4 = render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy
jmp __b4
// render_moving::@4
__b4:
// [221] render_moving::current_cell#0 = current_piece_gfx#66[render_moving::i#4] -- vbuaa=pbuz1_derefidx_vbuz2
ldy.z i
lda (current_piece_gfx_1),y
// [222] render_moving::i#2 = ++ render_moving::i#4 -- vbuz1=_inc_vbuz1
inc.z i
// [223] if(render_moving::current_cell#0==0) goto render_moving::@5 -- vbuaa_eq_0_then_la1
cmp #0
beq __b5
jmp __b6
// render_moving::@6
__b6:
// [224] render_moving::screen_line#0[render_moving::xpos#2] = current_piece_char#70 -- pbuz1_derefidx_vbuz2=vbuz3
lda.z current_piece_char_1
ldy.z xpos
sta (screen_line),y
jmp __b5
// render_moving::@5
__b5:
// [225] render_moving::xpos#1 = ++ render_moving::xpos#2 -- vbuz1=_inc_vbuz1
inc.z xpos
// [226] render_moving::c#1 = ++ render_moving::c#2 -- vbuxx=_inc_vbuxx
inx
// [227] if(render_moving::c#1!=4) goto render_moving::@4 -- vbuxx_neq_vbuc1_then_la1
cpx #4
bne __b4_from___b5
jmp __b3_from___b5
}
// render_next
// Render the next tetromino in the "next" area
render_next: {
// Find the screen area
.const next_area_offset = $28*$c+$18+4
.label next_piece_char = $32
.label next_piece_gfx = $c
.label screen_next_area = $36
.label l = $10
// [229] if(render_screen_render#16==0) goto render_next::@1 -- vbuxx_eq_0_then_la1
cpx #0
beq __b1_from_render_next
// [231] phi from render_next to render_next::@2 [phi:render_next->render_next::@2]
__b2_from_render_next:
// [231] phi render_next::screen_next_area#11 = PLAYFIELD_SCREEN_2+render_next::next_area_offset [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_2+next_area_offset
sta.z screen_next_area
lda #>PLAYFIELD_SCREEN_2+next_area_offset
sta.z screen_next_area+1
jmp __b2
// [230] phi from render_next to render_next::@1 [phi:render_next->render_next::@1]
__b1_from_render_next:
jmp __b1
// render_next::@1
__b1:
// [231] phi from render_next::@1 to render_next::@2 [phi:render_next::@1->render_next::@2]
__b2_from___b1:
// [231] phi render_next::screen_next_area#11 = PLAYFIELD_SCREEN_1+render_next::next_area_offset [phi:render_next::@1->render_next::@2#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_1+next_area_offset
sta.z screen_next_area
lda #>PLAYFIELD_SCREEN_1+next_area_offset
sta.z screen_next_area+1
jmp __b2
// render_next::@2
__b2:
// [232] render_next::$6 = next_piece_idx#13 << 1 -- vbuxx=vbuyy_rol_1
tya
asl
tax
// [233] render_next::next_piece_char#0 = PIECES_NEXT_CHARS[next_piece_idx#13] -- vbuz1=pbuc1_derefidx_vbuyy
lda PIECES_NEXT_CHARS,y
sta.z next_piece_char
// [234] render_next::next_piece_gfx#8 = (byte*)PIECES[render_next::$6] -- pbuz1=qbuc1_derefidx_vbuxx
lda PIECES,x
sta.z next_piece_gfx
lda PIECES+1,x
sta.z next_piece_gfx+1
// [235] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3]
__b3_from___b2:
// [235] phi render_next::l#7 = 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1
lda #0
sta.z l
// [235] phi render_next::screen_next_area#10 = render_next::screen_next_area#11 [phi:render_next::@2->render_next::@3#1] -- register_copy
// [235] phi render_next::next_piece_gfx#3 = render_next::next_piece_gfx#8 [phi:render_next::@2->render_next::@3#2] -- register_copy
jmp __b3
// [235] phi from render_next::@8 to render_next::@3 [phi:render_next::@8->render_next::@3]
__b3_from___b8:
// [235] phi render_next::l#7 = render_next::l#1 [phi:render_next::@8->render_next::@3#0] -- register_copy
// [235] phi render_next::screen_next_area#10 = render_next::screen_next_area#4 [phi:render_next::@8->render_next::@3#1] -- register_copy
// [235] phi render_next::next_piece_gfx#3 = render_next::next_piece_gfx#1 [phi:render_next::@8->render_next::@3#2] -- register_copy
jmp __b3
// render_next::@3
__b3:
// [236] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4]
__b4_from___b3:
// [236] phi render_next::c#2 = 0 [phi:render_next::@3->render_next::@4#0] -- vbuxx=vbuc1
ldx #0
// [236] phi render_next::screen_next_area#5 = render_next::screen_next_area#10 [phi:render_next::@3->render_next::@4#1] -- register_copy
// [236] phi render_next::next_piece_gfx#2 = render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy
jmp __b4
// [236] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4]
__b4_from___b6:
// [236] phi render_next::c#2 = render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy
// [236] phi render_next::screen_next_area#5 = render_next::screen_next_area#3 [phi:render_next::@6->render_next::@4#1] -- register_copy
// [236] phi render_next::next_piece_gfx#2 = render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy
jmp __b4
// render_next::@4
__b4:
// [237] render_next::cell#0 = *render_next::next_piece_gfx#2 -- vbuaa=_deref_pbuz1
ldy #0
lda (next_piece_gfx),y
// [238] render_next::next_piece_gfx#1 = ++ render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1
inc.z next_piece_gfx
bne !+
inc.z next_piece_gfx+1
!:
// [239] if(render_next::cell#0!=0) goto render_next::@5 -- vbuaa_neq_0_then_la1
cmp #0
bne __b5
jmp __b7
// render_next::@7
__b7:
// [240] *render_next::screen_next_area#5 = 0 -- _deref_pbuz1=vbuc1
lda #0
ldy #0
sta (screen_next_area),y
jmp __b6
// render_next::@6
__b6:
// [241] render_next::screen_next_area#3 = ++ render_next::screen_next_area#5 -- pbuz1=_inc_pbuz1
inc.z screen_next_area
bne !+
inc.z screen_next_area+1
!:
// [242] render_next::c#1 = ++ render_next::c#2 -- vbuxx=_inc_vbuxx
inx
// [243] if(render_next::c#1!=4) goto render_next::@4 -- vbuxx_neq_vbuc1_then_la1
cpx #4
bne __b4_from___b6
jmp __b8
// render_next::@8
__b8:
// [244] render_next::screen_next_area#4 = render_next::screen_next_area#3 + $24 -- pbuz1=pbuz1_plus_vbuc1
lda #$24
clc
adc.z screen_next_area
sta.z screen_next_area
bcc !+
inc.z screen_next_area+1
!:
// [245] render_next::l#1 = ++ render_next::l#7 -- vbuz1=_inc_vbuz1
inc.z l
// [246] if(render_next::l#1!=4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1
lda #4
cmp.z l
bne __b3_from___b8
jmp __breturn
// render_next::@return
__breturn:
// [247] return
rts
// render_next::@5
__b5:
// [248] *render_next::screen_next_area#5 = render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2
lda.z next_piece_char
ldy #0
sta (screen_next_area),y
jmp __b6
}
// render_show
// Update 0xD018 to show the current screen (used for double buffering)
render_show: {
.const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f
.const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f
// [249] if(render_screen_show#17==0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1
lda.z render_screen_show
cmp #0
beq toD0181_from_render_show
// [250] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182]
toD0182_from_render_show:
jmp toD0182
// render_show::toD0182
toD0182:
// [251] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1]
__b1_from_toD0182:
// [251] phi render_show::d018val#3 = render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuaa=vbuc1
lda #toD0182_return
jmp __b1
// render_show::@1
__b1:
// [252] *D018 = render_show::d018val#3 -- _deref_pbuc1=vbuaa
sta D018
// [253] *BG_COLOR1 = PIECES_COLORS_1[level#25] -- _deref_pbuc1=pbuc2_derefidx_vbuz1
ldy.z level
lda PIECES_COLORS_1,y
sta BG_COLOR1
// [254] *BG_COLOR2 = PIECES_COLORS_2[level#25] -- _deref_pbuc1=pbuc2_derefidx_vbuz1
ldy.z level
lda PIECES_COLORS_2,y
sta BG_COLOR2
// [255] render_screen_showing = render_screen_show#17 -- vbuz1=vbuz2
lda.z render_screen_show
sta.z render_screen_showing
jmp __breturn
// render_show::@return
__breturn:
// [256] return
rts
// [257] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181]
toD0181_from_render_show:
jmp toD0181
// render_show::toD0181
toD0181:
// [251] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1]
__b1_from_toD0181:
// [251] phi render_show::d018val#3 = render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuaa=vbuc1
lda #toD0181_return
jmp __b1
}
// keyboard_event_scan
// Scans the entire matrix to determine which keys have been pressed/depressed.
// Generates keyboard events into the event buffer. Events can be read using keyboard_event_get().
// Handles debounce and only generates events when the status of a key changes.
// Also stores current status of modifiers in keyboard_modifiers.
keyboard_event_scan: {
.label row_scan = $33
.label keycode = $23
.label row = $b
// [259] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7]
__b7_from_keyboard_event_scan:
// [259] phi keyboard_events_size#32 = keyboard_events_size#20 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy
// [259] phi keyboard_event_scan::keycode#11 = 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1
lda #0
sta.z keycode
// [259] phi keyboard_event_scan::row#2 = 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1
lda #0
sta.z row
jmp __b7
// [259] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7]
__b7_from___b8:
// [259] phi keyboard_events_size#32 = keyboard_events_size#14 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy
// [259] phi keyboard_event_scan::keycode#11 = keyboard_event_scan::keycode#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy
// [259] phi keyboard_event_scan::row#2 = keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy
jmp __b7
// keyboard_event_scan::@7
__b7:
// [260] keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 -- vbuxx=vbuz1
ldx.z row
// [261] call keyboard_matrix_read
jsr keyboard_matrix_read
// [262] keyboard_matrix_read::return#2 = keyboard_matrix_read::return#0
jmp __b19
// keyboard_event_scan::@19
__b19:
// [263] keyboard_event_scan::row_scan#0 = keyboard_matrix_read::return#2 -- vbuz1=vbuaa
sta.z row_scan
// [264] if(keyboard_event_scan::row_scan#0!=keyboard_scan_values[keyboard_event_scan::row#2]) goto keyboard_event_scan::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1
lda.z row_scan
ldy.z row
cmp keyboard_scan_values,y
bne __b9_from___b19
jmp __b16
// keyboard_event_scan::@16
__b16:
// [265] keyboard_event_scan::keycode#1 = keyboard_event_scan::keycode#11 + 8 -- vbuz1=vbuz1_plus_vbuc1
lax.z keycode
axs #-[8]
stx.z keycode
// [266] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8]
__b8_from___b15:
__b8_from___b16:
// [266] phi keyboard_events_size#14 = keyboard_events_size#31 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy
// [266] phi keyboard_event_scan::keycode#13 = keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy
jmp __b8
// keyboard_event_scan::@8
__b8:
// [267] keyboard_event_scan::row#1 = ++ keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1
inc.z row
// [268] if(keyboard_event_scan::row#1!=8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1
lda #8
cmp.z row
bne __b7_from___b8
// [269] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17]
__b17_from___b8:
jmp __b17
// keyboard_event_scan::@17
__b17:
// [270] call keyboard_event_pressed
// [413] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed]
keyboard_event_pressed_from___b17:
// [413] phi keyboard_event_pressed::keycode#5 = KEY_LSHIFT [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuxx=vbuc1
ldx #KEY_LSHIFT
jsr keyboard_event_pressed
// [271] keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11
jmp __b20
// keyboard_event_scan::@20
__b20:
// [272] keyboard_event_scan::$0 = keyboard_event_pressed::return#0
// [273] if(keyboard_event_scan::$0==0) goto keyboard_event_scan::@1 -- vbuaa_eq_0_then_la1
cmp #0
beq __b1_from___b20
// [274] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18]
__b18_from___b20:
jmp __b18
// keyboard_event_scan::@18
__b18:
// [275] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1]
__b1_from___b18:
__b1_from___b20:
jmp __b1
// keyboard_event_scan::@1
__b1:
// [276] call keyboard_event_pressed
// [413] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed]
keyboard_event_pressed_from___b1:
// [413] phi keyboard_event_pressed::keycode#5 = KEY_RSHIFT [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuxx=vbuc1
ldx #KEY_RSHIFT
jsr keyboard_event_pressed
// [277] keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11
jmp __b21
// keyboard_event_scan::@21
__b21:
// [278] keyboard_event_scan::$3 = keyboard_event_pressed::return#1
// [279] if(keyboard_event_scan::$3==0) goto keyboard_event_scan::@2 -- vbuaa_eq_0_then_la1
cmp #0
beq __b2_from___b21
// [280] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4]
__b4_from___b21:
jmp __b4
// keyboard_event_scan::@4
__b4:
// [281] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2]
__b2_from___b21:
__b2_from___b4:
jmp __b2
// keyboard_event_scan::@2
__b2:
// [282] call keyboard_event_pressed
// [413] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed]
keyboard_event_pressed_from___b2:
// [413] phi keyboard_event_pressed::keycode#5 = KEY_CTRL [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuxx=vbuc1
ldx #KEY_CTRL
jsr keyboard_event_pressed
// [283] keyboard_event_pressed::return#2 = keyboard_event_pressed::return#11
jmp __b22
// keyboard_event_scan::@22
__b22:
// [284] keyboard_event_scan::$6 = keyboard_event_pressed::return#2
// [285] if(keyboard_event_scan::$6==0) goto keyboard_event_scan::@3 -- vbuaa_eq_0_then_la1
cmp #0
beq __b3_from___b22
// [286] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5]
__b5_from___b22:
jmp __b5
// keyboard_event_scan::@5
__b5:
// [287] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3]
__b3_from___b22:
__b3_from___b5:
jmp __b3
// keyboard_event_scan::@3
__b3:
// [288] call keyboard_event_pressed
// [413] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed]
keyboard_event_pressed_from___b3:
// [413] phi keyboard_event_pressed::keycode#5 = KEY_COMMODORE [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuxx=vbuc1
ldx #KEY_COMMODORE
jsr keyboard_event_pressed
// [289] keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11
jmp __b23
// keyboard_event_scan::@23
__b23:
// [290] keyboard_event_scan::$9 = keyboard_event_pressed::return#10
// [291] if(keyboard_event_scan::$9==0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1
cmp #0
beq __breturn
// [292] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6]
__b6_from___b23:
jmp __b6
// keyboard_event_scan::@6
__b6:
jmp __breturn
// keyboard_event_scan::@return
__breturn:
// [293] return
rts
// Something has changed on the keyboard row - check each column
// [294] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9]
__b9_from___b10:
// [294] phi keyboard_events_size#11 = keyboard_events_size#31 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy
// [294] phi keyboard_event_scan::keycode#10 = keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy
// [294] phi keyboard_event_scan::col#2 = keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy
jmp __b9
// [294] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9]
__b9_from___b19:
// [294] phi keyboard_events_size#11 = keyboard_events_size#32 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy
// [294] phi keyboard_event_scan::keycode#10 = keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy
// [294] phi keyboard_event_scan::col#2 = 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuxx=vbuc1
ldx #0
jmp __b9
// keyboard_event_scan::@9
__b9:
// [295] keyboard_event_scan::$15 = keyboard_event_scan::row_scan#0 ^ keyboard_scan_values[keyboard_event_scan::row#2] -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2
lda.z row_scan
ldy.z row
eor keyboard_scan_values,y
// [296] keyboard_event_scan::$16 = keyboard_event_scan::$15 & keyboard_matrix_col_bitmask[keyboard_event_scan::col#2] -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx
and keyboard_matrix_col_bitmask,x
// [297] if(keyboard_event_scan::$16==0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1
cmp #0
beq __b10_from___b9
jmp __b12
// keyboard_event_scan::@12
__b12:
// [298] if(keyboard_events_size#11==8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1
lda #8
cmp.z keyboard_events_size
beq __b10_from___b12
jmp __b13
// keyboard_event_scan::@13
__b13:
// [299] keyboard_event_scan::event_type#0 = keyboard_event_scan::row_scan#0 & keyboard_matrix_col_bitmask[keyboard_event_scan::col#2] -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx
lda keyboard_matrix_col_bitmask,x
and.z row_scan
// [300] if(keyboard_event_scan::event_type#0==0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1
cmp #0
beq __b11
jmp __b14
// keyboard_event_scan::@14
__b14:
// [301] keyboard_events[keyboard_events_size#11] = keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2
// Key pressed
lda.z keycode
ldy.z keyboard_events_size
sta keyboard_events,y
// [302] keyboard_events_size#1 = ++ keyboard_events_size#11 -- vbuz1=_inc_vbuz1
inc.z keyboard_events_size
// [303] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10]
__b10_from___b11:
__b10_from___b12:
__b10_from___b14:
__b10_from___b9:
// [303] phi keyboard_events_size#31 = keyboard_events_size#0 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy
jmp __b10
// keyboard_event_scan::@10
__b10:
// [304] keyboard_event_scan::keycode#14 = ++ keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1
inc.z keycode
// [305] keyboard_event_scan::col#1 = ++ keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx
inx
// [306] if(keyboard_event_scan::col#1!=8) goto keyboard_event_scan::@9 -- vbuxx_neq_vbuc1_then_la1
cpx #8
bne __b9_from___b10
jmp __b15
// keyboard_event_scan::@15
__b15:
// [307] keyboard_scan_values[keyboard_event_scan::row#2] = keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2
// Store the current keyboard status for the row to debounce
lda.z row_scan
ldy.z row
sta keyboard_scan_values,y
jmp __b8_from___b15
// keyboard_event_scan::@11
__b11:
// [308] keyboard_event_scan::$23 = keyboard_event_scan::keycode#10 | $40 -- vbuaa=vbuz1_bor_vbuc1
lda #$40
ora.z keycode
// [309] keyboard_events[keyboard_events_size#11] = keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuaa
// Key released
ldy.z keyboard_events_size
sta keyboard_events,y
// [310] keyboard_events_size#0 = ++ keyboard_events_size#11 -- vbuz1=_inc_vbuz1
inc.z keyboard_events_size
jmp __b10_from___b11
}
// keyboard_event_get
// Get the next event from the keyboard event buffer.
// Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process.
// The buffer is filled by keyboard_event_scan()
keyboard_event_get: {
// [311] if(keyboard_events_size#14==0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1
lda.z keyboard_events_size
cmp #0
beq __breturn_from_keyboard_event_get
jmp __b1
// keyboard_event_get::@1
__b1:
// [312] keyboard_events_size#3 = -- keyboard_events_size#14 -- vbuz1=_dec_vbuz1
dec.z keyboard_events_size
// [313] keyboard_event_get::return#1 = keyboard_events[keyboard_events_size#3] -- vbuaa=pbuc1_derefidx_vbuz1
ldy.z keyboard_events_size
lda keyboard_events,y
// [314] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return]
__breturn_from___b1:
// [314] phi keyboard_events_size#17 = keyboard_events_size#3 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy
// [314] phi keyboard_event_get::return#2 = keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy
jmp __breturn
// [314] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return]
__breturn_from_keyboard_event_get:
// [314] phi keyboard_events_size#17 = keyboard_events_size#14 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy
// [314] phi keyboard_event_get::return#2 = $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1
lda #$ff
jmp __breturn
// keyboard_event_get::@return
__breturn:
// [315] return
rts
}
// play_movement
// Perform any movement of the current piece
// key_event is the next keyboard_event() og 0xff if no keyboard event is pending
// Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed)
// play_movement(byte zp($2e) key_event)
play_movement: {
.label render = $b
.label return = $b
.label key_event = $2e
// [316] play_move_down::key_event#0 = play_movement::key_event#0 -- vbuaa=vbuz1
lda.z key_event
// [317] call play_move_down
jsr play_move_down
// [318] play_move_down::return#0 = play_move_down::return#3 -- vbuaa=vbuxx
txa
jmp __b2
// play_movement::@2
__b2:
// [319] play_movement::render#1 = play_move_down::return#0 -- vbuz1=vbuaa
sta.z render
// [320] if(game_over#16==0) goto play_movement::@1 -- vbuz1_eq_0_then_la1
lda.z game_over
cmp #0
beq __b1
// [321] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return]
__breturn_from___b2:
__breturn_from___b4:
// [321] phi current_xpos#2 = current_xpos#23 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy
// [321] phi current_piece_gfx#19 = current_piece_gfx#21 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy
// [321] phi current_orientation#18 = current_orientation#21 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy
// [321] phi play_movement::return#2 = play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy
jmp __breturn
// play_movement::@return
__breturn:
// [322] return
rts
// play_movement::@1
__b1:
// [323] play_move_leftright::key_event#0 = play_movement::key_event#0 -- vbuaa=vbuz1
lda.z key_event
// [324] call play_move_leftright
jsr play_move_leftright
// [325] play_move_leftright::return#0 = play_move_leftright::return#2
jmp __b3
// play_movement::@3
__b3:
// [326] play_movement::$3 = play_move_leftright::return#0
// [327] play_movement::render#2 = play_movement::render#1 + play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa
clc
adc.z render
sta.z render
// [328] play_move_rotate::key_event#0 = play_movement::key_event#0 -- vbuaa=vbuz1
lda.z key_event
// [329] call play_move_rotate
jsr play_move_rotate
// [330] play_move_rotate::return#0 = play_move_rotate::return#2
jmp __b4
// play_movement::@4
__b4:
// [331] play_movement::$4 = play_move_rotate::return#0
// [332] play_movement::return#0 = play_movement::render#2 + play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa
clc
adc.z return
sta.z return
jmp __breturn_from___b4
}
// render_score
// Show the current score
render_score: {
.const score_offset = $28*5+$1c
.const lines_offset = $28*1+$16
.const level_offset = $28*$13+$1f
.label score_bytes = score_bcd
.label screen = $c
// [333] if(render_screen_render#19==0) goto render_score::@1 -- vbuz1_eq_0_then_la1
lda.z render_screen_render
cmp #0
beq __b1_from_render_score
// [335] phi from render_score to render_score::@2 [phi:render_score->render_score::@2]
__b2_from_render_score:
// [335] phi render_score::screen#3 = PLAYFIELD_SCREEN_2 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_2
sta.z screen
lda #>PLAYFIELD_SCREEN_2
sta.z screen+1
jmp __b2
// [334] phi from render_score to render_score::@1 [phi:render_score->render_score::@1]
__b1_from_render_score:
jmp __b1
// render_score::@1
__b1:
// [335] phi from render_score::@1 to render_score::@2 [phi:render_score::@1->render_score::@2]
__b2_from___b1:
// [335] phi render_score::screen#3 = PLAYFIELD_SCREEN_1 [phi:render_score::@1->render_score::@2#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_1
sta.z screen
lda #>PLAYFIELD_SCREEN_1
sta.z screen+1
jmp __b2
// render_score::@2
__b2:
// [336] render_bcd::screen#0 = render_score::screen#3
// [337] render_bcd::bcd#0 = *(render_score::score_bytes+2) -- vbuxx=_deref_pbuc1
ldx score_bytes+2
// [338] call render_bcd
// [499] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd]
render_bcd_from___b2:
// [499] phi render_bcd::bcd#6 = render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy
// [499] phi render_bcd::only_low#6 = 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1
ldy #0
// [499] phi render_bcd::offset#6 = render_score::score_offset [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1
lda #<score_offset
sta.z render_bcd.offset
lda #>score_offset
sta.z render_bcd.offset+1
// [499] phi render_bcd::screen#6 = render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy
jsr render_bcd
jmp __b3
// render_score::@3
__b3:
// [339] render_bcd::screen#1 = render_score::screen#3
// [340] render_bcd::bcd#1 = *(render_score::score_bytes+1) -- vbuxx=_deref_pbuc1
ldx score_bytes+1
// [341] call render_bcd
// [499] phi from render_score::@3 to render_bcd [phi:render_score::@3->render_bcd]
render_bcd_from___b3:
// [499] phi render_bcd::bcd#6 = render_bcd::bcd#1 [phi:render_score::@3->render_bcd#0] -- register_copy
// [499] phi render_bcd::only_low#6 = 0 [phi:render_score::@3->render_bcd#1] -- vbuyy=vbuc1
ldy #0
// [499] phi render_bcd::offset#6 = render_score::score_offset+2 [phi:render_score::@3->render_bcd#2] -- vwuz1=vwuc1
lda #<score_offset+2
sta.z render_bcd.offset
lda #>score_offset+2
sta.z render_bcd.offset+1
// [499] phi render_bcd::screen#6 = render_bcd::screen#1 [phi:render_score::@3->render_bcd#3] -- register_copy
jsr render_bcd
jmp __b4
// render_score::@4
__b4:
// [342] render_bcd::screen#2 = render_score::screen#3
// [343] render_bcd::bcd#2 = *render_score::score_bytes -- vbuxx=_deref_pbuc1
ldx.z score_bytes
// [344] call render_bcd
// [499] phi from render_score::@4 to render_bcd [phi:render_score::@4->render_bcd]
render_bcd_from___b4:
// [499] phi render_bcd::bcd#6 = render_bcd::bcd#2 [phi:render_score::@4->render_bcd#0] -- register_copy
// [499] phi render_bcd::only_low#6 = 0 [phi:render_score::@4->render_bcd#1] -- vbuyy=vbuc1
ldy #0
// [499] phi render_bcd::offset#6 = render_score::score_offset+4 [phi:render_score::@4->render_bcd#2] -- vwuz1=vwuc1
lda #<score_offset+4
sta.z render_bcd.offset
lda #>score_offset+4
sta.z render_bcd.offset+1
// [499] phi render_bcd::screen#6 = render_bcd::screen#2 [phi:render_score::@4->render_bcd#3] -- register_copy
jsr render_bcd
jmp __b5
// render_score::@5
__b5:
// [345] render_bcd::bcd#3 = > lines_bcd#16 -- vbuxx=_hi_vwuz1
ldx.z lines_bcd+1
// [346] render_bcd::screen#3 = render_score::screen#3
// [347] call render_bcd
// [499] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd]
render_bcd_from___b5:
// [499] phi render_bcd::bcd#6 = render_bcd::bcd#3 [phi:render_score::@5->render_bcd#0] -- register_copy
// [499] phi render_bcd::only_low#6 = 1 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1
ldy #1
// [499] phi render_bcd::offset#6 = render_score::lines_offset [phi:render_score::@5->render_bcd#2] -- vwuz1=vwuc1
lda #<lines_offset
sta.z render_bcd.offset
lda #>lines_offset
sta.z render_bcd.offset+1
// [499] phi render_bcd::screen#6 = render_bcd::screen#3 [phi:render_score::@5->render_bcd#3] -- register_copy
jsr render_bcd
jmp __b6
// render_score::@6
__b6:
// [348] render_bcd::bcd#4 = < lines_bcd#16 -- vbuxx=_lo_vwuz1
ldx.z lines_bcd
// [349] render_bcd::screen#4 = render_score::screen#3
// [350] call render_bcd
// [499] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd]
render_bcd_from___b6:
// [499] phi render_bcd::bcd#6 = render_bcd::bcd#4 [phi:render_score::@6->render_bcd#0] -- register_copy
// [499] phi render_bcd::only_low#6 = 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1
ldy #0
// [499] phi render_bcd::offset#6 = render_score::lines_offset+1 [phi:render_score::@6->render_bcd#2] -- vwuz1=vwuc1
lda #<lines_offset+1
sta.z render_bcd.offset
lda #>lines_offset+1
sta.z render_bcd.offset+1
// [499] phi render_bcd::screen#6 = render_bcd::screen#4 [phi:render_score::@6->render_bcd#3] -- register_copy
jsr render_bcd
jmp __b7
// render_score::@7
__b7:
// [351] render_bcd::screen#5 = render_score::screen#3
// [352] render_bcd::bcd#5 = level_bcd#18 -- vbuxx=vbuz1
ldx.z level_bcd
// [353] call render_bcd
// [499] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd]
render_bcd_from___b7:
// [499] phi render_bcd::bcd#6 = render_bcd::bcd#5 [phi:render_score::@7->render_bcd#0] -- register_copy
// [499] phi render_bcd::only_low#6 = 0 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1
ldy #0
// [499] phi render_bcd::offset#6 = render_score::level_offset [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1
lda #<level_offset
sta.z render_bcd.offset
lda #>level_offset
sta.z render_bcd.offset+1
// [499] phi render_bcd::screen#6 = render_bcd::screen#5 [phi:render_score::@7->render_bcd#3] -- register_copy
jsr render_bcd
jmp __breturn
// render_score::@return
__breturn:
// [354] return
rts
}
// render_screen_swap
// Swap rendering to the other screen (used for double buffering)
render_screen_swap: {
// [355] render_screen_render#12 = render_screen_render#19 ^ $20 -- vbuz1=vbuz1_bxor_vbuc1
lda #$20
eor.z render_screen_render
sta.z render_screen_render
// [356] render_screen_show#14 = render_screen_show#17 ^ $20 -- vbuz1=vbuz1_bxor_vbuc1
lda #$20
eor.z render_screen_show
sta.z render_screen_show
jmp __breturn
// render_screen_swap::@return
__breturn:
// [357] return
rts
}
// render_screen_original
// Copy the original screen data to the passed screen
// Also copies colors to 0xd800
// render_screen_original(byte* zp($30) screen)
render_screen_original: {
.const SPACE = 0
.label screen = $30
.label cols = $34
.label oscr = $36
.label ocols = $20
.label y = $23
// [359] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1]
__b1_from_render_screen_original:
// [359] phi render_screen_original::y#6 = 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1
lda #0
sta.z y
// [359] phi render_screen_original::ocols#4 = PLAYFIELD_COLORS_ORIGINAL+$20*2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1
lda #<PLAYFIELD_COLORS_ORIGINAL+$20*2
sta.z ocols
lda #>PLAYFIELD_COLORS_ORIGINAL+$20*2
sta.z ocols+1
// [359] phi render_screen_original::oscr#4 = PLAYFIELD_SCREEN_ORIGINAL+$20*2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_ORIGINAL+$20*2
sta.z oscr
lda #>PLAYFIELD_SCREEN_ORIGINAL+$20*2
sta.z oscr+1
// [359] phi render_screen_original::cols#7 = COLS [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1
lda #<COLS
sta.z cols
lda #>COLS
sta.z cols+1
// [359] phi render_screen_original::screen#8 = render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy
jmp __b1
// [359] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1]
__b1_from___b5:
// [359] phi render_screen_original::y#6 = render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy
// [359] phi render_screen_original::ocols#4 = render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy
// [359] phi render_screen_original::oscr#4 = render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy
// [359] phi render_screen_original::cols#7 = render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy
// [359] phi render_screen_original::screen#8 = render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy
jmp __b1
// render_screen_original::@1
__b1:
// [360] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2]
__b2_from___b1:
// [360] phi render_screen_original::x#4 = 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1
ldx #0
// [360] phi render_screen_original::cols#4 = render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy
// [360] phi render_screen_original::screen#5 = render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy
jmp __b2
// [360] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2]
__b2_from___b2:
// [360] phi render_screen_original::x#4 = render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy
// [360] phi render_screen_original::cols#4 = render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy
// [360] phi render_screen_original::screen#5 = render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy
jmp __b2
// render_screen_original::@2
__b2:
// [361] *render_screen_original::screen#5 = render_screen_original::SPACE -- _deref_pbuz1=vbuc1
lda #SPACE
ldy #0
sta (screen),y
// [362] render_screen_original::screen#2 = ++ render_screen_original::screen#5 -- pbuz1=_inc_pbuz1
inc.z screen
bne !+
inc.z screen+1
!:
// [363] *render_screen_original::cols#4 = BLACK -- _deref_pbuz1=vbuc1
lda #BLACK
ldy #0
sta (cols),y
// [364] render_screen_original::cols#1 = ++ render_screen_original::cols#4 -- pbuz1=_inc_pbuz1
inc.z cols
bne !+
inc.z cols+1
!:
// [365] render_screen_original::x#1 = ++ render_screen_original::x#4 -- vbuxx=_inc_vbuxx
inx
// [366] if(render_screen_original::x#1!=4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1
cpx #4
bne __b2_from___b2
// [367] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3]
__b3_from___b2:
__b3_from___b3:
// [367] phi render_screen_original::x#5 = render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy
// [367] phi render_screen_original::cols#5 = render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy
// [367] phi render_screen_original::ocols#2 = render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy
// [367] phi render_screen_original::screen#6 = render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy
// [367] phi render_screen_original::oscr#2 = render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy
jmp __b3
// render_screen_original::@3
__b3:
// [368] *render_screen_original::screen#6 = *render_screen_original::oscr#2 -- _deref_pbuz1=_deref_pbuz2
ldy #0
lda (oscr),y
ldy #0
sta (screen),y
// [369] render_screen_original::screen#3 = ++ render_screen_original::screen#6 -- pbuz1=_inc_pbuz1
inc.z screen
bne !+
inc.z screen+1
!:
// [370] render_screen_original::oscr#1 = ++ render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1
inc.z oscr
bne !+
inc.z oscr+1
!:
// [371] *render_screen_original::cols#5 = *render_screen_original::ocols#2 -- _deref_pbuz1=_deref_pbuz2
ldy #0
lda (ocols),y
ldy #0
sta (cols),y
// [372] render_screen_original::cols#2 = ++ render_screen_original::cols#5 -- pbuz1=_inc_pbuz1
inc.z cols
bne !+
inc.z cols+1
!:
// [373] render_screen_original::ocols#1 = ++ render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1
inc.z ocols
bne !+
inc.z ocols+1
!:
// [374] render_screen_original::x#2 = ++ render_screen_original::x#5 -- vbuxx=_inc_vbuxx
inx
// [375] if(render_screen_original::x#2!=$24) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1
cpx #$24
bne __b3_from___b3
// [376] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4]
__b4_from___b3:
__b4_from___b4:
// [376] phi render_screen_original::x#6 = render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy
// [376] phi render_screen_original::cols#6 = render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy
// [376] phi render_screen_original::screen#7 = render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy
jmp __b4
// render_screen_original::@4
__b4:
// [377] *render_screen_original::screen#7 = render_screen_original::SPACE -- _deref_pbuz1=vbuc1
lda #SPACE
ldy #0
sta (screen),y
// [378] render_screen_original::screen#10 = ++ render_screen_original::screen#7 -- pbuz1=_inc_pbuz1
inc.z screen
bne !+
inc.z screen+1
!:
// [379] *render_screen_original::cols#6 = BLACK -- _deref_pbuz1=vbuc1
lda #BLACK
ldy #0
sta (cols),y
// [380] render_screen_original::cols#3 = ++ render_screen_original::cols#6 -- pbuz1=_inc_pbuz1
inc.z cols
bne !+
inc.z cols+1
!:
// [381] render_screen_original::x#3 = ++ render_screen_original::x#6 -- vbuxx=_inc_vbuxx
inx
// [382] if(render_screen_original::x#3!=$28) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1
cpx #$28
bne __b4_from___b4
jmp __b5
// render_screen_original::@5
__b5:
// [383] render_screen_original::y#1 = ++ render_screen_original::y#6 -- vbuz1=_inc_vbuz1
inc.z y
// [384] if(render_screen_original::y#1!=$19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1
lda #$19
cmp.z y
bne __b1_from___b5
jmp __breturn
// render_screen_original::@return
__breturn:
// [385] return
rts
}
// play_collision
// Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries
// Returns information about the type of the collision detected
// play_collision(byte zp($10) xpos, byte zp($32) ypos, byte register(X) orientation)
play_collision: {
.label xpos = $10
.label ypos = $32
.label piece_gfx = $34
.label yp = $32
.label playfield_line = $36
.label i = $38
.label xp = $22
.label l = $33
.label i_1 = $39
// [387] play_collision::piece_gfx#0 = current_piece#18 + play_collision::orientation#5 -- pbuz1=pbuz2_plus_vbuxx
txa
clc
adc.z current_piece_1
sta.z piece_gfx
lda #0
adc.z current_piece_1+1
sta.z piece_gfx+1
// [388] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1]
__b1_from_play_collision:
// [388] phi play_collision::l#6 = 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1
lda #0
sta.z l
// [388] phi play_collision::i#3 = 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1
lda #0
sta.z i_1
// [388] phi play_collision::yp#2 = play_collision::yp#0 [phi:play_collision->play_collision::@1#2] -- register_copy
jmp __b1
// play_collision::@1
__b1:
// [389] play_collision::$14 = play_collision::yp#2 << 1 -- vbuaa=vbuz1_rol_1
lda.z yp
asl
// [390] play_collision::playfield_line#0 = playfield_lines[play_collision::$14] -- pbuz1=qbuc1_derefidx_vbuaa
tay
lda playfield_lines,y
sta.z playfield_line
lda playfield_lines+1,y
sta.z playfield_line+1
// [391] play_collision::xp#8 = play_collision::xpos#6 -- vbuz1=vbuz2
lda.z xpos
sta.z xp
// [392] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2]
__b2_from___b1:
// [392] phi play_collision::c#2 = 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1
ldx #0
// [392] phi play_collision::xp#2 = play_collision::xp#8 [phi:play_collision::@1->play_collision::@2#1] -- register_copy
// [392] phi play_collision::i#2 = play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy
jmp __b2
// play_collision::@2
__b2:
// [393] play_collision::i#1 = ++ play_collision::i#2 -- vbuz1=_inc_vbuz2
ldy.z i_1
iny
sty.z i
// [394] if(play_collision::piece_gfx#0[play_collision::i#2]==0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1
ldy.z i_1
lda (piece_gfx),y
cmp #0
beq __b3
jmp __b7
// play_collision::@7
__b7:
// [395] if(play_collision::yp#2<PLAYFIELD_LINES) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1
lda.z yp
cmp #PLAYFIELD_LINES
bcc __b4
// [400] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return]
__breturn_from___b7:
// [400] phi play_collision::return#15 = COLLISION_BOTTOM [phi:play_collision::@7->play_collision::@return#0] -- vbuaa=vbuc1
lda #COLLISION_BOTTOM
jmp __breturn
// play_collision::@4
__b4:
// [396] play_collision::$5 = play_collision::xp#2 & $80 -- vbuaa=vbuz1_band_vbuc1
lda #$80
and.z xp
// [397] if(play_collision::$5==0) goto play_collision::@5 -- vbuaa_eq_0_then_la1
cmp #0
beq __b5
// [400] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return]
__breturn_from___b4:
// [400] phi play_collision::return#15 = COLLISION_LEFT [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1
lda #COLLISION_LEFT
jmp __breturn
// play_collision::@5
__b5:
// [398] if(play_collision::xp#2<PLAYFIELD_COLS) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1
lda.z xp
cmp #PLAYFIELD_COLS
bcc __b6
// [400] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return]
__breturn_from___b5:
// [400] phi play_collision::return#15 = COLLISION_RIGHT [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1
lda #COLLISION_RIGHT
jmp __breturn
// play_collision::@6
__b6:
// [399] if(play_collision::playfield_line#0[play_collision::xp#2]==0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1
ldy.z xp
lda (playfield_line),y
cmp #0
beq __b3
// [400] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return]
__breturn_from___b6:
// [400] phi play_collision::return#15 = COLLISION_PLAYFIELD [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1
lda #COLLISION_PLAYFIELD
jmp __breturn
// play_collision::@return
__breturn:
// [401] return
rts
// play_collision::@3
__b3:
// [402] play_collision::xp#1 = ++ play_collision::xp#2 -- vbuz1=_inc_vbuz1
inc.z xp
// [403] play_collision::c#1 = ++ play_collision::c#2 -- vbuxx=_inc_vbuxx
inx
// [404] if(play_collision::c#1!=4) goto play_collision::@10 -- vbuxx_neq_vbuc1_then_la1
cpx #4
bne __b10
jmp __b8
// play_collision::@8
__b8:
// [405] play_collision::yp#1 = ++ play_collision::yp#2 -- vbuz1=_inc_vbuz1
inc.z yp
// [406] play_collision::l#1 = ++ play_collision::l#6 -- vbuz1=_inc_vbuz1
inc.z l
// [407] if(play_collision::l#1!=4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1
lda #4
cmp.z l
bne __b9
// [400] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return]
__breturn_from___b8:
// [400] phi play_collision::return#15 = COLLISION_NONE [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1
lda #COLLISION_NONE
jmp __breturn
// play_collision::@9
__b9:
// [408] play_collision::i#10 = play_collision::i#1 -- vbuz1=vbuz2
lda.z i
sta.z i_1
// [388] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1]
__b1_from___b9:
// [388] phi play_collision::l#6 = play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy
// [388] phi play_collision::i#3 = play_collision::i#10 [phi:play_collision::@9->play_collision::@1#1] -- register_copy
// [388] phi play_collision::yp#2 = play_collision::yp#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy
jmp __b1
// play_collision::@10
__b10:
// [409] play_collision::i#12 = play_collision::i#1 -- vbuz1=vbuz2
lda.z i
sta.z i_1
// [392] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2]
__b2_from___b10:
// [392] phi play_collision::c#2 = play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy
// [392] phi play_collision::xp#2 = play_collision::xp#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy
// [392] phi play_collision::i#2 = play_collision::i#12 [phi:play_collision::@10->play_collision::@2#2] -- register_copy
jmp __b2
}
// keyboard_matrix_read
// Read a single row of the keyboard matrix
// The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs.
// Returns the keys pressed on the row as bits according to the C64 key matrix.
// Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write
// leading to erroneous readings. You must disable the normal interrupt or sei/cli around calls to the keyboard matrix reader.
// keyboard_matrix_read(byte register(X) rowid)
keyboard_matrix_read: {
// [410] *((byte*)CIA1) = keyboard_matrix_row_bitmask[keyboard_matrix_read::rowid#0] -- _deref_pbuc1=pbuc2_derefidx_vbuxx
lda keyboard_matrix_row_bitmask,x
sta CIA1
// [411] keyboard_matrix_read::return#0 = ~ *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_B) -- vbuaa=_bnot__deref_pbuc1
lda CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_B
eor #$ff
jmp __breturn
// keyboard_matrix_read::@return
__breturn:
// [412] return
rts
}
// keyboard_event_pressed
// Determine if a specific key is currently pressed based on the last keyboard_event_scan()
// Returns 0 is not pressed and non-0 if pressed
// keyboard_event_pressed(byte register(X) keycode)
keyboard_event_pressed: {
// [414] keyboard_event_pressed::$0 = keyboard_event_pressed::keycode#5 >> 3 -- vbuyy=vbuxx_ror_3
txa
lsr
lsr
lsr
tay
// [415] keyboard_event_pressed::row_bits#0 = keyboard_scan_values[keyboard_event_pressed::$0] -- vbuyy=pbuc1_derefidx_vbuyy
lda keyboard_scan_values,y
tay
// [416] keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#5 & 7 -- vbuxx=vbuxx_band_vbuc1
lda #7
axs #0
// [417] keyboard_event_pressed::return#11 = keyboard_event_pressed::row_bits#0 & keyboard_matrix_col_bitmask[keyboard_event_pressed::$1] -- vbuaa=vbuyy_band_pbuc1_derefidx_vbuxx
tya
and keyboard_matrix_col_bitmask,x
jmp __breturn
// keyboard_event_pressed::@return
__breturn:
// [418] return
rts
}
// play_move_down
// Move down the current piece
// Return non-zero if a render is needed
// play_move_down(byte register(A) key_event)
play_move_down: {
.label movedown = $10
// [419] current_movedown_counter#13 = ++ current_movedown_counter#17 -- vbuz1=_inc_vbuz1
inc.z current_movedown_counter
// [420] if(play_move_down::key_event#0!=KEY_SPACE) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1
cmp #KEY_SPACE
bne __b1_from_play_move_down
// [421] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4]
__b4_from_play_move_down:
jmp __b4
// play_move_down::@4
__b4:
// [422] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1]
__b1_from___b4:
// [422] phi play_move_down::movedown#10 = 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuz1=vbuc1
lda #1
sta.z movedown
jmp __b1
// [422] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1]
__b1_from_play_move_down:
// [422] phi play_move_down::movedown#10 = 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1
lda #0
sta.z movedown
jmp __b1
// play_move_down::@1
__b1:
// [423] call keyboard_event_pressed
// [413] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed]
keyboard_event_pressed_from___b1:
// [413] phi keyboard_event_pressed::keycode#5 = KEY_SPACE [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuxx=vbuc1
ldx #KEY_SPACE
jsr keyboard_event_pressed
// [424] keyboard_event_pressed::return#12 = keyboard_event_pressed::return#11
jmp __b12
// play_move_down::@12
__b12:
// [425] play_move_down::$2 = keyboard_event_pressed::return#12
// [426] if(play_move_down::$2==0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1
cmp #0
beq __b2_from___b12
jmp __b5
// play_move_down::@5
__b5:
// [427] if(current_movedown_counter#13<current_movedown_fast) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1
lda.z current_movedown_counter
cmp #current_movedown_fast
bcc __b2_from___b5
jmp __b6
// play_move_down::@6
__b6:
// [428] play_move_down::movedown#2 = ++ play_move_down::movedown#10 -- vbuz1=_inc_vbuz1
inc.z movedown
// [429] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2]
__b2_from___b12:
__b2_from___b5:
__b2_from___b6:
// [429] phi play_move_down::movedown#7 = play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy
jmp __b2
// play_move_down::@2
__b2:
// [430] if(current_movedown_counter#13<current_movedown_slow#13) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1
lda.z current_movedown_counter
cmp.z current_movedown_slow
bcc __b3_from___b2
jmp __b7
// play_move_down::@7
__b7:
// [431] play_move_down::movedown#3 = ++ play_move_down::movedown#7 -- vbuz1=_inc_vbuz1
inc.z movedown
// [432] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3]
__b3_from___b2:
__b3_from___b7:
// [432] phi play_move_down::movedown#6 = play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy
jmp __b3
// play_move_down::@3
__b3:
// [433] if(play_move_down::movedown#6==0) goto play_move_down::@return -- vbuz1_eq_0_then_la1
lda.z movedown
cmp #0
beq __breturn_from___b3
jmp __b8
// play_move_down::@8
__b8:
// [434] play_collision::ypos#0 = current_ypos#10 + 1 -- vbuz1=vbuz2_plus_1
ldy.z current_ypos
iny
sty.z play_collision.ypos
// [435] play_collision::xpos#0 = current_xpos#13 -- vbuz1=vbuz2
lda.z current_xpos
sta.z play_collision.xpos
// [436] play_collision::orientation#0 = current_orientation#12 -- vbuxx=vbuz1
ldx.z current_orientation
// [437] current_piece#98 = current_piece#23 -- pbuz1=pbuz2
lda.z current_piece
sta.z current_piece_1
lda.z current_piece+1
sta.z current_piece_1+1
// [438] call play_collision
// [386] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision]
play_collision_from___b8:
// [386] phi play_collision::xpos#6 = play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy
// [386] phi play_collision::yp#0 = play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy
// [386] phi play_collision::orientation#5 = play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy
// [386] phi current_piece#18 = current_piece#98 [phi:play_move_down::@8->play_collision#3] -- register_copy
jsr play_collision
// [439] play_collision::return#0 = play_collision::return#15
jmp __b13
// play_move_down::@13
__b13:
// [440] play_move_down::$12 = play_collision::return#0
// [441] if(play_move_down::$12==COLLISION_NONE) goto play_move_down::@10 -- vbuaa_eq_vbuc1_then_la1
cmp #COLLISION_NONE
beq __b10
// [442] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9]
__b9_from___b13:
jmp __b9
// play_move_down::@9
__b9:
// [443] call play_lock_current
// Lock current piece
jsr play_lock_current
// [444] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14]
__b14_from___b9:
jmp __b14
// play_move_down::@14
__b14:
// [445] call play_remove_lines
// [529] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines]
play_remove_lines_from___b14:
jsr play_remove_lines
// [446] play_remove_lines::return#0 = play_remove_lines::removed#7 -- vbuaa=vbuz1
lda.z play_remove_lines.removed
jmp __b15
// play_move_down::@15
__b15:
// [447] play_move_down::removed#0 = play_remove_lines::return#0
// [448] play_update_score::removed#0 = play_move_down::removed#0 -- vbuxx=vbuaa
tax
// [449] call play_update_score
// Tally up the score
jsr play_update_score
// [450] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16]
__b16_from___b15:
jmp __b16
// play_move_down::@16
__b16:
// [451] call play_spawn_current
// Spawn a new piece
// [172] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current]
play_spawn_current_from___b16:
// [172] phi game_over#66 = game_over#22 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy
// [172] phi next_piece_idx#18 = next_piece_idx#23 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy
jsr play_spawn_current
jmp __b17
// play_move_down::@17
__b17:
// [452] current_piece#95 = (byte*)PIECES[play_spawn_current::$7] -- pbuz1=qbuc1_derefidx_vbuz2
ldy.z play_spawn_current.__7
lda PIECES,y
sta.z current_piece
lda PIECES+1,y
sta.z current_piece+1
// [453] current_piece_gfx#116 = (byte*)PIECES[play_spawn_current::$7] -- pbuz1=qbuc1_derefidx_vbuz2
ldy.z play_spawn_current.__7
lda PIECES,y
sta.z current_piece_gfx
lda PIECES+1,y
sta.z current_piece_gfx+1
// [454] phi from play_move_down::@17 to play_move_down::@11 [phi:play_move_down::@17->play_move_down::@11]
__b11_from___b17:
// [454] phi next_piece_idx#32 = play_spawn_current::piece_idx#2 [phi:play_move_down::@17->play_move_down::@11#0] -- register_copy
// [454] phi game_over#29 = game_over#53 [phi:play_move_down::@17->play_move_down::@11#1] -- register_copy
// [454] phi current_xpos#45 = current_xpos#100 [phi:play_move_down::@17->play_move_down::@11#2] -- register_copy
// [454] phi current_piece_gfx#37 = current_piece_gfx#116 [phi:play_move_down::@17->play_move_down::@11#3] -- register_copy
// [454] phi current_orientation#39 = 0 [phi:play_move_down::@17->play_move_down::@11#4] -- vbuz1=vbuc1
lda #0
sta.z current_orientation
// [454] phi current_piece_char#31 = current_piece_char#4 [phi:play_move_down::@17->play_move_down::@11#5] -- register_copy
// [454] phi current_piece#30 = current_piece#95 [phi:play_move_down::@17->play_move_down::@11#6] -- register_copy
// [454] phi level_bcd#33 = level_bcd#20 [phi:play_move_down::@17->play_move_down::@11#7] -- register_copy
// [454] phi current_movedown_slow#39 = current_movedown_slow#24 [phi:play_move_down::@17->play_move_down::@11#8] -- register_copy
// [454] phi level#35 = level#20 [phi:play_move_down::@17->play_move_down::@11#9] -- register_copy
// [454] phi lines_bcd#28 = lines_bcd#18 [phi:play_move_down::@17->play_move_down::@11#10] -- register_copy
// [454] phi current_ypos#40 = current_ypos#5 [phi:play_move_down::@17->play_move_down::@11#11] -- register_copy
jmp __b11
// play_move_down::@11
__b11:
// [455] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return]
__breturn_from___b11:
// [455] phi next_piece_idx#17 = next_piece_idx#32 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy
// [455] phi game_over#16 = game_over#29 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy
// [455] phi current_xpos#23 = current_xpos#45 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy
// [455] phi current_piece_gfx#21 = current_piece_gfx#37 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy
// [455] phi current_orientation#21 = current_orientation#39 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy
// [455] phi current_piece_char#17 = current_piece_char#31 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy
// [455] phi current_piece#16 = current_piece#30 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy
// [455] phi level_bcd#18 = level_bcd#33 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy
// [455] phi current_movedown_slow#22 = current_movedown_slow#39 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy
// [455] phi level#18 = level#35 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy
// [455] phi lines_bcd#16 = lines_bcd#28 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy
// [455] phi current_ypos#20 = current_ypos#40 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy
// [455] phi current_movedown_counter#15 = 0 [phi:play_move_down::@11->play_move_down::@return#12] -- vbuz1=vbuc1
lda #0
sta.z current_movedown_counter
// [455] phi play_move_down::return#3 = 1 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuxx=vbuc1
ldx #1
jmp __breturn
// [455] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return]
__breturn_from___b3:
// [455] phi next_piece_idx#17 = next_piece_idx#23 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy
// [455] phi game_over#16 = game_over#22 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy
// [455] phi current_xpos#23 = current_xpos#13 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy
// [455] phi current_piece_gfx#21 = current_piece_gfx#12 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy
// [455] phi current_orientation#21 = current_orientation#12 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy
// [455] phi current_piece_char#17 = current_piece_char#23 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy
// [455] phi current_piece#16 = current_piece#23 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy
// [455] phi level_bcd#18 = level_bcd#10 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy
// [455] phi current_movedown_slow#22 = current_movedown_slow#13 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy
// [455] phi level#18 = level#25 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy
// [455] phi lines_bcd#16 = lines_bcd#20 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy
// [455] phi current_ypos#20 = current_ypos#10 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy
// [455] phi current_movedown_counter#15 = current_movedown_counter#13 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy
// [455] phi play_move_down::return#3 = 0 [phi:play_move_down::@3->play_move_down::@return#13] -- vbuxx=vbuc1
ldx #0
jmp __breturn
// play_move_down::@return
__breturn:
// [456] return
rts
// play_move_down::@10
__b10:
// [457] current_ypos#2 = ++ current_ypos#10 -- vbuz1=_inc_vbuz1
inc.z current_ypos
// [454] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11]
__b11_from___b10:
// [454] phi next_piece_idx#32 = next_piece_idx#23 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy
// [454] phi game_over#29 = game_over#22 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy
// [454] phi current_xpos#45 = current_xpos#13 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy
// [454] phi current_piece_gfx#37 = current_piece_gfx#12 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy
// [454] phi current_orientation#39 = current_orientation#12 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy
// [454] phi current_piece_char#31 = current_piece_char#23 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy
// [454] phi current_piece#30 = current_piece#23 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy
// [454] phi level_bcd#33 = level_bcd#10 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy
// [454] phi current_movedown_slow#39 = current_movedown_slow#13 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy
// [454] phi level#35 = level#25 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy
// [454] phi lines_bcd#28 = lines_bcd#20 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy
// [454] phi current_ypos#40 = current_ypos#2 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy
jmp __b11
}
// play_move_leftright
// Move left/right or rotate the current piece
// Return non-zero if a render is needed
// play_move_leftright(byte register(A) key_event)
play_move_leftright: {
// [458] if(play_move_leftright::key_event#0==KEY_COMMA) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1
// Handle keyboard events
cmp #KEY_COMMA
beq __b1
jmp __b2
// play_move_leftright::@2
__b2:
// [459] if(play_move_leftright::key_event#0!=KEY_DOT) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1
cmp #KEY_DOT
bne __breturn_from___b2
jmp __b3
// play_move_leftright::@3
__b3:
// [460] play_collision::xpos#2 = current_xpos#23 + 1 -- vbuz1=vbuz2_plus_1
ldy.z current_xpos
iny
sty.z play_collision.xpos
// [461] play_collision::ypos#2 = current_ypos#20 -- vbuz1=vbuz2
lda.z current_ypos
sta.z play_collision.ypos
// [462] play_collision::orientation#2 = current_orientation#21 -- vbuxx=vbuz1
ldx.z current_orientation
// [463] current_piece#100 = current_piece#16 -- pbuz1=pbuz2
lda.z current_piece
sta.z current_piece_1
lda.z current_piece+1
sta.z current_piece_1+1
// [464] call play_collision
// [386] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision]
play_collision_from___b3:
// [386] phi play_collision::xpos#6 = play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy
// [386] phi play_collision::yp#0 = play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy
// [386] phi play_collision::orientation#5 = play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy
// [386] phi current_piece#18 = current_piece#100 [phi:play_move_leftright::@3->play_collision#3] -- register_copy
jsr play_collision
// [465] play_collision::return#13 = play_collision::return#15
jmp __b7
// play_move_leftright::@7
__b7:
// [466] play_move_leftright::$4 = play_collision::return#13
// [467] if(play_move_leftright::$4!=COLLISION_NONE) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1
cmp #COLLISION_NONE
bne __breturn_from___b7
jmp __b4
// play_move_leftright::@4
__b4:
// [468] current_xpos#5 = ++ current_xpos#23 -- vbuz1=_inc_vbuz1
inc.z current_xpos
// [469] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return]
__breturn_from___b4:
__breturn_from___b5:
// [469] phi current_xpos#27 = current_xpos#5 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy
// [469] phi play_move_leftright::return#2 = 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuaa=vbuc1
lda #1
jmp __breturn
// [469] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return]
__breturn_from___b2:
__breturn_from___b6:
__breturn_from___b7:
// [469] phi current_xpos#27 = current_xpos#23 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy
// [469] phi play_move_leftright::return#2 = 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuaa=vbuc1
lda #0
jmp __breturn
// play_move_leftright::@return
__breturn:
// [470] return
rts
// play_move_leftright::@1
__b1:
// [471] play_collision::xpos#1 = current_xpos#23 - 1 -- vbuz1=vbuz2_minus_1
ldx.z current_xpos
dex
stx.z play_collision.xpos
// [472] play_collision::ypos#1 = current_ypos#20 -- vbuz1=vbuz2
lda.z current_ypos
sta.z play_collision.ypos
// [473] play_collision::orientation#1 = current_orientation#21 -- vbuxx=vbuz1
ldx.z current_orientation
// [474] current_piece#99 = current_piece#16 -- pbuz1=pbuz2
lda.z current_piece
sta.z current_piece_1
lda.z current_piece+1
sta.z current_piece_1+1
// [475] call play_collision
// [386] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision]
play_collision_from___b1:
// [386] phi play_collision::xpos#6 = play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy
// [386] phi play_collision::yp#0 = play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy
// [386] phi play_collision::orientation#5 = play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy
// [386] phi current_piece#18 = current_piece#99 [phi:play_move_leftright::@1->play_collision#3] -- register_copy
jsr play_collision
// [476] play_collision::return#1 = play_collision::return#15
jmp __b6
// play_move_leftright::@6
__b6:
// [477] play_move_leftright::$8 = play_collision::return#1
// [478] if(play_move_leftright::$8!=COLLISION_NONE) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1
cmp #COLLISION_NONE
bne __breturn_from___b6
jmp __b5
// play_move_leftright::@5
__b5:
// [479] current_xpos#7 = -- current_xpos#23 -- vbuz1=_dec_vbuz1
dec.z current_xpos
jmp __breturn_from___b5
}
// play_move_rotate
// Rotate the current piece based on key-presses
// Return non-zero if a render is needed
// play_move_rotate(byte register(A) key_event)
play_move_rotate: {
// Handle keyboard events
.label orientation = $23
// [480] if(play_move_rotate::key_event#0==KEY_Z) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1
cmp #KEY_Z
beq __b1
jmp __b4
// play_move_rotate::@4
__b4:
// [481] if(play_move_rotate::key_event#0==KEY_X) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1
cmp #KEY_X
beq __b2
// [482] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return]
__breturn_from___b4:
__breturn_from___b6:
// [482] phi current_piece_gfx#22 = current_piece_gfx#21 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy
// [482] phi current_orientation#26 = current_orientation#21 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy
// [482] phi play_move_rotate::return#2 = 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1
lda #0
jmp __breturn
// play_move_rotate::@return
__breturn:
// [483] return
rts
// play_move_rotate::@2
__b2:
// [484] play_move_rotate::$5 = current_orientation#21 + $10 -- vbuxx=vbuz1_plus_vbuc1
lax.z current_orientation
axs #-[$10]
// [485] play_move_rotate::orientation#2 = play_move_rotate::$5 & $3f -- vbuz1=vbuxx_band_vbuc1
lda #$3f
sax.z orientation
// [486] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3]
__b3_from___b1:
__b3_from___b2:
// [486] phi play_move_rotate::orientation#3 = play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3#0] -- register_copy
jmp __b3
// play_move_rotate::@3
__b3:
// [487] play_collision::xpos#3 = current_xpos#27 -- vbuz1=vbuz2
lda.z current_xpos
sta.z play_collision.xpos
// [488] play_collision::ypos#3 = current_ypos#20 -- vbuz1=vbuz2
lda.z current_ypos
sta.z play_collision.ypos
// [489] play_collision::orientation#3 = play_move_rotate::orientation#3 -- vbuxx=vbuz1
ldx.z orientation
// [490] current_piece#101 = current_piece#16 -- pbuz1=pbuz2
lda.z current_piece
sta.z current_piece_1
lda.z current_piece+1
sta.z current_piece_1+1
// [491] call play_collision
// [386] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision]
play_collision_from___b3:
// [386] phi play_collision::xpos#6 = play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy
// [386] phi play_collision::yp#0 = play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy
// [386] phi play_collision::orientation#5 = play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy
// [386] phi current_piece#18 = current_piece#101 [phi:play_move_rotate::@3->play_collision#3] -- register_copy
jsr play_collision
// [492] play_collision::return#14 = play_collision::return#15
jmp __b6
// play_move_rotate::@6
__b6:
// [493] play_move_rotate::$2 = play_collision::return#14
// [494] if(play_move_rotate::$2!=COLLISION_NONE) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1
cmp #COLLISION_NONE
bne __breturn_from___b6
jmp __b5
// play_move_rotate::@5
__b5:
// [495] current_orientation#6 = play_move_rotate::orientation#3 -- vbuz1=vbuz2
lda.z orientation
sta.z current_orientation
// [496] current_piece_gfx#6 = current_piece#16 + current_orientation#6 -- pbuz1=pbuz2_plus_vbuz3
lda.z current_orientation
clc
adc.z current_piece
sta.z current_piece_gfx
lda #0
adc.z current_piece+1
sta.z current_piece_gfx+1
// [482] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return]
__breturn_from___b5:
// [482] phi current_piece_gfx#22 = current_piece_gfx#6 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy
// [482] phi current_orientation#26 = current_orientation#6 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy
// [482] phi play_move_rotate::return#2 = 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuaa=vbuc1
lda #1
jmp __breturn
// play_move_rotate::@1
__b1:
// [497] play_move_rotate::$7 = current_orientation#21 - $10 -- vbuaa=vbuz1_minus_vbuc1
lda.z current_orientation
sec
sbc #$10
// [498] play_move_rotate::orientation#1 = play_move_rotate::$7 & $3f -- vbuz1=vbuaa_band_vbuc1
and #$3f
sta.z orientation
jmp __b3_from___b1
}
// render_bcd
// Render BCD digits on a screen.
// - screen: pointer to the screen to render on
// - offset: offset on the screen
// - bcd: The BCD-value to render
// - only_low: if non-zero only renders the low digit
// render_bcd(byte* zp($c) screen, word zp($20) offset, byte register(X) bcd, byte register(Y) only_low)
render_bcd: {
.const ZERO_CHAR = $35
.label screen = $c
.label screen_pos = $20
.label offset = $20
// [500] render_bcd::screen_pos#0 = render_bcd::screen#6 + render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1
lda.z screen_pos
clc
adc.z screen
sta.z screen_pos
lda.z screen_pos+1
adc.z screen+1
sta.z screen_pos+1
// [501] if(render_bcd::only_low#6!=0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1
cpy #0
bne __b1_from_render_bcd
jmp __b2
// render_bcd::@2
__b2:
// [502] render_bcd::$5 = render_bcd::bcd#6 >> 4 -- vbuaa=vbuxx_ror_4
txa
lsr
lsr
lsr
lsr
// [503] render_bcd::$6 = render_bcd::ZERO_CHAR + render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa
clc
adc #ZERO_CHAR
// [504] *render_bcd::screen_pos#0 = render_bcd::$6 -- _deref_pbuz1=vbuaa
ldy #0
sta (screen_pos),y
// [505] render_bcd::screen_pos#2 = ++ render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1
inc.z screen_pos
bne !+
inc.z screen_pos+1
!:
// [506] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1]
__b1_from_render_bcd:
__b1_from___b2:
// [506] phi render_bcd::screen_pos#3 = render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy
jmp __b1
// render_bcd::@1
__b1:
// [507] render_bcd::$3 = render_bcd::bcd#6 & $f -- vbuaa=vbuxx_band_vbuc1
txa
and #$f
// [508] render_bcd::$4 = render_bcd::ZERO_CHAR + render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa
clc
adc #ZERO_CHAR
// [509] *render_bcd::screen_pos#3 = render_bcd::$4 -- _deref_pbuz1=vbuaa
ldy #0
sta (screen_pos),y
jmp __breturn
// render_bcd::@return
__breturn:
// [510] return
rts
}
// play_lock_current
// Lock the current piece onto the playfield
play_lock_current: {
.label yp = $32
.label playfield_line = $36
.label xp = $22
.label i = $38
.label l = $33
.label i_1 = $39
// [511] play_lock_current::yp#0 = current_ypos#10 -- vbuz1=vbuz2
lda.z current_ypos
sta.z yp
// [512] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1]
__b1_from_play_lock_current:
// [512] phi play_lock_current::l#6 = 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1
lda #0
sta.z l
// [512] phi play_lock_current::i#3 = 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1
lda #0
sta.z i_1
// [512] phi play_lock_current::yp#2 = play_lock_current::yp#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy
jmp __b1
// play_lock_current::@1
__b1:
// [513] play_lock_current::$4 = play_lock_current::yp#2 << 1 -- vbuaa=vbuz1_rol_1
lda.z yp
asl
// [514] play_lock_current::playfield_line#0 = playfield_lines[play_lock_current::$4] -- pbuz1=qbuc1_derefidx_vbuaa
tay
lda playfield_lines,y
sta.z playfield_line
lda playfield_lines+1,y
sta.z playfield_line+1
// [515] play_lock_current::xp#0 = current_xpos#13 -- vbuz1=vbuz2
lda.z current_xpos
sta.z xp
// [516] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2]
__b2_from___b1:
// [516] phi play_lock_current::c#2 = 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1
ldx #0
// [516] phi play_lock_current::xp#2 = play_lock_current::xp#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy
// [516] phi play_lock_current::i#2 = play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy
jmp __b2
// play_lock_current::@2
__b2:
// [517] play_lock_current::i#1 = ++ play_lock_current::i#2 -- vbuz1=_inc_vbuz2
ldy.z i_1
iny
sty.z i
// [518] if(current_piece_gfx#12[play_lock_current::i#2]==0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1
ldy.z i_1
lda (current_piece_gfx),y
cmp #0
beq __b3
jmp __b4
// play_lock_current::@4
__b4:
// [519] play_lock_current::playfield_line#0[play_lock_current::xp#2] = current_piece_char#23 -- pbuz1_derefidx_vbuz2=vbuz3
lda.z current_piece_char
ldy.z xp
sta (playfield_line),y
jmp __b3
// play_lock_current::@3
__b3:
// [520] play_lock_current::xp#1 = ++ play_lock_current::xp#2 -- vbuz1=_inc_vbuz1
inc.z xp
// [521] play_lock_current::c#1 = ++ play_lock_current::c#2 -- vbuxx=_inc_vbuxx
inx
// [522] if(play_lock_current::c#1!=4) goto play_lock_current::@7 -- vbuxx_neq_vbuc1_then_la1
cpx #4
bne __b7
jmp __b5
// play_lock_current::@5
__b5:
// [523] play_lock_current::yp#1 = ++ play_lock_current::yp#2 -- vbuz1=_inc_vbuz1
inc.z yp
// [524] play_lock_current::l#1 = ++ play_lock_current::l#6 -- vbuz1=_inc_vbuz1
inc.z l
// [525] if(play_lock_current::l#1!=4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1
lda #4
cmp.z l
bne __b6
jmp __breturn
// play_lock_current::@return
__breturn:
// [526] return
rts
// play_lock_current::@6
__b6:
// [527] play_lock_current::i#7 = play_lock_current::i#1 -- vbuz1=vbuz2
lda.z i
sta.z i_1
// [512] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1]
__b1_from___b6:
// [512] phi play_lock_current::l#6 = play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy
// [512] phi play_lock_current::i#3 = play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy
// [512] phi play_lock_current::yp#2 = play_lock_current::yp#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy
jmp __b1
// play_lock_current::@7
__b7:
// [528] play_lock_current::i#9 = play_lock_current::i#1 -- vbuz1=vbuz2
lda.z i
sta.z i_1
// [516] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2]
__b2_from___b7:
// [516] phi play_lock_current::c#2 = play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy
// [516] phi play_lock_current::xp#2 = play_lock_current::xp#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy
// [516] phi play_lock_current::i#2 = play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy
jmp __b2
}
// play_remove_lines
// Look through the playfield for lines - and remove any lines found
// Utilizes two cursors on the playfield - one reading cells and one writing cells
// Whenever a full line is detected the writing cursor is instructed to write to the same line once more.
// Returns the number of lines removed
play_remove_lines: {
.label c = $39
.label x = $32
.label y = $23
.label removed = $2f
.label full = $33
// [530] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1]
__b1_from_play_remove_lines:
// [530] phi play_remove_lines::removed#11 = 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1
lda #0
sta.z removed
// [530] phi play_remove_lines::y#8 = 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1
lda #0
sta.z y
// [530] phi play_remove_lines::w#12 = PLAYFIELD_LINES*PLAYFIELD_COLS-1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1
ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1
// [530] phi play_remove_lines::r#3 = PLAYFIELD_LINES*PLAYFIELD_COLS-1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1
ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1
jmp __b1
// Read all lines and rewrite them
// [530] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1]
__b1_from___b6:
// [530] phi play_remove_lines::removed#11 = play_remove_lines::removed#7 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy
// [530] phi play_remove_lines::y#8 = play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy
// [530] phi play_remove_lines::w#12 = play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy
// [530] phi play_remove_lines::r#3 = play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy
jmp __b1
// play_remove_lines::@1
__b1:
// [531] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2]
__b2_from___b1:
// [531] phi play_remove_lines::full#4 = 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1
lda #1
sta.z full
// [531] phi play_remove_lines::x#2 = 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1
lda #0
sta.z x
// [531] phi play_remove_lines::w#4 = play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy
// [531] phi play_remove_lines::r#2 = play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy
jmp __b2
// [531] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2]
__b2_from___b3:
// [531] phi play_remove_lines::full#4 = play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy
// [531] phi play_remove_lines::x#2 = play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy
// [531] phi play_remove_lines::w#4 = play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy
// [531] phi play_remove_lines::r#2 = play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy
jmp __b2
// play_remove_lines::@2
__b2:
// [532] play_remove_lines::c#0 = playfield[play_remove_lines::r#2] -- vbuz1=pbuc1_derefidx_vbuyy
lda playfield,y
sta.z c
// [533] play_remove_lines::r#1 = -- play_remove_lines::r#2 -- vbuyy=_dec_vbuyy
dey
// [534] if(play_remove_lines::c#0!=0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1
lda.z c
cmp #0
bne __b9_from___b2
// [536] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3]
__b3_from___b2:
// [536] phi play_remove_lines::full#2 = 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1
lda #0
sta.z full
jmp __b3
// [535] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9]
__b9_from___b2:
jmp __b9
// play_remove_lines::@9
__b9:
// [536] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3]
__b3_from___b9:
// [536] phi play_remove_lines::full#2 = play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy
jmp __b3
// play_remove_lines::@3
__b3:
// [537] playfield[play_remove_lines::w#4] = play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1
lda.z c
sta playfield,x
// [538] play_remove_lines::w#1 = -- play_remove_lines::w#4 -- vbuxx=_dec_vbuxx
dex
// [539] play_remove_lines::x#1 = ++ play_remove_lines::x#2 -- vbuz1=_inc_vbuz1
inc.z x
// [540] if(play_remove_lines::x#1!=PLAYFIELD_COLS-1+1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1
lda #PLAYFIELD_COLS-1+1
cmp.z x
bne __b2_from___b3
jmp __b4
// play_remove_lines::@4
__b4:
// [541] if(play_remove_lines::full#2!=1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1
lda #1
cmp.z full
bne __b6_from___b4
jmp __b5
// play_remove_lines::@5
__b5:
// [542] play_remove_lines::w#2 = play_remove_lines::w#1 + PLAYFIELD_COLS -- vbuxx=vbuxx_plus_vbuc1
txa
axs #-[PLAYFIELD_COLS]
// [543] play_remove_lines::removed#1 = ++ play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1
inc.z removed
// [544] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6]
__b6_from___b4:
__b6_from___b5:
// [544] phi play_remove_lines::removed#7 = play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy
// [544] phi play_remove_lines::w#11 = play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy
jmp __b6
// play_remove_lines::@6
__b6:
// [545] play_remove_lines::y#1 = ++ play_remove_lines::y#8 -- vbuz1=_inc_vbuz1
inc.z y
// [546] if(play_remove_lines::y#1!=PLAYFIELD_LINES-1+1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1
lda #PLAYFIELD_LINES-1+1
cmp.z y
bne __b1_from___b6
// [547] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7]
__b7_from___b6:
__b7_from___b8:
// [547] phi play_remove_lines::w#6 = play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy
jmp __b7
// Write zeros in the rest of the lines
// play_remove_lines::@7
__b7:
// [548] if(play_remove_lines::w#6!=$ff) goto play_remove_lines::@8 -- vbuxx_neq_vbuc1_then_la1
cpx #$ff
bne __b8
jmp __breturn
// play_remove_lines::@return
__breturn:
// [549] return
rts
// play_remove_lines::@8
__b8:
// [550] playfield[play_remove_lines::w#6] = 0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #0
sta playfield,x
// [551] play_remove_lines::w#3 = -- play_remove_lines::w#6 -- vbuxx=_dec_vbuxx
dex
jmp __b7_from___b8
}
// play_update_score
// Update the score based on the number of lines removed
// play_update_score(byte register(X) removed)
play_update_score: {
.label lines_before = $39
.label add_bcd = $3a
// [552] if(play_update_score::removed#0==0) goto play_update_score::@return -- vbuxx_eq_0_then_la1
cpx #0
beq __breturn_from_play_update_score
jmp __b1
// play_update_score::@1
__b1:
// [553] play_update_score::$2 = < lines_bcd#20 -- vbuaa=_lo_vwuz1
lda.z lines_bcd
// [554] play_update_score::lines_before#0 = play_update_score::$2 & $f0 -- vbuz1=vbuaa_band_vbuc1
and #$f0
sta.z lines_before
// [555] play_update_score::$9 = play_update_score::removed#0 << 2 -- vbuaa=vbuxx_rol_2
txa
asl
asl
// [556] play_update_score::add_bcd#0 = score_add_bcd[play_update_score::$9] -- vduz1=pduc1_derefidx_vbuaa
tay
lda score_add_bcd,y
sta.z add_bcd
lda score_add_bcd+1,y
sta.z add_bcd+1
lda score_add_bcd+2,y
sta.z add_bcd+2
lda score_add_bcd+3,y
sta.z add_bcd+3
// asm { sed }
sed
// [558] lines_bcd#31 = lines_bcd#20 + play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx
txa
clc
adc.z lines_bcd
sta.z lines_bcd
bcc !+
inc.z lines_bcd+1
!:
// [559] score_bcd = score_bcd + play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2
lda.z score_bcd
clc
adc.z add_bcd
sta.z score_bcd
lda.z score_bcd+1
adc.z add_bcd+1
sta.z score_bcd+1
lda.z score_bcd+2
adc.z add_bcd+2
sta.z score_bcd+2
lda.z score_bcd+3
adc.z add_bcd+3
sta.z score_bcd+3
// asm { cld }
cld
// [561] play_update_score::$4 = < lines_bcd#31 -- vbuaa=_lo_vwuz1
lda.z lines_bcd
// [562] play_update_score::lines_after#0 = play_update_score::$4 & $f0 -- vbuaa=vbuaa_band_vbuc1
and #$f0
// [563] if(play_update_score::lines_before#0==play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1
cmp.z lines_before
beq __breturn_from___b1
// [564] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2]
__b2_from___b1:
jmp __b2
// play_update_score::@2
__b2:
// [565] call play_increase_level
jsr play_increase_level
// [566] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return]
__breturn_from_play_update_score:
__breturn_from___b1:
__breturn_from___b2:
// [566] phi level_bcd#20 = level_bcd#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy
// [566] phi current_movedown_slow#24 = current_movedown_slow#13 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy
// [566] phi level#20 = level#25 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy
// [566] phi lines_bcd#18 = lines_bcd#20 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy
jmp __breturn
// play_update_score::@return
__breturn:
// [567] return
rts
}
// play_increase_level
// Increase the level
play_increase_level: {
// [568] level#22 = ++ level#25 -- vbuz1=_inc_vbuz1
inc.z level
// [569] if(level#22>=$1d+1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1
// Update speed of moving tetrominos down
lda.z level
cmp #$1d+1
bcs __b1_from_play_increase_level
jmp __b3
// play_increase_level::@3
__b3:
// [570] current_movedown_slow#9 = MOVEDOWN_SLOW_SPEEDS[level#22] -- vbuz1=pbuc1_derefidx_vbuz2
ldy.z level
lda MOVEDOWN_SLOW_SPEEDS,y
sta.z current_movedown_slow
// [571] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1]
__b1_from___b3:
// [571] phi current_movedown_slow#67 = current_movedown_slow#9 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy
jmp __b1
// [571] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1]
__b1_from_play_increase_level:
// [571] phi current_movedown_slow#67 = 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1
lda #1
sta.z current_movedown_slow
jmp __b1
// play_increase_level::@1
__b1:
// [572] level_bcd#22 = ++ level_bcd#10 -- vbuz1=_inc_vbuz1
inc.z level_bcd
// [573] play_increase_level::$1 = level_bcd#22 & $f -- vbuaa=vbuz1_band_vbuc1
lda #$f
and.z level_bcd
// [574] if(play_increase_level::$1!=$a) goto play_increase_level::@2 -- vbuaa_neq_vbuc1_then_la1
cmp #$a
bne __b2_from___b1
jmp __b4
// play_increase_level::@4
__b4:
// [575] level_bcd#7 = level_bcd#22 + 6 -- vbuz1=vbuz1_plus_vbuc1
// If level low nybble hits 0xa change to 0x10
lax.z level_bcd
axs #-[6]
stx.z level_bcd
// [576] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2]
__b2_from___b1:
__b2_from___b4:
// [576] phi level_bcd#63 = level_bcd#22 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy
jmp __b2
// play_increase_level::@2
__b2:
// asm { sed }
// Increase the score values gained
sed
// [578] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5]
__b5_from___b2:
// [578] phi play_increase_level::b#2 = 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuxx=vbuc1
ldx #0
jmp __b5
// [578] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5]
__b5_from___b5:
// [578] phi play_increase_level::b#2 = play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy
jmp __b5
// play_increase_level::@5
__b5:
// [579] play_increase_level::$5 = play_increase_level::b#2 << 2 -- vbuaa=vbuxx_rol_2
txa
asl
asl
// [580] score_add_bcd[play_increase_level::$5] = score_add_bcd[play_increase_level::$5] + SCORE_BASE_BCD[play_increase_level::$5] -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa
tay
clc
lda score_add_bcd,y
adc SCORE_BASE_BCD,y
sta score_add_bcd,y
lda score_add_bcd+1,y
adc SCORE_BASE_BCD+1,y
sta score_add_bcd+1,y
lda score_add_bcd+2,y
adc SCORE_BASE_BCD+2,y
sta score_add_bcd+2,y
lda score_add_bcd+3,y
adc SCORE_BASE_BCD+3,y
sta score_add_bcd+3,y
// [581] play_increase_level::b#1 = ++ play_increase_level::b#2 -- vbuxx=_inc_vbuxx
inx
// [582] if(play_increase_level::b#1!=5) goto play_increase_level::@5 -- vbuxx_neq_vbuc1_then_la1
cpx #5
bne __b5_from___b5
jmp __b6
// play_increase_level::@6
__b6:
// asm { cld }
cld
jmp __breturn
// play_increase_level::@return
__breturn:
// [584] return
rts
}
// File Data
.segment Data
// Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7)
keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80
// Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan()
keyboard_events: .fill 8, 0
// The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event()
keyboard_scan_values: .fill 8, 0
// The playfield. 0 is empty non-zero is color.
// The playfield is layed out line by line, meaning the first 10 bytes are line 1, the next 10 line 2 and so forth,
playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0
// The T-piece
.align $40
PIECE_T: .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0
// The S-piece
.align $40
PIECE_S: .byte 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0
// The Z-piece
.align $40
PIECE_Z: .byte 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0
// The L-piece
.align $40
PIECE_L: .byte 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0
// The J-piece
.align $40
PIECE_J: .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0
// The O-piece
.align $40
PIECE_O: .byte 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0
// The I-piece
.align $40
PIECE_I: .byte 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0
// The different pieces
PIECES: .word PIECE_T, PIECE_S, PIECE_Z, PIECE_J, PIECE_O, PIECE_I, PIECE_L
// The chars to use for the different pieces - when inside the playing area
PIECES_CHARS: .byte $65, $66, $a6, $66, $65, $65, $a6
// The chars to use for the different pieces - when outside the playing area (eg. the next area).
PIECES_NEXT_CHARS: .byte $63, $64, $a4, $64, $63, $63, $a4
// The initial X/Y for each piece
PIECES_START_X: .byte 4, 4, 4, 4, 4, 4, 4
PIECES_START_Y: .byte 1, 1, 1, 1, 1, 0, 1
PLAYFIELD_SCREEN_ORIGINAL:
// Load chars for the screen
.var screen = LoadBinary("playfield-screen.iscr")
// Load extended colors for the screen
.var extended = LoadBinary("playfield-extended.col")
// screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8
// extended.get(i)-1 because the extended colors are 1-based (1/2/3/4)
// <<6 to move extended colors to the upper 2 bits
.fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 )
// Original Color Data
PLAYFIELD_COLORS_ORIGINAL:
.import binary "playfield-screen.col"
// The color #1 to use for the pieces for each level
PIECES_COLORS_1: .byte BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED
// The color #2 to use for the pieces for each level
PIECES_COLORS_2: .byte CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE
// Pointers to the screen address for rendering each playfield line
// The lines for screen 1 is aligned with 0x80 and screen 2 with 0x40 - so XOR'ing with 0x40 gives screen 2 lines.
.align $80
screen_lines_1: .fill 2*PLAYFIELD_LINES, 0
.align $40
screen_lines_2: .fill 2*PLAYFIELD_LINES, 0
// Pointers to the playfield address for each playfield line
playfield_lines: .fill 2*PLAYFIELD_LINES, 0
// Indixes into the playfield for each playfield line
playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0
// The speed of moving down the piece when soft-drop is not activated
// This array holds the number of frames per move by level (0-29). For all levels 29+ the value is 1.
MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
// Base Score values for removing 0-4 lines (in BCD)
// These values are added to score_add_bcd for each level gained.
SCORE_BASE_BCD: .dword 0, $40, $100, $300, $1200
// Score values for removing 0-4 lines (in BCD)
// These values are updated based on the players level and the base values from SCORE_BASE_BCD
score_add_bcd: .fill 4*5, 0
.pc = $3000 "PLAYFIELD_SPRITES"
// Sprites covering the playfield
PLAYFIELD_SPRITES:
.var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
// Put the sprites into memory
.for(var sy=0;sy<10;sy++) {
.var sprite_gfx_y = sy*20
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {
.var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21)
.for (var c=0; c<3; c++) {
.byte sprites.getSinglecolorByte(sx*3+c,gfx_y)
}
}
.byte 0
}
}
.pc = $2800 "PLAYFIELD_CHARSET"
// Address of the charset
PLAYFIELD_CHARSET:
.fill 8,$00 // Place a filled char at the start of the charset
.import binary "playfield-screen.imap"
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __init1
Removing instruction jmp __init1_toSpritePtr1
Removing instruction jmp __init1___b1
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __b2
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __b5
Removing instruction jmp __breturn
Removing instruction jmp toSpritePtr1
Removing instruction jmp __b11
Removing instruction jmp sid_rnd_init1
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __b11
Removing instruction jmp __b12
Removing instruction jmp __b13
Removing instruction jmp __b14
Removing instruction jmp __b15
Removing instruction jmp __b16
Removing instruction jmp __b17
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b18
Removing instruction jmp __b19
Removing instruction jmp __b20
Removing instruction jmp __b5
Removing instruction jmp __b21
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __b22
Removing instruction jmp __b23
Removing instruction jmp __b24
Removing instruction jmp __b25
Removing instruction jmp vicSelectGfxBank1
Removing instruction jmp vicSelectGfxBank1_toDd001
Removing instruction jmp vicSelectGfxBank1___b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __breturn
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b7
Removing instruction jmp __b3
Removing instruction jmp __breturn
Removing instruction jmp __b4
Removing instruction jmp __b6
Removing instruction jmp __b5
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b7
Removing instruction jmp __b6
Removing instruction jmp __b8
Removing instruction jmp __breturn
Removing instruction jmp toD0182
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp toD0181
Removing instruction jmp __b7
Removing instruction jmp __b19
Removing instruction jmp __b16
Removing instruction jmp __b8
Removing instruction jmp __b17
Removing instruction jmp __b20
Removing instruction jmp __b18
Removing instruction jmp __b1
Removing instruction jmp __b21
Removing instruction jmp __b4
Removing instruction jmp __b2
Removing instruction jmp __b22
Removing instruction jmp __b5
Removing instruction jmp __b3
Removing instruction jmp __b23
Removing instruction jmp __b6
Removing instruction jmp __breturn
Removing instruction jmp __b9
Removing instruction jmp __b12
Removing instruction jmp __b13
Removing instruction jmp __b14
Removing instruction jmp __b10
Removing instruction jmp __b15
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b7
Removing instruction jmp __breturn
Removing instruction jmp __b8
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b4
Removing instruction jmp __b1
Removing instruction jmp __b12
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b2
Removing instruction jmp __b7
Removing instruction jmp __b3
Removing instruction jmp __b8
Removing instruction jmp __b13
Removing instruction jmp __b9
Removing instruction jmp __b14
Removing instruction jmp __b15
Removing instruction jmp __b16
Removing instruction jmp __b17
Removing instruction jmp __b11
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b7
Removing instruction jmp __b4
Removing instruction jmp __breturn
Removing instruction jmp __b6
Removing instruction jmp __b5
Removing instruction jmp __b4
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b6
Removing instruction jmp __b5
Removing instruction jmp __b2
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b4
Removing instruction jmp __b3
Removing instruction jmp __b5
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b9
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __b4
Removing instruction jmp __b2
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #<0
Removing instruction lda #>0
Removing instruction lda #0
Removing instruction ldy.z play_spawn_current.__7
Removing instruction lda #0
Removing instruction lda #<0
Removing instruction lda #>0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #BLACK
Removing instruction lda SPRITES_MC
Removing instruction lda SPRITES_EXPAND_Y
Removing instruction lda #0
Replacing instruction ldy #0 with TAY
Removing instruction ldy.z level
Removing instruction lda #0
Removing instruction lda.z row_scan
Removing instruction ldy #0
Removing instruction ldy #0
Removing instruction lda #0
Removing instruction ldy.z play_spawn_current.__7
Removing instruction lda.z current_orientation
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda.z c
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label __b1_from___b6 with __b1
Replacing label __b1_from___b25 with __b1
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from___b1 with __b1
Replacing label __b3_from___b3 with __b3
Replacing label __b5_from___b4 with __b1
Replacing label __b2_from___b2 with __b2
Replacing label __b1_from___b3 with __b1
Replacing label __b1_from___b3 with __b1
Replacing label __b4_from___b5 with __b4
Replacing label __b3_from___b5 with __b3
Replacing label __b1_from_render_next with __b1
Replacing label __b4_from___b6 with __b4
Replacing label __b3_from___b8 with __b3
Replacing label toD0181_from_render_show with toD0181
Replacing label __b7_from___b8 with __b7
Replacing label __b1_from___b20 with __b1
Replacing label __b2_from___b21 with __b2
Replacing label __b3_from___b22 with __b3
Replacing label __breturn with __b6
Replacing label __b10_from___b9 with __b10
Replacing label __b10_from___b12 with __b10
Replacing label __b8_from___b15 with __b8
Replacing label __b10_from___b11 with __b10
Replacing label __breturn_from___b4 with __breturn
Replacing label __b1_from_render_score with __b1
Replacing label __b2_from___b2 with __b2
Replacing label __b3_from___b3 with __b3
Replacing label __b4_from___b4 with __b4
Replacing label __b1_from___b5 with __b1
Replacing label __b2_from___b12 with __b2
Replacing label __b2_from___b5 with __b2
Replacing label __b3_from___b2 with __b3
Replacing label __breturn_from___b2 with __breturn_from___b7
Replacing label __breturn_from___b6 with __breturn_from___b7
Replacing label __b3_from___b1 with __b3
Replacing label __b1_from_render_bcd with __b1
Replacing label __b9_from___b2 with __b3
Replacing label __b2_from___b3 with __b2
Replacing label __b6_from___b4 with __b6
Replacing label __b1_from___b6 with __b1
Replacing label __breturn_from_play_update_score with __breturn
Replacing label __breturn_from___b1 with __breturn
Replacing label __b2_from___b1 with __b2
Replacing label __b5_from___b5 with __b5
Removing instruction __init1_toSpritePtr1_from___init1:
Removing instruction __init1_toSpritePtr1:
Removing instruction __b1_from___init1___b1:
Removing instruction main_from___b1:
Removing instruction __breturn:
Removing instruction toSpritePtr1_from___b3:
Removing instruction toSpritePtr1:
Removing instruction __b9_from___b8:
Removing instruction __b10_from___b9:
Removing instruction __b11_from___b10:
Removing instruction play_init_from___b11:
Removing instruction __b12_from___b11:
Removing instruction __b13_from___b12:
Removing instruction play_spawn_current_from___b13:
Removing instruction __b14_from___b13:
Removing instruction render_playfield_from___b14:
Removing instruction __b1_from___b25:
Removing instruction __b1_from___b6:
Removing instruction __b3_from___b2:
Removing instruction __b18_from___b3:
Removing instruction __b19_from___b18:
Removing instruction __b21:
Removing instruction __b24_from___b23:
Removing instruction __b25_from___b24:
Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1:
Removing instruction vicSelectGfxBank1_toDd001:
Removing instruction __b3_from___b2:
Removing instruction render_screen_original_from___b3:
Removing instruction __b1_from___b1:
Removing instruction __b1_from___b1:
Removing instruction __b1_from___b1:
Removing instruction __b3_from___b3:
Removing instruction __b5_from___b4:
Removing instruction __b5:
Removing instruction __b1_from___b5:
Removing instruction __b2_from___b1:
Removing instruction __b1_from___b3:
Removing instruction __b2_from___b2:
Removing instruction __b1_from___b3:
Removing instruction __b3_from___b5:
Removing instruction __b3_from___b7:
Removing instruction __b4_from___b5:
Removing instruction __b1_from_render_next:
Removing instruction __b2_from___b1:
Removing instruction __b3_from___b8:
Removing instruction __b4_from___b3:
Removing instruction __b4_from___b6:
Removing instruction toD0182_from_render_show:
Removing instruction __b1_from_toD0182:
Removing instruction toD0181_from_render_show:
Removing instruction __b1_from_toD0181:
Removing instruction __b7_from___b8:
Removing instruction __b8_from___b15:
Removing instruction __b8_from___b16:
Removing instruction __b17_from___b8:
Removing instruction keyboard_event_pressed_from___b17:
Removing instruction __b18_from___b20:
Removing instruction __b18:
Removing instruction __b1_from___b18:
Removing instruction __b1_from___b20:
Removing instruction keyboard_event_pressed_from___b1:
Removing instruction __b4_from___b21:
Removing instruction __b4:
Removing instruction __b2_from___b21:
Removing instruction __b2_from___b4:
Removing instruction keyboard_event_pressed_from___b2:
Removing instruction __b5_from___b22:
Removing instruction __b5:
Removing instruction __b3_from___b22:
Removing instruction __b3_from___b5:
Removing instruction keyboard_event_pressed_from___b3:
Removing instruction __b6_from___b23:
Removing instruction __breturn:
Removing instruction __b10_from___b11:
Removing instruction __b10_from___b12:
Removing instruction __b10_from___b14:
Removing instruction __b10_from___b9:
Removing instruction __breturn_from___b2:
Removing instruction __breturn_from___b4:
Removing instruction __b1_from_render_score:
Removing instruction __b2_from___b1:
Removing instruction __b1_from___b5:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b2:
Removing instruction __b3_from___b2:
Removing instruction __b3_from___b3:
Removing instruction __b4_from___b3:
Removing instruction __b4_from___b4:
Removing instruction __b4_from_play_move_down:
Removing instruction __b1_from___b4:
Removing instruction keyboard_event_pressed_from___b1:
Removing instruction __b2_from___b12:
Removing instruction __b2_from___b5:
Removing instruction __b2_from___b6:
Removing instruction __b3_from___b2:
Removing instruction __b3_from___b7:
Removing instruction __b9_from___b13:
Removing instruction __b14_from___b9:
Removing instruction play_remove_lines_from___b14:
Removing instruction __b16_from___b15:
Removing instruction __breturn_from___b11:
Removing instruction __breturn_from___b4:
Removing instruction __breturn_from___b2:
Removing instruction __breturn_from___b6:
Removing instruction __breturn_from___b4:
Removing instruction __b3_from___b1:
Removing instruction __b3_from___b2:
Removing instruction __b1_from_render_bcd:
Removing instruction __b1_from___b2:
Removing instruction __b1_from___b6:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b3:
Removing instruction __b9_from___b2:
Removing instruction __b9:
Removing instruction __b3_from___b9:
Removing instruction __b6_from___b4:
Removing instruction __b6_from___b5:
Removing instruction __b7_from___b6:
Removing instruction __b2_from___b1:
Removing instruction __breturn_from_play_update_score:
Removing instruction __breturn_from___b1:
Removing instruction __breturn_from___b2:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b4:
Removing instruction __b5_from___b5:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __init1:
Removing instruction __init1___b1:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __b9:
Removing instruction __b10:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction __b11:
Removing instruction sid_rnd_init1:
Removing instruction __b8:
Removing instruction render_init_from___b8:
Removing instruction __b9:
Removing instruction __b10:
Removing instruction __b11:
Removing instruction __b12:
Removing instruction play_spawn_current_from___b12:
Removing instruction __b13:
Removing instruction __b14:
Removing instruction __b15:
Removing instruction render_moving_from___b15:
Removing instruction __b16:
Removing instruction render_next_from___b16:
Removing instruction __b17:
Removing instruction __b1_from___b17:
Removing instruction __b3:
Removing instruction __b18:
Removing instruction keyboard_event_scan_from___b18:
Removing instruction __b19:
Removing instruction __b20:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction render_playfield_from___b7:
Removing instruction __b22:
Removing instruction render_moving_from___b22:
Removing instruction __b23:
Removing instruction render_next_from___b23:
Removing instruction __b24:
Removing instruction __b25:
Removing instruction vicSelectGfxBank1:
Removing instruction vicSelectGfxBank1___b1:
Removing instruction __b2:
Removing instruction render_screen_original_from___b2:
Removing instruction __b3:
Removing instruction __b1_from___b3:
Removing instruction __breturn:
Removing instruction __b1_from_sprites_init:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b1_from_play_init:
Removing instruction __b2:
Removing instruction __b3_from___b2:
Removing instruction __breturn:
Removing instruction play_collision_from_play_spawn_current:
Removing instruction __b4:
Removing instruction __b1_from___b4:
Removing instruction __breturn:
Removing instruction __b3:
Removing instruction __b2_from___b3:
Removing instruction __b1_from_render_playfield:
Removing instruction __b2_from___b1:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __b1_from_render_moving:
Removing instruction __b7:
Removing instruction __breturn:
Removing instruction __b4_from___b2:
Removing instruction __b6:
Removing instruction __b2_from_render_next:
Removing instruction __b3_from___b2:
Removing instruction __b7:
Removing instruction __b8:
Removing instruction __breturn:
Removing instruction toD0182:
Removing instruction __breturn:
Removing instruction __b7_from_keyboard_event_scan:
Removing instruction __b19:
Removing instruction __b16:
Removing instruction __b17:
Removing instruction __b20:
Removing instruction __b21:
Removing instruction __b22:
Removing instruction __b23:
Removing instruction __b12:
Removing instruction __b13:
Removing instruction __b14:
Removing instruction __b15:
Removing instruction __b1:
Removing instruction __breturn_from___b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b2_from_render_score:
Removing instruction render_bcd_from___b2:
Removing instruction __b3:
Removing instruction render_bcd_from___b3:
Removing instruction __b4:
Removing instruction render_bcd_from___b4:
Removing instruction __b5:
Removing instruction render_bcd_from___b5:
Removing instruction __b6:
Removing instruction render_bcd_from___b6:
Removing instruction __b7:
Removing instruction render_bcd_from___b7:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b1_from_render_screen_original:
Removing instruction __b5:
Removing instruction __breturn:
Removing instruction __b1_from_play_collision:
Removing instruction __b2_from___b1:
Removing instruction __b7:
Removing instruction __breturn_from___b7:
Removing instruction __breturn_from___b4:
Removing instruction __breturn_from___b5:
Removing instruction __breturn_from___b6:
Removing instruction __b8:
Removing instruction __breturn_from___b8:
Removing instruction __b1_from___b9:
Removing instruction __b2_from___b10:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction __b12:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction __b8:
Removing instruction play_collision_from___b8:
Removing instruction __b13:
Removing instruction __b9:
Removing instruction __b14:
Removing instruction __b15:
Removing instruction __b16:
Removing instruction play_spawn_current_from___b16:
Removing instruction __b17:
Removing instruction __b11_from___b17:
Removing instruction __b11_from___b10:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction play_collision_from___b3:
Removing instruction __b7:
Removing instruction __b4:
Removing instruction play_collision_from___b1:
Removing instruction __b6:
Removing instruction __b5:
Removing instruction __b4:
Removing instruction play_collision_from___b3:
Removing instruction __b6:
Removing instruction __b5:
Removing instruction __breturn_from___b5:
Removing instruction __b2:
Removing instruction __breturn:
Removing instruction __b1_from_play_lock_current:
Removing instruction __b2_from___b1:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __breturn:
Removing instruction __b1_from___b6:
Removing instruction __b2_from___b7:
Removing instruction __b1_from_play_remove_lines:
Removing instruction __b3_from___b2:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b7:
Removing instruction __breturn:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b1_from___b3:
Removing instruction __b4:
Removing instruction __b5_from___b2:
Removing instruction __b6:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Skipping double jump to __b9 in bne __b9_from___b10
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Succesful ASM optimization Pass5DoubleJumpElimination
Relabelling long label __b9_from___b10 to __b4
Relabelling long label __b9_from___b19 to __b5
Relabelling long label __breturn_from_keyboard_event_get to __b1
Relabelling long label __b1_from_play_move_down to __b4
Relabelling long label __breturn_from___b3 to __b5
Relabelling long label __breturn_from___b5 to __b2
Relabelling long label __breturn_from___b7 to __b3
Relabelling long label __breturn_from___b6 to __b4
Relabelling long label __b7_from___b8 to __b4
Relabelling long label __b1_from_play_increase_level to __b3
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp __b1
Removing instruction jmp __b1
Removing instruction jmp __b1
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b1
Removing instruction jmp __b4
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b7
Removing instruction beq __b1
Removing instruction beq __b2
Removing instruction beq __b3
Removing instruction beq __b6
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b5
Succesful ASM optimization Pass5NextJumpElimination
Replacing instruction ldy.z level with TAY
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b6:
Removing instruction __b4:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Removing unreachable instruction jmp __b9
Succesful ASM optimization Pass5UnreachableCodeElimination
FINAL SYMBOL TABLE
const nomodify byte* BG_COLOR = (byte*) 53281
const nomodify byte* BG_COLOR1 = (byte*) 53282
const nomodify byte* BG_COLOR2 = (byte*) 53283
const nomodify byte* BG_COLOR3 = (byte*) 53284
const nomodify byte BLACK = 0
const nomodify byte BLUE = 6
const nomodify byte* BORDER_COLOR = (byte*) 53280
const nomodify struct MOS6526_CIA* CIA1 = (struct MOS6526_CIA*) 56320
const nomodify byte* CIA1_INTERRUPT = (byte*) 56333
const nomodify struct MOS6526_CIA* CIA2 = (struct MOS6526_CIA*) 56576
const nomodify byte CIA_INTERRUPT_CLEAR = $7f
const nomodify byte COLLISION_BOTTOM = 2
const nomodify byte COLLISION_LEFT = 4
const nomodify byte COLLISION_NONE = 0
const nomodify byte COLLISION_PLAYFIELD = 1
const nomodify byte COLLISION_RIGHT = 8
const nomodify byte* COLS = (byte*) 55296
const nomodify byte CYAN = 3
const nomodify byte* D011 = (byte*) 53265
const nomodify byte* D018 = (byte*) 53272
const nomodify byte DARK_GREY = $b
const nomodify byte GREEN = 5
const nomodify byte GREY = $c
const nomodify void()** HARDWARE_IRQ = (void()**) 65534
const nomodify byte* IRQ_ENABLE = (byte*) 53274
const nomodify byte IRQ_RASTER = 1
const nomodify byte IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13
const nomodify byte* IRQ_STATUS = (byte*) 53273
const nomodify byte KEY_COMMA = $2f
const nomodify byte KEY_COMMODORE = $3d
const nomodify byte KEY_CTRL = $3a
const nomodify byte KEY_DOT = $2c
const nomodify byte KEY_LSHIFT = $f
const nomodify byte KEY_RSHIFT = $34
const nomodify byte KEY_SPACE = $3c
const nomodify byte KEY_X = $17
const nomodify byte KEY_Z = $c
const nomodify byte LIGHT_BLUE = $e
const nomodify byte LIGHT_GREEN = $d
const to_nomodify byte* MOVEDOWN_SLOW_SPEEDS[] = { $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }
const nomodify word OFFSET_SPRITE_PTRS = $3f8
const byte OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
const byte OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
const byte OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
const byte OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL = $12
const byte OFFSET_STRUCT_MOS6581_SID_CH3_FREQ = $e
const byte OFFSET_STRUCT_MOS6581_SID_CH3_OSC = $1b
const nomodify byte ORANGE = 8
const word* PIECES[] = { (word)PIECE_T, (word)PIECE_S, (word)PIECE_Z, (word)PIECE_J, (word)PIECE_O, (word)PIECE_I, (word)PIECE_L }
const byte* PIECES_CHARS[] = { $65, $66, $a6, $66, $65, $65, $a6 }
const byte* PIECES_COLORS_1[] = { BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED }
const byte* PIECES_COLORS_2[] = { CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE }
const byte* PIECES_NEXT_CHARS[] = { $63, $64, $a4, $64, $63, $63, $a4 }
const byte* PIECES_START_X[] = { 4, 4, 4, 4, 4, 4, 4 }
const byte* PIECES_START_Y[] = { 1, 1, 1, 1, 1, 0, 1 }
const byte* PIECE_I[$40] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 }
const byte* PIECE_J[$40] = { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }
const byte* PIECE_L[$40] = { 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 }
const byte* PIECE_O[$40] = { 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0 }
const byte* PIECE_S[$40] = { 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 }
const byte* PIECE_T[$40] = { 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }
const byte* PIECE_Z[$40] = { 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }
const nomodify byte PINK = $a
const byte* PLAYFIELD_CHARSET[] = kickasm {{ .fill 8,$00 // Place a filled char at the start of the charset
.import binary "playfield-screen.imap"
}}
const to_nomodify byte* PLAYFIELD_COLORS_ORIGINAL[] = kickasm {{ .import binary "playfield-screen.col"
}}
const nomodify byte PLAYFIELD_COLS = $a
const nomodify byte PLAYFIELD_LINES = $16
const nomodify byte* PLAYFIELD_SCREEN_1 = (byte*) 1024
const nomodify byte* PLAYFIELD_SCREEN_2 = (byte*) 11264
const to_nomodify byte* PLAYFIELD_SCREEN_ORIGINAL[] = kickasm {{ // Load chars for the screen
.var screen = LoadBinary("playfield-screen.iscr")
// Load extended colors for the screen
.var extended = LoadBinary("playfield-extended.col")
// screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8
// extended.get(i)-1 because the extended colors are 1-based (1/2/3/4)
// <<6 to move extended colors to the upper 2 bits
.fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 )
}}
const byte* PLAYFIELD_SPRITES[$1e*$40] = kickasm {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
// Put the sprites into memory
.for(var sy=0;sy<10;sy++) {
.var sprite_gfx_y = sy*20
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {
.var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21)
.for (var c=0; c<3; c++) {
.byte sprites.getSinglecolorByte(sx*3+c,gfx_y)
}
}
.byte 0
}
}
}}
const nomodify byte* PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+OFFSET_SPRITE_PTRS
const nomodify byte* PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+OFFSET_SPRITE_PTRS
const nomodify byte* PROCPORT = (byte*) 1
const nomodify byte* PROCPORT_DDR = (byte*) 0
const nomodify byte PROCPORT_DDR_MEMORY_MASK = 7
const nomodify byte PROCPORT_RAM_IO = 5
const nomodify byte PURPLE = 4
const nomodify byte* RASTER = (byte*) 53266
const nomodify byte RED = 2
const to_nomodify dword* SCORE_BASE_BCD[] = { 0, $40, $100, $300, $1200 }
const nomodify struct MOS6581_SID* SID = (struct MOS6581_SID*) 54272
const nomodify byte SID_CONTROL_NOISE = $80
const nomodify byte* SPRITES_COLOR = (byte*) 53287
const nomodify byte* SPRITES_ENABLE = (byte*) 53269
const nomodify byte* SPRITES_EXPAND_X = (byte*) 53277
const nomodify byte* SPRITES_EXPAND_Y = (byte*) 53271
const nomodify byte SPRITES_FIRST_YPOS = $31
const nomodify byte* SPRITES_MC = (byte*) 53276
const nomodify byte* SPRITES_XPOS = (byte*) 53248
const nomodify byte* SPRITES_YPOS = (byte*) 53249
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_ECM = $40
const nomodify byte VICII_RSEL = 8
void __start()
byte __start::__init1_toSpritePtr1_return
const byte __start::__init1_toSpritePtr1_return#0 __init1_toSpritePtr1_return = (byte)(word)PLAYFIELD_SPRITES/$40
byte* __start::__init1_toSpritePtr1_sprite
byte current_movedown_counter
byte current_movedown_counter#13 current_movedown_counter zp[1]:4 26666.933333333334
byte current_movedown_counter#15 current_movedown_counter zp[1]:4 2732.5135135135133
byte current_movedown_counter#17 current_movedown_counter zp[1]:4 7777.153846153846
const nomodify byte current_movedown_fast = $a
byte current_movedown_slow
byte current_movedown_slow#0 current_movedown_slow zp[1]:21 4.869565217391305
byte current_movedown_slow#13 current_movedown_slow zp[1]:21 41091.392857142855
byte current_movedown_slow#22 current_movedown_slow zp[1]:21 5435.243243243243
byte current_movedown_slow#24 current_movedown_slow zp[1]:21 442857.7142857142
byte current_movedown_slow#39 current_movedown_slow zp[1]:21 300003.0
byte current_movedown_slow#67 current_movedown_slow zp[1]:21 733333.4666666666
byte current_movedown_slow#9 current_movedown_slow zp[1]:21 2.0000002E7
byte current_orientation
byte current_orientation#12 current_orientation zp[1]:26 8137.972972972973
byte current_orientation#18 current_orientation zp[1]:26 1004.952380952381
byte current_orientation#21 current_orientation zp[1]:26 16530.79591836735
byte current_orientation#26 current_orientation zp[1]:26 51667.33333333333
byte current_orientation#39 current_orientation zp[1]:26 200002.0
byte current_orientation#6 current_orientation zp[1]:26 150001.5
byte* current_piece
byte* current_piece#100 current_piece_1 zp[2]:14 200002.0
byte* current_piece#101 current_piece_1 zp[2]:14 200002.0
byte* current_piece#102 current_piece_1 zp[2]:14 2000002.0
byte* current_piece#103 current_piece zp[2]:23 11.0
byte* current_piece#16 current_piece zp[2]:23 7706.51282051282
byte* current_piece#18 current_piece_1 zp[2]:14 1.1400006E7
byte* current_piece#23 current_piece zp[2]:23 8138.27027027027
byte* current_piece#30 current_piece zp[2]:23 300003.0
byte* current_piece#95 current_piece zp[2]:23 100001.0
byte* current_piece#98 current_piece_1 zp[2]:14 200002.0
byte* current_piece#99 current_piece_1 zp[2]:14 200002.0
byte current_piece_char
byte current_piece_char#100 current_piece_char_1 zp[1]:9 202.0
byte current_piece_char#17 current_piece_char zp[1]:25 5437.9729729729725
byte current_piece_char#23 current_piece_char zp[1]:25 1.8182183847272727E8
byte current_piece_char#31 current_piece_char zp[1]:25 300003.0
byte current_piece_char#4 current_piece_char zp[1]:25 34375.75
byte current_piece_char#70 current_piece_char_1 zp[1]:9 47624.42857142857
byte current_piece_char#99 current_piece_char_1 zp[1]:9 22.0
byte* current_piece_gfx
byte* current_piece_gfx#111 current_piece_gfx_1 zp[2]:7 11.0
byte* current_piece_gfx#112 current_piece_gfx_1 zp[2]:7 101.0
byte* current_piece_gfx#116 current_piece_gfx zp[2]:27 200002.0
byte* current_piece_gfx#12 current_piece_gfx zp[2]:27 1.8182183847272727E8
byte* current_piece_gfx#122 current_piece_gfx zp[2]:27 22.0
byte* current_piece_gfx#19 current_piece_gfx zp[2]:27 1009.7619047619048
byte* current_piece_gfx#21 current_piece_gfx zp[2]:27 15185.37037037037
byte* current_piece_gfx#22 current_piece_gfx zp[2]:27 51667.33333333333
byte* current_piece_gfx#37 current_piece_gfx zp[2]:27 300003.0
byte* current_piece_gfx#6 current_piece_gfx zp[2]:27 200002.0
byte* current_piece_gfx#66 current_piece_gfx_1 zp[2]:7 47624.42857142857
byte current_xpos
byte current_xpos#100 current_xpos zp[1]:29 67742.74193548388
byte current_xpos#118 current_xpos_1 zp[1]:6 7.333333333333333
byte current_xpos#119 current_xpos_1 zp[1]:6 67.33333333333333
byte current_xpos#13 current_xpos zp[1]:29 1.8187293036363635E7
byte current_xpos#2 current_xpos zp[1]:29 1009.7619047619048
byte current_xpos#23 current_xpos zp[1]:29 36400.4
byte current_xpos#27 current_xpos zp[1]:29 20333.566666666666
byte current_xpos#45 current_xpos zp[1]:29 300003.0
byte current_xpos#5 current_xpos zp[1]:29 200002.0
byte current_xpos#61 current_xpos_1 zp[1]:6 4767.285714285714
byte current_xpos#7 current_xpos zp[1]:29 200002.0
byte current_ypos
byte current_ypos#10 current_ypos zp[1]:17 35165.32432432432
byte current_ypos#14 reg byte x 1113.0
byte current_ypos#2 current_ypos zp[1]:17 200002.0
byte current_ypos#20 current_ypos zp[1]:17 6425.74358974359
byte current_ypos#40 current_ypos zp[1]:17 300003.0
byte current_ypos#5 current_ypos zp[1]:17 70000.83333333334
byte current_ypos#97 reg byte x 5.5
byte current_ypos#98 reg byte x 40.4
byte game_over
byte game_over#16 game_over zp[1]:30 5705.54054054054
byte game_over#22 game_over zp[1]:30 6567.760869565218
byte game_over#29 game_over zp[1]:30 300003.0
byte game_over#53 game_over zp[1]:30 47827.13043478261
byte game_over#66 game_over zp[1]:30 78572.35714285714
volatile byte irq_cnt loadstore zp[1]:44 0.48000000000000004
volatile byte irq_raster_next loadstore zp[1]:41 0.44444444444444453
volatile byte irq_sprite_ptr loadstore zp[1]:43 0.45161290322580644
volatile byte irq_sprite_ypos loadstore zp[1]:42 0.48275862068965525
byte keyboard_event_get()
byte keyboard_event_get::return
byte keyboard_event_get::return#1 reg byte a 20002.0
byte keyboard_event_get::return#2 reg byte a 3667.333333333333
byte keyboard_event_get::return#3 reg byte a 2002.0
byte keyboard_event_pressed(byte keyboard_event_pressed::keycode)
byte~ keyboard_event_pressed::$0 reg byte y 2000002.0
byte~ keyboard_event_pressed::$1 reg byte x 2000002.0
byte keyboard_event_pressed::keycode
byte keyboard_event_pressed::keycode#5 reg byte x 666667.3333333334
byte keyboard_event_pressed::return
byte keyboard_event_pressed::return#0 reg byte a 20002.0
byte keyboard_event_pressed::return#1 reg byte a 20002.0
byte keyboard_event_pressed::return#10 reg byte a 20002.0
byte keyboard_event_pressed::return#11 reg byte a 162857.99999999997
byte keyboard_event_pressed::return#12 reg byte a 200002.0
byte keyboard_event_pressed::return#2 reg byte a 20002.0
byte keyboard_event_pressed::row_bits
byte keyboard_event_pressed::row_bits#0 reg byte y 1000001.0
void keyboard_event_scan()
byte~ keyboard_event_scan::$0 reg byte a 20002.0
byte~ keyboard_event_scan::$15 reg byte a 2.00000002E8
byte~ keyboard_event_scan::$16 reg byte a 2.00000002E8
byte~ keyboard_event_scan::$23 reg byte a 2.00000002E8
byte~ keyboard_event_scan::$3 reg byte a 20002.0
byte~ keyboard_event_scan::$6 reg byte a 20002.0
byte~ keyboard_event_scan::$9 reg byte a 20002.0
byte keyboard_event_scan::col
byte keyboard_event_scan::col#1 reg byte x 1.500000015E8
byte keyboard_event_scan::col#2 reg byte x 2.857142885714286E7
byte keyboard_event_scan::event_type
byte keyboard_event_scan::event_type#0 reg byte a 2.00000002E8
byte keyboard_event_scan::keycode
byte keyboard_event_scan::keycode#1 keycode zp[1]:35 2.0000002E7
byte keyboard_event_scan::keycode#10 keycode zp[1]:35 3.153846192307692E7
byte keyboard_event_scan::keycode#11 keycode zp[1]:35 5000000.5
byte keyboard_event_scan::keycode#13 keycode zp[1]:35 1.0000001E7
byte keyboard_event_scan::keycode#14 keycode zp[1]:35 5.250000075E7
byte keyboard_event_scan::row
byte keyboard_event_scan::row#1 row zp[1]:11 1.50000015E7
byte keyboard_event_scan::row#2 row zp[1]:11 6000000.24
byte keyboard_event_scan::row_scan
byte keyboard_event_scan::row_scan#0 row_scan zp[1]:51 1.2777778055555556E7
const byte* keyboard_events[8] = { fill( 8, 0) }
byte keyboard_events_size
byte keyboard_events_size#0 keyboard_events_size zp[1]:10 2.00000002E8
byte keyboard_events_size#1 keyboard_events_size zp[1]:10 2.00000002E8
byte keyboard_events_size#11 keyboard_events_size zp[1]:10 8.100000089999999E7
byte keyboard_events_size#14 keyboard_events_size zp[1]:10 968709.8709677419
byte keyboard_events_size#17 keyboard_events_size zp[1]:10 811.6923076923076
byte keyboard_events_size#20 keyboard_events_size zp[1]:10 1850.5
byte keyboard_events_size#3 keyboard_events_size zp[1]:10 15001.5
byte keyboard_events_size#31 keyboard_events_size zp[1]:10 1.020000012E8
byte keyboard_events_size#32 keyboard_events_size zp[1]:10 4287143.428571429
const byte* keyboard_matrix_col_bitmask[8] = { 1, 2, 4, 8, $10, $20, $40, $80 }
byte keyboard_matrix_read(byte keyboard_matrix_read::rowid)
byte keyboard_matrix_read::return
byte keyboard_matrix_read::return#0 reg byte a 3.6666667333333336E7
byte keyboard_matrix_read::return#2 reg byte a 2.0000002E7
byte keyboard_matrix_read::row_pressed_bits
byte keyboard_matrix_read::rowid
byte keyboard_matrix_read::rowid#0 reg byte x 1.10000002E8
const byte* keyboard_matrix_row_bitmask[8] = { $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f }
byte keyboard_modifiers
const byte* keyboard_scan_values[8] = { fill( 8, 0) }
byte level
byte level#18 level zp[1]:20 5435.243243243243
byte level#20 level zp[1]:20 442857.7142857142
byte level#22 level zp[1]:20 1722222.4444444445
byte level#25 level zp[1]:20 185168.31818181818
byte level#35 level zp[1]:20 300003.0
byte level_bcd
byte level_bcd#10 level_bcd zp[1]:22 200018.1475409836
byte level_bcd#18 level_bcd zp[1]:22 3425.508474576271
byte level_bcd#20 level_bcd zp[1]:22 442857.7142857142
byte level_bcd#22 level_bcd zp[1]:22 1.3333334666666666E7
byte level_bcd#33 level_bcd zp[1]:22 300003.0
byte level_bcd#63 level_bcd zp[1]:22 2100000.3
byte level_bcd#7 level_bcd zp[1]:22 2.0000002E7
word lines_bcd
word lines_bcd#16 lines_bcd zp[2]:18 3442.4745762711864
word lines_bcd#18 lines_bcd zp[2]:18 442857.7142857142
word lines_bcd#20 lines_bcd zp[2]:18 64022.14
word lines_bcd#28 lines_bcd zp[2]:18 300003.0
word lines_bcd#31 lines_bcd zp[2]:18 500000.5
void main()
byte main::key_event
byte main::key_event#0 reg byte x 1001.0
byte main::render
byte main::render#1 reg byte a 2002.0
byte next_piece_idx
byte next_piece_idx#13 reg byte y 422.79999999999995
byte next_piece_idx#17 next_piece_idx zp[1]:31 5437.9729729729725
byte next_piece_idx#18 next_piece_idx zp[1]:31 1100013.0
byte next_piece_idx#23 next_piece_idx zp[1]:31 6546.0
byte next_piece_idx#32 next_piece_idx zp[1]:31 300003.0
byte next_piece_idx#79 reg byte y 22.0
byte next_piece_idx#80 reg byte y 202.0
byte play_collision(byte play_collision::xpos , byte play_collision::ypos , byte play_collision::orientation)
byte~ play_collision::$14 reg byte a 2.0000000002E10
byte~ play_collision::$5 reg byte a 2.00000000002E11
byte play_collision::c
byte play_collision::c#1 reg byte x 1.00000000001E11
byte play_collision::c#2 reg byte x 2.2222222222444443E10
byte play_collision::i
byte play_collision::i#1 i zp[1]:56 1.6153846154076923E10
byte play_collision::i#10 i_1 zp[1]:57 2.0000000002E10
byte play_collision::i#12 i_1 zp[1]:57 2.00000000002E11
byte play_collision::i#2 i_1 zp[1]:57 1.55000000002E11
byte play_collision::i#3 i_1 zp[1]:57 5.0000000005E9
byte play_collision::l
byte play_collision::l#1 l zp[1]:51 1.0000000001E10
byte play_collision::l#6 l zp[1]:51 1.1764705883529413E9
byte play_collision::orientation
byte play_collision::orientation#0 reg byte x 100001.0
byte play_collision::orientation#1 reg byte x 100001.0
byte play_collision::orientation#2 reg byte x 100001.0
byte play_collision::orientation#3 reg byte x 100001.0
byte play_collision::orientation#5 reg byte x 1.0400005E7
byte* play_collision::piece_gfx
byte* play_collision::piece_gfx#0 piece_gfx zp[2]:52 4.762380952476191E9
byte* play_collision::playfield_line
byte* play_collision::playfield_line#0 playfield_line zp[2]:54 7.857142857285714E9
byte play_collision::return
byte play_collision::return#0 reg byte a 200002.0
byte play_collision::return#1 reg byte a 200002.0
byte play_collision::return#10 reg byte a 2000002.0
byte play_collision::return#13 reg byte a 200002.0
byte play_collision::return#14 reg byte a 200002.0
byte play_collision::return#15 reg byte a 200000.71428571423
byte play_collision::xp
byte play_collision::xp#1 xp zp[1]:34 5.00000000005E10
byte play_collision::xp#2 xp zp[1]:34 6.375000000075E10
byte play_collision::xp#8 xp zp[1]:34 2.0000000002E10
byte play_collision::xpos
byte play_collision::xpos#0 xpos zp[1]:16 66667.33333333333
byte play_collision::xpos#1 xpos zp[1]:16 50000.5
byte play_collision::xpos#2 xpos zp[1]:16 50000.5
byte play_collision::xpos#3 xpos zp[1]:16 50000.5
byte play_collision::xpos#4 xpos zp[1]:16 666667.3333333334
byte play_collision::xpos#6 xpos zp[1]:16 4.546090911818181E8
byte play_collision::yp
byte play_collision::yp#0 yp zp[1]:50 5700003.0
byte play_collision::yp#1 yp zp[1]:50 5.0000000005E9
byte play_collision::yp#2 yp zp[1]:50 8.1256250003125E9
byte play_collision::ypos
byte play_collision::ypos#0 ypos zp[1]:50 50000.5
byte play_collision::ypos#1 ypos zp[1]:50 66667.33333333333
byte play_collision::ypos#2 ypos zp[1]:50 66667.33333333333
byte play_collision::ypos#3 ypos zp[1]:50 66667.33333333333
byte play_collision::ypos#4 ypos zp[1]:50 1000001.0
void play_increase_level()
byte~ play_increase_level::$1 reg byte a 2.0000002E7
byte~ play_increase_level::$5 reg byte a 4.0000000004E10
byte play_increase_level::b
byte play_increase_level::b#1 reg byte x 1.50000000015E10
byte play_increase_level::b#2 reg byte x 1.0000000001E10
void play_init()
byte~ play_init::$2 reg byte x 2002.0
byte~ play_init::$3 reg byte a 3003.0
byte play_init::b
byte play_init::b#1 reg byte x 1501.5
byte play_init::b#2 reg byte x 1001.0
byte play_init::idx
byte play_init::idx#1 idx zp[1]:34 667.3333333333334
byte play_init::idx#2 idx zp[1]:34 600.5999999999999
byte play_init::j
byte play_init::j#1 reg byte y 1501.5
byte play_init::j#2 reg byte y 667.3333333333334
byte* play_init::pli
byte* play_init::pli#1 pli zp[2]:12 500.5
byte* play_init::pli#2 pli zp[2]:12 750.75
void play_lock_current()
byte~ play_lock_current::$4 reg byte a 2.000000002E9
byte play_lock_current::c
byte play_lock_current::c#1 reg byte x 1.0000000001E10
byte play_lock_current::c#2 reg byte x 4.0000000004E9
byte play_lock_current::i
byte play_lock_current::i#1 i zp[1]:56 2.333333333666667E9
byte play_lock_current::i#2 i_1 zp[1]:57 1.5500000002E10
byte play_lock_current::i#3 i_1 zp[1]:57 5.000000005E8
byte play_lock_current::i#7 i_1 zp[1]:57 2.000000002E9
byte play_lock_current::i#9 i_1 zp[1]:57 2.0000000002E10
byte play_lock_current::l
byte play_lock_current::l#1 l zp[1]:51 1.000000001E9
byte play_lock_current::l#6 l zp[1]:51 1.53846154E8
byte* play_lock_current::playfield_line
byte* play_lock_current::playfield_line#0 playfield_line zp[2]:54 1.1000000002E9
byte play_lock_current::xp
byte play_lock_current::xp#0 xp zp[1]:34 2.000000002E9
byte play_lock_current::xp#1 xp zp[1]:34 5.0000000005E9
byte play_lock_current::xp#2 xp zp[1]:34 7.750000001E9
byte play_lock_current::yp
byte play_lock_current::yp#0 yp zp[1]:50 2000002.0
byte play_lock_current::yp#1 yp zp[1]:50 5.000000005E8
byte play_lock_current::yp#2 yp zp[1]:50 2.500833336666667E8
byte play_move_down(byte play_move_down::key_event)
byte~ play_move_down::$12 reg byte a 200002.0
byte~ play_move_down::$2 reg byte a 200002.0
byte play_move_down::key_event
byte play_move_down::key_event#0 reg byte a 55001.0
byte play_move_down::movedown
byte play_move_down::movedown#10 movedown zp[1]:16 50000.5
byte play_move_down::movedown#2 movedown zp[1]:16 200002.0
byte play_move_down::movedown#3 movedown zp[1]:16 200002.0
byte play_move_down::movedown#6 movedown zp[1]:16 300003.0
byte play_move_down::movedown#7 movedown zp[1]:16 250002.5
byte play_move_down::removed
byte play_move_down::removed#0 reg byte a 200002.0
byte play_move_down::return
byte play_move_down::return#0 reg byte a 20002.0
byte play_move_down::return#3 reg byte x 3333.6666666666665
byte play_move_leftright(byte play_move_leftright::key_event)
byte~ play_move_leftright::$4 reg byte a 200002.0
byte~ play_move_leftright::$8 reg byte a 200002.0
byte play_move_leftright::key_event
byte play_move_leftright::key_event#0 reg byte a 105001.5
byte play_move_leftright::return
byte play_move_leftright::return#0 reg byte a 20002.0
byte play_move_leftright::return#2 reg byte a 3333.6666666666665
byte play_move_rotate(byte play_move_rotate::key_event)
byte~ play_move_rotate::$2 reg byte a 200002.0
byte~ play_move_rotate::$5 reg byte x 200002.0
byte~ play_move_rotate::$7 reg byte a 200002.0
byte play_move_rotate::key_event
byte play_move_rotate::key_event#0 reg byte a 105001.5
byte play_move_rotate::orientation
byte play_move_rotate::orientation#1 orientation zp[1]:35 200002.0
byte play_move_rotate::orientation#2 orientation zp[1]:35 200002.0
byte play_move_rotate::orientation#3 orientation zp[1]:35 44444.88888888889
byte play_move_rotate::return
byte play_move_rotate::return#0 reg byte a 20002.0
byte play_move_rotate::return#2 reg byte a 3333.6666666666665
byte play_movement(byte play_movement::key_event)
byte~ play_movement::$3 reg byte a 20002.0
byte~ play_movement::$4 reg byte a 20002.0
byte play_movement::key_event
byte play_movement::key_event#0 key_event zp[1]:46 2818.5454545454545
byte play_movement::render
byte play_movement::render#1 render zp[1]:11 5000.5
byte play_movement::render#2 render zp[1]:11 4000.4
byte play_movement::return
byte play_movement::return#0 return zp[1]:11 20002.0
byte play_movement::return#2 return zp[1]:11 7001.0
byte play_movement::return#3 reg byte a 2002.0
byte play_remove_lines()
byte play_remove_lines::c
byte play_remove_lines::c#0 c zp[1]:57 6.0000000006E9
byte play_remove_lines::full
byte play_remove_lines::full#2 full zp[1]:51 4.2000000006E9
byte play_remove_lines::full#4 full zp[1]:51 4.0000000004E9
byte play_remove_lines::r
byte play_remove_lines::r#1 reg byte y 1.5000000002142856E9
byte play_remove_lines::r#2 reg byte y 1.5500000002E10
byte play_remove_lines::r#3 reg byte y 2.000000002E9
byte play_remove_lines::removed
byte play_remove_lines::removed#1 removed zp[1]:47 2.000000002E9
byte play_remove_lines::removed#11 removed zp[1]:47 2.30769231E8
byte play_remove_lines::removed#7 removed zp[1]:47 3.333444448888889E8
byte play_remove_lines::return
byte play_remove_lines::return#0 reg byte a 200002.0
byte play_remove_lines::w
byte play_remove_lines::w#1 reg byte x 5.500000001E9
byte play_remove_lines::w#11 reg byte x 1.3333333346666667E9
byte play_remove_lines::w#12 reg byte x 2.000000002E9
byte play_remove_lines::w#2 reg byte x 1.000000001E9
byte play_remove_lines::w#3 reg byte x 2.000000002E9
byte play_remove_lines::w#4 reg byte x 4.428571429142857E9
byte play_remove_lines::w#6 reg byte x 1.6666666683333335E9
byte play_remove_lines::x
byte play_remove_lines::x#1 x zp[1]:50 1.50000000015E10
byte play_remove_lines::x#2 x zp[1]:50 2.50000000025E9
byte play_remove_lines::y
byte play_remove_lines::y#1 y zp[1]:35 1.5000000015E9
byte play_remove_lines::y#8 y zp[1]:35 1.3333333346666667E8
void play_spawn_current()
byte~ play_spawn_current::$1 reg byte a 2000002.0
byte~ play_spawn_current::$7 zp[1]:47 32258.09677419355
byte play_spawn_current::current_piece_idx
byte play_spawn_current::current_piece_idx#0 reg byte x 1250001.25
byte play_spawn_current::piece_idx
byte play_spawn_current::piece_idx#1 piece_idx zp[1]:31 2.000000002E9
byte play_spawn_current::piece_idx#2 piece_idx zp[1]:31 1.000050018E8
byte play_spawn_current::sid_rnd1_return
byte play_spawn_current::sid_rnd1_return#0 reg byte a 2.000000002E9
void play_update_score(byte play_update_score::removed)
byte~ play_update_score::$2 reg byte a 2000002.0
byte~ play_update_score::$4 reg byte a 2000002.0
byte~ play_update_score::$9 reg byte a 2000002.0
dword play_update_score::add_bcd
dword play_update_score::add_bcd#0 add_bcd zp[4]:58 666667.3333333334
byte play_update_score::lines_after
byte play_update_score::lines_after#0 reg byte a 2000002.0
byte play_update_score::lines_before
byte play_update_score::lines_before#0 lines_before zp[1]:57 222222.44444444444
byte play_update_score::removed
byte play_update_score::removed#0 reg byte x 442857.7142857142
const byte* playfield[PLAYFIELD_LINES*PLAYFIELD_COLS] = { fill( PLAYFIELD_LINES*PLAYFIELD_COLS, 0) }
const byte** playfield_lines[PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
const byte* playfield_lines_idx[PLAYFIELD_LINES+1] = { fill( PLAYFIELD_LINES+1, 0) }
void render_bcd(byte* render_bcd::screen , word render_bcd::offset , byte render_bcd::bcd , byte render_bcd::only_low)
byte~ render_bcd::$3 reg byte a 20002.0
byte~ render_bcd::$4 reg byte a 20002.0
byte~ render_bcd::$5 reg byte a 20002.0
byte~ render_bcd::$6 reg byte a 20002.0
const nomodify byte render_bcd::ZERO_CHAR = $35
byte render_bcd::bcd
byte render_bcd::bcd#0 reg byte x 2002.0
byte render_bcd::bcd#1 reg byte x 2002.0
byte render_bcd::bcd#2 reg byte x 2002.0
byte render_bcd::bcd#3 reg byte x 1001.0
byte render_bcd::bcd#4 reg byte x 1001.0
byte render_bcd::bcd#5 reg byte x 2002.0
byte render_bcd::bcd#6 reg byte x 3251.0
word render_bcd::offset
word render_bcd::offset#6 offset zp[2]:32 10001.0
byte render_bcd::only_low
byte render_bcd::only_low#6 reg byte y 5000.5
byte* render_bcd::screen
byte* render_bcd::screen#0 screen zp[2]:12 1001.0
byte* render_bcd::screen#1 screen zp[2]:12 1001.0
byte* render_bcd::screen#2 screen zp[2]:12 1001.0
byte* render_bcd::screen#3 screen zp[2]:12 2002.0
byte* render_bcd::screen#4 screen zp[2]:12 2002.0
byte* render_bcd::screen#5 screen zp[2]:12 1001.0
byte* render_bcd::screen#6 screen zp[2]:12 16007.0
byte* render_bcd::screen_pos
byte* render_bcd::screen_pos#0 screen_pos zp[2]:32 8000.8
byte* render_bcd::screen_pos#2 screen_pos zp[2]:32 20002.0
byte* render_bcd::screen_pos#3 screen_pos zp[2]:32 10001.0
void render_init()
byte~ render_init::$5 reg byte x 1501.5
byte render_init::i
byte render_init::i#1 reg byte y 1501.5
byte render_init::i#2 reg byte y 500.5
byte* render_init::li_1
byte* render_init::li_1#1 li_1 zp[2]:12 500.5
byte* render_init::li_1#2 li_1 zp[2]:12 750.75
byte* render_init::li_2
byte* render_init::li_2#1 li_2 zp[2]:54 667.3333333333334
byte* render_init::li_2#2 li_2 zp[2]:54 600.5999999999999
byte* render_init::vicSelectGfxBank1_gfx
byte* render_init::vicSelectGfxBank1_toDd001_gfx
byte render_init::vicSelectGfxBank1_toDd001_return
const byte render_init::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = 3^>(word)PLAYFIELD_CHARSET/$40
void render_moving()
byte~ render_moving::$1 reg byte a 200002.0
byte~ render_moving::$6 reg byte a 200002.0
byte render_moving::c
byte render_moving::c#1 reg byte x 1500001.5
byte render_moving::c#2 reg byte x 333333.6666666667
byte render_moving::current_cell
byte render_moving::current_cell#0 reg byte a 1000001.0
byte render_moving::i
byte render_moving::i#1 i zp[1]:35 200002.0
byte render_moving::i#2 i zp[1]:35 500000.5
byte render_moving::i#3 i zp[1]:35 50000.5
byte render_moving::i#4 i zp[1]:35 1550002.0
byte render_moving::i#8 i zp[1]:35 300000.75
byte render_moving::l
byte render_moving::l#1 l zp[1]:11 150001.5
byte render_moving::l#4 l zp[1]:11 11764.823529411764
byte* render_moving::screen_line
byte* render_moving::screen_line#0 screen_line zp[2]:48 110000.20000000001
byte render_moving::xpos
byte render_moving::xpos#0 xpos zp[1]:16 200002.0
byte render_moving::xpos#1 xpos zp[1]:16 666667.3333333334
byte render_moving::xpos#2 xpos zp[1]:16 620000.8
byte render_moving::ypos
byte render_moving::ypos#0 ypos zp[1]:34 2002.0
byte render_moving::ypos#1 ypos zp[1]:34 66667.33333333333
byte render_moving::ypos#2 ypos zp[1]:34 25062.8125
void render_next()
byte~ render_next::$6 reg byte x 500.5
byte render_next::c
byte render_next::c#1 reg byte x 1500001.5
byte render_next::c#2 reg byte x 285714.5714285714
byte render_next::cell
byte render_next::cell#0 reg byte a 1000001.0
byte render_next::l
byte render_next::l#1 l zp[1]:16 150001.5
byte render_next::l#7 l zp[1]:16 18182.0
const word render_next::next_area_offset = (word)$28*$c+$18+4
byte render_next::next_piece_char
byte render_next::next_piece_char#0 next_piece_char zp[1]:50 66733.46666666667
byte* render_next::next_piece_gfx
byte* render_next::next_piece_gfx#1 next_piece_gfx zp[2]:12 210000.30000000002
byte* render_next::next_piece_gfx#2 next_piece_gfx zp[2]:12 1550002.0
byte* render_next::next_piece_gfx#3 next_piece_gfx zp[2]:12 201003.0
byte* render_next::next_piece_gfx#8 next_piece_gfx zp[2]:12 2002.0
byte* render_next::screen_next_area
byte* render_next::screen_next_area#10 screen_next_area zp[2]:54 201003.0
byte* render_next::screen_next_area#11 screen_next_area zp[2]:54 250.25
byte* render_next::screen_next_area#3 screen_next_area zp[2]:54 700001.0
byte* render_next::screen_next_area#4 screen_next_area zp[2]:54 66667.33333333333
byte* render_next::screen_next_area#5 screen_next_area zp[2]:54 683334.1666666667
void render_playfield()
byte~ render_playfield::$0 reg byte a 200002.0
byte~ render_playfield::$3 reg byte a 200002.0
byte render_playfield::c
byte render_playfield::c#1 c zp[1]:35 1500001.5
byte render_playfield::c#2 c zp[1]:35 500000.5
byte render_playfield::i
byte render_playfield::i#1 i zp[1]:11 420000.60000000003
byte render_playfield::i#2 i zp[1]:11 1033334.6666666667
byte render_playfield::i#3 i zp[1]:11 50000.5
byte render_playfield::l
byte render_playfield::l#1 l zp[1]:34 150001.5
byte render_playfield::l#2 l zp[1]:34 30000.300000000003
byte* render_playfield::screen_line
byte* render_playfield::screen_line#0 screen_line zp[2]:54 200002.0
byte* render_playfield::screen_line#1 screen_line zp[2]:54 500000.5
byte* render_playfield::screen_line#2 screen_line zp[2]:54 1550002.0
void render_score()
const word render_score::level_offset = (word)$28*$13+$1f
const word render_score::lines_offset = (word)$28*1+$16
const byte* render_score::score_bytes = (byte*)&score_bcd
const word render_score::score_offset = (word)$28*5+$1c
byte* render_score::screen
byte* render_score::screen#3 screen zp[2]:12 375.375
void render_screen_original(byte* render_screen_original::screen)
const byte render_screen_original::SPACE = 0
byte* render_screen_original::cols
byte* render_screen_original::cols#1 cols zp[2]:52 100001.0
byte* render_screen_original::cols#2 cols zp[2]:52 75000.75
byte* render_screen_original::cols#3 cols zp[2]:52 42000.600000000006
byte* render_screen_original::cols#4 cols zp[2]:52 77501.0
byte* render_screen_original::cols#5 cols zp[2]:52 80000.8
byte* render_screen_original::cols#6 cols zp[2]:52 100001.0
byte* render_screen_original::cols#7 cols zp[2]:52 20002.0
byte* render_screen_original::ocols
byte* render_screen_original::ocols#1 ocols zp[2]:32 17500.25
byte* render_screen_original::ocols#2 ocols zp[2]:32 66667.33333333333
byte* render_screen_original::ocols#4 ocols zp[2]:32 13750.25
byte* render_screen_original::oscr
byte* render_screen_original::oscr#1 oscr zp[2]:54 14000.2
byte* render_screen_original::oscr#2 oscr zp[2]:54 133334.66666666666
byte* render_screen_original::oscr#4 oscr zp[2]:54 13750.25
byte* render_screen_original::screen
byte* render_screen_original::screen#10 screen zp[2]:48 30000.428571428572
byte* render_screen_original::screen#2 screen zp[2]:48 60000.600000000006
byte* render_screen_original::screen#3 screen zp[2]:48 42857.57142857143
byte* render_screen_original::screen#5 screen zp[2]:48 155002.0
byte* render_screen_original::screen#6 screen zp[2]:48 200002.0
byte* render_screen_original::screen#7 screen zp[2]:48 200002.0
byte* render_screen_original::screen#8 screen zp[2]:48 21003.0
byte* render_screen_original::screen#9 screen zp[2]:48 1001.0
byte render_screen_original::x
byte render_screen_original::x#1 reg byte x 200002.0
byte render_screen_original::x#2 reg byte x 200002.0
byte render_screen_original::x#3 reg byte x 150001.5
byte render_screen_original::x#4 reg byte x 40000.4
byte render_screen_original::x#5 reg byte x 42857.57142857143
byte render_screen_original::x#6 reg byte x 60000.600000000006
byte render_screen_original::y
byte render_screen_original::y#1 y zp[1]:35 15001.5
byte render_screen_original::y#6 y zp[1]:35 833.4166666666666
byte render_screen_render
byte render_screen_render#12 render_screen_render zp[1]:3 275.5
byte render_screen_render#16 reg byte x 1102.0
byte render_screen_render#19 render_screen_render zp[1]:3 84.76923076923077
byte render_screen_render#24 reg byte x 7700.153846153846
byte render_screen_render#35 render_screen_render_1 zp[1]:5 4766.761904761905
byte render_screen_render#63 reg byte x 202.0
byte render_screen_render#64 render_screen_render_1 zp[1]:5 50.5
byte render_screen_render#65 reg byte x 101.0
byte render_screen_show
byte render_screen_show#14 render_screen_show zp[1]:2 367.33333333333337
byte render_screen_show#17 render_screen_show zp[1]:2 577.65
volatile byte render_screen_showing loadstore zp[1]:36 1000.5
void render_screen_swap()
void render_show()
byte render_show::d018val
byte render_show::d018val#3 reg byte a 10001.0
byte* render_show::toD0181_gfx
byte render_show::toD0181_return
const byte render_show::toD0181_return#0 toD0181_return = >(word)PLAYFIELD_SCREEN_1&$3fff*4|>(word)PLAYFIELD_CHARSET/4&$f
byte* render_show::toD0181_screen
byte* render_show::toD0182_gfx
byte render_show::toD0182_return
const byte render_show::toD0182_return#0 toD0182_return = >(word)PLAYFIELD_SCREEN_2&$3fff*4|>(word)PLAYFIELD_CHARSET/4&$f
byte* render_show::toD0182_screen
const dword* score_add_bcd[5] = { fill( 5, 0) }
volatile dword score_bcd loadstore zp[4]:37 14705.911764705883
const byte** screen_lines_1[PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
const byte** screen_lines_2[PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
void sprites_init()
byte sprites_init::s
byte sprites_init::s#1 reg byte y 1501.5
byte sprites_init::s#2 reg byte y 800.8
byte sprites_init::s2
byte sprites_init::s2#0 reg byte x 2002.0
byte sprites_init::xpos
byte sprites_init::xpos#1 xpos zp[1]:34 667.3333333333334
byte sprites_init::xpos#2 xpos zp[1]:34 750.75
__interrupt(hardware_clobber) void sprites_irq()
byte~ sprites_irq::$0 reg byte x 4.0
byte sprites_irq::ptr
byte sprites_irq::ptr#0 reg byte x 2.5
byte sprites_irq::ptr#1 reg byte x 2.6666666666666665
byte sprites_irq::ptr#2 reg byte a 4.0
byte sprites_irq::ptr#3 reg byte a 2.6666666666666665
byte sprites_irq::ptr#4 reg byte a 4.0
volatile byte sprites_irq::raster_sprite_gfx_modify loadstore zp[1]:45 6.5
byte sprites_irq::toSpritePtr1_return
const byte sprites_irq::toSpritePtr1_return#0 toSpritePtr1_return = (byte)(word)PLAYFIELD_SPRITES/$40
byte* sprites_irq::toSpritePtr1_sprite
byte sprites_irq::ypos
byte sprites_irq::ypos#0 reg byte a 2.5
void sprites_irq_init()
zp[1]:2 [ render_screen_show#17 render_screen_show#14 ]
zp[1]:3 [ render_screen_render#19 render_screen_render#12 ]
zp[1]:4 [ current_movedown_counter#17 current_movedown_counter#15 current_movedown_counter#13 ]
reg byte y [ render_init::i#2 render_init::i#1 ]
reg byte y [ sprites_init::s#2 sprites_init::s#1 ]
reg byte y [ play_init::j#2 play_init::j#1 ]
reg byte x [ play_init::b#2 play_init::b#1 ]
reg byte x [ render_screen_render#24 render_screen_render#63 ]
reg byte x [ current_ypos#14 current_ypos#97 current_ypos#98 ]
zp[1]:5 [ render_screen_render#35 render_screen_render#64 ]
zp[1]:6 [ current_xpos#61 current_xpos#118 current_xpos#119 ]
zp[2]:7 [ current_piece_gfx#66 current_piece_gfx#111 current_piece_gfx#112 ]
zp[1]:9 [ current_piece_char#70 current_piece_char#99 current_piece_char#100 ]
reg byte x [ render_moving::c#2 render_moving::c#1 ]
reg byte x [ render_screen_render#16 render_screen_render#65 ]
reg byte y [ next_piece_idx#13 next_piece_idx#79 next_piece_idx#80 ]
reg byte x [ render_next::c#2 render_next::c#1 ]
reg byte a [ render_show::d018val#3 ]
reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
zp[1]:10 [ keyboard_events_size#11 keyboard_events_size#32 keyboard_events_size#20 keyboard_events_size#17 keyboard_events_size#14 keyboard_events_size#31 keyboard_events_size#0 keyboard_events_size#1 keyboard_events_size#3 ]
reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
zp[1]:11 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 keyboard_event_scan::row#2 keyboard_event_scan::row#1 render_moving::l#4 render_moving::l#1 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
zp[2]:12 [ render_score::screen#3 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 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#8 render_next::next_piece_gfx#1 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 ]
reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ]
zp[2]:14 [ current_piece#18 current_piece#98 current_piece#99 current_piece#100 current_piece#101 current_piece#102 ]
reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
reg byte x [ play_collision::c#2 play_collision::c#1 ]
reg byte a [ play_collision::return#15 ]
reg byte x [ keyboard_event_pressed::keycode#5 ]
zp[1]:16 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 render_next::l#7 render_next::l#1 render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
zp[1]:17 [ current_ypos#40 current_ypos#2 current_ypos#10 current_ypos#5 current_ypos#20 ]
zp[2]:18 [ lines_bcd#28 lines_bcd#20 lines_bcd#16 lines_bcd#18 lines_bcd#31 ]
zp[1]:20 [ level#35 level#25 level#18 level#20 level#22 ]
zp[1]:21 [ current_movedown_slow#39 current_movedown_slow#13 current_movedown_slow#0 current_movedown_slow#22 current_movedown_slow#24 current_movedown_slow#67 current_movedown_slow#9 ]
zp[1]:22 [ level_bcd#33 level_bcd#10 level_bcd#18 level_bcd#20 level_bcd#63 level_bcd#22 level_bcd#7 ]
zp[2]:23 [ current_piece#30 current_piece#23 current_piece#103 current_piece#16 current_piece#95 ]
zp[1]:25 [ current_piece_char#31 current_piece_char#23 current_piece_char#4 current_piece_char#17 ]
zp[1]:26 [ current_orientation#39 current_orientation#12 current_orientation#18 current_orientation#21 current_orientation#26 current_orientation#6 ]
zp[2]:27 [ current_piece_gfx#37 current_piece_gfx#12 current_piece_gfx#122 current_piece_gfx#19 current_piece_gfx#21 current_piece_gfx#22 current_piece_gfx#116 current_piece_gfx#6 ]
zp[1]:29 [ current_xpos#45 current_xpos#13 current_xpos#100 current_xpos#2 current_xpos#23 current_xpos#27 current_xpos#5 current_xpos#7 ]
zp[1]:30 [ game_over#29 game_over#66 game_over#22 game_over#53 game_over#16 ]
zp[1]:31 [ next_piece_idx#32 next_piece_idx#18 next_piece_idx#23 play_spawn_current::piece_idx#2 next_piece_idx#17 play_spawn_current::piece_idx#1 ]
reg byte x [ play_move_down::return#3 ]
reg byte a [ play_move_leftright::return#2 ]
reg byte a [ play_move_rotate::return#2 ]
zp[2]:32 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ]
reg byte y [ render_bcd::only_low#6 ]
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[1]:34 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 render_playfield::l#2 render_playfield::l#1 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 ]
reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ]
zp[1]:35 [ play_remove_lines::y#8 play_remove_lines::y#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 render_screen_original::y#6 render_screen_original::y#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 render_playfield::c#2 render_playfield::c#1 ]
reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ]
reg byte x [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ]
reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ]
zp[1]:36 [ render_screen_showing ]
zp[4]:37 [ score_bcd ]
zp[1]:41 [ irq_raster_next ]
zp[1]:42 [ irq_sprite_ypos ]
zp[1]:43 [ irq_sprite_ptr ]
zp[1]:44 [ irq_cnt ]
reg byte a [ sprites_irq::ypos#0 ]
reg byte x [ sprites_irq::$0 ]
zp[1]:45 [ sprites_irq::raster_sprite_gfx_modify ]
reg byte x [ sprites_irq::ptr#0 ]
reg byte a [ sprites_irq::ptr#3 ]
reg byte a [ sprites_irq::ptr#4 ]
reg byte x [ sprites_irq::ptr#1 ]
reg byte a [ sprites_irq::ptr#2 ]
reg byte a [ keyboard_event_get::return#3 ]
reg byte x [ main::key_event#0 ]
zp[1]:46 [ play_movement::key_event#0 ]
reg byte a [ play_movement::return#3 ]
reg byte a [ main::render#1 ]
reg byte x [ render_init::$5 ]
reg byte x [ sprites_init::s2#0 ]
reg byte x [ play_init::$2 ]
reg byte a [ play_init::$3 ]
reg byte x [ play_spawn_current::current_piece_idx#0 ]
zp[1]:47 [ play_spawn_current::$7 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ]
reg byte a [ play_collision::return#10 ]
reg byte a [ play_spawn_current::$1 ]
reg byte a [ play_spawn_current::sid_rnd1_return#0 ]
reg byte a [ render_playfield::$0 ]
reg byte a [ render_playfield::$3 ]
reg byte a [ render_moving::$1 ]
reg byte a [ render_moving::$6 ]
zp[2]:48 [ render_moving::screen_line#0 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ]
reg byte a [ render_moving::current_cell#0 ]
reg byte x [ render_next::$6 ]
zp[1]:50 [ render_next::next_piece_char#0 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ]
reg byte a [ render_next::cell#0 ]
reg byte x [ keyboard_matrix_read::rowid#0 ]
reg byte a [ keyboard_matrix_read::return#2 ]
zp[1]:51 [ keyboard_event_scan::row_scan#0 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::l#6 play_lock_current::l#1 play_collision::l#6 play_collision::l#1 ]
reg byte a [ keyboard_event_pressed::return#0 ]
reg byte a [ keyboard_event_scan::$0 ]
reg byte a [ keyboard_event_pressed::return#1 ]
reg byte a [ keyboard_event_scan::$3 ]
reg byte a [ keyboard_event_pressed::return#2 ]
reg byte a [ keyboard_event_scan::$6 ]
reg byte a [ keyboard_event_pressed::return#10 ]
reg byte a [ keyboard_event_scan::$9 ]
reg byte a [ keyboard_event_scan::$15 ]
reg byte a [ keyboard_event_scan::$16 ]
reg byte a [ keyboard_event_scan::event_type#0 ]
reg byte a [ keyboard_event_scan::$23 ]
reg byte a [ play_move_down::key_event#0 ]
reg byte a [ play_move_down::return#0 ]
reg byte a [ play_move_leftright::key_event#0 ]
reg byte a [ play_move_leftright::return#0 ]
reg byte a [ play_movement::$3 ]
reg byte a [ play_move_rotate::key_event#0 ]
reg byte a [ play_move_rotate::return#0 ]
reg byte a [ play_movement::$4 ]
zp[2]:52 [ play_collision::piece_gfx#0 render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ]
reg byte a [ play_collision::$14 ]
reg byte a [ play_collision::$5 ]
reg byte a [ keyboard_matrix_read::return#0 ]
reg byte y [ keyboard_event_pressed::$0 ]
reg byte y [ keyboard_event_pressed::row_bits#0 ]
reg byte x [ keyboard_event_pressed::$1 ]
reg byte a [ keyboard_event_pressed::return#11 ]
reg byte a [ keyboard_event_pressed::return#12 ]
reg byte a [ play_move_down::$2 ]
reg byte a [ play_collision::return#0 ]
reg byte a [ play_move_down::$12 ]
reg byte a [ play_remove_lines::return#0 ]
reg byte a [ play_move_down::removed#0 ]
reg byte x [ play_update_score::removed#0 ]
reg byte a [ play_collision::return#13 ]
reg byte a [ play_move_leftright::$4 ]
reg byte a [ play_collision::return#1 ]
reg byte a [ play_move_leftright::$8 ]
reg byte x [ play_move_rotate::$5 ]
reg byte a [ play_collision::return#14 ]
reg byte a [ play_move_rotate::$2 ]
reg byte a [ play_move_rotate::$7 ]
reg byte a [ render_bcd::$5 ]
reg byte a [ render_bcd::$6 ]
reg byte a [ render_bcd::$3 ]
reg byte a [ render_bcd::$4 ]
reg byte a [ play_lock_current::$4 ]
zp[2]:54 [ play_lock_current::playfield_line#0 play_collision::playfield_line#0 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 render_init::li_2#2 render_init::li_2#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#11 render_next::screen_next_area#4 render_next::screen_next_area#3 ]
zp[1]:56 [ play_lock_current::i#1 play_collision::i#1 ]
reg byte a [ play_update_score::$2 ]
zp[1]:57 [ play_update_score::lines_before#0 play_remove_lines::c#0 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ]
reg byte a [ play_update_score::$9 ]
zp[4]:58 [ play_update_score::add_bcd#0 ]
reg byte a [ play_update_score::$4 ]
reg byte a [ play_update_score::lines_after#0 ]
reg byte a [ play_increase_level::$1 ]
reg byte a [ play_increase_level::$5 ]
FINAL ASSEMBLER
Score: 3343892
// File Comments
// Tetris Game for the Commodore 64
// The tetris game tries to match NES tetris gameplay pretty closely
// Source: https://meatfighter.com/nintendotetrisai/
// Upstart
// Commodore 64 PRG executable file
.file [name="tetris.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(__start)
// Global Constants & labels
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
// The offset of the sprite pointers from the screen start address
.const OFFSET_SPRITE_PTRS = $3f8
.const VICII_ECM = $40
.const VICII_DEN = $10
.const VICII_RSEL = 8
// Bits for the VICII IRQ Status/Enable Registers
.const IRQ_RASTER = 1
// SID Channel Control Register Noise Waveform
.const SID_CONTROL_NOISE = $80
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in 0xA000, 0xE000 I/O in 0xD000
.const PROCPORT_RAM_IO = 5
// The colors of the C64
.const BLACK = 0
.const RED = 2
.const CYAN = 3
.const PURPLE = 4
.const GREEN = 5
.const BLUE = 6
.const ORANGE = 8
.const PINK = $a
.const DARK_GREY = $b
.const GREY = $c
.const LIGHT_GREEN = $d
.const LIGHT_BLUE = $e
.const KEY_Z = $c
.const KEY_LSHIFT = $f
.const KEY_X = $17
.const KEY_DOT = $2c
.const KEY_COMMA = $2f
.const KEY_RSHIFT = $34
.const KEY_CTRL = $3a
.const KEY_SPACE = $3c
.const KEY_COMMODORE = $3d
// The size of the playfield
.const PLAYFIELD_LINES = $16
.const PLAYFIELD_COLS = $a
// The Y-position of the first sprite row
.const SPRITES_FIRST_YPOS = $31
// The line of the first IRQ
.const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13
// The rate of moving down the current piece fast (number of frames between moves if movedown is not forced)
.const current_movedown_fast = $a
// No collision
.const COLLISION_NONE = 0
// Playfield piece collision (cell on top of other cell on the playfield)
.const COLLISION_PLAYFIELD = 1
// Bottom collision (cell below bottom of the playfield)
.const COLLISION_BOTTOM = 2
// Left side collision (cell beyond the left side of the playfield)
.const COLLISION_LEFT = 4
// Right side collision (cell beyond the right side of the playfield)
.const COLLISION_RIGHT = 8
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
.const OFFSET_STRUCT_MOS6581_SID_CH3_FREQ = $e
.const OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL = $12
.const OFFSET_STRUCT_MOS6581_SID_CH3_OSC = $1b
.const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.label SPRITES_XPOS = $d000
.label SPRITES_YPOS = $d001
.label SPRITES_COLOR = $d027
.label SPRITES_ENABLE = $d015
.label SPRITES_EXPAND_Y = $d017
.label SPRITES_MC = $d01c
.label SPRITES_EXPAND_X = $d01d
.label RASTER = $d012
.label BORDER_COLOR = $d020
.label BG_COLOR = $d021
.label BG_COLOR1 = $d022
.label BG_COLOR2 = $d023
.label BG_COLOR3 = $d024
.label VICII_CONTROL = $d011
.label D011 = $d011
.label D018 = $d018
// VIC II IRQ Status Register
.label IRQ_STATUS = $d019
// VIC II IRQ Enable Register
.label IRQ_ENABLE = $d01a
// Processor port data direction register
.label PROCPORT_DDR = 0
// Processor Port Register controlling RAM/ROM configuration and the datasette
.label PROCPORT = 1
// The SID MOS 6581/8580
.label SID = $d400
// Color Ram
.label COLS = $d800
// The CIA#1: keyboard matrix, joystick #1/#2
.label CIA1 = $dc00
// The CIA#2: Serial bus, RS-232, VIC memory bank
.label CIA2 = $dd00
// CIA#1 Interrupt for reading in ASM
.label CIA1_INTERRUPT = $dc0d
// The vector used when the HARDWARE serves IRQ interrupts
.label HARDWARE_IRQ = $fffe
// Address of the first screen
.label PLAYFIELD_SCREEN_1 = $400
// Address of the second screen
.label PLAYFIELD_SCREEN_2 = $2c00
// Screen Sprite pointers on screen 1
.label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+OFFSET_SPRITE_PTRS
// Screen Sprite pointers on screen 2
.label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+OFFSET_SPRITE_PTRS
// The screen currently being showed to the user. 0x00 for screen 1 / 0x20 for screen 2.
.label render_screen_showing = $24
// Current score in BCD-format
.label score_bcd = $25
// The raster line of the next IRQ
.label irq_raster_next = $29
// Y-pos of the sprites on the next IRQ
.label irq_sprite_ypos = $2a
// Index of the sprites to show on the next IRQ
.label irq_sprite_ptr = $2b
// Counting the 10 IRQs
.label irq_cnt = $2c
// Keyboard event buffer size. The number of events currently in the event buffer
.label keyboard_events_size = $a
// The rate of moving down the current piece (number of frames between moves if movedown is not forced)
.label current_movedown_slow = $15
// Position of top left corner of current moving piece on the playfield
.label current_xpos = $1d
.label current_ypos = $11
// The curent piece orientation - each piece have 4 orientations (00/0x10/0x20/0x30).
// The orientation chooses one of the 4 sub-graphics of the piece.
.label current_orientation = $1a
// Pointer to the current piece in the current orientation. Updated each time current_orientation is updated.
.label current_piece_gfx = $1b
// The char of the current piece
.label current_piece_char = $19
// Current level BCD-format
.label level_bcd = $16
// The screen currently being rendered to. 0x00 for screen 1 / 0x20 for screen 2.
.label render_screen_render = 3
// The screen currently to show next to the user. 0x00 for screen 1 / 0x20 for screen 2.
// Show showing screen 1 and rendering to screen 2
.label render_screen_show = 2
// Counts up to the next movedown of current piece
.label current_movedown_counter = 4
// Current number of cleared lines in BCD-format
.label lines_bcd = $12
// Current level in normal (non-BCD) format
.label level = $14
// The current moving piece. Points to the start of the piece definition.
.label current_piece = $17
// Is the game over?
.label game_over = $1e
// The index of the next moving piece. (0-6)
.label next_piece_idx = $1f
// The current moving piece. Points to the start of the piece definition.
.label current_piece_1 = $e
// The screen currently being rendered to. 0x00 for screen 1 / 0x20 for screen 2.
.label render_screen_render_1 = 5
// Position of top left corner of current moving piece on the playfield
.label current_xpos_1 = 6
// Pointer to the current piece in the current orientation. Updated each time current_orientation is updated.
.label current_piece_gfx_1 = 7
// The char of the current piece
.label current_piece_char_1 = 9
.segment Code
// __start
__start: {
.const __init1_toSpritePtr1_return = $ff&PLAYFIELD_SPRITES/$40
// __start::__init1
// render_screen_showing = 0
// [1] render_screen_showing = 0 -- vbuz1=vbuc1
lda #0
sta.z render_screen_showing
// score_bcd = 0
// [2] score_bcd = 0 -- vduz1=vduc1
sta.z score_bcd
sta.z score_bcd+1
lda #<0>>$10
sta.z score_bcd+2
lda #>0>>$10
sta.z score_bcd+3
// irq_raster_next = IRQ_RASTER_FIRST
// [3] irq_raster_next = IRQ_RASTER_FIRST -- vbuz1=vbuc1
lda #IRQ_RASTER_FIRST
sta.z irq_raster_next
// irq_sprite_ypos = SPRITES_FIRST_YPOS + 21
// [4] irq_sprite_ypos = SPRITES_FIRST_YPOS+$15 -- vbuz1=vbuc1
lda #SPRITES_FIRST_YPOS+$15
sta.z irq_sprite_ypos
// [5] phi from __start::__init1 to __start::__init1_toSpritePtr1 [phi:__start::__init1->__start::__init1_toSpritePtr1]
// __start::__init1_toSpritePtr1
// __start::__init1_@1
// irq_sprite_ptr = toSpritePtr(PLAYFIELD_SPRITES) + 3
// [6] irq_sprite_ptr = __start::__init1_toSpritePtr1_return#0+3 -- vbuz1=vbuc1
lda #__init1_toSpritePtr1_return+3
sta.z irq_sprite_ptr
// irq_cnt = 0
// [7] irq_cnt = 0 -- vbuz1=vbuc1
lda #0
sta.z irq_cnt
// [8] phi from __start::__init1_@1 to __start::@1 [phi:__start::__init1_@1->__start::@1]
// __start::@1
// [9] call main
// [51] phi from __start::@1 to main [phi:__start::@1->main]
jsr main
// __start::@return
// [10] return
rts
}
// sprites_irq
// Raster Interrupt Routine - sets up the sprites covering the playfield
// Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST
// Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers
sprites_irq: {
.const toSpritePtr1_return = $ff&PLAYFIELD_SPRITES/$40
.label raster_sprite_gfx_modify = $2d
// interrupt(isr_hardware_clobber_entry) -- isr_hardware_all_entry
sta rega+1
stx regx+1
// asm
// asm { cld }
//(*BG_COLOR)++;
// Clear decimal flag (because it is used by the score algorithm)
cld
// ypos = irq_sprite_ypos
// [12] sprites_irq::ypos#0 = irq_sprite_ypos -- vbuaa=vbuz1
// Place the sprites
lda.z irq_sprite_ypos
// SPRITES_YPOS[0] = ypos
// [13] *SPRITES_YPOS = sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa
sta SPRITES_YPOS
// SPRITES_YPOS[2] = ypos
// [14] *(SPRITES_YPOS+2) = sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa
sta SPRITES_YPOS+2
// SPRITES_YPOS[4] = ypos
// [15] *(SPRITES_YPOS+4) = sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa
sta SPRITES_YPOS+4
// SPRITES_YPOS[6] = ypos
// [16] *(SPRITES_YPOS+6) = sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa
sta SPRITES_YPOS+6
// irq_raster_next+1
// [17] sprites_irq::$0 = irq_raster_next + 1 -- vbuxx=vbuz1_plus_1
ldx.z irq_raster_next
inx
// raster_sprite_gfx_modify = irq_raster_next+1
// [18] sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 -- vbuz1=vbuxx
// Wait for the y-position before changing sprite pointers
stx.z raster_sprite_gfx_modify
// sprites_irq::@8
__b8:
// while(*RASTER<raster_sprite_gfx_modify)
// [19] if(*RASTER<sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1
lda RASTER
cmp.z raster_sprite_gfx_modify
bcc __b8
// sprites_irq::@9
// ptr = irq_sprite_ptr
// [20] sprites_irq::ptr#0 = irq_sprite_ptr -- vbuxx=vbuz1
ldx.z irq_sprite_ptr
// if(render_screen_showing==0)
// [21] if(render_screen_showing==0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1
lda.z render_screen_showing
cmp #0
beq __b1
// sprites_irq::@10
// PLAYFIELD_SPRITE_PTRS_2[0] = ptr++
// [22] *PLAYFIELD_SPRITE_PTRS_2 = sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx
stx PLAYFIELD_SPRITE_PTRS_2
// PLAYFIELD_SPRITE_PTRS_2[0] = ptr++;
// [23] sprites_irq::ptr#3 = ++ sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx
inx
txa
// PLAYFIELD_SPRITE_PTRS_2[1] = ptr
// [24] *(PLAYFIELD_SPRITE_PTRS_2+1) = sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa
sta PLAYFIELD_SPRITE_PTRS_2+1
// PLAYFIELD_SPRITE_PTRS_2[2] = ptr++
// [25] *(PLAYFIELD_SPRITE_PTRS_2+2) = sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa
sta PLAYFIELD_SPRITE_PTRS_2+2
// PLAYFIELD_SPRITE_PTRS_2[2] = ptr++;
// [26] sprites_irq::ptr#4 = ++ sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa
clc
adc #1
// PLAYFIELD_SPRITE_PTRS_2[3] = ptr
// [27] *(PLAYFIELD_SPRITE_PTRS_2+3) = sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa
sta PLAYFIELD_SPRITE_PTRS_2+3
// sprites_irq::@2
__b2:
// ++irq_cnt;
// [28] irq_cnt = ++ irq_cnt -- vbuz1=_inc_vbuz1
inc.z irq_cnt
// if(irq_cnt==9)
// [29] if(irq_cnt==9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1
lda #9
cmp.z irq_cnt
beq __b3
// sprites_irq::@6
// if(irq_cnt==10)
// [30] if(irq_cnt==$a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1
lda #$a
cmp.z irq_cnt
beq __b4
// sprites_irq::@7
// irq_raster_next += 20
// [31] irq_raster_next = irq_raster_next + $14 -- vbuz1=vbuz1_plus_vbuc1
lax.z irq_raster_next
axs #-[$14]
stx.z irq_raster_next
// irq_sprite_ypos += 21
// [32] irq_sprite_ypos = irq_sprite_ypos + $15 -- vbuz1=vbuz1_plus_vbuc1
lax.z irq_sprite_ypos
axs #-[$15]
stx.z irq_sprite_ypos
// irq_sprite_ptr += 3
// [33] irq_sprite_ptr = irq_sprite_ptr + 3 -- vbuz1=vbuz1_plus_vbuc1
lax.z irq_sprite_ptr
axs #-[3]
stx.z irq_sprite_ptr
// sprites_irq::@5
__b5:
// *RASTER = irq_raster_next
// [34] *RASTER = irq_raster_next -- _deref_pbuc1=vbuz1
// Setup next interrupt
lda.z irq_raster_next
sta RASTER
// *IRQ_STATUS = IRQ_RASTER
// [35] *IRQ_STATUS = IRQ_RASTER -- _deref_pbuc1=vbuc2
// Acknowledge the IRQ and setup the next one
lda #IRQ_RASTER
sta IRQ_STATUS
// sprites_irq::@return
// }
// [36] return
// interrupt(isr_hardware_clobber_exit) -- isr_hardware_all_exit
rega:
lda #0
regx:
ldx #0
rti
// sprites_irq::@4
__b4:
// irq_cnt = 0
// [37] irq_cnt = 0 -- vbuz1=vbuc1
lda #0
sta.z irq_cnt
// irq_raster_next = IRQ_RASTER_FIRST
// [38] irq_raster_next = IRQ_RASTER_FIRST -- vbuz1=vbuc1
lda #IRQ_RASTER_FIRST
sta.z irq_raster_next
// irq_sprite_ypos += 21
// [39] irq_sprite_ypos = irq_sprite_ypos + $15 -- vbuz1=vbuz1_plus_vbuc1
lax.z irq_sprite_ypos
axs #-[$15]
stx.z irq_sprite_ypos
// irq_sprite_ptr += 3
// [40] irq_sprite_ptr = irq_sprite_ptr + 3 -- vbuz1=vbuz1_plus_vbuc1
lax.z irq_sprite_ptr
axs #-[3]
stx.z irq_sprite_ptr
jmp __b5
// sprites_irq::@3
__b3:
// irq_raster_next += 21
// [41] irq_raster_next = irq_raster_next + $15 -- vbuz1=vbuz1_plus_vbuc1
lax.z irq_raster_next
axs #-[$15]
stx.z irq_raster_next
// irq_sprite_ypos = SPRITES_FIRST_YPOS
// [42] irq_sprite_ypos = SPRITES_FIRST_YPOS -- vbuz1=vbuc1
lda #SPRITES_FIRST_YPOS
sta.z irq_sprite_ypos
// [43] phi from sprites_irq::@3 to sprites_irq::toSpritePtr1 [phi:sprites_irq::@3->sprites_irq::toSpritePtr1]
// sprites_irq::toSpritePtr1
// sprites_irq::@11
// irq_sprite_ptr = toSpritePtr(PLAYFIELD_SPRITES)
// [44] irq_sprite_ptr = sprites_irq::toSpritePtr1_return#0 -- vbuz1=vbuc1
lda #toSpritePtr1_return
sta.z irq_sprite_ptr
jmp __b5
// sprites_irq::@1
__b1:
// PLAYFIELD_SPRITE_PTRS_1[0] = ptr++
// [45] *PLAYFIELD_SPRITE_PTRS_1 = sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx
stx PLAYFIELD_SPRITE_PTRS_1
// PLAYFIELD_SPRITE_PTRS_1[0] = ptr++;
// [46] sprites_irq::ptr#1 = ++ sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx
inx
// PLAYFIELD_SPRITE_PTRS_1[1] = ptr
// [47] *(PLAYFIELD_SPRITE_PTRS_1+1) = sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx
stx PLAYFIELD_SPRITE_PTRS_1+1
// PLAYFIELD_SPRITE_PTRS_1[2] = ptr++
// [48] *(PLAYFIELD_SPRITE_PTRS_1+2) = sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx
stx PLAYFIELD_SPRITE_PTRS_1+2
// PLAYFIELD_SPRITE_PTRS_1[2] = ptr++;
// [49] sprites_irq::ptr#2 = ++ sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx
inx
txa
// PLAYFIELD_SPRITE_PTRS_1[3] = ptr
// [50] *(PLAYFIELD_SPRITE_PTRS_1+3) = sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa
sta PLAYFIELD_SPRITE_PTRS_1+3
jmp __b2
}
// main
main: {
// main::sid_rnd_init1
// SID->CH3_FREQ = 0xffff
// [52] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff -- _deref_pwuc1=vwuc2
lda #<$ffff
sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ
lda #>$ffff
sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ+1
// SID->CH3_CONTROL = SID_CONTROL_NOISE
// [53] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE -- _deref_pbuc1=vbuc2
lda #SID_CONTROL_NOISE
sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL
// main::@8
// asm
// asm { sei }
sei
// render_init()
// [55] call render_init
// [109] phi from main::@8 to render_init [phi:main::@8->render_init]
jsr render_init
// [56] phi from main::@8 to main::@9 [phi:main::@8->main::@9]
// main::@9
// sprites_init()
// [57] call sprites_init
jsr sprites_init
// [58] phi from main::@9 to main::@10 [phi:main::@9->main::@10]
// main::@10
// sprites_irq_init()
// [59] call sprites_irq_init
jsr sprites_irq_init
// [60] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
// main::@11
// play_init()
// [61] call play_init
// [155] phi from main::@11 to play_init [phi:main::@11->play_init]
jsr play_init
// [62] phi from main::@11 to main::@12 [phi:main::@11->main::@12]
// main::@12
// play_spawn_current()
// [63] call play_spawn_current
// Spawn twice to spawn both current & next
// [172] phi from main::@12 to play_spawn_current [phi:main::@12->play_spawn_current]
// [172] phi game_over#66 = 0 [phi:main::@12->play_spawn_current#0] -- vbuz1=vbuc1
lda #0
sta.z game_over
// [172] phi next_piece_idx#18 = 0 [phi:main::@12->play_spawn_current#1] -- vbuz1=vbuc1
sta.z next_piece_idx
jsr play_spawn_current
// [64] phi from main::@12 to main::@13 [phi:main::@12->main::@13]
// main::@13
// play_spawn_current()
// [65] call play_spawn_current
// [172] phi from main::@13 to play_spawn_current [phi:main::@13->play_spawn_current]
// [172] phi game_over#66 = game_over#53 [phi:main::@13->play_spawn_current#0] -- register_copy
// [172] phi next_piece_idx#18 = play_spawn_current::piece_idx#2 [phi:main::@13->play_spawn_current#1] -- register_copy
jsr play_spawn_current
// [66] phi from main::@13 to main::@14 [phi:main::@13->main::@14]
// main::@14
// render_playfield()
// [67] call render_playfield
// [192] phi from main::@14 to render_playfield [phi:main::@14->render_playfield]
// [192] phi render_screen_render#24 = $20 [phi:main::@14->render_playfield#0] -- vbuxx=vbuc1
ldx #$20
jsr render_playfield
// main::@15
// [68] current_ypos#97 = current_ypos#5 -- vbuxx=vbuz1
ldx.z current_ypos
// [69] current_xpos#118 = current_xpos#100 -- vbuz1=vbuz2
lda.z current_xpos
sta.z current_xpos_1
// [70] current_piece_gfx#111 = (byte*)PIECES[play_spawn_current::$7] -- pbuz1=qbuc1_derefidx_vbuz2
ldy.z play_spawn_current.__7
lda PIECES,y
sta.z current_piece_gfx_1
lda PIECES+1,y
sta.z current_piece_gfx_1+1
// [71] current_piece_char#99 = current_piece_char#4 -- vbuz1=vbuz2
lda.z current_piece_char
sta.z current_piece_char_1
// render_moving()
// [72] call render_moving
// [206] phi from main::@15 to render_moving [phi:main::@15->render_moving]
// [206] phi current_piece_char#70 = current_piece_char#99 [phi:main::@15->render_moving#0] -- register_copy
// [206] phi current_piece_gfx#66 = current_piece_gfx#111 [phi:main::@15->render_moving#1] -- register_copy
// [206] phi current_xpos#61 = current_xpos#118 [phi:main::@15->render_moving#2] -- register_copy
// [206] phi render_screen_render#35 = $20 [phi:main::@15->render_moving#3] -- vbuz1=vbuc1
lda #$20
sta.z render_screen_render_1
// [206] phi current_ypos#14 = current_ypos#97 [phi:main::@15->render_moving#4] -- register_copy
jsr render_moving
// main::@16
// [73] next_piece_idx#79 = play_spawn_current::piece_idx#2 -- vbuyy=vbuz1
ldy.z play_spawn_current.piece_idx
// render_next()
// [74] call render_next
// [228] phi from main::@16 to render_next [phi:main::@16->render_next]
// [228] phi next_piece_idx#13 = next_piece_idx#79 [phi:main::@16->render_next#0] -- register_copy
// [228] phi render_screen_render#16 = $20 [phi:main::@16->render_next#1] -- vbuxx=vbuc1
ldx #$20
jsr render_next
// main::@17
// [75] current_piece#103 = (byte*)PIECES[play_spawn_current::$7] -- pbuz1=qbuc1_derefidx_vbuz2
ldy.z play_spawn_current.__7
lda PIECES,y
sta.z current_piece
lda PIECES+1,y
sta.z current_piece+1
// [76] current_piece_gfx#122 = (byte*)PIECES[play_spawn_current::$7] -- pbuz1=qbuc1_derefidx_vbuz2
lda PIECES,y
sta.z current_piece_gfx
lda PIECES+1,y
sta.z current_piece_gfx+1
// [77] phi from main::@17 to main::@1 [phi:main::@17->main::@1]
// [77] phi level_bcd#10 = 0 [phi:main::@17->main::@1#0] -- vbuz1=vbuc1
lda #0
sta.z level_bcd
// [77] phi level#25 = 0 [phi:main::@17->main::@1#1] -- vbuz1=vbuc1
sta.z level
// [77] phi lines_bcd#20 = 0 [phi:main::@17->main::@1#2] -- vwuz1=vwuc1
sta.z lines_bcd
sta.z lines_bcd+1
// [77] phi current_movedown_counter#17 = 0 [phi:main::@17->main::@1#3] -- vbuz1=vbuc1
sta.z current_movedown_counter
// [77] phi keyboard_events_size#20 = 0 [phi:main::@17->main::@1#4] -- vbuz1=vbuc1
sta.z keyboard_events_size
// [77] phi next_piece_idx#23 = play_spawn_current::piece_idx#2 [phi:main::@17->main::@1#5] -- register_copy
// [77] phi game_over#22 = game_over#53 [phi:main::@17->main::@1#6] -- register_copy
// [77] phi current_ypos#10 = current_ypos#5 [phi:main::@17->main::@1#7] -- register_copy
// [77] phi current_xpos#13 = current_xpos#100 [phi:main::@17->main::@1#8] -- register_copy
// [77] phi current_piece_gfx#12 = current_piece_gfx#122 [phi:main::@17->main::@1#9] -- register_copy
// [77] phi current_orientation#12 = 0 [phi:main::@17->main::@1#10] -- vbuz1=vbuc1
sta.z current_orientation
// [77] phi current_piece_char#23 = current_piece_char#4 [phi:main::@17->main::@1#11] -- register_copy
// [77] phi current_piece#23 = current_piece#103 [phi:main::@17->main::@1#12] -- register_copy
// [77] phi current_movedown_slow#13 = current_movedown_slow#0 [phi:main::@17->main::@1#13] -- register_copy
// [77] phi render_screen_render#19 = $20 [phi:main::@17->main::@1#14] -- vbuz1=vbuc1
lda #$20
sta.z render_screen_render
// [77] phi render_screen_show#17 = 0 [phi:main::@17->main::@1#15] -- vbuz1=vbuc1
lda #0
sta.z render_screen_show
// [77] phi from main::@25 main::@6 to main::@1 [phi:main::@25/main::@6->main::@1]
// [77] phi level_bcd#10 = level_bcd#18 [phi:main::@25/main::@6->main::@1#0] -- register_copy
// [77] phi level#25 = level#18 [phi:main::@25/main::@6->main::@1#1] -- register_copy
// [77] phi lines_bcd#20 = lines_bcd#16 [phi:main::@25/main::@6->main::@1#2] -- register_copy
// [77] phi current_movedown_counter#17 = current_movedown_counter#15 [phi:main::@25/main::@6->main::@1#3] -- register_copy
// [77] phi keyboard_events_size#20 = keyboard_events_size#17 [phi:main::@25/main::@6->main::@1#4] -- register_copy
// [77] phi next_piece_idx#23 = next_piece_idx#17 [phi:main::@25/main::@6->main::@1#5] -- register_copy
// [77] phi game_over#22 = game_over#16 [phi:main::@25/main::@6->main::@1#6] -- register_copy
// [77] phi current_ypos#10 = current_ypos#20 [phi:main::@25/main::@6->main::@1#7] -- register_copy
// [77] phi current_xpos#13 = current_xpos#2 [phi:main::@25/main::@6->main::@1#8] -- register_copy
// [77] phi current_piece_gfx#12 = current_piece_gfx#19 [phi:main::@25/main::@6->main::@1#9] -- register_copy
// [77] phi current_orientation#12 = current_orientation#18 [phi:main::@25/main::@6->main::@1#10] -- register_copy
// [77] phi current_piece_char#23 = current_piece_char#17 [phi:main::@25/main::@6->main::@1#11] -- register_copy
// [77] phi current_piece#23 = current_piece#16 [phi:main::@25/main::@6->main::@1#12] -- register_copy
// [77] phi current_movedown_slow#13 = current_movedown_slow#22 [phi:main::@25/main::@6->main::@1#13] -- register_copy
// [77] phi render_screen_render#19 = render_screen_render#12 [phi:main::@25/main::@6->main::@1#14] -- register_copy
// [77] phi render_screen_show#17 = render_screen_show#14 [phi:main::@25/main::@6->main::@1#15] -- register_copy
// main::@1
__b1:
// Wait for a frame to pass
// main::@2
__b2:
// while(*RASTER!=0xff)
// [78] if(*RASTER!=$ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1
lda #$ff
cmp RASTER
bne __b2
// [79] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
// main::@3
// render_show()
// [80] call render_show
//*BORDER_COLOR = render_screen_show/0x10;
// Update D018 to show the selected screen
jsr render_show
// [81] phi from main::@3 to main::@18 [phi:main::@3->main::@18]
// main::@18
// keyboard_event_scan()
// [82] call keyboard_event_scan
// Scan keyboard events
// [258] phi from main::@18 to keyboard_event_scan [phi:main::@18->keyboard_event_scan]
jsr keyboard_event_scan
// [83] phi from main::@18 to main::@19 [phi:main::@18->main::@19]
// main::@19
// keyboard_event_get()
// [84] call keyboard_event_get
jsr keyboard_event_get
// [85] keyboard_event_get::return#3 = keyboard_event_get::return#2
// main::@20
// key_event = keyboard_event_get()
// [86] main::key_event#0 = keyboard_event_get::return#3 -- vbuxx=vbuaa
tax
// if(game_over==0)
// [87] if(game_over#22==0) goto main::@4 -- vbuz1_eq_0_then_la1
lda.z game_over
cmp #0
beq __b4
// main::@5
__b5:
// (*BORDER_COLOR)++;
// [88] *BORDER_COLOR = ++ *BORDER_COLOR -- _deref_pbuc1=_inc__deref_pbuc1
inc BORDER_COLOR
jmp __b5
// main::@4
__b4:
// play_movement(key_event)
// [89] play_movement::key_event#0 = main::key_event#0 -- vbuz1=vbuxx
stx.z play_movement.key_event
// [90] call play_movement
jsr play_movement
// [91] play_movement::return#3 = play_movement::return#2 -- vbuaa=vbuz1
lda.z play_movement.return
// main::@21
// render = play_movement(key_event)
// [92] main::render#1 = play_movement::return#3
// main::@6
// if(render!=0)
// [93] if(main::render#1==0) goto main::@1 -- vbuaa_eq_0_then_la1
cmp #0
beq __b1
// main::@7
// [94] render_screen_render#63 = render_screen_render#19 -- vbuxx=vbuz1
ldx.z render_screen_render
// render_playfield()
// [95] call render_playfield
// [192] phi from main::@7 to render_playfield [phi:main::@7->render_playfield]
// [192] phi render_screen_render#24 = render_screen_render#63 [phi:main::@7->render_playfield#0] -- register_copy
jsr render_playfield
// main::@22
// [96] current_ypos#98 = current_ypos#20 -- vbuxx=vbuz1
ldx.z current_ypos
// [97] render_screen_render#64 = render_screen_render#19 -- vbuz1=vbuz2
lda.z render_screen_render
sta.z render_screen_render_1
// [98] current_xpos#119 = current_xpos#2 -- vbuz1=vbuz2
lda.z current_xpos
sta.z current_xpos_1
// [99] current_piece_gfx#112 = current_piece_gfx#19 -- pbuz1=pbuz2
lda.z current_piece_gfx
sta.z current_piece_gfx_1
lda.z current_piece_gfx+1
sta.z current_piece_gfx_1+1
// [100] current_piece_char#100 = current_piece_char#17 -- vbuz1=vbuz2
lda.z current_piece_char
sta.z current_piece_char_1
// render_moving()
// [101] call render_moving
// [206] phi from main::@22 to render_moving [phi:main::@22->render_moving]
// [206] phi current_piece_char#70 = current_piece_char#100 [phi:main::@22->render_moving#0] -- register_copy
// [206] phi current_piece_gfx#66 = current_piece_gfx#112 [phi:main::@22->render_moving#1] -- register_copy
// [206] phi current_xpos#61 = current_xpos#119 [phi:main::@22->render_moving#2] -- register_copy
// [206] phi render_screen_render#35 = render_screen_render#64 [phi:main::@22->render_moving#3] -- register_copy
// [206] phi current_ypos#14 = current_ypos#98 [phi:main::@22->render_moving#4] -- register_copy
jsr render_moving
// main::@23
// [102] render_screen_render#65 = render_screen_render#19 -- vbuxx=vbuz1
ldx.z render_screen_render
// [103] next_piece_idx#80 = next_piece_idx#17 -- vbuyy=vbuz1
ldy.z next_piece_idx
// render_next()
// [104] call render_next
// [228] phi from main::@23 to render_next [phi:main::@23->render_next]
// [228] phi next_piece_idx#13 = next_piece_idx#80 [phi:main::@23->render_next#0] -- register_copy
// [228] phi render_screen_render#16 = render_screen_render#65 [phi:main::@23->render_next#1] -- register_copy
jsr render_next
// [105] phi from main::@23 to main::@24 [phi:main::@23->main::@24]
// main::@24
// render_score()
// [106] call render_score
jsr render_score
// [107] phi from main::@24 to main::@25 [phi:main::@24->main::@25]
// main::@25
// render_screen_swap()
// [108] call render_screen_swap
jsr render_screen_swap
jmp __b1
}
// render_init
// Initialize rendering
render_init: {
.const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)/$40
// Initialize the screen line pointers;
.label li_1 = $c
.label li_2 = $36
// render_init::vicSelectGfxBank1
// CIA2->PORT_A_DDR = %00000011
// [110] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3 -- _deref_pbuc1=vbuc2
lda #3
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR
// [111] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001]
// render_init::vicSelectGfxBank1_toDd001
// render_init::vicSelectGfxBank1_@1
// CIA2->PORT_A = toDd00(gfx)
// [112] *((byte*)CIA2) = render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2
lda #vicSelectGfxBank1_toDd001_return
sta CIA2
// render_init::@2
// *D011 = VICII_ECM | VICII_DEN | VICII_RSEL | 3
// [113] *D011 = VICII_ECM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
// Enable Extended Background Color Mode
lda #VICII_ECM|VICII_DEN|VICII_RSEL|3
sta D011
// *BORDER_COLOR = BLACK
// [114] *BORDER_COLOR = BLACK -- _deref_pbuc1=vbuc2
lda #BLACK
sta BORDER_COLOR
// *BG_COLOR = BLACK
// [115] *BG_COLOR = BLACK -- _deref_pbuc1=vbuc2
sta BG_COLOR
// *BG_COLOR1 = PIECES_COLORS_1[0]
// [116] *BG_COLOR1 = *PIECES_COLORS_1 -- _deref_pbuc1=_deref_pbuc2
lda PIECES_COLORS_1
sta BG_COLOR1
// *BG_COLOR2 = PIECES_COLORS_2[0]
// [117] *BG_COLOR2 = *PIECES_COLORS_2 -- _deref_pbuc1=_deref_pbuc2
lda PIECES_COLORS_2
sta BG_COLOR2
// *BG_COLOR3 = GREY
// [118] *BG_COLOR3 = GREY -- _deref_pbuc1=vbuc2
lda #GREY
sta BG_COLOR3
// render_screen_original(PLAYFIELD_SCREEN_1)
// [119] call render_screen_original
// Setup chars on the screens
// [358] phi from render_init::@2 to render_screen_original [phi:render_init::@2->render_screen_original]
// [358] phi render_screen_original::screen#9 = PLAYFIELD_SCREEN_1 [phi:render_init::@2->render_screen_original#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_1
sta.z render_screen_original.screen
lda #>PLAYFIELD_SCREEN_1
sta.z render_screen_original.screen+1
jsr render_screen_original
// [120] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3]
// render_init::@3
// render_screen_original(PLAYFIELD_SCREEN_2)
// [121] call render_screen_original
// [358] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original]
// [358] phi render_screen_original::screen#9 = PLAYFIELD_SCREEN_2 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_2
sta.z render_screen_original.screen
lda #>PLAYFIELD_SCREEN_2
sta.z render_screen_original.screen+1
jsr render_screen_original
// [122] phi from render_init::@3 to render_init::@1 [phi:render_init::@3->render_init::@1]
// [122] phi render_init::li_2#2 = PLAYFIELD_SCREEN_2+2*$28+$10 [phi:render_init::@3->render_init::@1#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_2+2*$28+$10
sta.z li_2
lda #>PLAYFIELD_SCREEN_2+2*$28+$10
sta.z li_2+1
// [122] phi render_init::li_1#2 = PLAYFIELD_SCREEN_1+2*$28+$10 [phi:render_init::@3->render_init::@1#1] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_1+2*$28+$10
sta.z li_1
lda #>PLAYFIELD_SCREEN_1+2*$28+$10
sta.z li_1+1
// [122] phi render_init::i#2 = 0 [phi:render_init::@3->render_init::@1#2] -- vbuyy=vbuc1
ldy #0
// [122] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1]
// [122] phi render_init::li_2#2 = render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy
// [122] phi render_init::li_1#2 = render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy
// [122] phi render_init::i#2 = render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy
// render_init::@1
__b1:
// screen_lines_1[i] = li_1
// [123] render_init::$5 = render_init::i#2 << 1 -- vbuxx=vbuyy_rol_1
tya
asl
tax
// [124] screen_lines_1[render_init::$5] = render_init::li_1#2 -- qbuc1_derefidx_vbuxx=pbuz1
lda.z li_1
sta screen_lines_1,x
lda.z li_1+1
sta screen_lines_1+1,x
// screen_lines_2[i] = li_2
// [125] screen_lines_2[render_init::$5] = render_init::li_2#2 -- qbuc1_derefidx_vbuxx=pbuz1
lda.z li_2
sta screen_lines_2,x
lda.z li_2+1
sta screen_lines_2+1,x
// li_1 += 40
// [126] render_init::li_1#1 = render_init::li_1#2 + $28 -- pbuz1=pbuz1_plus_vbuc1
lda #$28
clc
adc.z li_1
sta.z li_1
bcc !+
inc.z li_1+1
!:
// li_2 += 40
// [127] render_init::li_2#1 = render_init::li_2#2 + $28 -- pbuz1=pbuz1_plus_vbuc1
lda #$28
clc
adc.z li_2
sta.z li_2
bcc !+
inc.z li_2+1
!:
// for(char i:0..PLAYFIELD_LINES-1)
// [128] render_init::i#1 = ++ render_init::i#2 -- vbuyy=_inc_vbuyy
iny
// [129] if(render_init::i#1!=PLAYFIELD_LINES-1+1) goto render_init::@1 -- vbuyy_neq_vbuc1_then_la1
cpy #PLAYFIELD_LINES-1+1
bne __b1
// render_init::@return
// }
// [130] return
rts
}
// sprites_init
// Setup the sprites
sprites_init: {
.label xpos = $22
// *SPRITES_ENABLE = %00001111
// [131] *SPRITES_ENABLE = $f -- _deref_pbuc1=vbuc2
lda #$f
sta SPRITES_ENABLE
// *SPRITES_MC = 0
// [132] *SPRITES_MC = 0 -- _deref_pbuc1=vbuc2
lda #0
sta SPRITES_MC
// *SPRITES_EXPAND_Y = *SPRITES_MC = 0
// [133] *SPRITES_EXPAND_Y = *SPRITES_MC -- _deref_pbuc1=_deref_pbuc2
sta SPRITES_EXPAND_Y
// *SPRITES_EXPAND_X = *SPRITES_EXPAND_Y = *SPRITES_MC = 0
// [134] *SPRITES_EXPAND_X = *SPRITES_EXPAND_Y -- _deref_pbuc1=_deref_pbuc2
sta SPRITES_EXPAND_X
// [135] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1]
// [135] phi sprites_init::xpos#2 = $18+$f*8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1
lda #$18+$f*8
sta.z xpos
// [135] phi sprites_init::s#2 = 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1
ldy #0
// [135] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1]
// [135] phi sprites_init::xpos#2 = sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy
// [135] phi sprites_init::s#2 = sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy
// sprites_init::@1
__b1:
// s2 = s*2
// [136] sprites_init::s2#0 = sprites_init::s#2 << 1 -- vbuxx=vbuyy_rol_1
tya
asl
tax
// SPRITES_XPOS[s2] = xpos
// [137] SPRITES_XPOS[sprites_init::s2#0] = sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1
lda.z xpos
sta SPRITES_XPOS,x
// SPRITES_COLOR[s] = BLACK
// [138] SPRITES_COLOR[sprites_init::s#2] = BLACK -- pbuc1_derefidx_vbuyy=vbuc2
lda #BLACK
sta SPRITES_COLOR,y
// xpos = xpos+24
// [139] sprites_init::xpos#1 = sprites_init::xpos#2 + $18 -- vbuz1=vbuz1_plus_vbuc1
lax.z xpos
axs #-[$18]
stx.z xpos
// for(char s:0..3)
// [140] sprites_init::s#1 = ++ sprites_init::s#2 -- vbuyy=_inc_vbuyy
iny
// [141] if(sprites_init::s#1!=4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1
cpy #4
bne __b1
// sprites_init::@return
// }
// [142] return
rts
}
// sprites_irq_init
// Setup the IRQ
sprites_irq_init: {
// asm
// asm { sei }
sei
// *IRQ_STATUS = IRQ_RASTER
// [144] *IRQ_STATUS = IRQ_RASTER -- _deref_pbuc1=vbuc2
// Acknowledge any IRQ and setup the next one
lda #IRQ_RASTER
sta IRQ_STATUS
// asm
// asm { ldaCIA1_INTERRUPT }
lda CIA1_INTERRUPT
// *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
// [146] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2
// Disable kernal & basic
lda #PROCPORT_DDR_MEMORY_MASK
sta PROCPORT_DDR
// *PROCPORT = PROCPORT_RAM_IO
// [147] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta PROCPORT
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// [148] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VICII_CONTROL &=0x7f
// [149] *VICII_CONTROL = *VICII_CONTROL & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// Set raster line
lda #$7f
and VICII_CONTROL
sta VICII_CONTROL
// *RASTER = IRQ_RASTER_FIRST
// [150] *RASTER = IRQ_RASTER_FIRST -- _deref_pbuc1=vbuc2
lda #IRQ_RASTER_FIRST
sta RASTER
// *IRQ_ENABLE = IRQ_RASTER
// [151] *IRQ_ENABLE = IRQ_RASTER -- _deref_pbuc1=vbuc2
// Enable Raster Interrupt
lda #IRQ_RASTER
sta IRQ_ENABLE
// *HARDWARE_IRQ = &sprites_irq
// [152] *HARDWARE_IRQ = &sprites_irq -- _deref_qprc1=pprc2
// Set the IRQ routine
lda #<sprites_irq
sta HARDWARE_IRQ
lda #>sprites_irq
sta HARDWARE_IRQ+1
// asm
// asm { cli }
cli
// sprites_irq_init::@return
// }
// [154] return
rts
}
// play_init
// Initialize play data tables
play_init: {
.label pli = $c
// Initialize the playfield line pointers;
.label idx = $22
// [156] phi from play_init to play_init::@1 [phi:play_init->play_init::@1]
// [156] phi play_init::idx#2 = 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1
lda #0
sta.z idx
// [156] phi play_init::pli#2 = playfield [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1
lda #<playfield
sta.z pli
lda #>playfield
sta.z pli+1
// [156] phi play_init::j#2 = 0 [phi:play_init->play_init::@1#2] -- vbuyy=vbuc1
ldy #0
// [156] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1]
// [156] phi play_init::idx#2 = play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy
// [156] phi play_init::pli#2 = play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy
// [156] phi play_init::j#2 = play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy
// play_init::@1
__b1:
// playfield_lines[j] = pli
// [157] play_init::$2 = play_init::j#2 << 1 -- vbuxx=vbuyy_rol_1
tya
asl
tax
// [158] playfield_lines[play_init::$2] = play_init::pli#2 -- qbuc1_derefidx_vbuxx=pbuz1
lda.z pli
sta playfield_lines,x
lda.z pli+1
sta playfield_lines+1,x
// playfield_lines_idx[j] = idx
// [159] playfield_lines_idx[play_init::j#2] = play_init::idx#2 -- pbuc1_derefidx_vbuyy=vbuz1
lda.z idx
sta playfield_lines_idx,y
// pli += PLAYFIELD_COLS
// [160] play_init::pli#1 = play_init::pli#2 + PLAYFIELD_COLS -- pbuz1=pbuz1_plus_vbuc1
lda #PLAYFIELD_COLS
clc
adc.z pli
sta.z pli
bcc !+
inc.z pli+1
!:
// idx += PLAYFIELD_COLS
// [161] play_init::idx#1 = play_init::idx#2 + PLAYFIELD_COLS -- vbuz1=vbuz1_plus_vbuc1
lax.z idx
axs #-[PLAYFIELD_COLS]
stx.z idx
// for(char j:0..PLAYFIELD_LINES-1)
// [162] play_init::j#1 = ++ play_init::j#2 -- vbuyy=_inc_vbuyy
iny
// [163] if(play_init::j#1!=PLAYFIELD_LINES-1+1) goto play_init::@1 -- vbuyy_neq_vbuc1_then_la1
cpy #PLAYFIELD_LINES-1+1
bne __b1
// play_init::@2
// playfield_lines_idx[PLAYFIELD_LINES] = PLAYFIELD_COLS*PLAYFIELD_LINES
// [164] *(playfield_lines_idx+PLAYFIELD_LINES) = PLAYFIELD_COLS*PLAYFIELD_LINES -- _deref_pbuc1=vbuc2
lda #PLAYFIELD_COLS*PLAYFIELD_LINES
sta playfield_lines_idx+PLAYFIELD_LINES
// current_movedown_slow = MOVEDOWN_SLOW_SPEEDS[level]
// [165] current_movedown_slow#0 = *MOVEDOWN_SLOW_SPEEDS -- vbuz1=_deref_pbuc1
// Set initial speed of moving down a tetromino
lda MOVEDOWN_SLOW_SPEEDS
sta.z current_movedown_slow
// [166] phi from play_init::@2 to play_init::@3 [phi:play_init::@2->play_init::@3]
// [166] phi play_init::b#2 = 0 [phi:play_init::@2->play_init::@3#0] -- vbuxx=vbuc1
ldx #0
// Set the initial score add values
// [166] phi from play_init::@3 to play_init::@3 [phi:play_init::@3->play_init::@3]
// [166] phi play_init::b#2 = play_init::b#1 [phi:play_init::@3->play_init::@3#0] -- register_copy
// play_init::@3
__b3:
// score_add_bcd[b] = SCORE_BASE_BCD[b]
// [167] play_init::$3 = play_init::b#2 << 2 -- vbuaa=vbuxx_rol_2
txa
asl
asl
// [168] score_add_bcd[play_init::$3] = SCORE_BASE_BCD[play_init::$3] -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa
tay
lda SCORE_BASE_BCD,y
sta score_add_bcd,y
lda SCORE_BASE_BCD+1,y
sta score_add_bcd+1,y
lda SCORE_BASE_BCD+2,y
sta score_add_bcd+2,y
lda SCORE_BASE_BCD+3,y
sta score_add_bcd+3,y
// for(char b: 0..4)
// [169] play_init::b#1 = ++ play_init::b#2 -- vbuxx=_inc_vbuxx
inx
// [170] if(play_init::b#1!=5) goto play_init::@3 -- vbuxx_neq_vbuc1_then_la1
cpx #5
bne __b3
// play_init::@return
// }
// [171] return
rts
}
// play_spawn_current
// Spawn a new piece
// Moves the next piece into the current and spawns a new next piece
play_spawn_current: {
.label __7 = $2f
// Spawn a new next piece
// Pick a random piece (0-6)
.label piece_idx = $1f
// current_piece_idx = next_piece_idx
// [173] play_spawn_current::current_piece_idx#0 = next_piece_idx#18 -- vbuxx=vbuz1
// Move next piece into current
ldx.z next_piece_idx
// current_piece = PIECES[current_piece_idx]
// [174] play_spawn_current::$7 = play_spawn_current::current_piece_idx#0 << 1 -- vbuz1=vbuxx_rol_1
txa
asl
sta.z __7
// current_piece_char = PIECES_CHARS[current_piece_idx]
// [175] current_piece_char#4 = PIECES_CHARS[play_spawn_current::current_piece_idx#0] -- vbuz1=pbuc1_derefidx_vbuxx
lda PIECES_CHARS,x
sta.z current_piece_char
// current_xpos = PIECES_START_X[current_piece_idx]
// [176] current_xpos#100 = PIECES_START_X[play_spawn_current::current_piece_idx#0] -- vbuz1=pbuc1_derefidx_vbuxx
lda PIECES_START_X,x
sta.z current_xpos
// current_ypos = PIECES_START_Y[current_piece_idx]
// [177] current_ypos#5 = PIECES_START_Y[play_spawn_current::current_piece_idx#0] -- vbuz1=pbuc1_derefidx_vbuxx
lda PIECES_START_Y,x
sta.z current_ypos
// play_collision(current_xpos,current_ypos,current_orientation)
// [178] play_collision::xpos#4 = current_xpos#100 -- vbuz1=vbuz2
lda.z current_xpos
sta.z play_collision.xpos
// [179] play_collision::ypos#4 = current_ypos#5 -- vbuz1=vbuz2
lda.z current_ypos
sta.z play_collision.ypos
// [180] current_piece#102 = (byte*)PIECES[play_spawn_current::$7] -- pbuz1=qbuc1_derefidx_vbuz2
ldy.z __7
lda PIECES,y
sta.z current_piece_1
lda PIECES+1,y
sta.z current_piece_1+1
// play_collision(current_xpos,current_ypos,current_orientation)
// [181] call play_collision
// [386] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision]
// [386] phi play_collision::xpos#6 = play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy
// [386] phi play_collision::yp#0 = play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy
// [386] phi play_collision::orientation#5 = 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1
ldx #0
// [386] phi current_piece#18 = current_piece#102 [phi:play_spawn_current->play_collision#3] -- register_copy
jsr play_collision
// play_collision(current_xpos,current_ypos,current_orientation)
// [182] play_collision::return#10 = play_collision::return#15
// play_spawn_current::@4
// [183] play_spawn_current::$1 = play_collision::return#10
// if(play_collision(current_xpos,current_ypos,current_orientation)==COLLISION_PLAYFIELD)
// [184] if(play_spawn_current::$1!=COLLISION_PLAYFIELD) goto play_spawn_current::@5 -- vbuaa_neq_vbuc1_then_la1
cmp #COLLISION_PLAYFIELD
bne __b1
// [186] phi from play_spawn_current::@4 to play_spawn_current::@1 [phi:play_spawn_current::@4->play_spawn_current::@1]
// [186] phi game_over#53 = 1 [phi:play_spawn_current::@4->play_spawn_current::@1#0] -- vbuz1=vbuc1
lda #1
sta.z game_over
// [185] phi from play_spawn_current::@4 to play_spawn_current::@5 [phi:play_spawn_current::@4->play_spawn_current::@5]
// play_spawn_current::@5
// [186] phi from play_spawn_current::@5 to play_spawn_current::@1 [phi:play_spawn_current::@5->play_spawn_current::@1]
// [186] phi game_over#53 = game_over#66 [phi:play_spawn_current::@5->play_spawn_current::@1#0] -- register_copy
// play_spawn_current::@1
__b1:
// [187] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2]
// [187] phi play_spawn_current::piece_idx#2 = 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1
lda #7
sta.z piece_idx
// play_spawn_current::@2
__b2:
// while(piece_idx==7)
// [188] if(play_spawn_current::piece_idx#2==7) goto play_spawn_current::sid_rnd1 -- vbuz1_eq_vbuc1_then_la1
lda #7
cmp.z piece_idx
beq sid_rnd1
// play_spawn_current::@return
// }
// [189] return
rts
// play_spawn_current::sid_rnd1
sid_rnd1:
// return SID->CH3_OSC;
// [190] play_spawn_current::sid_rnd1_return#0 = *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC) -- vbuaa=_deref_pbuc1
lda SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC
// play_spawn_current::@3
// piece_idx = sid_rnd()&7
// [191] play_spawn_current::piece_idx#1 = play_spawn_current::sid_rnd1_return#0 & 7 -- vbuz1=vbuaa_band_vbuc1
and #7
sta.z piece_idx
// [187] phi from play_spawn_current::@3 to play_spawn_current::@2 [phi:play_spawn_current::@3->play_spawn_current::@2]
// [187] phi play_spawn_current::piece_idx#2 = play_spawn_current::piece_idx#1 [phi:play_spawn_current::@3->play_spawn_current::@2#0] -- register_copy
jmp __b2
}
// render_playfield
// Render the static playfield on the screen (all pieces already locked into place)
render_playfield: {
.label screen_line = $36
// Do not render the top 2 lines.
.label i = $b
.label c = $23
.label l = $22
// [193] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1]
// [193] phi render_playfield::i#3 = PLAYFIELD_COLS*2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1
lda #PLAYFIELD_COLS*2
sta.z i
// [193] phi render_playfield::l#2 = 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1
lda #2
sta.z l
// [193] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1]
// [193] phi render_playfield::i#3 = render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy
// [193] phi render_playfield::l#2 = render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy
// render_playfield::@1
__b1:
// render_screen_render+l
// [194] render_playfield::$0 = render_screen_render#24 + render_playfield::l#2 -- vbuaa=vbuxx_plus_vbuz1
txa
clc
adc.z l
// screen_line = screen_lines_1[render_screen_render+l]
// [195] render_playfield::$3 = render_playfield::$0 << 1 -- vbuaa=vbuaa_rol_1
asl
// [196] render_playfield::screen_line#0 = screen_lines_1[render_playfield::$3] -- pbuz1=qbuc1_derefidx_vbuaa
tay
lda screen_lines_1,y
sta.z screen_line
lda screen_lines_1+1,y
sta.z screen_line+1
// [197] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2]
// [197] phi render_playfield::c#2 = 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1
lda #0
sta.z c
// [197] phi render_playfield::screen_line#2 = render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy
// [197] phi render_playfield::i#2 = render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy
// [197] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2]
// [197] phi render_playfield::c#2 = render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy
// [197] phi render_playfield::screen_line#2 = render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy
// [197] phi render_playfield::i#2 = render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy
// render_playfield::@2
__b2:
// *(screen_line++) = playfield[i++]
// [198] *render_playfield::screen_line#2 = playfield[render_playfield::i#2] -- _deref_pbuz1=pbuc1_derefidx_vbuz2
ldy.z i
lda playfield,y
ldy #0
sta (screen_line),y
// *(screen_line++) = playfield[i++];
// [199] render_playfield::screen_line#1 = ++ render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1
inc.z screen_line
bne !+
inc.z screen_line+1
!:
// [200] render_playfield::i#1 = ++ render_playfield::i#2 -- vbuz1=_inc_vbuz1
inc.z i
// for(char c:0..PLAYFIELD_COLS-1)
// [201] render_playfield::c#1 = ++ render_playfield::c#2 -- vbuz1=_inc_vbuz1
inc.z c
// [202] if(render_playfield::c#1!=PLAYFIELD_COLS-1+1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1
lda #PLAYFIELD_COLS-1+1
cmp.z c
bne __b2
// render_playfield::@3
// for(char l:2..PLAYFIELD_LINES-1)
// [203] render_playfield::l#1 = ++ render_playfield::l#2 -- vbuz1=_inc_vbuz1
inc.z l
// [204] if(render_playfield::l#1!=PLAYFIELD_LINES-1+1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1
lda #PLAYFIELD_LINES-1+1
cmp.z l
bne __b1
// render_playfield::@return
// }
// [205] return
rts
}
// render_moving
// Render the current moving piece at position (current_xpos, current_ypos)
// Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this.
render_moving: {
.label ypos = $22
.label screen_line = $30
.label xpos = $10
.label i = $23
.label l = $b
// ypos = current_ypos
// [207] render_moving::ypos#0 = current_ypos#14 -- vbuz1=vbuxx
stx.z ypos
// [208] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1]
// [208] phi render_moving::l#4 = 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1
lda #0
sta.z l
// [208] phi render_moving::i#3 = 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1
sta.z i
// [208] phi render_moving::ypos#2 = render_moving::ypos#0 [phi:render_moving->render_moving::@1#2] -- register_copy
// [208] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1]
// [208] phi render_moving::l#4 = render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy
// [208] phi render_moving::i#3 = render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy
// [208] phi render_moving::ypos#2 = render_moving::ypos#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy
// render_moving::@1
__b1:
// if(ypos>1)
// [209] if(render_moving::ypos#2>=1+1) goto render_moving::@2 -- vbuz1_ge_vbuc1_then_la1
lda.z ypos
cmp #1+1
bcs __b2
// render_moving::@7
// i += 4
// [210] render_moving::i#1 = render_moving::i#3 + 4 -- vbuz1=vbuz1_plus_vbuc1
lax.z i
axs #-[4]
stx.z i
// [211] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3]
// [211] phi render_moving::i#8 = render_moving::i#2 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy
// render_moving::@3
__b3:
// ypos++;
// [212] render_moving::ypos#1 = ++ render_moving::ypos#2 -- vbuz1=_inc_vbuz1
inc.z ypos
// for(char l:0..3)
// [213] render_moving::l#1 = ++ render_moving::l#4 -- vbuz1=_inc_vbuz1
inc.z l
// [214] if(render_moving::l#1!=4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1
lda #4
cmp.z l
bne __b1
// render_moving::@return
// }
// [215] return
rts
// render_moving::@2
__b2:
// render_screen_render+ypos
// [216] render_moving::$1 = render_screen_render#35 + render_moving::ypos#2 -- vbuaa=vbuz1_plus_vbuz2
lda.z render_screen_render_1
clc
adc.z ypos
// screen_line = screen_lines_1[render_screen_render+ypos]
// [217] render_moving::$6 = render_moving::$1 << 1 -- vbuaa=vbuaa_rol_1
asl
// [218] render_moving::screen_line#0 = screen_lines_1[render_moving::$6] -- pbuz1=qbuc1_derefidx_vbuaa
tay
lda screen_lines_1,y
sta.z screen_line
lda screen_lines_1+1,y
sta.z screen_line+1
// xpos = current_xpos
// [219] render_moving::xpos#0 = current_xpos#61 -- vbuz1=vbuz2
lda.z current_xpos_1
sta.z xpos
// [220] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4]
// [220] phi render_moving::c#2 = 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuxx=vbuc1
ldx #0
// [220] phi render_moving::xpos#2 = render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy
// [220] phi render_moving::i#4 = render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy
// [220] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4]
// [220] phi render_moving::c#2 = render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy
// [220] phi render_moving::xpos#2 = render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy
// [220] phi render_moving::i#4 = render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy
// render_moving::@4
__b4:
// current_cell = current_piece_gfx[i++]
// [221] render_moving::current_cell#0 = current_piece_gfx#66[render_moving::i#4] -- vbuaa=pbuz1_derefidx_vbuz2
ldy.z i
lda (current_piece_gfx_1),y
// [222] render_moving::i#2 = ++ render_moving::i#4 -- vbuz1=_inc_vbuz1
inc.z i
// if(current_cell!=0)
// [223] if(render_moving::current_cell#0==0) goto render_moving::@5 -- vbuaa_eq_0_then_la1
cmp #0
beq __b5
// render_moving::@6
// screen_line[xpos] = current_piece_char
// [224] render_moving::screen_line#0[render_moving::xpos#2] = current_piece_char#70 -- pbuz1_derefidx_vbuz2=vbuz3
lda.z current_piece_char_1
ldy.z xpos
sta (screen_line),y
// render_moving::@5
__b5:
// xpos++;
// [225] render_moving::xpos#1 = ++ render_moving::xpos#2 -- vbuz1=_inc_vbuz1
inc.z xpos
// for(char c:0..3)
// [226] render_moving::c#1 = ++ render_moving::c#2 -- vbuxx=_inc_vbuxx
inx
// [227] if(render_moving::c#1!=4) goto render_moving::@4 -- vbuxx_neq_vbuc1_then_la1
cpx #4
bne __b4
jmp __b3
}
// render_next
// Render the next tetromino in the "next" area
render_next: {
// Find the screen area
.const next_area_offset = $28*$c+$18+4
.label next_piece_char = $32
.label next_piece_gfx = $c
.label screen_next_area = $36
.label l = $10
// if(render_screen_render==0)
// [229] if(render_screen_render#16==0) goto render_next::@1 -- vbuxx_eq_0_then_la1
cpx #0
beq __b1
// [231] phi from render_next to render_next::@2 [phi:render_next->render_next::@2]
// [231] phi render_next::screen_next_area#11 = PLAYFIELD_SCREEN_2+render_next::next_area_offset [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_2+next_area_offset
sta.z screen_next_area
lda #>PLAYFIELD_SCREEN_2+next_area_offset
sta.z screen_next_area+1
jmp __b2
// [230] phi from render_next to render_next::@1 [phi:render_next->render_next::@1]
// render_next::@1
__b1:
// [231] phi from render_next::@1 to render_next::@2 [phi:render_next::@1->render_next::@2]
// [231] phi render_next::screen_next_area#11 = PLAYFIELD_SCREEN_1+render_next::next_area_offset [phi:render_next::@1->render_next::@2#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_1+next_area_offset
sta.z screen_next_area
lda #>PLAYFIELD_SCREEN_1+next_area_offset
sta.z screen_next_area+1
// render_next::@2
__b2:
// next_piece_gfx = PIECES[next_piece_idx]
// [232] render_next::$6 = next_piece_idx#13 << 1 -- vbuxx=vbuyy_rol_1
tya
asl
tax
// next_piece_char = PIECES_NEXT_CHARS[next_piece_idx]
// [233] render_next::next_piece_char#0 = PIECES_NEXT_CHARS[next_piece_idx#13] -- vbuz1=pbuc1_derefidx_vbuyy
lda PIECES_NEXT_CHARS,y
sta.z next_piece_char
// [234] render_next::next_piece_gfx#8 = (byte*)PIECES[render_next::$6] -- pbuz1=qbuc1_derefidx_vbuxx
lda PIECES,x
sta.z next_piece_gfx
lda PIECES+1,x
sta.z next_piece_gfx+1
// [235] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3]
// [235] phi render_next::l#7 = 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1
lda #0
sta.z l
// [235] phi render_next::screen_next_area#10 = render_next::screen_next_area#11 [phi:render_next::@2->render_next::@3#1] -- register_copy
// [235] phi render_next::next_piece_gfx#3 = render_next::next_piece_gfx#8 [phi:render_next::@2->render_next::@3#2] -- register_copy
// [235] phi from render_next::@8 to render_next::@3 [phi:render_next::@8->render_next::@3]
// [235] phi render_next::l#7 = render_next::l#1 [phi:render_next::@8->render_next::@3#0] -- register_copy
// [235] phi render_next::screen_next_area#10 = render_next::screen_next_area#4 [phi:render_next::@8->render_next::@3#1] -- register_copy
// [235] phi render_next::next_piece_gfx#3 = render_next::next_piece_gfx#1 [phi:render_next::@8->render_next::@3#2] -- register_copy
// render_next::@3
__b3:
// [236] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4]
// [236] phi render_next::c#2 = 0 [phi:render_next::@3->render_next::@4#0] -- vbuxx=vbuc1
ldx #0
// [236] phi render_next::screen_next_area#5 = render_next::screen_next_area#10 [phi:render_next::@3->render_next::@4#1] -- register_copy
// [236] phi render_next::next_piece_gfx#2 = render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy
// [236] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4]
// [236] phi render_next::c#2 = render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy
// [236] phi render_next::screen_next_area#5 = render_next::screen_next_area#3 [phi:render_next::@6->render_next::@4#1] -- register_copy
// [236] phi render_next::next_piece_gfx#2 = render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy
// render_next::@4
__b4:
// cell = *next_piece_gfx++
// [237] render_next::cell#0 = *render_next::next_piece_gfx#2 -- vbuaa=_deref_pbuz1
ldy #0
lda (next_piece_gfx),y
// [238] render_next::next_piece_gfx#1 = ++ render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1
inc.z next_piece_gfx
bne !+
inc.z next_piece_gfx+1
!:
// if(cell!=0)
// [239] if(render_next::cell#0!=0) goto render_next::@5 -- vbuaa_neq_0_then_la1
cmp #0
bne __b5
// render_next::@7
// *screen_next_area = 0
// [240] *render_next::screen_next_area#5 = 0 -- _deref_pbuz1=vbuc1
lda #0
tay
sta (screen_next_area),y
// render_next::@6
__b6:
// screen_next_area++;
// [241] render_next::screen_next_area#3 = ++ render_next::screen_next_area#5 -- pbuz1=_inc_pbuz1
inc.z screen_next_area
bne !+
inc.z screen_next_area+1
!:
// for(char c:0..3)
// [242] render_next::c#1 = ++ render_next::c#2 -- vbuxx=_inc_vbuxx
inx
// [243] if(render_next::c#1!=4) goto render_next::@4 -- vbuxx_neq_vbuc1_then_la1
cpx #4
bne __b4
// render_next::@8
// screen_next_area += 36
// [244] render_next::screen_next_area#4 = render_next::screen_next_area#3 + $24 -- pbuz1=pbuz1_plus_vbuc1
lda #$24
clc
adc.z screen_next_area
sta.z screen_next_area
bcc !+
inc.z screen_next_area+1
!:
// for(char l:0..3)
// [245] render_next::l#1 = ++ render_next::l#7 -- vbuz1=_inc_vbuz1
inc.z l
// [246] if(render_next::l#1!=4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1
lda #4
cmp.z l
bne __b3
// render_next::@return
// }
// [247] return
rts
// render_next::@5
__b5:
// *screen_next_area = next_piece_char
// [248] *render_next::screen_next_area#5 = render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2
lda.z next_piece_char
ldy #0
sta (screen_next_area),y
jmp __b6
}
// render_show
// Update 0xD018 to show the current screen (used for double buffering)
render_show: {
.const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f
.const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f
// if(render_screen_show==0)
// [249] if(render_screen_show#17==0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1
lda.z render_screen_show
cmp #0
beq toD0181
// [250] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182]
// render_show::toD0182
// [251] phi from render_show::toD0182 to render_show::@1 [phi:render_show::toD0182->render_show::@1]
// [251] phi render_show::d018val#3 = render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@1#0] -- vbuaa=vbuc1
lda #toD0182_return
// render_show::@1
__b1:
// *D018 = d018val
// [252] *D018 = render_show::d018val#3 -- _deref_pbuc1=vbuaa
sta D018
// *BG_COLOR1 = PIECES_COLORS_1[level]
// [253] *BG_COLOR1 = PIECES_COLORS_1[level#25] -- _deref_pbuc1=pbuc2_derefidx_vbuz1
ldy.z level
lda PIECES_COLORS_1,y
sta BG_COLOR1
// *BG_COLOR2 = PIECES_COLORS_2[level]
// [254] *BG_COLOR2 = PIECES_COLORS_2[level#25] -- _deref_pbuc1=pbuc2_derefidx_vbuz1
lda PIECES_COLORS_2,y
sta BG_COLOR2
// render_screen_showing = render_screen_show
// [255] render_screen_showing = render_screen_show#17 -- vbuz1=vbuz2
lda.z render_screen_show
sta.z render_screen_showing
// render_show::@return
// }
// [256] return
rts
// [257] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181]
// render_show::toD0181
toD0181:
// [251] phi from render_show::toD0181 to render_show::@1 [phi:render_show::toD0181->render_show::@1]
// [251] phi render_show::d018val#3 = render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@1#0] -- vbuaa=vbuc1
lda #toD0181_return
jmp __b1
}
// keyboard_event_scan
// Scans the entire matrix to determine which keys have been pressed/depressed.
// Generates keyboard events into the event buffer. Events can be read using keyboard_event_get().
// Handles debounce and only generates events when the status of a key changes.
// Also stores current status of modifiers in keyboard_modifiers.
keyboard_event_scan: {
.label row_scan = $33
.label keycode = $23
.label row = $b
// [259] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7]
// [259] phi keyboard_events_size#32 = keyboard_events_size#20 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy
// [259] phi keyboard_event_scan::keycode#11 = 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1
lda #0
sta.z keycode
// [259] phi keyboard_event_scan::row#2 = 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1
sta.z row
// [259] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7]
// [259] phi keyboard_events_size#32 = keyboard_events_size#14 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy
// [259] phi keyboard_event_scan::keycode#11 = keyboard_event_scan::keycode#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy
// [259] phi keyboard_event_scan::row#2 = keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy
// keyboard_event_scan::@7
__b7:
// keyboard_matrix_read(row)
// [260] keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 -- vbuxx=vbuz1
ldx.z row
// [261] call keyboard_matrix_read
jsr keyboard_matrix_read
// [262] keyboard_matrix_read::return#2 = keyboard_matrix_read::return#0
// keyboard_event_scan::@19
// row_scan = keyboard_matrix_read(row)
// [263] keyboard_event_scan::row_scan#0 = keyboard_matrix_read::return#2 -- vbuz1=vbuaa
sta.z row_scan
// if(row_scan!=keyboard_scan_values[row])
// [264] if(keyboard_event_scan::row_scan#0!=keyboard_scan_values[keyboard_event_scan::row#2]) goto keyboard_event_scan::@9 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1
ldy.z row
cmp keyboard_scan_values,y
bne __b5
// keyboard_event_scan::@16
// keycode = keycode + 8
// [265] keyboard_event_scan::keycode#1 = keyboard_event_scan::keycode#11 + 8 -- vbuz1=vbuz1_plus_vbuc1
lax.z keycode
axs #-[8]
stx.z keycode
// [266] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8]
// [266] phi keyboard_events_size#14 = keyboard_events_size#31 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy
// [266] phi keyboard_event_scan::keycode#13 = keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy
// keyboard_event_scan::@8
__b8:
// for(char row : 0..7)
// [267] keyboard_event_scan::row#1 = ++ keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1
inc.z row
// [268] if(keyboard_event_scan::row#1!=8) goto keyboard_event_scan::@7 -- vbuz1_neq_vbuc1_then_la1
lda #8
cmp.z row
bne __b7
// [269] phi from keyboard_event_scan::@8 to keyboard_event_scan::@17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@17]
// keyboard_event_scan::@17
// keyboard_event_pressed(KEY_LSHIFT)
// [270] call keyboard_event_pressed
// [413] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed]
// [413] phi keyboard_event_pressed::keycode#5 = KEY_LSHIFT [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuxx=vbuc1
ldx #KEY_LSHIFT
jsr keyboard_event_pressed
// keyboard_event_pressed(KEY_LSHIFT)
// [271] keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11
// keyboard_event_scan::@20
// [272] keyboard_event_scan::$0 = keyboard_event_pressed::return#0
// if(keyboard_event_pressed(KEY_LSHIFT)!= 0)
// [273] if(keyboard_event_scan::$0==0) goto keyboard_event_scan::@1 -- vbuaa_eq_0_then_la1
cmp #0
// [274] phi from keyboard_event_scan::@20 to keyboard_event_scan::@18 [phi:keyboard_event_scan::@20->keyboard_event_scan::@18]
// keyboard_event_scan::@18
// [275] phi from keyboard_event_scan::@18 keyboard_event_scan::@20 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@18/keyboard_event_scan::@20->keyboard_event_scan::@1]
// keyboard_event_scan::@1
// keyboard_event_pressed(KEY_RSHIFT)
// [276] call keyboard_event_pressed
// [413] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed]
// [413] phi keyboard_event_pressed::keycode#5 = KEY_RSHIFT [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuxx=vbuc1
ldx #KEY_RSHIFT
jsr keyboard_event_pressed
// keyboard_event_pressed(KEY_RSHIFT)
// [277] keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11
// keyboard_event_scan::@21
// [278] keyboard_event_scan::$3 = keyboard_event_pressed::return#1
// if(keyboard_event_pressed(KEY_RSHIFT)!= 0)
// [279] if(keyboard_event_scan::$3==0) goto keyboard_event_scan::@2 -- vbuaa_eq_0_then_la1
cmp #0
// [280] phi from keyboard_event_scan::@21 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@21->keyboard_event_scan::@4]
// keyboard_event_scan::@4
// [281] phi from keyboard_event_scan::@21 keyboard_event_scan::@4 to keyboard_event_scan::@2 [phi:keyboard_event_scan::@21/keyboard_event_scan::@4->keyboard_event_scan::@2]
// keyboard_event_scan::@2
// keyboard_event_pressed(KEY_CTRL)
// [282] call keyboard_event_pressed
// [413] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed]
// [413] phi keyboard_event_pressed::keycode#5 = KEY_CTRL [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuxx=vbuc1
ldx #KEY_CTRL
jsr keyboard_event_pressed
// keyboard_event_pressed(KEY_CTRL)
// [283] keyboard_event_pressed::return#2 = keyboard_event_pressed::return#11
// keyboard_event_scan::@22
// [284] keyboard_event_scan::$6 = keyboard_event_pressed::return#2
// if(keyboard_event_pressed(KEY_CTRL)!= 0)
// [285] if(keyboard_event_scan::$6==0) goto keyboard_event_scan::@3 -- vbuaa_eq_0_then_la1
cmp #0
// [286] phi from keyboard_event_scan::@22 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@22->keyboard_event_scan::@5]
// keyboard_event_scan::@5
// [287] phi from keyboard_event_scan::@22 keyboard_event_scan::@5 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@5->keyboard_event_scan::@3]
// keyboard_event_scan::@3
// keyboard_event_pressed(KEY_COMMODORE)
// [288] call keyboard_event_pressed
// [413] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed]
// [413] phi keyboard_event_pressed::keycode#5 = KEY_COMMODORE [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuxx=vbuc1
ldx #KEY_COMMODORE
jsr keyboard_event_pressed
// keyboard_event_pressed(KEY_COMMODORE)
// [289] keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11
// keyboard_event_scan::@23
// [290] keyboard_event_scan::$9 = keyboard_event_pressed::return#10
// if(keyboard_event_pressed(KEY_COMMODORE)!= 0)
// [291] if(keyboard_event_scan::$9==0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1
cmp #0
// [292] phi from keyboard_event_scan::@23 to keyboard_event_scan::@6 [phi:keyboard_event_scan::@23->keyboard_event_scan::@6]
// keyboard_event_scan::@6
// keyboard_event_scan::@return
// }
// [293] return
rts
// Something has changed on the keyboard row - check each column
// [294] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9]
// [294] phi keyboard_events_size#11 = keyboard_events_size#31 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy
// [294] phi keyboard_event_scan::keycode#10 = keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy
// [294] phi keyboard_event_scan::col#2 = keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy
// [294] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9]
__b5:
// [294] phi keyboard_events_size#11 = keyboard_events_size#32 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy
// [294] phi keyboard_event_scan::keycode#10 = keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy
// [294] phi keyboard_event_scan::col#2 = 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuxx=vbuc1
ldx #0
// keyboard_event_scan::@9
__b9:
// row_scan^keyboard_scan_values[row]
// [295] keyboard_event_scan::$15 = keyboard_event_scan::row_scan#0 ^ keyboard_scan_values[keyboard_event_scan::row#2] -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2
lda.z row_scan
ldy.z row
eor keyboard_scan_values,y
// (row_scan^keyboard_scan_values[row])&keyboard_matrix_col_bitmask[col]
// [296] keyboard_event_scan::$16 = keyboard_event_scan::$15 & keyboard_matrix_col_bitmask[keyboard_event_scan::col#2] -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx
and keyboard_matrix_col_bitmask,x
// if(((row_scan^keyboard_scan_values[row])&keyboard_matrix_col_bitmask[col])!=0)
// [297] if(keyboard_event_scan::$16==0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1
cmp #0
beq __b10
// keyboard_event_scan::@12
// if(keyboard_events_size!=8)
// [298] if(keyboard_events_size#11==8) goto keyboard_event_scan::@10 -- vbuz1_eq_vbuc1_then_la1
lda #8
cmp.z keyboard_events_size
beq __b10
// keyboard_event_scan::@13
// event_type = row_scan&keyboard_matrix_col_bitmask[col]
// [299] keyboard_event_scan::event_type#0 = keyboard_event_scan::row_scan#0 & keyboard_matrix_col_bitmask[keyboard_event_scan::col#2] -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx
lda keyboard_matrix_col_bitmask,x
and.z row_scan
// if(event_type==0)
// [300] if(keyboard_event_scan::event_type#0==0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1
cmp #0
beq __b11
// keyboard_event_scan::@14
// keyboard_events[keyboard_events_size++] = keycode
// [301] keyboard_events[keyboard_events_size#11] = keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2
// Key pressed
lda.z keycode
ldy.z keyboard_events_size
sta keyboard_events,y
// keyboard_events[keyboard_events_size++] = keycode;
// [302] keyboard_events_size#1 = ++ keyboard_events_size#11 -- vbuz1=_inc_vbuz1
inc.z keyboard_events_size
// [303] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10]
// [303] phi keyboard_events_size#31 = keyboard_events_size#0 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy
// keyboard_event_scan::@10
__b10:
// keycode++;
// [304] keyboard_event_scan::keycode#14 = ++ keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1
inc.z keycode
// for(char col : 0..7)
// [305] keyboard_event_scan::col#1 = ++ keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx
inx
// [306] if(keyboard_event_scan::col#1!=8) goto keyboard_event_scan::@9 -- vbuxx_neq_vbuc1_then_la1
cpx #8
bne __b9
// keyboard_event_scan::@15
// keyboard_scan_values[row] = row_scan
// [307] keyboard_scan_values[keyboard_event_scan::row#2] = keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2
// Store the current keyboard status for the row to debounce
lda.z row_scan
ldy.z row
sta keyboard_scan_values,y
jmp __b8
// keyboard_event_scan::@11
__b11:
// keycode|$40
// [308] keyboard_event_scan::$23 = keyboard_event_scan::keycode#10 | $40 -- vbuaa=vbuz1_bor_vbuc1
lda #$40
ora.z keycode
// keyboard_events[keyboard_events_size++] = keycode|$40
// [309] keyboard_events[keyboard_events_size#11] = keyboard_event_scan::$23 -- pbuc1_derefidx_vbuz1=vbuaa
// Key released
ldy.z keyboard_events_size
sta keyboard_events,y
// keyboard_events[keyboard_events_size++] = keycode|$40;
// [310] keyboard_events_size#0 = ++ keyboard_events_size#11 -- vbuz1=_inc_vbuz1
inc.z keyboard_events_size
jmp __b10
}
// keyboard_event_get
// Get the next event from the keyboard event buffer.
// Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process.
// The buffer is filled by keyboard_event_scan()
keyboard_event_get: {
// if(keyboard_events_size==0)
// [311] if(keyboard_events_size#14==0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1
lda.z keyboard_events_size
cmp #0
beq __b1
// keyboard_event_get::@1
// return keyboard_events[--keyboard_events_size];
// [312] keyboard_events_size#3 = -- keyboard_events_size#14 -- vbuz1=_dec_vbuz1
dec.z keyboard_events_size
// [313] keyboard_event_get::return#1 = keyboard_events[keyboard_events_size#3] -- vbuaa=pbuc1_derefidx_vbuz1
ldy.z keyboard_events_size
lda keyboard_events,y
// [314] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return]
// [314] phi keyboard_events_size#17 = keyboard_events_size#3 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy
// [314] phi keyboard_event_get::return#2 = keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy
rts
// [314] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return]
__b1:
// [314] phi keyboard_events_size#17 = keyboard_events_size#14 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy
// [314] phi keyboard_event_get::return#2 = $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1
lda #$ff
// keyboard_event_get::@return
// }
// [315] return
rts
}
// play_movement
// Perform any movement of the current piece
// key_event is the next keyboard_event() og 0xff if no keyboard event is pending
// Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed)
// play_movement(byte zp($2e) key_event)
play_movement: {
.label render = $b
.label return = $b
.label key_event = $2e
// play_move_down(key_event)
// [316] play_move_down::key_event#0 = play_movement::key_event#0 -- vbuaa=vbuz1
lda.z key_event
// [317] call play_move_down
jsr play_move_down
// [318] play_move_down::return#0 = play_move_down::return#3 -- vbuaa=vbuxx
txa
// play_movement::@2
// render += play_move_down(key_event)
// [319] play_movement::render#1 = play_move_down::return#0 -- vbuz1=vbuaa
sta.z render
// if(game_over!=0)
// [320] if(game_over#16==0) goto play_movement::@1 -- vbuz1_eq_0_then_la1
lda.z game_over
cmp #0
beq __b1
// [321] phi from play_movement::@2 play_movement::@4 to play_movement::@return [phi:play_movement::@2/play_movement::@4->play_movement::@return]
// [321] phi current_xpos#2 = current_xpos#23 [phi:play_movement::@2/play_movement::@4->play_movement::@return#0] -- register_copy
// [321] phi current_piece_gfx#19 = current_piece_gfx#21 [phi:play_movement::@2/play_movement::@4->play_movement::@return#1] -- register_copy
// [321] phi current_orientation#18 = current_orientation#21 [phi:play_movement::@2/play_movement::@4->play_movement::@return#2] -- register_copy
// [321] phi play_movement::return#2 = play_movement::render#1 [phi:play_movement::@2/play_movement::@4->play_movement::@return#3] -- register_copy
// play_movement::@return
// }
// [322] return
rts
// play_movement::@1
__b1:
// play_move_leftright(key_event)
// [323] play_move_leftright::key_event#0 = play_movement::key_event#0 -- vbuaa=vbuz1
lda.z key_event
// [324] call play_move_leftright
jsr play_move_leftright
// [325] play_move_leftright::return#0 = play_move_leftright::return#2
// play_movement::@3
// [326] play_movement::$3 = play_move_leftright::return#0
// render += play_move_leftright(key_event)
// [327] play_movement::render#2 = play_movement::render#1 + play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa
clc
adc.z render
sta.z render
// play_move_rotate(key_event)
// [328] play_move_rotate::key_event#0 = play_movement::key_event#0 -- vbuaa=vbuz1
lda.z key_event
// [329] call play_move_rotate
jsr play_move_rotate
// [330] play_move_rotate::return#0 = play_move_rotate::return#2
// play_movement::@4
// [331] play_movement::$4 = play_move_rotate::return#0
// render += play_move_rotate(key_event)
// [332] play_movement::return#0 = play_movement::render#2 + play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa
clc
adc.z return
sta.z return
rts
}
// render_score
// Show the current score
render_score: {
.const score_offset = $28*5+$1c
.const lines_offset = $28*1+$16
.const level_offset = $28*$13+$1f
.label score_bytes = score_bcd
.label screen = $c
// if(render_screen_render==0)
// [333] if(render_screen_render#19==0) goto render_score::@1 -- vbuz1_eq_0_then_la1
lda.z render_screen_render
cmp #0
beq __b1
// [335] phi from render_score to render_score::@2 [phi:render_score->render_score::@2]
// [335] phi render_score::screen#3 = PLAYFIELD_SCREEN_2 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_2
sta.z screen
lda #>PLAYFIELD_SCREEN_2
sta.z screen+1
jmp __b2
// [334] phi from render_score to render_score::@1 [phi:render_score->render_score::@1]
// render_score::@1
__b1:
// [335] phi from render_score::@1 to render_score::@2 [phi:render_score::@1->render_score::@2]
// [335] phi render_score::screen#3 = PLAYFIELD_SCREEN_1 [phi:render_score::@1->render_score::@2#0] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_1
sta.z screen
lda #>PLAYFIELD_SCREEN_1
sta.z screen+1
// render_score::@2
__b2:
// render_bcd( screen, score_offset, score_bytes[2], 0)
// [336] render_bcd::screen#0 = render_score::screen#3
// [337] render_bcd::bcd#0 = *(render_score::score_bytes+2) -- vbuxx=_deref_pbuc1
ldx score_bytes+2
// [338] call render_bcd
// [499] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd]
// [499] phi render_bcd::bcd#6 = render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy
// [499] phi render_bcd::only_low#6 = 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1
ldy #0
// [499] phi render_bcd::offset#6 = render_score::score_offset [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1
lda #<score_offset
sta.z render_bcd.offset
lda #>score_offset
sta.z render_bcd.offset+1
// [499] phi render_bcd::screen#6 = render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy
jsr render_bcd
// render_score::@3
// render_bcd( screen, score_offset+2, score_bytes[1], 0)
// [339] render_bcd::screen#1 = render_score::screen#3
// [340] render_bcd::bcd#1 = *(render_score::score_bytes+1) -- vbuxx=_deref_pbuc1
ldx score_bytes+1
// [341] call render_bcd
// [499] phi from render_score::@3 to render_bcd [phi:render_score::@3->render_bcd]
// [499] phi render_bcd::bcd#6 = render_bcd::bcd#1 [phi:render_score::@3->render_bcd#0] -- register_copy
// [499] phi render_bcd::only_low#6 = 0 [phi:render_score::@3->render_bcd#1] -- vbuyy=vbuc1
ldy #0
// [499] phi render_bcd::offset#6 = render_score::score_offset+2 [phi:render_score::@3->render_bcd#2] -- vwuz1=vwuc1
lda #<score_offset+2
sta.z render_bcd.offset
lda #>score_offset+2
sta.z render_bcd.offset+1
// [499] phi render_bcd::screen#6 = render_bcd::screen#1 [phi:render_score::@3->render_bcd#3] -- register_copy
jsr render_bcd
// render_score::@4
// render_bcd( screen, score_offset+4, score_bytes[0], 0)
// [342] render_bcd::screen#2 = render_score::screen#3
// [343] render_bcd::bcd#2 = *render_score::score_bytes -- vbuxx=_deref_pbuc1
ldx.z score_bytes
// [344] call render_bcd
// [499] phi from render_score::@4 to render_bcd [phi:render_score::@4->render_bcd]
// [499] phi render_bcd::bcd#6 = render_bcd::bcd#2 [phi:render_score::@4->render_bcd#0] -- register_copy
// [499] phi render_bcd::only_low#6 = 0 [phi:render_score::@4->render_bcd#1] -- vbuyy=vbuc1
ldy #0
// [499] phi render_bcd::offset#6 = render_score::score_offset+4 [phi:render_score::@4->render_bcd#2] -- vwuz1=vwuc1
lda #<score_offset+4
sta.z render_bcd.offset
lda #>score_offset+4
sta.z render_bcd.offset+1
// [499] phi render_bcd::screen#6 = render_bcd::screen#2 [phi:render_score::@4->render_bcd#3] -- register_copy
jsr render_bcd
// render_score::@5
// render_bcd( screen, lines_offset, >lines_bcd, 1)
// [345] render_bcd::bcd#3 = > lines_bcd#16 -- vbuxx=_hi_vwuz1
ldx.z lines_bcd+1
// [346] render_bcd::screen#3 = render_score::screen#3
// [347] call render_bcd
// [499] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd]
// [499] phi render_bcd::bcd#6 = render_bcd::bcd#3 [phi:render_score::@5->render_bcd#0] -- register_copy
// [499] phi render_bcd::only_low#6 = 1 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1
ldy #1
// [499] phi render_bcd::offset#6 = render_score::lines_offset [phi:render_score::@5->render_bcd#2] -- vwuz1=vwuc1
lda #<lines_offset
sta.z render_bcd.offset
lda #>lines_offset
sta.z render_bcd.offset+1
// [499] phi render_bcd::screen#6 = render_bcd::screen#3 [phi:render_score::@5->render_bcd#3] -- register_copy
jsr render_bcd
// render_score::@6
// render_bcd( screen, lines_offset+1, <lines_bcd, 0)
// [348] render_bcd::bcd#4 = < lines_bcd#16 -- vbuxx=_lo_vwuz1
ldx.z lines_bcd
// [349] render_bcd::screen#4 = render_score::screen#3
// [350] call render_bcd
// [499] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd]
// [499] phi render_bcd::bcd#6 = render_bcd::bcd#4 [phi:render_score::@6->render_bcd#0] -- register_copy
// [499] phi render_bcd::only_low#6 = 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1
ldy #0
// [499] phi render_bcd::offset#6 = render_score::lines_offset+1 [phi:render_score::@6->render_bcd#2] -- vwuz1=vwuc1
lda #<lines_offset+1
sta.z render_bcd.offset
lda #>lines_offset+1
sta.z render_bcd.offset+1
// [499] phi render_bcd::screen#6 = render_bcd::screen#4 [phi:render_score::@6->render_bcd#3] -- register_copy
jsr render_bcd
// render_score::@7
// render_bcd( screen, level_offset, level_bcd, 0)
// [351] render_bcd::screen#5 = render_score::screen#3
// [352] render_bcd::bcd#5 = level_bcd#18 -- vbuxx=vbuz1
ldx.z level_bcd
// [353] call render_bcd
// [499] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd]
// [499] phi render_bcd::bcd#6 = render_bcd::bcd#5 [phi:render_score::@7->render_bcd#0] -- register_copy
// [499] phi render_bcd::only_low#6 = 0 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1
ldy #0
// [499] phi render_bcd::offset#6 = render_score::level_offset [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1
lda #<level_offset
sta.z render_bcd.offset
lda #>level_offset
sta.z render_bcd.offset+1
// [499] phi render_bcd::screen#6 = render_bcd::screen#5 [phi:render_score::@7->render_bcd#3] -- register_copy
jsr render_bcd
// render_score::@return
// }
// [354] return
rts
}
// render_screen_swap
// Swap rendering to the other screen (used for double buffering)
render_screen_swap: {
// render_screen_render ^= 0x20
// [355] render_screen_render#12 = render_screen_render#19 ^ $20 -- vbuz1=vbuz1_bxor_vbuc1
lda #$20
eor.z render_screen_render
sta.z render_screen_render
// render_screen_show ^= 0x20
// [356] render_screen_show#14 = render_screen_show#17 ^ $20 -- vbuz1=vbuz1_bxor_vbuc1
lda #$20
eor.z render_screen_show
sta.z render_screen_show
// render_screen_swap::@return
// }
// [357] return
rts
}
// render_screen_original
// Copy the original screen data to the passed screen
// Also copies colors to 0xd800
// render_screen_original(byte* zp($30) screen)
render_screen_original: {
.const SPACE = 0
.label screen = $30
.label cols = $34
.label oscr = $36
.label ocols = $20
.label y = $23
// [359] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1]
// [359] phi render_screen_original::y#6 = 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1
lda #0
sta.z y
// [359] phi render_screen_original::ocols#4 = PLAYFIELD_COLORS_ORIGINAL+$20*2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1
lda #<PLAYFIELD_COLORS_ORIGINAL+$20*2
sta.z ocols
lda #>PLAYFIELD_COLORS_ORIGINAL+$20*2
sta.z ocols+1
// [359] phi render_screen_original::oscr#4 = PLAYFIELD_SCREEN_ORIGINAL+$20*2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1
lda #<PLAYFIELD_SCREEN_ORIGINAL+$20*2
sta.z oscr
lda #>PLAYFIELD_SCREEN_ORIGINAL+$20*2
sta.z oscr+1
// [359] phi render_screen_original::cols#7 = COLS [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1
lda #<COLS
sta.z cols
lda #>COLS
sta.z cols+1
// [359] phi render_screen_original::screen#8 = render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy
// [359] phi from render_screen_original::@5 to render_screen_original::@1 [phi:render_screen_original::@5->render_screen_original::@1]
// [359] phi render_screen_original::y#6 = render_screen_original::y#1 [phi:render_screen_original::@5->render_screen_original::@1#0] -- register_copy
// [359] phi render_screen_original::ocols#4 = render_screen_original::ocols#1 [phi:render_screen_original::@5->render_screen_original::@1#1] -- register_copy
// [359] phi render_screen_original::oscr#4 = render_screen_original::oscr#1 [phi:render_screen_original::@5->render_screen_original::@1#2] -- register_copy
// [359] phi render_screen_original::cols#7 = render_screen_original::cols#3 [phi:render_screen_original::@5->render_screen_original::@1#3] -- register_copy
// [359] phi render_screen_original::screen#8 = render_screen_original::screen#10 [phi:render_screen_original::@5->render_screen_original::@1#4] -- register_copy
// render_screen_original::@1
__b1:
// [360] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2]
// [360] phi render_screen_original::x#4 = 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1
ldx #0
// [360] phi render_screen_original::cols#4 = render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy
// [360] phi render_screen_original::screen#5 = render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy
// [360] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2]
// [360] phi render_screen_original::x#4 = render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy
// [360] phi render_screen_original::cols#4 = render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy
// [360] phi render_screen_original::screen#5 = render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy
// render_screen_original::@2
__b2:
// *screen++ = SPACE
// [361] *render_screen_original::screen#5 = render_screen_original::SPACE -- _deref_pbuz1=vbuc1
lda #SPACE
ldy #0
sta (screen),y
// *screen++ = SPACE;
// [362] render_screen_original::screen#2 = ++ render_screen_original::screen#5 -- pbuz1=_inc_pbuz1
inc.z screen
bne !+
inc.z screen+1
!:
// *cols++ = BLACK
// [363] *render_screen_original::cols#4 = BLACK -- _deref_pbuz1=vbuc1
lda #BLACK
ldy #0
sta (cols),y
// *cols++ = BLACK;
// [364] render_screen_original::cols#1 = ++ render_screen_original::cols#4 -- pbuz1=_inc_pbuz1
inc.z cols
bne !+
inc.z cols+1
!:
// while(++x!=4)
// [365] render_screen_original::x#1 = ++ render_screen_original::x#4 -- vbuxx=_inc_vbuxx
inx
// [366] if(render_screen_original::x#1!=4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1
cpx #4
bne __b2
// [367] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3]
// [367] phi render_screen_original::x#5 = render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy
// [367] phi render_screen_original::cols#5 = render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy
// [367] phi render_screen_original::ocols#2 = render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy
// [367] phi render_screen_original::screen#6 = render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy
// [367] phi render_screen_original::oscr#2 = render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy
// render_screen_original::@3
__b3:
// *screen++ = *oscr++
// [368] *render_screen_original::screen#6 = *render_screen_original::oscr#2 -- _deref_pbuz1=_deref_pbuz2
ldy #0
lda (oscr),y
sta (screen),y
// *screen++ = *oscr++;
// [369] render_screen_original::screen#3 = ++ render_screen_original::screen#6 -- pbuz1=_inc_pbuz1
inc.z screen
bne !+
inc.z screen+1
!:
// [370] render_screen_original::oscr#1 = ++ render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1
inc.z oscr
bne !+
inc.z oscr+1
!:
// *cols++ = *ocols++
// [371] *render_screen_original::cols#5 = *render_screen_original::ocols#2 -- _deref_pbuz1=_deref_pbuz2
ldy #0
lda (ocols),y
sta (cols),y
// *cols++ = *ocols++;
// [372] render_screen_original::cols#2 = ++ render_screen_original::cols#5 -- pbuz1=_inc_pbuz1
inc.z cols
bne !+
inc.z cols+1
!:
// [373] render_screen_original::ocols#1 = ++ render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1
inc.z ocols
bne !+
inc.z ocols+1
!:
// while(++x!=36)
// [374] render_screen_original::x#2 = ++ render_screen_original::x#5 -- vbuxx=_inc_vbuxx
inx
// [375] if(render_screen_original::x#2!=$24) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1
cpx #$24
bne __b3
// [376] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4]
// [376] phi render_screen_original::x#6 = render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy
// [376] phi render_screen_original::cols#6 = render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy
// [376] phi render_screen_original::screen#7 = render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy
// render_screen_original::@4
__b4:
// *screen++ = SPACE
// [377] *render_screen_original::screen#7 = render_screen_original::SPACE -- _deref_pbuz1=vbuc1
lda #SPACE
ldy #0
sta (screen),y
// *screen++ = SPACE;
// [378] render_screen_original::screen#10 = ++ render_screen_original::screen#7 -- pbuz1=_inc_pbuz1
inc.z screen
bne !+
inc.z screen+1
!:
// *cols++ = BLACK
// [379] *render_screen_original::cols#6 = BLACK -- _deref_pbuz1=vbuc1
lda #BLACK
ldy #0
sta (cols),y
// *cols++ = BLACK;
// [380] render_screen_original::cols#3 = ++ render_screen_original::cols#6 -- pbuz1=_inc_pbuz1
inc.z cols
bne !+
inc.z cols+1
!:
// while(++x!=40)
// [381] render_screen_original::x#3 = ++ render_screen_original::x#6 -- vbuxx=_inc_vbuxx
inx
// [382] if(render_screen_original::x#3!=$28) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1
cpx #$28
bne __b4
// render_screen_original::@5
// for(char y:0..24)
// [383] render_screen_original::y#1 = ++ render_screen_original::y#6 -- vbuz1=_inc_vbuz1
inc.z y
// [384] if(render_screen_original::y#1!=$19) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1
lda #$19
cmp.z y
bne __b1
// render_screen_original::@return
// }
// [385] return
rts
}
// play_collision
// Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries
// Returns information about the type of the collision detected
// play_collision(byte zp($10) xpos, byte zp($32) ypos, byte register(X) orientation)
play_collision: {
.label xpos = $10
.label ypos = $32
.label piece_gfx = $34
.label yp = $32
.label playfield_line = $36
.label i = $38
.label xp = $22
.label l = $33
.label i_1 = $39
// piece_gfx = current_piece + orientation
// [387] play_collision::piece_gfx#0 = current_piece#18 + play_collision::orientation#5 -- pbuz1=pbuz2_plus_vbuxx
txa
clc
adc.z current_piece_1
sta.z piece_gfx
lda #0
adc.z current_piece_1+1
sta.z piece_gfx+1
// [388] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1]
// [388] phi play_collision::l#6 = 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1
lda #0
sta.z l
// [388] phi play_collision::i#3 = 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1
sta.z i_1
// [388] phi play_collision::yp#2 = play_collision::yp#0 [phi:play_collision->play_collision::@1#2] -- register_copy
// play_collision::@1
__b1:
// playfield_line = playfield_lines[yp]
// [389] play_collision::$14 = play_collision::yp#2 << 1 -- vbuaa=vbuz1_rol_1
lda.z yp
asl
// [390] play_collision::playfield_line#0 = playfield_lines[play_collision::$14] -- pbuz1=qbuc1_derefidx_vbuaa
tay
lda playfield_lines,y
sta.z playfield_line
lda playfield_lines+1,y
sta.z playfield_line+1
// [391] play_collision::xp#8 = play_collision::xpos#6 -- vbuz1=vbuz2
lda.z xpos
sta.z xp
// [392] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2]
// [392] phi play_collision::c#2 = 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1
ldx #0
// [392] phi play_collision::xp#2 = play_collision::xp#8 [phi:play_collision::@1->play_collision::@2#1] -- register_copy
// [392] phi play_collision::i#2 = play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy
// play_collision::@2
__b2:
// if(piece_gfx[i++]!=0)
// [393] play_collision::i#1 = ++ play_collision::i#2 -- vbuz1=_inc_vbuz2
ldy.z i_1
iny
sty.z i
// [394] if(play_collision::piece_gfx#0[play_collision::i#2]==0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1
ldy.z i_1
lda (piece_gfx),y
cmp #0
beq __b3
// play_collision::@7
// if(yp>=PLAYFIELD_LINES)
// [395] if(play_collision::yp#2<PLAYFIELD_LINES) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1
lda.z yp
cmp #PLAYFIELD_LINES
bcc __b4
// [400] phi from play_collision::@7 to play_collision::@return [phi:play_collision::@7->play_collision::@return]
// [400] phi play_collision::return#15 = COLLISION_BOTTOM [phi:play_collision::@7->play_collision::@return#0] -- vbuaa=vbuc1
lda #COLLISION_BOTTOM
rts
// play_collision::@4
__b4:
// xp&0x80
// [396] play_collision::$5 = play_collision::xp#2 & $80 -- vbuaa=vbuz1_band_vbuc1
lda #$80
and.z xp
// if((xp&0x80)!=0)
// [397] if(play_collision::$5==0) goto play_collision::@5 -- vbuaa_eq_0_then_la1
cmp #0
beq __b5
// [400] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return]
// [400] phi play_collision::return#15 = COLLISION_LEFT [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1
lda #COLLISION_LEFT
rts
// play_collision::@5
__b5:
// if(xp>=PLAYFIELD_COLS)
// [398] if(play_collision::xp#2<PLAYFIELD_COLS) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1
lda.z xp
cmp #PLAYFIELD_COLS
bcc __b6
// [400] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return]
// [400] phi play_collision::return#15 = COLLISION_RIGHT [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1
lda #COLLISION_RIGHT
rts
// play_collision::@6
__b6:
// if(playfield_line[xp]!=0)
// [399] if(play_collision::playfield_line#0[play_collision::xp#2]==0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1
ldy.z xp
lda (playfield_line),y
cmp #0
beq __b3
// [400] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return]
// [400] phi play_collision::return#15 = COLLISION_PLAYFIELD [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1
lda #COLLISION_PLAYFIELD
// play_collision::@return
// }
// [401] return
rts
// play_collision::@3
__b3:
// xp++;
// [402] play_collision::xp#1 = ++ play_collision::xp#2 -- vbuz1=_inc_vbuz1
inc.z xp
// for(char c:0..3)
// [403] play_collision::c#1 = ++ play_collision::c#2 -- vbuxx=_inc_vbuxx
inx
// [404] if(play_collision::c#1!=4) goto play_collision::@10 -- vbuxx_neq_vbuc1_then_la1
cpx #4
bne __b10
// play_collision::@8
// yp++;
// [405] play_collision::yp#1 = ++ play_collision::yp#2 -- vbuz1=_inc_vbuz1
inc.z yp
// for(char l:0..3)
// [406] play_collision::l#1 = ++ play_collision::l#6 -- vbuz1=_inc_vbuz1
inc.z l
// [407] if(play_collision::l#1!=4) goto play_collision::@9 -- vbuz1_neq_vbuc1_then_la1
lda #4
cmp.z l
bne __b9
// [400] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return]
// [400] phi play_collision::return#15 = COLLISION_NONE [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1
lda #COLLISION_NONE
rts
// play_collision::@9
__b9:
// [408] play_collision::i#10 = play_collision::i#1 -- vbuz1=vbuz2
lda.z i
sta.z i_1
// [388] phi from play_collision::@9 to play_collision::@1 [phi:play_collision::@9->play_collision::@1]
// [388] phi play_collision::l#6 = play_collision::l#1 [phi:play_collision::@9->play_collision::@1#0] -- register_copy
// [388] phi play_collision::i#3 = play_collision::i#10 [phi:play_collision::@9->play_collision::@1#1] -- register_copy
// [388] phi play_collision::yp#2 = play_collision::yp#1 [phi:play_collision::@9->play_collision::@1#2] -- register_copy
jmp __b1
// play_collision::@10
__b10:
// [409] play_collision::i#12 = play_collision::i#1 -- vbuz1=vbuz2
lda.z i
sta.z i_1
// [392] phi from play_collision::@10 to play_collision::@2 [phi:play_collision::@10->play_collision::@2]
// [392] phi play_collision::c#2 = play_collision::c#1 [phi:play_collision::@10->play_collision::@2#0] -- register_copy
// [392] phi play_collision::xp#2 = play_collision::xp#1 [phi:play_collision::@10->play_collision::@2#1] -- register_copy
// [392] phi play_collision::i#2 = play_collision::i#12 [phi:play_collision::@10->play_collision::@2#2] -- register_copy
jmp __b2
}
// keyboard_matrix_read
// Read a single row of the keyboard matrix
// The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs.
// Returns the keys pressed on the row as bits according to the C64 key matrix.
// Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write
// leading to erroneous readings. You must disable the normal interrupt or sei/cli around calls to the keyboard matrix reader.
// keyboard_matrix_read(byte register(X) rowid)
keyboard_matrix_read: {
// CIA1->PORT_A = keyboard_matrix_row_bitmask[rowid]
// [410] *((byte*)CIA1) = keyboard_matrix_row_bitmask[keyboard_matrix_read::rowid#0] -- _deref_pbuc1=pbuc2_derefidx_vbuxx
lda keyboard_matrix_row_bitmask,x
sta CIA1
// ~CIA1->PORT_B
// [411] keyboard_matrix_read::return#0 = ~ *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_B) -- vbuaa=_bnot__deref_pbuc1
lda CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_B
eor #$ff
// keyboard_matrix_read::@return
// }
// [412] return
rts
}
// keyboard_event_pressed
// Determine if a specific key is currently pressed based on the last keyboard_event_scan()
// Returns 0 is not pressed and non-0 if pressed
// keyboard_event_pressed(byte register(X) keycode)
keyboard_event_pressed: {
// keycode>>3
// [414] keyboard_event_pressed::$0 = keyboard_event_pressed::keycode#5 >> 3 -- vbuyy=vbuxx_ror_3
txa
lsr
lsr
lsr
tay
// row_bits = keyboard_scan_values[keycode>>3]
// [415] keyboard_event_pressed::row_bits#0 = keyboard_scan_values[keyboard_event_pressed::$0] -- vbuyy=pbuc1_derefidx_vbuyy
lda keyboard_scan_values,y
tay
// keycode&7
// [416] keyboard_event_pressed::$1 = keyboard_event_pressed::keycode#5 & 7 -- vbuxx=vbuxx_band_vbuc1
lda #7
axs #0
// row_bits & keyboard_matrix_col_bitmask[keycode&7]
// [417] keyboard_event_pressed::return#11 = keyboard_event_pressed::row_bits#0 & keyboard_matrix_col_bitmask[keyboard_event_pressed::$1] -- vbuaa=vbuyy_band_pbuc1_derefidx_vbuxx
tya
and keyboard_matrix_col_bitmask,x
// keyboard_event_pressed::@return
// }
// [418] return
rts
}
// play_move_down
// Move down the current piece
// Return non-zero if a render is needed
// play_move_down(byte register(A) key_event)
play_move_down: {
.label movedown = $10
// ++current_movedown_counter;
// [419] current_movedown_counter#13 = ++ current_movedown_counter#17 -- vbuz1=_inc_vbuz1
inc.z current_movedown_counter
// if(key_event==KEY_SPACE)
// [420] if(play_move_down::key_event#0!=KEY_SPACE) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1
cmp #KEY_SPACE
bne __b4
// [421] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4]
// play_move_down::@4
// [422] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1]
// [422] phi play_move_down::movedown#10 = 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuz1=vbuc1
lda #1
sta.z movedown
jmp __b1
// [422] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1]
__b4:
// [422] phi play_move_down::movedown#10 = 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1
lda #0
sta.z movedown
// play_move_down::@1
__b1:
// keyboard_event_pressed(KEY_SPACE)
// [423] call keyboard_event_pressed
// [413] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed]
// [413] phi keyboard_event_pressed::keycode#5 = KEY_SPACE [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuxx=vbuc1
ldx #KEY_SPACE
jsr keyboard_event_pressed
// keyboard_event_pressed(KEY_SPACE)
// [424] keyboard_event_pressed::return#12 = keyboard_event_pressed::return#11
// play_move_down::@12
// [425] play_move_down::$2 = keyboard_event_pressed::return#12
// if(keyboard_event_pressed(KEY_SPACE)!=0)
// [426] if(play_move_down::$2==0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1
cmp #0
beq __b2
// play_move_down::@5
// if(current_movedown_counter>=current_movedown_fast)
// [427] if(current_movedown_counter#13<current_movedown_fast) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1
lda.z current_movedown_counter
cmp #current_movedown_fast
bcc __b2
// play_move_down::@6
// movedown++;
// [428] play_move_down::movedown#2 = ++ play_move_down::movedown#10 -- vbuz1=_inc_vbuz1
inc.z movedown
// [429] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2]
// [429] phi play_move_down::movedown#7 = play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy
// play_move_down::@2
__b2:
// if(current_movedown_counter>=current_movedown_slow)
// [430] if(current_movedown_counter#13<current_movedown_slow#13) goto play_move_down::@3 -- vbuz1_lt_vbuz2_then_la1
lda.z current_movedown_counter
cmp.z current_movedown_slow
bcc __b3
// play_move_down::@7
// movedown++;
// [431] play_move_down::movedown#3 = ++ play_move_down::movedown#7 -- vbuz1=_inc_vbuz1
inc.z movedown
// [432] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3]
// [432] phi play_move_down::movedown#6 = play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy
// play_move_down::@3
__b3:
// if(movedown!=0)
// [433] if(play_move_down::movedown#6==0) goto play_move_down::@return -- vbuz1_eq_0_then_la1
lda.z movedown
cmp #0
beq __b5
// play_move_down::@8
// play_collision(current_xpos,current_ypos+1,current_orientation)
// [434] play_collision::ypos#0 = current_ypos#10 + 1 -- vbuz1=vbuz2_plus_1
ldy.z current_ypos
iny
sty.z play_collision.ypos
// [435] play_collision::xpos#0 = current_xpos#13 -- vbuz1=vbuz2
lda.z current_xpos
sta.z play_collision.xpos
// [436] play_collision::orientation#0 = current_orientation#12 -- vbuxx=vbuz1
ldx.z current_orientation
// [437] current_piece#98 = current_piece#23 -- pbuz1=pbuz2
lda.z current_piece
sta.z current_piece_1
lda.z current_piece+1
sta.z current_piece_1+1
// play_collision(current_xpos,current_ypos+1,current_orientation)
// [438] call play_collision
// [386] phi from play_move_down::@8 to play_collision [phi:play_move_down::@8->play_collision]
// [386] phi play_collision::xpos#6 = play_collision::xpos#0 [phi:play_move_down::@8->play_collision#0] -- register_copy
// [386] phi play_collision::yp#0 = play_collision::ypos#0 [phi:play_move_down::@8->play_collision#1] -- register_copy
// [386] phi play_collision::orientation#5 = play_collision::orientation#0 [phi:play_move_down::@8->play_collision#2] -- register_copy
// [386] phi current_piece#18 = current_piece#98 [phi:play_move_down::@8->play_collision#3] -- register_copy
jsr play_collision
// play_collision(current_xpos,current_ypos+1,current_orientation)
// [439] play_collision::return#0 = play_collision::return#15
// play_move_down::@13
// [440] play_move_down::$12 = play_collision::return#0
// if(play_collision(current_xpos,current_ypos+1,current_orientation)==COLLISION_NONE)
// [441] if(play_move_down::$12==COLLISION_NONE) goto play_move_down::@10 -- vbuaa_eq_vbuc1_then_la1
cmp #COLLISION_NONE
beq __b10
// [442] phi from play_move_down::@13 to play_move_down::@9 [phi:play_move_down::@13->play_move_down::@9]
// play_move_down::@9
// play_lock_current()
// [443] call play_lock_current
// Lock current piece
jsr play_lock_current
// [444] phi from play_move_down::@9 to play_move_down::@14 [phi:play_move_down::@9->play_move_down::@14]
// play_move_down::@14
// play_remove_lines()
// [445] call play_remove_lines
// [529] phi from play_move_down::@14 to play_remove_lines [phi:play_move_down::@14->play_remove_lines]
jsr play_remove_lines
// play_remove_lines()
// [446] play_remove_lines::return#0 = play_remove_lines::removed#7 -- vbuaa=vbuz1
lda.z play_remove_lines.removed
// play_move_down::@15
// removed = play_remove_lines()
// [447] play_move_down::removed#0 = play_remove_lines::return#0
// play_update_score(removed)
// [448] play_update_score::removed#0 = play_move_down::removed#0 -- vbuxx=vbuaa
tax
// [449] call play_update_score
// Tally up the score
jsr play_update_score
// [450] phi from play_move_down::@15 to play_move_down::@16 [phi:play_move_down::@15->play_move_down::@16]
// play_move_down::@16
// play_spawn_current()
// [451] call play_spawn_current
// Spawn a new piece
// [172] phi from play_move_down::@16 to play_spawn_current [phi:play_move_down::@16->play_spawn_current]
// [172] phi game_over#66 = game_over#22 [phi:play_move_down::@16->play_spawn_current#0] -- register_copy
// [172] phi next_piece_idx#18 = next_piece_idx#23 [phi:play_move_down::@16->play_spawn_current#1] -- register_copy
jsr play_spawn_current
// play_move_down::@17
// [452] current_piece#95 = (byte*)PIECES[play_spawn_current::$7] -- pbuz1=qbuc1_derefidx_vbuz2
ldy.z play_spawn_current.__7
lda PIECES,y
sta.z current_piece
lda PIECES+1,y
sta.z current_piece+1
// [453] current_piece_gfx#116 = (byte*)PIECES[play_spawn_current::$7] -- pbuz1=qbuc1_derefidx_vbuz2
lda PIECES,y
sta.z current_piece_gfx
lda PIECES+1,y
sta.z current_piece_gfx+1
// [454] phi from play_move_down::@17 to play_move_down::@11 [phi:play_move_down::@17->play_move_down::@11]
// [454] phi next_piece_idx#32 = play_spawn_current::piece_idx#2 [phi:play_move_down::@17->play_move_down::@11#0] -- register_copy
// [454] phi game_over#29 = game_over#53 [phi:play_move_down::@17->play_move_down::@11#1] -- register_copy
// [454] phi current_xpos#45 = current_xpos#100 [phi:play_move_down::@17->play_move_down::@11#2] -- register_copy
// [454] phi current_piece_gfx#37 = current_piece_gfx#116 [phi:play_move_down::@17->play_move_down::@11#3] -- register_copy
// [454] phi current_orientation#39 = 0 [phi:play_move_down::@17->play_move_down::@11#4] -- vbuz1=vbuc1
lda #0
sta.z current_orientation
// [454] phi current_piece_char#31 = current_piece_char#4 [phi:play_move_down::@17->play_move_down::@11#5] -- register_copy
// [454] phi current_piece#30 = current_piece#95 [phi:play_move_down::@17->play_move_down::@11#6] -- register_copy
// [454] phi level_bcd#33 = level_bcd#20 [phi:play_move_down::@17->play_move_down::@11#7] -- register_copy
// [454] phi current_movedown_slow#39 = current_movedown_slow#24 [phi:play_move_down::@17->play_move_down::@11#8] -- register_copy
// [454] phi level#35 = level#20 [phi:play_move_down::@17->play_move_down::@11#9] -- register_copy
// [454] phi lines_bcd#28 = lines_bcd#18 [phi:play_move_down::@17->play_move_down::@11#10] -- register_copy
// [454] phi current_ypos#40 = current_ypos#5 [phi:play_move_down::@17->play_move_down::@11#11] -- register_copy
// play_move_down::@11
__b11:
// [455] phi from play_move_down::@11 to play_move_down::@return [phi:play_move_down::@11->play_move_down::@return]
// [455] phi next_piece_idx#17 = next_piece_idx#32 [phi:play_move_down::@11->play_move_down::@return#0] -- register_copy
// [455] phi game_over#16 = game_over#29 [phi:play_move_down::@11->play_move_down::@return#1] -- register_copy
// [455] phi current_xpos#23 = current_xpos#45 [phi:play_move_down::@11->play_move_down::@return#2] -- register_copy
// [455] phi current_piece_gfx#21 = current_piece_gfx#37 [phi:play_move_down::@11->play_move_down::@return#3] -- register_copy
// [455] phi current_orientation#21 = current_orientation#39 [phi:play_move_down::@11->play_move_down::@return#4] -- register_copy
// [455] phi current_piece_char#17 = current_piece_char#31 [phi:play_move_down::@11->play_move_down::@return#5] -- register_copy
// [455] phi current_piece#16 = current_piece#30 [phi:play_move_down::@11->play_move_down::@return#6] -- register_copy
// [455] phi level_bcd#18 = level_bcd#33 [phi:play_move_down::@11->play_move_down::@return#7] -- register_copy
// [455] phi current_movedown_slow#22 = current_movedown_slow#39 [phi:play_move_down::@11->play_move_down::@return#8] -- register_copy
// [455] phi level#18 = level#35 [phi:play_move_down::@11->play_move_down::@return#9] -- register_copy
// [455] phi lines_bcd#16 = lines_bcd#28 [phi:play_move_down::@11->play_move_down::@return#10] -- register_copy
// [455] phi current_ypos#20 = current_ypos#40 [phi:play_move_down::@11->play_move_down::@return#11] -- register_copy
// [455] phi current_movedown_counter#15 = 0 [phi:play_move_down::@11->play_move_down::@return#12] -- vbuz1=vbuc1
lda #0
sta.z current_movedown_counter
// [455] phi play_move_down::return#3 = 1 [phi:play_move_down::@11->play_move_down::@return#13] -- vbuxx=vbuc1
ldx #1
rts
// [455] phi from play_move_down::@3 to play_move_down::@return [phi:play_move_down::@3->play_move_down::@return]
__b5:
// [455] phi next_piece_idx#17 = next_piece_idx#23 [phi:play_move_down::@3->play_move_down::@return#0] -- register_copy
// [455] phi game_over#16 = game_over#22 [phi:play_move_down::@3->play_move_down::@return#1] -- register_copy
// [455] phi current_xpos#23 = current_xpos#13 [phi:play_move_down::@3->play_move_down::@return#2] -- register_copy
// [455] phi current_piece_gfx#21 = current_piece_gfx#12 [phi:play_move_down::@3->play_move_down::@return#3] -- register_copy
// [455] phi current_orientation#21 = current_orientation#12 [phi:play_move_down::@3->play_move_down::@return#4] -- register_copy
// [455] phi current_piece_char#17 = current_piece_char#23 [phi:play_move_down::@3->play_move_down::@return#5] -- register_copy
// [455] phi current_piece#16 = current_piece#23 [phi:play_move_down::@3->play_move_down::@return#6] -- register_copy
// [455] phi level_bcd#18 = level_bcd#10 [phi:play_move_down::@3->play_move_down::@return#7] -- register_copy
// [455] phi current_movedown_slow#22 = current_movedown_slow#13 [phi:play_move_down::@3->play_move_down::@return#8] -- register_copy
// [455] phi level#18 = level#25 [phi:play_move_down::@3->play_move_down::@return#9] -- register_copy
// [455] phi lines_bcd#16 = lines_bcd#20 [phi:play_move_down::@3->play_move_down::@return#10] -- register_copy
// [455] phi current_ypos#20 = current_ypos#10 [phi:play_move_down::@3->play_move_down::@return#11] -- register_copy
// [455] phi current_movedown_counter#15 = current_movedown_counter#13 [phi:play_move_down::@3->play_move_down::@return#12] -- register_copy
// [455] phi play_move_down::return#3 = 0 [phi:play_move_down::@3->play_move_down::@return#13] -- vbuxx=vbuc1
ldx #0
// play_move_down::@return
// }
// [456] return
rts
// play_move_down::@10
__b10:
// current_ypos++;
// [457] current_ypos#2 = ++ current_ypos#10 -- vbuz1=_inc_vbuz1
inc.z current_ypos
// [454] phi from play_move_down::@10 to play_move_down::@11 [phi:play_move_down::@10->play_move_down::@11]
// [454] phi next_piece_idx#32 = next_piece_idx#23 [phi:play_move_down::@10->play_move_down::@11#0] -- register_copy
// [454] phi game_over#29 = game_over#22 [phi:play_move_down::@10->play_move_down::@11#1] -- register_copy
// [454] phi current_xpos#45 = current_xpos#13 [phi:play_move_down::@10->play_move_down::@11#2] -- register_copy
// [454] phi current_piece_gfx#37 = current_piece_gfx#12 [phi:play_move_down::@10->play_move_down::@11#3] -- register_copy
// [454] phi current_orientation#39 = current_orientation#12 [phi:play_move_down::@10->play_move_down::@11#4] -- register_copy
// [454] phi current_piece_char#31 = current_piece_char#23 [phi:play_move_down::@10->play_move_down::@11#5] -- register_copy
// [454] phi current_piece#30 = current_piece#23 [phi:play_move_down::@10->play_move_down::@11#6] -- register_copy
// [454] phi level_bcd#33 = level_bcd#10 [phi:play_move_down::@10->play_move_down::@11#7] -- register_copy
// [454] phi current_movedown_slow#39 = current_movedown_slow#13 [phi:play_move_down::@10->play_move_down::@11#8] -- register_copy
// [454] phi level#35 = level#25 [phi:play_move_down::@10->play_move_down::@11#9] -- register_copy
// [454] phi lines_bcd#28 = lines_bcd#20 [phi:play_move_down::@10->play_move_down::@11#10] -- register_copy
// [454] phi current_ypos#40 = current_ypos#2 [phi:play_move_down::@10->play_move_down::@11#11] -- register_copy
jmp __b11
}
// play_move_leftright
// Move left/right or rotate the current piece
// Return non-zero if a render is needed
// play_move_leftright(byte register(A) key_event)
play_move_leftright: {
// if(key_event==KEY_COMMA)
// [458] if(play_move_leftright::key_event#0==KEY_COMMA) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1
// Handle keyboard events
cmp #KEY_COMMA
beq __b1
// play_move_leftright::@2
// if(key_event==KEY_DOT)
// [459] if(play_move_leftright::key_event#0!=KEY_DOT) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1
cmp #KEY_DOT
bne __b3
// play_move_leftright::@3
// play_collision(current_xpos+1,current_ypos,current_orientation)
// [460] play_collision::xpos#2 = current_xpos#23 + 1 -- vbuz1=vbuz2_plus_1
ldy.z current_xpos
iny
sty.z play_collision.xpos
// [461] play_collision::ypos#2 = current_ypos#20 -- vbuz1=vbuz2
lda.z current_ypos
sta.z play_collision.ypos
// [462] play_collision::orientation#2 = current_orientation#21 -- vbuxx=vbuz1
ldx.z current_orientation
// [463] current_piece#100 = current_piece#16 -- pbuz1=pbuz2
lda.z current_piece
sta.z current_piece_1
lda.z current_piece+1
sta.z current_piece_1+1
// play_collision(current_xpos+1,current_ypos,current_orientation)
// [464] call play_collision
// [386] phi from play_move_leftright::@3 to play_collision [phi:play_move_leftright::@3->play_collision]
// [386] phi play_collision::xpos#6 = play_collision::xpos#2 [phi:play_move_leftright::@3->play_collision#0] -- register_copy
// [386] phi play_collision::yp#0 = play_collision::ypos#2 [phi:play_move_leftright::@3->play_collision#1] -- register_copy
// [386] phi play_collision::orientation#5 = play_collision::orientation#2 [phi:play_move_leftright::@3->play_collision#2] -- register_copy
// [386] phi current_piece#18 = current_piece#100 [phi:play_move_leftright::@3->play_collision#3] -- register_copy
jsr play_collision
// play_collision(current_xpos+1,current_ypos,current_orientation)
// [465] play_collision::return#13 = play_collision::return#15
// play_move_leftright::@7
// [466] play_move_leftright::$4 = play_collision::return#13
// if(play_collision(current_xpos+1,current_ypos,current_orientation)==COLLISION_NONE)
// [467] if(play_move_leftright::$4!=COLLISION_NONE) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1
cmp #COLLISION_NONE
bne __b3
// play_move_leftright::@4
// current_xpos++;
// [468] current_xpos#5 = ++ current_xpos#23 -- vbuz1=_inc_vbuz1
inc.z current_xpos
// [469] phi from play_move_leftright::@4 play_move_leftright::@5 to play_move_leftright::@return [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return]
__b2:
// [469] phi current_xpos#27 = current_xpos#5 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#0] -- register_copy
// [469] phi play_move_leftright::return#2 = 1 [phi:play_move_leftright::@4/play_move_leftright::@5->play_move_leftright::@return#1] -- vbuaa=vbuc1
lda #1
rts
// [469] phi from play_move_leftright::@2 play_move_leftright::@6 play_move_leftright::@7 to play_move_leftright::@return [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return]
__b3:
// [469] phi current_xpos#27 = current_xpos#23 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#0] -- register_copy
// [469] phi play_move_leftright::return#2 = 0 [phi:play_move_leftright::@2/play_move_leftright::@6/play_move_leftright::@7->play_move_leftright::@return#1] -- vbuaa=vbuc1
lda #0
// play_move_leftright::@return
// }
// [470] return
rts
// play_move_leftright::@1
__b1:
// play_collision(current_xpos-1,current_ypos,current_orientation)
// [471] play_collision::xpos#1 = current_xpos#23 - 1 -- vbuz1=vbuz2_minus_1
ldx.z current_xpos
dex
stx.z play_collision.xpos
// [472] play_collision::ypos#1 = current_ypos#20 -- vbuz1=vbuz2
lda.z current_ypos
sta.z play_collision.ypos
// [473] play_collision::orientation#1 = current_orientation#21 -- vbuxx=vbuz1
ldx.z current_orientation
// [474] current_piece#99 = current_piece#16 -- pbuz1=pbuz2
lda.z current_piece
sta.z current_piece_1
lda.z current_piece+1
sta.z current_piece_1+1
// play_collision(current_xpos-1,current_ypos,current_orientation)
// [475] call play_collision
// [386] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision]
// [386] phi play_collision::xpos#6 = play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy
// [386] phi play_collision::yp#0 = play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy
// [386] phi play_collision::orientation#5 = play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy
// [386] phi current_piece#18 = current_piece#99 [phi:play_move_leftright::@1->play_collision#3] -- register_copy
jsr play_collision
// play_collision(current_xpos-1,current_ypos,current_orientation)
// [476] play_collision::return#1 = play_collision::return#15
// play_move_leftright::@6
// [477] play_move_leftright::$8 = play_collision::return#1
// if(play_collision(current_xpos-1,current_ypos,current_orientation)==COLLISION_NONE)
// [478] if(play_move_leftright::$8!=COLLISION_NONE) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1
cmp #COLLISION_NONE
bne __b3
// play_move_leftright::@5
// current_xpos--;
// [479] current_xpos#7 = -- current_xpos#23 -- vbuz1=_dec_vbuz1
dec.z current_xpos
jmp __b2
}
// play_move_rotate
// Rotate the current piece based on key-presses
// Return non-zero if a render is needed
// play_move_rotate(byte register(A) key_event)
play_move_rotate: {
// Handle keyboard events
.label orientation = $23
// if(key_event==KEY_Z)
// [480] if(play_move_rotate::key_event#0==KEY_Z) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1
cmp #KEY_Z
beq __b1
// play_move_rotate::@4
// if(key_event==KEY_X)
// [481] if(play_move_rotate::key_event#0==KEY_X) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1
cmp #KEY_X
beq __b2
// [482] phi from play_move_rotate::@4 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return]
__b4:
// [482] phi current_piece_gfx#22 = current_piece_gfx#21 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy
// [482] phi current_orientation#26 = current_orientation#21 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy
// [482] phi play_move_rotate::return#2 = 0 [phi:play_move_rotate::@4/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1
lda #0
// play_move_rotate::@return
// }
// [483] return
rts
// play_move_rotate::@2
__b2:
// current_orientation+0x10
// [484] play_move_rotate::$5 = current_orientation#21 + $10 -- vbuxx=vbuz1_plus_vbuc1
lax.z current_orientation
axs #-[$10]
// orientation = (current_orientation+0x10)&0x3f
// [485] play_move_rotate::orientation#2 = play_move_rotate::$5 & $3f -- vbuz1=vbuxx_band_vbuc1
lda #$3f
sax.z orientation
// [486] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@3 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3]
// [486] phi play_move_rotate::orientation#3 = play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@3#0] -- register_copy
// play_move_rotate::@3
__b3:
// play_collision(current_xpos, current_ypos, orientation)
// [487] play_collision::xpos#3 = current_xpos#27 -- vbuz1=vbuz2
lda.z current_xpos
sta.z play_collision.xpos
// [488] play_collision::ypos#3 = current_ypos#20 -- vbuz1=vbuz2
lda.z current_ypos
sta.z play_collision.ypos
// [489] play_collision::orientation#3 = play_move_rotate::orientation#3 -- vbuxx=vbuz1
ldx.z orientation
// [490] current_piece#101 = current_piece#16 -- pbuz1=pbuz2
lda.z current_piece
sta.z current_piece_1
lda.z current_piece+1
sta.z current_piece_1+1
// play_collision(current_xpos, current_ypos, orientation)
// [491] call play_collision
// [386] phi from play_move_rotate::@3 to play_collision [phi:play_move_rotate::@3->play_collision]
// [386] phi play_collision::xpos#6 = play_collision::xpos#3 [phi:play_move_rotate::@3->play_collision#0] -- register_copy
// [386] phi play_collision::yp#0 = play_collision::ypos#3 [phi:play_move_rotate::@3->play_collision#1] -- register_copy
// [386] phi play_collision::orientation#5 = play_collision::orientation#3 [phi:play_move_rotate::@3->play_collision#2] -- register_copy
// [386] phi current_piece#18 = current_piece#101 [phi:play_move_rotate::@3->play_collision#3] -- register_copy
jsr play_collision
// play_collision(current_xpos, current_ypos, orientation)
// [492] play_collision::return#14 = play_collision::return#15
// play_move_rotate::@6
// [493] play_move_rotate::$2 = play_collision::return#14
// if(play_collision(current_xpos, current_ypos, orientation) == COLLISION_NONE)
// [494] if(play_move_rotate::$2!=COLLISION_NONE) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1
cmp #COLLISION_NONE
bne __b4
// play_move_rotate::@5
// current_orientation = orientation
// [495] current_orientation#6 = play_move_rotate::orientation#3 -- vbuz1=vbuz2
lda.z orientation
sta.z current_orientation
// current_piece_gfx = current_piece + current_orientation
// [496] current_piece_gfx#6 = current_piece#16 + current_orientation#6 -- pbuz1=pbuz2_plus_vbuz3
clc
adc.z current_piece
sta.z current_piece_gfx
lda #0
adc.z current_piece+1
sta.z current_piece_gfx+1
// [482] phi from play_move_rotate::@5 to play_move_rotate::@return [phi:play_move_rotate::@5->play_move_rotate::@return]
// [482] phi current_piece_gfx#22 = current_piece_gfx#6 [phi:play_move_rotate::@5->play_move_rotate::@return#0] -- register_copy
// [482] phi current_orientation#26 = current_orientation#6 [phi:play_move_rotate::@5->play_move_rotate::@return#1] -- register_copy
// [482] phi play_move_rotate::return#2 = 1 [phi:play_move_rotate::@5->play_move_rotate::@return#2] -- vbuaa=vbuc1
lda #1
rts
// play_move_rotate::@1
__b1:
// current_orientation-0x10
// [497] play_move_rotate::$7 = current_orientation#21 - $10 -- vbuaa=vbuz1_minus_vbuc1
lda.z current_orientation
sec
sbc #$10
// orientation = (current_orientation-0x10)&0x3f
// [498] play_move_rotate::orientation#1 = play_move_rotate::$7 & $3f -- vbuz1=vbuaa_band_vbuc1
and #$3f
sta.z orientation
jmp __b3
}
// render_bcd
// Render BCD digits on a screen.
// - screen: pointer to the screen to render on
// - offset: offset on the screen
// - bcd: The BCD-value to render
// - only_low: if non-zero only renders the low digit
// render_bcd(byte* zp($c) screen, word zp($20) offset, byte register(X) bcd, byte register(Y) only_low)
render_bcd: {
.const ZERO_CHAR = $35
.label screen = $c
.label screen_pos = $20
.label offset = $20
// screen_pos = screen+offset
// [500] render_bcd::screen_pos#0 = render_bcd::screen#6 + render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1
lda.z screen_pos
clc
adc.z screen
sta.z screen_pos
lda.z screen_pos+1
adc.z screen+1
sta.z screen_pos+1
// if(only_low==0)
// [501] if(render_bcd::only_low#6!=0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1
cpy #0
bne __b1
// render_bcd::@2
// bcd >> 4
// [502] render_bcd::$5 = render_bcd::bcd#6 >> 4 -- vbuaa=vbuxx_ror_4
txa
lsr
lsr
lsr
lsr
// ZERO_CHAR + (bcd >> 4)
// [503] render_bcd::$6 = render_bcd::ZERO_CHAR + render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa
clc
adc #ZERO_CHAR
// *screen_pos++ = ZERO_CHAR + (bcd >> 4)
// [504] *render_bcd::screen_pos#0 = render_bcd::$6 -- _deref_pbuz1=vbuaa
ldy #0
sta (screen_pos),y
// *screen_pos++ = ZERO_CHAR + (bcd >> 4);
// [505] render_bcd::screen_pos#2 = ++ render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1
inc.z screen_pos
bne !+
inc.z screen_pos+1
!:
// [506] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1]
// [506] phi render_bcd::screen_pos#3 = render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy
// render_bcd::@1
__b1:
// bcd & 0x0f
// [507] render_bcd::$3 = render_bcd::bcd#6 & $f -- vbuaa=vbuxx_band_vbuc1
txa
and #$f
// ZERO_CHAR + (bcd & 0x0f)
// [508] render_bcd::$4 = render_bcd::ZERO_CHAR + render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa
clc
adc #ZERO_CHAR
// *screen_pos++ = ZERO_CHAR + (bcd & 0x0f)
// [509] *render_bcd::screen_pos#3 = render_bcd::$4 -- _deref_pbuz1=vbuaa
ldy #0
sta (screen_pos),y
// render_bcd::@return
// }
// [510] return
rts
}
// play_lock_current
// Lock the current piece onto the playfield
play_lock_current: {
.label yp = $32
.label playfield_line = $36
.label xp = $22
.label i = $38
.label l = $33
.label i_1 = $39
// yp = current_ypos
// [511] play_lock_current::yp#0 = current_ypos#10 -- vbuz1=vbuz2
lda.z current_ypos
sta.z yp
// [512] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1]
// [512] phi play_lock_current::l#6 = 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1
lda #0
sta.z l
// [512] phi play_lock_current::i#3 = 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1
sta.z i_1
// [512] phi play_lock_current::yp#2 = play_lock_current::yp#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy
// play_lock_current::@1
__b1:
// playfield_line = playfield_lines[yp]
// [513] play_lock_current::$4 = play_lock_current::yp#2 << 1 -- vbuaa=vbuz1_rol_1
lda.z yp
asl
// [514] play_lock_current::playfield_line#0 = playfield_lines[play_lock_current::$4] -- pbuz1=qbuc1_derefidx_vbuaa
tay
lda playfield_lines,y
sta.z playfield_line
lda playfield_lines+1,y
sta.z playfield_line+1
// xp = current_xpos
// [515] play_lock_current::xp#0 = current_xpos#13 -- vbuz1=vbuz2
lda.z current_xpos
sta.z xp
// [516] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2]
// [516] phi play_lock_current::c#2 = 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1
ldx #0
// [516] phi play_lock_current::xp#2 = play_lock_current::xp#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy
// [516] phi play_lock_current::i#2 = play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy
// play_lock_current::@2
__b2:
// if(current_piece_gfx[i++]!=0)
// [517] play_lock_current::i#1 = ++ play_lock_current::i#2 -- vbuz1=_inc_vbuz2
ldy.z i_1
iny
sty.z i
// [518] if(current_piece_gfx#12[play_lock_current::i#2]==0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1
ldy.z i_1
lda (current_piece_gfx),y
cmp #0
beq __b3
// play_lock_current::@4
// playfield_line[xp] = current_piece_char
// [519] play_lock_current::playfield_line#0[play_lock_current::xp#2] = current_piece_char#23 -- pbuz1_derefidx_vbuz2=vbuz3
lda.z current_piece_char
ldy.z xp
sta (playfield_line),y
// play_lock_current::@3
__b3:
// xp++;
// [520] play_lock_current::xp#1 = ++ play_lock_current::xp#2 -- vbuz1=_inc_vbuz1
inc.z xp
// for(char c:0..3)
// [521] play_lock_current::c#1 = ++ play_lock_current::c#2 -- vbuxx=_inc_vbuxx
inx
// [522] if(play_lock_current::c#1!=4) goto play_lock_current::@7 -- vbuxx_neq_vbuc1_then_la1
cpx #4
bne __b7
// play_lock_current::@5
// yp++;
// [523] play_lock_current::yp#1 = ++ play_lock_current::yp#2 -- vbuz1=_inc_vbuz1
inc.z yp
// for(char l:0..3)
// [524] play_lock_current::l#1 = ++ play_lock_current::l#6 -- vbuz1=_inc_vbuz1
inc.z l
// [525] if(play_lock_current::l#1!=4) goto play_lock_current::@6 -- vbuz1_neq_vbuc1_then_la1
lda #4
cmp.z l
bne __b6
// play_lock_current::@return
// }
// [526] return
rts
// play_lock_current::@6
__b6:
// [527] play_lock_current::i#7 = play_lock_current::i#1 -- vbuz1=vbuz2
lda.z i
sta.z i_1
// [512] phi from play_lock_current::@6 to play_lock_current::@1 [phi:play_lock_current::@6->play_lock_current::@1]
// [512] phi play_lock_current::l#6 = play_lock_current::l#1 [phi:play_lock_current::@6->play_lock_current::@1#0] -- register_copy
// [512] phi play_lock_current::i#3 = play_lock_current::i#7 [phi:play_lock_current::@6->play_lock_current::@1#1] -- register_copy
// [512] phi play_lock_current::yp#2 = play_lock_current::yp#1 [phi:play_lock_current::@6->play_lock_current::@1#2] -- register_copy
jmp __b1
// play_lock_current::@7
__b7:
// [528] play_lock_current::i#9 = play_lock_current::i#1 -- vbuz1=vbuz2
lda.z i
sta.z i_1
// [516] phi from play_lock_current::@7 to play_lock_current::@2 [phi:play_lock_current::@7->play_lock_current::@2]
// [516] phi play_lock_current::c#2 = play_lock_current::c#1 [phi:play_lock_current::@7->play_lock_current::@2#0] -- register_copy
// [516] phi play_lock_current::xp#2 = play_lock_current::xp#1 [phi:play_lock_current::@7->play_lock_current::@2#1] -- register_copy
// [516] phi play_lock_current::i#2 = play_lock_current::i#9 [phi:play_lock_current::@7->play_lock_current::@2#2] -- register_copy
jmp __b2
}
// play_remove_lines
// Look through the playfield for lines - and remove any lines found
// Utilizes two cursors on the playfield - one reading cells and one writing cells
// Whenever a full line is detected the writing cursor is instructed to write to the same line once more.
// Returns the number of lines removed
play_remove_lines: {
.label c = $39
.label x = $32
.label y = $23
.label removed = $2f
.label full = $33
// [530] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1]
// [530] phi play_remove_lines::removed#11 = 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1
lda #0
sta.z removed
// [530] phi play_remove_lines::y#8 = 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1
sta.z y
// [530] phi play_remove_lines::w#12 = PLAYFIELD_LINES*PLAYFIELD_COLS-1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1
ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1
// [530] phi play_remove_lines::r#3 = PLAYFIELD_LINES*PLAYFIELD_COLS-1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1
ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1
// Read all lines and rewrite them
// [530] phi from play_remove_lines::@6 to play_remove_lines::@1 [phi:play_remove_lines::@6->play_remove_lines::@1]
// [530] phi play_remove_lines::removed#11 = play_remove_lines::removed#7 [phi:play_remove_lines::@6->play_remove_lines::@1#0] -- register_copy
// [530] phi play_remove_lines::y#8 = play_remove_lines::y#1 [phi:play_remove_lines::@6->play_remove_lines::@1#1] -- register_copy
// [530] phi play_remove_lines::w#12 = play_remove_lines::w#11 [phi:play_remove_lines::@6->play_remove_lines::@1#2] -- register_copy
// [530] phi play_remove_lines::r#3 = play_remove_lines::r#1 [phi:play_remove_lines::@6->play_remove_lines::@1#3] -- register_copy
// play_remove_lines::@1
__b1:
// [531] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2]
// [531] phi play_remove_lines::full#4 = 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1
lda #1
sta.z full
// [531] phi play_remove_lines::x#2 = 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1
lda #0
sta.z x
// [531] phi play_remove_lines::w#4 = play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy
// [531] phi play_remove_lines::r#2 = play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy
// [531] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2]
// [531] phi play_remove_lines::full#4 = play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy
// [531] phi play_remove_lines::x#2 = play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy
// [531] phi play_remove_lines::w#4 = play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy
// [531] phi play_remove_lines::r#2 = play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy
// play_remove_lines::@2
__b2:
// c = playfield[r--]
// [532] play_remove_lines::c#0 = playfield[play_remove_lines::r#2] -- vbuz1=pbuc1_derefidx_vbuyy
lda playfield,y
sta.z c
// [533] play_remove_lines::r#1 = -- play_remove_lines::r#2 -- vbuyy=_dec_vbuyy
dey
// if(c==0)
// [534] if(play_remove_lines::c#0!=0) goto play_remove_lines::@9 -- vbuz1_neq_0_then_la1
cmp #0
bne __b3
// [536] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3]
// [536] phi play_remove_lines::full#2 = 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1
lda #0
sta.z full
// [535] phi from play_remove_lines::@2 to play_remove_lines::@9 [phi:play_remove_lines::@2->play_remove_lines::@9]
// play_remove_lines::@9
// [536] phi from play_remove_lines::@9 to play_remove_lines::@3 [phi:play_remove_lines::@9->play_remove_lines::@3]
// [536] phi play_remove_lines::full#2 = play_remove_lines::full#4 [phi:play_remove_lines::@9->play_remove_lines::@3#0] -- register_copy
// play_remove_lines::@3
__b3:
// playfield[w--] = c
// [537] playfield[play_remove_lines::w#4] = play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1
lda.z c
sta playfield,x
// playfield[w--] = c;
// [538] play_remove_lines::w#1 = -- play_remove_lines::w#4 -- vbuxx=_dec_vbuxx
dex
// for(char x:0..PLAYFIELD_COLS-1)
// [539] play_remove_lines::x#1 = ++ play_remove_lines::x#2 -- vbuz1=_inc_vbuz1
inc.z x
// [540] if(play_remove_lines::x#1!=PLAYFIELD_COLS-1+1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1
lda #PLAYFIELD_COLS-1+1
cmp.z x
bne __b2
// play_remove_lines::@4
// if(full==1)
// [541] if(play_remove_lines::full#2!=1) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1
lda #1
cmp.z full
bne __b6
// play_remove_lines::@5
// w = w + PLAYFIELD_COLS
// [542] play_remove_lines::w#2 = play_remove_lines::w#1 + PLAYFIELD_COLS -- vbuxx=vbuxx_plus_vbuc1
txa
axs #-[PLAYFIELD_COLS]
// removed++;
// [543] play_remove_lines::removed#1 = ++ play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1
inc.z removed
// [544] phi from play_remove_lines::@4 play_remove_lines::@5 to play_remove_lines::@6 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6]
// [544] phi play_remove_lines::removed#7 = play_remove_lines::removed#11 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#0] -- register_copy
// [544] phi play_remove_lines::w#11 = play_remove_lines::w#1 [phi:play_remove_lines::@4/play_remove_lines::@5->play_remove_lines::@6#1] -- register_copy
// play_remove_lines::@6
__b6:
// for(char y:0..PLAYFIELD_LINES-1)
// [545] play_remove_lines::y#1 = ++ play_remove_lines::y#8 -- vbuz1=_inc_vbuz1
inc.z y
// [546] if(play_remove_lines::y#1!=PLAYFIELD_LINES-1+1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1
lda #PLAYFIELD_LINES-1+1
cmp.z y
bne __b1
// [547] phi from play_remove_lines::@6 play_remove_lines::@8 to play_remove_lines::@7 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7]
__b4:
// [547] phi play_remove_lines::w#6 = play_remove_lines::w#11 [phi:play_remove_lines::@6/play_remove_lines::@8->play_remove_lines::@7#0] -- register_copy
// Write zeros in the rest of the lines
// play_remove_lines::@7
// while(w!=0xff)
// [548] if(play_remove_lines::w#6!=$ff) goto play_remove_lines::@8 -- vbuxx_neq_vbuc1_then_la1
cpx #$ff
bne __b8
// play_remove_lines::@return
// }
// [549] return
rts
// play_remove_lines::@8
__b8:
// playfield[w--] = 0
// [550] playfield[play_remove_lines::w#6] = 0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #0
sta playfield,x
// playfield[w--] = 0;
// [551] play_remove_lines::w#3 = -- play_remove_lines::w#6 -- vbuxx=_dec_vbuxx
dex
jmp __b4
}
// play_update_score
// Update the score based on the number of lines removed
// play_update_score(byte register(X) removed)
play_update_score: {
.label lines_before = $39
.label add_bcd = $3a
// if(removed!=0)
// [552] if(play_update_score::removed#0==0) goto play_update_score::@return -- vbuxx_eq_0_then_la1
cpx #0
beq __breturn
// play_update_score::@1
// <lines_bcd
// [553] play_update_score::$2 = < lines_bcd#20 -- vbuaa=_lo_vwuz1
lda.z lines_bcd
// lines_before = <lines_bcd&0xf0
// [554] play_update_score::lines_before#0 = play_update_score::$2 & $f0 -- vbuz1=vbuaa_band_vbuc1
and #$f0
sta.z lines_before
// add_bcd = score_add_bcd[removed]
// [555] play_update_score::$9 = play_update_score::removed#0 << 2 -- vbuaa=vbuxx_rol_2
txa
asl
asl
// [556] play_update_score::add_bcd#0 = score_add_bcd[play_update_score::$9] -- vduz1=pduc1_derefidx_vbuaa
tay
lda score_add_bcd,y
sta.z add_bcd
lda score_add_bcd+1,y
sta.z add_bcd+1
lda score_add_bcd+2,y
sta.z add_bcd+2
lda score_add_bcd+3,y
sta.z add_bcd+3
// asm
// asm { sed }
sed
// lines_bcd += removed
// [558] lines_bcd#31 = lines_bcd#20 + play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx
txa
clc
adc.z lines_bcd
sta.z lines_bcd
bcc !+
inc.z lines_bcd+1
!:
// score_bcd += add_bcd
// [559] score_bcd = score_bcd + play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2
lda.z score_bcd
clc
adc.z add_bcd
sta.z score_bcd
lda.z score_bcd+1
adc.z add_bcd+1
sta.z score_bcd+1
lda.z score_bcd+2
adc.z add_bcd+2
sta.z score_bcd+2
lda.z score_bcd+3
adc.z add_bcd+3
sta.z score_bcd+3
// asm
// asm { cld }
cld
// <lines_bcd
// [561] play_update_score::$4 = < lines_bcd#31 -- vbuaa=_lo_vwuz1
lda.z lines_bcd
// lines_after = <lines_bcd&0xf0
// [562] play_update_score::lines_after#0 = play_update_score::$4 & $f0 -- vbuaa=vbuaa_band_vbuc1
and #$f0
// if(lines_before!=lines_after)
// [563] if(play_update_score::lines_before#0==play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1
cmp.z lines_before
beq __breturn
// [564] phi from play_update_score::@1 to play_update_score::@2 [phi:play_update_score::@1->play_update_score::@2]
// play_update_score::@2
// play_increase_level()
// [565] call play_increase_level
jsr play_increase_level
// [566] phi from play_update_score play_update_score::@1 play_update_score::@2 to play_update_score::@return [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return]
// [566] phi level_bcd#20 = level_bcd#10 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#0] -- register_copy
// [566] phi current_movedown_slow#24 = current_movedown_slow#13 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#1] -- register_copy
// [566] phi level#20 = level#25 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#2] -- register_copy
// [566] phi lines_bcd#18 = lines_bcd#20 [phi:play_update_score/play_update_score::@1/play_update_score::@2->play_update_score::@return#3] -- register_copy
// play_update_score::@return
__breturn:
// }
// [567] return
rts
}
// play_increase_level
// Increase the level
play_increase_level: {
// level++;
// [568] level#22 = ++ level#25 -- vbuz1=_inc_vbuz1
inc.z level
// if(level>29)
// [569] if(level#22>=$1d+1) goto play_increase_level::@1 -- vbuz1_ge_vbuc1_then_la1
// Update speed of moving tetrominos down
lda.z level
cmp #$1d+1
bcs __b3
// play_increase_level::@3
// current_movedown_slow = MOVEDOWN_SLOW_SPEEDS[level]
// [570] current_movedown_slow#9 = MOVEDOWN_SLOW_SPEEDS[level#22] -- vbuz1=pbuc1_derefidx_vbuz2
tay
lda MOVEDOWN_SLOW_SPEEDS,y
sta.z current_movedown_slow
// [571] phi from play_increase_level::@3 to play_increase_level::@1 [phi:play_increase_level::@3->play_increase_level::@1]
// [571] phi current_movedown_slow#67 = current_movedown_slow#9 [phi:play_increase_level::@3->play_increase_level::@1#0] -- register_copy
jmp __b1
// [571] phi from play_increase_level to play_increase_level::@1 [phi:play_increase_level->play_increase_level::@1]
__b3:
// [571] phi current_movedown_slow#67 = 1 [phi:play_increase_level->play_increase_level::@1#0] -- vbuz1=vbuc1
lda #1
sta.z current_movedown_slow
// play_increase_level::@1
__b1:
// level_bcd++;
// [572] level_bcd#22 = ++ level_bcd#10 -- vbuz1=_inc_vbuz1
inc.z level_bcd
// level_bcd&0xf
// [573] play_increase_level::$1 = level_bcd#22 & $f -- vbuaa=vbuz1_band_vbuc1
lda #$f
and.z level_bcd
// if((level_bcd&0xf)==0xa)
// [574] if(play_increase_level::$1!=$a) goto play_increase_level::@2 -- vbuaa_neq_vbuc1_then_la1
cmp #$a
bne __b2
// play_increase_level::@4
// level_bcd += 6
// [575] level_bcd#7 = level_bcd#22 + 6 -- vbuz1=vbuz1_plus_vbuc1
// If level low nybble hits 0xa change to 0x10
lax.z level_bcd
axs #-[6]
stx.z level_bcd
// [576] phi from play_increase_level::@1 play_increase_level::@4 to play_increase_level::@2 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2]
// [576] phi level_bcd#63 = level_bcd#22 [phi:play_increase_level::@1/play_increase_level::@4->play_increase_level::@2#0] -- register_copy
// play_increase_level::@2
__b2:
// asm
// asm { sed }
// Increase the score values gained
sed
// [578] phi from play_increase_level::@2 to play_increase_level::@5 [phi:play_increase_level::@2->play_increase_level::@5]
// [578] phi play_increase_level::b#2 = 0 [phi:play_increase_level::@2->play_increase_level::@5#0] -- vbuxx=vbuc1
ldx #0
// [578] phi from play_increase_level::@5 to play_increase_level::@5 [phi:play_increase_level::@5->play_increase_level::@5]
// [578] phi play_increase_level::b#2 = play_increase_level::b#1 [phi:play_increase_level::@5->play_increase_level::@5#0] -- register_copy
// play_increase_level::@5
__b5:
// score_add_bcd[b] += SCORE_BASE_BCD[b]
// [579] play_increase_level::$5 = play_increase_level::b#2 << 2 -- vbuaa=vbuxx_rol_2
txa
asl
asl
// [580] score_add_bcd[play_increase_level::$5] = score_add_bcd[play_increase_level::$5] + SCORE_BASE_BCD[play_increase_level::$5] -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa
tay
clc
lda score_add_bcd,y
adc SCORE_BASE_BCD,y
sta score_add_bcd,y
lda score_add_bcd+1,y
adc SCORE_BASE_BCD+1,y
sta score_add_bcd+1,y
lda score_add_bcd+2,y
adc SCORE_BASE_BCD+2,y
sta score_add_bcd+2,y
lda score_add_bcd+3,y
adc SCORE_BASE_BCD+3,y
sta score_add_bcd+3,y
// for(char b: 0..4)
// [581] play_increase_level::b#1 = ++ play_increase_level::b#2 -- vbuxx=_inc_vbuxx
inx
// [582] if(play_increase_level::b#1!=5) goto play_increase_level::@5 -- vbuxx_neq_vbuc1_then_la1
cpx #5
bne __b5
// play_increase_level::@6
// asm
// asm { cld }
cld
// play_increase_level::@return
// }
// [584] return
rts
}
// File Data
.segment Data
// Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7)
keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80
// Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan()
keyboard_events: .fill 8, 0
// The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event()
keyboard_scan_values: .fill 8, 0
// The playfield. 0 is empty non-zero is color.
// The playfield is layed out line by line, meaning the first 10 bytes are line 1, the next 10 line 2 and so forth,
playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0
// The T-piece
.align $40
PIECE_T: .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0
// The S-piece
.align $40
PIECE_S: .byte 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0
// The Z-piece
.align $40
PIECE_Z: .byte 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0
// The L-piece
.align $40
PIECE_L: .byte 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0
// The J-piece
.align $40
PIECE_J: .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0
// The O-piece
.align $40
PIECE_O: .byte 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0
// The I-piece
.align $40
PIECE_I: .byte 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0
// The different pieces
PIECES: .word PIECE_T, PIECE_S, PIECE_Z, PIECE_J, PIECE_O, PIECE_I, PIECE_L
// The chars to use for the different pieces - when inside the playing area
PIECES_CHARS: .byte $65, $66, $a6, $66, $65, $65, $a6
// The chars to use for the different pieces - when outside the playing area (eg. the next area).
PIECES_NEXT_CHARS: .byte $63, $64, $a4, $64, $63, $63, $a4
// The initial X/Y for each piece
PIECES_START_X: .byte 4, 4, 4, 4, 4, 4, 4
PIECES_START_Y: .byte 1, 1, 1, 1, 1, 0, 1
PLAYFIELD_SCREEN_ORIGINAL:
// Load chars for the screen
.var screen = LoadBinary("playfield-screen.iscr")
// Load extended colors for the screen
.var extended = LoadBinary("playfield-extended.col")
// screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8
// extended.get(i)-1 because the extended colors are 1-based (1/2/3/4)
// <<6 to move extended colors to the upper 2 bits
.fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 )
// Original Color Data
PLAYFIELD_COLORS_ORIGINAL:
.import binary "playfield-screen.col"
// The color #1 to use for the pieces for each level
PIECES_COLORS_1: .byte BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED
// The color #2 to use for the pieces for each level
PIECES_COLORS_2: .byte CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE
// Pointers to the screen address for rendering each playfield line
// The lines for screen 1 is aligned with 0x80 and screen 2 with 0x40 - so XOR'ing with 0x40 gives screen 2 lines.
.align $80
screen_lines_1: .fill 2*PLAYFIELD_LINES, 0
.align $40
screen_lines_2: .fill 2*PLAYFIELD_LINES, 0
// Pointers to the playfield address for each playfield line
playfield_lines: .fill 2*PLAYFIELD_LINES, 0
// Indixes into the playfield for each playfield line
playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0
// The speed of moving down the piece when soft-drop is not activated
// This array holds the number of frames per move by level (0-29). For all levels 29+ the value is 1.
MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
// Base Score values for removing 0-4 lines (in BCD)
// These values are added to score_add_bcd for each level gained.
SCORE_BASE_BCD: .dword 0, $40, $100, $300, $1200
// Score values for removing 0-4 lines (in BCD)
// These values are updated based on the players level and the base values from SCORE_BASE_BCD
score_add_bcd: .fill 4*5, 0
.pc = $3000 "PLAYFIELD_SPRITES"
// Sprites covering the playfield
PLAYFIELD_SPRITES:
.var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
// Put the sprites into memory
.for(var sy=0;sy<10;sy++) {
.var sprite_gfx_y = sy*20
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {
.var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21)
.for (var c=0; c<3; c++) {
.byte sprites.getSinglecolorByte(sx*3+c,gfx_y)
}
}
.byte 0
}
}
.pc = $2800 "PLAYFIELD_CHARSET"
// Address of the charset
PLAYFIELD_CHARSET:
.fill 8,$00 // Place a filled char at the start of the charset
.import binary "playfield-screen.imap"