1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-03 07:29:37 +00:00
kickc/src/test/ref/complex/borderline_pacman/pacman.log
jespergravgaard ce28c50d34 updated tests
2023-05-19 11:06:44 +02:00

31585 lines
1.9 MiB

Loading link script "pacman.ld"
Resolved forward reference game_playable to game_playable
Resolved forward reference phase to phase
Resolved forward reference pacman_wins to pacman_wins
Resolved forward reference music_play_next to music_play_next
Resolved forward reference music_play_next to music_play_next
Resolved forward reference music_play_next to music_play_next
Resolved forward reference phase to phase
Resolved forward reference IRQ_SCREEN_TOP_LINE to IRQ_SCREEN_TOP_LINE
Resolved forward reference irq_screen_top to __interrupt(hardware_clobber) void irq_screen_top()
Resolved forward reference music_play_next to music_play_next
Resolved forward reference music_play_next to music_play_next
Resolved forward reference music_play_next to music_play_next
Resolved forward reference pacman_wins to pacman_wins
Resolved forward reference pacman_lives to pacman_lives
Resolved forward reference pill_count to pill_count
Resolved forward reference phase to phase
Resolved forward reference game_playable to game_playable
Resolved forward reference IRQ_SCREEN_TOP_LINE to IRQ_SCREEN_TOP_LINE
Resolved forward reference irq_screen_top to __interrupt(hardware_clobber) void irq_screen_top()
Resolved forward reference pacman_lives to pacman_lives
Resolved forward reference pacman_wins to pacman_wins
Resolved forward reference LEFT to LEFT
Resolved forward reference RIGHT to RIGHT
Resolved forward reference UP to UP
Resolved forward reference DOWN to DOWN
Resolved forward reference ABS to ABS
Resolved forward reference ABS to ABS
Resolved forward reference ABS to ABS
Resolved forward reference ABS to ABS
Resolved forward reference ABS to ABS
Resolved forward reference ABS to ABS
Resolved forward reference ABS to ABS
Resolved forward reference ABS to ABS
Setting inferred volatile on symbol affected by address-of: logic_tile_ptr in logic_tile_ptr
Setting inferred volatile on symbol affected by address-of: byteboozer_decrunch::crunched in asm { ldycrunched ldxcrunched+1 jsrb2.Decrunch }
Inlined call vicSelectGfxBank::$0 = call toDd00(vicSelectGfxBank::gfx)
Inlined call call SEI
Inlined call splash_run::$17 = call toDd00(SCREENS_1)
Inlined call splash_run::$18 = call toD018(SCREENS_1, SCREENS_1)
Inlined call call CLI
Inlined call call SEI
Inlined call call CLI
Inlined call irq_screen_top::$0 = call toD018(SCREENS_1, SCREENS_1)
Inlined call irq_screen_top::$5 = call toDd00(SCREENS_2)
Inlined call irq_screen_top::$4 = call toDd00(SCREENS_1)
Inlined call call __init
Eliminating unused variable with no statement memcpy::$0
Eliminating unused variable with no statement memset::$2
Eliminating unused variable with no statement init_render_index::$4
Eliminating unused variable with no statement render::$0
Eliminating unused variable with no statement render::$4
Eliminating unused variable with no statement render::$5
Eliminating unused variable with no statement render::$6
Eliminating unused variable with no statement render::$7
Eliminating unused variable with no statement render_tiles::$1
Eliminating unused variable with no statement render_tiles::$3
Eliminating unused variable with no statement render_tiles::$7
Eliminating unused variable with no statement render_tiles::$8
Eliminating unused variable with no statement render_tiles::$9
Eliminating unused variable with no statement render_tiles::$11
Eliminating unused variable with no statement level_tile_get::$4
Eliminating unused variable with no statement level_tile_directions::$4
Eliminating unused variable with no statement init_sprite_pointers::$3
Eliminating unused variable with no statement game_logic::$16
Eliminating unused variable with no statement game_logic::$24
Eliminating unused variable with no statement game_logic::$30
Eliminating unused variable with no statement game_logic::$36
Eliminating unused variable with no statement game_logic::$42
Eliminating unused variable with no statement game_logic::$59
Eliminating unused variable with no statement game_logic::$60
Eliminating unused variable with no statement game_logic::$61
Eliminating unused variable with no statement game_logic::$112
Eliminating unused variable with no statement game_logic::$113
Eliminating unused variable with no statement game_logic::$114
Eliminating unused variable with no statement game_logic::$133
Eliminating unused variable with no statement game_logic::$134
Eliminating unused variable with no statement game_logic::$135
Eliminating unused variable with no statement game_logic::$154
Eliminating unused variable with no statement game_logic::$155
Eliminating unused variable with no statement game_logic::$156
Eliminating unused variable with no statement game_logic::$175
Eliminating unused variable with no statement game_logic::$176
Eliminating unused variable with no statement game_logic::$177
Eliminating unused variable with no statement game_logic::$196
Eliminating unused variable with no statement game_logic::$197
Eliminating unused variable with no statement game_logic::$198
Eliminating unused variable with no statement game_logic::$201
Eliminating unused variable with no statement choose_direction::$0
Eliminating unused variable with no statement choose_direction::$1
Eliminating unused variable with no statement choose_direction::$11
Eliminating unused variable with no statement choose_direction::$15
Eliminating unused variable with no statement choose_direction::$19
Eliminating unused variable with no statement choose_direction::$23
Calling convention STACK_CALL adding prepare/execute/finalize for call *musicInit
Calling convention STACK_CALL adding prepare/execute/finalize for call *musicPlay
Calling convention STACK_CALL adding prepare/execute/finalize for call *musicInit
Calling convention STACK_CALL adding prepare/execute/finalize for call *musicPlay
CONTROL FLOW GRAPH SSA
void * memcpy(void *destination , void *source , unsigned int num)
memcpy: scope:[memcpy] from splash_run::@35
memcpy::num#1 = phi( splash_run::@35/memcpy::num#0 )
memcpy::destination#1 = phi( splash_run::@35/memcpy::destination#0 )
memcpy::source#1 = phi( splash_run::@35/memcpy::source#0 )
memcpy::src#0 = ((char *)) memcpy::source#1
memcpy::dst#0 = ((char *)) memcpy::destination#1
memcpy::$2 = (char *)memcpy::source#1
memcpy::src_end#0 = memcpy::$2 + memcpy::num#1
to:memcpy::@1
memcpy::@1: scope:[memcpy] from memcpy memcpy::@2
memcpy::destination#3 = phi( memcpy/memcpy::destination#1, memcpy::@2/memcpy::destination#4 )
memcpy::dst#3 = phi( memcpy/memcpy::dst#0, memcpy::@2/memcpy::dst#1 )
memcpy::src_end#1 = phi( memcpy/memcpy::src_end#0, memcpy::@2/memcpy::src_end#2 )
memcpy::src#2 = phi( memcpy/memcpy::src#0, memcpy::@2/memcpy::src#1 )
memcpy::$1 = memcpy::src#2 != memcpy::src_end#1
if(memcpy::$1) goto memcpy::@2
to:memcpy::@3
memcpy::@2: scope:[memcpy] from memcpy::@1
memcpy::destination#4 = phi( memcpy::@1/memcpy::destination#3 )
memcpy::src_end#2 = phi( memcpy::@1/memcpy::src_end#1 )
memcpy::dst#2 = phi( memcpy::@1/memcpy::dst#3 )
memcpy::src#3 = phi( memcpy::@1/memcpy::src#2 )
*memcpy::dst#2 = *memcpy::src#3
memcpy::dst#1 = ++ memcpy::dst#2
memcpy::src#1 = ++ memcpy::src#3
to:memcpy::@1
memcpy::@3: scope:[memcpy] from memcpy::@1
memcpy::destination#2 = phi( memcpy::@1/memcpy::destination#3 )
memcpy::return#0 = memcpy::destination#2
to:memcpy::@return
memcpy::@return: scope:[memcpy] from memcpy::@3
memcpy::return#3 = phi( memcpy::@3/memcpy::return#0 )
memcpy::return#1 = memcpy::return#3
return
to:@return
void * memset(void *str , char c , unsigned int num)
memset: scope:[memset] from splash_run::@19 splash_run::@26 splash_run::@27 splash_run::@31 splash_run::@37
memset::c#8 = phi( splash_run::@19/memset::c#0, splash_run::@26/memset::c#1, splash_run::@27/memset::c#2, splash_run::@31/memset::c#3, splash_run::@37/memset::c#4 )
memset::str#7 = phi( splash_run::@19/memset::str#0, splash_run::@26/memset::str#1, splash_run::@27/memset::str#2, splash_run::@31/memset::str#3, splash_run::@37/memset::str#4 )
memset::num#5 = phi( splash_run::@19/memset::num#0, splash_run::@26/memset::num#1, splash_run::@27/memset::num#2, splash_run::@31/memset::num#3, splash_run::@37/memset::num#4 )
memset::$0 = memset::num#5 > 0
memset::$1 = ! memset::$0
if(memset::$1) goto memset::@1
to:memset::@2
memset::@1: scope:[memset] from memset memset::@3
memset::str#5 = phi( memset/memset::str#7, memset::@3/memset::str#8 )
memset::return#0 = memset::str#5
to:memset::@return
memset::@2: scope:[memset] from memset
memset::c#7 = phi( memset/memset::c#8 )
memset::num#6 = phi( memset/memset::num#5 )
memset::str#6 = phi( memset/memset::str#7 )
memset::$4 = (char *)memset::str#6
memset::end#0 = memset::$4 + memset::num#6
memset::dst#0 = ((char *)) memset::str#6
to:memset::@3
memset::@3: scope:[memset] from memset::@2 memset::@4
memset::c#6 = phi( memset::@2/memset::c#7, memset::@4/memset::c#5 )
memset::str#8 = phi( memset::@2/memset::str#6, memset::@4/memset::str#9 )
memset::end#1 = phi( memset::@2/memset::end#0, memset::@4/memset::end#2 )
memset::dst#2 = phi( memset::@2/memset::dst#0, memset::@4/memset::dst#1 )
memset::$3 = memset::dst#2 != memset::end#1
if(memset::$3) goto memset::@4
to:memset::@1
memset::@4: scope:[memset] from memset::@3
memset::str#9 = phi( memset::@3/memset::str#8 )
memset::end#2 = phi( memset::@3/memset::end#1 )
memset::dst#3 = phi( memset::@3/memset::dst#2 )
memset::c#5 = phi( memset::@3/memset::c#6 )
*memset::dst#3 = memset::c#5
memset::dst#1 = ++ memset::dst#3
to:memset::@3
memset::@return: scope:[memset] from memset::@1
memset::return#7 = phi( memset::@1/memset::return#0 )
memset::return#1 = memset::return#7
return
to:@return
void byteboozer_decrunch(char * volatile crunched)
byteboozer_decrunch: scope:[byteboozer_decrunch] from done_run::@2 done_run::@4 gameplay_run::@6 splash_run::@23 splash_run::@24 splash_run::@29 splash_run::@33 splash_run::@36
asm { ldycrunched ldxcrunched+1 jsrb2.Decrunch }
to:byteboozer_decrunch::@return
byteboozer_decrunch::@return: scope:[byteboozer_decrunch] from byteboozer_decrunch
return
to:@return
void merge_code(char *dest_code , char *raster_code , char *logic_code)
merge_code: scope:[merge_code] from splash_run::@25
merge_code::logic_code#20 = phi( splash_run::@25/merge_code::logic_code#6 )
merge_code::dest_code#19 = phi( splash_run::@25/merge_code::dest_code#7 )
merge_code::raster_code#7 = phi( splash_run::@25/merge_code::raster_code#3 )
to:merge_code::@1
merge_code::@1: scope:[merge_code] from merge_code merge_code::@10 merge_code::@2
merge_code::logic_code#19 = phi( merge_code/merge_code::logic_code#20, merge_code::@10/merge_code::logic_code#21, merge_code::@2/merge_code::logic_code#22 )
merge_code::dest_code#14 = phi( merge_code/merge_code::dest_code#19, merge_code::@10/merge_code::dest_code#20, merge_code::@2/merge_code::dest_code#0 )
merge_code::raster_code#4 = phi( merge_code/merge_code::raster_code#7, merge_code::@10/merge_code::raster_code#8, merge_code::@2/merge_code::raster_code#0 )
merge_code::$0 = *merge_code::raster_code#4 != merge_code::RASTER_END
if(merge_code::$0) goto merge_code::@2
to:merge_code::@3
merge_code::@2: scope:[merge_code] from merge_code::@1
merge_code::logic_code#22 = phi( merge_code::@1/merge_code::logic_code#19 )
merge_code::dest_code#8 = phi( merge_code::@1/merge_code::dest_code#14 )
merge_code::raster_code#5 = phi( merge_code::@1/merge_code::raster_code#4 )
*merge_code::dest_code#8 = *merge_code::raster_code#5
merge_code::dest_code#0 = ++ merge_code::dest_code#8
merge_code::raster_code#0 = ++ merge_code::raster_code#5
to:merge_code::@1
merge_code::@3: scope:[merge_code] from merge_code::@1
merge_code::dest_code#23 = phi( merge_code::@1/merge_code::dest_code#14 )
merge_code::logic_code#18 = phi( merge_code::@1/merge_code::logic_code#19 )
merge_code::raster_code#6 = phi( merge_code::@1/merge_code::raster_code#4 )
merge_code::raster_code#1 = ++ merge_code::raster_code#6
merge_code::cycle_budget#0 = *merge_code::raster_code#1
merge_code::raster_code#2 = ++ merge_code::raster_code#1
merge_code::$1 = merge_code::cycle_budget#0 == merge_code::RASTER_EXIT
merge_code::$2 = ! merge_code::$1
if(merge_code::$2) goto merge_code::@4
to:merge_code::@14
merge_code::@4: scope:[merge_code] from merge_code::@3 merge_code::@8
merge_code::dest_code#26 = phi( merge_code::@3/merge_code::dest_code#23, merge_code::@8/merge_code::dest_code#27 )
merge_code::raster_code#11 = phi( merge_code::@3/merge_code::raster_code#2, merge_code::@8/merge_code::raster_code#13 )
merge_code::logic_code#17 = phi( merge_code::@3/merge_code::logic_code#18, merge_code::@8/merge_code::logic_code#2 )
merge_code::cycle_budget#4 = phi( merge_code::@3/merge_code::cycle_budget#0, merge_code::@8/merge_code::cycle_budget#1 )
merge_code::$3 = merge_code::cycle_budget#4 > 0
if(merge_code::$3) goto merge_code::@5
to:merge_code::@10
merge_code::@5: scope:[merge_code] from merge_code::@4
merge_code::dest_code#25 = phi( merge_code::@4/merge_code::dest_code#26 )
merge_code::raster_code#12 = phi( merge_code::@4/merge_code::raster_code#11 )
merge_code::cycle_budget#5 = phi( merge_code::@4/merge_code::cycle_budget#4 )
merge_code::logic_code#7 = phi( merge_code::@4/merge_code::logic_code#17 )
merge_code::logic_cycles#0 = *merge_code::logic_code#7
merge_code::$4 = merge_code::logic_cycles#0 != merge_code::LOGIC_EXIT
merge_code::$5 = merge_code::cycle_budget#5 - 1
merge_code::$6 = merge_code::logic_cycles#0 < merge_code::$5
merge_code::$7 = merge_code::logic_cycles#0 == merge_code::cycle_budget#5
merge_code::$8 = merge_code::$6 || merge_code::$7
merge_code::$9 = merge_code::$4 && merge_code::$8
merge_code::$10 = ! merge_code::$9
if(merge_code::$10) goto merge_code::@10
to:merge_code::@9
merge_code::@9: scope:[merge_code] from merge_code::@5
merge_code::raster_code#17 = phi( merge_code::@5/merge_code::raster_code#12 )
merge_code::logic_cycles#4 = phi( merge_code::@5/merge_code::logic_cycles#0 )
merge_code::cycle_budget#13 = phi( merge_code::@5/merge_code::cycle_budget#5 )
merge_code::dest_code#21 = phi( merge_code::@5/merge_code::dest_code#25 )
merge_code::logic_code#8 = phi( merge_code::@5/merge_code::logic_code#7 )
merge_code::logic_code#0 = ++ merge_code::logic_code#8
to:merge_code::@6
merge_code::@6: scope:[merge_code] from merge_code::@7 merge_code::@9
merge_code::raster_code#15 = phi( merge_code::@7/merge_code::raster_code#16, merge_code::@9/merge_code::raster_code#17 )
merge_code::logic_cycles#2 = phi( merge_code::@7/merge_code::logic_cycles#3, merge_code::@9/merge_code::logic_cycles#4 )
merge_code::cycle_budget#11 = phi( merge_code::@7/merge_code::cycle_budget#12, merge_code::@9/merge_code::cycle_budget#13 )
merge_code::dest_code#15 = phi( merge_code::@7/merge_code::dest_code#1, merge_code::@9/merge_code::dest_code#21 )
merge_code::logic_code#9 = phi( merge_code::@7/merge_code::logic_code#1, merge_code::@9/merge_code::logic_code#0 )
merge_code::$11 = *merge_code::logic_code#9 != merge_code::LOGIC_END
if(merge_code::$11) goto merge_code::@7
to:merge_code::@8
merge_code::@7: scope:[merge_code] from merge_code::@6
merge_code::raster_code#16 = phi( merge_code::@6/merge_code::raster_code#15 )
merge_code::logic_cycles#3 = phi( merge_code::@6/merge_code::logic_cycles#2 )
merge_code::cycle_budget#12 = phi( merge_code::@6/merge_code::cycle_budget#11 )
merge_code::dest_code#9 = phi( merge_code::@6/merge_code::dest_code#15 )
merge_code::logic_code#10 = phi( merge_code::@6/merge_code::logic_code#9 )
*merge_code::dest_code#9 = *merge_code::logic_code#10
merge_code::dest_code#1 = ++ merge_code::dest_code#9
merge_code::logic_code#1 = ++ merge_code::logic_code#10
to:merge_code::@6
merge_code::@8: scope:[merge_code] from merge_code::@6
merge_code::dest_code#27 = phi( merge_code::@6/merge_code::dest_code#15 )
merge_code::raster_code#13 = phi( merge_code::@6/merge_code::raster_code#15 )
merge_code::logic_cycles#1 = phi( merge_code::@6/merge_code::logic_cycles#2 )
merge_code::cycle_budget#6 = phi( merge_code::@6/merge_code::cycle_budget#11 )
merge_code::logic_code#11 = phi( merge_code::@6/merge_code::logic_code#9 )
merge_code::logic_code#2 = ++ merge_code::logic_code#11
merge_code::cycle_budget#1 = merge_code::cycle_budget#6 - merge_code::logic_cycles#1
to:merge_code::@4
merge_code::@10: scope:[merge_code] from merge_code::@12 merge_code::@13 merge_code::@4 merge_code::@5
merge_code::logic_code#21 = phi( merge_code::@12/merge_code::logic_code#23, merge_code::@13/merge_code::logic_code#24, merge_code::@4/merge_code::logic_code#17, merge_code::@5/merge_code::logic_code#7 )
merge_code::dest_code#20 = phi( merge_code::@12/merge_code::dest_code#3, merge_code::@13/merge_code::dest_code#4, merge_code::@4/merge_code::dest_code#26, merge_code::@5/merge_code::dest_code#25 )
merge_code::raster_code#8 = phi( merge_code::@12/merge_code::raster_code#9, merge_code::@13/merge_code::raster_code#10, merge_code::@4/merge_code::raster_code#11, merge_code::@5/merge_code::raster_code#12 )
merge_code::cycle_budget#7 = phi( merge_code::@12/merge_code::cycle_budget#2, merge_code::@13/merge_code::cycle_budget#3, merge_code::@4/merge_code::cycle_budget#4, merge_code::@5/merge_code::cycle_budget#5 )
merge_code::$12 = merge_code::cycle_budget#7 > 0
if(merge_code::$12) goto merge_code::@11
to:merge_code::@1
merge_code::@11: scope:[merge_code] from merge_code::@10
merge_code::logic_code#25 = phi( merge_code::@10/merge_code::logic_code#21 )
merge_code::raster_code#14 = phi( merge_code::@10/merge_code::raster_code#8 )
merge_code::dest_code#16 = phi( merge_code::@10/merge_code::dest_code#20 )
merge_code::cycle_budget#8 = phi( merge_code::@10/merge_code::cycle_budget#7 )
merge_code::$13 = merge_code::cycle_budget#8 == 3
if(merge_code::$13) goto merge_code::@12
to:merge_code::@13
merge_code::@12: scope:[merge_code] from merge_code::@11
merge_code::logic_code#23 = phi( merge_code::@11/merge_code::logic_code#25 )
merge_code::raster_code#9 = phi( merge_code::@11/merge_code::raster_code#14 )
merge_code::cycle_budget#9 = phi( merge_code::@11/merge_code::cycle_budget#8 )
merge_code::dest_code#10 = phi( merge_code::@11/merge_code::dest_code#16 )
*merge_code::dest_code#10 = $24
merge_code::dest_code#2 = ++ merge_code::dest_code#10
*merge_code::dest_code#2 = $ea
merge_code::dest_code#3 = ++ merge_code::dest_code#2
merge_code::cycle_budget#2 = merge_code::cycle_budget#9 - 3
to:merge_code::@10
merge_code::@13: scope:[merge_code] from merge_code::@11
merge_code::logic_code#24 = phi( merge_code::@11/merge_code::logic_code#25 )
merge_code::raster_code#10 = phi( merge_code::@11/merge_code::raster_code#14 )
merge_code::cycle_budget#10 = phi( merge_code::@11/merge_code::cycle_budget#8 )
merge_code::dest_code#11 = phi( merge_code::@11/merge_code::dest_code#16 )
*merge_code::dest_code#11 = $ea
merge_code::dest_code#4 = ++ merge_code::dest_code#11
merge_code::cycle_budget#3 = merge_code::cycle_budget#10 - 2
to:merge_code::@10
merge_code::@14: scope:[merge_code] from merge_code::@19 merge_code::@3
merge_code::dest_code#17 = phi( merge_code::@19/merge_code::dest_code#22, merge_code::@3/merge_code::dest_code#23 )
merge_code::logic_code#12 = phi( merge_code::@19/merge_code::logic_code#5, merge_code::@3/merge_code::logic_code#18 )
merge_code::$14 = *merge_code::logic_code#12 != merge_code::LOGIC_EXIT
if(merge_code::$14) goto merge_code::@15
to:merge_code::@16
merge_code::@15: scope:[merge_code] from merge_code::@14
merge_code::dest_code#24 = phi( merge_code::@14/merge_code::dest_code#17 )
merge_code::logic_code#13 = phi( merge_code::@14/merge_code::logic_code#12 )
merge_code::logic_code#3 = ++ merge_code::logic_code#13
to:merge_code::@17
merge_code::@16: scope:[merge_code] from merge_code::@14
merge_code::dest_code#12 = phi( merge_code::@14/merge_code::dest_code#17 )
*merge_code::dest_code#12 = $60
merge_code::dest_code#5 = ++ merge_code::dest_code#12
to:merge_code::@return
merge_code::@17: scope:[merge_code] from merge_code::@15 merge_code::@18
merge_code::dest_code#18 = phi( merge_code::@15/merge_code::dest_code#24, merge_code::@18/merge_code::dest_code#6 )
merge_code::logic_code#14 = phi( merge_code::@15/merge_code::logic_code#3, merge_code::@18/merge_code::logic_code#4 )
merge_code::$15 = *merge_code::logic_code#14 != merge_code::LOGIC_END
if(merge_code::$15) goto merge_code::@18
to:merge_code::@19
merge_code::@18: scope:[merge_code] from merge_code::@17
merge_code::dest_code#13 = phi( merge_code::@17/merge_code::dest_code#18 )
merge_code::logic_code#15 = phi( merge_code::@17/merge_code::logic_code#14 )
*merge_code::dest_code#13 = *merge_code::logic_code#15
merge_code::dest_code#6 = ++ merge_code::dest_code#13
merge_code::logic_code#4 = ++ merge_code::logic_code#15
to:merge_code::@17
merge_code::@19: scope:[merge_code] from merge_code::@17
merge_code::dest_code#22 = phi( merge_code::@17/merge_code::dest_code#18 )
merge_code::logic_code#16 = phi( merge_code::@17/merge_code::logic_code#14 )
merge_code::logic_code#5 = ++ merge_code::logic_code#16
to:merge_code::@14
merge_code::@return: scope:[merge_code] from merge_code::@16
return
to:@return
void pacman_sound_init()
pacman_sound_init: scope:[pacman_sound_init] from gameplay_run::@19
*((char *)SID+OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE) = $f
*((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_FREQ) = 0
*((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH) = 0
*((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = 0
*((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY) = 0
*((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE) = $f0
to:pacman_sound_init::@return
pacman_sound_init::@return: scope:[pacman_sound_init] from pacman_sound_init
return
to:@return
void pacman_sound_play()
pacman_sound_play: scope:[pacman_sound_play] from irq_screen_top::@10
pacman_sound_play::$4 = 0 != pacman_ch1_enabled
pacman_sound_play::$0 = ! pacman_sound_play::$4
if(pacman_sound_play::$0) goto pacman_sound_play::@return
to:pacman_sound_play::@1
pacman_sound_play::@1: scope:[pacman_sound_play] from pacman_sound_play
*SID_CH1_FREQ_HI = PACMAN_CH1_FREQ_HI[pacman_ch1_idx]
*((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = PACMAN_CH1_CONTROL[pacman_ch1_idx]
pacman_ch1_idx = ++ pacman_ch1_idx
pacman_sound_play::$1 = sizeof PACMAN_CH1_FREQ_HI
pacman_sound_play::$2 = pacman_ch1_idx == pacman_sound_play::$1
pacman_sound_play::$3 = ! pacman_sound_play::$2
if(pacman_sound_play::$3) goto pacman_sound_play::@return
to:pacman_sound_play::@2
pacman_sound_play::@2: scope:[pacman_sound_play] from pacman_sound_play::@1
pacman_ch1_idx = 0
pacman_ch1_enabled = 0
to:pacman_sound_play::@return
pacman_sound_play::@return: scope:[pacman_sound_play] from pacman_sound_play pacman_sound_play::@1 pacman_sound_play::@2
return
to:@return
void init_render_index()
init_render_index: scope:[init_render_index] from splash_run::@28
init_render_index::render_index#0 = RENDER_INDEX
init_render_index::x_col#0 = 0
to:init_render_index::@1
init_render_index::@1: scope:[init_render_index] from init_render_index init_render_index::@7
init_render_index::render_index#7 = phi( init_render_index/init_render_index::render_index#0, init_render_index::@7/init_render_index::render_index#1 )
init_render_index::x_col#2 = phi( init_render_index/init_render_index::x_col#0, init_render_index::@7/init_render_index::x_col#1 )
init_render_index::$0 = init_render_index::x_col#2 < $1a
if(init_render_index::$0) goto init_render_index::@2
to:init_render_index::@3
init_render_index::@2: scope:[init_render_index] from init_render_index::@1
init_render_index::render_index#5 = phi( init_render_index::@1/init_render_index::render_index#7 )
init_render_index::x_col#3 = phi( init_render_index::@1/init_render_index::x_col#2 )
init_render_index::render_ypos_table#0 = RENDER_YPOS
init_render_index::ypos_inc_offset#0 = 0
init_render_index::$1 = init_render_index::x_col#3 >= $18
init_render_index::$2 = ! init_render_index::$1
if(init_render_index::$2) goto init_render_index::@4
to:init_render_index::@10
init_render_index::@3: scope:[init_render_index] from init_render_index::@1
(RENDER_INDEX+$18*$100)[RENDER_OFFSET_YPOS_INC] = 0
(RENDER_INDEX+$19*$100)[RENDER_OFFSET_YPOS_INC] = 0
to:init_render_index::@return
init_render_index::@4: scope:[init_render_index] from init_render_index::@10 init_render_index::@2
init_render_index::ypos_inc_offset#7 = phi( init_render_index::@10/init_render_index::ypos_inc_offset#1, init_render_index::@2/init_render_index::ypos_inc_offset#0 )
init_render_index::render_ypos_table#4 = phi( init_render_index::@10/init_render_index::render_ypos_table#1, init_render_index::@2/init_render_index::render_ypos_table#0 )
init_render_index::x_col#4 = phi( init_render_index::@10/init_render_index::x_col#6, init_render_index::@2/init_render_index::x_col#3 )
init_render_index::render_index#2 = phi( init_render_index::@10/init_render_index::render_index#4, init_render_index::@2/init_render_index::render_index#5 )
init_render_index::render_index_xcol#0 = init_render_index::render_index#2
init_render_index::$9 = init_render_index::x_col#4 * SIZEOF_POINTER
init_render_index::canvas_xcol#0 = RENDER_XCOLS[init_render_index::$9]
init_render_index::y_pos#0 = 0
to:init_render_index::@5
init_render_index::@10: scope:[init_render_index] from init_render_index::@2
init_render_index::x_col#6 = phi( init_render_index::@2/init_render_index::x_col#3 )
init_render_index::render_index#4 = phi( init_render_index::@2/init_render_index::render_index#5 )
init_render_index::render_ypos_table#1 = RENDER_YPOS_9TH
init_render_index::ypos_inc_offset#1 = $b
to:init_render_index::@4
init_render_index::@5: scope:[init_render_index] from init_render_index::@4 init_render_index::@8
init_render_index::x_col#7 = phi( init_render_index::@4/init_render_index::x_col#4, init_render_index::@8/init_render_index::x_col#8 )
init_render_index::render_index#6 = phi( init_render_index::@4/init_render_index::render_index#2, init_render_index::@8/init_render_index::render_index#8 )
init_render_index::ypos_inc_offset#6 = phi( init_render_index::@4/init_render_index::ypos_inc_offset#7, init_render_index::@8/init_render_index::ypos_inc_offset#8 )
init_render_index::render_index_xcol#4 = phi( init_render_index::@4/init_render_index::render_index_xcol#0, init_render_index::@8/init_render_index::render_index_xcol#1 )
init_render_index::render_ypos_table#3 = phi( init_render_index::@4/init_render_index::render_ypos_table#4, init_render_index::@8/init_render_index::render_ypos_table#5 )
init_render_index::canvas_xcol#2 = phi( init_render_index::@4/init_render_index::canvas_xcol#0, init_render_index::@8/init_render_index::canvas_xcol#3 )
init_render_index::y_pos#2 = phi( init_render_index::@4/init_render_index::y_pos#0, init_render_index::@8/init_render_index::y_pos#1 )
init_render_index::$3 = init_render_index::y_pos#2 < $94
if(init_render_index::$3) goto init_render_index::@6
to:init_render_index::@7
init_render_index::@6: scope:[init_render_index] from init_render_index::@5
init_render_index::x_col#9 = phi( init_render_index::@5/init_render_index::x_col#7 )
init_render_index::render_index#9 = phi( init_render_index::@5/init_render_index::render_index#6 )
init_render_index::ypos_inc_offset#4 = phi( init_render_index::@5/init_render_index::ypos_inc_offset#6 )
init_render_index::render_index_xcol#2 = phi( init_render_index::@5/init_render_index::render_index_xcol#4 )
init_render_index::render_ypos_table#2 = phi( init_render_index::@5/init_render_index::render_ypos_table#3 )
init_render_index::canvas_xcol#1 = phi( init_render_index::@5/init_render_index::canvas_xcol#2 )
init_render_index::y_pos#3 = phi( init_render_index::@5/init_render_index::y_pos#2 )
init_render_index::$11 = (unsigned int)init_render_index::y_pos#3
init_render_index::$10 = init_render_index::$11 * SIZEOF_UNSIGNED_INT
init_render_index::canvas#0 = init_render_index::canvas_xcol#1 + init_render_index::render_ypos_table#2[init_render_index::$10]
init_render_index::$5 = byte0 init_render_index::canvas#0
init_render_index::render_index_xcol#2[RENDER_OFFSET_CANVAS_LO] = init_render_index::$5
init_render_index::$6 = byte1 init_render_index::canvas#0
init_render_index::render_index_xcol#2[RENDER_OFFSET_CANVAS_HI] = init_render_index::$6
init_render_index::render_index_xcol#2[RENDER_OFFSET_YPOS_INC] = init_render_index::ypos_inc_offset#4
init_render_index::ypos_inc_offset#2 = init_render_index::ypos_inc_offset#4 + 2
init_render_index::$7 = init_render_index::ypos_inc_offset#2 >= $17
init_render_index::$8 = ! init_render_index::$7
if(init_render_index::$8) goto init_render_index::@8
to:init_render_index::@9
init_render_index::@7: scope:[init_render_index] from init_render_index::@5
init_render_index::x_col#5 = phi( init_render_index::@5/init_render_index::x_col#7 )
init_render_index::render_index#3 = phi( init_render_index::@5/init_render_index::render_index#6 )
init_render_index::render_index#1 = init_render_index::render_index#3 + $100
init_render_index::x_col#1 = ++ init_render_index::x_col#5
to:init_render_index::@1
init_render_index::@8: scope:[init_render_index] from init_render_index::@6 init_render_index::@9
init_render_index::x_col#8 = phi( init_render_index::@6/init_render_index::x_col#9, init_render_index::@9/init_render_index::x_col#10 )
init_render_index::render_index#8 = phi( init_render_index::@6/init_render_index::render_index#9, init_render_index::@9/init_render_index::render_index#10 )
init_render_index::ypos_inc_offset#8 = phi( init_render_index::@6/init_render_index::ypos_inc_offset#2, init_render_index::@9/init_render_index::ypos_inc_offset#3 )
init_render_index::render_ypos_table#5 = phi( init_render_index::@6/init_render_index::render_ypos_table#2, init_render_index::@9/init_render_index::render_ypos_table#6 )
init_render_index::canvas_xcol#3 = phi( init_render_index::@6/init_render_index::canvas_xcol#1, init_render_index::@9/init_render_index::canvas_xcol#4 )
init_render_index::y_pos#4 = phi( init_render_index::@6/init_render_index::y_pos#3, init_render_index::@9/init_render_index::y_pos#5 )
init_render_index::render_index_xcol#3 = phi( init_render_index::@6/init_render_index::render_index_xcol#2, init_render_index::@9/init_render_index::render_index_xcol#5 )
init_render_index::render_index_xcol#1 = ++ init_render_index::render_index_xcol#3
init_render_index::y_pos#1 = init_render_index::y_pos#4 + 2
to:init_render_index::@5
init_render_index::@9: scope:[init_render_index] from init_render_index::@6
init_render_index::x_col#10 = phi( init_render_index::@6/init_render_index::x_col#9 )
init_render_index::render_index#10 = phi( init_render_index::@6/init_render_index::render_index#9 )
init_render_index::render_ypos_table#6 = phi( init_render_index::@6/init_render_index::render_ypos_table#2 )
init_render_index::canvas_xcol#4 = phi( init_render_index::@6/init_render_index::canvas_xcol#1 )
init_render_index::y_pos#5 = phi( init_render_index::@6/init_render_index::y_pos#3 )
init_render_index::render_index_xcol#5 = phi( init_render_index::@6/init_render_index::render_index_xcol#2 )
init_render_index::ypos_inc_offset#5 = phi( init_render_index::@6/init_render_index::ypos_inc_offset#2 )
init_render_index::ypos_inc_offset#3 = init_render_index::ypos_inc_offset#5 - $15
to:init_render_index::@8
init_render_index::@return: scope:[init_render_index] from init_render_index::@3
return
to:@return
void render(char xcol , char ypos , char pixels)
render: scope:[render] from done_run::@15 splash_show::@4
render::pixels#4 = phi( done_run::@15/render::pixels#0, splash_show::@4/render::pixels#1 )
render::xcol#2 = phi( done_run::@15/render::xcol#0, splash_show::@4/render::xcol#1 )
render::ypos#2 = phi( done_run::@15/render::ypos#0, splash_show::@4/render::ypos#1 )
render::ytile#0 = render::ypos#2 / 4
render::$1 = byte1 RENDER_INDEX + render::xcol#2
render::$2 = render::ytile#0 * 2
render::$3 = render::$1 w= render::$2
render::render_index_xcol#0 = (char *)render::$3
render::canvas_offset#0 = render::render_index_xcol#0[RENDER_OFFSET_CANVAS_HI] w= render::render_index_xcol#0[RENDER_OFFSET_CANVAS_LO]
render::canvas1#0 = SPRITES_1 + render::canvas_offset#0
render::canvas2#0 = SPRITES_2 + render::canvas_offset#0
render::ypos_inc_offset#0 = render::render_index_xcol#0[RENDER_OFFSET_YPOS_INC]
render::ypix#0 = render::ypos#2 & 3
render::i#0 = 0
to:render::@1
render::@1: scope:[render] from render render::@2
render::pixels#3 = phi( render/render::pixels#4, render::@2/render::pixels#5 )
render::canvas2#4 = phi( render/render::canvas2#0, render::@2/render::canvas2#1 )
render::ypos_inc_offset#3 = phi( render/render::ypos_inc_offset#0, render::@2/render::ypos_inc_offset#1 )
render::canvas1#4 = phi( render/render::canvas1#0, render::@2/render::canvas1#1 )
render::ypix#1 = phi( render/render::ypix#0, render::@2/render::ypix#2 )
render::i#2 = phi( render/render::i#0, render::@2/render::i#1 )
render::$8 = render::i#2 < render::ypix#1
if(render::$8) goto render::@2
to:render::@3
render::@2: scope:[render] from render::@1
render::pixels#5 = phi( render::@1/render::pixels#3 )
render::ypix#2 = phi( render::@1/render::ypix#1 )
render::i#3 = phi( render::@1/render::i#2 )
render::canvas2#2 = phi( render::@1/render::canvas2#4 )
render::ypos_inc_offset#2 = phi( render::@1/render::ypos_inc_offset#3 )
render::canvas1#2 = phi( render::@1/render::canvas1#4 )
render::canvas1#1 = render::canvas1#2 + RENDER_YPOS_INC[render::ypos_inc_offset#2]
render::canvas2#1 = render::canvas2#2 + RENDER_YPOS_INC[render::ypos_inc_offset#2]
render::ypos_inc_offset#1 = ++ render::ypos_inc_offset#2
render::i#1 = ++ render::i#3
to:render::@1
render::@3: scope:[render] from render::@1
render::canvas2#3 = phi( render::@1/render::canvas2#4 )
render::canvas1#3 = phi( render::@1/render::canvas1#4 )
render::pixels#2 = phi( render::@1/render::pixels#3 )
*render::canvas1#3 = render::pixels#2
*render::canvas2#3 = render::pixels#2
to:render::@return
render::@return: scope:[render] from render::@3
return
to:@return
void render_tiles(char xcol , char ytile , char tile_left , char tile_right)
render_tiles: scope:[render_tiles] from level_show::@8
render_tiles::ytile#1 = phi( level_show::@8/render_tiles::ytile#0 )
render_tiles::xcol#1 = phi( level_show::@8/render_tiles::xcol#0 )
render_tiles::tile_right#1 = phi( level_show::@8/render_tiles::tile_right#0 )
render_tiles::tile_left#1 = phi( level_show::@8/render_tiles::tile_left#0 )
render_tiles::$0 = render_tiles::tile_left#1 * 4
render_tiles::tile_left_pixels#0 = TILES_LEFT + render_tiles::$0
render_tiles::$2 = render_tiles::tile_right#1 * 4
render_tiles::tile_right_pixels#0 = TILES_RIGHT + render_tiles::$2
render_tiles::$4 = byte1 RENDER_INDEX + render_tiles::xcol#1
render_tiles::$5 = render_tiles::ytile#1 * 2
render_tiles::$6 = render_tiles::$4 w= render_tiles::$5
render_tiles::render_index_xcol#0 = (char *)render_tiles::$6
render_tiles::canvas_offset#0 = render_tiles::render_index_xcol#0[RENDER_OFFSET_CANVAS_HI] w= render_tiles::render_index_xcol#0[RENDER_OFFSET_CANVAS_LO]
render_tiles::canvas1#0 = SPRITES_1 + render_tiles::canvas_offset#0
render_tiles::canvas2#0 = SPRITES_2 + render_tiles::canvas_offset#0
render_tiles::ypos_inc_offset#0 = render_tiles::render_index_xcol#0[RENDER_OFFSET_YPOS_INC]
render_tiles::y#0 = 0
to:render_tiles::@1
render_tiles::@1: scope:[render_tiles] from render_tiles render_tiles::@2
render_tiles::ypos_inc_offset#3 = phi( render_tiles/render_tiles::ypos_inc_offset#0, render_tiles::@2/render_tiles::ypos_inc_offset#1 )
render_tiles::canvas2#3 = phi( render_tiles/render_tiles::canvas2#0, render_tiles::@2/render_tiles::canvas2#1 )
render_tiles::canvas1#3 = phi( render_tiles/render_tiles::canvas1#0, render_tiles::@2/render_tiles::canvas1#1 )
render_tiles::tile_right_pixels#2 = phi( render_tiles/render_tiles::tile_right_pixels#0, render_tiles::@2/render_tiles::tile_right_pixels#1 )
render_tiles::tile_left_pixels#2 = phi( render_tiles/render_tiles::tile_left_pixels#0, render_tiles::@2/render_tiles::tile_left_pixels#1 )
render_tiles::y#2 = phi( render_tiles/render_tiles::y#0, render_tiles::@2/render_tiles::y#1 )
render_tiles::$10 = render_tiles::y#2 < 4
if(render_tiles::$10) goto render_tiles::@2
to:render_tiles::@return
render_tiles::@2: scope:[render_tiles] from render_tiles::@1
render_tiles::ypos_inc_offset#2 = phi( render_tiles::@1/render_tiles::ypos_inc_offset#3 )
render_tiles::canvas2#2 = phi( render_tiles::@1/render_tiles::canvas2#3 )
render_tiles::canvas1#2 = phi( render_tiles::@1/render_tiles::canvas1#3 )
render_tiles::tile_right_pixels#1 = phi( render_tiles::@1/render_tiles::tile_right_pixels#2 )
render_tiles::y#3 = phi( render_tiles::@1/render_tiles::y#2 )
render_tiles::tile_left_pixels#1 = phi( render_tiles::@1/render_tiles::tile_left_pixels#2 )
render_tiles::pixels#0 = render_tiles::tile_left_pixels#1[render_tiles::y#3] | render_tiles::tile_right_pixels#1[render_tiles::y#3]
*render_tiles::canvas1#2 = render_tiles::pixels#0
*render_tiles::canvas2#2 = render_tiles::pixels#0
render_tiles::canvas1#1 = render_tiles::canvas1#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2]
render_tiles::canvas2#1 = render_tiles::canvas2#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2]
render_tiles::ypos_inc_offset#1 = ++ render_tiles::ypos_inc_offset#2
render_tiles::y#1 = ++ render_tiles::y#3
to:render_tiles::@1
render_tiles::@return: scope:[render_tiles] from render_tiles::@1
return
to:@return
void init_bobs_restore()
init_bobs_restore: scope:[init_bobs_restore] from splash_run::@32
init_bobs_restore::bob_restore#0 = bobs_restore
init_bobs_restore::bob#0 = 0
to:init_bobs_restore::@1
init_bobs_restore::@1: scope:[init_bobs_restore] from init_bobs_restore init_bobs_restore::@6
init_bobs_restore::bob_restore#6 = phi( init_bobs_restore/init_bobs_restore::bob_restore#0, init_bobs_restore::@6/init_bobs_restore::bob_restore#1 )
init_bobs_restore::bob#2 = phi( init_bobs_restore/init_bobs_restore::bob#0, init_bobs_restore::@6/init_bobs_restore::bob#1 )
init_bobs_restore::$0 = init_bobs_restore::bob#2 < NUM_BOBS*2
if(init_bobs_restore::$0) goto init_bobs_restore::@2
to:init_bobs_restore::@3
init_bobs_restore::@2: scope:[init_bobs_restore] from init_bobs_restore::@1
init_bobs_restore::bob#5 = phi( init_bobs_restore::@1/init_bobs_restore::bob#2 )
init_bobs_restore::bob_restore#5 = phi( init_bobs_restore::@1/init_bobs_restore::bob_restore#6 )
init_bobs_restore::i#0 = 0
to:init_bobs_restore::@4
init_bobs_restore::@3: scope:[init_bobs_restore] from init_bobs_restore::@1
logic_tile_ptr = LEVEL_TILES+$40*$12+$c
logic_tile_xcol = $c
logic_tile_yfine = $23
to:init_bobs_restore::@return
init_bobs_restore::@4: scope:[init_bobs_restore] from init_bobs_restore::@2 init_bobs_restore::@5
init_bobs_restore::bob#4 = phi( init_bobs_restore::@2/init_bobs_restore::bob#5, init_bobs_restore::@5/init_bobs_restore::bob#6 )
init_bobs_restore::bob_restore#4 = phi( init_bobs_restore::@2/init_bobs_restore::bob_restore#5, init_bobs_restore::@5/init_bobs_restore::bob_restore#2 )
init_bobs_restore::i#2 = phi( init_bobs_restore::@2/init_bobs_restore::i#0, init_bobs_restore::@5/init_bobs_restore::i#1 )
init_bobs_restore::$1 = init_bobs_restore::i#2 < SIZE_BOB_RESTORE
if(init_bobs_restore::$1) goto init_bobs_restore::@5
to:init_bobs_restore::@6
init_bobs_restore::@5: scope:[init_bobs_restore] from init_bobs_restore::@4
init_bobs_restore::bob#6 = phi( init_bobs_restore::@4/init_bobs_restore::bob#4 )
init_bobs_restore::i#3 = phi( init_bobs_restore::@4/init_bobs_restore::i#2 )
init_bobs_restore::bob_restore#2 = phi( init_bobs_restore::@4/init_bobs_restore::bob_restore#4 )
init_bobs_restore::bob_restore#2[init_bobs_restore::i#3] = 0
init_bobs_restore::i#1 = ++ init_bobs_restore::i#3
to:init_bobs_restore::@4
init_bobs_restore::@6: scope:[init_bobs_restore] from init_bobs_restore::@4
init_bobs_restore::bob#3 = phi( init_bobs_restore::@4/init_bobs_restore::bob#4 )
init_bobs_restore::bob_restore#3 = phi( init_bobs_restore::@4/init_bobs_restore::bob_restore#4 )
init_bobs_restore::$2 = byte0 init_bobs_restore::CANVAS_HIDDEN
init_bobs_restore::bob_restore#3[0] = init_bobs_restore::$2
init_bobs_restore::$3 = byte1 init_bobs_restore::CANVAS_HIDDEN
init_bobs_restore::bob_restore#3[1] = init_bobs_restore::$3
init_bobs_restore::$4 = byte0 init_bobs_restore::CANVAS_HIDDEN
init_bobs_restore::bob_restore#3[3] = init_bobs_restore::$4
init_bobs_restore::$5 = byte1 init_bobs_restore::CANVAS_HIDDEN
init_bobs_restore::bob_restore#3[4] = init_bobs_restore::$5
init_bobs_restore::bob_restore#1 = init_bobs_restore::bob_restore#3 + SIZE_BOB_RESTORE
init_bobs_restore::bob#1 = ++ init_bobs_restore::bob#3
to:init_bobs_restore::@1
init_bobs_restore::@return: scope:[init_bobs_restore] from init_bobs_restore::@3
return
to:@return
void main()
main: scope:[main] from __start::@1
call splash_run
to:main::@2
main::@2: scope:[main] from main
to:main::@1
main::@1: scope:[main] from main::@2 main::@4
call gameplay_run
to:main::@3
main::@3: scope:[main] from main::@1
call done_run
to:main::@4
main::@4: scope:[main] from main::@3
to:main::@1
main::@return: scope:[main] from
return
to:@return
void done_run()
done_run: scope:[done_run] from main::@3
game_playable = 0
phase = 0
done_run::i#0 = 0
to:done_run::@5
done_run::@5: scope:[done_run] from done_run done_run::@6
done_run::i#2 = phi( done_run/done_run::i#0, done_run::@6/done_run::i#1 )
done_run::$1 = done_run::i#2 < $2f
if(done_run::$1) goto done_run::@6
to:done_run::@7
done_run::@6: scope:[done_run] from done_run::@5
done_run::i#3 = phi( done_run::@5/done_run::i#2 )
((char *)SID)[done_run::i#3] = 0
done_run::i#1 = ++ done_run::i#3
to:done_run::@5
done_run::@7: scope:[done_run] from done_run::@5
done_run::i1#0 = 0
to:done_run::@8
done_run::@8: scope:[done_run] from done_run::@7 done_run::@9
done_run::i1#2 = phi( done_run::@7/done_run::i1#0, done_run::@9/done_run::i1#1 )
done_run::$2 = done_run::i1#2 < 4
if(done_run::$2) goto done_run::@9
to:done_run::@10
done_run::@9: scope:[done_run] from done_run::@8
done_run::i1#3 = phi( done_run::@8/done_run::i1#2 )
bobs_xcol[done_run::i1#3] = $a
bobs_yfine[done_run::i1#3] = $2d
bobs_bob_id[done_run::i1#3] = 0
done_run::i1#1 = ++ done_run::i1#3
to:done_run::@8
done_run::@10: scope:[done_run] from done_run::@8
asm { lda#0 }
callexecute *musicInit
to:done_run::@1
done_run::@1: scope:[done_run] from done_run::@10
done_run::$12 = 0 != pacman_wins
if(done_run::$12) goto done_run::@2
to:done_run::@4
done_run::@2: scope:[done_run] from done_run::@1
byteboozer_decrunch::crunched = WIN_GFX_CRUNCHED
call byteboozer_decrunch
to:done_run::@21
done_run::@21: scope:[done_run] from done_run::@2
to:done_run::@3
done_run::@4: scope:[done_run] from done_run::@1
byteboozer_decrunch::crunched = GAMEOVER_GFX_CRUNCHED
call byteboozer_decrunch
to:done_run::@22
done_run::@22: scope:[done_run] from done_run::@4
to:done_run::@3
done_run::@3: scope:[done_run] from done_run::@21 done_run::@22
done_run::gfx#0 = WIN_GFX
done_run::xcol#0 = 0
to:done_run::@11
done_run::@11: scope:[done_run] from done_run::@16 done_run::@3
done_run::gfx#6 = phi( done_run::@16/done_run::gfx#7, done_run::@3/done_run::gfx#0 )
done_run::xcol#2 = phi( done_run::@16/done_run::xcol#1, done_run::@3/done_run::xcol#0 )
done_run::$5 = done_run::xcol#2 < $19
if(done_run::$5) goto done_run::@12
to:done_run::@13
done_run::@12: scope:[done_run] from done_run::@11
done_run::xcol#6 = phi( done_run::@11/done_run::xcol#2 )
done_run::gfx#4 = phi( done_run::@11/done_run::gfx#6 )
done_run::ypos#0 = 0
to:done_run::@14
done_run::@13: scope:[done_run] from done_run::@11
music_play_next = 0
to:done_run::@17
done_run::@14: scope:[done_run] from done_run::@12 done_run::@23
done_run::xcol#5 = phi( done_run::@12/done_run::xcol#6, done_run::@23/done_run::xcol#7 )
done_run::gfx#3 = phi( done_run::@12/done_run::gfx#4, done_run::@23/done_run::gfx#5 )
done_run::ypos#2 = phi( done_run::@12/done_run::ypos#0, done_run::@23/done_run::ypos#1 )
done_run::$6 = done_run::ypos#2 < $19
if(done_run::$6) goto done_run::@15
to:done_run::@16
done_run::@15: scope:[done_run] from done_run::@14
done_run::ypos#3 = phi( done_run::@14/done_run::ypos#2 )
done_run::xcol#3 = phi( done_run::@14/done_run::xcol#5 )
done_run::gfx#2 = phi( done_run::@14/done_run::gfx#3 )
done_run::pixels#0 = *done_run::gfx#2
done_run::gfx#1 = ++ done_run::gfx#2
render::xcol#0 = done_run::xcol#3
render::ypos#0 = done_run::ypos#3
render::pixels#0 = done_run::pixels#0
call render
to:done_run::@23
done_run::@23: scope:[done_run] from done_run::@15
done_run::xcol#7 = phi( done_run::@15/done_run::xcol#3 )
done_run::gfx#5 = phi( done_run::@15/done_run::gfx#1 )
done_run::ypos#4 = phi( done_run::@15/done_run::ypos#3 )
done_run::ypos#1 = ++ done_run::ypos#4
to:done_run::@14
done_run::@16: scope:[done_run] from done_run::@14
done_run::gfx#7 = phi( done_run::@14/done_run::gfx#3 )
done_run::xcol#4 = phi( done_run::@14/done_run::xcol#5 )
done_run::xcol#1 = ++ done_run::xcol#4
to:done_run::@11
done_run::@17: scope:[done_run] from done_run::@13 done_run::@18 done_run::@19
call joyfire
joyfire::return#0 = joyfire::return#4
to:done_run::@24
done_run::@24: scope:[done_run] from done_run::@17
joyfire::return#5 = phi( done_run::@17/joyfire::return#0 )
done_run::$8 = joyfire::return#5
done_run::$13 = 0 != done_run::$8
done_run::$9 = ! done_run::$13
if(done_run::$9) goto done_run::@18
to:done_run::@return
done_run::@18: scope:[done_run] from done_run::@24
done_run::$14 = 0 != music_play_next
done_run::$10 = ! done_run::$14
if(done_run::$10) goto done_run::@17
to:done_run::@20
done_run::@20: scope:[done_run] from done_run::@18
callexecute *musicPlay
to:done_run::@19
done_run::@19: scope:[done_run] from done_run::@20
music_play_next = 0
to:done_run::@17
done_run::@return: scope:[done_run] from done_run::@24
return
to:@return
void splash_run()
splash_run: scope:[splash_run] from main
to:splash_run::SEI1
splash_run::SEI1: scope:[splash_run] from splash_run
asm { sei }
to:splash_run::@19
splash_run::@19: scope:[splash_run] from splash_run::SEI1
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
*PROCPORT = PROCPORT_RAM_ALL
memset::str#0 = (void *)(char *)$4000
memset::c#0 = 0
memset::num#0 = $c00
call memset
memset::return#2 = memset::return#1
to:splash_run::@23
splash_run::@23: scope:[splash_run] from splash_run::@19
byteboozer_decrunch::crunched = RASTER_CODE_CRUNCHED
call byteboozer_decrunch
to:splash_run::@24
splash_run::@24: scope:[splash_run] from splash_run::@23
byteboozer_decrunch::crunched = LOGIC_CODE_CRUNCHED
call byteboozer_decrunch
to:splash_run::@25
splash_run::@25: scope:[splash_run] from splash_run::@24
merge_code::dest_code#7 = RASTER_CODE
merge_code::raster_code#3 = RASTER_CODE_UNMERGED
merge_code::logic_code#6 = LOGIC_CODE_UNMERGED
call merge_code
to:splash_run::@26
splash_run::@26: scope:[splash_run] from splash_run::@25
memset::str#1 = (void *)BANK_1+$2000
memset::c#1 = 0
memset::num#1 = $1fff
call memset
memset::return#3 = memset::return#1
to:splash_run::@27
splash_run::@27: scope:[splash_run] from splash_run::@26
memset::str#2 = (void *)BANK_2
memset::c#2 = 0
memset::num#2 = $3fff
call memset
memset::return#4 = memset::return#1
to:splash_run::@28
splash_run::@28: scope:[splash_run] from splash_run::@27
call init_render_index
to:splash_run::@29
splash_run::@29: scope:[splash_run] from splash_run::@28
byteboozer_decrunch::crunched = SPLASH_CRUNCHED
call byteboozer_decrunch
to:splash_run::@30
splash_run::@30: scope:[splash_run] from splash_run::@29
call splash_show
to:splash_run::@31
splash_run::@31: scope:[splash_run] from splash_run::@30
memset::str#3 = (void *)BANK_1
memset::c#3 = 0
memset::num#3 = $1fff
call memset
memset::return#5 = memset::return#1
to:splash_run::@32
splash_run::@32: scope:[splash_run] from splash_run::@31
call init_bobs_restore
to:splash_run::@33
splash_run::@33: scope:[splash_run] from splash_run::@32
byteboozer_decrunch::crunched = BOB_GRAPHICS_CRUNCHED
call byteboozer_decrunch
to:splash_run::@34
splash_run::@34: scope:[splash_run] from splash_run::@33
call init_sprite_pointers
to:splash_run::@35
splash_run::@35: scope:[splash_run] from splash_run::@34
memcpy::destination#0 = (void *)INTRO_MUSIC_CRUNCHED_UPPER
memcpy::source#0 = (void *)INTRO_MUSIC_CRUNCHED
memcpy::num#0 = INTRO_MUSIC_CRUNCHED_SIZE
call memcpy
memcpy::return#2 = memcpy::return#1
to:splash_run::@36
splash_run::@36: scope:[splash_run] from splash_run::@35
byteboozer_decrunch::crunched = INTRO_MUSIC_CRUNCHED_UPPER
call byteboozer_decrunch
to:splash_run::@37
splash_run::@37: scope:[splash_run] from splash_run::@36
memset::str#4 = (void *)INTRO_MUSIC_CRUNCHED_UPPER
memset::c#4 = 0
memset::num#4 = INTRO_MUSIC_CRUNCHED_SIZE
call memset
memset::return#6 = memset::return#1
to:splash_run::@38
splash_run::@38: scope:[splash_run] from splash_run::@37
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
*PROCPORT = PROCPORT_RAM_IO
splash_run::msb#0 = 0
splash_run::i#0 = 0
to:splash_run::@2
splash_run::@2: scope:[splash_run] from splash_run::@38 splash_run::@5
splash_run::msb#6 = phi( splash_run::@38/splash_run::msb#0, splash_run::@5/splash_run::msb#8 )
splash_run::i#2 = phi( splash_run::@38/splash_run::i#0, splash_run::@5/splash_run::i#1 )
splash_run::$22 = splash_run::i#2 < 8
if(splash_run::$22) goto splash_run::@3
to:splash_run::@4
splash_run::@3: scope:[splash_run] from splash_run::@2
splash_run::msb#3 = phi( splash_run::@2/splash_run::msb#6 )
splash_run::i#3 = phi( splash_run::@2/splash_run::i#2 )
splash_run::$23 = splash_run::i#3 * 2
SPRITES_YPOS[splash_run::$23] = 7
splash_run::$34 = splash_run::i#3 * SIZEOF_UNSIGNED_INT
splash_run::xpos#0 = splash_run::sprites_xpos[splash_run::$34]
splash_run::$24 = splash_run::i#3 * 2
SPRITES_XPOS[splash_run::$24] = (char)splash_run::xpos#0
splash_run::msb#1 = splash_run::msb#3 / 2
splash_run::$25 = byte1 splash_run::xpos#0
splash_run::$35 = 0 != splash_run::$25
splash_run::$26 = ! splash_run::$35
if(splash_run::$26) goto splash_run::@5
to:splash_run::@6
splash_run::@4: scope:[splash_run] from splash_run::@2
splash_run::msb#13 = phi( splash_run::@2/splash_run::msb#6 )
splash_run::toDd001_gfx#0 = SCREENS_1
to:splash_run::toDd001
splash_run::toDd001: scope:[splash_run] from splash_run::@4
splash_run::msb#12 = phi( splash_run::@4/splash_run::msb#13 )
splash_run::toDd001_gfx#1 = phi( splash_run::@4/splash_run::toDd001_gfx#0 )
splash_run::toDd001_$0 = byte1 (unsigned int)splash_run::toDd001_gfx#1
splash_run::toDd001_$1 = splash_run::toDd001_$0 / $40
splash_run::toDd001_$2 = 3 ^ splash_run::toDd001_$1
splash_run::toDd001_return#0 = splash_run::toDd001_$2
to:splash_run::toDd001_@return
splash_run::toDd001_@return: scope:[splash_run] from splash_run::toDd001
splash_run::msb#11 = phi( splash_run::toDd001/splash_run::msb#12 )
splash_run::toDd001_return#2 = phi( splash_run::toDd001/splash_run::toDd001_return#0 )
splash_run::toDd001_return#1 = splash_run::toDd001_return#2
to:splash_run::@20
splash_run::@20: scope:[splash_run] from splash_run::toDd001_@return
splash_run::msb#10 = phi( splash_run::toDd001_@return/splash_run::msb#11 )
splash_run::toDd001_return#3 = phi( splash_run::toDd001_@return/splash_run::toDd001_return#1 )
splash_run::$17 = splash_run::toDd001_return#3
*((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = splash_run::$17
canvas_base_hi = byte1 SPRITES_2
bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE
splash_run::toD0181_screen#0 = SCREENS_1
splash_run::toD0181_gfx#0 = SCREENS_1
to:splash_run::toD0181
splash_run::toD0181: scope:[splash_run] from splash_run::@20
splash_run::msb#9 = phi( splash_run::@20/splash_run::msb#10 )
splash_run::toD0181_gfx#1 = phi( splash_run::@20/splash_run::toD0181_gfx#0 )
splash_run::toD0181_screen#1 = phi( splash_run::@20/splash_run::toD0181_screen#0 )
splash_run::toD0181_$7 = (unsigned int)splash_run::toD0181_screen#1
splash_run::toD0181_$0 = splash_run::toD0181_$7 & $3fff
splash_run::toD0181_$1 = splash_run::toD0181_$0 * 4
splash_run::toD0181_$2 = byte1 splash_run::toD0181_$1
splash_run::toD0181_$3 = byte1 (unsigned int)splash_run::toD0181_gfx#1
splash_run::toD0181_$4 = splash_run::toD0181_$3 / 4
splash_run::toD0181_$5 = splash_run::toD0181_$4 & $f
splash_run::toD0181_$6 = splash_run::toD0181_$2 | splash_run::toD0181_$5
splash_run::toD0181_return#0 = splash_run::toD0181_$6
to:splash_run::toD0181_@return
splash_run::toD0181_@return: scope:[splash_run] from splash_run::toD0181
splash_run::msb#7 = phi( splash_run::toD0181/splash_run::msb#9 )
splash_run::toD0181_return#2 = phi( splash_run::toD0181/splash_run::toD0181_return#0 )
splash_run::toD0181_return#1 = splash_run::toD0181_return#2
to:splash_run::@21
splash_run::@21: scope:[splash_run] from splash_run::toD0181_@return
splash_run::msb#4 = phi( splash_run::toD0181_@return/splash_run::msb#7 )
splash_run::toD0181_return#3 = phi( splash_run::toD0181_@return/splash_run::toD0181_return#1 )
splash_run::$18 = splash_run::toD0181_return#3
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = splash_run::$18
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB) = splash_run::msb#4
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $ff
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $ff
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = BLACK
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = BLACK
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLUE
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = RED
top_sprites_mc = 3
side_sprites_mc = 0
bottom_sprites_mc = 3
top_sprites_color = YELLOW
side_sprites_color = BLUE
bottom_sprites_color = YELLOW
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc
splash_run::i1#0 = 0
to:splash_run::@7
splash_run::@5: scope:[splash_run] from splash_run::@3 splash_run::@6
splash_run::msb#8 = phi( splash_run::@3/splash_run::msb#1, splash_run::@6/splash_run::msb#2 )
splash_run::i#4 = phi( splash_run::@3/splash_run::i#3, splash_run::@6/splash_run::i#5 )
splash_run::i#1 = ++ splash_run::i#4
to:splash_run::@2
splash_run::@6: scope:[splash_run] from splash_run::@3
splash_run::i#5 = phi( splash_run::@3/splash_run::i#3 )
splash_run::msb#5 = phi( splash_run::@3/splash_run::msb#1 )
splash_run::msb#2 = splash_run::msb#5 | $80
to:splash_run::@5
splash_run::@7: scope:[splash_run] from splash_run::@21 splash_run::@8
splash_run::i1#2 = phi( splash_run::@21/splash_run::i1#0, splash_run::@8/splash_run::i1#1 )
splash_run::$27 = splash_run::i1#2 < 8
if(splash_run::$27) goto splash_run::@8
to:splash_run::@9
splash_run::@8: scope:[splash_run] from splash_run::@7
splash_run::i1#3 = phi( splash_run::@7/splash_run::i1#2 )
SPRITES_COLOR[splash_run::i1#3] = top_sprites_color
splash_run::i1#1 = ++ splash_run::i1#3
to:splash_run::@7
splash_run::@9: scope:[splash_run] from splash_run::@7
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = 8
splash_run::i2#0 = 0
to:splash_run::@10
splash_run::@10: scope:[splash_run] from splash_run::@11 splash_run::@9
splash_run::i2#2 = phi( splash_run::@11/splash_run::i2#1, splash_run::@9/splash_run::i2#0 )
splash_run::$28 = splash_run::i2#2 < 4
if(splash_run::$28) goto splash_run::@11
to:splash_run::@12
splash_run::@11: scope:[splash_run] from splash_run::@10
splash_run::i2#3 = phi( splash_run::@10/splash_run::i2#2 )
bobs_xcol[splash_run::i2#3] = $a
bobs_yfine[splash_run::i2#3] = $2d
bobs_bob_id[splash_run::i2#3] = 0
splash_run::i2#1 = ++ splash_run::i2#3
to:splash_run::@10
splash_run::@12: scope:[splash_run] from splash_run::@10
asm { lda#1 staINTRO_MUSIC+$69 }
asm { lda#0 }
callexecute *musicInit
to:splash_run::@1
splash_run::@1: scope:[splash_run] from splash_run::@12
phase = 0
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM
to:splash_run::@13
splash_run::@13: scope:[splash_run] from splash_run::@1 splash_run::@13
splash_run::$29 = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) != $fa
if(splash_run::$29) goto splash_run::@13
to:splash_run::@14
splash_run::@14: scope:[splash_run] from splash_run::@13
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & ~VICII_RST8|VICII_RSEL|VICII_DEN
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE
*HARDWARE_IRQ = &irq_screen_top
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
asm { ldaCIA1_INTERRUPT }
*IRQ_STATUS = $f
to:splash_run::CLI1
splash_run::CLI1: scope:[splash_run] from splash_run::@14
asm { cli }
to:splash_run::@22
splash_run::@22: scope:[splash_run] from splash_run::CLI1
call joyinit
to:splash_run::@39
splash_run::@39: scope:[splash_run] from splash_run::@22
music_play_next = 0
to:splash_run::@15
splash_run::@15: scope:[splash_run] from splash_run::@16 splash_run::@17 splash_run::@39
call joyfire
joyfire::return#1 = joyfire::return#4
to:splash_run::@40
splash_run::@40: scope:[splash_run] from splash_run::@15
joyfire::return#6 = phi( splash_run::@15/joyfire::return#1 )
splash_run::$30 = joyfire::return#6
splash_run::$36 = 0 != splash_run::$30
splash_run::$31 = ! splash_run::$36
if(splash_run::$31) goto splash_run::@16
to:splash_run::@return
splash_run::@16: scope:[splash_run] from splash_run::@40
splash_run::$37 = 0 != music_play_next
splash_run::$32 = ! splash_run::$37
if(splash_run::$32) goto splash_run::@15
to:splash_run::@18
splash_run::@18: scope:[splash_run] from splash_run::@16
callexecute *musicPlay
to:splash_run::@17
splash_run::@17: scope:[splash_run] from splash_run::@18
music_play_next = 0
to:splash_run::@15
splash_run::@return: scope:[splash_run] from splash_run::@40
return
to:@return
void gameplay_run()
gameplay_run: scope:[gameplay_run] from main::@1
to:gameplay_run::SEI1
gameplay_run::SEI1: scope:[gameplay_run] from gameplay_run
asm { sei }
to:gameplay_run::@14
gameplay_run::@14: scope:[gameplay_run] from gameplay_run::SEI1
gameplay_run::i#0 = 0
to:gameplay_run::@1
gameplay_run::@1: scope:[gameplay_run] from gameplay_run::@14 gameplay_run::@2
gameplay_run::i#2 = phi( gameplay_run::@14/gameplay_run::i#0, gameplay_run::@2/gameplay_run::i#1 )
gameplay_run::$8 = gameplay_run::i#2 < $2f
if(gameplay_run::$8) goto gameplay_run::@2
to:gameplay_run::@3
gameplay_run::@2: scope:[gameplay_run] from gameplay_run::@1
gameplay_run::i#3 = phi( gameplay_run::@1/gameplay_run::i#2 )
((char *)SID)[gameplay_run::i#3] = 0
gameplay_run::i#1 = ++ gameplay_run::i#3
to:gameplay_run::@1
gameplay_run::@3: scope:[gameplay_run] from gameplay_run::@1
pacman_wins = 0
pacman_lives = 3
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLACK
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = BLACK
gameplay_run::i1#0 = 0
to:gameplay_run::@4
gameplay_run::@4: scope:[gameplay_run] from gameplay_run::@3 gameplay_run::@5
gameplay_run::i1#2 = phi( gameplay_run::@3/gameplay_run::i1#0, gameplay_run::@5/gameplay_run::i1#1 )
gameplay_run::$9 = gameplay_run::i1#2 < 8
if(gameplay_run::$9) goto gameplay_run::@5
to:gameplay_run::@6
gameplay_run::@5: scope:[gameplay_run] from gameplay_run::@4
gameplay_run::i1#3 = phi( gameplay_run::@4/gameplay_run::i1#2 )
SPRITES_COLOR[gameplay_run::i1#3] = BLACK
gameplay_run::i1#1 = ++ gameplay_run::i1#3
to:gameplay_run::@4
gameplay_run::@6: scope:[gameplay_run] from gameplay_run::@4
byteboozer_decrunch::crunched = LEVEL_TILES_CRUNCHED
call byteboozer_decrunch
to:gameplay_run::@15
gameplay_run::@15: scope:[gameplay_run] from gameplay_run::@6
call init_level_tile_directions
to:gameplay_run::@16
gameplay_run::@16: scope:[gameplay_run] from gameplay_run::@15
call init_sprite_pointers
to:gameplay_run::@17
gameplay_run::@17: scope:[gameplay_run] from gameplay_run::@16
call level_show
level_show::return#0 = level_show::return#2
to:gameplay_run::@18
gameplay_run::@18: scope:[gameplay_run] from gameplay_run::@17
level_show::return#3 = phi( gameplay_run::@17/level_show::return#0 )
gameplay_run::$4 = level_show::return#3
pill_count = gameplay_run::$4
top_sprites_mc = $ff
side_sprites_mc = $ff
bottom_sprites_mc = $ff
top_sprites_color = YELLOW
side_sprites_color = YELLOW
bottom_sprites_color = YELLOW
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc
gameplay_run::i2#0 = 0
to:gameplay_run::@7
gameplay_run::@7: scope:[gameplay_run] from gameplay_run::@18 gameplay_run::@8
gameplay_run::i2#2 = phi( gameplay_run::@18/gameplay_run::i2#0, gameplay_run::@8/gameplay_run::i2#1 )
gameplay_run::$10 = gameplay_run::i2#2 < 8
if(gameplay_run::$10) goto gameplay_run::@8
to:gameplay_run::@9
gameplay_run::@8: scope:[gameplay_run] from gameplay_run::@7
gameplay_run::i2#3 = phi( gameplay_run::@7/gameplay_run::i2#2 )
SPRITES_COLOR[gameplay_run::i2#3] = top_sprites_color
gameplay_run::i2#1 = ++ gameplay_run::i2#3
to:gameplay_run::@7
gameplay_run::@9: scope:[gameplay_run] from gameplay_run::@7
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLUE
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = RED
phase = 1
call spawn_all
to:gameplay_run::@19
gameplay_run::@19: scope:[gameplay_run] from gameplay_run::@9
call pacman_sound_init
to:gameplay_run::@20
gameplay_run::@20: scope:[gameplay_run] from gameplay_run::@19
game_playable = 1
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM
to:gameplay_run::@10
gameplay_run::@10: scope:[gameplay_run] from gameplay_run::@10 gameplay_run::@20
gameplay_run::$11 = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) != $fb
if(gameplay_run::$11) goto gameplay_run::@10
to:gameplay_run::@11
gameplay_run::@11: scope:[gameplay_run] from gameplay_run::@10 gameplay_run::@11
gameplay_run::$12 = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) != $fa
if(gameplay_run::$12) goto gameplay_run::@11
to:gameplay_run::@12
gameplay_run::@12: scope:[gameplay_run] from gameplay_run::@11
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & ~VICII_RST8|VICII_RSEL|VICII_DEN
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE
*HARDWARE_IRQ = &irq_screen_top
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
asm { ldaCIA1_INTERRUPT }
*IRQ_STATUS = $f
to:gameplay_run::CLI1
gameplay_run::CLI1: scope:[gameplay_run] from gameplay_run::@12
asm { cli }
to:gameplay_run::@13
gameplay_run::@13: scope:[gameplay_run] from gameplay_run::@13 gameplay_run::CLI1
gameplay_run::$13 = pacman_lives == 0
gameplay_run::$14 = pacman_wins || gameplay_run::$13
gameplay_run::$15 = ! gameplay_run::$14
if(gameplay_run::$15) goto gameplay_run::@13
to:gameplay_run::@return
gameplay_run::@return: scope:[gameplay_run] from gameplay_run::@13
return
to:@return
void joyinit()
joyinit: scope:[joyinit] from splash_run::@22
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 0
to:joyinit::@return
joyinit::@return: scope:[joyinit] from joyinit
return
to:@return
char joyfire()
joyfire: scope:[joyfire] from done_run::@17 splash_run::@15
joyfire::$0 = *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A) & $10
joyfire::$1 = joyfire::$0 == 0
if(joyfire::$1) goto joyfire::@1
to:joyfire::@2
joyfire::@1: scope:[joyfire] from joyfire
joyfire::return#2 = 1
to:joyfire::@return
joyfire::@2: scope:[joyfire] from joyfire
joyfire::return#3 = 0
to:joyfire::@return
joyfire::@return: scope:[joyfire] from joyfire::@1 joyfire::@2
joyfire::return#7 = phi( joyfire::@1/joyfire::return#2, joyfire::@2/joyfire::return#3 )
joyfire::return#4 = joyfire::return#7
return
to:@return
void splash_show()
splash_show: scope:[splash_show] from splash_run::@30
splash_show::splash#0 = SPLASH
splash_show::xcol#0 = 0
to:splash_show::@1
splash_show::@1: scope:[splash_show] from splash_show splash_show::@5
splash_show::splash#6 = phi( splash_show/splash_show::splash#0, splash_show::@5/splash_show::splash#7 )
splash_show::xcol#2 = phi( splash_show/splash_show::xcol#0, splash_show::@5/splash_show::xcol#1 )
splash_show::$0 = splash_show::xcol#2 < $19
if(splash_show::$0) goto splash_show::@2
to:splash_show::@return
splash_show::@2: scope:[splash_show] from splash_show::@1
splash_show::xcol#6 = phi( splash_show::@1/splash_show::xcol#2 )
splash_show::splash#4 = phi( splash_show::@1/splash_show::splash#6 )
splash_show::ypos#0 = 0
to:splash_show::@3
splash_show::@3: scope:[splash_show] from splash_show::@2 splash_show::@6
splash_show::xcol#5 = phi( splash_show::@2/splash_show::xcol#6, splash_show::@6/splash_show::xcol#7 )
splash_show::splash#3 = phi( splash_show::@2/splash_show::splash#4, splash_show::@6/splash_show::splash#5 )
splash_show::ypos#2 = phi( splash_show::@2/splash_show::ypos#0, splash_show::@6/splash_show::ypos#1 )
splash_show::$1 = splash_show::ypos#2 < $93
if(splash_show::$1) goto splash_show::@4
to:splash_show::@5
splash_show::@4: scope:[splash_show] from splash_show::@3
splash_show::ypos#3 = phi( splash_show::@3/splash_show::ypos#2 )
splash_show::xcol#3 = phi( splash_show::@3/splash_show::xcol#5 )
splash_show::splash#2 = phi( splash_show::@3/splash_show::splash#3 )
splash_show::pixels#0 = *splash_show::splash#2
splash_show::splash#1 = ++ splash_show::splash#2
render::xcol#1 = splash_show::xcol#3
render::ypos#1 = splash_show::ypos#3
render::pixels#1 = splash_show::pixels#0
call render
to:splash_show::@6
splash_show::@6: scope:[splash_show] from splash_show::@4
splash_show::xcol#7 = phi( splash_show::@4/splash_show::xcol#3 )
splash_show::splash#5 = phi( splash_show::@4/splash_show::splash#1 )
splash_show::ypos#4 = phi( splash_show::@4/splash_show::ypos#3 )
splash_show::ypos#1 = ++ splash_show::ypos#4
to:splash_show::@3
splash_show::@5: scope:[splash_show] from splash_show::@3
splash_show::splash#7 = phi( splash_show::@3/splash_show::splash#3 )
splash_show::xcol#4 = phi( splash_show::@3/splash_show::xcol#5 )
splash_show::xcol#1 = ++ splash_show::xcol#4
to:splash_show::@1
splash_show::@return: scope:[splash_show] from splash_show::@1
return
to:@return
unsigned int level_show()
level_show: scope:[level_show] from gameplay_run::@17
level_show::count#0 = 0
level_show::level#0 = LEVEL_TILES
level_show::ytile#0 = 0
to:level_show::@1
level_show::@1: scope:[level_show] from level_show level_show::@6
level_show::level#9 = phi( level_show/level_show::level#0, level_show::@6/level_show::level#1 )
level_show::count#6 = phi( level_show/level_show::count#0, level_show::@6/level_show::count#9 )
level_show::ytile#2 = phi( level_show/level_show::ytile#0, level_show::@6/level_show::ytile#1 )
level_show::$0 = level_show::ytile#2 < $25
if(level_show::$0) goto level_show::@2
to:level_show::@3
level_show::@2: scope:[level_show] from level_show::@1
level_show::count#12 = phi( level_show::@1/level_show::count#6 )
level_show::ytile#9 = phi( level_show::@1/level_show::ytile#2 )
level_show::level#8 = phi( level_show::@1/level_show::level#9 )
level_show::xcol#0 = 0
level_show::xtile#0 = 0
to:level_show::@4
level_show::@3: scope:[level_show] from level_show::@1
level_show::count#3 = phi( level_show::@1/level_show::count#6 )
level_show::return#1 = level_show::count#3
to:level_show::@return
level_show::@4: scope:[level_show] from level_show::@11 level_show::@2
level_show::count#10 = phi( level_show::@11/level_show::count#11, level_show::@2/level_show::count#12 )
level_show::ytile#5 = phi( level_show::@11/level_show::ytile#8, level_show::@2/level_show::ytile#9 )
level_show::xtile#5 = phi( level_show::@11/level_show::xtile#7, level_show::@2/level_show::xtile#0 )
level_show::level#5 = phi( level_show::@11/level_show::level#7, level_show::@2/level_show::level#8 )
level_show::xcol#2 = phi( level_show::@11/level_show::xcol#1, level_show::@2/level_show::xcol#0 )
level_show::$1 = level_show::xcol#2 < $19
if(level_show::$1) goto level_show::@5
to:level_show::@6
level_show::@5: scope:[level_show] from level_show::@4
level_show::ytile#10 = phi( level_show::@4/level_show::ytile#5 )
level_show::xcol#7 = phi( level_show::@4/level_show::xcol#2 )
level_show::count#7 = phi( level_show::@4/level_show::count#10 )
level_show::xtile#3 = phi( level_show::@4/level_show::xtile#5 )
level_show::level#2 = phi( level_show::@4/level_show::level#5 )
level_show::tile_left#0 = level_show::level#2[level_show::xtile#3]
level_show::xtile#1 = ++ level_show::xtile#3
level_show::$2 = TILES_TYPE[level_show::tile_left#0] == PILL
level_show::$3 = ! level_show::$2
if(level_show::$3) goto level_show::@7
to:level_show::@9
level_show::@6: scope:[level_show] from level_show::@4
level_show::count#9 = phi( level_show::@4/level_show::count#10 )
level_show::ytile#3 = phi( level_show::@4/level_show::ytile#5 )
level_show::level#3 = phi( level_show::@4/level_show::level#5 )
level_show::level#1 = level_show::level#3 + $40
level_show::ytile#1 = ++ level_show::ytile#3
to:level_show::@1
level_show::@7: scope:[level_show] from level_show::@5 level_show::@9
level_show::count#8 = phi( level_show::@5/level_show::count#7, level_show::@9/level_show::count#1 )
level_show::tile_left#3 = phi( level_show::@5/level_show::tile_left#0, level_show::@9/level_show::tile_left#4 )
level_show::ytile#7 = phi( level_show::@5/level_show::ytile#10, level_show::@9/level_show::ytile#11 )
level_show::xcol#6 = phi( level_show::@5/level_show::xcol#7, level_show::@9/level_show::xcol#8 )
level_show::xtile#4 = phi( level_show::@5/level_show::xtile#1, level_show::@9/level_show::xtile#6 )
level_show::level#4 = phi( level_show::@5/level_show::level#2, level_show::@9/level_show::level#6 )
level_show::tile_right#0 = level_show::level#4[level_show::xtile#4]
level_show::xtile#2 = ++ level_show::xtile#4
level_show::$4 = TILES_TYPE[level_show::tile_right#0] == PILL
level_show::$5 = ! level_show::$4
if(level_show::$5) goto level_show::@8
to:level_show::@10
level_show::@9: scope:[level_show] from level_show::@5
level_show::tile_left#4 = phi( level_show::@5/level_show::tile_left#0 )
level_show::ytile#11 = phi( level_show::@5/level_show::ytile#10 )
level_show::xcol#8 = phi( level_show::@5/level_show::xcol#7 )
level_show::xtile#6 = phi( level_show::@5/level_show::xtile#1 )
level_show::level#6 = phi( level_show::@5/level_show::level#2 )
level_show::count#4 = phi( level_show::@5/level_show::count#7 )
level_show::count#1 = ++ level_show::count#4
to:level_show::@7
level_show::@8: scope:[level_show] from level_show::@10 level_show::@7
level_show::count#13 = phi( level_show::@10/level_show::count#2, level_show::@7/level_show::count#8 )
level_show::xtile#8 = phi( level_show::@10/level_show::xtile#9, level_show::@7/level_show::xtile#2 )
level_show::level#10 = phi( level_show::@10/level_show::level#11, level_show::@7/level_show::level#4 )
level_show::tile_right#1 = phi( level_show::@10/level_show::tile_right#2, level_show::@7/level_show::tile_right#0 )
level_show::tile_left#1 = phi( level_show::@10/level_show::tile_left#2, level_show::@7/level_show::tile_left#3 )
level_show::ytile#4 = phi( level_show::@10/level_show::ytile#6, level_show::@7/level_show::ytile#7 )
level_show::xcol#3 = phi( level_show::@10/level_show::xcol#5, level_show::@7/level_show::xcol#6 )
render_tiles::xcol#0 = level_show::xcol#3
render_tiles::ytile#0 = level_show::ytile#4
render_tiles::tile_left#0 = level_show::tile_left#1
render_tiles::tile_right#0 = level_show::tile_right#1
call render_tiles
to:level_show::@11
level_show::@11: scope:[level_show] from level_show::@8
level_show::count#11 = phi( level_show::@8/level_show::count#13 )
level_show::ytile#8 = phi( level_show::@8/level_show::ytile#4 )
level_show::xtile#7 = phi( level_show::@8/level_show::xtile#8 )
level_show::level#7 = phi( level_show::@8/level_show::level#10 )
level_show::xcol#4 = phi( level_show::@8/level_show::xcol#3 )
level_show::xcol#1 = ++ level_show::xcol#4
to:level_show::@4
level_show::@10: scope:[level_show] from level_show::@7
level_show::xtile#9 = phi( level_show::@7/level_show::xtile#2 )
level_show::level#11 = phi( level_show::@7/level_show::level#4 )
level_show::tile_right#2 = phi( level_show::@7/level_show::tile_right#0 )
level_show::tile_left#2 = phi( level_show::@7/level_show::tile_left#3 )
level_show::ytile#6 = phi( level_show::@7/level_show::ytile#7 )
level_show::xcol#5 = phi( level_show::@7/level_show::xcol#6 )
level_show::count#5 = phi( level_show::@7/level_show::count#8 )
level_show::count#2 = ++ level_show::count#5
to:level_show::@8
level_show::@return: scope:[level_show] from level_show::@3
level_show::return#4 = phi( level_show::@3/level_show::return#1 )
level_show::return#2 = level_show::return#4
return
to:@return
char level_tile_get(char xtile , char ytile)
level_tile_get: scope:[level_tile_get] from init_level_tile_directions::@4 init_level_tile_directions::@6 init_level_tile_directions::@7 init_level_tile_directions::@8
level_tile_get::ytile#4 = phi( init_level_tile_directions::@4/level_tile_get::ytile#0, init_level_tile_directions::@6/level_tile_get::ytile#1, init_level_tile_directions::@7/level_tile_get::ytile#2, init_level_tile_directions::@8/level_tile_get::ytile#3 )
level_tile_get::xtile#4 = phi( init_level_tile_directions::@4/level_tile_get::xtile#0, init_level_tile_directions::@6/level_tile_get::xtile#1, init_level_tile_directions::@7/level_tile_get::xtile#2, init_level_tile_directions::@8/level_tile_get::xtile#3 )
level_tile_get::$0 = level_tile_get::xtile#4 > $31
level_tile_get::$1 = level_tile_get::ytile#4 > $24
level_tile_get::$2 = level_tile_get::$0 || level_tile_get::$1
level_tile_get::$3 = ! level_tile_get::$2
if(level_tile_get::$3) goto level_tile_get::@1
to:level_tile_get::@2
level_tile_get::@1: scope:[level_tile_get] from level_tile_get
level_tile_get::xtile#5 = phi( level_tile_get/level_tile_get::xtile#4 )
level_tile_get::ytile#5 = phi( level_tile_get/level_tile_get::ytile#4 )
level_tile_get::$5 = level_tile_get::ytile#5 * SIZEOF_UNSIGNED_INT
level_tile_get::ytiles#0 = LEVEL_TILES + LEVEL_YTILE_OFFSET[level_tile_get::$5]
level_tile_get::return#0 = level_tile_get::ytiles#0[level_tile_get::xtile#5]
to:level_tile_get::@return
level_tile_get::@2: scope:[level_tile_get] from level_tile_get
level_tile_get::return#1 = 0
to:level_tile_get::@return
level_tile_get::@return: scope:[level_tile_get] from level_tile_get::@1 level_tile_get::@2
level_tile_get::return#7 = phi( level_tile_get::@1/level_tile_get::return#0, level_tile_get::@2/level_tile_get::return#1 )
level_tile_get::return#2 = level_tile_get::return#7
return
to:@return
char level_tile_directions(char xtile , char ytile)
level_tile_directions: scope:[level_tile_directions] from game_logic::@102 game_logic::@120 game_logic::@138 game_logic::@151 game_logic::@84
level_tile_directions::ytile#5 = phi( game_logic::@102/level_tile_directions::ytile#1, game_logic::@120/level_tile_directions::ytile#2, game_logic::@138/level_tile_directions::ytile#3, game_logic::@151/level_tile_directions::ytile#4, game_logic::@84/level_tile_directions::ytile#0 )
level_tile_directions::xtile#5 = phi( game_logic::@102/level_tile_directions::xtile#1, game_logic::@120/level_tile_directions::xtile#2, game_logic::@138/level_tile_directions::xtile#3, game_logic::@151/level_tile_directions::xtile#4, game_logic::@84/level_tile_directions::xtile#0 )
level_tile_directions::$0 = level_tile_directions::xtile#5 > $31
level_tile_directions::$1 = level_tile_directions::ytile#5 > $24
level_tile_directions::$2 = level_tile_directions::$0 || level_tile_directions::$1
level_tile_directions::$3 = ! level_tile_directions::$2
if(level_tile_directions::$3) goto level_tile_directions::@1
to:level_tile_directions::@2
level_tile_directions::@1: scope:[level_tile_directions] from level_tile_directions
level_tile_directions::xtile#6 = phi( level_tile_directions/level_tile_directions::xtile#5 )
level_tile_directions::ytile#6 = phi( level_tile_directions/level_tile_directions::ytile#5 )
level_tile_directions::$5 = level_tile_directions::ytile#6 * SIZEOF_UNSIGNED_INT
level_tile_directions::ytiles#0 = LEVEL_TILES_DIRECTIONS + LEVEL_YTILE_OFFSET[level_tile_directions::$5]
level_tile_directions::return#0 = level_tile_directions::ytiles#0[level_tile_directions::xtile#6]
to:level_tile_directions::@return
level_tile_directions::@2: scope:[level_tile_directions] from level_tile_directions
level_tile_directions::return#1 = 0
to:level_tile_directions::@return
level_tile_directions::@return: scope:[level_tile_directions] from level_tile_directions::@1 level_tile_directions::@2
level_tile_directions::return#8 = phi( level_tile_directions::@1/level_tile_directions::return#0, level_tile_directions::@2/level_tile_directions::return#1 )
level_tile_directions::return#2 = level_tile_directions::return#8
return
to:@return
void init_level_tile_directions()
init_level_tile_directions: scope:[init_level_tile_directions] from gameplay_run::@15
init_level_tile_directions::directions#0 = LEVEL_TILES_DIRECTIONS
init_level_tile_directions::ytile#0 = 0
to:init_level_tile_directions::@1
init_level_tile_directions::@1: scope:[init_level_tile_directions] from init_level_tile_directions init_level_tile_directions::@5
init_level_tile_directions::directions#9 = phi( init_level_tile_directions/init_level_tile_directions::directions#0, init_level_tile_directions::@5/init_level_tile_directions::directions#1 )
init_level_tile_directions::ytile#2 = phi( init_level_tile_directions/init_level_tile_directions::ytile#0, init_level_tile_directions::@5/init_level_tile_directions::ytile#1 )
init_level_tile_directions::$0 = init_level_tile_directions::ytile#2 < $25
if(init_level_tile_directions::$0) goto init_level_tile_directions::@2
to:init_level_tile_directions::@return
init_level_tile_directions::@2: scope:[init_level_tile_directions] from init_level_tile_directions::@1
init_level_tile_directions::directions#7 = phi( init_level_tile_directions::@1/init_level_tile_directions::directions#9 )
init_level_tile_directions::ytile#15 = phi( init_level_tile_directions::@1/init_level_tile_directions::ytile#2 )
init_level_tile_directions::xtile#0 = 0
to:init_level_tile_directions::@3
init_level_tile_directions::@3: scope:[init_level_tile_directions] from init_level_tile_directions::@2 init_level_tile_directions::@9
init_level_tile_directions::directions#4 = phi( init_level_tile_directions::@2/init_level_tile_directions::directions#7, init_level_tile_directions::@9/init_level_tile_directions::directions#3 )
init_level_tile_directions::ytile#8 = phi( init_level_tile_directions::@2/init_level_tile_directions::ytile#15, init_level_tile_directions::@9/init_level_tile_directions::ytile#16 )
init_level_tile_directions::xtile#2 = phi( init_level_tile_directions::@2/init_level_tile_directions::xtile#0, init_level_tile_directions::@9/init_level_tile_directions::xtile#1 )
init_level_tile_directions::$1 = init_level_tile_directions::xtile#2 < $32
if(init_level_tile_directions::$1) goto init_level_tile_directions::@4
to:init_level_tile_directions::@5
init_level_tile_directions::@4: scope:[init_level_tile_directions] from init_level_tile_directions::@3
init_level_tile_directions::directions#18 = phi( init_level_tile_directions::@3/init_level_tile_directions::directions#4 )
init_level_tile_directions::ytile#3 = phi( init_level_tile_directions::@3/init_level_tile_directions::ytile#8 )
init_level_tile_directions::xtile#3 = phi( init_level_tile_directions::@3/init_level_tile_directions::xtile#2 )
init_level_tile_directions::open_directions#0 = 0
init_level_tile_directions::$2 = init_level_tile_directions::xtile#3 - 1
level_tile_get::xtile#0 = init_level_tile_directions::$2
level_tile_get::ytile#0 = init_level_tile_directions::ytile#3
call level_tile_get
level_tile_get::return#3 = level_tile_get::return#2
to:init_level_tile_directions::@14
init_level_tile_directions::@14: scope:[init_level_tile_directions] from init_level_tile_directions::@4
init_level_tile_directions::directions#17 = phi( init_level_tile_directions::@4/init_level_tile_directions::directions#18 )
init_level_tile_directions::open_directions#10 = phi( init_level_tile_directions::@4/init_level_tile_directions::open_directions#0 )
init_level_tile_directions::ytile#10 = phi( init_level_tile_directions::@4/init_level_tile_directions::ytile#3 )
init_level_tile_directions::xtile#9 = phi( init_level_tile_directions::@4/init_level_tile_directions::xtile#3 )
level_tile_get::return#8 = phi( init_level_tile_directions::@4/level_tile_get::return#3 )
init_level_tile_directions::$3 = level_tile_get::return#8
init_level_tile_directions::$4 = TILES_TYPE[init_level_tile_directions::$3] != WALL
init_level_tile_directions::$5 = ! init_level_tile_directions::$4
if(init_level_tile_directions::$5) goto init_level_tile_directions::@6
to:init_level_tile_directions::@10
init_level_tile_directions::@5: scope:[init_level_tile_directions] from init_level_tile_directions::@3
init_level_tile_directions::ytile#4 = phi( init_level_tile_directions::@3/init_level_tile_directions::ytile#8 )
init_level_tile_directions::directions#2 = phi( init_level_tile_directions::@3/init_level_tile_directions::directions#4 )
init_level_tile_directions::directions#1 = init_level_tile_directions::directions#2 + $40
init_level_tile_directions::ytile#1 = ++ init_level_tile_directions::ytile#4
to:init_level_tile_directions::@1
init_level_tile_directions::@6: scope:[init_level_tile_directions] from init_level_tile_directions::@10 init_level_tile_directions::@14
init_level_tile_directions::directions#15 = phi( init_level_tile_directions::@10/init_level_tile_directions::directions#16, init_level_tile_directions::@14/init_level_tile_directions::directions#17 )
init_level_tile_directions::open_directions#14 = phi( init_level_tile_directions::@10/init_level_tile_directions::open_directions#1, init_level_tile_directions::@14/init_level_tile_directions::open_directions#10 )
init_level_tile_directions::ytile#5 = phi( init_level_tile_directions::@10/init_level_tile_directions::ytile#9, init_level_tile_directions::@14/init_level_tile_directions::ytile#10 )
init_level_tile_directions::xtile#4 = phi( init_level_tile_directions::@10/init_level_tile_directions::xtile#8, init_level_tile_directions::@14/init_level_tile_directions::xtile#9 )
init_level_tile_directions::$6 = init_level_tile_directions::xtile#4 + 1
level_tile_get::xtile#1 = init_level_tile_directions::$6
level_tile_get::ytile#1 = init_level_tile_directions::ytile#5
call level_tile_get
level_tile_get::return#4 = level_tile_get::return#2
to:init_level_tile_directions::@15
init_level_tile_directions::@15: scope:[init_level_tile_directions] from init_level_tile_directions::@6
init_level_tile_directions::directions#14 = phi( init_level_tile_directions::@6/init_level_tile_directions::directions#15 )
init_level_tile_directions::open_directions#11 = phi( init_level_tile_directions::@6/init_level_tile_directions::open_directions#14 )
init_level_tile_directions::xtile#11 = phi( init_level_tile_directions::@6/init_level_tile_directions::xtile#4 )
init_level_tile_directions::ytile#12 = phi( init_level_tile_directions::@6/init_level_tile_directions::ytile#5 )
level_tile_get::return#9 = phi( init_level_tile_directions::@6/level_tile_get::return#4 )
init_level_tile_directions::$7 = level_tile_get::return#9
init_level_tile_directions::$8 = TILES_TYPE[init_level_tile_directions::$7] != WALL
init_level_tile_directions::$9 = ! init_level_tile_directions::$8
if(init_level_tile_directions::$9) goto init_level_tile_directions::@7
to:init_level_tile_directions::@11
init_level_tile_directions::@10: scope:[init_level_tile_directions] from init_level_tile_directions::@14
init_level_tile_directions::directions#16 = phi( init_level_tile_directions::@14/init_level_tile_directions::directions#17 )
init_level_tile_directions::ytile#9 = phi( init_level_tile_directions::@14/init_level_tile_directions::ytile#10 )
init_level_tile_directions::xtile#8 = phi( init_level_tile_directions::@14/init_level_tile_directions::xtile#9 )
init_level_tile_directions::open_directions#5 = phi( init_level_tile_directions::@14/init_level_tile_directions::open_directions#10 )
init_level_tile_directions::open_directions#1 = init_level_tile_directions::open_directions#5 | LEFT
to:init_level_tile_directions::@6
init_level_tile_directions::@7: scope:[init_level_tile_directions] from init_level_tile_directions::@11 init_level_tile_directions::@15
init_level_tile_directions::directions#12 = phi( init_level_tile_directions::@11/init_level_tile_directions::directions#13, init_level_tile_directions::@15/init_level_tile_directions::directions#14 )
init_level_tile_directions::open_directions#15 = phi( init_level_tile_directions::@11/init_level_tile_directions::open_directions#2, init_level_tile_directions::@15/init_level_tile_directions::open_directions#11 )
init_level_tile_directions::xtile#5 = phi( init_level_tile_directions::@11/init_level_tile_directions::xtile#10, init_level_tile_directions::@15/init_level_tile_directions::xtile#11 )
init_level_tile_directions::ytile#6 = phi( init_level_tile_directions::@11/init_level_tile_directions::ytile#11, init_level_tile_directions::@15/init_level_tile_directions::ytile#12 )
init_level_tile_directions::$10 = init_level_tile_directions::ytile#6 - 1
level_tile_get::xtile#2 = init_level_tile_directions::xtile#5
level_tile_get::ytile#2 = init_level_tile_directions::$10
call level_tile_get
level_tile_get::return#5 = level_tile_get::return#2
to:init_level_tile_directions::@16
init_level_tile_directions::@16: scope:[init_level_tile_directions] from init_level_tile_directions::@7
init_level_tile_directions::directions#11 = phi( init_level_tile_directions::@7/init_level_tile_directions::directions#12 )
init_level_tile_directions::open_directions#12 = phi( init_level_tile_directions::@7/init_level_tile_directions::open_directions#15 )
init_level_tile_directions::xtile#13 = phi( init_level_tile_directions::@7/init_level_tile_directions::xtile#5 )
init_level_tile_directions::ytile#14 = phi( init_level_tile_directions::@7/init_level_tile_directions::ytile#6 )
level_tile_get::return#10 = phi( init_level_tile_directions::@7/level_tile_get::return#5 )
init_level_tile_directions::$11 = level_tile_get::return#10
init_level_tile_directions::$12 = TILES_TYPE[init_level_tile_directions::$11] != WALL
init_level_tile_directions::$13 = ! init_level_tile_directions::$12
if(init_level_tile_directions::$13) goto init_level_tile_directions::@8
to:init_level_tile_directions::@12
init_level_tile_directions::@11: scope:[init_level_tile_directions] from init_level_tile_directions::@15
init_level_tile_directions::directions#13 = phi( init_level_tile_directions::@15/init_level_tile_directions::directions#14 )
init_level_tile_directions::xtile#10 = phi( init_level_tile_directions::@15/init_level_tile_directions::xtile#11 )
init_level_tile_directions::ytile#11 = phi( init_level_tile_directions::@15/init_level_tile_directions::ytile#12 )
init_level_tile_directions::open_directions#6 = phi( init_level_tile_directions::@15/init_level_tile_directions::open_directions#11 )
init_level_tile_directions::open_directions#2 = init_level_tile_directions::open_directions#6 | RIGHT
to:init_level_tile_directions::@7
init_level_tile_directions::@8: scope:[init_level_tile_directions] from init_level_tile_directions::@12 init_level_tile_directions::@16
init_level_tile_directions::directions#8 = phi( init_level_tile_directions::@12/init_level_tile_directions::directions#10, init_level_tile_directions::@16/init_level_tile_directions::directions#11 )
init_level_tile_directions::open_directions#16 = phi( init_level_tile_directions::@12/init_level_tile_directions::open_directions#3, init_level_tile_directions::@16/init_level_tile_directions::open_directions#12 )
init_level_tile_directions::xtile#6 = phi( init_level_tile_directions::@12/init_level_tile_directions::xtile#12, init_level_tile_directions::@16/init_level_tile_directions::xtile#13 )
init_level_tile_directions::ytile#7 = phi( init_level_tile_directions::@12/init_level_tile_directions::ytile#13, init_level_tile_directions::@16/init_level_tile_directions::ytile#14 )
init_level_tile_directions::$14 = init_level_tile_directions::ytile#7 + 1
level_tile_get::xtile#3 = init_level_tile_directions::xtile#6
level_tile_get::ytile#3 = init_level_tile_directions::$14
call level_tile_get
level_tile_get::return#6 = level_tile_get::return#2
to:init_level_tile_directions::@17
init_level_tile_directions::@17: scope:[init_level_tile_directions] from init_level_tile_directions::@8
init_level_tile_directions::ytile#18 = phi( init_level_tile_directions::@8/init_level_tile_directions::ytile#7 )
init_level_tile_directions::xtile#15 = phi( init_level_tile_directions::@8/init_level_tile_directions::xtile#6 )
init_level_tile_directions::directions#6 = phi( init_level_tile_directions::@8/init_level_tile_directions::directions#8 )
init_level_tile_directions::open_directions#13 = phi( init_level_tile_directions::@8/init_level_tile_directions::open_directions#16 )
level_tile_get::return#11 = phi( init_level_tile_directions::@8/level_tile_get::return#6 )
init_level_tile_directions::$15 = level_tile_get::return#11
init_level_tile_directions::$16 = TILES_TYPE[init_level_tile_directions::$15] != WALL
init_level_tile_directions::$17 = ! init_level_tile_directions::$16
if(init_level_tile_directions::$17) goto init_level_tile_directions::@9
to:init_level_tile_directions::@13
init_level_tile_directions::@12: scope:[init_level_tile_directions] from init_level_tile_directions::@16
init_level_tile_directions::directions#10 = phi( init_level_tile_directions::@16/init_level_tile_directions::directions#11 )
init_level_tile_directions::xtile#12 = phi( init_level_tile_directions::@16/init_level_tile_directions::xtile#13 )
init_level_tile_directions::ytile#13 = phi( init_level_tile_directions::@16/init_level_tile_directions::ytile#14 )
init_level_tile_directions::open_directions#7 = phi( init_level_tile_directions::@16/init_level_tile_directions::open_directions#12 )
init_level_tile_directions::open_directions#3 = init_level_tile_directions::open_directions#7 | UP
to:init_level_tile_directions::@8
init_level_tile_directions::@9: scope:[init_level_tile_directions] from init_level_tile_directions::@13 init_level_tile_directions::@17
init_level_tile_directions::ytile#16 = phi( init_level_tile_directions::@13/init_level_tile_directions::ytile#17, init_level_tile_directions::@17/init_level_tile_directions::ytile#18 )
init_level_tile_directions::xtile#7 = phi( init_level_tile_directions::@13/init_level_tile_directions::xtile#14, init_level_tile_directions::@17/init_level_tile_directions::xtile#15 )
init_level_tile_directions::directions#3 = phi( init_level_tile_directions::@13/init_level_tile_directions::directions#5, init_level_tile_directions::@17/init_level_tile_directions::directions#6 )
init_level_tile_directions::open_directions#8 = phi( init_level_tile_directions::@13/init_level_tile_directions::open_directions#4, init_level_tile_directions::@17/init_level_tile_directions::open_directions#13 )
init_level_tile_directions::directions#3[init_level_tile_directions::xtile#7] = init_level_tile_directions::open_directions#8
init_level_tile_directions::xtile#1 = ++ init_level_tile_directions::xtile#7
to:init_level_tile_directions::@3
init_level_tile_directions::@13: scope:[init_level_tile_directions] from init_level_tile_directions::@17
init_level_tile_directions::ytile#17 = phi( init_level_tile_directions::@17/init_level_tile_directions::ytile#18 )
init_level_tile_directions::xtile#14 = phi( init_level_tile_directions::@17/init_level_tile_directions::xtile#15 )
init_level_tile_directions::directions#5 = phi( init_level_tile_directions::@17/init_level_tile_directions::directions#6 )
init_level_tile_directions::open_directions#9 = phi( init_level_tile_directions::@17/init_level_tile_directions::open_directions#13 )
init_level_tile_directions::open_directions#4 = init_level_tile_directions::open_directions#9 | DOWN
to:init_level_tile_directions::@9
init_level_tile_directions::@return: scope:[init_level_tile_directions] from init_level_tile_directions::@1
return
to:@return
void init_sprite_pointers()
init_sprite_pointers: scope:[init_sprite_pointers] from gameplay_run::@16 splash_run::@34
init_sprite_pointers::sprites_ptr_1#0 = SCREENS_1+OFFSET_SPRITE_PTRS
init_sprite_pointers::sprites_ptr_2#0 = SCREENS_2+OFFSET_SPRITE_PTRS
init_sprite_pointers::screen#0 = 0
to:init_sprite_pointers::@1
init_sprite_pointers::@1: scope:[init_sprite_pointers] from init_sprite_pointers init_sprite_pointers::@5
init_sprite_pointers::sprites_ptr_2#6 = phi( init_sprite_pointers/init_sprite_pointers::sprites_ptr_2#0, init_sprite_pointers::@5/init_sprite_pointers::sprites_ptr_2#1 )
init_sprite_pointers::sprites_ptr_1#6 = phi( init_sprite_pointers/init_sprite_pointers::sprites_ptr_1#0, init_sprite_pointers::@5/init_sprite_pointers::sprites_ptr_1#1 )
init_sprite_pointers::screen#2 = phi( init_sprite_pointers/init_sprite_pointers::screen#0, init_sprite_pointers::@5/init_sprite_pointers::screen#1 )
init_sprite_pointers::$0 = init_sprite_pointers::screen#2 < $e
if(init_sprite_pointers::$0) goto init_sprite_pointers::@2
to:init_sprite_pointers::@return
init_sprite_pointers::@2: scope:[init_sprite_pointers] from init_sprite_pointers::@1
init_sprite_pointers::sprites_ptr_2#5 = phi( init_sprite_pointers::@1/init_sprite_pointers::sprites_ptr_2#6 )
init_sprite_pointers::sprites_ptr_1#5 = phi( init_sprite_pointers::@1/init_sprite_pointers::sprites_ptr_1#6 )
init_sprite_pointers::screen#6 = phi( init_sprite_pointers::@1/init_sprite_pointers::screen#2 )
init_sprite_pointers::sprite#0 = 0
to:init_sprite_pointers::@3
init_sprite_pointers::@3: scope:[init_sprite_pointers] from init_sprite_pointers::@2 init_sprite_pointers::@4
init_sprite_pointers::sprites_ptr_2#4 = phi( init_sprite_pointers::@2/init_sprite_pointers::sprites_ptr_2#5, init_sprite_pointers::@4/init_sprite_pointers::sprites_ptr_2#2 )
init_sprite_pointers::sprites_ptr_1#4 = phi( init_sprite_pointers::@2/init_sprite_pointers::sprites_ptr_1#5, init_sprite_pointers::@4/init_sprite_pointers::sprites_ptr_1#2 )
init_sprite_pointers::screen#5 = phi( init_sprite_pointers::@2/init_sprite_pointers::screen#6, init_sprite_pointers::@4/init_sprite_pointers::screen#3 )
init_sprite_pointers::sprite#2 = phi( init_sprite_pointers::@2/init_sprite_pointers::sprite#0, init_sprite_pointers::@4/init_sprite_pointers::sprite#1 )
init_sprite_pointers::$1 = init_sprite_pointers::sprite#2 < 8
if(init_sprite_pointers::$1) goto init_sprite_pointers::@4
to:init_sprite_pointers::@5
init_sprite_pointers::@4: scope:[init_sprite_pointers] from init_sprite_pointers::@3
init_sprite_pointers::sprites_ptr_2#2 = phi( init_sprite_pointers::@3/init_sprite_pointers::sprites_ptr_2#4 )
init_sprite_pointers::sprites_ptr_1#2 = phi( init_sprite_pointers::@3/init_sprite_pointers::sprites_ptr_1#4 )
init_sprite_pointers::sprite#3 = phi( init_sprite_pointers::@3/init_sprite_pointers::sprite#2 )
init_sprite_pointers::screen#3 = phi( init_sprite_pointers::@3/init_sprite_pointers::screen#5 )
init_sprite_pointers::$2 = init_sprite_pointers::SPRITE_ID_0 + init_sprite_pointers::screen#3
init_sprite_pointers::sprite_id#0 = init_sprite_pointers::$2 + init_sprite_pointers::sprites_id[init_sprite_pointers::sprite#3]
init_sprite_pointers::sprites_ptr_1#2[init_sprite_pointers::sprite#3] = init_sprite_pointers::sprite_id#0
init_sprite_pointers::sprites_ptr_2#2[init_sprite_pointers::sprite#3] = init_sprite_pointers::sprite_id#0
init_sprite_pointers::sprite#1 = ++ init_sprite_pointers::sprite#3
to:init_sprite_pointers::@3
init_sprite_pointers::@5: scope:[init_sprite_pointers] from init_sprite_pointers::@3
init_sprite_pointers::screen#4 = phi( init_sprite_pointers::@3/init_sprite_pointers::screen#5 )
init_sprite_pointers::sprites_ptr_2#3 = phi( init_sprite_pointers::@3/init_sprite_pointers::sprites_ptr_2#4 )
init_sprite_pointers::sprites_ptr_1#3 = phi( init_sprite_pointers::@3/init_sprite_pointers::sprites_ptr_1#4 )
init_sprite_pointers::sprites_ptr_1#1 = init_sprite_pointers::sprites_ptr_1#3 + $400
init_sprite_pointers::sprites_ptr_2#1 = init_sprite_pointers::sprites_ptr_2#3 + $400
init_sprite_pointers::screen#1 = ++ init_sprite_pointers::screen#4
to:init_sprite_pointers::@1
init_sprite_pointers::@return: scope:[init_sprite_pointers] from init_sprite_pointers::@1
return
to:@return
__interrupt(hardware_clobber) void irq_screen_top()
irq_screen_top: scope:[irq_screen_top] from
kickasm( uses HARDWARE_IRQ uses RASTER uses IRQ_STATUS uses IRQ_RASTER uses VICII_CONTROL1 uses VICII_RSEL uses VICII_MEMORY) {{ // Stabilize the raster by using the double IRQ method
// Acknowledge the IRQ
lda #IRQ_RASTER
sta IRQ_STATUS
// Set-up IRQ for the next line
inc RASTER
// Point IRQ to almost stable code
lda #<stable
sta HARDWARE_IRQ
lda #>stable
sta HARDWARE_IRQ+1
tsx // Save stack pointer
cli // Reenable interrupts
// Wait for new IRQ using NOP's to ensure minimal jitter when it hits
.fill 15, NOP
.align $20
stable:
txs // Restore stack pointer
ldx #9 // Wait till the raster has almost crossed to the next line (48 cycles)
!: dex
bne !-
nop
lda RASTER
cmp RASTER
bne !+ // And correct the last cycle of potential jitter
!:
// Raster is now completely stable! (Line 0x007 cycle 7)
}}
asm { jsrRASTER_CODE }
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y) = 7
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y) = 7
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y) = 7
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y) = 7
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y) = 7
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y) = 7
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y) = 7
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y) = 7
irq_screen_top::toD0181_screen#0 = SCREENS_1
irq_screen_top::toD0181_gfx#0 = SCREENS_1
to:irq_screen_top::toD0181
irq_screen_top::toD0181: scope:[irq_screen_top] from irq_screen_top
irq_screen_top::toD0181_gfx#1 = phi( irq_screen_top/irq_screen_top::toD0181_gfx#0 )
irq_screen_top::toD0181_screen#1 = phi( irq_screen_top/irq_screen_top::toD0181_screen#0 )
irq_screen_top::toD0181_$7 = (unsigned int)irq_screen_top::toD0181_screen#1
irq_screen_top::toD0181_$0 = irq_screen_top::toD0181_$7 & $3fff
irq_screen_top::toD0181_$1 = irq_screen_top::toD0181_$0 * 4
irq_screen_top::toD0181_$2 = byte1 irq_screen_top::toD0181_$1
irq_screen_top::toD0181_$3 = byte1 (unsigned int)irq_screen_top::toD0181_gfx#1
irq_screen_top::toD0181_$4 = irq_screen_top::toD0181_$3 / 4
irq_screen_top::toD0181_$5 = irq_screen_top::toD0181_$4 & $f
irq_screen_top::toD0181_$6 = irq_screen_top::toD0181_$2 | irq_screen_top::toD0181_$5
irq_screen_top::toD0181_return#0 = irq_screen_top::toD0181_$6
to:irq_screen_top::toD0181_@return
irq_screen_top::toD0181_@return: scope:[irq_screen_top] from irq_screen_top::toD0181
irq_screen_top::toD0181_return#2 = phi( irq_screen_top::toD0181/irq_screen_top::toD0181_return#0 )
irq_screen_top::toD0181_return#1 = irq_screen_top::toD0181_return#2
to:irq_screen_top::@7
irq_screen_top::@7: scope:[irq_screen_top] from irq_screen_top::toD0181_@return
irq_screen_top::toD0181_return#3 = phi( irq_screen_top::toD0181_@return/irq_screen_top::toD0181_return#1 )
irq_screen_top::$0 = irq_screen_top::toD0181_return#3
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = irq_screen_top::$0
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR) = top_sprites_color
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR) = top_sprites_color
irq_screen_top::$1 = frame + 1
irq_screen_top::$2 = irq_screen_top::$1 & 1
frame = irq_screen_top::$2
irq_screen_top::$8 = 0 != frame
if(irq_screen_top::$8) goto irq_screen_top::@1
to:irq_screen_top::@5
irq_screen_top::@1: scope:[irq_screen_top] from irq_screen_top::@7
irq_screen_top::toDd001_gfx#0 = SCREENS_2
to:irq_screen_top::toDd001
irq_screen_top::toDd001: scope:[irq_screen_top] from irq_screen_top::@1
irq_screen_top::toDd001_gfx#1 = phi( irq_screen_top::@1/irq_screen_top::toDd001_gfx#0 )
irq_screen_top::toDd001_$0 = byte1 (unsigned int)irq_screen_top::toDd001_gfx#1
irq_screen_top::toDd001_$1 = irq_screen_top::toDd001_$0 / $40
irq_screen_top::toDd001_$2 = 3 ^ irq_screen_top::toDd001_$1
irq_screen_top::toDd001_return#0 = irq_screen_top::toDd001_$2
to:irq_screen_top::toDd001_@return
irq_screen_top::toDd001_@return: scope:[irq_screen_top] from irq_screen_top::toDd001
irq_screen_top::toDd001_return#2 = phi( irq_screen_top::toDd001/irq_screen_top::toDd001_return#0 )
irq_screen_top::toDd001_return#1 = irq_screen_top::toDd001_return#2
to:irq_screen_top::@8
irq_screen_top::@8: scope:[irq_screen_top] from irq_screen_top::toDd001_@return
irq_screen_top::toDd001_return#3 = phi( irq_screen_top::toDd001_@return/irq_screen_top::toDd001_return#1 )
irq_screen_top::$5 = irq_screen_top::toDd001_return#3
*((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = irq_screen_top::$5
canvas_base_hi = byte1 SPRITES_1
bobs_restore_base = 0
to:irq_screen_top::@2
irq_screen_top::@5: scope:[irq_screen_top] from irq_screen_top::@7
irq_screen_top::toDd002_gfx#0 = SCREENS_1
to:irq_screen_top::toDd002
irq_screen_top::toDd002: scope:[irq_screen_top] from irq_screen_top::@5
irq_screen_top::toDd002_gfx#1 = phi( irq_screen_top::@5/irq_screen_top::toDd002_gfx#0 )
irq_screen_top::toDd002_$0 = byte1 (unsigned int)irq_screen_top::toDd002_gfx#1
irq_screen_top::toDd002_$1 = irq_screen_top::toDd002_$0 / $40
irq_screen_top::toDd002_$2 = 3 ^ irq_screen_top::toDd002_$1
irq_screen_top::toDd002_return#0 = irq_screen_top::toDd002_$2
to:irq_screen_top::toDd002_@return
irq_screen_top::toDd002_@return: scope:[irq_screen_top] from irq_screen_top::toDd002
irq_screen_top::toDd002_return#2 = phi( irq_screen_top::toDd002/irq_screen_top::toDd002_return#0 )
irq_screen_top::toDd002_return#1 = irq_screen_top::toDd002_return#2
to:irq_screen_top::@9
irq_screen_top::@9: scope:[irq_screen_top] from irq_screen_top::toDd002_@return
irq_screen_top::toDd002_return#3 = phi( irq_screen_top::toDd002_@return/irq_screen_top::toDd002_return#1 )
irq_screen_top::$4 = irq_screen_top::toDd002_return#3
*((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = irq_screen_top::$4
canvas_base_hi = byte1 SPRITES_2
bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE
to:irq_screen_top::@2
irq_screen_top::@2: scope:[irq_screen_top] from irq_screen_top::@8 irq_screen_top::@9
irq_screen_top::$3 = phase == 0
if(irq_screen_top::$3) goto irq_screen_top::@3
to:irq_screen_top::@6
irq_screen_top::@3: scope:[irq_screen_top] from irq_screen_top::@2
music_play_next = 1
to:irq_screen_top::@4
irq_screen_top::@6: scope:[irq_screen_top] from irq_screen_top::@2
call game_logic
to:irq_screen_top::@10
irq_screen_top::@10: scope:[irq_screen_top] from irq_screen_top::@6
call pacman_sound_play
to:irq_screen_top::@11
irq_screen_top::@11: scope:[irq_screen_top] from irq_screen_top::@10
to:irq_screen_top::@4
irq_screen_top::@4: scope:[irq_screen_top] from irq_screen_top::@11 irq_screen_top::@3
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) = IRQ_RASTER
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE
*HARDWARE_IRQ = &irq_screen_top
to:irq_screen_top::@return
irq_screen_top::@return: scope:[irq_screen_top] from irq_screen_top::@4
return
to:@return
void game_logic()
game_logic: scope:[game_logic] from irq_screen_top::@6
game_logic::$0 = game_playable == 0
game_logic::$1 = ! game_logic::$0
if(game_logic::$1) goto game_logic::@1
to:game_logic::@return
game_logic::@1: scope:[game_logic] from game_logic
game_logic::$2 = game_logic_substep + 1
game_logic::$3 = game_logic::$2 & 7
game_logic_substep = game_logic::$3
game_logic::$4 = game_logic_substep == 0
if(game_logic::$4) goto game_logic::@2
to:game_logic::@8
game_logic::@return: scope:[game_logic] from game_logic game_logic::@100 game_logic::@105 game_logic::@106 game_logic::@107 game_logic::@108 game_logic::@114 game_logic::@115 game_logic::@118 game_logic::@123 game_logic::@124 game_logic::@125 game_logic::@126 game_logic::@13 game_logic::@132 game_logic::@133 game_logic::@136 game_logic::@141 game_logic::@142 game_logic::@143 game_logic::@149 game_logic::@150 game_logic::@154 game_logic::@155 game_logic::@156 game_logic::@157 game_logic::@158 game_logic::@159 game_logic::@161 game_logic::@163 game_logic::@165 game_logic::@167 game_logic::@44 game_logic::@54 game_logic::@55 game_logic::@56 game_logic::@57 game_logic::@66 game_logic::@72 game_logic::@78 game_logic::@79 game_logic::@82 game_logic::@87 game_logic::@88 game_logic::@89 game_logic::@90 game_logic::@96 game_logic::@97
return
to:@return
game_logic::@2: scope:[game_logic] from game_logic::@1
game_logic::$188 = pacman_direction == RIGHT
if(game_logic::$188) goto game_logic::@144
to:game_logic::@40
game_logic::@8: scope:[game_logic] from game_logic::@1
game_logic::$5 = game_logic_substep == 1
if(game_logic::$5) goto game_logic::@3
to:game_logic::@9
game_logic::@3: scope:[game_logic] from game_logic::@8
game_logic::$211 = 0 != ghost1_respawn
if(game_logic::$211) goto game_logic::@126
to:game_logic::@35
game_logic::@9: scope:[game_logic] from game_logic::@8
game_logic::$6 = game_logic_substep == 2
if(game_logic::$6) goto game_logic::@4
to:game_logic::@10
game_logic::@4: scope:[game_logic] from game_logic::@9
game_logic::$212 = 0 != ghost2_respawn
if(game_logic::$212) goto game_logic::@108
to:game_logic::@30
game_logic::@10: scope:[game_logic] from game_logic::@9
game_logic::$7 = game_logic_substep == 4
if(game_logic::$7) goto game_logic::@5
to:game_logic::@11
game_logic::@5: scope:[game_logic] from game_logic::@10
game_logic::$213 = 0 != ghost3_respawn
if(game_logic::$213) goto game_logic::@90
to:game_logic::@25
game_logic::@11: scope:[game_logic] from game_logic::@10
game_logic::$8 = game_logic_substep == 5
if(game_logic::$8) goto game_logic::@6
to:game_logic::@12
game_logic::@6: scope:[game_logic] from game_logic::@11
game_logic::$214 = 0 != ghost4_respawn
if(game_logic::$214) goto game_logic::@72
to:game_logic::@20
game_logic::@12: scope:[game_logic] from game_logic::@11
game_logic::$9 = game_logic_substep == 6
if(game_logic::$9) goto game_logic::@7
to:game_logic::@13
game_logic::@7: scope:[game_logic] from game_logic::@12
ghosts_mode_count = ++ ghosts_mode_count
game_logic::do_reverse#0 = 0
game_logic::$48 = ghosts_mode == SCATTER
if(game_logic::$48) goto game_logic::@45
to:game_logic::@16
game_logic::@13: scope:[game_logic] from game_logic::@12
game_logic::$10 = game_logic_substep == 3
game_logic::$11 = game_logic_substep == 7
game_logic::$12 = game_logic::$10 || game_logic::$11
game_logic::$13 = ! game_logic::$12
if(game_logic::$13) goto game_logic::@return
to:game_logic::@14
game_logic::@14: scope:[game_logic] from game_logic::@13
game_logic::$14 = anim_frame_idx + 1
game_logic::$15 = game_logic::$14 & 3
anim_frame_idx = game_logic::$15
game_logic::pacman_bob_xfine#0 = pacman_xfine - 1
game_logic::$17 = game_logic::pacman_bob_xfine#0 / 4
bobs_xcol[0] = game_logic::$17
game_logic::$18 = pacman_yfine - 1
bobs_yfine[0] = game_logic::$18
game_logic::$19 = pacman_direction | anim_frame_idx
game_logic::$20 = game_logic::pacman_bob_xfine#0 & 3
game_logic::$21 = pacman_frames[game_logic::$19] + game_logic::$20
bobs_bob_id[0] = game_logic::$21
game_logic::ghost_frame_idx#0 = anim_frame_idx
game_logic::$22 = ghosts_mode == FRIGHTENED
game_logic::$23 = ! game_logic::$22
if(game_logic::$23) goto game_logic::@44
to:game_logic::@15
game_logic::@44: scope:[game_logic] from game_logic::@14 game_logic::@15
game_logic::ghost_frame_idx#2 = phi( game_logic::@14/game_logic::ghost_frame_idx#0, game_logic::@15/game_logic::ghost_frame_idx#1 )
game_logic::ghost1_bob_xfine#0 = ghost1_xfine - 1
game_logic::$25 = game_logic::ghost1_bob_xfine#0 / 4
bobs_xcol[1] = game_logic::$25
game_logic::$26 = ghost1_yfine - 1
bobs_yfine[1] = game_logic::$26
game_logic::$27 = ghost1_direction | game_logic::ghost_frame_idx#2
game_logic::$28 = game_logic::ghost1_bob_xfine#0 & 3
game_logic::$29 = ghost_frames[game_logic::$27] + game_logic::$28
bobs_bob_id[1] = game_logic::$29
game_logic::ghost2_bob_xfine#0 = ghost2_xfine - 1
game_logic::$31 = game_logic::ghost2_bob_xfine#0 / 4
bobs_xcol[2] = game_logic::$31
game_logic::$32 = ghost2_yfine - 1
bobs_yfine[2] = game_logic::$32
game_logic::$33 = ghost2_direction | game_logic::ghost_frame_idx#2
game_logic::$34 = game_logic::ghost2_bob_xfine#0 & 3
game_logic::$35 = ghost_frames[game_logic::$33] + game_logic::$34
bobs_bob_id[2] = game_logic::$35
game_logic::ghost3_bob_xfine#0 = ghost3_xfine - 1
game_logic::$37 = game_logic::ghost3_bob_xfine#0 / 4
bobs_xcol[3] = game_logic::$37
game_logic::$38 = ghost3_yfine - 1
bobs_yfine[3] = game_logic::$38
game_logic::$39 = ghost3_direction | game_logic::ghost_frame_idx#2
game_logic::$40 = game_logic::ghost3_bob_xfine#0 & 3
game_logic::$41 = ghost_frames[game_logic::$39] + game_logic::$40
bobs_bob_id[3] = game_logic::$41
game_logic::ghost4_bob_xfine#0 = ghost4_xfine - 1
game_logic::$43 = game_logic::ghost4_bob_xfine#0 / 4
bobs_xcol[4] = game_logic::$43
game_logic::$44 = ghost4_yfine - 1
bobs_yfine[4] = game_logic::$44
game_logic::$45 = ghost4_direction | game_logic::ghost_frame_idx#2
game_logic::$46 = game_logic::ghost4_bob_xfine#0 & 3
game_logic::$47 = ghost_frames[game_logic::$45] + game_logic::$46
bobs_bob_id[4] = game_logic::$47
to:game_logic::@return
game_logic::@15: scope:[game_logic] from game_logic::@14
game_logic::ghost_frame_idx#3 = phi( game_logic::@14/game_logic::ghost_frame_idx#0 )
game_logic::ghost_frame_idx#1 = game_logic::ghost_frame_idx#3 | $40
to:game_logic::@44
game_logic::@45: scope:[game_logic] from game_logic::@7
game_logic::do_reverse#7 = phi( game_logic::@7/game_logic::do_reverse#0 )
game_logic::$56 = ghosts_mode_count > $32
game_logic::$57 = ! game_logic::$56
if(game_logic::$57) goto game_logic::@47
to:game_logic::@59
game_logic::@16: scope:[game_logic] from game_logic::@7
game_logic::do_reverse#9 = phi( game_logic::@7/game_logic::do_reverse#0 )
game_logic::$49 = ghosts_mode == CHASE
if(game_logic::$49) goto game_logic::@46
to:game_logic::@17
game_logic::@46: scope:[game_logic] from game_logic::@16
game_logic::do_reverse#8 = phi( game_logic::@16/game_logic::do_reverse#9 )
game_logic::$54 = ghosts_mode_count > $96
game_logic::$55 = ! game_logic::$54
if(game_logic::$55) goto game_logic::@47
to:game_logic::@58
game_logic::@17: scope:[game_logic] from game_logic::@16
game_logic::do_reverse#5 = phi( game_logic::@16/game_logic::do_reverse#9 )
game_logic::$50 = ghosts_mode == FRIGHTENED
game_logic::$51 = ! game_logic::$50
if(game_logic::$51) goto game_logic::@47
to:game_logic::@18
game_logic::@18: scope:[game_logic] from game_logic::@17
game_logic::do_reverse#6 = phi( game_logic::@17/game_logic::do_reverse#5 )
game_logic::$52 = ghosts_mode_count > $32
game_logic::$53 = ! game_logic::$52
if(game_logic::$53) goto game_logic::@47
to:game_logic::@19
game_logic::@19: scope:[game_logic] from game_logic::@18
ghosts_mode = CHASE
ghosts_mode_count = 0
game_logic::do_reverse#1 = 1
to:game_logic::@47
game_logic::@58: scope:[game_logic] from game_logic::@46
ghosts_mode = SCATTER
ghosts_mode_count = 0
game_logic::do_reverse#2 = 1
to:game_logic::@47
game_logic::@47: scope:[game_logic] from game_logic::@17 game_logic::@18 game_logic::@19 game_logic::@45 game_logic::@46 game_logic::@58 game_logic::@59
game_logic::do_reverse#4 = phi( game_logic::@17/game_logic::do_reverse#5, game_logic::@18/game_logic::do_reverse#6, game_logic::@19/game_logic::do_reverse#1, game_logic::@45/game_logic::do_reverse#7, game_logic::@46/game_logic::do_reverse#8, game_logic::@58/game_logic::do_reverse#2, game_logic::@59/game_logic::do_reverse#3 )
game_logic::$219 = 0 != game_logic::do_reverse#4
game_logic::$58 = ! game_logic::$219
if(game_logic::$58) goto game_logic::@48
to:game_logic::@60
game_logic::@59: scope:[game_logic] from game_logic::@45
ghosts_mode = CHASE
ghosts_mode_count = 0
game_logic::do_reverse#3 = 1
to:game_logic::@47
game_logic::@48: scope:[game_logic] from game_logic::@47 game_logic::@60
game_logic::pacman_xtile#0 = pacman_xfine / 2
game_logic::pacman_ytile#0 = pacman_yfine / 2
game_logic::$210 = game_logic::pacman_ytile#0 * SIZEOF_UNSIGNED_INT
game_logic::ytiles#0 = LEVEL_TILES + LEVEL_YTILE_OFFSET[game_logic::$210]
game_logic::tile_id#0 = game_logic::ytiles#0[game_logic::pacman_xtile#0]
game_logic::$62 = TILES_TYPE[game_logic::tile_id#0] == PILL
if(game_logic::$62) goto game_logic::@49
to:game_logic::@61
game_logic::@60: scope:[game_logic] from game_logic::@47
ghost1_reverse = 1
ghost2_reverse = 1
ghost3_reverse = 1
ghost4_reverse = 1
to:game_logic::@48
game_logic::@49: scope:[game_logic] from game_logic::@48
game_logic::pacman_ytile#1 = phi( game_logic::@48/game_logic::pacman_ytile#0 )
game_logic::pacman_xtile#1 = phi( game_logic::@48/game_logic::pacman_xtile#0 )
game_logic::ytiles#1 = phi( game_logic::@48/game_logic::ytiles#0 )
game_logic::ytiles#1[game_logic::pacman_xtile#1] = EMPTY
game_logic::$69 = game_logic::pacman_xtile#1 / 2
logic_tile_xcol = game_logic::$69
game_logic::$70 = game_logic::pacman_xtile#1 & $fe
game_logic::$71 = game_logic::ytiles#1 + game_logic::$70
logic_tile_ptr = game_logic::$71
game_logic::$72 = game_logic::pacman_ytile#1 * 2
logic_tile_yfine = game_logic::$72
pill_count = -- pill_count
game_logic::$73 = pill_count == 0
game_logic::$74 = ! game_logic::$73
if(game_logic::$74) goto game_logic::@50
to:game_logic::@63
game_logic::@61: scope:[game_logic] from game_logic::@48
game_logic::pacman_ytile#3 = phi( game_logic::@48/game_logic::pacman_ytile#0 )
game_logic::pacman_xtile#3 = phi( game_logic::@48/game_logic::pacman_xtile#0 )
game_logic::ytiles#3 = phi( game_logic::@48/game_logic::ytiles#0 )
game_logic::tile_id#1 = phi( game_logic::@48/game_logic::tile_id#0 )
game_logic::$63 = TILES_TYPE[game_logic::tile_id#1] == POWERUP
game_logic::$64 = ! game_logic::$63
if(game_logic::$64) goto game_logic::@50
to:game_logic::@62
game_logic::@62: scope:[game_logic] from game_logic::@61
game_logic::pacman_ytile#2 = phi( game_logic::@61/game_logic::pacman_ytile#3 )
game_logic::pacman_xtile#2 = phi( game_logic::@61/game_logic::pacman_xtile#3 )
game_logic::ytiles#2 = phi( game_logic::@61/game_logic::ytiles#3 )
game_logic::ytiles#2[game_logic::pacman_xtile#2] = EMPTY
game_logic::$65 = game_logic::pacman_xtile#2 / 2
logic_tile_xcol = game_logic::$65
game_logic::$66 = game_logic::pacman_xtile#2 & $fe
game_logic::$67 = game_logic::ytiles#2 + game_logic::$66
logic_tile_ptr = game_logic::$67
game_logic::$68 = game_logic::pacman_ytile#2 * 2
logic_tile_yfine = game_logic::$68
ghosts_mode = FRIGHTENED
ghosts_mode_count = 0
to:game_logic::@50
game_logic::@50: scope:[game_logic] from game_logic::@49 game_logic::@61 game_logic::@62 game_logic::@63
game_logic::$75 = pacman_xfine - ghost1_xfine
game_logic::$76 = ABS[game_logic::$75] < 2
game_logic::$77 = pacman_yfine - ghost1_yfine
game_logic::$78 = ABS[game_logic::$77] < 2
game_logic::$79 = game_logic::$76 && game_logic::$78
if(game_logic::$79) goto game_logic::@51
to:game_logic::@64
game_logic::@63: scope:[game_logic] from game_logic::@49
pacman_wins = 1
to:game_logic::@50
game_logic::@51: scope:[game_logic] from game_logic::@50
game_logic::$102 = ghosts_mode == FRIGHTENED
if(game_logic::$102) goto game_logic::@57
to:game_logic::@71
game_logic::@64: scope:[game_logic] from game_logic::@50
game_logic::$80 = pacman_xfine - ghost2_xfine
game_logic::$81 = ABS[game_logic::$80] < 2
game_logic::$82 = pacman_yfine - ghost2_yfine
game_logic::$83 = ABS[game_logic::$82] < 2
game_logic::$84 = game_logic::$81 && game_logic::$83
if(game_logic::$84) goto game_logic::@52
to:game_logic::@65
game_logic::@52: scope:[game_logic] from game_logic::@64
game_logic::$100 = ghosts_mode == FRIGHTENED
if(game_logic::$100) goto game_logic::@56
to:game_logic::@70
game_logic::@65: scope:[game_logic] from game_logic::@64
game_logic::$85 = pacman_xfine - ghost3_xfine
game_logic::$86 = ABS[game_logic::$85] < 2
game_logic::$87 = pacman_yfine - ghost3_yfine
game_logic::$88 = ABS[game_logic::$87] < 2
game_logic::$89 = game_logic::$86 && game_logic::$88
if(game_logic::$89) goto game_logic::@53
to:game_logic::@66
game_logic::@53: scope:[game_logic] from game_logic::@65
game_logic::$98 = ghosts_mode == FRIGHTENED
if(game_logic::$98) goto game_logic::@55
to:game_logic::@69
game_logic::@66: scope:[game_logic] from game_logic::@65
game_logic::$90 = pacman_xfine - ghost4_xfine
game_logic::$91 = ABS[game_logic::$90] < 2
game_logic::$92 = pacman_yfine - ghost4_yfine
game_logic::$93 = ABS[game_logic::$92] < 2
game_logic::$94 = game_logic::$91 && game_logic::$93
game_logic::$95 = ! game_logic::$94
if(game_logic::$95) goto game_logic::@return
to:game_logic::@67
game_logic::@67: scope:[game_logic] from game_logic::@66
game_logic::$96 = ghosts_mode == FRIGHTENED
if(game_logic::$96) goto game_logic::@54
to:game_logic::@68
game_logic::@54: scope:[game_logic] from game_logic::@67
ghost4_direction = STOP
ghost4_xfine = $32
ghost4_yfine = $23
ghost4_substep = 0
ghost4_respawn = $32
to:game_logic::@return
game_logic::@68: scope:[game_logic] from game_logic::@67
pacman_lives = -- pacman_lives
call spawn_all
to:game_logic::@156
game_logic::@156: scope:[game_logic] from game_logic::@68
to:game_logic::@return
game_logic::@55: scope:[game_logic] from game_logic::@53
ghost3_direction = STOP
ghost3_xfine = $32
ghost3_yfine = $23
ghost3_substep = 0
ghost3_respawn = $32
to:game_logic::@return
game_logic::@69: scope:[game_logic] from game_logic::@53
pacman_lives = -- pacman_lives
call spawn_all
to:game_logic::@157
game_logic::@157: scope:[game_logic] from game_logic::@69
to:game_logic::@return
game_logic::@56: scope:[game_logic] from game_logic::@52
ghost2_direction = STOP
ghost2_xfine = $32
ghost2_yfine = $23
ghost2_substep = 0
ghost2_respawn = $32
to:game_logic::@return
game_logic::@70: scope:[game_logic] from game_logic::@52
pacman_lives = -- pacman_lives
call spawn_all
to:game_logic::@158
game_logic::@158: scope:[game_logic] from game_logic::@70
to:game_logic::@return
game_logic::@57: scope:[game_logic] from game_logic::@51
ghost1_direction = STOP
ghost1_xfine = $32
ghost1_yfine = $23
ghost1_substep = 0
ghost1_respawn = $32
to:game_logic::@return
game_logic::@71: scope:[game_logic] from game_logic::@51
pacman_lives = -- pacman_lives
call spawn_all
to:game_logic::@159
game_logic::@159: scope:[game_logic] from game_logic::@71
to:game_logic::@return
game_logic::@72: scope:[game_logic] from game_logic::@6
ghost4_respawn = -- ghost4_respawn
game_logic::$123 = ghost4_respawn == 0
game_logic::$124 = ! game_logic::$123
if(game_logic::$124) goto game_logic::@return
to:game_logic::@89
game_logic::@20: scope:[game_logic] from game_logic::@6
game_logic::$104 = ghost4_direction == RIGHT
if(game_logic::$104) goto game_logic::@73
to:game_logic::@21
game_logic::@73: scope:[game_logic] from game_logic::@20
ghost4_xfine = ++ ghost4_xfine
to:game_logic::@76
game_logic::@21: scope:[game_logic] from game_logic::@20
game_logic::$105 = ghost4_direction == DOWN
if(game_logic::$105) goto game_logic::@74
to:game_logic::@22
game_logic::@74: scope:[game_logic] from game_logic::@21
ghost4_yfine = ++ ghost4_yfine
to:game_logic::@76
game_logic::@22: scope:[game_logic] from game_logic::@21
game_logic::$106 = ghost4_direction == LEFT
if(game_logic::$106) goto game_logic::@75
to:game_logic::@23
game_logic::@75: scope:[game_logic] from game_logic::@22
ghost4_xfine = -- ghost4_xfine
to:game_logic::@76
game_logic::@23: scope:[game_logic] from game_logic::@22
game_logic::$107 = ghost4_direction == UP
game_logic::$108 = ! game_logic::$107
if(game_logic::$108) goto game_logic::@76
to:game_logic::@24
game_logic::@24: scope:[game_logic] from game_logic::@23
ghost4_yfine = -- ghost4_yfine
to:game_logic::@76
game_logic::@76: scope:[game_logic] from game_logic::@23 game_logic::@24 game_logic::@73 game_logic::@74 game_logic::@75
game_logic::$109 = ghost4_substep == 0
game_logic::$110 = ghost4_direction != STOP
game_logic::$111 = game_logic::$109 && game_logic::$110
if(game_logic::$111) goto game_logic::@77
to:game_logic::@83
game_logic::@77: scope:[game_logic] from game_logic::@76
ghost4_substep = 1
game_logic::$120 = ghost4_xfine == 1
if(game_logic::$120) goto game_logic::@82
to:game_logic::@87
game_logic::@83: scope:[game_logic] from game_logic::@76
ghost4_substep = 0
game_logic::$215 = 0 != ghost4_reverse
if(game_logic::$215) goto game_logic::@78
to:game_logic::@84
game_logic::@78: scope:[game_logic] from game_logic::@83
ghost4_direction = DIRECTION_REVERSE[ghost4_direction]
ghost4_reverse = 0
to:game_logic::@return
game_logic::@84: scope:[game_logic] from game_logic::@83
game_logic::ghost4_xtile#0 = ghost4_xfine / 2
game_logic::ghost4_ytile#0 = ghost4_yfine / 2
level_tile_directions::xtile#0 = game_logic::ghost4_xtile#0
level_tile_directions::ytile#0 = game_logic::ghost4_ytile#0
call level_tile_directions
level_tile_directions::return#3 = level_tile_directions::return#2
to:game_logic::@160
game_logic::@160: scope:[game_logic] from game_logic::@84
game_logic::ghost4_ytile#5 = phi( game_logic::@84/game_logic::ghost4_ytile#0 )
game_logic::ghost4_xtile#5 = phi( game_logic::@84/game_logic::ghost4_xtile#0 )
level_tile_directions::return#9 = phi( game_logic::@84/level_tile_directions::return#3 )
game_logic::open_directions#0 = level_tile_directions::return#9
game_logic::open_directions#1 = game_logic::open_directions#0 & DIRECTION_ELIMINATE[ghost4_direction]
game_logic::$115 = ghosts_mode == FRIGHTENED
if(game_logic::$115) goto game_logic::@79
to:game_logic::@85
game_logic::@79: scope:[game_logic] from game_logic::@160
game_logic::open_directions#2 = phi( game_logic::@160/game_logic::open_directions#1 )
ghost4_direction = DIRECTION_SINGLE[game_logic::open_directions#2]
to:game_logic::@return
game_logic::@85: scope:[game_logic] from game_logic::@160
game_logic::ghost4_ytile#4 = phi( game_logic::@160/game_logic::ghost4_ytile#5 )
game_logic::ghost4_xtile#4 = phi( game_logic::@160/game_logic::ghost4_xtile#5 )
game_logic::open_directions#6 = phi( game_logic::@160/game_logic::open_directions#1 )
game_logic::target_xtile#0 = 0
game_logic::target_ytile#0 = 0
game_logic::$116 = ghosts_mode == SCATTER
if(game_logic::$116) goto game_logic::@80
to:game_logic::@86
game_logic::@80: scope:[game_logic] from game_logic::@85
game_logic::ghost4_ytile#2 = phi( game_logic::@85/game_logic::ghost4_ytile#4 )
game_logic::ghost4_xtile#2 = phi( game_logic::@85/game_logic::ghost4_xtile#4 )
game_logic::open_directions#4 = phi( game_logic::@85/game_logic::open_directions#6 )
game_logic::target_xtile#1 = 2
game_logic::target_ytile#1 = 2
to:game_logic::@81
game_logic::@86: scope:[game_logic] from game_logic::@85
game_logic::ghost4_ytile#3 = phi( game_logic::@85/game_logic::ghost4_ytile#4 )
game_logic::ghost4_xtile#3 = phi( game_logic::@85/game_logic::ghost4_xtile#4 )
game_logic::open_directions#5 = phi( game_logic::@85/game_logic::open_directions#6 )
game_logic::$117 = pacman_xfine / 2
game_logic::target_xtile#2 = game_logic::$117
game_logic::$118 = pacman_yfine / 2
game_logic::target_ytile#2 = game_logic::$118
to:game_logic::@81
game_logic::@81: scope:[game_logic] from game_logic::@80 game_logic::@86
game_logic::target_ytile#3 = phi( game_logic::@80/game_logic::target_ytile#1, game_logic::@86/game_logic::target_ytile#2 )
game_logic::target_xtile#3 = phi( game_logic::@80/game_logic::target_xtile#1, game_logic::@86/game_logic::target_xtile#2 )
game_logic::ghost4_ytile#1 = phi( game_logic::@80/game_logic::ghost4_ytile#2, game_logic::@86/game_logic::ghost4_ytile#3 )
game_logic::ghost4_xtile#1 = phi( game_logic::@80/game_logic::ghost4_xtile#2, game_logic::@86/game_logic::ghost4_xtile#3 )
game_logic::open_directions#3 = phi( game_logic::@80/game_logic::open_directions#4, game_logic::@86/game_logic::open_directions#5 )
choose_direction::open_directions#0 = game_logic::open_directions#3
choose_direction::ghost_xtile#0 = game_logic::ghost4_xtile#1
choose_direction::ghost_ytile#0 = game_logic::ghost4_ytile#1
choose_direction::target_xtile#0 = game_logic::target_xtile#3
choose_direction::target_ytile#0 = game_logic::target_ytile#3
call choose_direction
choose_direction::return#0 = choose_direction::return#5
to:game_logic::@161
game_logic::@161: scope:[game_logic] from game_logic::@81
choose_direction::return#6 = phi( game_logic::@81/choose_direction::return#0 )
game_logic::$119 = choose_direction::return#6
ghost4_direction = game_logic::$119
to:game_logic::@return
game_logic::@82: scope:[game_logic] from game_logic::@77
ghost4_xfine = $61
to:game_logic::@return
game_logic::@87: scope:[game_logic] from game_logic::@77
game_logic::$121 = ghost4_xfine == $61
game_logic::$122 = ! game_logic::$121
if(game_logic::$122) goto game_logic::@return
to:game_logic::@88
game_logic::@88: scope:[game_logic] from game_logic::@87
ghost4_xfine = 1
to:game_logic::@return
game_logic::@89: scope:[game_logic] from game_logic::@72
ghost4_direction = RIGHT
ghost4_xfine = 2
ghost4_yfine = 2
ghost4_substep = 0
to:game_logic::@return
game_logic::@90: scope:[game_logic] from game_logic::@5
ghost3_respawn = -- ghost3_respawn
game_logic::$144 = ghost3_respawn == 0
game_logic::$145 = ! game_logic::$144
if(game_logic::$145) goto game_logic::@return
to:game_logic::@107
game_logic::@25: scope:[game_logic] from game_logic::@5
game_logic::$125 = ghost3_direction == RIGHT
if(game_logic::$125) goto game_logic::@91
to:game_logic::@26
game_logic::@91: scope:[game_logic] from game_logic::@25
ghost3_xfine = ++ ghost3_xfine
to:game_logic::@94
game_logic::@26: scope:[game_logic] from game_logic::@25
game_logic::$126 = ghost3_direction == DOWN
if(game_logic::$126) goto game_logic::@92
to:game_logic::@27
game_logic::@92: scope:[game_logic] from game_logic::@26
ghost3_yfine = ++ ghost3_yfine
to:game_logic::@94
game_logic::@27: scope:[game_logic] from game_logic::@26
game_logic::$127 = ghost3_direction == LEFT
if(game_logic::$127) goto game_logic::@93
to:game_logic::@28
game_logic::@93: scope:[game_logic] from game_logic::@27
ghost3_xfine = -- ghost3_xfine
to:game_logic::@94
game_logic::@28: scope:[game_logic] from game_logic::@27
game_logic::$128 = ghost3_direction == UP
game_logic::$129 = ! game_logic::$128
if(game_logic::$129) goto game_logic::@94
to:game_logic::@29
game_logic::@29: scope:[game_logic] from game_logic::@28
ghost3_yfine = -- ghost3_yfine
to:game_logic::@94
game_logic::@94: scope:[game_logic] from game_logic::@28 game_logic::@29 game_logic::@91 game_logic::@92 game_logic::@93
game_logic::$130 = ghost3_substep == 0
game_logic::$131 = ghost3_direction != STOP
game_logic::$132 = game_logic::$130 && game_logic::$131
if(game_logic::$132) goto game_logic::@95
to:game_logic::@101
game_logic::@95: scope:[game_logic] from game_logic::@94
ghost3_substep = 1
game_logic::$141 = ghost3_xfine == 1
if(game_logic::$141) goto game_logic::@100
to:game_logic::@105
game_logic::@101: scope:[game_logic] from game_logic::@94
ghost3_substep = 0
game_logic::$216 = 0 != ghost3_reverse
if(game_logic::$216) goto game_logic::@96
to:game_logic::@102
game_logic::@96: scope:[game_logic] from game_logic::@101
ghost3_direction = DIRECTION_REVERSE[ghost3_direction]
ghost3_reverse = 0
to:game_logic::@return
game_logic::@102: scope:[game_logic] from game_logic::@101
game_logic::ghost3_xtile#0 = ghost3_xfine / 2
game_logic::ghost3_ytile#0 = ghost3_yfine / 2
level_tile_directions::xtile#1 = game_logic::ghost3_xtile#0
level_tile_directions::ytile#1 = game_logic::ghost3_ytile#0
call level_tile_directions
level_tile_directions::return#4 = level_tile_directions::return#2
to:game_logic::@162
game_logic::@162: scope:[game_logic] from game_logic::@102
game_logic::ghost3_ytile#5 = phi( game_logic::@102/game_logic::ghost3_ytile#0 )
game_logic::ghost3_xtile#5 = phi( game_logic::@102/game_logic::ghost3_xtile#0 )
level_tile_directions::return#10 = phi( game_logic::@102/level_tile_directions::return#4 )
game_logic::open_directions1#0 = level_tile_directions::return#10
game_logic::open_directions1#1 = game_logic::open_directions1#0 & DIRECTION_ELIMINATE[ghost3_direction]
game_logic::$136 = ghosts_mode == FRIGHTENED
if(game_logic::$136) goto game_logic::@97
to:game_logic::@103
game_logic::@97: scope:[game_logic] from game_logic::@162
game_logic::open_directions1#2 = phi( game_logic::@162/game_logic::open_directions1#1 )
ghost3_direction = DIRECTION_SINGLE[game_logic::open_directions1#2]
to:game_logic::@return
game_logic::@103: scope:[game_logic] from game_logic::@162
game_logic::ghost3_ytile#4 = phi( game_logic::@162/game_logic::ghost3_ytile#5 )
game_logic::ghost3_xtile#4 = phi( game_logic::@162/game_logic::ghost3_xtile#5 )
game_logic::open_directions1#6 = phi( game_logic::@162/game_logic::open_directions1#1 )
game_logic::target_xtile1#0 = 0
game_logic::target_ytile1#0 = 0
game_logic::$137 = ghosts_mode == SCATTER
if(game_logic::$137) goto game_logic::@98
to:game_logic::@104
game_logic::@98: scope:[game_logic] from game_logic::@103
game_logic::ghost3_ytile#3 = phi( game_logic::@103/game_logic::ghost3_ytile#4 )
game_logic::ghost3_xtile#3 = phi( game_logic::@103/game_logic::ghost3_xtile#4 )
game_logic::open_directions1#5 = phi( game_logic::@103/game_logic::open_directions1#6 )
game_logic::target_xtile1#1 = 2
game_logic::target_ytile1#1 = 2
to:game_logic::@99
game_logic::@104: scope:[game_logic] from game_logic::@103
game_logic::ghost3_ytile#2 = phi( game_logic::@103/game_logic::ghost3_ytile#4 )
game_logic::ghost3_xtile#2 = phi( game_logic::@103/game_logic::ghost3_xtile#4 )
game_logic::open_directions1#4 = phi( game_logic::@103/game_logic::open_directions1#6 )
game_logic::$138 = pacman_xfine / 2
game_logic::target_xtile1#2 = game_logic::$138
game_logic::$139 = pacman_yfine / 2
game_logic::target_ytile1#2 = game_logic::$139
to:game_logic::@99
game_logic::@99: scope:[game_logic] from game_logic::@104 game_logic::@98
game_logic::target_ytile1#3 = phi( game_logic::@104/game_logic::target_ytile1#2, game_logic::@98/game_logic::target_ytile1#1 )
game_logic::target_xtile1#3 = phi( game_logic::@104/game_logic::target_xtile1#2, game_logic::@98/game_logic::target_xtile1#1 )
game_logic::ghost3_ytile#1 = phi( game_logic::@104/game_logic::ghost3_ytile#2, game_logic::@98/game_logic::ghost3_ytile#3 )
game_logic::ghost3_xtile#1 = phi( game_logic::@104/game_logic::ghost3_xtile#2, game_logic::@98/game_logic::ghost3_xtile#3 )
game_logic::open_directions1#3 = phi( game_logic::@104/game_logic::open_directions1#4, game_logic::@98/game_logic::open_directions1#5 )
choose_direction::open_directions#1 = game_logic::open_directions1#3
choose_direction::ghost_xtile#1 = game_logic::ghost3_xtile#1
choose_direction::ghost_ytile#1 = game_logic::ghost3_ytile#1
choose_direction::target_xtile#1 = game_logic::target_xtile1#3
choose_direction::target_ytile#1 = game_logic::target_ytile1#3
call choose_direction
choose_direction::return#1 = choose_direction::return#5
to:game_logic::@163
game_logic::@163: scope:[game_logic] from game_logic::@99
choose_direction::return#7 = phi( game_logic::@99/choose_direction::return#1 )
game_logic::$140 = choose_direction::return#7
ghost3_direction = game_logic::$140
to:game_logic::@return
game_logic::@100: scope:[game_logic] from game_logic::@95
ghost3_xfine = $61
to:game_logic::@return
game_logic::@105: scope:[game_logic] from game_logic::@95
game_logic::$142 = ghost3_xfine == $61
game_logic::$143 = ! game_logic::$142
if(game_logic::$143) goto game_logic::@return
to:game_logic::@106
game_logic::@106: scope:[game_logic] from game_logic::@105
ghost3_xfine = 1
to:game_logic::@return
game_logic::@107: scope:[game_logic] from game_logic::@90
ghost3_direction = UP
ghost3_xfine = 2
ghost3_yfine = $46
ghost3_substep = 0
to:game_logic::@return
game_logic::@108: scope:[game_logic] from game_logic::@4
ghost2_respawn = -- ghost2_respawn
game_logic::$165 = ghost2_respawn == 0
game_logic::$166 = ! game_logic::$165
if(game_logic::$166) goto game_logic::@return
to:game_logic::@125
game_logic::@30: scope:[game_logic] from game_logic::@4
game_logic::$146 = ghost2_direction == RIGHT
if(game_logic::$146) goto game_logic::@109
to:game_logic::@31
game_logic::@109: scope:[game_logic] from game_logic::@30
ghost2_xfine = ++ ghost2_xfine
to:game_logic::@112
game_logic::@31: scope:[game_logic] from game_logic::@30
game_logic::$147 = ghost2_direction == DOWN
if(game_logic::$147) goto game_logic::@110
to:game_logic::@32
game_logic::@110: scope:[game_logic] from game_logic::@31
ghost2_yfine = ++ ghost2_yfine
to:game_logic::@112
game_logic::@32: scope:[game_logic] from game_logic::@31
game_logic::$148 = ghost2_direction == LEFT
if(game_logic::$148) goto game_logic::@111
to:game_logic::@33
game_logic::@111: scope:[game_logic] from game_logic::@32
ghost2_xfine = -- ghost2_xfine
to:game_logic::@112
game_logic::@33: scope:[game_logic] from game_logic::@32
game_logic::$149 = ghost2_direction == UP
game_logic::$150 = ! game_logic::$149
if(game_logic::$150) goto game_logic::@112
to:game_logic::@34
game_logic::@34: scope:[game_logic] from game_logic::@33
ghost2_yfine = -- ghost2_yfine
to:game_logic::@112
game_logic::@112: scope:[game_logic] from game_logic::@109 game_logic::@110 game_logic::@111 game_logic::@33 game_logic::@34
game_logic::$151 = ghost2_substep == 0
game_logic::$152 = ghost2_direction != STOP
game_logic::$153 = game_logic::$151 && game_logic::$152
if(game_logic::$153) goto game_logic::@113
to:game_logic::@119
game_logic::@113: scope:[game_logic] from game_logic::@112
ghost2_substep = 1
game_logic::$162 = ghost2_xfine == 1
if(game_logic::$162) goto game_logic::@118
to:game_logic::@123
game_logic::@119: scope:[game_logic] from game_logic::@112
ghost2_substep = 0
game_logic::$217 = 0 != ghost2_reverse
if(game_logic::$217) goto game_logic::@114
to:game_logic::@120
game_logic::@114: scope:[game_logic] from game_logic::@119
ghost2_direction = DIRECTION_REVERSE[ghost2_direction]
ghost2_reverse = 0
to:game_logic::@return
game_logic::@120: scope:[game_logic] from game_logic::@119
game_logic::ghost2_xtile#0 = ghost2_xfine / 2
game_logic::ghost2_ytile#0 = ghost2_yfine / 2
level_tile_directions::xtile#2 = game_logic::ghost2_xtile#0
level_tile_directions::ytile#2 = game_logic::ghost2_ytile#0
call level_tile_directions
level_tile_directions::return#5 = level_tile_directions::return#2
to:game_logic::@164
game_logic::@164: scope:[game_logic] from game_logic::@120
game_logic::ghost2_ytile#5 = phi( game_logic::@120/game_logic::ghost2_ytile#0 )
game_logic::ghost2_xtile#5 = phi( game_logic::@120/game_logic::ghost2_xtile#0 )
level_tile_directions::return#11 = phi( game_logic::@120/level_tile_directions::return#5 )
game_logic::open_directions2#0 = level_tile_directions::return#11
game_logic::open_directions2#1 = game_logic::open_directions2#0 & DIRECTION_ELIMINATE[ghost2_direction]
game_logic::$157 = ghosts_mode == FRIGHTENED
if(game_logic::$157) goto game_logic::@115
to:game_logic::@121
game_logic::@115: scope:[game_logic] from game_logic::@164
game_logic::open_directions2#2 = phi( game_logic::@164/game_logic::open_directions2#1 )
ghost2_direction = DIRECTION_SINGLE[game_logic::open_directions2#2]
to:game_logic::@return
game_logic::@121: scope:[game_logic] from game_logic::@164
game_logic::ghost2_ytile#4 = phi( game_logic::@164/game_logic::ghost2_ytile#5 )
game_logic::ghost2_xtile#4 = phi( game_logic::@164/game_logic::ghost2_xtile#5 )
game_logic::open_directions2#6 = phi( game_logic::@164/game_logic::open_directions2#1 )
game_logic::target_xtile2#0 = 0
game_logic::target_ytile2#0 = 0
game_logic::$158 = ghosts_mode == SCATTER
if(game_logic::$158) goto game_logic::@116
to:game_logic::@122
game_logic::@116: scope:[game_logic] from game_logic::@121
game_logic::ghost2_ytile#2 = phi( game_logic::@121/game_logic::ghost2_ytile#4 )
game_logic::ghost2_xtile#2 = phi( game_logic::@121/game_logic::ghost2_xtile#4 )
game_logic::open_directions2#4 = phi( game_logic::@121/game_logic::open_directions2#6 )
game_logic::target_xtile2#1 = 2
game_logic::target_ytile2#1 = 2
to:game_logic::@117
game_logic::@122: scope:[game_logic] from game_logic::@121
game_logic::ghost2_ytile#3 = phi( game_logic::@121/game_logic::ghost2_ytile#4 )
game_logic::ghost2_xtile#3 = phi( game_logic::@121/game_logic::ghost2_xtile#4 )
game_logic::open_directions2#5 = phi( game_logic::@121/game_logic::open_directions2#6 )
game_logic::$159 = pacman_xfine / 2
game_logic::target_xtile2#2 = game_logic::$159
game_logic::$160 = pacman_yfine / 2
game_logic::target_ytile2#2 = game_logic::$160
to:game_logic::@117
game_logic::@117: scope:[game_logic] from game_logic::@116 game_logic::@122
game_logic::target_ytile2#3 = phi( game_logic::@116/game_logic::target_ytile2#1, game_logic::@122/game_logic::target_ytile2#2 )
game_logic::target_xtile2#3 = phi( game_logic::@116/game_logic::target_xtile2#1, game_logic::@122/game_logic::target_xtile2#2 )
game_logic::ghost2_ytile#1 = phi( game_logic::@116/game_logic::ghost2_ytile#2, game_logic::@122/game_logic::ghost2_ytile#3 )
game_logic::ghost2_xtile#1 = phi( game_logic::@116/game_logic::ghost2_xtile#2, game_logic::@122/game_logic::ghost2_xtile#3 )
game_logic::open_directions2#3 = phi( game_logic::@116/game_logic::open_directions2#4, game_logic::@122/game_logic::open_directions2#5 )
choose_direction::open_directions#2 = game_logic::open_directions2#3
choose_direction::ghost_xtile#2 = game_logic::ghost2_xtile#1
choose_direction::ghost_ytile#2 = game_logic::ghost2_ytile#1
choose_direction::target_xtile#2 = game_logic::target_xtile2#3
choose_direction::target_ytile#2 = game_logic::target_ytile2#3
call choose_direction
choose_direction::return#2 = choose_direction::return#5
to:game_logic::@165
game_logic::@165: scope:[game_logic] from game_logic::@117
choose_direction::return#8 = phi( game_logic::@117/choose_direction::return#2 )
game_logic::$161 = choose_direction::return#8
ghost2_direction = game_logic::$161
to:game_logic::@return
game_logic::@118: scope:[game_logic] from game_logic::@113
ghost2_xfine = $61
to:game_logic::@return
game_logic::@123: scope:[game_logic] from game_logic::@113
game_logic::$163 = ghost2_xfine == $61
game_logic::$164 = ! game_logic::$163
if(game_logic::$164) goto game_logic::@return
to:game_logic::@124
game_logic::@124: scope:[game_logic] from game_logic::@123
ghost2_xfine = 1
to:game_logic::@return
game_logic::@125: scope:[game_logic] from game_logic::@108
ghost2_direction = LEFT
ghost2_xfine = $60
ghost2_yfine = $46
ghost2_substep = 0
to:game_logic::@return
game_logic::@126: scope:[game_logic] from game_logic::@3
ghost1_respawn = -- ghost1_respawn
game_logic::$186 = ghost1_respawn == 0
game_logic::$187 = ! game_logic::$186
if(game_logic::$187) goto game_logic::@return
to:game_logic::@143
game_logic::@35: scope:[game_logic] from game_logic::@3
game_logic::$167 = ghost1_direction == RIGHT
if(game_logic::$167) goto game_logic::@127
to:game_logic::@36
game_logic::@127: scope:[game_logic] from game_logic::@35
ghost1_xfine = ++ ghost1_xfine
to:game_logic::@130
game_logic::@36: scope:[game_logic] from game_logic::@35
game_logic::$168 = ghost1_direction == DOWN
if(game_logic::$168) goto game_logic::@128
to:game_logic::@37
game_logic::@128: scope:[game_logic] from game_logic::@36
ghost1_yfine = ++ ghost1_yfine
to:game_logic::@130
game_logic::@37: scope:[game_logic] from game_logic::@36
game_logic::$169 = ghost1_direction == LEFT
if(game_logic::$169) goto game_logic::@129
to:game_logic::@38
game_logic::@129: scope:[game_logic] from game_logic::@37
ghost1_xfine = -- ghost1_xfine
to:game_logic::@130
game_logic::@38: scope:[game_logic] from game_logic::@37
game_logic::$170 = ghost1_direction == UP
game_logic::$171 = ! game_logic::$170
if(game_logic::$171) goto game_logic::@130
to:game_logic::@39
game_logic::@39: scope:[game_logic] from game_logic::@38
ghost1_yfine = -- ghost1_yfine
to:game_logic::@130
game_logic::@130: scope:[game_logic] from game_logic::@127 game_logic::@128 game_logic::@129 game_logic::@38 game_logic::@39
game_logic::$172 = ghost1_substep == 0
game_logic::$173 = ghost1_direction != STOP
game_logic::$174 = game_logic::$172 && game_logic::$173
if(game_logic::$174) goto game_logic::@131
to:game_logic::@137
game_logic::@131: scope:[game_logic] from game_logic::@130
ghost1_substep = 1
game_logic::$183 = ghost1_xfine == 1
if(game_logic::$183) goto game_logic::@136
to:game_logic::@141
game_logic::@137: scope:[game_logic] from game_logic::@130
ghost1_substep = 0
game_logic::$218 = 0 != ghost1_reverse
if(game_logic::$218) goto game_logic::@132
to:game_logic::@138
game_logic::@132: scope:[game_logic] from game_logic::@137
ghost1_direction = DIRECTION_REVERSE[ghost1_direction]
ghost1_reverse = 0
to:game_logic::@return
game_logic::@138: scope:[game_logic] from game_logic::@137
game_logic::ghost1_xtile#0 = ghost1_xfine / 2
game_logic::ghost1_ytile#0 = ghost1_yfine / 2
level_tile_directions::xtile#3 = game_logic::ghost1_xtile#0
level_tile_directions::ytile#3 = game_logic::ghost1_ytile#0
call level_tile_directions
level_tile_directions::return#6 = level_tile_directions::return#2
to:game_logic::@166
game_logic::@166: scope:[game_logic] from game_logic::@138
game_logic::ghost1_ytile#5 = phi( game_logic::@138/game_logic::ghost1_ytile#0 )
game_logic::ghost1_xtile#5 = phi( game_logic::@138/game_logic::ghost1_xtile#0 )
level_tile_directions::return#12 = phi( game_logic::@138/level_tile_directions::return#6 )
game_logic::open_directions3#0 = level_tile_directions::return#12
game_logic::open_directions3#1 = game_logic::open_directions3#0 & DIRECTION_ELIMINATE[ghost1_direction]
game_logic::$178 = ghosts_mode == FRIGHTENED
if(game_logic::$178) goto game_logic::@133
to:game_logic::@139
game_logic::@133: scope:[game_logic] from game_logic::@166
game_logic::open_directions3#2 = phi( game_logic::@166/game_logic::open_directions3#1 )
ghost1_direction = DIRECTION_SINGLE[game_logic::open_directions3#2]
to:game_logic::@return
game_logic::@139: scope:[game_logic] from game_logic::@166
game_logic::ghost1_ytile#4 = phi( game_logic::@166/game_logic::ghost1_ytile#5 )
game_logic::ghost1_xtile#4 = phi( game_logic::@166/game_logic::ghost1_xtile#5 )
game_logic::open_directions3#6 = phi( game_logic::@166/game_logic::open_directions3#1 )
game_logic::target_xtile3#0 = 0
game_logic::target_ytile3#0 = 0
game_logic::$179 = ghosts_mode == SCATTER
if(game_logic::$179) goto game_logic::@134
to:game_logic::@140
game_logic::@134: scope:[game_logic] from game_logic::@139
game_logic::ghost1_ytile#2 = phi( game_logic::@139/game_logic::ghost1_ytile#4 )
game_logic::ghost1_xtile#2 = phi( game_logic::@139/game_logic::ghost1_xtile#4 )
game_logic::open_directions3#4 = phi( game_logic::@139/game_logic::open_directions3#6 )
game_logic::target_xtile3#1 = 2
game_logic::target_ytile3#1 = 2
to:game_logic::@135
game_logic::@140: scope:[game_logic] from game_logic::@139
game_logic::ghost1_ytile#3 = phi( game_logic::@139/game_logic::ghost1_ytile#4 )
game_logic::ghost1_xtile#3 = phi( game_logic::@139/game_logic::ghost1_xtile#4 )
game_logic::open_directions3#5 = phi( game_logic::@139/game_logic::open_directions3#6 )
game_logic::$180 = pacman_xfine / 2
game_logic::target_xtile3#2 = game_logic::$180
game_logic::$181 = pacman_yfine / 2
game_logic::target_ytile3#2 = game_logic::$181
to:game_logic::@135
game_logic::@135: scope:[game_logic] from game_logic::@134 game_logic::@140
game_logic::target_ytile3#3 = phi( game_logic::@134/game_logic::target_ytile3#1, game_logic::@140/game_logic::target_ytile3#2 )
game_logic::target_xtile3#3 = phi( game_logic::@134/game_logic::target_xtile3#1, game_logic::@140/game_logic::target_xtile3#2 )
game_logic::ghost1_ytile#1 = phi( game_logic::@134/game_logic::ghost1_ytile#2, game_logic::@140/game_logic::ghost1_ytile#3 )
game_logic::ghost1_xtile#1 = phi( game_logic::@134/game_logic::ghost1_xtile#2, game_logic::@140/game_logic::ghost1_xtile#3 )
game_logic::open_directions3#3 = phi( game_logic::@134/game_logic::open_directions3#4, game_logic::@140/game_logic::open_directions3#5 )
choose_direction::open_directions#3 = game_logic::open_directions3#3
choose_direction::ghost_xtile#3 = game_logic::ghost1_xtile#1
choose_direction::ghost_ytile#3 = game_logic::ghost1_ytile#1
choose_direction::target_xtile#3 = game_logic::target_xtile3#3
choose_direction::target_ytile#3 = game_logic::target_ytile3#3
call choose_direction
choose_direction::return#3 = choose_direction::return#5
to:game_logic::@167
game_logic::@167: scope:[game_logic] from game_logic::@135
choose_direction::return#9 = phi( game_logic::@135/choose_direction::return#3 )
game_logic::$182 = choose_direction::return#9
ghost1_direction = game_logic::$182
to:game_logic::@return
game_logic::@136: scope:[game_logic] from game_logic::@131
ghost1_xfine = $61
to:game_logic::@return
game_logic::@141: scope:[game_logic] from game_logic::@131
game_logic::$184 = ghost1_xfine == $61
game_logic::$185 = ! game_logic::$184
if(game_logic::$185) goto game_logic::@return
to:game_logic::@142
game_logic::@142: scope:[game_logic] from game_logic::@141
ghost1_xfine = 1
to:game_logic::@return
game_logic::@143: scope:[game_logic] from game_logic::@126
ghost1_direction = DOWN
ghost1_xfine = $60
ghost1_yfine = 2
ghost1_substep = 0
to:game_logic::@return
game_logic::@144: scope:[game_logic] from game_logic::@2
pacman_xfine = ++ pacman_xfine
to:game_logic::@147
game_logic::@40: scope:[game_logic] from game_logic::@2
game_logic::$189 = pacman_direction == DOWN
if(game_logic::$189) goto game_logic::@145
to:game_logic::@41
game_logic::@145: scope:[game_logic] from game_logic::@40
pacman_yfine = ++ pacman_yfine
to:game_logic::@147
game_logic::@41: scope:[game_logic] from game_logic::@40
game_logic::$190 = pacman_direction == LEFT
if(game_logic::$190) goto game_logic::@146
to:game_logic::@42
game_logic::@146: scope:[game_logic] from game_logic::@41
pacman_xfine = -- pacman_xfine
to:game_logic::@147
game_logic::@42: scope:[game_logic] from game_logic::@41
game_logic::$191 = pacman_direction == UP
game_logic::$192 = ! game_logic::$191
if(game_logic::$192) goto game_logic::@147
to:game_logic::@43
game_logic::@43: scope:[game_logic] from game_logic::@42
pacman_yfine = -- pacman_yfine
to:game_logic::@147
game_logic::@147: scope:[game_logic] from game_logic::@144 game_logic::@145 game_logic::@146 game_logic::@42 game_logic::@43
game_logic::$193 = pacman_substep == 0
game_logic::$194 = pacman_direction != STOP
game_logic::$195 = game_logic::$193 && game_logic::$194
if(game_logic::$195) goto game_logic::@148
to:game_logic::@151
game_logic::@148: scope:[game_logic] from game_logic::@147
pacman_substep = 1
pacman_ch1_enabled = 1
game_logic::$207 = pacman_xfine == 1
if(game_logic::$207) goto game_logic::@150
to:game_logic::@154
game_logic::@151: scope:[game_logic] from game_logic::@147
pacman_substep = 0
game_logic::pacman_xtile1#0 = pacman_xfine / 2
game_logic::pacman_ytile1#0 = pacman_yfine / 2
level_tile_directions::xtile#4 = game_logic::pacman_xtile1#0
level_tile_directions::ytile#4 = game_logic::pacman_ytile1#0
call level_tile_directions
level_tile_directions::return#7 = level_tile_directions::return#2
to:game_logic::@168
game_logic::@168: scope:[game_logic] from game_logic::@151
level_tile_directions::return#13 = phi( game_logic::@151/level_tile_directions::return#7 )
game_logic::open_directions4#0 = level_tile_directions::return#13
game_logic::$199 = *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A) & $f
game_logic::$200 = game_logic::$199 ^ $f
game_logic::joy_directions#0 = game_logic::$200 * 4
game_logic::$202 = game_logic::joy_directions#0 != 0
game_logic::$203 = ! game_logic::$202
if(game_logic::$203) goto game_logic::@149
to:game_logic::@152
game_logic::@149: scope:[game_logic] from game_logic::@152 game_logic::@153 game_logic::@168
game_logic::open_directions4#1 = phi( game_logic::@152/game_logic::open_directions4#2, game_logic::@153/game_logic::open_directions4#3, game_logic::@168/game_logic::open_directions4#0 )
pacman_direction = pacman_direction & game_logic::open_directions4#1
to:game_logic::@return
game_logic::@152: scope:[game_logic] from game_logic::@168
game_logic::open_directions4#2 = phi( game_logic::@168/game_logic::open_directions4#0 )
game_logic::joy_directions#1 = phi( game_logic::@168/game_logic::joy_directions#0 )
game_logic::$204 = game_logic::joy_directions#1 & game_logic::open_directions4#2
game_logic::new_direction#0 = DIRECTION_SINGLE[game_logic::$204]
game_logic::$205 = game_logic::new_direction#0 != 0
game_logic::$206 = ! game_logic::$205
if(game_logic::$206) goto game_logic::@149
to:game_logic::@153
game_logic::@153: scope:[game_logic] from game_logic::@152
game_logic::open_directions4#3 = phi( game_logic::@152/game_logic::open_directions4#2 )
game_logic::new_direction#1 = phi( game_logic::@152/game_logic::new_direction#0 )
pacman_direction = game_logic::new_direction#1
to:game_logic::@149
game_logic::@150: scope:[game_logic] from game_logic::@148
pacman_xfine = $61
to:game_logic::@return
game_logic::@154: scope:[game_logic] from game_logic::@148
game_logic::$208 = pacman_xfine == $61
game_logic::$209 = ! game_logic::$208
if(game_logic::$209) goto game_logic::@return
to:game_logic::@155
game_logic::@155: scope:[game_logic] from game_logic::@154
pacman_xfine = 1
to:game_logic::@return
char choose_direction(char open_directions , char ghost_xtile , char ghost_ytile , char target_xtile , char target_ytile)
choose_direction: scope:[choose_direction] from game_logic::@117 game_logic::@135 game_logic::@81 game_logic::@99
choose_direction::open_directions#4 = phi( game_logic::@117/choose_direction::open_directions#2, game_logic::@135/choose_direction::open_directions#3, game_logic::@81/choose_direction::open_directions#0, game_logic::@99/choose_direction::open_directions#1 )
choose_direction::target_ytile#4 = phi( game_logic::@117/choose_direction::target_ytile#2, game_logic::@135/choose_direction::target_ytile#3, game_logic::@81/choose_direction::target_ytile#0, game_logic::@99/choose_direction::target_ytile#1 )
choose_direction::ghost_ytile#4 = phi( game_logic::@117/choose_direction::ghost_ytile#2, game_logic::@135/choose_direction::ghost_ytile#3, game_logic::@81/choose_direction::ghost_ytile#0, game_logic::@99/choose_direction::ghost_ytile#1 )
choose_direction::target_xtile#4 = phi( game_logic::@117/choose_direction::target_xtile#2, game_logic::@135/choose_direction::target_xtile#3, game_logic::@81/choose_direction::target_xtile#0, game_logic::@99/choose_direction::target_xtile#1 )
choose_direction::ghost_xtile#4 = phi( game_logic::@117/choose_direction::ghost_xtile#2, game_logic::@135/choose_direction::ghost_xtile#3, game_logic::@81/choose_direction::ghost_xtile#0, game_logic::@99/choose_direction::ghost_xtile#1 )
choose_direction::xdiff#0 = choose_direction::ghost_xtile#4 - choose_direction::target_xtile#4
choose_direction::ydiff#0 = choose_direction::ghost_ytile#4 - choose_direction::target_ytile#4
choose_direction::direction#0 = STOP
choose_direction::dist_min#0 = $ff
choose_direction::$2 = choose_direction::open_directions#4 & UP
choose_direction::$26 = 0 != choose_direction::$2
choose_direction::$3 = ! choose_direction::$26
if(choose_direction::$3) goto choose_direction::@1
to:choose_direction::@5
choose_direction::@1: scope:[choose_direction] from choose_direction choose_direction::@5 choose_direction::@6
choose_direction::direction#10 = phi( choose_direction/choose_direction::direction#0, choose_direction::@5/choose_direction::direction#12, choose_direction::@6/choose_direction::direction#1 )
choose_direction::dist_min#9 = phi( choose_direction/choose_direction::dist_min#0, choose_direction::@5/choose_direction::dist_min#5, choose_direction::@6/choose_direction::dist_min#1 )
choose_direction::xdiff#5 = phi( choose_direction/choose_direction::xdiff#0, choose_direction::@5/choose_direction::xdiff#1, choose_direction::@6/choose_direction::xdiff#8 )
choose_direction::ydiff#5 = phi( choose_direction/choose_direction::ydiff#0, choose_direction::@5/choose_direction::ydiff#1, choose_direction::@6/choose_direction::ydiff#8 )
choose_direction::open_directions#5 = phi( choose_direction/choose_direction::open_directions#4, choose_direction::@5/choose_direction::open_directions#8, choose_direction::@6/choose_direction::open_directions#9 )
choose_direction::$4 = choose_direction::open_directions#5 & DOWN
choose_direction::$27 = 0 != choose_direction::$4
choose_direction::$5 = ! choose_direction::$27
if(choose_direction::$5) goto choose_direction::@2
to:choose_direction::@7
choose_direction::@5: scope:[choose_direction] from choose_direction
choose_direction::direction#12 = phi( choose_direction/choose_direction::direction#0 )
choose_direction::open_directions#8 = phi( choose_direction/choose_direction::open_directions#4 )
choose_direction::dist_min#5 = phi( choose_direction/choose_direction::dist_min#0 )
choose_direction::xdiff#1 = phi( choose_direction/choose_direction::xdiff#0 )
choose_direction::ydiff#1 = phi( choose_direction/choose_direction::ydiff#0 )
choose_direction::$10 = choose_direction::ydiff#1 - 1
choose_direction::dist_up#0 = ABS[choose_direction::xdiff#1] + ABS[choose_direction::$10]
choose_direction::$12 = choose_direction::dist_up#0 < choose_direction::dist_min#5
choose_direction::$13 = ! choose_direction::$12
if(choose_direction::$13) goto choose_direction::@1
to:choose_direction::@6
choose_direction::@6: scope:[choose_direction] from choose_direction::@5
choose_direction::xdiff#8 = phi( choose_direction::@5/choose_direction::xdiff#1 )
choose_direction::ydiff#8 = phi( choose_direction::@5/choose_direction::ydiff#1 )
choose_direction::open_directions#9 = phi( choose_direction::@5/choose_direction::open_directions#8 )
choose_direction::dist_up#1 = phi( choose_direction::@5/choose_direction::dist_up#0 )
choose_direction::direction#1 = UP
choose_direction::dist_min#1 = choose_direction::dist_up#1
to:choose_direction::@1
choose_direction::@2: scope:[choose_direction] from choose_direction::@1 choose_direction::@7 choose_direction::@8
choose_direction::direction#8 = phi( choose_direction::@1/choose_direction::direction#10, choose_direction::@7/choose_direction::direction#11, choose_direction::@8/choose_direction::direction#2 )
choose_direction::dist_min#10 = phi( choose_direction::@1/choose_direction::dist_min#9, choose_direction::@7/choose_direction::dist_min#6, choose_direction::@8/choose_direction::dist_min#2 )
choose_direction::ydiff#6 = phi( choose_direction::@1/choose_direction::ydiff#5, choose_direction::@7/choose_direction::ydiff#2, choose_direction::@8/choose_direction::ydiff#9 )
choose_direction::xdiff#6 = phi( choose_direction::@1/choose_direction::xdiff#5, choose_direction::@7/choose_direction::xdiff#2, choose_direction::@8/choose_direction::xdiff#9 )
choose_direction::open_directions#6 = phi( choose_direction::@1/choose_direction::open_directions#5, choose_direction::@7/choose_direction::open_directions#10, choose_direction::@8/choose_direction::open_directions#11 )
choose_direction::$6 = choose_direction::open_directions#6 & LEFT
choose_direction::$28 = 0 != choose_direction::$6
choose_direction::$7 = ! choose_direction::$28
if(choose_direction::$7) goto choose_direction::@3
to:choose_direction::@9
choose_direction::@7: scope:[choose_direction] from choose_direction::@1
choose_direction::direction#11 = phi( choose_direction::@1/choose_direction::direction#10 )
choose_direction::open_directions#10 = phi( choose_direction::@1/choose_direction::open_directions#5 )
choose_direction::dist_min#6 = phi( choose_direction::@1/choose_direction::dist_min#9 )
choose_direction::xdiff#2 = phi( choose_direction::@1/choose_direction::xdiff#5 )
choose_direction::ydiff#2 = phi( choose_direction::@1/choose_direction::ydiff#5 )
choose_direction::$14 = choose_direction::ydiff#2 + 1
choose_direction::dist_down#0 = ABS[choose_direction::xdiff#2] + ABS[choose_direction::$14]
choose_direction::$16 = choose_direction::dist_down#0 < choose_direction::dist_min#6
choose_direction::$17 = ! choose_direction::$16
if(choose_direction::$17) goto choose_direction::@2
to:choose_direction::@8
choose_direction::@8: scope:[choose_direction] from choose_direction::@7
choose_direction::ydiff#9 = phi( choose_direction::@7/choose_direction::ydiff#2 )
choose_direction::xdiff#9 = phi( choose_direction::@7/choose_direction::xdiff#2 )
choose_direction::open_directions#11 = phi( choose_direction::@7/choose_direction::open_directions#10 )
choose_direction::dist_down#1 = phi( choose_direction::@7/choose_direction::dist_down#0 )
choose_direction::direction#2 = DOWN
choose_direction::dist_min#2 = choose_direction::dist_down#1
to:choose_direction::@2
choose_direction::@3: scope:[choose_direction] from choose_direction::@10 choose_direction::@2 choose_direction::@9
choose_direction::dist_min#11 = phi( choose_direction::@10/choose_direction::dist_min#3, choose_direction::@2/choose_direction::dist_min#10, choose_direction::@9/choose_direction::dist_min#7 )
choose_direction::ydiff#7 = phi( choose_direction::@10/choose_direction::ydiff#10, choose_direction::@2/choose_direction::ydiff#6, choose_direction::@9/choose_direction::ydiff#3 )
choose_direction::xdiff#7 = phi( choose_direction::@10/choose_direction::xdiff#10, choose_direction::@2/choose_direction::xdiff#6, choose_direction::@9/choose_direction::xdiff#3 )
choose_direction::direction#7 = phi( choose_direction::@10/choose_direction::direction#3, choose_direction::@2/choose_direction::direction#8, choose_direction::@9/choose_direction::direction#9 )
choose_direction::open_directions#7 = phi( choose_direction::@10/choose_direction::open_directions#12, choose_direction::@2/choose_direction::open_directions#6, choose_direction::@9/choose_direction::open_directions#13 )
choose_direction::$8 = choose_direction::open_directions#7 & RIGHT
choose_direction::$29 = 0 != choose_direction::$8
choose_direction::$9 = ! choose_direction::$29
if(choose_direction::$9) goto choose_direction::@4
to:choose_direction::@11
choose_direction::@9: scope:[choose_direction] from choose_direction::@2
choose_direction::direction#9 = phi( choose_direction::@2/choose_direction::direction#8 )
choose_direction::open_directions#13 = phi( choose_direction::@2/choose_direction::open_directions#6 )
choose_direction::dist_min#7 = phi( choose_direction::@2/choose_direction::dist_min#10 )
choose_direction::ydiff#3 = phi( choose_direction::@2/choose_direction::ydiff#6 )
choose_direction::xdiff#3 = phi( choose_direction::@2/choose_direction::xdiff#6 )
choose_direction::$18 = choose_direction::xdiff#3 - 1
choose_direction::dist_left#0 = ABS[choose_direction::$18] + ABS[choose_direction::ydiff#3]
choose_direction::$20 = choose_direction::dist_left#0 < choose_direction::dist_min#7
choose_direction::$21 = ! choose_direction::$20
if(choose_direction::$21) goto choose_direction::@3
to:choose_direction::@10
choose_direction::@10: scope:[choose_direction] from choose_direction::@9
choose_direction::ydiff#10 = phi( choose_direction::@9/choose_direction::ydiff#3 )
choose_direction::xdiff#10 = phi( choose_direction::@9/choose_direction::xdiff#3 )
choose_direction::open_directions#12 = phi( choose_direction::@9/choose_direction::open_directions#13 )
choose_direction::dist_left#1 = phi( choose_direction::@9/choose_direction::dist_left#0 )
choose_direction::direction#3 = LEFT
choose_direction::dist_min#3 = choose_direction::dist_left#1
to:choose_direction::@3
choose_direction::@4: scope:[choose_direction] from choose_direction::@11 choose_direction::@12 choose_direction::@3
choose_direction::direction#5 = phi( choose_direction::@11/choose_direction::direction#6, choose_direction::@12/choose_direction::direction#4, choose_direction::@3/choose_direction::direction#7 )
choose_direction::return#4 = choose_direction::direction#5
to:choose_direction::@return
choose_direction::@11: scope:[choose_direction] from choose_direction::@3
choose_direction::direction#6 = phi( choose_direction::@3/choose_direction::direction#7 )
choose_direction::dist_min#8 = phi( choose_direction::@3/choose_direction::dist_min#11 )
choose_direction::ydiff#4 = phi( choose_direction::@3/choose_direction::ydiff#7 )
choose_direction::xdiff#4 = phi( choose_direction::@3/choose_direction::xdiff#7 )
choose_direction::$22 = choose_direction::xdiff#4 + 1
choose_direction::dist_right#0 = ABS[choose_direction::$22] + ABS[choose_direction::ydiff#4]
choose_direction::$24 = choose_direction::dist_right#0 < choose_direction::dist_min#8
choose_direction::$25 = ! choose_direction::$24
if(choose_direction::$25) goto choose_direction::@4
to:choose_direction::@12
choose_direction::@12: scope:[choose_direction] from choose_direction::@11
choose_direction::dist_right#1 = phi( choose_direction::@11/choose_direction::dist_right#0 )
choose_direction::direction#4 = RIGHT
choose_direction::dist_min#4 = choose_direction::dist_right#1
to:choose_direction::@4
choose_direction::@return: scope:[choose_direction] from choose_direction::@4
choose_direction::return#10 = phi( choose_direction::@4/choose_direction::return#4 )
choose_direction::return#5 = choose_direction::return#10
return
to:@return
void spawn_all()
spawn_all: scope:[spawn_all] from game_logic::@68 game_logic::@69 game_logic::@70 game_logic::@71 gameplay_run::@9
ghosts_mode_count = 0
pacman_substep = 0
ghost1_substep = 0
ghost2_substep = 0
ghost3_substep = 0
ghost4_substep = 0
pacman_direction = STOP
ghost1_direction = STOP
ghost2_direction = STOP
ghost3_direction = STOP
ghost4_direction = STOP
pacman_xfine = $32
ghost1_xfine = $32
ghost2_xfine = $32
ghost3_xfine = $32
ghost4_xfine = $32
ghost1_yfine = $23
ghost2_yfine = $23
ghost3_yfine = $23
ghost4_yfine = $23
pacman_yfine = $3e
ghost1_respawn = $a
ghost2_respawn = $14
ghost3_respawn = $1e
ghost4_respawn = $28
to:spawn_all::@return
spawn_all::@return: scope:[spawn_all] from spawn_all
return
to:@return
void __start()
__start: scope:[__start] from
to:__start::__init1
__start::__init1: scope:[__start] from __start
pacman_ch1_enabled = 0
pacman_ch1_idx = 0
logic_tile_ptr = (volatile char *) 0
logic_tile_xcol = 0
logic_tile_yfine = 0
logic_tile_left_idx = 0
logic_tile_right_idx = 0
left_render_index_xcol = (char *) 0
left_canvas = (char *) 0
left_ypos_inc_offset = 0
rigt_render_index_xcol = (char *) 0
rigt_canvas = (char *) 0
rigt_ypos_inc_offset = 0
canvas_base_hi = 0
bobs_restore_base = 0
top_sprites_color = 0
top_sprites_mc = 0
side_sprites_color = 0
side_sprites_mc = 0
bottom_sprites_color = 0
bottom_sprites_mc = 0
pill_count = 0
pacman_wins = 0
pacman_lives = 3
music_play_next = 0
phase = 0
frame = 0
anim_frame_idx = 0
pacman_xfine = $2d
pacman_yfine = $23
pacman_direction = STOP
pacman_substep = 0
ghosts_mode = 1
ghosts_mode_count = 0
ghost1_xfine = $2d
ghost1_yfine = $23
ghost1_direction = STOP
ghost1_substep = 0
ghost1_reverse = 0
ghost1_respawn = 0
ghost2_xfine = $2d
ghost2_yfine = $23
ghost2_direction = STOP
ghost2_substep = 0
ghost2_reverse = 0
ghost2_respawn = 0
ghost3_xfine = $2d
ghost3_yfine = $23
ghost3_direction = STOP
ghost3_substep = 0
ghost3_reverse = 0
ghost3_respawn = 0
ghost4_xfine = $2d
ghost4_yfine = $23
ghost4_direction = STOP
ghost4_substep = 0
ghost4_reverse = 0
ghost4_respawn = 0
game_logic_substep = 0
game_playable = 0
to:__start::@1
__start::@1: scope:[__start] from __start::__init1
call main
to:__start::@2
__start::@2: scope:[__start] from __start::@1
to:__start::@return
__start::@return: scope:[__start] from __start::@2
return
to:@return
SYMBOL TABLE SSA
__constant char ABS[$100] = kickasm {{ .for(var i=0;i<$100;i++) {
.var x = (i<$80)?i:($100-i);
.byte abs(x)
}
}}
__constant char ABS_POST[1] = { 0 }
__constant char ABS_PRE[1] = { 1 }
__constant char * const BANK_1 = (char *)$4000
__constant char * const BANK_2 = (char *)$c000
__constant const char BLACK = 0
__constant const char BLUE = 6
__constant char BOB_GRAPHICS_CRUNCHED[] = kickasm( uses BOB_MASK_LEFT) {{ .modify B2() {
.pc = BOB_MASK_LEFT "BOB GRAPHICS TABLES"
.var bobs_pic = LoadPicture("pacman-bobs.png", List().add($000000, $352879, $bfce72, $883932))
// TABLE char BOB_MASK_LEFT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,48+scroll*6+row)
}
// TABLE char BOB_MASK_RIGT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,24+scroll*6+row)
.for(var blue=0; blue<8;blue++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,48+scroll*6+row)
}
// TABLE char BOB_PIXEL_LEFT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+pac*2,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+ghost*2,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+ghost*2,48+scroll*6+row)
}
// TABLE char BOB_PIXEL_RIGT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+pac*2,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+ghost*2,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+ghost*2,48+scroll*6+row)
}
}
}}
__constant char * const BOB_MASK_LEFT = (char *)$5400
__constant char * const BOB_MASK_RIGT = BOB_MASK_LEFT+BOB_ROW_SIZE*6
__constant char * const BOB_PIXEL_LEFT = BOB_MASK_LEFT+BOB_ROW_SIZE*$c
__constant char * const BOB_PIXEL_RIGT = BOB_MASK_LEFT+BOB_ROW_SIZE*$12
__constant const char BOB_ROW_SIZE = $80
__constant char * const BORDER_COLOR = (char *)$d020
__constant char BYTEBOOZER[] = kickasm {{ .const B2_ZP_BASE = $fc
#import "byteboozer_decrunch.asm"
}}
__constant char CHASE = 0
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *)$dc00
__constant char * const CIA1_INTERRUPT = (char *)$dc0d
__constant struct MOS6526_CIA * const CIA2 = (struct MOS6526_CIA *)$dd00
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant char DIRECTION::DOWN = 8
__constant char DIRECTION::LEFT = $10
__constant char DIRECTION::RIGHT = $20
__constant char DIRECTION::STOP = 0
__constant char DIRECTION::UP = 4
__constant char DIRECTION_ELIMINATE[$21] = { $ff, 0, 0, 0, $f7, 0, 0, 0, $fb, 0, 0, 0, 0, 0, 0, 0, $df, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, $ef }
__constant char DIRECTION_REVERSE[$21] = { 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, $20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, $10 }
__constant char DIRECTION_SINGLE[$40] = { 0, 0, 0, 0, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $10, $10, $10, $10, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $20, $20, $20, $20, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $10, $10, $10, $10, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4 }
__constant char DOWN = 8
__constant char EMPTY = 0
__constant char FRIGHTENED = 2
__constant char * const GAMEOVER_GFX = (char *)$a700
__constant char GAMEOVER_GFX_CRUNCHED[] = kickasm( uses GAMEOVER_GFX) {{ .modify B2() {
.pc = GAMEOVER_GFX "GAMEOVER GRAPHICS" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_gameover = LoadPicture("pacman-gameover.png", List().add($000000, $352879, $bfce72, $883932))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<25; ypos++) {
.byte pic_gameover.getMulticolorByte(xcol,ypos)
}
}
}
}}
__constant char GHOSTS_MODE::CHASE = 0
__constant char GHOSTS_MODE::FRIGHTENED = 2
__constant char GHOSTS_MODE::SCATTER = 1
__constant void (** const HARDWARE_IRQ)() = (void (**)())$fffe
__constant char * const INTRO_MUSIC = (char *)$3000
__constant char INTRO_MUSIC_CRUNCHED[] = kickasm( uses INTRO_MUSIC) {{ .modify B2() {
.pc = INTRO_MUSIC "INTRO MUSIC"
.const music = LoadBinary("pacman-2chn-simpler.prg", BF_C64FILE)
.fill music.getSize(), music.get(i)
}
}}
__constant const unsigned int INTRO_MUSIC_CRUNCHED_SIZE = $600
__constant char * const INTRO_MUSIC_CRUNCHED_UPPER = (char *)$a700
__constant const char IRQ_RASTER = 1
__constant const char IRQ_SCREEN_TOP_LINE = 5
__constant char * const IRQ_STATUS = (char *)$d019
__constant char LEFT = $10
__constant char * const LEVEL_TILES = (char *)$4800
__constant char LEVEL_TILES_CRUNCHED[] = kickasm( uses LEVEL_TILES) {{ .modify B2() {
.pc = LEVEL_TILES "LEVEL TILE GRAPHICS"
.var pic_level = LoadPicture("pacman-tiled.png", List().add($000000, $352879, $bfce72, $883932))
// Maps the tile pixels (a 16 bit number) to the tile ID
.var TILESET = Hashtable()
// Maps the tile ID to the pixels (a 16 bit number)
.var TILESET_BY_ID = Hashtable()
// Tile ID 0 is empty
.eval TILESET.put(0, 0)
.eval TILESET_BY_ID.put(0, 0)
.align $100
// TABLE LEVEL_TILES[64*37]
// The level is 50 tiles * 37 tiles. The first tile line are special half-tiles (where only the last 2 pixel rows are shown).
// The level data is organized as 37 rows of 64 bytes containing tile IDs. (the last 14 are unused to achieve 64-byte alignment)
.for(var ytile=0; ytile<37; ytile++) {
.for(var xtile=0; xtile<50; xtile++) {
// Find the tile pixels (4x4 px - 16 bits)
.var pixels = 0;
.for(var i=0; i<4; i++) {
.var pix = pic_level.getMulticolorByte(xtile/2,ytile*4+i)
.if((xtile&1)==0) {
// left nibble
.eval pix = floor(pix / $10)
} else {
// right nibble
.eval pix = pix & $0f
}
.eval pixels = pixels*$10 + pix
}
.var tile_id = 0
.if(TILESET.containsKey(pixels)) {
.eval tile_id = TILESET.get(pixels)
} else {
.eval tile_id = TILESET.keys().size()
.eval TILESET.put(pixels, tile_id)
.eval TILESET_BY_ID.put(tile_id, pixels)
// .print "tile "+tile_id+" : "+toHexString(pixels,4)
}
// Output the tile ID
.byte tile_id
}
.fill 14, 0
}
.align $100
// TABLE char TILES_LEFT[0x80]
// The left tile graphics. A tile is 4x4 px. The left tiles contain tile graphics for the 4 left bits of a char. Each tile is 4 bytes.
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
.byte pix<<4
.eval pixels = pixels << 4
}
}
.align $80
// TABLE char TILES_RIGHT[0x80]
// The right tile graphics. A tile is 4x4 px. The right tiles contain tile graphics for the 4 right bits of a char. Each tile is 4 bytes.
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
.byte pix
.eval pixels = pixels << 4
}
}
.align $80
// TABLE char TILES_TYPE[0x20]
// 0: empty (all black), 1:pill, 2:powerup, 4: wall (contains blue pixels)
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.var tile_type = 0
.if(pixels==$0220) .eval tile_type=1 // 1:pill
.if(pixels==$aaaa) .eval tile_type=2 // 2:powerup
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
// Detect wall - any blue pixels (%01)
.if( (pix&%0100)==%0100) .eval tile_type = 4; // 4:wall
.if( (pix&%0001)==%0001) .eval tile_type = 4; // 4:wall
.eval pixels = pixels << 4
}
.byte tile_type
//.print "tile "+tile_id+" gfx "+toHexString(TILESET_BY_ID.get(tile_id),4) + " type "+tile_type
}
}
}}
__constant char * const LEVEL_TILES_DIRECTIONS = (char *)$3e00
__constant unsigned int LEVEL_YTILE_OFFSET[$25] = { 0, $40, $80, $c0, $100, $140, $180, $1c0, $200, $240, $280, $2c0, $300, $340, $380, $3c0, $400, $440, $480, $4c0, $500, $540, $580, $5c0, $600, $640, $680, $6c0, $700, $740, $780, $7c0, $800, $840, $880, $8c0, $900 }
__constant char LOGIC_CODE_CRUNCHED[] = kickasm( uses bobs_xcol uses bobs_yfine uses bobs_bob_id uses bobs_restore uses RENDER_INDEX uses RENDER_OFFSET_CANVAS_LO uses RENDER_OFFSET_CANVAS_HI uses RENDER_OFFSET_YPOS_INC uses SIZE_BOB_RESTORE uses BOB_ROW_SIZE uses NUM_BOBS uses left_render_index_xcol uses left_canvas uses left_ypos_inc_offset uses rigt_render_index_xcol uses rigt_canvas uses rigt_ypos_inc_offset uses BOB_MASK_LEFT uses BOB_PIXEL_LEFT uses BOB_MASK_RIGT uses BOB_PIXEL_RIGT uses canvas_base_hi uses bobs_restore_base uses RENDER_YPOS_INC uses logic_tile_ptr uses logic_tile_xcol uses logic_tile_yfine uses logic_tile_left_idx uses logic_tile_right_idx) {{ .macro LOGIC_BEGIN(cycles) {
.byte cycles
}
.macro LOGIC_END() {
.byte $ff
}
.modify B2() {
.pc = LOGIC_CODE_UNMERGED "LOGIC CODE UNMERGED"
LOGIC_BEGIN(2)
clc
LOGIC_END()
// ******************************************
// Restores the canvas under the rendered bobs
// ******************************************
.for(var bob=NUM_BOBS-1;bob>=0; bob--) {
//LOGIC_BEGIN(6)
//inc $d021
//LOGIC_END()
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
// char * volatile left_canvas = *((char**)&bob_restore[0]);
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+0,x
sta.z left_canvas
LOGIC_END()
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+1,x
sta.z left_canvas+1
LOGIC_END()
// char left_ypos_inc_offset = bob_restore[2];
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+2,x
sta.z left_ypos_inc_offset
LOGIC_END()
// char * volatile rigt_canvas = *((char**)&bob_restore[3]);
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+3,x
sta.z rigt_canvas
LOGIC_END()
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+4,x
sta.z rigt_canvas+1
LOGIC_END()
// char rigt_ypos_inc_offset = bob_restore[5];
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+5,x
sta.z rigt_ypos_inc_offset
LOGIC_END()
// Restore Bob Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<6;row++) {
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
//rigt_canvas += RENDER_YPOS_INC[rigt_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(5)
inc.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z rigt_canvas
sta.z rigt_canvas
lda.z rigt_canvas+1
adc #0
sta.z rigt_canvas+1
LOGIC_END()
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
// *left_canvas = bob_restore[6] ;
LOGIC_BEGIN(10)
lda bobs_restore+SIZE_BOB_RESTORE*bob+6+row,x
sta (left_canvas),y
LOGIC_END()
// *rigt_canvas = bob_restore[7];
LOGIC_BEGIN(10)
lda bobs_restore+SIZE_BOB_RESTORE*bob+12+row,x
sta (rigt_canvas),y
LOGIC_END()
}
}
// ******************************************
// Render two tiles on the canvas
// ******************************************
// y==0 from bob restore
LOGIC_BEGIN(12)
// char tile_left_idx = 4 * logic_tile_ptr[0];
lda (logic_tile_ptr),y
asl
asl
sta logic_tile_left_idx
LOGIC_END()
// char logic_tile_right_idx = 4 * logic_tile_ptr[1];
LOGIC_BEGIN(2)
iny
LOGIC_END()
LOGIC_BEGIN(12)
lda (logic_tile_ptr),y
asl
asl
sta logic_tile_right_idx
LOGIC_END()
// char * render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, ytile*2 };
LOGIC_BEGIN(8)
lda #>RENDER_INDEX
adc logic_tile_xcol
sta.z left_render_index_xcol+1
LOGIC_END()
LOGIC_BEGIN(6)
lda logic_tile_yfine
sta.z left_render_index_xcol
LOGIC_END()
// unsigned int canvas_offset = {render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] };
// char * left_canvas = canvas_base_hi*$100 + canvas_offset;
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_LO
LOGIC_END()
LOGIC_BEGIN(8)
lda (left_render_index_xcol),y
sta.z left_canvas
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_HI
LOGIC_END()
LOGIC_BEGIN(11)
lda (left_render_index_xcol),y
adc canvas_base_hi
sta.z left_canvas+1
LOGIC_END()
// char left_ypos_inc_offset = render_index_xcol[RENDER_OFFSET_YPOS_INC];
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_YPOS_INC
LOGIC_END()
LOGIC_BEGIN(8)
lda (left_render_index_xcol),y
sta.z left_ypos_inc_offset
LOGIC_END()
// Render Tile Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<4;row++) {
// *left_canvas = tile_left_pixels[y] | tile_right_pixels[y];
LOGIC_BEGIN(3)
ldx logic_tile_left_idx
LOGIC_END()
LOGIC_BEGIN(17)
lda TILES_LEFT+row,x
ldx logic_tile_right_idx
ora TILES_RIGHT+row,x
sta (left_canvas),y
LOGIC_END()
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
}
// ******************************************
// Renders the BOBs at the given positions
// ******************************************
.for(var bob=0;bob<NUM_BOBS; bob++) {
// char * left_render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, yfine };
// char * rigt_render_index_xcol = (char*){ (>RENDER_INDEX) + xcol+1, yfine };
//LOGIC_BEGIN(6)
//inc $d021
//LOGIC_END()
LOGIC_BEGIN(14)
lda #>RENDER_INDEX
adc bobs_xcol+bob
sta.z left_render_index_xcol+1
adc #1
sta.z rigt_render_index_xcol+1
LOGIC_END()
LOGIC_BEGIN(10)
lda bobs_yfine+bob
sta.z left_render_index_xcol
sta.z rigt_render_index_xcol
LOGIC_END()
// char * left_canvas = (char*){ left_render_index_xcol[85], left_render_index_xcol[0] };
// bob_restore[0] = <left_canvas; bob_restore[1] = >left_canvas;
// char * rigt_canvas = (char*){ rigt_render_index_xcol[85], rigt_render_index_xcol[0] };
// bob_restore[3] = <rigt_canvas; bob_restore[4] = >rigt_canvas;
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_LO
LOGIC_END()
LOGIC_BEGIN(13)
lda (left_render_index_xcol),y
sta.z left_canvas
sta bobs_restore+SIZE_BOB_RESTORE*bob+0,x
LOGIC_END()
LOGIC_BEGIN(13)
lda (rigt_render_index_xcol),y
sta.z rigt_canvas
sta bobs_restore+SIZE_BOB_RESTORE*bob+3,x
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_HI
LOGIC_END()
LOGIC_BEGIN(16)
lda (left_render_index_xcol),y
adc canvas_base_hi
sta.z left_canvas+1
sta bobs_restore+SIZE_BOB_RESTORE*bob+1,x
LOGIC_END()
LOGIC_BEGIN(16)
lda (rigt_render_index_xcol),y
adc canvas_base_hi
sta.z rigt_canvas+1
sta bobs_restore+SIZE_BOB_RESTORE*bob+4,x
LOGIC_END()
// char left_ypos_inc_offset = left_render_index_xcol[170];
// bob_restore[2] = left_ypos_inc_offset;
// char rigt_ypos_inc_offset = rigt_render_index_xcol[170];
// bob_restore[5] = rigt_ypos_inc_offset;
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_YPOS_INC
LOGIC_END()
LOGIC_BEGIN(13)
lda (left_render_index_xcol),y
sta.z left_ypos_inc_offset
sta bobs_restore+SIZE_BOB_RESTORE*bob+2,x
LOGIC_END()
LOGIC_BEGIN(13)
lda (rigt_render_index_xcol),y
sta.z rigt_ypos_inc_offset
sta bobs_restore+SIZE_BOB_RESTORE*bob+5,x
LOGIC_END()
// Render Bob Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<6;row++) {
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
//rigt_canvas += RENDER_YPOS_INC[rigt_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z rigt_canvas
sta.z rigt_canvas
lda.z rigt_canvas+1
adc #0
sta.z rigt_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z rigt_ypos_inc_offset
LOGIC_END()
// bob_restore[6] = *left_canvas;
// *left_canvas = *left_canvas & BOB_MASK_LEFT_0[bob_id] | BOB_PIXEL_LEFT_0[bob_id];
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
LOGIC_BEGIN(10)
lda (left_canvas),y
sta bobs_restore+SIZE_BOB_RESTORE*bob+6+row,x
LOGIC_END()
LOGIC_BEGIN(10)
lda (rigt_canvas),y
sta bobs_restore+SIZE_BOB_RESTORE*bob+12+row,x
LOGIC_END()
LOGIC_BEGIN(4)
ldx bobs_bob_id+bob
LOGIC_END()
LOGIC_BEGIN(19)
lda (left_canvas),y
and BOB_MASK_LEFT+row*BOB_ROW_SIZE,x
ora BOB_PIXEL_LEFT+row*BOB_ROW_SIZE,x
sta (left_canvas),y
LOGIC_END()
// bob_restore[7] = *rigt_canvas;
// *rigt_canvas = *rigt_canvas & BOB_MASK_RIGT_0[bob_id] | BOB_PIXEL_RIGT_0[bob_id];
LOGIC_BEGIN(19)
lda (rigt_canvas),y
and BOB_MASK_RIGT+row*BOB_ROW_SIZE,x
ora BOB_PIXEL_RIGT+row*BOB_ROW_SIZE,x
sta (rigt_canvas),y
LOGIC_END()
}
}
//LOGIC_BEGIN(6)
//lda #0
//sta $d021
//LOGIC_END()
LOGIC_BEGIN(0) // end of logic code
}
}}
__constant char * const LOGIC_CODE_UNMERGED = (char *)$e000
__constant const char NUM_BOBS = 5
__constant const unsigned int OFFSET_SPRITE_PTRS = $3f8
__constant char OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
__constant char OFFSET_STRUCT_MOS6526_CIA_PORT_A = 0
__constant char OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
__constant char OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
__constant char OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
__constant char OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
__constant char OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
__constant char OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE = $1a
__constant char OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS = $19
__constant char OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
__constant char OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR = $27
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y = 1
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR = $28
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y = 3
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y = 5
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y = 7
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y = 9
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y = $b
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y = $d
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y = $f
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE = $15
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X = $1d
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC = $1c
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1 = $25
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2 = $26
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB = $10
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY = 5
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL = 4
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_FREQ = 0
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH = 2
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE = 6
__constant char OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE = $18
__constant char PACMAN_CH1_CONTROL[] = { $21, $21, $21, $21, $21, $21, 0, 0, 0, 0, 0, $21, $21, $21, $21, $21, $21, 0, 0, 0, 0, 0 }
__constant char PACMAN_CH1_FREQ_HI[] = { $23, $1d, $1a, $17, $15, $12, 0, 0, 0, 0, 0, $19, $1a, $1c, $1d, $20, $23, 0, 0, 0, 0, 0 }
__constant char PILL = 1
__constant char POWERUP = 2
__constant char * const PROCPORT = (char *)1
__constant char * const PROCPORT_DDR = (char *)0
__constant const char PROCPORT_DDR_MEMORY_MASK = 7
__constant const char PROCPORT_RAM_ALL = 0
__constant const char PROCPORT_RAM_IO = 5
__constant char * const RASTER = (char *)$d012
__constant char * const RASTER_CODE = (char *)$8000
__constant char RASTER_CODE_CRUNCHED[] = kickasm( uses VICII_CONTROL2 uses BORDER_COLOR uses RASTER_CODE_UNMERGED uses side_sprites_color uses side_sprites_mc uses bottom_sprites_color uses bottom_sprites_mc) {{ .macro RASTER_CYCLES(cycles) {
.byte $ff, cycles
}
.modify B2() {
.pc = RASTER_CODE_UNMERGED "RASTER CODE UNMERGED"
RASTER_CYCLES(29)
// Line 7 cycle 44
// Raster Line
.var raster_line = 7
// Line in the sprite
.var sprite_line = 20
// Current sprite ypos
.var sprite_ypos = 7
// Current sprite screen (graphics bank not important since sprite layout in the banks is identical)
.var sprite_screen = SCREENS_1
.var available_cycles = 0;
.for(var i=0;i<293;i++) {
// Line cycle count
.var line_cycles = 46
.if(raster_line>=70 && raster_line<238) {
// Only 2 sprites on these lines - so more cycles available
.eval line_cycles = 58
}
// Create 9th sprite by moving sprite 0
.if(mod(raster_line,2)==0) {
lda #$6f
sta $d000
} else {
lda #$e7
sta $d000
}
.eval line_cycles -= 6;
lda #$8
// Cycle 50. LSR abs is a 6 cycle RWM instruction.
lsr VICII_CONTROL2
sta VICII_CONTROL2
.eval line_cycles -= 12;
.eval raster_line++
.eval sprite_line++
.if(sprite_line==21) {
.eval sprite_line = 0
.eval sprite_ypos += 21
}
// Set sprite single-color mode on splash
.if(raster_line==53) {
lda side_sprites_mc
sta $d01c
lda side_sprites_color
sta $d027
sta $d028
.eval line_cycles -= 18
}
// Set sprite multi-color mode on splash
.if(raster_line==248) {
lda bottom_sprites_mc
sta $d01c
lda bottom_sprites_color
sta $d027
sta $d028
.eval line_cycles -= 18
//.print "raster:"+raster_line+" multi-color"
}
// Open top border
.if(raster_line==55) {
lda #VICII_RSEL|VICII_ECM|VICII_BMM|7
sta VICII_CONTROL1
.eval line_cycles -= 6
//.print "raster:"+raster_line+" top border rsel=1"
}
// Open bottom border
.if(raster_line==250) {
lda #VICII_ECM|VICII_BMM|7 // DEN=0, RSEL=0
sta VICII_CONTROL1
.eval line_cycles -= 6
//.print "raster:"+raster_line+" bottom border rsel=0"
}
// Move sprites down
.if(sprite_line>=2 && sprite_line<=9) {
.if(sprite_ypos<300) {
.var sprite_id = sprite_line-2
.if(sprite_id==0 || sprite_id==1 || sprite_ypos<=55 || sprite_ypos>=(246-21)) {
lda #sprite_ypos
sta SPRITES_YPOS+2*sprite_id
.eval line_cycles -= 6;
//.print "raster:"+raster_line+" sprite:"+sprite_id+" ypos:"+sprite_ypos
}
}
}
// Change sprite data
.if(sprite_line==20) {
.eval sprite_screen += $400
lda #sprite_screen/$40
sta VICII_MEMORY
.eval line_cycles -= 6
//.print "raster:"+raster_line+" sprite data $"+toHexString(sprite_screen)
}
// Spend the rest of the cycles on NOPS
.if(line_cycles<0 || line_cycles==1) .error "Too many cycles spent on line "+raster_line
.if(line_cycles>0) {
//.print "raster:"+raster_line+" cycles $"+toHexString(line_cycles)
RASTER_CYCLES(line_cycles)
.eval line_cycles -= line_cycles
.eval available_cycles += line_cycles
}
}
//.print "Available cycles: "+available_cycles
lda #$6f
sta $d000
lda #$8
// Cycle 50. LSR abs is a 6 cycle RWM instruction.
lsr VICII_CONTROL2
sta VICII_CONTROL2
RASTER_CYCLES(00) // End of raster code
}
}}
__constant char * const RASTER_CODE_UNMERGED = (char *)$6000
__constant const char RED = 2
__constant char * const RENDER_INDEX = (char *)$b600
__constant const char RENDER_OFFSET_CANVAS_HI = $50
__constant const char RENDER_OFFSET_CANVAS_LO = 0
__constant const char RENDER_OFFSET_YPOS_INC = $a0
__constant char *RENDER_XCOLS[$1a] = { 0, 1, 2, $400, $401, $402, $800, $801, $802, $c00, $c01, $c02, $1000, $1001, $1002, $1400, $1401, $1402, $1800, $1801, $1802, $1c00, $1c01, $1c02, 0, 0 }
__constant unsigned int RENDER_YPOS[$95] = { (unsigned int)0+0, (unsigned int)0+0, (unsigned int)0+0, (unsigned int)0+6, (unsigned int)0+$c, (unsigned int)0+$12, (unsigned int)0+$18, (unsigned int)0+$1e, (unsigned int)0+$24, (unsigned int)0+$2a, (unsigned int)0+$30, (unsigned int)0+$36, (unsigned int)0+$3c, (unsigned int)$40+3, (unsigned int)$40+9, (unsigned int)$40+$f, (unsigned int)$40+$15, (unsigned int)$40+$1b, (unsigned int)$40+$21, (unsigned int)$40+$27, (unsigned int)$40+$2d, (unsigned int)$40+$33, (unsigned int)$40+$39, (unsigned int)$80+0, (unsigned int)$80+6, (unsigned int)$80+$c, (unsigned int)$80+$12, (unsigned int)$80+$18, (unsigned int)$80+$1e, (unsigned int)$80+$24, (unsigned int)$80+$2a, (unsigned int)$80+$30, (unsigned int)$80+$36, (unsigned int)$80+$3c, (unsigned int)$c0+3, (unsigned int)$c0+9, (unsigned int)$c0+$f, (unsigned int)$c0+$15, (unsigned int)$c0+$1b, (unsigned int)$c0+$21, (unsigned int)$c0+$27, (unsigned int)$c0+$2d, (unsigned int)$c0+$33, (unsigned int)$c0+$39, (unsigned int)$100+0, (unsigned int)$100+6, (unsigned int)$100+$c, (unsigned int)$100+$12, (unsigned int)$100+$18, (unsigned int)$100+$1e, (unsigned int)$100+$24, (unsigned int)$100+$2a, (unsigned int)$100+$30, (unsigned int)$100+$36, (unsigned int)$100+$3c, (unsigned int)$140+3, (unsigned int)$140+9, (unsigned int)$140+$f, (unsigned int)$140+$15, (unsigned int)$140+$1b, (unsigned int)$140+$21, (unsigned int)$140+$27, (unsigned int)$140+$2d, (unsigned int)$140+$33, (unsigned int)$140+$39, (unsigned int)$180+0, (unsigned int)$180+6, (unsigned int)$180+$c, (unsigned int)$180+$12, (unsigned int)$180+$18, (unsigned int)$180+$1e, (unsigned int)$180+$24, (unsigned int)$180+$2a, (unsigned int)$180+$30, (unsigned int)$180+$36, (unsigned int)$180+$3c, (unsigned int)$1c0+3, (unsigned int)$1c0+9, (unsigned int)$1c0+$f, (unsigned int)$1c0+$15, (unsigned int)$1c0+$1b, (unsigned int)$1c0+$21, (unsigned int)$1c0+$27, (unsigned int)$1c0+$2d, (unsigned int)$1c0+$33, (unsigned int)$1c0+$39, (unsigned int)$200+0, (unsigned int)$200+6, (unsigned int)$200+$c, (unsigned int)$200+$12, (unsigned int)$200+$18, (unsigned int)$200+$1e, (unsigned int)$200+$24, (unsigned int)$200+$2a, (unsigned int)$200+$30, (unsigned int)$200+$36, (unsigned int)$200+$3c, (unsigned int)$240+3, (unsigned int)$240+9, (unsigned int)$240+$f, (unsigned int)$240+$15, (unsigned int)$240+$1b, (unsigned int)$240+$21, (unsigned int)$240+$27, (unsigned int)$240+$2d, (unsigned int)$240+$33, (unsigned int)$240+$39, (unsigned int)$280+0, (unsigned int)$280+6, (unsigned int)$280+$c, (unsigned int)$280+$12, (unsigned int)$280+$18, (unsigned int)$280+$1e, (unsigned int)$280+$24, (unsigned int)$280+$2a, (unsigned int)$280+$30, (unsigned int)$280+$36, (unsigned int)$280+$3c, (unsigned int)$2c0+3, (unsigned int)$2c0+9, (unsigned int)$2c0+$f, (unsigned int)$2c0+$15, (unsigned int)$2c0+$1b, (unsigned int)$2c0+$21, (unsigned int)$2c0+$27, (unsigned int)$2c0+$2d, (unsigned int)$2c0+$33, (unsigned int)$2c0+$39, (unsigned int)$300+0, (unsigned int)$300+6, (unsigned int)$300+$c, (unsigned int)$300+$12, (unsigned int)$300+$18, (unsigned int)$300+$1e, (unsigned int)$300+$24, (unsigned int)$300+$2a, (unsigned int)$300+$30, (unsigned int)$300+$36, (unsigned int)$300+$3c, (unsigned int)$340+3, (unsigned int)$340+9, (unsigned int)$340+$f, (unsigned int)$340+$15, (unsigned int)$340+$1b, (unsigned int)$340+$21, (unsigned int)$340+$27, (unsigned int)$340+$2d, (unsigned int)$340+$33, (unsigned int)$340+$39 }
__constant unsigned int RENDER_YPOS_9TH[$95] = { (unsigned int)0+3, (unsigned int)0+3, (unsigned int)0+3, (unsigned int)0+9, (unsigned int)0+$f, (unsigned int)0+$15, (unsigned int)0+$1b, (unsigned int)0+$21, (unsigned int)0+$27, (unsigned int)0+$2d, (unsigned int)0+$33, (unsigned int)0+$39, (unsigned int)$40+0, (unsigned int)$40+6, (unsigned int)$40+$c, (unsigned int)$40+$12, (unsigned int)$40+$18, (unsigned int)$40+$1e, (unsigned int)$40+$24, (unsigned int)$40+$2a, (unsigned int)$40+$30, (unsigned int)$40+$36, (unsigned int)$40+$3c, (unsigned int)$80+3, (unsigned int)$80+9, (unsigned int)$80+$f, (unsigned int)$80+$15, (unsigned int)$80+$1b, (unsigned int)$80+$21, (unsigned int)$80+$27, (unsigned int)$80+$2d, (unsigned int)$80+$33, (unsigned int)$80+$39, (unsigned int)$c0+0, (unsigned int)$c0+6, (unsigned int)$c0+$c, (unsigned int)$c0+$12, (unsigned int)$c0+$18, (unsigned int)$c0+$1e, (unsigned int)$c0+$24, (unsigned int)$c0+$2a, (unsigned int)$c0+$30, (unsigned int)$c0+$36, (unsigned int)$c0+$3c, (unsigned int)$100+3, (unsigned int)$100+9, (unsigned int)$100+$f, (unsigned int)$100+$15, (unsigned int)$100+$1b, (unsigned int)$100+$21, (unsigned int)$100+$27, (unsigned int)$100+$2d, (unsigned int)$100+$33, (unsigned int)$100+$39, (unsigned int)$140+0, (unsigned int)$140+6, (unsigned int)$140+$c, (unsigned int)$140+$12, (unsigned int)$140+$18, (unsigned int)$140+$1e, (unsigned int)$140+$24, (unsigned int)$140+$2a, (unsigned int)$140+$30, (unsigned int)$140+$36, (unsigned int)$140+$3c, (unsigned int)$180+3, (unsigned int)$180+9, (unsigned int)$180+$f, (unsigned int)$180+$15, (unsigned int)$180+$1b, (unsigned int)$180+$21, (unsigned int)$180+$27, (unsigned int)$180+$2d, (unsigned int)$180+$33, (unsigned int)$180+$39, (unsigned int)$1c0+0, (unsigned int)$1c0+6, (unsigned int)$1c0+$c, (unsigned int)$1c0+$12, (unsigned int)$1c0+$18, (unsigned int)$1c0+$1e, (unsigned int)$1c0+$24, (unsigned int)$1c0+$2a, (unsigned int)$1c0+$30, (unsigned int)$1c0+$36, (unsigned int)$1c0+$3c, (unsigned int)$200+3, (unsigned int)$200+9, (unsigned int)$200+$f, (unsigned int)$200+$15, (unsigned int)$200+$1b, (unsigned int)$200+$21, (unsigned int)$200+$27, (unsigned int)$200+$2d, (unsigned int)$200+$33, (unsigned int)$200+$39, (unsigned int)$240+0, (unsigned int)$240+6, (unsigned int)$240+$c, (unsigned int)$240+$12, (unsigned int)$240+$18, (unsigned int)$240+$1e, (unsigned int)$240+$24, (unsigned int)$240+$2a, (unsigned int)$240+$30, (unsigned int)$240+$36, (unsigned int)$240+$3c, (unsigned int)$280+3, (unsigned int)$280+9, (unsigned int)$280+$f, (unsigned int)$280+$15, (unsigned int)$280+$1b, (unsigned int)$280+$21, (unsigned int)$280+$27, (unsigned int)$280+$2d, (unsigned int)$280+$33, (unsigned int)$280+$39, (unsigned int)$2c0+0, (unsigned int)$2c0+6, (unsigned int)$2c0+$c, (unsigned int)$2c0+$12, (unsigned int)$2c0+$18, (unsigned int)$2c0+$1e, (unsigned int)$2c0+$24, (unsigned int)$2c0+$2a, (unsigned int)$2c0+$30, (unsigned int)$2c0+$36, (unsigned int)$2c0+$3c, (unsigned int)$300+3, (unsigned int)$300+9, (unsigned int)$300+$f, (unsigned int)$300+$15, (unsigned int)$300+$1b, (unsigned int)$300+$21, (unsigned int)$300+$27, (unsigned int)$300+$2d, (unsigned int)$300+$33, (unsigned int)$300+$39, (unsigned int)$340+0, (unsigned int)$340+6, (unsigned int)$340+$c, (unsigned int)$340+$12, (unsigned int)$340+$18, (unsigned int)$340+$1e, (unsigned int)$340+$24, (unsigned int)$340+$2a, (unsigned int)$340+$30, (unsigned int)$340+$36, (unsigned int)$340+$3c }
__constant char RENDER_YPOS_INC[$a0] = { 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7 }
__constant char RIGHT = $20
__constant char SCATTER = 1
__constant char * const SCREENS_1 = (char *)$4000
__constant char * const SCREENS_2 = (char *)$c000
__constant struct MOS6581_SID * const SID = (struct MOS6581_SID *)$d400
__constant char * const SID_CH1_FREQ_HI = (char *)$d401
__constant char SIZEOF_POINTER = 2
__constant char SIZEOF_UNSIGNED_INT = 2
__constant const char SIZE_BOB_RESTORE = $12
__constant char * const SPLASH = (char *)$4000
__constant char SPLASH_CRUNCHED[] = kickasm( uses SPLASH) {{ .modify B2() {
.pc = SPLASH "SPLASH SCREEN" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_splash_mc = LoadPicture("pacman-splash.png", List().add($000000, $352879, $bfce72, $883932))
// 0:BLACK, 1:YELLOW
.var pic_splash_yellow = LoadPicture("pacman-splash.png", List().add($000000, $bfce72))
// 0:BLACK, 1:BLUE
.var pic_splash_blue = LoadPicture("pacman-splash.png", List().add($000000, $352879))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<147; ypos++) {
.if(ypos>25 && ypos<123) {
// Sprites in the sides are in single color blue on splash screen
.byte pic_splash_blue.getSinglecolorByte(xcol,ypos)
} else .if(xcol>2 && xcol<21) {
// Sprites 2-7 are in single color yellow on splash screen
.byte pic_splash_yellow.getSinglecolorByte(xcol,ypos)
} else {
// Sprites 0&1 are in multi color on splash screen
.byte pic_splash_mc.getMulticolorByte(xcol,ypos)
}
}
}
}
}}
__constant char * const SPRITES_1 = (char *)$6000
__constant char * const SPRITES_2 = (char *)$e000
__constant char * const SPRITES_COLOR = (char *)$d027
__constant char * const SPRITES_XPOS = (char *)$d000
__constant char * const SPRITES_YPOS = (char *)$d001
__constant char STOP = 0
__constant char * const TILES_LEFT = LEVEL_TILES+$a00
__constant char * const TILES_RIGHT = LEVEL_TILES+$a80
__constant char * const TILES_TYPE = LEVEL_TILES+$b00
__constant char TILE_TYPE::EMPTY = 0
__constant char TILE_TYPE::PILL = 1
__constant char TILE_TYPE::POWERUP = 2
__constant char TILE_TYPE::WALL = 4
__constant char UP = 4
__constant struct MOS6569_VICII * const VICII = (struct MOS6569_VICII *)$d000
__constant const char VICII_BMM = $20
__constant char * const VICII_CONTROL1 = (char *)$d011
__constant char * const VICII_CONTROL2 = (char *)$d016
__constant const char VICII_DEN = $10
__constant const char VICII_ECM = $40
__constant char * const VICII_MEMORY = (char *)$d018
__constant const char VICII_RSEL = 8
__constant const char VICII_RST8 = $80
__constant char WALL = 4
__constant char * const WIN_GFX = (char *)$a700
__constant char WIN_GFX_CRUNCHED[] = kickasm( uses WIN_GFX) {{ .modify B2() {
.pc = WIN_GFX "WIN GRAPHICS" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_win = LoadPicture("pacman-win.png", List().add($000000, $352879, $bfce72, $883932))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<25; ypos++) {
.byte pic_win.getMulticolorByte(xcol,ypos)
}
}
}
}}
__constant const char YELLOW = 7
void __start()
__loadstore volatile char anim_frame_idx
__constant char bobs_bob_id[NUM_BOBS] = { 0, 0, 0, 0, 0 }
__constant char bobs_restore[NUM_BOBS*SIZE_BOB_RESTORE*2] = { fill( NUM_BOBS*SIZE_BOB_RESTORE*2, 0) }
__loadstore volatile char bobs_restore_base
__constant char bobs_xcol[NUM_BOBS] = { $a, $a, $a, $a, $a }
__constant char bobs_yfine[NUM_BOBS] = { $2d, $2d, $2d, $2d, $2d }
__loadstore volatile char bottom_sprites_color
__loadstore volatile char bottom_sprites_mc
void byteboozer_decrunch(char * volatile crunched)
__loadstore char * volatile byteboozer_decrunch::crunched
__loadstore volatile char canvas_base_hi
char choose_direction(char open_directions , char ghost_xtile , char ghost_ytile , char target_xtile , char target_ytile)
number choose_direction::$10
bool choose_direction::$12
bool choose_direction::$13
number choose_direction::$14
bool choose_direction::$16
bool choose_direction::$17
number choose_direction::$18
char choose_direction::$2
bool choose_direction::$20
bool choose_direction::$21
number choose_direction::$22
bool choose_direction::$24
bool choose_direction::$25
bool choose_direction::$26
bool choose_direction::$27
bool choose_direction::$28
bool choose_direction::$29
bool choose_direction::$3
char choose_direction::$4
bool choose_direction::$5
char choose_direction::$6
bool choose_direction::$7
char choose_direction::$8
bool choose_direction::$9
char choose_direction::direction
char choose_direction::direction#0
char choose_direction::direction#1
char choose_direction::direction#10
char choose_direction::direction#11
char choose_direction::direction#12
char choose_direction::direction#2
char choose_direction::direction#3
char choose_direction::direction#4
char choose_direction::direction#5
char choose_direction::direction#6
char choose_direction::direction#7
char choose_direction::direction#8
char choose_direction::direction#9
char choose_direction::dist_down
char choose_direction::dist_down#0
char choose_direction::dist_down#1
char choose_direction::dist_left
char choose_direction::dist_left#0
char choose_direction::dist_left#1
char choose_direction::dist_min
char choose_direction::dist_min#0
char choose_direction::dist_min#1
char choose_direction::dist_min#10
char choose_direction::dist_min#11
char choose_direction::dist_min#2
char choose_direction::dist_min#3
char choose_direction::dist_min#4
char choose_direction::dist_min#5
char choose_direction::dist_min#6
char choose_direction::dist_min#7
char choose_direction::dist_min#8
char choose_direction::dist_min#9
char choose_direction::dist_right
char choose_direction::dist_right#0
char choose_direction::dist_right#1
char choose_direction::dist_up
char choose_direction::dist_up#0
char choose_direction::dist_up#1
char choose_direction::ghost_xtile
char choose_direction::ghost_xtile#0
char choose_direction::ghost_xtile#1
char choose_direction::ghost_xtile#2
char choose_direction::ghost_xtile#3
char choose_direction::ghost_xtile#4
char choose_direction::ghost_ytile
char choose_direction::ghost_ytile#0
char choose_direction::ghost_ytile#1
char choose_direction::ghost_ytile#2
char choose_direction::ghost_ytile#3
char choose_direction::ghost_ytile#4
char choose_direction::open_directions
char choose_direction::open_directions#0
char choose_direction::open_directions#1
char choose_direction::open_directions#10
char choose_direction::open_directions#11
char choose_direction::open_directions#12
char choose_direction::open_directions#13
char choose_direction::open_directions#2
char choose_direction::open_directions#3
char choose_direction::open_directions#4
char choose_direction::open_directions#5
char choose_direction::open_directions#6
char choose_direction::open_directions#7
char choose_direction::open_directions#8
char choose_direction::open_directions#9
char choose_direction::return
char choose_direction::return#0
char choose_direction::return#1
char choose_direction::return#10
char choose_direction::return#2
char choose_direction::return#3
char choose_direction::return#4
char choose_direction::return#5
char choose_direction::return#6
char choose_direction::return#7
char choose_direction::return#8
char choose_direction::return#9
char choose_direction::target_xtile
char choose_direction::target_xtile#0
char choose_direction::target_xtile#1
char choose_direction::target_xtile#2
char choose_direction::target_xtile#3
char choose_direction::target_xtile#4
char choose_direction::target_ytile
char choose_direction::target_ytile#0
char choose_direction::target_ytile#1
char choose_direction::target_ytile#2
char choose_direction::target_ytile#3
char choose_direction::target_ytile#4
char choose_direction::xdiff
char choose_direction::xdiff#0
char choose_direction::xdiff#1
char choose_direction::xdiff#10
char choose_direction::xdiff#2
char choose_direction::xdiff#3
char choose_direction::xdiff#4
char choose_direction::xdiff#5
char choose_direction::xdiff#6
char choose_direction::xdiff#7
char choose_direction::xdiff#8
char choose_direction::xdiff#9
char choose_direction::ydiff
char choose_direction::ydiff#0
char choose_direction::ydiff#1
char choose_direction::ydiff#10
char choose_direction::ydiff#2
char choose_direction::ydiff#3
char choose_direction::ydiff#4
char choose_direction::ydiff#5
char choose_direction::ydiff#6
char choose_direction::ydiff#7
char choose_direction::ydiff#8
char choose_direction::ydiff#9
void done_run()
bool done_run::$1
bool done_run::$10
bool done_run::$12
bool done_run::$13
bool done_run::$14
bool done_run::$2
bool done_run::$5
bool done_run::$6
char done_run::$8
bool done_run::$9
char *done_run::gfx
char *done_run::gfx#0
char *done_run::gfx#1
char *done_run::gfx#2
char *done_run::gfx#3
char *done_run::gfx#4
char *done_run::gfx#5
char *done_run::gfx#6
char *done_run::gfx#7
char done_run::i
char done_run::i#0
char done_run::i#1
char done_run::i#2
char done_run::i#3
char done_run::i1
char done_run::i1#0
char done_run::i1#1
char done_run::i1#2
char done_run::i1#3
char done_run::pixels
char done_run::pixels#0
char done_run::xcol
char done_run::xcol#0
char done_run::xcol#1
char done_run::xcol#2
char done_run::xcol#3
char done_run::xcol#4
char done_run::xcol#5
char done_run::xcol#6
char done_run::xcol#7
char done_run::ypos
char done_run::ypos#0
char done_run::ypos#1
char done_run::ypos#2
char done_run::ypos#3
char done_run::ypos#4
__loadstore volatile char frame
void game_logic()
bool game_logic::$0
bool game_logic::$1
bool game_logic::$10
bool game_logic::$100
bool game_logic::$102
bool game_logic::$104
bool game_logic::$105
bool game_logic::$106
bool game_logic::$107
bool game_logic::$108
bool game_logic::$109
bool game_logic::$11
bool game_logic::$110
bool game_logic::$111
bool game_logic::$115
bool game_logic::$116
number game_logic::$117
number game_logic::$118
char game_logic::$119
bool game_logic::$12
bool game_logic::$120
bool game_logic::$121
bool game_logic::$122
bool game_logic::$123
bool game_logic::$124
bool game_logic::$125
bool game_logic::$126
bool game_logic::$127
bool game_logic::$128
bool game_logic::$129
bool game_logic::$13
bool game_logic::$130
bool game_logic::$131
bool game_logic::$132
bool game_logic::$136
bool game_logic::$137
number game_logic::$138
number game_logic::$139
number game_logic::$14
char game_logic::$140
bool game_logic::$141
bool game_logic::$142
bool game_logic::$143
bool game_logic::$144
bool game_logic::$145
bool game_logic::$146
bool game_logic::$147
bool game_logic::$148
bool game_logic::$149
number game_logic::$15
bool game_logic::$150
bool game_logic::$151
bool game_logic::$152
bool game_logic::$153
bool game_logic::$157
bool game_logic::$158
number game_logic::$159
number game_logic::$160
char game_logic::$161
bool game_logic::$162
bool game_logic::$163
bool game_logic::$164
bool game_logic::$165
bool game_logic::$166
bool game_logic::$167
bool game_logic::$168
bool game_logic::$169
number game_logic::$17
bool game_logic::$170
bool game_logic::$171
bool game_logic::$172
bool game_logic::$173
bool game_logic::$174
bool game_logic::$178
bool game_logic::$179
number game_logic::$18
number game_logic::$180
number game_logic::$181
char game_logic::$182
bool game_logic::$183
bool game_logic::$184
bool game_logic::$185
bool game_logic::$186
bool game_logic::$187
bool game_logic::$188
bool game_logic::$189
char game_logic::$19
bool game_logic::$190
bool game_logic::$191
bool game_logic::$192
bool game_logic::$193
bool game_logic::$194
bool game_logic::$195
number game_logic::$199
number game_logic::$2
number game_logic::$20
number game_logic::$200
bool game_logic::$202
bool game_logic::$203
char game_logic::$204
bool game_logic::$205
bool game_logic::$206
bool game_logic::$207
bool game_logic::$208
bool game_logic::$209
number game_logic::$21
char game_logic::$210
bool game_logic::$211
bool game_logic::$212
bool game_logic::$213
bool game_logic::$214
bool game_logic::$215
bool game_logic::$216
bool game_logic::$217
bool game_logic::$218
bool game_logic::$219
bool game_logic::$22
bool game_logic::$23
number game_logic::$25
number game_logic::$26
char game_logic::$27
number game_logic::$28
number game_logic::$29
number game_logic::$3
number game_logic::$31
number game_logic::$32
char game_logic::$33
number game_logic::$34
number game_logic::$35
number game_logic::$37
number game_logic::$38
char game_logic::$39
bool game_logic::$4
number game_logic::$40
number game_logic::$41
number game_logic::$43
number game_logic::$44
char game_logic::$45
number game_logic::$46
number game_logic::$47
bool game_logic::$48
bool game_logic::$49
bool game_logic::$5
bool game_logic::$50
bool game_logic::$51
bool game_logic::$52
bool game_logic::$53
bool game_logic::$54
bool game_logic::$55
bool game_logic::$56
bool game_logic::$57
bool game_logic::$58
bool game_logic::$6
bool game_logic::$62
bool game_logic::$63
bool game_logic::$64
number game_logic::$65
number game_logic::$66
char *game_logic::$67
number game_logic::$68
number game_logic::$69
bool game_logic::$7
number game_logic::$70
char *game_logic::$71
number game_logic::$72
bool game_logic::$73
bool game_logic::$74
char game_logic::$75
bool game_logic::$76
char game_logic::$77
bool game_logic::$78
bool game_logic::$79
bool game_logic::$8
char game_logic::$80
bool game_logic::$81
char game_logic::$82
bool game_logic::$83
bool game_logic::$84
char game_logic::$85
bool game_logic::$86
char game_logic::$87
bool game_logic::$88
bool game_logic::$89
bool game_logic::$9
char game_logic::$90
bool game_logic::$91
char game_logic::$92
bool game_logic::$93
bool game_logic::$94
bool game_logic::$95
bool game_logic::$96
bool game_logic::$98
char game_logic::do_reverse
char game_logic::do_reverse#0
char game_logic::do_reverse#1
char game_logic::do_reverse#2
char game_logic::do_reverse#3
char game_logic::do_reverse#4
char game_logic::do_reverse#5
char game_logic::do_reverse#6
char game_logic::do_reverse#7
char game_logic::do_reverse#8
char game_logic::do_reverse#9
char game_logic::ghost1_bob_xfine
char game_logic::ghost1_bob_xfine#0
char game_logic::ghost1_xtile
char game_logic::ghost1_xtile#0
char game_logic::ghost1_xtile#1
char game_logic::ghost1_xtile#2
char game_logic::ghost1_xtile#3
char game_logic::ghost1_xtile#4
char game_logic::ghost1_xtile#5
char game_logic::ghost1_ytile
char game_logic::ghost1_ytile#0
char game_logic::ghost1_ytile#1
char game_logic::ghost1_ytile#2
char game_logic::ghost1_ytile#3
char game_logic::ghost1_ytile#4
char game_logic::ghost1_ytile#5
char game_logic::ghost2_bob_xfine
char game_logic::ghost2_bob_xfine#0
char game_logic::ghost2_xtile
char game_logic::ghost2_xtile#0
char game_logic::ghost2_xtile#1
char game_logic::ghost2_xtile#2
char game_logic::ghost2_xtile#3
char game_logic::ghost2_xtile#4
char game_logic::ghost2_xtile#5
char game_logic::ghost2_ytile
char game_logic::ghost2_ytile#0
char game_logic::ghost2_ytile#1
char game_logic::ghost2_ytile#2
char game_logic::ghost2_ytile#3
char game_logic::ghost2_ytile#4
char game_logic::ghost2_ytile#5
char game_logic::ghost3_bob_xfine
char game_logic::ghost3_bob_xfine#0
char game_logic::ghost3_xtile
char game_logic::ghost3_xtile#0
char game_logic::ghost3_xtile#1
char game_logic::ghost3_xtile#2
char game_logic::ghost3_xtile#3
char game_logic::ghost3_xtile#4
char game_logic::ghost3_xtile#5
char game_logic::ghost3_ytile
char game_logic::ghost3_ytile#0
char game_logic::ghost3_ytile#1
char game_logic::ghost3_ytile#2
char game_logic::ghost3_ytile#3
char game_logic::ghost3_ytile#4
char game_logic::ghost3_ytile#5
char game_logic::ghost4_bob_xfine
char game_logic::ghost4_bob_xfine#0
char game_logic::ghost4_xtile
char game_logic::ghost4_xtile#0
char game_logic::ghost4_xtile#1
char game_logic::ghost4_xtile#2
char game_logic::ghost4_xtile#3
char game_logic::ghost4_xtile#4
char game_logic::ghost4_xtile#5
char game_logic::ghost4_ytile
char game_logic::ghost4_ytile#0
char game_logic::ghost4_ytile#1
char game_logic::ghost4_ytile#2
char game_logic::ghost4_ytile#3
char game_logic::ghost4_ytile#4
char game_logic::ghost4_ytile#5
char game_logic::ghost_frame_idx
char game_logic::ghost_frame_idx#0
char game_logic::ghost_frame_idx#1
char game_logic::ghost_frame_idx#2
char game_logic::ghost_frame_idx#3
char game_logic::joy_directions
char game_logic::joy_directions#0
char game_logic::joy_directions#1
char game_logic::new_direction
char game_logic::new_direction#0
char game_logic::new_direction#1
char game_logic::open_directions
char game_logic::open_directions#0
char game_logic::open_directions#1
char game_logic::open_directions#2
char game_logic::open_directions#3
char game_logic::open_directions#4
char game_logic::open_directions#5
char game_logic::open_directions#6
char game_logic::open_directions1
char game_logic::open_directions1#0
char game_logic::open_directions1#1
char game_logic::open_directions1#2
char game_logic::open_directions1#3
char game_logic::open_directions1#4
char game_logic::open_directions1#5
char game_logic::open_directions1#6
char game_logic::open_directions2
char game_logic::open_directions2#0
char game_logic::open_directions2#1
char game_logic::open_directions2#2
char game_logic::open_directions2#3
char game_logic::open_directions2#4
char game_logic::open_directions2#5
char game_logic::open_directions2#6
char game_logic::open_directions3
char game_logic::open_directions3#0
char game_logic::open_directions3#1
char game_logic::open_directions3#2
char game_logic::open_directions3#3
char game_logic::open_directions3#4
char game_logic::open_directions3#5
char game_logic::open_directions3#6
char game_logic::open_directions4
char game_logic::open_directions4#0
char game_logic::open_directions4#1
char game_logic::open_directions4#2
char game_logic::open_directions4#3
char game_logic::pacman_bob_xfine
char game_logic::pacman_bob_xfine#0
char game_logic::pacman_xtile
char game_logic::pacman_xtile#0
char game_logic::pacman_xtile#1
char game_logic::pacman_xtile#2
char game_logic::pacman_xtile#3
char game_logic::pacman_xtile1
char game_logic::pacman_xtile1#0
char game_logic::pacman_ytile
char game_logic::pacman_ytile#0
char game_logic::pacman_ytile#1
char game_logic::pacman_ytile#2
char game_logic::pacman_ytile#3
char game_logic::pacman_ytile1
char game_logic::pacman_ytile1#0
char game_logic::target_xtile
char game_logic::target_xtile#0
char game_logic::target_xtile#1
char game_logic::target_xtile#2
char game_logic::target_xtile#3
char game_logic::target_xtile1
char game_logic::target_xtile1#0
char game_logic::target_xtile1#1
char game_logic::target_xtile1#2
char game_logic::target_xtile1#3
char game_logic::target_xtile2
char game_logic::target_xtile2#0
char game_logic::target_xtile2#1
char game_logic::target_xtile2#2
char game_logic::target_xtile2#3
char game_logic::target_xtile3
char game_logic::target_xtile3#0
char game_logic::target_xtile3#1
char game_logic::target_xtile3#2
char game_logic::target_xtile3#3
char game_logic::target_ytile
char game_logic::target_ytile#0
char game_logic::target_ytile#1
char game_logic::target_ytile#2
char game_logic::target_ytile#3
char game_logic::target_ytile1
char game_logic::target_ytile1#0
char game_logic::target_ytile1#1
char game_logic::target_ytile1#2
char game_logic::target_ytile1#3
char game_logic::target_ytile2
char game_logic::target_ytile2#0
char game_logic::target_ytile2#1
char game_logic::target_ytile2#2
char game_logic::target_ytile2#3
char game_logic::target_ytile3
char game_logic::target_ytile3#0
char game_logic::target_ytile3#1
char game_logic::target_ytile3#2
char game_logic::target_ytile3#3
char game_logic::tile_id
char game_logic::tile_id#0
char game_logic::tile_id#1
char *game_logic::ytiles
char *game_logic::ytiles#0
char *game_logic::ytiles#1
char *game_logic::ytiles#2
char *game_logic::ytiles#3
__loadstore volatile char game_logic_substep
__loadstore volatile char game_playable
void gameplay_run()
bool gameplay_run::$10
bool gameplay_run::$11
bool gameplay_run::$12
bool gameplay_run::$13
bool gameplay_run::$14
bool gameplay_run::$15
unsigned int gameplay_run::$4
bool gameplay_run::$8
bool gameplay_run::$9
char gameplay_run::i
char gameplay_run::i#0
char gameplay_run::i#1
char gameplay_run::i#2
char gameplay_run::i#3
char gameplay_run::i1
char gameplay_run::i1#0
char gameplay_run::i1#1
char gameplay_run::i1#2
char gameplay_run::i1#3
char gameplay_run::i2
char gameplay_run::i2#0
char gameplay_run::i2#1
char gameplay_run::i2#2
char gameplay_run::i2#3
__loadstore volatile char ghost1_direction
__loadstore volatile char ghost1_respawn
__loadstore volatile char ghost1_reverse
__loadstore volatile char ghost1_substep
__loadstore volatile char ghost1_xfine
__loadstore volatile char ghost1_yfine
__loadstore volatile char ghost2_direction
__loadstore volatile char ghost2_respawn
__loadstore volatile char ghost2_reverse
__loadstore volatile char ghost2_substep
__loadstore volatile char ghost2_xfine
__loadstore volatile char ghost2_yfine
__loadstore volatile char ghost3_direction
__loadstore volatile char ghost3_respawn
__loadstore volatile char ghost3_reverse
__loadstore volatile char ghost3_substep
__loadstore volatile char ghost3_xfine
__loadstore volatile char ghost3_yfine
__loadstore volatile char ghost4_direction
__loadstore volatile char ghost4_respawn
__loadstore volatile char ghost4_reverse
__loadstore volatile char ghost4_substep
__loadstore volatile char ghost4_xfine
__loadstore volatile char ghost4_yfine
__constant char ghost_frames[] = { 0, 0, 0, 0, $3c, $40, $3c, $40, $34, $38, $34, $38, 0, 0, 0, 0, $2c, $30, $2c, $30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $24, $28, $24, $28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $5c, $60, $5c, $60, $54, $58, $54, $58, 0, 0, 0, 0, $4c, $50, $4c, $50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $44, $48, $44, $48 }
__loadstore volatile char ghosts_mode
__loadstore volatile char ghosts_mode_count
void init_bobs_restore()
bool init_bobs_restore::$0
bool init_bobs_restore::$1
char init_bobs_restore::$2
char init_bobs_restore::$3
char init_bobs_restore::$4
char init_bobs_restore::$5
__constant char *init_bobs_restore::CANVAS_HIDDEN = (char *)$ea00
char init_bobs_restore::bob
char init_bobs_restore::bob#0
char init_bobs_restore::bob#1
char init_bobs_restore::bob#2
char init_bobs_restore::bob#3
char init_bobs_restore::bob#4
char init_bobs_restore::bob#5
char init_bobs_restore::bob#6
char *init_bobs_restore::bob_restore
char *init_bobs_restore::bob_restore#0
char *init_bobs_restore::bob_restore#1
char *init_bobs_restore::bob_restore#2
char *init_bobs_restore::bob_restore#3
char *init_bobs_restore::bob_restore#4
char *init_bobs_restore::bob_restore#5
char *init_bobs_restore::bob_restore#6
char init_bobs_restore::i
char init_bobs_restore::i#0
char init_bobs_restore::i#1
char init_bobs_restore::i#2
char init_bobs_restore::i#3
void init_level_tile_directions()
bool init_level_tile_directions::$0
bool init_level_tile_directions::$1
number init_level_tile_directions::$10
char init_level_tile_directions::$11
bool init_level_tile_directions::$12
bool init_level_tile_directions::$13
number init_level_tile_directions::$14
char init_level_tile_directions::$15
bool init_level_tile_directions::$16
bool init_level_tile_directions::$17
number init_level_tile_directions::$2
char init_level_tile_directions::$3
bool init_level_tile_directions::$4
bool init_level_tile_directions::$5
number init_level_tile_directions::$6
char init_level_tile_directions::$7
bool init_level_tile_directions::$8
bool init_level_tile_directions::$9
char *init_level_tile_directions::directions
char *init_level_tile_directions::directions#0
char *init_level_tile_directions::directions#1
char *init_level_tile_directions::directions#10
char *init_level_tile_directions::directions#11
char *init_level_tile_directions::directions#12
char *init_level_tile_directions::directions#13
char *init_level_tile_directions::directions#14
char *init_level_tile_directions::directions#15
char *init_level_tile_directions::directions#16
char *init_level_tile_directions::directions#17
char *init_level_tile_directions::directions#18
char *init_level_tile_directions::directions#2
char *init_level_tile_directions::directions#3
char *init_level_tile_directions::directions#4
char *init_level_tile_directions::directions#5
char *init_level_tile_directions::directions#6
char *init_level_tile_directions::directions#7
char *init_level_tile_directions::directions#8
char *init_level_tile_directions::directions#9
char init_level_tile_directions::open_directions
char init_level_tile_directions::open_directions#0
char init_level_tile_directions::open_directions#1
char init_level_tile_directions::open_directions#10
char init_level_tile_directions::open_directions#11
char init_level_tile_directions::open_directions#12
char init_level_tile_directions::open_directions#13
char init_level_tile_directions::open_directions#14
char init_level_tile_directions::open_directions#15
char init_level_tile_directions::open_directions#16
char init_level_tile_directions::open_directions#2
char init_level_tile_directions::open_directions#3
char init_level_tile_directions::open_directions#4
char init_level_tile_directions::open_directions#5
char init_level_tile_directions::open_directions#6
char init_level_tile_directions::open_directions#7
char init_level_tile_directions::open_directions#8
char init_level_tile_directions::open_directions#9
char init_level_tile_directions::xtile
char init_level_tile_directions::xtile#0
char init_level_tile_directions::xtile#1
char init_level_tile_directions::xtile#10
char init_level_tile_directions::xtile#11
char init_level_tile_directions::xtile#12
char init_level_tile_directions::xtile#13
char init_level_tile_directions::xtile#14
char init_level_tile_directions::xtile#15
char init_level_tile_directions::xtile#2
char init_level_tile_directions::xtile#3
char init_level_tile_directions::xtile#4
char init_level_tile_directions::xtile#5
char init_level_tile_directions::xtile#6
char init_level_tile_directions::xtile#7
char init_level_tile_directions::xtile#8
char init_level_tile_directions::xtile#9
char init_level_tile_directions::ytile
char init_level_tile_directions::ytile#0
char init_level_tile_directions::ytile#1
char init_level_tile_directions::ytile#10
char init_level_tile_directions::ytile#11
char init_level_tile_directions::ytile#12
char init_level_tile_directions::ytile#13
char init_level_tile_directions::ytile#14
char init_level_tile_directions::ytile#15
char init_level_tile_directions::ytile#16
char init_level_tile_directions::ytile#17
char init_level_tile_directions::ytile#18
char init_level_tile_directions::ytile#2
char init_level_tile_directions::ytile#3
char init_level_tile_directions::ytile#4
char init_level_tile_directions::ytile#5
char init_level_tile_directions::ytile#6
char init_level_tile_directions::ytile#7
char init_level_tile_directions::ytile#8
char init_level_tile_directions::ytile#9
void init_render_index()
bool init_render_index::$0
bool init_render_index::$1
unsigned int init_render_index::$10
unsigned int init_render_index::$11
bool init_render_index::$2
bool init_render_index::$3
char init_render_index::$5
char init_render_index::$6
bool init_render_index::$7
bool init_render_index::$8
char init_render_index::$9
char *init_render_index::canvas
char *init_render_index::canvas#0
char *init_render_index::canvas_xcol
char *init_render_index::canvas_xcol#0
char *init_render_index::canvas_xcol#1
char *init_render_index::canvas_xcol#2
char *init_render_index::canvas_xcol#3
char *init_render_index::canvas_xcol#4
char *init_render_index::render_index
char *init_render_index::render_index#0
char *init_render_index::render_index#1
char *init_render_index::render_index#10
char *init_render_index::render_index#2
char *init_render_index::render_index#3
char *init_render_index::render_index#4
char *init_render_index::render_index#5
char *init_render_index::render_index#6
char *init_render_index::render_index#7
char *init_render_index::render_index#8
char *init_render_index::render_index#9
char *init_render_index::render_index_xcol
char *init_render_index::render_index_xcol#0
char *init_render_index::render_index_xcol#1
char *init_render_index::render_index_xcol#2
char *init_render_index::render_index_xcol#3
char *init_render_index::render_index_xcol#4
char *init_render_index::render_index_xcol#5
unsigned int *init_render_index::render_ypos_table
unsigned int *init_render_index::render_ypos_table#0
unsigned int *init_render_index::render_ypos_table#1
unsigned int *init_render_index::render_ypos_table#2
unsigned int *init_render_index::render_ypos_table#3
unsigned int *init_render_index::render_ypos_table#4
unsigned int *init_render_index::render_ypos_table#5
unsigned int *init_render_index::render_ypos_table#6
char init_render_index::x_col
char init_render_index::x_col#0
char init_render_index::x_col#1
char init_render_index::x_col#10
char init_render_index::x_col#2
char init_render_index::x_col#3
char init_render_index::x_col#4
char init_render_index::x_col#5
char init_render_index::x_col#6
char init_render_index::x_col#7
char init_render_index::x_col#8
char init_render_index::x_col#9
char init_render_index::y_pos
char init_render_index::y_pos#0
char init_render_index::y_pos#1
char init_render_index::y_pos#2
char init_render_index::y_pos#3
char init_render_index::y_pos#4
char init_render_index::y_pos#5
char init_render_index::ypos_inc_offset
char init_render_index::ypos_inc_offset#0
char init_render_index::ypos_inc_offset#1
char init_render_index::ypos_inc_offset#2
char init_render_index::ypos_inc_offset#3
char init_render_index::ypos_inc_offset#4
char init_render_index::ypos_inc_offset#5
char init_render_index::ypos_inc_offset#6
char init_render_index::ypos_inc_offset#7
char init_render_index::ypos_inc_offset#8
void init_sprite_pointers()
bool init_sprite_pointers::$0
bool init_sprite_pointers::$1
char init_sprite_pointers::$2
__constant const char init_sprite_pointers::SPRITE_ID_0 = (char)SPRITES_1&$3fff/$40
char init_sprite_pointers::screen
char init_sprite_pointers::screen#0
char init_sprite_pointers::screen#1
char init_sprite_pointers::screen#2
char init_sprite_pointers::screen#3
char init_sprite_pointers::screen#4
char init_sprite_pointers::screen#5
char init_sprite_pointers::screen#6
char init_sprite_pointers::sprite
char init_sprite_pointers::sprite#0
char init_sprite_pointers::sprite#1
char init_sprite_pointers::sprite#2
char init_sprite_pointers::sprite#3
char init_sprite_pointers::sprite_id
char init_sprite_pointers::sprite_id#0
__constant char init_sprite_pointers::sprites_id[] = { 0, $70, $60, $50, $40, $30, $20, $10 }
char *init_sprite_pointers::sprites_ptr_1
char *init_sprite_pointers::sprites_ptr_1#0
char *init_sprite_pointers::sprites_ptr_1#1
char *init_sprite_pointers::sprites_ptr_1#2
char *init_sprite_pointers::sprites_ptr_1#3
char *init_sprite_pointers::sprites_ptr_1#4
char *init_sprite_pointers::sprites_ptr_1#5
char *init_sprite_pointers::sprites_ptr_1#6
char *init_sprite_pointers::sprites_ptr_2
char *init_sprite_pointers::sprites_ptr_2#0
char *init_sprite_pointers::sprites_ptr_2#1
char *init_sprite_pointers::sprites_ptr_2#2
char *init_sprite_pointers::sprites_ptr_2#3
char *init_sprite_pointers::sprites_ptr_2#4
char *init_sprite_pointers::sprites_ptr_2#5
char *init_sprite_pointers::sprites_ptr_2#6
__interrupt(hardware_clobber) void irq_screen_top()
char irq_screen_top::$0
number irq_screen_top::$1
number irq_screen_top::$2
bool irq_screen_top::$3
char irq_screen_top::$4
char irq_screen_top::$5
bool irq_screen_top::$8
number irq_screen_top::toD0181_$0
number irq_screen_top::toD0181_$1
char irq_screen_top::toD0181_$2
char irq_screen_top::toD0181_$3
number irq_screen_top::toD0181_$4
number irq_screen_top::toD0181_$5
number irq_screen_top::toD0181_$6
unsigned int irq_screen_top::toD0181_$7
char *irq_screen_top::toD0181_gfx
char *irq_screen_top::toD0181_gfx#0
char *irq_screen_top::toD0181_gfx#1
char irq_screen_top::toD0181_return
char irq_screen_top::toD0181_return#0
char irq_screen_top::toD0181_return#1
char irq_screen_top::toD0181_return#2
char irq_screen_top::toD0181_return#3
char *irq_screen_top::toD0181_screen
char *irq_screen_top::toD0181_screen#0
char *irq_screen_top::toD0181_screen#1
char irq_screen_top::toDd001_$0
number irq_screen_top::toDd001_$1
number irq_screen_top::toDd001_$2
char *irq_screen_top::toDd001_gfx
char *irq_screen_top::toDd001_gfx#0
char *irq_screen_top::toDd001_gfx#1
char irq_screen_top::toDd001_return
char irq_screen_top::toDd001_return#0
char irq_screen_top::toDd001_return#1
char irq_screen_top::toDd001_return#2
char irq_screen_top::toDd001_return#3
char irq_screen_top::toDd002_$0
number irq_screen_top::toDd002_$1
number irq_screen_top::toDd002_$2
char *irq_screen_top::toDd002_gfx
char *irq_screen_top::toDd002_gfx#0
char *irq_screen_top::toDd002_gfx#1
char irq_screen_top::toDd002_return
char irq_screen_top::toDd002_return#0
char irq_screen_top::toDd002_return#1
char irq_screen_top::toDd002_return#2
char irq_screen_top::toDd002_return#3
char joyfire()
number joyfire::$0
bool joyfire::$1
char joyfire::return
char joyfire::return#0
char joyfire::return#1
char joyfire::return#2
char joyfire::return#3
char joyfire::return#4
char joyfire::return#5
char joyfire::return#6
char joyfire::return#7
void joyinit()
__loadstore char * volatile left_canvas
__loadstore char * volatile left_render_index_xcol
__loadstore volatile char left_ypos_inc_offset
unsigned int level_show()
bool level_show::$0
bool level_show::$1
bool level_show::$2
bool level_show::$3
bool level_show::$4
bool level_show::$5
unsigned int level_show::count
unsigned int level_show::count#0
unsigned int level_show::count#1
unsigned int level_show::count#10
unsigned int level_show::count#11
unsigned int level_show::count#12
unsigned int level_show::count#13
unsigned int level_show::count#2
unsigned int level_show::count#3
unsigned int level_show::count#4
unsigned int level_show::count#5
unsigned int level_show::count#6
unsigned int level_show::count#7
unsigned int level_show::count#8
unsigned int level_show::count#9
char *level_show::level
char *level_show::level#0
char *level_show::level#1
char *level_show::level#10
char *level_show::level#11
char *level_show::level#2
char *level_show::level#3
char *level_show::level#4
char *level_show::level#5
char *level_show::level#6
char *level_show::level#7
char *level_show::level#8
char *level_show::level#9
unsigned int level_show::return
unsigned int level_show::return#0
unsigned int level_show::return#1
unsigned int level_show::return#2
unsigned int level_show::return#3
unsigned int level_show::return#4
char level_show::tile_left
char level_show::tile_left#0
char level_show::tile_left#1
char level_show::tile_left#2
char level_show::tile_left#3
char level_show::tile_left#4
char level_show::tile_right
char level_show::tile_right#0
char level_show::tile_right#1
char level_show::tile_right#2
char level_show::xcol
char level_show::xcol#0
char level_show::xcol#1
char level_show::xcol#2
char level_show::xcol#3
char level_show::xcol#4
char level_show::xcol#5
char level_show::xcol#6
char level_show::xcol#7
char level_show::xcol#8
char level_show::xtile
char level_show::xtile#0
char level_show::xtile#1
char level_show::xtile#2
char level_show::xtile#3
char level_show::xtile#4
char level_show::xtile#5
char level_show::xtile#6
char level_show::xtile#7
char level_show::xtile#8
char level_show::xtile#9
char level_show::ytile
char level_show::ytile#0
char level_show::ytile#1
char level_show::ytile#10
char level_show::ytile#11
char level_show::ytile#2
char level_show::ytile#3
char level_show::ytile#4
char level_show::ytile#5
char level_show::ytile#6
char level_show::ytile#7
char level_show::ytile#8
char level_show::ytile#9
char level_tile_directions(char xtile , char ytile)
bool level_tile_directions::$0
bool level_tile_directions::$1
bool level_tile_directions::$2
bool level_tile_directions::$3
char level_tile_directions::$5
char level_tile_directions::return
char level_tile_directions::return#0
char level_tile_directions::return#1
char level_tile_directions::return#10
char level_tile_directions::return#11
char level_tile_directions::return#12
char level_tile_directions::return#13
char level_tile_directions::return#2
char level_tile_directions::return#3
char level_tile_directions::return#4
char level_tile_directions::return#5
char level_tile_directions::return#6
char level_tile_directions::return#7
char level_tile_directions::return#8
char level_tile_directions::return#9
char level_tile_directions::xtile
char level_tile_directions::xtile#0
char level_tile_directions::xtile#1
char level_tile_directions::xtile#2
char level_tile_directions::xtile#3
char level_tile_directions::xtile#4
char level_tile_directions::xtile#5
char level_tile_directions::xtile#6
char level_tile_directions::ytile
char level_tile_directions::ytile#0
char level_tile_directions::ytile#1
char level_tile_directions::ytile#2
char level_tile_directions::ytile#3
char level_tile_directions::ytile#4
char level_tile_directions::ytile#5
char level_tile_directions::ytile#6
char *level_tile_directions::ytiles
char *level_tile_directions::ytiles#0
char level_tile_get(char xtile , char ytile)
bool level_tile_get::$0
bool level_tile_get::$1
bool level_tile_get::$2
bool level_tile_get::$3
char level_tile_get::$5
char level_tile_get::return
char level_tile_get::return#0
char level_tile_get::return#1
char level_tile_get::return#10
char level_tile_get::return#11
char level_tile_get::return#2
char level_tile_get::return#3
char level_tile_get::return#4
char level_tile_get::return#5
char level_tile_get::return#6
char level_tile_get::return#7
char level_tile_get::return#8
char level_tile_get::return#9
char level_tile_get::xtile
char level_tile_get::xtile#0
char level_tile_get::xtile#1
char level_tile_get::xtile#2
char level_tile_get::xtile#3
char level_tile_get::xtile#4
char level_tile_get::xtile#5
char level_tile_get::ytile
char level_tile_get::ytile#0
char level_tile_get::ytile#1
char level_tile_get::ytile#2
char level_tile_get::ytile#3
char level_tile_get::ytile#4
char level_tile_get::ytile#5
char *level_tile_get::ytiles
char *level_tile_get::ytiles#0
__loadstore volatile char logic_tile_left_idx
__loadstore volatile char * volatile logic_tile_ptr
__loadstore volatile char logic_tile_right_idx
__loadstore volatile char logic_tile_xcol
__loadstore volatile char logic_tile_yfine
void main()
void * memcpy(void *destination , void *source , unsigned int num)
bool memcpy::$1
char *memcpy::$2
void *memcpy::destination
void *memcpy::destination#0
void *memcpy::destination#1
void *memcpy::destination#2
void *memcpy::destination#3
void *memcpy::destination#4
char *memcpy::dst
char *memcpy::dst#0
char *memcpy::dst#1
char *memcpy::dst#2
char *memcpy::dst#3
unsigned int memcpy::num
unsigned int memcpy::num#0
unsigned int memcpy::num#1
void *memcpy::return
void *memcpy::return#0
void *memcpy::return#1
void *memcpy::return#2
void *memcpy::return#3
void *memcpy::source
void *memcpy::source#0
void *memcpy::source#1
char *memcpy::src
char *memcpy::src#0
char *memcpy::src#1
char *memcpy::src#2
char *memcpy::src#3
char *memcpy::src_end
char *memcpy::src_end#0
char *memcpy::src_end#1
char *memcpy::src_end#2
void * memset(void *str , char c , unsigned int num)
bool memset::$0
bool memset::$1
bool memset::$3
char *memset::$4
char memset::c
char memset::c#0
char memset::c#1
char memset::c#2
char memset::c#3
char memset::c#4
char memset::c#5
char memset::c#6
char memset::c#7
char memset::c#8
char *memset::dst
char *memset::dst#0
char *memset::dst#1
char *memset::dst#2
char *memset::dst#3
char *memset::end
char *memset::end#0
char *memset::end#1
char *memset::end#2
unsigned int memset::num
unsigned int memset::num#0
unsigned int memset::num#1
unsigned int memset::num#2
unsigned int memset::num#3
unsigned int memset::num#4
unsigned int memset::num#5
unsigned int memset::num#6
void *memset::return
void *memset::return#0
void *memset::return#1
void *memset::return#2
void *memset::return#3
void *memset::return#4
void *memset::return#5
void *memset::return#6
void *memset::return#7
void *memset::str
void *memset::str#0
void *memset::str#1
void *memset::str#2
void *memset::str#3
void *memset::str#4
void *memset::str#5
void *memset::str#6
void *memset::str#7
void *memset::str#8
void *memset::str#9
void merge_code(char *dest_code , char *raster_code , char *logic_code)
bool merge_code::$0
bool merge_code::$1
bool merge_code::$10
bool merge_code::$11
bool merge_code::$12
bool merge_code::$13
bool merge_code::$14
bool merge_code::$15
bool merge_code::$2
bool merge_code::$3
bool merge_code::$4
number merge_code::$5
bool merge_code::$6
bool merge_code::$7
bool merge_code::$8
bool merge_code::$9
__constant const char merge_code::LOGIC_END = $ff
__constant const char merge_code::LOGIC_EXIT = 0
__constant const char merge_code::RASTER_END = $ff
__constant const char merge_code::RASTER_EXIT = 0
char merge_code::cycle_budget
char merge_code::cycle_budget#0
char merge_code::cycle_budget#1
char merge_code::cycle_budget#10
char merge_code::cycle_budget#11
char merge_code::cycle_budget#12
char merge_code::cycle_budget#13
char merge_code::cycle_budget#2
char merge_code::cycle_budget#3
char merge_code::cycle_budget#4
char merge_code::cycle_budget#5
char merge_code::cycle_budget#6
char merge_code::cycle_budget#7
char merge_code::cycle_budget#8
char merge_code::cycle_budget#9
char *merge_code::dest_code
char *merge_code::dest_code#0
char *merge_code::dest_code#1
char *merge_code::dest_code#10
char *merge_code::dest_code#11
char *merge_code::dest_code#12
char *merge_code::dest_code#13
char *merge_code::dest_code#14
char *merge_code::dest_code#15
char *merge_code::dest_code#16
char *merge_code::dest_code#17
char *merge_code::dest_code#18
char *merge_code::dest_code#19
char *merge_code::dest_code#2
char *merge_code::dest_code#20
char *merge_code::dest_code#21
char *merge_code::dest_code#22
char *merge_code::dest_code#23
char *merge_code::dest_code#24
char *merge_code::dest_code#25
char *merge_code::dest_code#26
char *merge_code::dest_code#27
char *merge_code::dest_code#3
char *merge_code::dest_code#4
char *merge_code::dest_code#5
char *merge_code::dest_code#6
char *merge_code::dest_code#7
char *merge_code::dest_code#8
char *merge_code::dest_code#9
char *merge_code::logic_code
char *merge_code::logic_code#0
char *merge_code::logic_code#1
char *merge_code::logic_code#10
char *merge_code::logic_code#11
char *merge_code::logic_code#12
char *merge_code::logic_code#13
char *merge_code::logic_code#14
char *merge_code::logic_code#15
char *merge_code::logic_code#16
char *merge_code::logic_code#17
char *merge_code::logic_code#18
char *merge_code::logic_code#19
char *merge_code::logic_code#2
char *merge_code::logic_code#20
char *merge_code::logic_code#21
char *merge_code::logic_code#22
char *merge_code::logic_code#23
char *merge_code::logic_code#24
char *merge_code::logic_code#25
char *merge_code::logic_code#3
char *merge_code::logic_code#4
char *merge_code::logic_code#5
char *merge_code::logic_code#6
char *merge_code::logic_code#7
char *merge_code::logic_code#8
char *merge_code::logic_code#9
char merge_code::logic_cycles
char merge_code::logic_cycles#0
char merge_code::logic_cycles#1
char merge_code::logic_cycles#2
char merge_code::logic_cycles#3
char merge_code::logic_cycles#4
char *merge_code::raster_code
char *merge_code::raster_code#0
char *merge_code::raster_code#1
char *merge_code::raster_code#10
char *merge_code::raster_code#11
char *merge_code::raster_code#12
char *merge_code::raster_code#13
char *merge_code::raster_code#14
char *merge_code::raster_code#15
char *merge_code::raster_code#16
char *merge_code::raster_code#17
char *merge_code::raster_code#2
char *merge_code::raster_code#3
char *merge_code::raster_code#4
char *merge_code::raster_code#5
char *merge_code::raster_code#6
char *merge_code::raster_code#7
char *merge_code::raster_code#8
char *merge_code::raster_code#9
__constant void (* const musicInit)() = (void (*)())INTRO_MUSIC+0
__constant void (* const musicPlay)() = (void (*)())INTRO_MUSIC+6
__loadstore volatile char music_play_next
__loadstore volatile char pacman_ch1_enabled
__loadstore volatile char pacman_ch1_idx
__loadstore volatile char pacman_direction
__constant char pacman_frames[] = { 8, 8, 8, 8, 8, $18, $14, $18, 8, $20, $1c, $20, 0, 0, 0, 0, 8, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, $c, $10, $c }
__loadstore volatile char pacman_lives
void pacman_sound_init()
void pacman_sound_play()
bool pacman_sound_play::$0
unsigned int pacman_sound_play::$1
bool pacman_sound_play::$2
bool pacman_sound_play::$3
bool pacman_sound_play::$4
__loadstore volatile char pacman_substep
__loadstore volatile char pacman_wins
__loadstore volatile char pacman_xfine
__loadstore volatile char pacman_yfine
__loadstore volatile char phase
__loadstore volatile unsigned int pill_count
void render(char xcol , char ypos , char pixels)
char render::$1
number render::$2
unsigned int render::$3
bool render::$8
char *render::canvas1
char *render::canvas1#0
char *render::canvas1#1
char *render::canvas1#2
char *render::canvas1#3
char *render::canvas1#4
char *render::canvas2
char *render::canvas2#0
char *render::canvas2#1
char *render::canvas2#2
char *render::canvas2#3
char *render::canvas2#4
unsigned int render::canvas_offset
unsigned int render::canvas_offset#0
char render::i
char render::i#0
char render::i#1
char render::i#2
char render::i#3
char render::pixels
char render::pixels#0
char render::pixels#1
char render::pixels#2
char render::pixels#3
char render::pixels#4
char render::pixels#5
char *render::render_index_xcol
char *render::render_index_xcol#0
char render::xcol
char render::xcol#0
char render::xcol#1
char render::xcol#2
char render::ypix
char render::ypix#0
char render::ypix#1
char render::ypix#2
char render::ypos
char render::ypos#0
char render::ypos#1
char render::ypos#2
char render::ypos_inc_offset
char render::ypos_inc_offset#0
char render::ypos_inc_offset#1
char render::ypos_inc_offset#2
char render::ypos_inc_offset#3
char render::ytile
char render::ytile#0
void render_tiles(char xcol , char ytile , char tile_left , char tile_right)
number render_tiles::$0
bool render_tiles::$10
number render_tiles::$2
char render_tiles::$4
number render_tiles::$5
unsigned int render_tiles::$6
char *render_tiles::canvas1
char *render_tiles::canvas1#0
char *render_tiles::canvas1#1
char *render_tiles::canvas1#2
char *render_tiles::canvas1#3
char *render_tiles::canvas2
char *render_tiles::canvas2#0
char *render_tiles::canvas2#1
char *render_tiles::canvas2#2
char *render_tiles::canvas2#3
unsigned int render_tiles::canvas_offset
unsigned int render_tiles::canvas_offset#0
char render_tiles::pixels
char render_tiles::pixels#0
char *render_tiles::render_index_xcol
char *render_tiles::render_index_xcol#0
char render_tiles::tile_left
char render_tiles::tile_left#0
char render_tiles::tile_left#1
char *render_tiles::tile_left_pixels
char *render_tiles::tile_left_pixels#0
char *render_tiles::tile_left_pixels#1
char *render_tiles::tile_left_pixels#2
char render_tiles::tile_right
char render_tiles::tile_right#0
char render_tiles::tile_right#1
char *render_tiles::tile_right_pixels
char *render_tiles::tile_right_pixels#0
char *render_tiles::tile_right_pixels#1
char *render_tiles::tile_right_pixels#2
char render_tiles::xcol
char render_tiles::xcol#0
char render_tiles::xcol#1
char render_tiles::y
char render_tiles::y#0
char render_tiles::y#1
char render_tiles::y#2
char render_tiles::y#3
char render_tiles::ypos_inc_offset
char render_tiles::ypos_inc_offset#0
char render_tiles::ypos_inc_offset#1
char render_tiles::ypos_inc_offset#2
char render_tiles::ypos_inc_offset#3
char render_tiles::ytile
char render_tiles::ytile#0
char render_tiles::ytile#1
__loadstore char * volatile rigt_canvas
__loadstore char * volatile rigt_render_index_xcol
__loadstore volatile char rigt_ypos_inc_offset
__loadstore volatile char side_sprites_color
__loadstore volatile char side_sprites_mc
void spawn_all()
void splash_run()
char splash_run::$17
char splash_run::$18
bool splash_run::$22
number splash_run::$23
number splash_run::$24
char splash_run::$25
bool splash_run::$26
bool splash_run::$27
bool splash_run::$28
bool splash_run::$29
char splash_run::$30
bool splash_run::$31
bool splash_run::$32
char splash_run::$34
bool splash_run::$35
bool splash_run::$36
bool splash_run::$37
char splash_run::i
char splash_run::i#0
char splash_run::i#1
char splash_run::i#2
char splash_run::i#3
char splash_run::i#4
char splash_run::i#5
char splash_run::i1
char splash_run::i1#0
char splash_run::i1#1
char splash_run::i1#2
char splash_run::i1#3
char splash_run::i2
char splash_run::i2#0
char splash_run::i2#1
char splash_run::i2#2
char splash_run::i2#3
char splash_run::msb
char splash_run::msb#0
char splash_run::msb#1
char splash_run::msb#10
char splash_run::msb#11
char splash_run::msb#12
char splash_run::msb#13
char splash_run::msb#2
char splash_run::msb#3
char splash_run::msb#4
char splash_run::msb#5
char splash_run::msb#6
char splash_run::msb#7
char splash_run::msb#8
char splash_run::msb#9
__constant unsigned int splash_run::sprites_xpos[] = { $1e7, $13f, $10f, $df, $af, $7f, $4f, $1f }
number splash_run::toD0181_$0
number splash_run::toD0181_$1
char splash_run::toD0181_$2
char splash_run::toD0181_$3
number splash_run::toD0181_$4
number splash_run::toD0181_$5
number splash_run::toD0181_$6
unsigned int splash_run::toD0181_$7
char *splash_run::toD0181_gfx
char *splash_run::toD0181_gfx#0
char *splash_run::toD0181_gfx#1
char splash_run::toD0181_return
char splash_run::toD0181_return#0
char splash_run::toD0181_return#1
char splash_run::toD0181_return#2
char splash_run::toD0181_return#3
char *splash_run::toD0181_screen
char *splash_run::toD0181_screen#0
char *splash_run::toD0181_screen#1
char splash_run::toDd001_$0
number splash_run::toDd001_$1
number splash_run::toDd001_$2
char *splash_run::toDd001_gfx
char *splash_run::toDd001_gfx#0
char *splash_run::toDd001_gfx#1
char splash_run::toDd001_return
char splash_run::toDd001_return#0
char splash_run::toDd001_return#1
char splash_run::toDd001_return#2
char splash_run::toDd001_return#3
unsigned int splash_run::xpos
unsigned int splash_run::xpos#0
void splash_show()
bool splash_show::$0
bool splash_show::$1
char splash_show::pixels
char splash_show::pixels#0
char *splash_show::splash
char *splash_show::splash#0
char *splash_show::splash#1
char *splash_show::splash#2
char *splash_show::splash#3
char *splash_show::splash#4
char *splash_show::splash#5
char *splash_show::splash#6
char *splash_show::splash#7
char splash_show::xcol
char splash_show::xcol#0
char splash_show::xcol#1
char splash_show::xcol#2
char splash_show::xcol#3
char splash_show::xcol#4
char splash_show::xcol#5
char splash_show::xcol#6
char splash_show::xcol#7
char splash_show::ypos
char splash_show::ypos#0
char splash_show::ypos#1
char splash_show::ypos#2
char splash_show::ypos#3
char splash_show::ypos#4
__loadstore volatile char top_sprites_color
__loadstore volatile char top_sprites_mc
Adding number conversion cast (unumber) $a00 in
Adding number conversion cast (unumber) $a80 in
Adding number conversion cast (unumber) $b00 in
Adding number conversion cast (unumber) BOB_ROW_SIZE*6 in
Adding number conversion cast (unumber) 6 in
Adding number conversion cast (unumber) BOB_ROW_SIZE*$c in
Adding number conversion cast (unumber) $c in
Adding number conversion cast (unumber) BOB_ROW_SIZE*$12 in
Adding number conversion cast (unumber) $12 in
Adding number conversion cast (unumber) 2 in
Adding number conversion cast (unumber) 0 in
Adding number conversion cast (unumber) 6 in
Adding number conversion cast (unumber) $3fff in
Adding number conversion cast (unumber) 0 in memset::$0 = memset::num#5 > 0
Adding number conversion cast (unumber) 0 in merge_code::$3 = merge_code::cycle_budget#4 > 0
Adding number conversion cast (unumber) 1 in merge_code::$5 = merge_code::cycle_budget#5 - 1
Adding number conversion cast (unumber) merge_code::$5 in merge_code::$5 = merge_code::cycle_budget#5 - (unumber)1
Adding number conversion cast (unumber) 0 in merge_code::$12 = merge_code::cycle_budget#7 > 0
Adding number conversion cast (unumber) 3 in merge_code::$13 = merge_code::cycle_budget#8 == 3
Adding number conversion cast (unumber) $24 in *merge_code::dest_code#10 = $24
Adding number conversion cast (unumber) $ea in *merge_code::dest_code#2 = $ea
Adding number conversion cast (unumber) 3 in merge_code::cycle_budget#2 = merge_code::cycle_budget#9 - 3
Adding number conversion cast (unumber) $ea in *merge_code::dest_code#11 = $ea
Adding number conversion cast (unumber) 2 in merge_code::cycle_budget#3 = merge_code::cycle_budget#10 - 2
Adding number conversion cast (unumber) $60 in *merge_code::dest_code#12 = $60
Adding number conversion cast (unumber) $f in *((char *)SID+OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE) = $f
Adding number conversion cast (unumber) 0 in *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_FREQ) = 0
Adding number conversion cast (unumber) 0 in *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH) = 0
Adding number conversion cast (unumber) 0 in *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = 0
Adding number conversion cast (unumber) 0 in *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY) = 0
Adding number conversion cast (unumber) $f0 in *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE) = $f0
Adding number conversion cast (unumber) 0 in pacman_sound_play::$4 = 0 != pacman_ch1_enabled
Adding number conversion cast (unumber) 0 in pacman_ch1_idx = 0
Adding number conversion cast (unumber) 0 in pacman_ch1_enabled = 0
Adding number conversion cast (unumber) $1a in init_render_index::$0 = init_render_index::x_col#2 < $1a
Adding number conversion cast (unumber) $18 in init_render_index::$1 = init_render_index::x_col#3 >= $18
Adding number conversion cast (unumber) 0 in (RENDER_INDEX+$18*$100)[RENDER_OFFSET_YPOS_INC] = 0
Adding number conversion cast (unumber) $18*$100 in (RENDER_INDEX+$18*$100)[RENDER_OFFSET_YPOS_INC] = ((unumber)) 0
Adding number conversion cast (unumber) 0 in (RENDER_INDEX+$19*$100)[RENDER_OFFSET_YPOS_INC] = 0
Adding number conversion cast (unumber) $19*$100 in (RENDER_INDEX+$19*$100)[RENDER_OFFSET_YPOS_INC] = ((unumber)) 0
Adding number conversion cast (unumber) $b in init_render_index::ypos_inc_offset#1 = $b
Adding number conversion cast (unumber) $94 in init_render_index::$3 = init_render_index::y_pos#2 < $94
Adding number conversion cast (unumber) 2 in init_render_index::ypos_inc_offset#2 = init_render_index::ypos_inc_offset#4 + 2
Adding number conversion cast (unumber) $17 in init_render_index::$7 = init_render_index::ypos_inc_offset#2 >= $17
Adding number conversion cast (unumber) $100 in init_render_index::render_index#1 = init_render_index::render_index#3 + $100
Adding number conversion cast (unumber) 2 in init_render_index::y_pos#1 = init_render_index::y_pos#4 + 2
Adding number conversion cast (unumber) $15 in init_render_index::ypos_inc_offset#3 = init_render_index::ypos_inc_offset#5 - $15
Adding number conversion cast (unumber) 4 in render::ytile#0 = render::ypos#2 / 4
Adding number conversion cast (unumber) 2 in render::$2 = render::ytile#0 * 2
Adding number conversion cast (unumber) render::$2 in render::$2 = render::ytile#0 * (unumber)2
Adding number conversion cast (unumber) 3 in render::ypix#0 = render::ypos#2 & 3
Adding number conversion cast (unumber) 4 in render_tiles::$0 = render_tiles::tile_left#1 * 4
Adding number conversion cast (unumber) render_tiles::$0 in render_tiles::$0 = render_tiles::tile_left#1 * (unumber)4
Adding number conversion cast (unumber) 4 in render_tiles::$2 = render_tiles::tile_right#1 * 4
Adding number conversion cast (unumber) render_tiles::$2 in render_tiles::$2 = render_tiles::tile_right#1 * (unumber)4
Adding number conversion cast (unumber) 2 in render_tiles::$5 = render_tiles::ytile#1 * 2
Adding number conversion cast (unumber) render_tiles::$5 in render_tiles::$5 = render_tiles::ytile#1 * (unumber)2
Adding number conversion cast (unumber) 4 in render_tiles::$10 = render_tiles::y#2 < 4
Adding number conversion cast (unumber) NUM_BOBS*2 in init_bobs_restore::$0 = init_bobs_restore::bob#2 < NUM_BOBS*2
Adding number conversion cast (unumber) 2 in init_bobs_restore::$0 = init_bobs_restore::bob#2 < (unumber)NUM_BOBS*2
Adding number conversion cast (unumber) $c in logic_tile_ptr = LEVEL_TILES+$40*$12+$c
Adding number conversion cast (unumber) $40*$12 in logic_tile_ptr = LEVEL_TILES+$40*$12+(unumber)$c
Adding number conversion cast (unumber) $c in logic_tile_xcol = $c
Adding number conversion cast (unumber) $23 in logic_tile_yfine = $23
Adding number conversion cast (unumber) 0 in init_bobs_restore::bob_restore#2[init_bobs_restore::i#3] = 0
Adding number conversion cast (unumber) 0 in init_bobs_restore::bob_restore#3[0] = init_bobs_restore::$2
Adding number conversion cast (unumber) 1 in init_bobs_restore::bob_restore#3[1] = init_bobs_restore::$3
Adding number conversion cast (unumber) 3 in init_bobs_restore::bob_restore#3[3] = init_bobs_restore::$4
Adding number conversion cast (unumber) 4 in init_bobs_restore::bob_restore#3[4] = init_bobs_restore::$5
Adding number conversion cast (unumber) 0 in game_playable = 0
Adding number conversion cast (unumber) 0 in phase = 0
Adding number conversion cast (unumber) $2f in done_run::$1 = done_run::i#2 < $2f
Adding number conversion cast (unumber) 0 in ((char *)SID)[done_run::i#3] = 0
Adding number conversion cast (unumber) 4 in done_run::$2 = done_run::i1#2 < 4
Adding number conversion cast (unumber) $a in bobs_xcol[done_run::i1#3] = $a
Adding number conversion cast (unumber) $2d in bobs_yfine[done_run::i1#3] = $2d
Adding number conversion cast (unumber) 0 in bobs_bob_id[done_run::i1#3] = 0
Adding number conversion cast (unumber) 0 in done_run::$12 = 0 != pacman_wins
Adding number conversion cast (unumber) $19 in done_run::$5 = done_run::xcol#2 < $19
Adding number conversion cast (unumber) 0 in music_play_next = 0
Adding number conversion cast (unumber) $19 in done_run::$6 = done_run::ypos#2 < $19
Adding number conversion cast (unumber) 0 in done_run::$13 = 0 != done_run::$8
Adding number conversion cast (unumber) 0 in done_run::$14 = 0 != music_play_next
Adding number conversion cast (unumber) 0 in music_play_next = 0
Adding number conversion cast (unumber) 0 in memset::c#0 = 0
Adding number conversion cast (unumber) $c00 in memset::num#0 = $c00
Adding number conversion cast (unumber) $2000 in memset::str#1 = (void *)BANK_1+$2000
Adding number conversion cast (unumber) 0 in memset::c#1 = 0
Adding number conversion cast (unumber) $1fff in memset::num#1 = $1fff
Adding number conversion cast (unumber) 0 in memset::c#2 = 0
Adding number conversion cast (unumber) $3fff in memset::num#2 = $3fff
Adding number conversion cast (unumber) 0 in memset::c#3 = 0
Adding number conversion cast (unumber) $1fff in memset::num#3 = $1fff
Adding number conversion cast (unumber) 0 in memset::c#4 = 0
Adding number conversion cast (unumber) 8 in splash_run::$22 = splash_run::i#2 < 8
Adding number conversion cast (unumber) 2 in splash_run::$23 = splash_run::i#3 * 2
Adding number conversion cast (unumber) splash_run::$23 in splash_run::$23 = splash_run::i#3 * (unumber)2
Adding number conversion cast (unumber) 7 in SPRITES_YPOS[splash_run::$23] = 7
Adding number conversion cast (unumber) 2 in splash_run::$24 = splash_run::i#3 * 2
Adding number conversion cast (unumber) splash_run::$24 in splash_run::$24 = splash_run::i#3 * (unumber)2
Adding number conversion cast (unumber) 2 in splash_run::msb#1 = splash_run::msb#3 / 2
Adding number conversion cast (unumber) 0 in splash_run::$35 = 0 != splash_run::$25
Adding number conversion cast (unumber) $40 in splash_run::toDd001_$1 = splash_run::toDd001_$0 / $40
Adding number conversion cast (unumber) splash_run::toDd001_$1 in splash_run::toDd001_$1 = splash_run::toDd001_$0 / (unumber)$40
Adding number conversion cast (unumber) 3 in splash_run::toDd001_$2 = 3 ^ splash_run::toDd001_$1
Adding number conversion cast (unumber) splash_run::toDd001_$2 in splash_run::toDd001_$2 = (unumber)3 ^ splash_run::toDd001_$1
Adding number conversion cast (unumber) $3fff in splash_run::toD0181_$0 = splash_run::toD0181_$7 & $3fff
Adding number conversion cast (unumber) splash_run::toD0181_$0 in splash_run::toD0181_$0 = splash_run::toD0181_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in splash_run::toD0181_$1 = splash_run::toD0181_$0 * 4
Adding number conversion cast (unumber) splash_run::toD0181_$1 in splash_run::toD0181_$1 = splash_run::toD0181_$0 * (unumber)4
Adding number conversion cast (unumber) 4 in splash_run::toD0181_$4 = splash_run::toD0181_$3 / 4
Adding number conversion cast (unumber) splash_run::toD0181_$4 in splash_run::toD0181_$4 = splash_run::toD0181_$3 / (unumber)4
Adding number conversion cast (unumber) $f in splash_run::toD0181_$5 = splash_run::toD0181_$4 & $f
Adding number conversion cast (unumber) splash_run::toD0181_$5 in splash_run::toD0181_$5 = splash_run::toD0181_$4 & (unumber)$f
Adding number conversion cast (unumber) splash_run::toD0181_$6 in splash_run::toD0181_$6 = splash_run::toD0181_$2 | splash_run::toD0181_$5
Adding number conversion cast (unumber) $ff in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $ff
Adding number conversion cast (unumber) $ff in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $ff
Adding number conversion cast (unumber) 3 in top_sprites_mc = 3
Adding number conversion cast (unumber) 0 in side_sprites_mc = 0
Adding number conversion cast (unumber) 3 in bottom_sprites_mc = 3
Adding number conversion cast (unumber) $80 in splash_run::msb#2 = splash_run::msb#5 | $80
Adding number conversion cast (unumber) 8 in splash_run::$27 = splash_run::i1#2 < 8
Adding number conversion cast (unumber) 8 in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = 8
Adding number conversion cast (unumber) 4 in splash_run::$28 = splash_run::i2#2 < 4
Adding number conversion cast (unumber) $a in bobs_xcol[splash_run::i2#3] = $a
Adding number conversion cast (unumber) $2d in bobs_yfine[splash_run::i2#3] = $2d
Adding number conversion cast (unumber) 0 in bobs_bob_id[splash_run::i2#3] = 0
Adding number conversion cast (unumber) 0 in phase = 0
Adding number conversion cast (unumber) $fa in splash_run::$29 = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) != $fa
Adding number conversion cast (unumber) $f in *IRQ_STATUS = $f
Adding number conversion cast (unumber) 0 in music_play_next = 0
Adding number conversion cast (unumber) 0 in splash_run::$36 = 0 != splash_run::$30
Adding number conversion cast (unumber) 0 in splash_run::$37 = 0 != music_play_next
Adding number conversion cast (unumber) 0 in music_play_next = 0
Adding number conversion cast (unumber) $2f in gameplay_run::$8 = gameplay_run::i#2 < $2f
Adding number conversion cast (unumber) 0 in ((char *)SID)[gameplay_run::i#3] = 0
Adding number conversion cast (unumber) 0 in pacman_wins = 0
Adding number conversion cast (unumber) 3 in pacman_lives = 3
Adding number conversion cast (unumber) 8 in gameplay_run::$9 = gameplay_run::i1#2 < 8
Adding number conversion cast (unumber) $ff in top_sprites_mc = $ff
Adding number conversion cast (unumber) $ff in side_sprites_mc = $ff
Adding number conversion cast (unumber) $ff in bottom_sprites_mc = $ff
Adding number conversion cast (unumber) 8 in gameplay_run::$10 = gameplay_run::i2#2 < 8
Adding number conversion cast (unumber) 1 in phase = 1
Adding number conversion cast (unumber) 1 in game_playable = 1
Adding number conversion cast (unumber) $fb in gameplay_run::$11 = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) != $fb
Adding number conversion cast (unumber) $fa in gameplay_run::$12 = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) != $fa
Adding number conversion cast (unumber) $f in *IRQ_STATUS = $f
Adding number conversion cast (unumber) 0 in gameplay_run::$13 = pacman_lives == 0
Adding number conversion cast (unumber) 0 in *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 0
Adding number conversion cast (unumber) $10 in joyfire::$0 = *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A) & $10
Adding number conversion cast (unumber) joyfire::$0 in joyfire::$0 = *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A) & (unumber)$10
Adding number conversion cast (unumber) 0 in joyfire::$1 = joyfire::$0 == 0
Adding number conversion cast (unumber) 1 in joyfire::return#2 = 1
Adding number conversion cast (unumber) 0 in joyfire::return#3 = 0
Adding number conversion cast (unumber) $19 in splash_show::$0 = splash_show::xcol#2 < $19
Adding number conversion cast (unumber) $93 in splash_show::$1 = splash_show::ypos#2 < $93
Adding number conversion cast (unumber) $25 in level_show::$0 = level_show::ytile#2 < $25
Adding number conversion cast (unumber) $19 in level_show::$1 = level_show::xcol#2 < $19
Adding number conversion cast (unumber) $40 in level_show::level#1 = level_show::level#3 + $40
Adding number conversion cast (unumber) $31 in level_tile_get::$0 = level_tile_get::xtile#4 > $31
Adding number conversion cast (unumber) $24 in level_tile_get::$1 = level_tile_get::ytile#4 > $24
Adding number conversion cast (unumber) 0 in level_tile_get::return#1 = 0
Adding number conversion cast (unumber) $31 in level_tile_directions::$0 = level_tile_directions::xtile#5 > $31
Adding number conversion cast (unumber) $24 in level_tile_directions::$1 = level_tile_directions::ytile#5 > $24
Adding number conversion cast (unumber) 0 in level_tile_directions::return#1 = 0
Adding number conversion cast (unumber) $25 in init_level_tile_directions::$0 = init_level_tile_directions::ytile#2 < $25
Adding number conversion cast (unumber) $32 in init_level_tile_directions::$1 = init_level_tile_directions::xtile#2 < $32
Adding number conversion cast (unumber) 1 in init_level_tile_directions::$2 = init_level_tile_directions::xtile#3 - 1
Adding number conversion cast (unumber) init_level_tile_directions::$2 in init_level_tile_directions::$2 = init_level_tile_directions::xtile#3 - (unumber)1
Adding number conversion cast (unumber) $40 in init_level_tile_directions::directions#1 = init_level_tile_directions::directions#2 + $40
Adding number conversion cast (unumber) 1 in init_level_tile_directions::$6 = init_level_tile_directions::xtile#4 + 1
Adding number conversion cast (unumber) init_level_tile_directions::$6 in init_level_tile_directions::$6 = init_level_tile_directions::xtile#4 + (unumber)1
Adding number conversion cast (unumber) 1 in init_level_tile_directions::$10 = init_level_tile_directions::ytile#6 - 1
Adding number conversion cast (unumber) init_level_tile_directions::$10 in init_level_tile_directions::$10 = init_level_tile_directions::ytile#6 - (unumber)1
Adding number conversion cast (unumber) 1 in init_level_tile_directions::$14 = init_level_tile_directions::ytile#7 + 1
Adding number conversion cast (unumber) init_level_tile_directions::$14 in init_level_tile_directions::$14 = init_level_tile_directions::ytile#7 + (unumber)1
Adding number conversion cast (unumber) $e in init_sprite_pointers::$0 = init_sprite_pointers::screen#2 < $e
Adding number conversion cast (unumber) 8 in init_sprite_pointers::$1 = init_sprite_pointers::sprite#2 < 8
Adding number conversion cast (unumber) $400 in init_sprite_pointers::sprites_ptr_1#1 = init_sprite_pointers::sprites_ptr_1#3 + $400
Adding number conversion cast (unumber) $400 in init_sprite_pointers::sprites_ptr_2#1 = init_sprite_pointers::sprites_ptr_2#3 + $400
Adding number conversion cast (unumber) 7 in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y) = 7
Adding number conversion cast (unumber) 7 in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y) = 7
Adding number conversion cast (unumber) 7 in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y) = 7
Adding number conversion cast (unumber) 7 in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y) = 7
Adding number conversion cast (unumber) 7 in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y) = 7
Adding number conversion cast (unumber) 7 in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y) = 7
Adding number conversion cast (unumber) 7 in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y) = 7
Adding number conversion cast (unumber) 7 in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y) = 7
Adding number conversion cast (unumber) $3fff in irq_screen_top::toD0181_$0 = irq_screen_top::toD0181_$7 & $3fff
Adding number conversion cast (unumber) irq_screen_top::toD0181_$0 in irq_screen_top::toD0181_$0 = irq_screen_top::toD0181_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in irq_screen_top::toD0181_$1 = irq_screen_top::toD0181_$0 * 4
Adding number conversion cast (unumber) irq_screen_top::toD0181_$1 in irq_screen_top::toD0181_$1 = irq_screen_top::toD0181_$0 * (unumber)4
Adding number conversion cast (unumber) 4 in irq_screen_top::toD0181_$4 = irq_screen_top::toD0181_$3 / 4
Adding number conversion cast (unumber) irq_screen_top::toD0181_$4 in irq_screen_top::toD0181_$4 = irq_screen_top::toD0181_$3 / (unumber)4
Adding number conversion cast (unumber) $f in irq_screen_top::toD0181_$5 = irq_screen_top::toD0181_$4 & $f
Adding number conversion cast (unumber) irq_screen_top::toD0181_$5 in irq_screen_top::toD0181_$5 = irq_screen_top::toD0181_$4 & (unumber)$f
Adding number conversion cast (unumber) irq_screen_top::toD0181_$6 in irq_screen_top::toD0181_$6 = irq_screen_top::toD0181_$2 | irq_screen_top::toD0181_$5
Adding number conversion cast (unumber) 1 in irq_screen_top::$1 = frame + 1
Adding number conversion cast (unumber) irq_screen_top::$1 in irq_screen_top::$1 = frame + (unumber)1
Adding number conversion cast (unumber) 1 in irq_screen_top::$2 = irq_screen_top::$1 & 1
Adding number conversion cast (unumber) irq_screen_top::$2 in irq_screen_top::$2 = irq_screen_top::$1 & (unumber)1
Adding number conversion cast (unumber) 0 in irq_screen_top::$8 = 0 != frame
Adding number conversion cast (unumber) $40 in irq_screen_top::toDd001_$1 = irq_screen_top::toDd001_$0 / $40
Adding number conversion cast (unumber) irq_screen_top::toDd001_$1 in irq_screen_top::toDd001_$1 = irq_screen_top::toDd001_$0 / (unumber)$40
Adding number conversion cast (unumber) 3 in irq_screen_top::toDd001_$2 = 3 ^ irq_screen_top::toDd001_$1
Adding number conversion cast (unumber) irq_screen_top::toDd001_$2 in irq_screen_top::toDd001_$2 = (unumber)3 ^ irq_screen_top::toDd001_$1
Adding number conversion cast (unumber) 0 in bobs_restore_base = 0
Adding number conversion cast (unumber) $40 in irq_screen_top::toDd002_$1 = irq_screen_top::toDd002_$0 / $40
Adding number conversion cast (unumber) irq_screen_top::toDd002_$1 in irq_screen_top::toDd002_$1 = irq_screen_top::toDd002_$0 / (unumber)$40
Adding number conversion cast (unumber) 3 in irq_screen_top::toDd002_$2 = 3 ^ irq_screen_top::toDd002_$1
Adding number conversion cast (unumber) irq_screen_top::toDd002_$2 in irq_screen_top::toDd002_$2 = (unumber)3 ^ irq_screen_top::toDd002_$1
Adding number conversion cast (unumber) 0 in irq_screen_top::$3 = phase == 0
Adding number conversion cast (unumber) 1 in music_play_next = 1
Adding number conversion cast (unumber) 0 in game_logic::$0 = game_playable == 0
Adding number conversion cast (unumber) 1 in game_logic::$2 = game_logic_substep + 1
Adding number conversion cast (unumber) game_logic::$2 in game_logic::$2 = game_logic_substep + (unumber)1
Adding number conversion cast (unumber) 7 in game_logic::$3 = game_logic::$2 & 7
Adding number conversion cast (unumber) game_logic::$3 in game_logic::$3 = game_logic::$2 & (unumber)7
Adding number conversion cast (unumber) 0 in game_logic::$4 = game_logic_substep == 0
Adding number conversion cast (unumber) 1 in game_logic::$5 = game_logic_substep == 1
Adding number conversion cast (unumber) 0 in game_logic::$211 = 0 != ghost1_respawn
Adding number conversion cast (unumber) 2 in game_logic::$6 = game_logic_substep == 2
Adding number conversion cast (unumber) 0 in game_logic::$212 = 0 != ghost2_respawn
Adding number conversion cast (unumber) 4 in game_logic::$7 = game_logic_substep == 4
Adding number conversion cast (unumber) 0 in game_logic::$213 = 0 != ghost3_respawn
Adding number conversion cast (unumber) 5 in game_logic::$8 = game_logic_substep == 5
Adding number conversion cast (unumber) 0 in game_logic::$214 = 0 != ghost4_respawn
Adding number conversion cast (unumber) 6 in game_logic::$9 = game_logic_substep == 6
Adding number conversion cast (unumber) 3 in game_logic::$10 = game_logic_substep == 3
Adding number conversion cast (unumber) 7 in game_logic::$11 = game_logic_substep == 7
Adding number conversion cast (unumber) 1 in game_logic::$14 = anim_frame_idx + 1
Adding number conversion cast (unumber) game_logic::$14 in game_logic::$14 = anim_frame_idx + (unumber)1
Adding number conversion cast (unumber) 3 in game_logic::$15 = game_logic::$14 & 3
Adding number conversion cast (unumber) game_logic::$15 in game_logic::$15 = game_logic::$14 & (unumber)3
Adding number conversion cast (unumber) 1 in game_logic::pacman_bob_xfine#0 = pacman_xfine - 1
Adding number conversion cast (unumber) 4 in game_logic::$17 = game_logic::pacman_bob_xfine#0 / 4
Adding number conversion cast (unumber) game_logic::$17 in game_logic::$17 = game_logic::pacman_bob_xfine#0 / (unumber)4
Adding number conversion cast (unumber) 0 in bobs_xcol[0] = game_logic::$17
Adding number conversion cast (unumber) 1 in game_logic::$18 = pacman_yfine - 1
Adding number conversion cast (unumber) game_logic::$18 in game_logic::$18 = pacman_yfine - (unumber)1
Adding number conversion cast (unumber) 0 in bobs_yfine[0] = game_logic::$18
Adding number conversion cast (unumber) 3 in game_logic::$20 = game_logic::pacman_bob_xfine#0 & 3
Adding number conversion cast (unumber) game_logic::$20 in game_logic::$20 = game_logic::pacman_bob_xfine#0 & (unumber)3
Adding number conversion cast (unumber) game_logic::$21 in game_logic::$21 = pacman_frames[game_logic::$19] + game_logic::$20
Adding number conversion cast (unumber) 0 in bobs_bob_id[0] = game_logic::$21
Adding number conversion cast (unumber) 1 in game_logic::ghost1_bob_xfine#0 = ghost1_xfine - 1
Adding number conversion cast (unumber) 4 in game_logic::$25 = game_logic::ghost1_bob_xfine#0 / 4
Adding number conversion cast (unumber) game_logic::$25 in game_logic::$25 = game_logic::ghost1_bob_xfine#0 / (unumber)4
Adding number conversion cast (unumber) 1 in bobs_xcol[1] = game_logic::$25
Adding number conversion cast (unumber) 1 in game_logic::$26 = ghost1_yfine - 1
Adding number conversion cast (unumber) game_logic::$26 in game_logic::$26 = ghost1_yfine - (unumber)1
Adding number conversion cast (unumber) 1 in bobs_yfine[1] = game_logic::$26
Adding number conversion cast (unumber) 3 in game_logic::$28 = game_logic::ghost1_bob_xfine#0 & 3
Adding number conversion cast (unumber) game_logic::$28 in game_logic::$28 = game_logic::ghost1_bob_xfine#0 & (unumber)3
Adding number conversion cast (unumber) game_logic::$29 in game_logic::$29 = ghost_frames[game_logic::$27] + game_logic::$28
Adding number conversion cast (unumber) 1 in bobs_bob_id[1] = game_logic::$29
Adding number conversion cast (unumber) 1 in game_logic::ghost2_bob_xfine#0 = ghost2_xfine - 1
Adding number conversion cast (unumber) 4 in game_logic::$31 = game_logic::ghost2_bob_xfine#0 / 4
Adding number conversion cast (unumber) game_logic::$31 in game_logic::$31 = game_logic::ghost2_bob_xfine#0 / (unumber)4
Adding number conversion cast (unumber) 2 in bobs_xcol[2] = game_logic::$31
Adding number conversion cast (unumber) 1 in game_logic::$32 = ghost2_yfine - 1
Adding number conversion cast (unumber) game_logic::$32 in game_logic::$32 = ghost2_yfine - (unumber)1
Adding number conversion cast (unumber) 2 in bobs_yfine[2] = game_logic::$32
Adding number conversion cast (unumber) 3 in game_logic::$34 = game_logic::ghost2_bob_xfine#0 & 3
Adding number conversion cast (unumber) game_logic::$34 in game_logic::$34 = game_logic::ghost2_bob_xfine#0 & (unumber)3
Adding number conversion cast (unumber) game_logic::$35 in game_logic::$35 = ghost_frames[game_logic::$33] + game_logic::$34
Adding number conversion cast (unumber) 2 in bobs_bob_id[2] = game_logic::$35
Adding number conversion cast (unumber) 1 in game_logic::ghost3_bob_xfine#0 = ghost3_xfine - 1
Adding number conversion cast (unumber) 4 in game_logic::$37 = game_logic::ghost3_bob_xfine#0 / 4
Adding number conversion cast (unumber) game_logic::$37 in game_logic::$37 = game_logic::ghost3_bob_xfine#0 / (unumber)4
Adding number conversion cast (unumber) 3 in bobs_xcol[3] = game_logic::$37
Adding number conversion cast (unumber) 1 in game_logic::$38 = ghost3_yfine - 1
Adding number conversion cast (unumber) game_logic::$38 in game_logic::$38 = ghost3_yfine - (unumber)1
Adding number conversion cast (unumber) 3 in bobs_yfine[3] = game_logic::$38
Adding number conversion cast (unumber) 3 in game_logic::$40 = game_logic::ghost3_bob_xfine#0 & 3
Adding number conversion cast (unumber) game_logic::$40 in game_logic::$40 = game_logic::ghost3_bob_xfine#0 & (unumber)3
Adding number conversion cast (unumber) game_logic::$41 in game_logic::$41 = ghost_frames[game_logic::$39] + game_logic::$40
Adding number conversion cast (unumber) 3 in bobs_bob_id[3] = game_logic::$41
Adding number conversion cast (unumber) 1 in game_logic::ghost4_bob_xfine#0 = ghost4_xfine - 1
Adding number conversion cast (unumber) 4 in game_logic::$43 = game_logic::ghost4_bob_xfine#0 / 4
Adding number conversion cast (unumber) game_logic::$43 in game_logic::$43 = game_logic::ghost4_bob_xfine#0 / (unumber)4
Adding number conversion cast (unumber) 4 in bobs_xcol[4] = game_logic::$43
Adding number conversion cast (unumber) 1 in game_logic::$44 = ghost4_yfine - 1
Adding number conversion cast (unumber) game_logic::$44 in game_logic::$44 = ghost4_yfine - (unumber)1
Adding number conversion cast (unumber) 4 in bobs_yfine[4] = game_logic::$44
Adding number conversion cast (unumber) 3 in game_logic::$46 = game_logic::ghost4_bob_xfine#0 & 3
Adding number conversion cast (unumber) game_logic::$46 in game_logic::$46 = game_logic::ghost4_bob_xfine#0 & (unumber)3
Adding number conversion cast (unumber) game_logic::$47 in game_logic::$47 = ghost_frames[game_logic::$45] + game_logic::$46
Adding number conversion cast (unumber) 4 in bobs_bob_id[4] = game_logic::$47
Adding number conversion cast (unumber) $40 in game_logic::ghost_frame_idx#1 = game_logic::ghost_frame_idx#3 | $40
Adding number conversion cast (unumber) $32 in game_logic::$56 = ghosts_mode_count > $32
Adding number conversion cast (unumber) $96 in game_logic::$54 = ghosts_mode_count > $96
Adding number conversion cast (unumber) $32 in game_logic::$52 = ghosts_mode_count > $32
Adding number conversion cast (unumber) 0 in ghosts_mode_count = 0
Adding number conversion cast (unumber) 1 in game_logic::do_reverse#1 = 1
Adding number conversion cast (unumber) 0 in ghosts_mode_count = 0
Adding number conversion cast (unumber) 1 in game_logic::do_reverse#2 = 1
Adding number conversion cast (unumber) 0 in game_logic::$219 = 0 != game_logic::do_reverse#4
Adding number conversion cast (unumber) 0 in ghosts_mode_count = 0
Adding number conversion cast (unumber) 1 in game_logic::do_reverse#3 = 1
Adding number conversion cast (unumber) 2 in game_logic::pacman_xtile#0 = pacman_xfine / 2
Adding number conversion cast (unumber) 2 in game_logic::pacman_ytile#0 = pacman_yfine / 2
Adding number conversion cast (unumber) 1 in ghost1_reverse = 1
Adding number conversion cast (unumber) 1 in ghost2_reverse = 1
Adding number conversion cast (unumber) 1 in ghost3_reverse = 1
Adding number conversion cast (unumber) 1 in ghost4_reverse = 1
Adding number conversion cast (unumber) 2 in game_logic::$69 = game_logic::pacman_xtile#1 / 2
Adding number conversion cast (unumber) game_logic::$69 in game_logic::$69 = game_logic::pacman_xtile#1 / (unumber)2
Adding number conversion cast (unumber) $fe in game_logic::$70 = game_logic::pacman_xtile#1 & $fe
Adding number conversion cast (unumber) game_logic::$70 in game_logic::$70 = game_logic::pacman_xtile#1 & (unumber)$fe
Adding number conversion cast (unumber) 2 in game_logic::$72 = game_logic::pacman_ytile#1 * 2
Adding number conversion cast (unumber) game_logic::$72 in game_logic::$72 = game_logic::pacman_ytile#1 * (unumber)2
Adding number conversion cast (unumber) 0 in game_logic::$73 = pill_count == 0
Adding number conversion cast (unumber) 2 in game_logic::$65 = game_logic::pacman_xtile#2 / 2
Adding number conversion cast (unumber) game_logic::$65 in game_logic::$65 = game_logic::pacman_xtile#2 / (unumber)2
Adding number conversion cast (unumber) $fe in game_logic::$66 = game_logic::pacman_xtile#2 & $fe
Adding number conversion cast (unumber) game_logic::$66 in game_logic::$66 = game_logic::pacman_xtile#2 & (unumber)$fe
Adding number conversion cast (unumber) 2 in game_logic::$68 = game_logic::pacman_ytile#2 * 2
Adding number conversion cast (unumber) game_logic::$68 in game_logic::$68 = game_logic::pacman_ytile#2 * (unumber)2
Adding number conversion cast (unumber) 0 in ghosts_mode_count = 0
Adding number conversion cast (unumber) 2 in game_logic::$76 = ABS[game_logic::$75] < 2
Adding number conversion cast (unumber) 2 in game_logic::$78 = ABS[game_logic::$77] < 2
Adding number conversion cast (unumber) 1 in pacman_wins = 1
Adding number conversion cast (unumber) 2 in game_logic::$81 = ABS[game_logic::$80] < 2
Adding number conversion cast (unumber) 2 in game_logic::$83 = ABS[game_logic::$82] < 2
Adding number conversion cast (unumber) 2 in game_logic::$86 = ABS[game_logic::$85] < 2
Adding number conversion cast (unumber) 2 in game_logic::$88 = ABS[game_logic::$87] < 2
Adding number conversion cast (unumber) 2 in game_logic::$91 = ABS[game_logic::$90] < 2
Adding number conversion cast (unumber) 2 in game_logic::$93 = ABS[game_logic::$92] < 2
Adding number conversion cast (unumber) $32 in ghost4_xfine = $32
Adding number conversion cast (unumber) $23 in ghost4_yfine = $23
Adding number conversion cast (unumber) 0 in ghost4_substep = 0
Adding number conversion cast (unumber) $32 in ghost4_respawn = $32
Adding number conversion cast (unumber) $32 in ghost3_xfine = $32
Adding number conversion cast (unumber) $23 in ghost3_yfine = $23
Adding number conversion cast (unumber) 0 in ghost3_substep = 0
Adding number conversion cast (unumber) $32 in ghost3_respawn = $32
Adding number conversion cast (unumber) $32 in ghost2_xfine = $32
Adding number conversion cast (unumber) $23 in ghost2_yfine = $23
Adding number conversion cast (unumber) 0 in ghost2_substep = 0
Adding number conversion cast (unumber) $32 in ghost2_respawn = $32
Adding number conversion cast (unumber) $32 in ghost1_xfine = $32
Adding number conversion cast (unumber) $23 in ghost1_yfine = $23
Adding number conversion cast (unumber) 0 in ghost1_substep = 0
Adding number conversion cast (unumber) $32 in ghost1_respawn = $32
Adding number conversion cast (unumber) 0 in game_logic::$123 = ghost4_respawn == 0
Adding number conversion cast (unumber) 0 in game_logic::$109 = ghost4_substep == 0
Adding number conversion cast (unumber) 1 in ghost4_substep = 1
Adding number conversion cast (unumber) 1 in game_logic::$120 = ghost4_xfine == 1
Adding number conversion cast (unumber) 0 in ghost4_substep = 0
Adding number conversion cast (unumber) 0 in game_logic::$215 = 0 != ghost4_reverse
Adding number conversion cast (unumber) 0 in ghost4_reverse = 0
Adding number conversion cast (unumber) 2 in game_logic::ghost4_xtile#0 = ghost4_xfine / 2
Adding number conversion cast (unumber) 2 in game_logic::ghost4_ytile#0 = ghost4_yfine / 2
Adding number conversion cast (unumber) 2 in game_logic::target_xtile#1 = 2
Adding number conversion cast (unumber) 2 in game_logic::target_ytile#1 = 2
Adding number conversion cast (unumber) 2 in game_logic::$117 = pacman_xfine / 2
Adding number conversion cast (unumber) game_logic::$117 in game_logic::$117 = pacman_xfine / (unumber)2
Adding number conversion cast (unumber) 2 in game_logic::$118 = pacman_yfine / 2
Adding number conversion cast (unumber) game_logic::$118 in game_logic::$118 = pacman_yfine / (unumber)2
Adding number conversion cast (unumber) $61 in ghost4_xfine = $61
Adding number conversion cast (unumber) $61 in game_logic::$121 = ghost4_xfine == $61
Adding number conversion cast (unumber) 1 in ghost4_xfine = 1
Adding number conversion cast (unumber) 2 in ghost4_xfine = 2
Adding number conversion cast (unumber) 2 in ghost4_yfine = 2
Adding number conversion cast (unumber) 0 in ghost4_substep = 0
Adding number conversion cast (unumber) 0 in game_logic::$144 = ghost3_respawn == 0
Adding number conversion cast (unumber) 0 in game_logic::$130 = ghost3_substep == 0
Adding number conversion cast (unumber) 1 in ghost3_substep = 1
Adding number conversion cast (unumber) 1 in game_logic::$141 = ghost3_xfine == 1
Adding number conversion cast (unumber) 0 in ghost3_substep = 0
Adding number conversion cast (unumber) 0 in game_logic::$216 = 0 != ghost3_reverse
Adding number conversion cast (unumber) 0 in ghost3_reverse = 0
Adding number conversion cast (unumber) 2 in game_logic::ghost3_xtile#0 = ghost3_xfine / 2
Adding number conversion cast (unumber) 2 in game_logic::ghost3_ytile#0 = ghost3_yfine / 2
Adding number conversion cast (unumber) 2 in game_logic::target_xtile1#1 = 2
Adding number conversion cast (unumber) 2 in game_logic::target_ytile1#1 = 2
Adding number conversion cast (unumber) 2 in game_logic::$138 = pacman_xfine / 2
Adding number conversion cast (unumber) game_logic::$138 in game_logic::$138 = pacman_xfine / (unumber)2
Adding number conversion cast (unumber) 2 in game_logic::$139 = pacman_yfine / 2
Adding number conversion cast (unumber) game_logic::$139 in game_logic::$139 = pacman_yfine / (unumber)2
Adding number conversion cast (unumber) $61 in ghost3_xfine = $61
Adding number conversion cast (unumber) $61 in game_logic::$142 = ghost3_xfine == $61
Adding number conversion cast (unumber) 1 in ghost3_xfine = 1
Adding number conversion cast (unumber) 2 in ghost3_xfine = 2
Adding number conversion cast (unumber) $46 in ghost3_yfine = $46
Adding number conversion cast (unumber) 0 in ghost3_substep = 0
Adding number conversion cast (unumber) 0 in game_logic::$165 = ghost2_respawn == 0
Adding number conversion cast (unumber) 0 in game_logic::$151 = ghost2_substep == 0
Adding number conversion cast (unumber) 1 in ghost2_substep = 1
Adding number conversion cast (unumber) 1 in game_logic::$162 = ghost2_xfine == 1
Adding number conversion cast (unumber) 0 in ghost2_substep = 0
Adding number conversion cast (unumber) 0 in game_logic::$217 = 0 != ghost2_reverse
Adding number conversion cast (unumber) 0 in ghost2_reverse = 0
Adding number conversion cast (unumber) 2 in game_logic::ghost2_xtile#0 = ghost2_xfine / 2
Adding number conversion cast (unumber) 2 in game_logic::ghost2_ytile#0 = ghost2_yfine / 2
Adding number conversion cast (unumber) 2 in game_logic::target_xtile2#1 = 2
Adding number conversion cast (unumber) 2 in game_logic::target_ytile2#1 = 2
Adding number conversion cast (unumber) 2 in game_logic::$159 = pacman_xfine / 2
Adding number conversion cast (unumber) game_logic::$159 in game_logic::$159 = pacman_xfine / (unumber)2
Adding number conversion cast (unumber) 2 in game_logic::$160 = pacman_yfine / 2
Adding number conversion cast (unumber) game_logic::$160 in game_logic::$160 = pacman_yfine / (unumber)2
Adding number conversion cast (unumber) $61 in ghost2_xfine = $61
Adding number conversion cast (unumber) $61 in game_logic::$163 = ghost2_xfine == $61
Adding number conversion cast (unumber) 1 in ghost2_xfine = 1
Adding number conversion cast (unumber) $60 in ghost2_xfine = $60
Adding number conversion cast (unumber) $46 in ghost2_yfine = $46
Adding number conversion cast (unumber) 0 in ghost2_substep = 0
Adding number conversion cast (unumber) 0 in game_logic::$186 = ghost1_respawn == 0
Adding number conversion cast (unumber) 0 in game_logic::$172 = ghost1_substep == 0
Adding number conversion cast (unumber) 1 in ghost1_substep = 1
Adding number conversion cast (unumber) 1 in game_logic::$183 = ghost1_xfine == 1
Adding number conversion cast (unumber) 0 in ghost1_substep = 0
Adding number conversion cast (unumber) 0 in game_logic::$218 = 0 != ghost1_reverse
Adding number conversion cast (unumber) 0 in ghost1_reverse = 0
Adding number conversion cast (unumber) 2 in game_logic::ghost1_xtile#0 = ghost1_xfine / 2
Adding number conversion cast (unumber) 2 in game_logic::ghost1_ytile#0 = ghost1_yfine / 2
Adding number conversion cast (unumber) 2 in game_logic::target_xtile3#1 = 2
Adding number conversion cast (unumber) 2 in game_logic::target_ytile3#1 = 2
Adding number conversion cast (unumber) 2 in game_logic::$180 = pacman_xfine / 2
Adding number conversion cast (unumber) game_logic::$180 in game_logic::$180 = pacman_xfine / (unumber)2
Adding number conversion cast (unumber) 2 in game_logic::$181 = pacman_yfine / 2
Adding number conversion cast (unumber) game_logic::$181 in game_logic::$181 = pacman_yfine / (unumber)2
Adding number conversion cast (unumber) $61 in ghost1_xfine = $61
Adding number conversion cast (unumber) $61 in game_logic::$184 = ghost1_xfine == $61
Adding number conversion cast (unumber) 1 in ghost1_xfine = 1
Adding number conversion cast (unumber) $60 in ghost1_xfine = $60
Adding number conversion cast (unumber) 2 in ghost1_yfine = 2
Adding number conversion cast (unumber) 0 in ghost1_substep = 0
Adding number conversion cast (unumber) 0 in game_logic::$193 = pacman_substep == 0
Adding number conversion cast (unumber) 1 in pacman_substep = 1
Adding number conversion cast (unumber) 1 in pacman_ch1_enabled = 1
Adding number conversion cast (unumber) 1 in game_logic::$207 = pacman_xfine == 1
Adding number conversion cast (unumber) 0 in pacman_substep = 0
Adding number conversion cast (unumber) 2 in game_logic::pacman_xtile1#0 = pacman_xfine / 2
Adding number conversion cast (unumber) 2 in game_logic::pacman_ytile1#0 = pacman_yfine / 2
Adding number conversion cast (unumber) $f in game_logic::$199 = *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A) & $f
Adding number conversion cast (unumber) game_logic::$199 in game_logic::$199 = *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A) & (unumber)$f
Adding number conversion cast (unumber) $f in game_logic::$200 = game_logic::$199 ^ $f
Adding number conversion cast (unumber) game_logic::$200 in game_logic::$200 = game_logic::$199 ^ (unumber)$f
Adding number conversion cast (unumber) 4 in game_logic::joy_directions#0 = game_logic::$200 * 4
Adding number conversion cast (unumber) 0 in game_logic::$202 = game_logic::joy_directions#0 != 0
Adding number conversion cast (unumber) 0 in game_logic::$205 = game_logic::new_direction#0 != 0
Adding number conversion cast (unumber) $61 in pacman_xfine = $61
Adding number conversion cast (unumber) $61 in game_logic::$208 = pacman_xfine == $61
Adding number conversion cast (unumber) 1 in pacman_xfine = 1
Adding number conversion cast (unumber) 0 in choose_direction::$26 = 0 != choose_direction::$2
Adding number conversion cast (unumber) 0 in choose_direction::$27 = 0 != choose_direction::$4
Adding number conversion cast (unumber) 1 in choose_direction::$10 = choose_direction::ydiff#1 - 1
Adding number conversion cast (unumber) choose_direction::$10 in choose_direction::$10 = choose_direction::ydiff#1 - (unumber)1
Adding number conversion cast (unumber) 0 in choose_direction::$28 = 0 != choose_direction::$6
Adding number conversion cast (unumber) 1 in choose_direction::$14 = choose_direction::ydiff#2 + 1
Adding number conversion cast (unumber) choose_direction::$14 in choose_direction::$14 = choose_direction::ydiff#2 + (unumber)1
Adding number conversion cast (unumber) 0 in choose_direction::$29 = 0 != choose_direction::$8
Adding number conversion cast (unumber) 1 in choose_direction::$18 = choose_direction::xdiff#3 - 1
Adding number conversion cast (unumber) choose_direction::$18 in choose_direction::$18 = choose_direction::xdiff#3 - (unumber)1
Adding number conversion cast (unumber) 1 in choose_direction::$22 = choose_direction::xdiff#4 + 1
Adding number conversion cast (unumber) choose_direction::$22 in choose_direction::$22 = choose_direction::xdiff#4 + (unumber)1
Adding number conversion cast (unumber) 0 in ghosts_mode_count = 0
Adding number conversion cast (unumber) 0 in pacman_substep = 0
Adding number conversion cast (unumber) 0 in ghost1_substep = 0
Adding number conversion cast (unumber) 0 in ghost2_substep = 0
Adding number conversion cast (unumber) 0 in ghost3_substep = 0
Adding number conversion cast (unumber) 0 in ghost4_substep = 0
Adding number conversion cast (unumber) $32 in pacman_xfine = $32
Adding number conversion cast (unumber) $32 in ghost1_xfine = $32
Adding number conversion cast (unumber) $32 in ghost2_xfine = $32
Adding number conversion cast (unumber) $32 in ghost3_xfine = $32
Adding number conversion cast (unumber) $32 in ghost4_xfine = $32
Adding number conversion cast (unumber) $23 in ghost1_yfine = $23
Adding number conversion cast (unumber) $23 in ghost2_yfine = $23
Adding number conversion cast (unumber) $23 in ghost3_yfine = $23
Adding number conversion cast (unumber) $23 in ghost4_yfine = $23
Adding number conversion cast (unumber) $3e in pacman_yfine = $3e
Adding number conversion cast (unumber) $a in ghost1_respawn = $a
Adding number conversion cast (unumber) $14 in ghost2_respawn = $14
Adding number conversion cast (unumber) $1e in ghost3_respawn = $1e
Adding number conversion cast (unumber) $28 in ghost4_respawn = $28
Successful SSA optimization PassNAddNumberTypeConversions
Adding number conversion cast (unumber) $40 in
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast memcpy::src#0 = (char *)memcpy::source#1
Inlining cast memcpy::dst#0 = (char *)memcpy::destination#1
Inlining cast memset::dst#0 = (char *)memset::str#6
Inlining cast *merge_code::dest_code#10 = (unumber)$24
Inlining cast *merge_code::dest_code#2 = (unumber)$ea
Inlining cast *merge_code::dest_code#11 = (unumber)$ea
Inlining cast *merge_code::dest_code#12 = (unumber)$60
Inlining cast *((char *)SID+OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE) = (unumber)$f
Inlining cast *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_FREQ) = (unumber)0
Inlining cast *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH) = (unumber)0
Inlining cast *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = (unumber)0
Inlining cast *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY) = (unumber)0
Inlining cast *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE) = (unumber)$f0
Inlining cast pacman_ch1_idx = (unumber)0
Inlining cast pacman_ch1_enabled = (unumber)0
Inlining cast (RENDER_INDEX+(unumber)$18*$100)[RENDER_OFFSET_YPOS_INC] = (unumber)0
Inlining cast (RENDER_INDEX+(unumber)$19*$100)[RENDER_OFFSET_YPOS_INC] = (unumber)0
Inlining cast init_render_index::ypos_inc_offset#1 = (unumber)$b
Inlining cast logic_tile_xcol = (unumber)$c
Inlining cast logic_tile_yfine = (unumber)$23
Inlining cast init_bobs_restore::bob_restore#2[init_bobs_restore::i#3] = (unumber)0
Inlining cast game_playable = (unumber)0
Inlining cast phase = (unumber)0
Inlining cast ((char *)SID)[done_run::i#3] = (unumber)0
Inlining cast bobs_xcol[done_run::i1#3] = (unumber)$a
Inlining cast bobs_yfine[done_run::i1#3] = (unumber)$2d
Inlining cast bobs_bob_id[done_run::i1#3] = (unumber)0
Inlining cast music_play_next = (unumber)0
Inlining cast music_play_next = (unumber)0
Inlining cast memset::c#0 = (unumber)0
Inlining cast memset::num#0 = (unumber)$c00
Inlining cast memset::c#1 = (unumber)0
Inlining cast memset::num#1 = (unumber)$1fff
Inlining cast memset::c#2 = (unumber)0
Inlining cast memset::num#2 = (unumber)$3fff
Inlining cast memset::c#3 = (unumber)0
Inlining cast memset::num#3 = (unumber)$1fff
Inlining cast memset::c#4 = (unumber)0
Inlining cast SPRITES_YPOS[splash_run::$23] = (unumber)7
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = (unumber)$ff
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = (unumber)$ff
Inlining cast top_sprites_mc = (unumber)3
Inlining cast side_sprites_mc = (unumber)0
Inlining cast bottom_sprites_mc = (unumber)3
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = (unumber)8
Inlining cast bobs_xcol[splash_run::i2#3] = (unumber)$a
Inlining cast bobs_yfine[splash_run::i2#3] = (unumber)$2d
Inlining cast bobs_bob_id[splash_run::i2#3] = (unumber)0
Inlining cast phase = (unumber)0
Inlining cast *IRQ_STATUS = (unumber)$f
Inlining cast music_play_next = (unumber)0
Inlining cast music_play_next = (unumber)0
Inlining cast ((char *)SID)[gameplay_run::i#3] = (unumber)0
Inlining cast pacman_wins = (unumber)0
Inlining cast pacman_lives = (unumber)3
Inlining cast top_sprites_mc = (unumber)$ff
Inlining cast side_sprites_mc = (unumber)$ff
Inlining cast bottom_sprites_mc = (unumber)$ff
Inlining cast phase = (unumber)1
Inlining cast game_playable = (unumber)1
Inlining cast *IRQ_STATUS = (unumber)$f
Inlining cast *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = (unumber)0
Inlining cast joyfire::return#2 = (unumber)1
Inlining cast joyfire::return#3 = (unumber)0
Inlining cast level_tile_get::return#1 = (unumber)0
Inlining cast level_tile_directions::return#1 = (unumber)0
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y) = (unumber)7
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y) = (unumber)7
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y) = (unumber)7
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y) = (unumber)7
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y) = (unumber)7
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y) = (unumber)7
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y) = (unumber)7
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y) = (unumber)7
Inlining cast bobs_restore_base = (unumber)0
Inlining cast music_play_next = (unumber)1
Inlining cast ghosts_mode_count = (unumber)0
Inlining cast game_logic::do_reverse#1 = (unumber)1
Inlining cast ghosts_mode_count = (unumber)0
Inlining cast game_logic::do_reverse#2 = (unumber)1
Inlining cast ghosts_mode_count = (unumber)0
Inlining cast game_logic::do_reverse#3 = (unumber)1
Inlining cast ghost1_reverse = (unumber)1
Inlining cast ghost2_reverse = (unumber)1
Inlining cast ghost3_reverse = (unumber)1
Inlining cast ghost4_reverse = (unumber)1
Inlining cast ghosts_mode_count = (unumber)0
Inlining cast pacman_wins = (unumber)1
Inlining cast ghost4_xfine = (unumber)$32
Inlining cast ghost4_yfine = (unumber)$23
Inlining cast ghost4_substep = (unumber)0
Inlining cast ghost4_respawn = (unumber)$32
Inlining cast ghost3_xfine = (unumber)$32
Inlining cast ghost3_yfine = (unumber)$23
Inlining cast ghost3_substep = (unumber)0
Inlining cast ghost3_respawn = (unumber)$32
Inlining cast ghost2_xfine = (unumber)$32
Inlining cast ghost2_yfine = (unumber)$23
Inlining cast ghost2_substep = (unumber)0
Inlining cast ghost2_respawn = (unumber)$32
Inlining cast ghost1_xfine = (unumber)$32
Inlining cast ghost1_yfine = (unumber)$23
Inlining cast ghost1_substep = (unumber)0
Inlining cast ghost1_respawn = (unumber)$32
Inlining cast ghost4_substep = (unumber)1
Inlining cast ghost4_substep = (unumber)0
Inlining cast ghost4_reverse = (unumber)0
Inlining cast game_logic::target_xtile#1 = (unumber)2
Inlining cast game_logic::target_ytile#1 = (unumber)2
Inlining cast ghost4_xfine = (unumber)$61
Inlining cast ghost4_xfine = (unumber)1
Inlining cast ghost4_xfine = (unumber)2
Inlining cast ghost4_yfine = (unumber)2
Inlining cast ghost4_substep = (unumber)0
Inlining cast ghost3_substep = (unumber)1
Inlining cast ghost3_substep = (unumber)0
Inlining cast ghost3_reverse = (unumber)0
Inlining cast game_logic::target_xtile1#1 = (unumber)2
Inlining cast game_logic::target_ytile1#1 = (unumber)2
Inlining cast ghost3_xfine = (unumber)$61
Inlining cast ghost3_xfine = (unumber)1
Inlining cast ghost3_xfine = (unumber)2
Inlining cast ghost3_yfine = (unumber)$46
Inlining cast ghost3_substep = (unumber)0
Inlining cast ghost2_substep = (unumber)1
Inlining cast ghost2_substep = (unumber)0
Inlining cast ghost2_reverse = (unumber)0
Inlining cast game_logic::target_xtile2#1 = (unumber)2
Inlining cast game_logic::target_ytile2#1 = (unumber)2
Inlining cast ghost2_xfine = (unumber)$61
Inlining cast ghost2_xfine = (unumber)1
Inlining cast ghost2_xfine = (unumber)$60
Inlining cast ghost2_yfine = (unumber)$46
Inlining cast ghost2_substep = (unumber)0
Inlining cast ghost1_substep = (unumber)1
Inlining cast ghost1_substep = (unumber)0
Inlining cast ghost1_reverse = (unumber)0
Inlining cast game_logic::target_xtile3#1 = (unumber)2
Inlining cast game_logic::target_ytile3#1 = (unumber)2
Inlining cast ghost1_xfine = (unumber)$61
Inlining cast ghost1_xfine = (unumber)1
Inlining cast ghost1_xfine = (unumber)$60
Inlining cast ghost1_yfine = (unumber)2
Inlining cast ghost1_substep = (unumber)0
Inlining cast pacman_substep = (unumber)1
Inlining cast pacman_ch1_enabled = (unumber)1
Inlining cast pacman_substep = (unumber)0
Inlining cast pacman_xfine = (unumber)$61
Inlining cast pacman_xfine = (unumber)1
Inlining cast ghosts_mode_count = (unumber)0
Inlining cast pacman_substep = (unumber)0
Inlining cast ghost1_substep = (unumber)0
Inlining cast ghost2_substep = (unumber)0
Inlining cast ghost3_substep = (unumber)0
Inlining cast ghost4_substep = (unumber)0
Inlining cast pacman_xfine = (unumber)$32
Inlining cast ghost1_xfine = (unumber)$32
Inlining cast ghost2_xfine = (unumber)$32
Inlining cast ghost3_xfine = (unumber)$32
Inlining cast ghost4_xfine = (unumber)$32
Inlining cast ghost1_yfine = (unumber)$23
Inlining cast ghost2_yfine = (unumber)$23
Inlining cast ghost3_yfine = (unumber)$23
Inlining cast ghost4_yfine = (unumber)$23
Inlining cast pacman_yfine = (unumber)$3e
Inlining cast ghost1_respawn = (unumber)$a
Inlining cast ghost2_respawn = (unumber)$14
Inlining cast ghost3_respawn = (unumber)$1e
Inlining cast ghost4_respawn = (unumber)$28
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (char *) 53248
Simplifying constant pointer cast (char *) 53249
Simplifying constant pointer cast (char *) 53287
Simplifying constant pointer cast (char *) 53266
Simplifying constant pointer cast (char *) 53280
Simplifying constant pointer cast (char *) 53265
Simplifying constant pointer cast (char *) 53270
Simplifying constant pointer cast (char *) 53272
Simplifying constant pointer cast (char *) 53273
Simplifying constant pointer cast (char *) 54273
Simplifying constant pointer cast (char *) 0
Simplifying constant pointer cast (char *) 1
Simplifying constant pointer cast (struct MOS6581_SID *) 54272
Simplifying constant pointer cast (struct MOS6569_VICII *) 53248
Simplifying constant pointer cast (struct MOS6526_CIA *) 56320
Simplifying constant pointer cast (struct MOS6526_CIA *) 56576
Simplifying constant pointer cast (char *) 56333
Simplifying constant pointer cast (void (**)()) 65534
Simplifying constant pointer cast (char *) 16384
Simplifying constant pointer cast (char *) 24576
Simplifying constant pointer cast (char *) 16384
Simplifying constant pointer cast (char *) 49152
Simplifying constant pointer cast (char *) 57344
Simplifying constant pointer cast (char *) 49152
Simplifying constant pointer cast (char *) 57344
Simplifying constant pointer cast (char *) 24576
Simplifying constant pointer cast (char *) 32768
Simplifying constant pointer cast (char *) 16384
Simplifying constant pointer cast (char *) 42752
Simplifying constant pointer cast (char *) 42752
Simplifying constant pointer cast (char *) 18432
Simplifying constant integer cast $a00
Simplifying constant integer cast $a80
Simplifying constant integer cast $b00
Simplifying constant pointer cast (char *) 15872
Simplifying constant pointer cast (char *) 21504
Simplifying constant integer cast BOB_ROW_SIZE*(unumber)6
Simplifying constant integer cast 6
Simplifying constant integer cast BOB_ROW_SIZE*(unumber)$c
Simplifying constant integer cast $c
Simplifying constant integer cast BOB_ROW_SIZE*(unumber)$12
Simplifying constant integer cast $12
Simplifying constant pointer cast (char *) 46592
Simplifying constant integer cast 2
Simplifying constant pointer cast (char *) 59904
Simplifying constant pointer cast (char *) 42752
Simplifying constant pointer cast (char *) 12288
Simplifying constant integer cast 0
Simplifying constant integer cast 6
Simplifying constant integer cast $3fff
Simplifying constant integer cast $40
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 3
Simplifying constant integer cast $24
Simplifying constant integer cast $ea
Simplifying constant integer cast 3
Simplifying constant integer cast $ea
Simplifying constant integer cast 2
Simplifying constant integer cast $60
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $f0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $1a
Simplifying constant integer cast $18
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $b
Simplifying constant integer cast $94
Simplifying constant integer cast 2
Simplifying constant integer cast $17
Simplifying constant integer cast $100
Simplifying constant integer cast 2
Simplifying constant integer cast $15
Simplifying constant integer cast 4
Simplifying constant integer cast 2
Simplifying constant integer cast 3
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast 2
Simplifying constant integer cast 4
Simplifying constant integer cast NUM_BOBS*(unumber)2
Simplifying constant integer cast 2
Simplifying constant integer cast $c
Simplifying constant integer cast $c
Simplifying constant integer cast $23
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 3
Simplifying constant integer cast 4
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $2f
Simplifying constant integer cast 0
Simplifying constant integer cast 4
Simplifying constant integer cast $a
Simplifying constant integer cast $2d
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $19
Simplifying constant integer cast 0
Simplifying constant integer cast $19
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant pointer cast (char *) 16384
Simplifying constant integer cast 0
Simplifying constant integer cast $c00
Simplifying constant integer cast $2000
Simplifying constant integer cast 0
Simplifying constant integer cast $1fff
Simplifying constant integer cast 0
Simplifying constant integer cast $3fff
Simplifying constant integer cast 0
Simplifying constant integer cast $1fff
Simplifying constant integer cast 0
Simplifying constant integer cast 8
Simplifying constant integer cast 2
Simplifying constant integer cast 7
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast $40
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast $ff
Simplifying constant integer cast $ff
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 3
Simplifying constant integer cast $80
Simplifying constant integer cast 8
Simplifying constant integer cast 8
Simplifying constant integer cast 4
Simplifying constant integer cast $a
Simplifying constant integer cast $2d
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $fa
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $2f
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 3
Simplifying constant integer cast 8
Simplifying constant integer cast $ff
Simplifying constant integer cast $ff
Simplifying constant integer cast $ff
Simplifying constant integer cast 8
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast $fb
Simplifying constant integer cast $fa
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $10
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $19
Simplifying constant integer cast $93
Simplifying constant integer cast $25
Simplifying constant integer cast $19
Simplifying constant integer cast $40
Simplifying constant integer cast $31
Simplifying constant integer cast $24
Simplifying constant integer cast 0
Simplifying constant integer cast $31
Simplifying constant integer cast $24
Simplifying constant integer cast 0
Simplifying constant integer cast $25
Simplifying constant integer cast $32
Simplifying constant integer cast 1
Simplifying constant integer cast $40
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast $e
Simplifying constant integer cast 8
Simplifying constant integer cast $400
Simplifying constant integer cast $400
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $40
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast $40
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 7
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 4
Simplifying constant integer cast 0
Simplifying constant integer cast 5
Simplifying constant integer cast 0
Simplifying constant integer cast 6
Simplifying constant integer cast 3
Simplifying constant integer cast 7
Simplifying constant integer cast 1
Simplifying constant integer cast 3
Simplifying constant integer cast 1
Simplifying constant integer cast 4
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 4
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 3
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 4
Simplifying constant integer cast 2
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 3
Simplifying constant integer cast 2
Simplifying constant integer cast 1
Simplifying constant integer cast 4
Simplifying constant integer cast 3
Simplifying constant integer cast 1
Simplifying constant integer cast 3
Simplifying constant integer cast 3
Simplifying constant integer cast 3
Simplifying constant integer cast 1
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast 1
Simplifying constant integer cast 4
Simplifying constant integer cast 3
Simplifying constant integer cast 4
Simplifying constant integer cast $40
Simplifying constant integer cast $32
Simplifying constant integer cast $96
Simplifying constant integer cast $32
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
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 2
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast $fe
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast $fe
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast $32
Simplifying constant integer cast $23
Simplifying constant integer cast 0
Simplifying constant integer cast $32
Simplifying constant integer cast $32
Simplifying constant integer cast $23
Simplifying constant integer cast 0
Simplifying constant integer cast $32
Simplifying constant integer cast $32
Simplifying constant integer cast $23
Simplifying constant integer cast 0
Simplifying constant integer cast $32
Simplifying constant integer cast $32
Simplifying constant integer cast $23
Simplifying constant integer cast 0
Simplifying constant integer cast $32
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 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast $61
Simplifying constant integer cast $61
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 0
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 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast $61
Simplifying constant integer cast $61
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast $46
Simplifying constant integer cast 0
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 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast $61
Simplifying constant integer cast $61
Simplifying constant integer cast 1
Simplifying constant integer cast $60
Simplifying constant integer cast $46
Simplifying constant integer cast 0
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 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast $61
Simplifying constant integer cast $61
Simplifying constant integer cast 1
Simplifying constant integer cast $60
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast $f
Simplifying constant integer cast $f
Simplifying constant integer cast 4
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $61
Simplifying constant integer cast $61
Simplifying constant integer cast 1
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 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 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $32
Simplifying constant integer cast $32
Simplifying constant integer cast $32
Simplifying constant integer cast $32
Simplifying constant integer cast $32
Simplifying constant integer cast $23
Simplifying constant integer cast $23
Simplifying constant integer cast $23
Simplifying constant integer cast $23
Simplifying constant integer cast $3e
Simplifying constant integer cast $a
Simplifying constant integer cast $14
Simplifying constant integer cast $1e
Simplifying constant integer cast $28
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (unsigned int) $a00
Finalized unsigned number type (unsigned int) $a80
Finalized unsigned number type (unsigned int) $b00
Finalized unsigned number type (char) 6
Finalized unsigned number type (char) $c
Finalized unsigned number type (char) $12
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 6
Finalized unsigned number type (unsigned int) $3fff
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) $24
Finalized unsigned number type (char) $ea
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) $ea
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $60
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $f0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $1a
Finalized unsigned number type (char) $18
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $b
Finalized unsigned number type (char) $94
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $17
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $15
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $c
Finalized unsigned number type (char) $c
Finalized unsigned number type (char) $23
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $2f
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) $a
Finalized unsigned number type (char) $2d
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $c00
Finalized unsigned number type (unsigned int) $2000
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $1fff
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $3fff
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $1fff
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) 3
Finalized unsigned number type (unsigned int) $3fff
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) $ff
Finalized unsigned number type (char) $ff
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) $a
Finalized unsigned number type (char) $2d
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $fa
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $2f
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $ff
Finalized unsigned number type (char) $ff
Finalized unsigned number type (char) $ff
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $fb
Finalized unsigned number type (char) $fa
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $10
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) $93
Finalized unsigned number type (char) $25
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $31
Finalized unsigned number type (char) $24
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $31
Finalized unsigned number type (char) $24
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $25
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $e
Finalized unsigned number type (char) 8
Finalized unsigned number type (unsigned int) $400
Finalized unsigned number type (unsigned int) $400
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 7
Finalized unsigned number type (unsigned int) $3fff
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 5
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 6
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $96
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $fe
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $fe
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $23
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $23
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $23
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $23
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $61
Finalized unsigned number type (char) $61
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $61
Finalized unsigned number type (char) $61
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $46
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $61
Finalized unsigned number type (char) $61
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $60
Finalized unsigned number type (char) $46
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $61
Finalized unsigned number type (char) $61
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $60
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $61
Finalized unsigned number type (char) $61
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $23
Finalized unsigned number type (char) $23
Finalized unsigned number type (char) $23
Finalized unsigned number type (char) $23
Finalized unsigned number type (char) $3e
Finalized unsigned number type (char) $a
Finalized unsigned number type (char) $14
Finalized unsigned number type (char) $1e
Finalized unsigned number type (char) $28
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to char in merge_code::$5 = merge_code::cycle_budget#5 - 1
Inferred type updated to char in render::$2 = render::ytile#0 * 2
Inferred type updated to char in render_tiles::$0 = render_tiles::tile_left#1 * 4
Inferred type updated to char in render_tiles::$2 = render_tiles::tile_right#1 * 4
Inferred type updated to char in render_tiles::$5 = render_tiles::ytile#1 * 2
Inferred type updated to char in splash_run::$23 = splash_run::i#3 * 2
Inferred type updated to char in splash_run::$24 = splash_run::i#3 * 2
Inferred type updated to char in splash_run::toDd001_$1 = splash_run::toDd001_$0 / $40
Inferred type updated to char in splash_run::toDd001_$2 = 3 ^ splash_run::toDd001_$1
Inferred type updated to unsigned int in splash_run::toD0181_$0 = splash_run::toD0181_$7 & $3fff
Inferred type updated to unsigned int in splash_run::toD0181_$1 = splash_run::toD0181_$0 * 4
Inferred type updated to char in splash_run::toD0181_$4 = splash_run::toD0181_$3 / 4
Inferred type updated to char in splash_run::toD0181_$5 = splash_run::toD0181_$4 & $f
Inferred type updated to char in splash_run::toD0181_$6 = splash_run::toD0181_$2 | splash_run::toD0181_$5
Inferred type updated to char in joyfire::$0 = *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A) & $10
Inferred type updated to char in init_level_tile_directions::$2 = init_level_tile_directions::xtile#3 - 1
Inferred type updated to char in init_level_tile_directions::$6 = init_level_tile_directions::xtile#4 + 1
Inferred type updated to char in init_level_tile_directions::$10 = init_level_tile_directions::ytile#6 - 1
Inferred type updated to char in init_level_tile_directions::$14 = init_level_tile_directions::ytile#7 + 1
Inferred type updated to unsigned int in irq_screen_top::toD0181_$0 = irq_screen_top::toD0181_$7 & $3fff
Inferred type updated to unsigned int in irq_screen_top::toD0181_$1 = irq_screen_top::toD0181_$0 * 4
Inferred type updated to char in irq_screen_top::toD0181_$4 = irq_screen_top::toD0181_$3 / 4
Inferred type updated to char in irq_screen_top::toD0181_$5 = irq_screen_top::toD0181_$4 & $f
Inferred type updated to char in irq_screen_top::toD0181_$6 = irq_screen_top::toD0181_$2 | irq_screen_top::toD0181_$5
Inferred type updated to char in irq_screen_top::$1 = frame + 1
Inferred type updated to char in irq_screen_top::$2 = irq_screen_top::$1 & 1
Inferred type updated to char in irq_screen_top::toDd001_$1 = irq_screen_top::toDd001_$0 / $40
Inferred type updated to char in irq_screen_top::toDd001_$2 = 3 ^ irq_screen_top::toDd001_$1
Inferred type updated to char in irq_screen_top::toDd002_$1 = irq_screen_top::toDd002_$0 / $40
Inferred type updated to char in irq_screen_top::toDd002_$2 = 3 ^ irq_screen_top::toDd002_$1
Inferred type updated to char in game_logic::$2 = game_logic_substep + 1
Inferred type updated to char in game_logic::$3 = game_logic::$2 & 7
Inferred type updated to char in game_logic::$14 = anim_frame_idx + 1
Inferred type updated to char in game_logic::$15 = game_logic::$14 & 3
Inferred type updated to char in game_logic::$17 = game_logic::pacman_bob_xfine#0 / 4
Inferred type updated to char in game_logic::$18 = pacman_yfine - 1
Inferred type updated to char in game_logic::$20 = game_logic::pacman_bob_xfine#0 & 3
Inferred type updated to char in game_logic::$21 = pacman_frames[game_logic::$19] + game_logic::$20
Inferred type updated to char in game_logic::$25 = game_logic::ghost1_bob_xfine#0 / 4
Inferred type updated to char in game_logic::$26 = ghost1_yfine - 1
Inferred type updated to char in game_logic::$28 = game_logic::ghost1_bob_xfine#0 & 3
Inferred type updated to char in game_logic::$29 = ghost_frames[game_logic::$27] + game_logic::$28
Inferred type updated to char in game_logic::$31 = game_logic::ghost2_bob_xfine#0 / 4
Inferred type updated to char in game_logic::$32 = ghost2_yfine - 1
Inferred type updated to char in game_logic::$34 = game_logic::ghost2_bob_xfine#0 & 3
Inferred type updated to char in game_logic::$35 = ghost_frames[game_logic::$33] + game_logic::$34
Inferred type updated to char in game_logic::$37 = game_logic::ghost3_bob_xfine#0 / 4
Inferred type updated to char in game_logic::$38 = ghost3_yfine - 1
Inferred type updated to char in game_logic::$40 = game_logic::ghost3_bob_xfine#0 & 3
Inferred type updated to char in game_logic::$41 = ghost_frames[game_logic::$39] + game_logic::$40
Inferred type updated to char in game_logic::$43 = game_logic::ghost4_bob_xfine#0 / 4
Inferred type updated to char in game_logic::$44 = ghost4_yfine - 1
Inferred type updated to char in game_logic::$46 = game_logic::ghost4_bob_xfine#0 & 3
Inferred type updated to char in game_logic::$47 = ghost_frames[game_logic::$45] + game_logic::$46
Inferred type updated to char in game_logic::$69 = game_logic::pacman_xtile#1 / 2
Inferred type updated to char in game_logic::$70 = game_logic::pacman_xtile#1 & $fe
Inferred type updated to char in game_logic::$72 = game_logic::pacman_ytile#1 * 2
Inferred type updated to char in game_logic::$65 = game_logic::pacman_xtile#2 / 2
Inferred type updated to char in game_logic::$66 = game_logic::pacman_xtile#2 & $fe
Inferred type updated to char in game_logic::$68 = game_logic::pacman_ytile#2 * 2
Inferred type updated to char in game_logic::$117 = pacman_xfine / 2
Inferred type updated to char in game_logic::$118 = pacman_yfine / 2
Inferred type updated to char in game_logic::$138 = pacman_xfine / 2
Inferred type updated to char in game_logic::$139 = pacman_yfine / 2
Inferred type updated to char in game_logic::$159 = pacman_xfine / 2
Inferred type updated to char in game_logic::$160 = pacman_yfine / 2
Inferred type updated to char in game_logic::$180 = pacman_xfine / 2
Inferred type updated to char in game_logic::$181 = pacman_yfine / 2
Inferred type updated to char in game_logic::$199 = *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A) & $f
Inferred type updated to char in game_logic::$200 = game_logic::$199 ^ $f
Inferred type updated to char in choose_direction::$10 = choose_direction::ydiff#1 - 1
Inferred type updated to char in choose_direction::$14 = choose_direction::ydiff#2 + 1
Inferred type updated to char in choose_direction::$18 = choose_direction::xdiff#3 - 1
Inferred type updated to char in choose_direction::$22 = choose_direction::xdiff#4 + 1
Inversing boolean not [19] memset::$1 = memset::num#5 <= 0 from [18] memset::$0 = memset::num#5 > 0
Inversing boolean not [51] merge_code::$2 = merge_code::cycle_budget#0 != merge_code::RASTER_EXIT from [50] merge_code::$1 = merge_code::cycle_budget#0 == merge_code::RASTER_EXIT
Inversing boolean not [120] pacman_sound_play::$0 = 0 == pacman_ch1_enabled from [119] pacman_sound_play::$4 = 0 != pacman_ch1_enabled
Inversing boolean not [127] pacman_sound_play::$3 = pacman_ch1_idx != pacman_sound_play::$1 from [126] pacman_sound_play::$2 = pacman_ch1_idx == pacman_sound_play::$1
Inversing boolean not [141] init_render_index::$2 = init_render_index::x_col#3 < $18 from [140] init_render_index::$1 = init_render_index::x_col#3 >= $18
Inversing boolean not [167] init_render_index::$8 = init_render_index::ypos_inc_offset#2 < $17 from [166] init_render_index::$7 = init_render_index::ypos_inc_offset#2 >= $17
Inversing boolean not [313] done_run::$9 = 0 == done_run::$8 from [312] done_run::$13 = 0 != done_run::$8
Inversing boolean not [316] done_run::$10 = 0 == music_play_next from [315] done_run::$14 = 0 != music_play_next
Inversing boolean not [390] splash_run::$26 = 0 == splash_run::$25 from [389] splash_run::$35 = 0 != splash_run::$25
Inversing boolean not [479] splash_run::$31 = 0 == splash_run::$30 from [478] splash_run::$36 = 0 != splash_run::$30
Inversing boolean not [482] splash_run::$32 = 0 == music_play_next from [481] splash_run::$37 = 0 != music_play_next
Inversing boolean not [602] level_show::$3 = TILES_TYPE[level_show::tile_left#0] != PILL from [601] level_show::$2 = TILES_TYPE[level_show::tile_left#0] == PILL
Inversing boolean not [611] level_show::$5 = TILES_TYPE[level_show::tile_right#0] != PILL from [610] level_show::$4 = TILES_TYPE[level_show::tile_right#0] == PILL
Inversing boolean not [676] init_level_tile_directions::$5 = TILES_TYPE[init_level_tile_directions::$3] == WALL from [675] init_level_tile_directions::$4 = TILES_TYPE[init_level_tile_directions::$3] != WALL
Inversing boolean not [690] init_level_tile_directions::$9 = TILES_TYPE[init_level_tile_directions::$7] == WALL from [689] init_level_tile_directions::$8 = TILES_TYPE[init_level_tile_directions::$7] != WALL
Inversing boolean not [703] init_level_tile_directions::$13 = TILES_TYPE[init_level_tile_directions::$11] == WALL from [702] init_level_tile_directions::$12 = TILES_TYPE[init_level_tile_directions::$11] != WALL
Inversing boolean not [716] init_level_tile_directions::$17 = TILES_TYPE[init_level_tile_directions::$15] == WALL from [715] init_level_tile_directions::$16 = TILES_TYPE[init_level_tile_directions::$15] != WALL
Inversing boolean not [819] game_logic::$1 = game_playable != 0 from [818] game_logic::$0 = game_playable == 0
Inversing boolean not [870] game_logic::$23 = ghosts_mode != FRIGHTENED from [869] game_logic::$22 = ghosts_mode == FRIGHTENED
Inversing boolean not [913] game_logic::$57 = ghosts_mode_count <= $32 from [912] game_logic::$56 = ghosts_mode_count > $32
Inversing boolean not [920] game_logic::$55 = ghosts_mode_count <= $96 from [919] game_logic::$54 = ghosts_mode_count > $96
Inversing boolean not [924] game_logic::$51 = ghosts_mode != FRIGHTENED from [923] game_logic::$50 = ghosts_mode == FRIGHTENED
Inversing boolean not [928] game_logic::$53 = ghosts_mode_count <= $32 from [927] game_logic::$52 = ghosts_mode_count > $32
Inversing boolean not [938] game_logic::$58 = 0 == game_logic::do_reverse#4 from [937] game_logic::$219 = 0 != game_logic::do_reverse#4
Inversing boolean not [965] game_logic::$74 = pill_count != 0 from [964] game_logic::$73 = pill_count == 0
Inversing boolean not [969] game_logic::$64 = TILES_TYPE[game_logic::tile_id#1] != POWERUP from [968] game_logic::$63 = TILES_TYPE[game_logic::tile_id#1] == POWERUP
Inversing boolean not [1046] game_logic::$124 = ghost4_respawn != 0 from [1045] game_logic::$123 = ghost4_respawn == 0
Inversing boolean not [1058] game_logic::$108 = ghost4_direction != UP from [1057] game_logic::$107 = ghost4_direction == UP
Inversing boolean not [1112] game_logic::$122 = ghost4_xfine != $61 from [1111] game_logic::$121 = ghost4_xfine == $61
Inversing boolean not [1121] game_logic::$145 = ghost3_respawn != 0 from [1120] game_logic::$144 = ghost3_respawn == 0
Inversing boolean not [1133] game_logic::$129 = ghost3_direction != UP from [1132] game_logic::$128 = ghost3_direction == UP
Inversing boolean not [1187] game_logic::$143 = ghost3_xfine != $61 from [1186] game_logic::$142 = ghost3_xfine == $61
Inversing boolean not [1196] game_logic::$166 = ghost2_respawn != 0 from [1195] game_logic::$165 = ghost2_respawn == 0
Inversing boolean not [1208] game_logic::$150 = ghost2_direction != UP from [1207] game_logic::$149 = ghost2_direction == UP
Inversing boolean not [1262] game_logic::$164 = ghost2_xfine != $61 from [1261] game_logic::$163 = ghost2_xfine == $61
Inversing boolean not [1271] game_logic::$187 = ghost1_respawn != 0 from [1270] game_logic::$186 = ghost1_respawn == 0
Inversing boolean not [1283] game_logic::$171 = ghost1_direction != UP from [1282] game_logic::$170 = ghost1_direction == UP
Inversing boolean not [1337] game_logic::$185 = ghost1_xfine != $61 from [1336] game_logic::$184 = ghost1_xfine == $61
Inversing boolean not [1352] game_logic::$192 = pacman_direction != UP from [1351] game_logic::$191 = pacman_direction == UP
Inversing boolean not [1376] game_logic::$203 = game_logic::joy_directions#0 == 0 from [1375] game_logic::$202 = game_logic::joy_directions#0 != 0
Inversing boolean not [1384] game_logic::$206 = game_logic::new_direction#0 == 0 from [1383] game_logic::$205 = game_logic::new_direction#0 != 0
Inversing boolean not [1390] game_logic::$209 = pacman_xfine != $61 from [1389] game_logic::$208 = pacman_xfine == $61
Inversing boolean not [1400] choose_direction::$3 = 0 == choose_direction::$2 from [1399] choose_direction::$26 = 0 != choose_direction::$2
Inversing boolean not [1405] choose_direction::$5 = 0 == choose_direction::$4 from [1404] choose_direction::$27 = 0 != choose_direction::$4
Inversing boolean not [1411] choose_direction::$13 = choose_direction::dist_up#0 >= choose_direction::dist_min#5 from [1410] choose_direction::$12 = choose_direction::dist_up#0 < choose_direction::dist_min#5
Inversing boolean not [1419] choose_direction::$7 = 0 == choose_direction::$6 from [1418] choose_direction::$28 = 0 != choose_direction::$6
Inversing boolean not [1425] choose_direction::$17 = choose_direction::dist_down#0 >= choose_direction::dist_min#6 from [1424] choose_direction::$16 = choose_direction::dist_down#0 < choose_direction::dist_min#6
Inversing boolean not [1433] choose_direction::$9 = 0 == choose_direction::$8 from [1432] choose_direction::$29 = 0 != choose_direction::$8
Inversing boolean not [1439] choose_direction::$21 = choose_direction::dist_left#0 >= choose_direction::dist_min#7 from [1438] choose_direction::$20 = choose_direction::dist_left#0 < choose_direction::dist_min#7
Inversing boolean not [1450] choose_direction::$25 = choose_direction::dist_right#0 >= choose_direction::dist_min#8 from [1449] choose_direction::$24 = choose_direction::dist_right#0 < choose_direction::dist_min#8
Successful SSA optimization Pass2UnaryNotSimplification
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Alias memcpy::src#2 = memcpy::src#3
Alias memcpy::dst#2 = memcpy::dst#3
Alias memcpy::src_end#1 = memcpy::src_end#2
Alias memcpy::destination#2 = memcpy::destination#4 memcpy::destination#3 memcpy::return#0 memcpy::return#3 memcpy::return#1
Alias memset::return#0 = memset::str#5 memset::return#7 memset::return#1
Alias memset::str#6 = memset::str#7
Alias memset::num#5 = memset::num#6
Alias memset::c#7 = memset::c#8
Alias memset::c#5 = memset::c#6
Alias memset::dst#2 = memset::dst#3
Alias memset::end#1 = memset::end#2
Alias memset::str#8 = memset::str#9
Alias merge_code::raster_code#4 = merge_code::raster_code#5 merge_code::raster_code#6
Alias merge_code::dest_code#14 = merge_code::dest_code#8 merge_code::dest_code#23
Alias merge_code::logic_code#18 = merge_code::logic_code#22 merge_code::logic_code#19
Alias merge_code::logic_code#17 = merge_code::logic_code#7 merge_code::logic_code#8
Alias merge_code::cycle_budget#13 = merge_code::cycle_budget#5 merge_code::cycle_budget#4
Alias merge_code::raster_code#11 = merge_code::raster_code#12 merge_code::raster_code#17
Alias merge_code::dest_code#21 = merge_code::dest_code#25 merge_code::dest_code#26
Alias merge_code::logic_cycles#0 = merge_code::logic_cycles#4
Alias merge_code::logic_code#10 = merge_code::logic_code#9 merge_code::logic_code#11
Alias merge_code::dest_code#15 = merge_code::dest_code#9 merge_code::dest_code#27
Alias merge_code::cycle_budget#11 = merge_code::cycle_budget#12 merge_code::cycle_budget#6
Alias merge_code::logic_cycles#1 = merge_code::logic_cycles#3 merge_code::logic_cycles#2
Alias merge_code::raster_code#13 = merge_code::raster_code#16 merge_code::raster_code#15
Alias merge_code::cycle_budget#10 = merge_code::cycle_budget#8 merge_code::cycle_budget#7 merge_code::cycle_budget#9
Alias merge_code::dest_code#10 = merge_code::dest_code#16 merge_code::dest_code#20 merge_code::dest_code#11
Alias merge_code::raster_code#10 = merge_code::raster_code#14 merge_code::raster_code#8 merge_code::raster_code#9
Alias merge_code::logic_code#21 = merge_code::logic_code#25 merge_code::logic_code#23 merge_code::logic_code#24
Alias merge_code::logic_code#12 = merge_code::logic_code#13
Alias merge_code::dest_code#12 = merge_code::dest_code#24 merge_code::dest_code#17
Alias merge_code::logic_code#14 = merge_code::logic_code#15 merge_code::logic_code#16
Alias merge_code::dest_code#13 = merge_code::dest_code#18 merge_code::dest_code#22
Alias init_render_index::x_col#2 = init_render_index::x_col#3 init_render_index::x_col#6
Alias init_render_index::render_index#4 = init_render_index::render_index#5 init_render_index::render_index#7
Alias init_render_index::render_index_xcol#0 = init_render_index::render_index#2
Alias init_render_index::y_pos#2 = init_render_index::y_pos#3 init_render_index::y_pos#5
Alias init_render_index::canvas_xcol#1 = init_render_index::canvas_xcol#2 init_render_index::canvas_xcol#4
Alias init_render_index::render_ypos_table#2 = init_render_index::render_ypos_table#3 init_render_index::render_ypos_table#6
Alias init_render_index::render_index_xcol#2 = init_render_index::render_index_xcol#4 init_render_index::render_index_xcol#5
Alias init_render_index::ypos_inc_offset#4 = init_render_index::ypos_inc_offset#6
Alias init_render_index::render_index#10 = init_render_index::render_index#9 init_render_index::render_index#6 init_render_index::render_index#3
Alias init_render_index::x_col#10 = init_render_index::x_col#9 init_render_index::x_col#7 init_render_index::x_col#5
Alias init_render_index::ypos_inc_offset#2 = init_render_index::ypos_inc_offset#5
Alias render::canvas1#2 = render::canvas1#4 render::canvas1#3
Alias render::ypos_inc_offset#2 = render::ypos_inc_offset#3
Alias render::canvas2#2 = render::canvas2#4 render::canvas2#3
Alias render::i#2 = render::i#3
Alias render::ypix#1 = render::ypix#2
Alias render::pixels#2 = render::pixels#5 render::pixels#3
Alias render_tiles::tile_left_pixels#1 = render_tiles::tile_left_pixels#2
Alias render_tiles::y#2 = render_tiles::y#3
Alias render_tiles::tile_right_pixels#1 = render_tiles::tile_right_pixels#2
Alias render_tiles::canvas1#2 = render_tiles::canvas1#3
Alias render_tiles::canvas2#2 = render_tiles::canvas2#3
Alias render_tiles::ypos_inc_offset#2 = render_tiles::ypos_inc_offset#3
Alias init_bobs_restore::bob_restore#5 = init_bobs_restore::bob_restore#6
Alias init_bobs_restore::bob#2 = init_bobs_restore::bob#5
Alias init_bobs_restore::bob_restore#2 = init_bobs_restore::bob_restore#4 init_bobs_restore::bob_restore#3
Alias init_bobs_restore::i#2 = init_bobs_restore::i#3
Alias init_bobs_restore::bob#3 = init_bobs_restore::bob#6 init_bobs_restore::bob#4
Alias done_run::i#2 = done_run::i#3
Alias done_run::i1#2 = done_run::i1#3
Alias done_run::gfx#4 = done_run::gfx#6
Alias done_run::xcol#2 = done_run::xcol#6
Alias done_run::gfx#2 = done_run::gfx#3 done_run::gfx#7
Alias done_run::xcol#3 = done_run::xcol#5 done_run::xcol#7 done_run::xcol#4
Alias done_run::ypos#2 = done_run::ypos#3 done_run::ypos#4
Alias done_run::gfx#1 = done_run::gfx#5
Alias joyfire::return#0 = joyfire::return#5
Alias splash_run::i#2 = splash_run::i#3 splash_run::i#5
Alias splash_run::msb#10 = splash_run::msb#3 splash_run::msb#6 splash_run::msb#13 splash_run::msb#12 splash_run::msb#11 splash_run::msb#9 splash_run::msb#7 splash_run::msb#4
Alias splash_run::toDd001_gfx#0 = splash_run::toDd001_gfx#1
Alias splash_run::toDd001_return#0 = splash_run::toDd001_$2 splash_run::toDd001_return#2 splash_run::toDd001_return#1 splash_run::toDd001_return#3 splash_run::$17
Alias splash_run::toD0181_screen#0 = splash_run::toD0181_screen#1
Alias splash_run::toD0181_gfx#0 = splash_run::toD0181_gfx#1
Alias splash_run::toD0181_return#0 = splash_run::toD0181_$6 splash_run::toD0181_return#2 splash_run::toD0181_return#1 splash_run::toD0181_return#3 splash_run::$18
Alias splash_run::msb#1 = splash_run::msb#5
Alias splash_run::i1#2 = splash_run::i1#3
Alias splash_run::i2#2 = splash_run::i2#3
Alias joyfire::return#1 = joyfire::return#6
Alias gameplay_run::i#2 = gameplay_run::i#3
Alias gameplay_run::i1#2 = gameplay_run::i1#3
Alias level_show::return#0 = level_show::return#3
Alias gameplay_run::i2#2 = gameplay_run::i2#3
Alias joyfire::return#4 = joyfire::return#7
Alias splash_show::splash#4 = splash_show::splash#6
Alias splash_show::xcol#2 = splash_show::xcol#6
Alias splash_show::splash#2 = splash_show::splash#3 splash_show::splash#7
Alias splash_show::xcol#3 = splash_show::xcol#5 splash_show::xcol#7 splash_show::xcol#4
Alias splash_show::ypos#2 = splash_show::ypos#3 splash_show::ypos#4
Alias splash_show::splash#1 = splash_show::splash#5
Alias level_show::level#8 = level_show::level#9
Alias level_show::ytile#2 = level_show::ytile#9
Alias level_show::count#12 = level_show::count#6 level_show::count#3 level_show::return#1 level_show::return#4 level_show::return#2
Alias level_show::level#2 = level_show::level#5 level_show::level#3 level_show::level#6
Alias level_show::xtile#3 = level_show::xtile#5
Alias level_show::count#10 = level_show::count#7 level_show::count#9 level_show::count#4
Alias level_show::xcol#2 = level_show::xcol#7 level_show::xcol#8
Alias level_show::ytile#10 = level_show::ytile#5 level_show::ytile#3 level_show::ytile#11
Alias level_show::xtile#1 = level_show::xtile#6
Alias level_show::tile_left#0 = level_show::tile_left#4
Alias level_show::xcol#3 = level_show::xcol#4
Alias level_show::level#10 = level_show::level#7
Alias level_show::xtile#7 = level_show::xtile#8
Alias level_show::ytile#4 = level_show::ytile#8
Alias level_show::count#11 = level_show::count#13
Alias level_show::count#5 = level_show::count#8
Alias level_show::xcol#5 = level_show::xcol#6
Alias level_show::ytile#6 = level_show::ytile#7
Alias level_show::tile_left#2 = level_show::tile_left#3
Alias level_show::tile_right#0 = level_show::tile_right#2
Alias level_show::level#11 = level_show::level#4
Alias level_show::xtile#2 = level_show::xtile#9
Alias level_tile_get::ytile#4 = level_tile_get::ytile#5
Alias level_tile_get::xtile#4 = level_tile_get::xtile#5
Alias level_tile_get::return#2 = level_tile_get::return#7
Alias level_tile_directions::ytile#5 = level_tile_directions::ytile#6
Alias level_tile_directions::xtile#5 = level_tile_directions::xtile#6
Alias level_tile_directions::return#2 = level_tile_directions::return#8
Alias init_level_tile_directions::ytile#15 = init_level_tile_directions::ytile#2
Alias init_level_tile_directions::directions#7 = init_level_tile_directions::directions#9
Alias init_level_tile_directions::xtile#2 = init_level_tile_directions::xtile#3 init_level_tile_directions::xtile#9 init_level_tile_directions::xtile#8
Alias init_level_tile_directions::ytile#10 = init_level_tile_directions::ytile#3 init_level_tile_directions::ytile#8 init_level_tile_directions::ytile#4 init_level_tile_directions::ytile#9
Alias init_level_tile_directions::directions#16 = init_level_tile_directions::directions#18 init_level_tile_directions::directions#4 init_level_tile_directions::directions#17 init_level_tile_directions::directions#2
Alias level_tile_get::xtile#0 = init_level_tile_directions::$2
Alias level_tile_get::return#3 = level_tile_get::return#8
Alias init_level_tile_directions::open_directions#0 = init_level_tile_directions::open_directions#10 init_level_tile_directions::open_directions#5
Alias level_tile_get::xtile#1 = init_level_tile_directions::$6
Alias level_tile_get::return#4 = level_tile_get::return#9
Alias init_level_tile_directions::ytile#11 = init_level_tile_directions::ytile#12 init_level_tile_directions::ytile#5
Alias init_level_tile_directions::xtile#10 = init_level_tile_directions::xtile#11 init_level_tile_directions::xtile#4
Alias init_level_tile_directions::open_directions#11 = init_level_tile_directions::open_directions#14 init_level_tile_directions::open_directions#6
Alias init_level_tile_directions::directions#13 = init_level_tile_directions::directions#14 init_level_tile_directions::directions#15
Alias level_tile_get::ytile#2 = init_level_tile_directions::$10
Alias level_tile_get::return#10 = level_tile_get::return#5
Alias init_level_tile_directions::ytile#13 = init_level_tile_directions::ytile#14 init_level_tile_directions::ytile#6
Alias init_level_tile_directions::xtile#12 = init_level_tile_directions::xtile#13 init_level_tile_directions::xtile#5
Alias init_level_tile_directions::open_directions#12 = init_level_tile_directions::open_directions#15 init_level_tile_directions::open_directions#7
Alias init_level_tile_directions::directions#10 = init_level_tile_directions::directions#11 init_level_tile_directions::directions#12
Alias level_tile_get::ytile#3 = init_level_tile_directions::$14
Alias level_tile_get::return#11 = level_tile_get::return#6
Alias init_level_tile_directions::open_directions#13 = init_level_tile_directions::open_directions#16 init_level_tile_directions::open_directions#9
Alias init_level_tile_directions::directions#5 = init_level_tile_directions::directions#6 init_level_tile_directions::directions#8
Alias init_level_tile_directions::xtile#14 = init_level_tile_directions::xtile#15 init_level_tile_directions::xtile#6
Alias init_level_tile_directions::ytile#17 = init_level_tile_directions::ytile#18 init_level_tile_directions::ytile#7
Alias init_sprite_pointers::screen#2 = init_sprite_pointers::screen#6
Alias init_sprite_pointers::sprites_ptr_1#5 = init_sprite_pointers::sprites_ptr_1#6
Alias init_sprite_pointers::sprites_ptr_2#5 = init_sprite_pointers::sprites_ptr_2#6
Alias init_sprite_pointers::screen#3 = init_sprite_pointers::screen#5 init_sprite_pointers::screen#4
Alias init_sprite_pointers::sprite#2 = init_sprite_pointers::sprite#3
Alias init_sprite_pointers::sprites_ptr_1#2 = init_sprite_pointers::sprites_ptr_1#4 init_sprite_pointers::sprites_ptr_1#3
Alias init_sprite_pointers::sprites_ptr_2#2 = init_sprite_pointers::sprites_ptr_2#4 init_sprite_pointers::sprites_ptr_2#3
Alias irq_screen_top::toD0181_screen#0 = irq_screen_top::toD0181_screen#1
Alias irq_screen_top::toD0181_gfx#0 = irq_screen_top::toD0181_gfx#1
Alias irq_screen_top::toD0181_return#0 = irq_screen_top::toD0181_$6 irq_screen_top::toD0181_return#2 irq_screen_top::toD0181_return#1 irq_screen_top::toD0181_return#3 irq_screen_top::$0
Alias irq_screen_top::toDd001_gfx#0 = irq_screen_top::toDd001_gfx#1
Alias irq_screen_top::toDd001_return#0 = irq_screen_top::toDd001_$2 irq_screen_top::toDd001_return#2 irq_screen_top::toDd001_return#1 irq_screen_top::toDd001_return#3 irq_screen_top::$5
Alias irq_screen_top::toDd002_gfx#0 = irq_screen_top::toDd002_gfx#1
Alias irq_screen_top::toDd002_return#0 = irq_screen_top::toDd002_$2 irq_screen_top::toDd002_return#2 irq_screen_top::toDd002_return#1 irq_screen_top::toDd002_return#3 irq_screen_top::$4
Alias game_logic::ghost_frame_idx#0 = game_logic::ghost_frame_idx#3
Alias game_logic::do_reverse#0 = game_logic::do_reverse#7 game_logic::do_reverse#9 game_logic::do_reverse#8 game_logic::do_reverse#5 game_logic::do_reverse#6
Alias game_logic::ytiles#0 = game_logic::ytiles#1 game_logic::ytiles#3 game_logic::ytiles#2
Alias game_logic::pacman_xtile#0 = game_logic::pacman_xtile#1 game_logic::pacman_xtile#3 game_logic::pacman_xtile#2
Alias game_logic::pacman_ytile#0 = game_logic::pacman_ytile#1 game_logic::pacman_ytile#3 game_logic::pacman_ytile#2
Alias game_logic::tile_id#0 = game_logic::tile_id#1
Alias level_tile_directions::return#3 = level_tile_directions::return#9
Alias game_logic::ghost4_xtile#0 = game_logic::ghost4_xtile#5 game_logic::ghost4_xtile#4 game_logic::ghost4_xtile#2 game_logic::ghost4_xtile#3
Alias game_logic::ghost4_ytile#0 = game_logic::ghost4_ytile#5 game_logic::ghost4_ytile#4 game_logic::ghost4_ytile#2 game_logic::ghost4_ytile#3
Alias game_logic::open_directions#1 = game_logic::open_directions#2 game_logic::open_directions#6 game_logic::open_directions#4 game_logic::open_directions#5
Alias game_logic::target_xtile#2 = game_logic::$117
Alias game_logic::target_ytile#2 = game_logic::$118
Alias choose_direction::return#0 = choose_direction::return#6
Alias level_tile_directions::return#10 = level_tile_directions::return#4
Alias game_logic::ghost3_xtile#0 = game_logic::ghost3_xtile#5 game_logic::ghost3_xtile#4 game_logic::ghost3_xtile#3 game_logic::ghost3_xtile#2
Alias game_logic::ghost3_ytile#0 = game_logic::ghost3_ytile#5 game_logic::ghost3_ytile#4 game_logic::ghost3_ytile#3 game_logic::ghost3_ytile#2
Alias game_logic::open_directions1#1 = game_logic::open_directions1#2 game_logic::open_directions1#6 game_logic::open_directions1#5 game_logic::open_directions1#4
Alias game_logic::target_xtile1#2 = game_logic::$138
Alias game_logic::target_ytile1#2 = game_logic::$139
Alias choose_direction::return#1 = choose_direction::return#7
Alias level_tile_directions::return#11 = level_tile_directions::return#5
Alias game_logic::ghost2_xtile#0 = game_logic::ghost2_xtile#5 game_logic::ghost2_xtile#4 game_logic::ghost2_xtile#2 game_logic::ghost2_xtile#3
Alias game_logic::ghost2_ytile#0 = game_logic::ghost2_ytile#5 game_logic::ghost2_ytile#4 game_logic::ghost2_ytile#2 game_logic::ghost2_ytile#3
Alias game_logic::open_directions2#1 = game_logic::open_directions2#2 game_logic::open_directions2#6 game_logic::open_directions2#4 game_logic::open_directions2#5
Alias game_logic::target_xtile2#2 = game_logic::$159
Alias game_logic::target_ytile2#2 = game_logic::$160
Alias choose_direction::return#2 = choose_direction::return#8
Alias level_tile_directions::return#12 = level_tile_directions::return#6
Alias game_logic::ghost1_xtile#0 = game_logic::ghost1_xtile#5 game_logic::ghost1_xtile#4 game_logic::ghost1_xtile#2 game_logic::ghost1_xtile#3
Alias game_logic::ghost1_ytile#0 = game_logic::ghost1_ytile#5 game_logic::ghost1_ytile#4 game_logic::ghost1_ytile#2 game_logic::ghost1_ytile#3
Alias game_logic::open_directions3#1 = game_logic::open_directions3#2 game_logic::open_directions3#6 game_logic::open_directions3#4 game_logic::open_directions3#5
Alias game_logic::target_xtile3#2 = game_logic::$180
Alias game_logic::target_ytile3#2 = game_logic::$181
Alias choose_direction::return#3 = choose_direction::return#9
Alias level_tile_directions::return#13 = level_tile_directions::return#7
Alias game_logic::joy_directions#0 = game_logic::joy_directions#1
Alias game_logic::open_directions4#0 = game_logic::open_directions4#2 game_logic::open_directions4#3
Alias game_logic::new_direction#0 = game_logic::new_direction#1
Alias choose_direction::ydiff#0 = choose_direction::ydiff#1 choose_direction::ydiff#8
Alias choose_direction::xdiff#0 = choose_direction::xdiff#1 choose_direction::xdiff#8
Alias choose_direction::dist_min#0 = choose_direction::dist_min#5
Alias choose_direction::open_directions#4 = choose_direction::open_directions#8 choose_direction::open_directions#9
Alias choose_direction::direction#0 = choose_direction::direction#12
Alias choose_direction::dist_up#0 = choose_direction::dist_up#1 choose_direction::dist_min#1
Alias choose_direction::ydiff#2 = choose_direction::ydiff#5 choose_direction::ydiff#9
Alias choose_direction::xdiff#2 = choose_direction::xdiff#5 choose_direction::xdiff#9
Alias choose_direction::dist_min#6 = choose_direction::dist_min#9
Alias choose_direction::open_directions#10 = choose_direction::open_directions#5 choose_direction::open_directions#11
Alias choose_direction::direction#10 = choose_direction::direction#11
Alias choose_direction::dist_down#0 = choose_direction::dist_down#1 choose_direction::dist_min#2
Alias choose_direction::xdiff#10 = choose_direction::xdiff#3 choose_direction::xdiff#6
Alias choose_direction::ydiff#10 = choose_direction::ydiff#3 choose_direction::ydiff#6
Alias choose_direction::dist_min#10 = choose_direction::dist_min#7
Alias choose_direction::open_directions#12 = choose_direction::open_directions#13 choose_direction::open_directions#6
Alias choose_direction::direction#8 = choose_direction::direction#9
Alias choose_direction::dist_left#0 = choose_direction::dist_left#1 choose_direction::dist_min#3
Alias choose_direction::return#10 = choose_direction::return#4 choose_direction::direction#5 choose_direction::return#5
Alias choose_direction::xdiff#4 = choose_direction::xdiff#7
Alias choose_direction::ydiff#4 = choose_direction::ydiff#7
Alias choose_direction::dist_min#11 = choose_direction::dist_min#8
Alias choose_direction::direction#6 = choose_direction::direction#7
Alias choose_direction::dist_right#0 = choose_direction::dist_right#1 choose_direction::dist_min#4
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Alias init_render_index::render_index_xcol#0 = init_render_index::render_index#4
Alias init_render_index::x_col#2 = init_render_index::x_col#4
Alias init_render_index::render_index_xcol#2 = init_render_index::render_index_xcol#3
Alias init_render_index::y_pos#2 = init_render_index::y_pos#4
Alias init_render_index::canvas_xcol#1 = init_render_index::canvas_xcol#3
Alias init_render_index::render_ypos_table#2 = init_render_index::render_ypos_table#5
Alias init_render_index::render_index#10 = init_render_index::render_index#8
Alias init_render_index::x_col#10 = init_render_index::x_col#8
Alias splash_run::i#2 = splash_run::i#4
Alias level_show::level#10 = level_show::level#11 level_show::level#2
Alias level_show::xtile#1 = level_show::xtile#4
Alias level_show::xcol#2 = level_show::xcol#5 level_show::xcol#3
Alias level_show::ytile#10 = level_show::ytile#6 level_show::ytile#4
Alias level_show::tile_left#0 = level_show::tile_left#2 level_show::tile_left#1
Alias level_show::tile_right#0 = level_show::tile_right#1
Alias level_show::xtile#2 = level_show::xtile#7
Alias init_level_tile_directions::xtile#10 = init_level_tile_directions::xtile#2 init_level_tile_directions::xtile#12 init_level_tile_directions::xtile#14 init_level_tile_directions::xtile#7
Alias init_level_tile_directions::ytile#10 = init_level_tile_directions::ytile#11 init_level_tile_directions::ytile#13 init_level_tile_directions::ytile#17 init_level_tile_directions::ytile#16
Alias init_level_tile_directions::directions#10 = init_level_tile_directions::directions#13 init_level_tile_directions::directions#16 init_level_tile_directions::directions#5 init_level_tile_directions::directions#3
Alias game_logic::open_directions#1 = game_logic::open_directions#3
Alias game_logic::ghost4_xtile#0 = game_logic::ghost4_xtile#1
Alias game_logic::ghost4_ytile#0 = game_logic::ghost4_ytile#1
Alias game_logic::open_directions1#1 = game_logic::open_directions1#3
Alias game_logic::ghost3_xtile#0 = game_logic::ghost3_xtile#1
Alias game_logic::ghost3_ytile#0 = game_logic::ghost3_ytile#1
Alias game_logic::open_directions2#1 = game_logic::open_directions2#3
Alias game_logic::ghost2_xtile#0 = game_logic::ghost2_xtile#1
Alias game_logic::ghost2_ytile#0 = game_logic::ghost2_ytile#1
Alias game_logic::open_directions3#1 = game_logic::open_directions3#3
Alias game_logic::ghost1_xtile#0 = game_logic::ghost1_xtile#1
Alias game_logic::ghost1_ytile#0 = game_logic::ghost1_ytile#1
Alias game_logic::open_directions4#0 = game_logic::open_directions4#1
Alias choose_direction::open_directions#10 = choose_direction::open_directions#4 choose_direction::open_directions#12 choose_direction::open_directions#7
Alias choose_direction::ydiff#0 = choose_direction::ydiff#2 choose_direction::ydiff#10 choose_direction::ydiff#4
Alias choose_direction::xdiff#0 = choose_direction::xdiff#2 choose_direction::xdiff#10 choose_direction::xdiff#4
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Identical Phi Values memcpy::source#1 memcpy::source#0
Identical Phi Values memcpy::destination#1 memcpy::destination#0
Identical Phi Values memcpy::num#1 memcpy::num#0
Identical Phi Values memcpy::src_end#1 memcpy::src_end#0
Identical Phi Values memcpy::destination#2 memcpy::destination#1
Identical Phi Values memset::end#1 memset::end#0
Identical Phi Values memset::str#8 memset::str#6
Identical Phi Values memset::c#5 memset::c#7
Identical Phi Values merge_code::raster_code#7 merge_code::raster_code#3
Identical Phi Values merge_code::dest_code#19 merge_code::dest_code#7
Identical Phi Values merge_code::logic_code#20 merge_code::logic_code#6
Identical Phi Values merge_code::cycle_budget#11 merge_code::cycle_budget#13
Identical Phi Values merge_code::logic_cycles#1 merge_code::logic_cycles#0
Identical Phi Values merge_code::raster_code#13 merge_code::raster_code#11
Identical Phi Values merge_code::raster_code#10 merge_code::raster_code#11
Identical Phi Values merge_code::logic_code#21 merge_code::logic_code#17
Identical Phi Values init_render_index::canvas_xcol#1 init_render_index::canvas_xcol#0
Identical Phi Values init_render_index::render_ypos_table#2 init_render_index::render_ypos_table#4
Identical Phi Values init_render_index::render_index#10 init_render_index::render_index_xcol#0
Identical Phi Values init_render_index::x_col#10 init_render_index::x_col#2
Identical Phi Values render::ypix#1 render::ypix#0
Identical Phi Values render::pixels#2 render::pixels#4
Identical Phi Values render_tiles::tile_left#1 render_tiles::tile_left#0
Identical Phi Values render_tiles::tile_right#1 render_tiles::tile_right#0
Identical Phi Values render_tiles::xcol#1 render_tiles::xcol#0
Identical Phi Values render_tiles::ytile#1 render_tiles::ytile#0
Identical Phi Values render_tiles::tile_left_pixels#1 render_tiles::tile_left_pixels#0
Identical Phi Values render_tiles::tile_right_pixels#1 render_tiles::tile_right_pixels#0
Identical Phi Values init_bobs_restore::bob_restore#2 init_bobs_restore::bob_restore#5
Identical Phi Values init_bobs_restore::bob#3 init_bobs_restore::bob#2
Identical Phi Values done_run::xcol#3 done_run::xcol#2
Identical Phi Values splash_show::xcol#3 splash_show::xcol#2
Identical Phi Values level_show::level#10 level_show::level#8
Identical Phi Values level_show::ytile#10 level_show::ytile#2
Identical Phi Values init_level_tile_directions::ytile#10 init_level_tile_directions::ytile#15
Identical Phi Values init_level_tile_directions::directions#10 init_level_tile_directions::directions#7
Identical Phi Values init_sprite_pointers::screen#3 init_sprite_pointers::screen#2
Identical Phi Values init_sprite_pointers::sprites_ptr_1#2 init_sprite_pointers::sprites_ptr_1#5
Identical Phi Values init_sprite_pointers::sprites_ptr_2#2 init_sprite_pointers::sprites_ptr_2#5
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values memset::return#0 memset::str#6
Identical Phi Values merge_code::raster_code#11 merge_code::raster_code#2
Successful SSA optimization Pass2IdenticalPhiElimination
Identified duplicate assignment right side [385] splash_run::$24 = splash_run::i#2 * 2
Successful SSA optimization Pass2DuplicateRValueIdentification
Simple Condition memcpy::$1 [7] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
Simple Condition memset::$1 [14] if(memset::num#5<=0) goto memset::@1
Simple Condition memset::$3 [21] if(memset::dst#2!=memset::end#0) goto memset::@4
Simple Condition merge_code::$0 [30] if(*merge_code::raster_code#4!=merge_code::RASTER_END) goto merge_code::@2
Simple Condition merge_code::$2 [38] if(merge_code::cycle_budget#0!=merge_code::RASTER_EXIT) goto merge_code::@4
Simple Condition merge_code::$3 [41] if(merge_code::cycle_budget#13>0) goto merge_code::@5
Simple Condition merge_code::$11 [54] if(*merge_code::logic_code#10!=merge_code::LOGIC_END) goto merge_code::@7
Simple Condition merge_code::$12 [62] if(merge_code::cycle_budget#10>0) goto merge_code::@11
Simple Condition merge_code::$13 [64] if(merge_code::cycle_budget#10==3) goto merge_code::@12
Simple Condition merge_code::$14 [75] if(*merge_code::logic_code#12!=merge_code::LOGIC_EXIT) goto merge_code::@15
Simple Condition merge_code::$15 [81] if(*merge_code::logic_code#14!=merge_code::LOGIC_END) goto merge_code::@18
Simple Condition pacman_sound_play::$0 [95] if(0==pacman_ch1_enabled) goto pacman_sound_play::@return
Simple Condition pacman_sound_play::$3 [101] if(pacman_ch1_idx!=pacman_sound_play::$1) goto pacman_sound_play::@return
Simple Condition init_render_index::$0 [109] if(init_render_index::x_col#2<$1a) goto init_render_index::@2
Simple Condition init_render_index::$2 [113] if(init_render_index::x_col#2<$18) goto init_render_index::@4
Simple Condition init_render_index::$3 [124] if(init_render_index::y_pos#2<$94) goto init_render_index::@6
Simple Condition init_render_index::$8 [135] if(init_render_index::ypos_inc_offset#2<$17) goto init_render_index::@8
Simple Condition render::$8 [157] if(render::i#2<render::ypix#0) goto render::@2
Simple Condition render_tiles::$10 [181] if(render_tiles::y#2<4) goto render_tiles::@2
Simple Condition init_bobs_restore::$0 [194] if(init_bobs_restore::bob#2<NUM_BOBS*2) goto init_bobs_restore::@2
Simple Condition init_bobs_restore::$1 [201] if(init_bobs_restore::i#2<SIZE_BOB_RESTORE) goto init_bobs_restore::@5
Simple Condition done_run::$1 [224] if(done_run::i#2<$2f) goto done_run::@6
Simple Condition done_run::$2 [230] if(done_run::i1#2<4) goto done_run::@9
Simple Condition done_run::$12 [238] if(0!=pacman_wins) goto done_run::@2
Simple Condition done_run::$5 [247] if(done_run::xcol#2<$19) goto done_run::@12
Simple Condition done_run::$6 [252] if(done_run::ypos#2<$19) goto done_run::@15
Simple Condition done_run::$9 [265] if(0==done_run::$8) goto done_run::@18
Simple Condition done_run::$10 [267] if(0==music_play_next) goto done_run::@17
Simple Condition splash_run::$22 [329] if(splash_run::i#2<8) goto splash_run::@3
Simple Condition splash_run::$26 [339] if(0==splash_run::$25) goto splash_run::@5
Simple Condition splash_run::$27 [378] if(splash_run::i1#2<8) goto splash_run::@8
Simple Condition splash_run::$28 [385] if(splash_run::i2#2<4) goto splash_run::@11
Simple Condition splash_run::$29 [396] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fa) goto splash_run::@13
Simple Condition splash_run::$31 [410] if(0==splash_run::$30) goto splash_run::@16
Simple Condition splash_run::$32 [412] if(0==music_play_next) goto splash_run::@15
Simple Condition gameplay_run::$8 [420] if(gameplay_run::i#2<$2f) goto gameplay_run::@2
Simple Condition gameplay_run::$9 [430] if(gameplay_run::i1#2<8) goto gameplay_run::@5
Simple Condition gameplay_run::$10 [451] if(gameplay_run::i2#2<8) goto gameplay_run::@8
Simple Condition gameplay_run::$11 [462] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fb) goto gameplay_run::@10
Simple Condition gameplay_run::$12 [464] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fa) goto gameplay_run::@11
Simple Condition joyfire::$1 [481] if(joyfire::$0==0) goto joyfire::@1
Simple Condition splash_show::$0 [490] if(splash_show::xcol#2<$19) goto splash_show::@2
Simple Condition splash_show::$1 [494] if(splash_show::ypos#2<$93) goto splash_show::@4
Simple Condition level_show::$0 [509] if(level_show::ytile#2<$25) goto level_show::@2
Simple Condition level_show::$1 [514] if(level_show::xcol#2<$19) goto level_show::@5
Simple Condition level_show::$3 [518] if(TILES_TYPE[level_show::tile_left#0]!=PILL) goto level_show::@7
Simple Condition level_show::$5 [525] if(TILES_TYPE[level_show::tile_right#0]!=PILL) goto level_show::@8
Simple Condition init_level_tile_directions::$0 [564] if(init_level_tile_directions::ytile#15<$25) goto init_level_tile_directions::@2
Simple Condition init_level_tile_directions::$1 [568] if(init_level_tile_directions::xtile#10<$32) goto init_level_tile_directions::@4
Simple Condition init_level_tile_directions::$5 [576] if(TILES_TYPE[init_level_tile_directions::$3]==WALL) goto init_level_tile_directions::@6
Simple Condition init_level_tile_directions::$9 [586] if(TILES_TYPE[init_level_tile_directions::$7]==WALL) goto init_level_tile_directions::@7
Simple Condition init_level_tile_directions::$13 [595] if(TILES_TYPE[init_level_tile_directions::$11]==WALL) goto init_level_tile_directions::@8
Simple Condition init_level_tile_directions::$17 [604] if(TILES_TYPE[init_level_tile_directions::$15]==WALL) goto init_level_tile_directions::@9
Simple Condition init_sprite_pointers::$0 [616] if(init_sprite_pointers::screen#2<$e) goto init_sprite_pointers::@2
Simple Condition init_sprite_pointers::$1 [620] if(init_sprite_pointers::sprite#2<8) goto init_sprite_pointers::@4
Simple Condition irq_screen_top::$8 [658] if(0!=frame) goto irq_screen_top::@1
Simple Condition irq_screen_top::$3 [674] if(phase==0) goto irq_screen_top::@3
Simple Condition game_logic::$1 [683] if(game_playable!=0) goto game_logic::@1
Simple Condition game_logic::$4 [688] if(game_logic_substep==0) goto game_logic::@2
Simple Condition game_logic::$188 [691] if(pacman_direction==RIGHT) goto game_logic::@144
Simple Condition game_logic::$5 [693] if(game_logic_substep==1) goto game_logic::@3
Simple Condition game_logic::$211 [695] if(0!=ghost1_respawn) goto game_logic::@126
Simple Condition game_logic::$6 [697] if(game_logic_substep==2) goto game_logic::@4
Simple Condition game_logic::$212 [699] if(0!=ghost2_respawn) goto game_logic::@108
Simple Condition game_logic::$7 [701] if(game_logic_substep==4) goto game_logic::@5
Simple Condition game_logic::$213 [703] if(0!=ghost3_respawn) goto game_logic::@90
Simple Condition game_logic::$8 [705] if(game_logic_substep==5) goto game_logic::@6
Simple Condition game_logic::$214 [707] if(0!=ghost4_respawn) goto game_logic::@72
Simple Condition game_logic::$9 [709] if(game_logic_substep==6) goto game_logic::@7
Simple Condition game_logic::$48 [713] if(ghosts_mode==SCATTER) goto game_logic::@45
Simple Condition game_logic::$23 [733] if(ghosts_mode!=FRIGHTENED) goto game_logic::@44
Simple Condition game_logic::$57 [773] if(ghosts_mode_count<=$32) goto game_logic::@47
Simple Condition game_logic::$49 [775] if(ghosts_mode==CHASE) goto game_logic::@46
Simple Condition game_logic::$55 [777] if(ghosts_mode_count<=$96) goto game_logic::@47
Simple Condition game_logic::$51 [779] if(ghosts_mode!=FRIGHTENED) goto game_logic::@47
Simple Condition game_logic::$53 [781] if(ghosts_mode_count<=$32) goto game_logic::@47
Simple Condition game_logic::$58 [790] if(0==game_logic::do_reverse#4) goto game_logic::@48
Simple Condition game_logic::$62 [800] if(TILES_TYPE[game_logic::tile_id#0]==PILL) goto game_logic::@49
Simple Condition game_logic::$74 [815] if(pill_count!=0) goto game_logic::@50
Simple Condition game_logic::$64 [817] if(TILES_TYPE[game_logic::tile_id#0]!=POWERUP) goto game_logic::@50
Simple Condition game_logic::$102 [836] if(ghosts_mode==FRIGHTENED) goto game_logic::@57
Simple Condition game_logic::$100 [844] if(ghosts_mode==FRIGHTENED) goto game_logic::@56
Simple Condition game_logic::$98 [852] if(ghosts_mode==FRIGHTENED) goto game_logic::@55
Simple Condition game_logic::$96 [861] if(ghosts_mode==FRIGHTENED) goto game_logic::@54
Simple Condition game_logic::$124 [892] if(ghost4_respawn!=0) goto game_logic::@return
Simple Condition game_logic::$104 [894] if(ghost4_direction==RIGHT) goto game_logic::@73
Simple Condition game_logic::$105 [897] if(ghost4_direction==DOWN) goto game_logic::@74
Simple Condition game_logic::$106 [900] if(ghost4_direction==LEFT) goto game_logic::@75
Simple Condition game_logic::$108 [903] if(ghost4_direction!=UP) goto game_logic::@76
Simple Condition game_logic::$120 [911] if(ghost4_xfine==1) goto game_logic::@82
Simple Condition game_logic::$215 [914] if(0!=ghost4_reverse) goto game_logic::@78
Simple Condition game_logic::$115 [926] if(ghosts_mode==FRIGHTENED) goto game_logic::@79
Simple Condition game_logic::$116 [931] if(ghosts_mode==SCATTER) goto game_logic::@80
Simple Condition game_logic::$122 [948] if(ghost4_xfine!=$61) goto game_logic::@return
Simple Condition game_logic::$145 [956] if(ghost3_respawn!=0) goto game_logic::@return
Simple Condition game_logic::$125 [958] if(ghost3_direction==RIGHT) goto game_logic::@91
Simple Condition game_logic::$126 [961] if(ghost3_direction==DOWN) goto game_logic::@92
Simple Condition game_logic::$127 [964] if(ghost3_direction==LEFT) goto game_logic::@93
Simple Condition game_logic::$129 [967] if(ghost3_direction!=UP) goto game_logic::@94
Simple Condition game_logic::$141 [975] if(ghost3_xfine==1) goto game_logic::@100
Simple Condition game_logic::$216 [978] if(0!=ghost3_reverse) goto game_logic::@96
Simple Condition game_logic::$136 [990] if(ghosts_mode==FRIGHTENED) goto game_logic::@97
Simple Condition game_logic::$137 [995] if(ghosts_mode==SCATTER) goto game_logic::@98
Simple Condition game_logic::$143 [1012] if(ghost3_xfine!=$61) goto game_logic::@return
Simple Condition game_logic::$166 [1020] if(ghost2_respawn!=0) goto game_logic::@return
Simple Condition game_logic::$146 [1022] if(ghost2_direction==RIGHT) goto game_logic::@109
Simple Condition game_logic::$147 [1025] if(ghost2_direction==DOWN) goto game_logic::@110
Simple Condition game_logic::$148 [1028] if(ghost2_direction==LEFT) goto game_logic::@111
Simple Condition game_logic::$150 [1031] if(ghost2_direction!=UP) goto game_logic::@112
Simple Condition game_logic::$162 [1039] if(ghost2_xfine==1) goto game_logic::@118
Simple Condition game_logic::$217 [1042] if(0!=ghost2_reverse) goto game_logic::@114
Simple Condition game_logic::$157 [1054] if(ghosts_mode==FRIGHTENED) goto game_logic::@115
Simple Condition game_logic::$158 [1059] if(ghosts_mode==SCATTER) goto game_logic::@116
Simple Condition game_logic::$164 [1076] if(ghost2_xfine!=$61) goto game_logic::@return
Simple Condition game_logic::$187 [1084] if(ghost1_respawn!=0) goto game_logic::@return
Simple Condition game_logic::$167 [1086] if(ghost1_direction==RIGHT) goto game_logic::@127
Simple Condition game_logic::$168 [1089] if(ghost1_direction==DOWN) goto game_logic::@128
Simple Condition game_logic::$169 [1092] if(ghost1_direction==LEFT) goto game_logic::@129
Simple Condition game_logic::$171 [1095] if(ghost1_direction!=UP) goto game_logic::@130
Simple Condition game_logic::$183 [1103] if(ghost1_xfine==1) goto game_logic::@136
Simple Condition game_logic::$218 [1106] if(0!=ghost1_reverse) goto game_logic::@132
Simple Condition game_logic::$178 [1118] if(ghosts_mode==FRIGHTENED) goto game_logic::@133
Simple Condition game_logic::$179 [1123] if(ghosts_mode==SCATTER) goto game_logic::@134
Simple Condition game_logic::$185 [1140] if(ghost1_xfine!=$61) goto game_logic::@return
Simple Condition game_logic::$189 [1148] if(pacman_direction==DOWN) goto game_logic::@145
Simple Condition game_logic::$190 [1151] if(pacman_direction==LEFT) goto game_logic::@146
Simple Condition game_logic::$192 [1154] if(pacman_direction!=UP) goto game_logic::@147
Simple Condition game_logic::$207 [1163] if(pacman_xfine==1) goto game_logic::@150
Simple Condition game_logic::$203 [1176] if(game_logic::joy_directions#0==0) goto game_logic::@149
Simple Condition game_logic::$206 [1181] if(game_logic::new_direction#0==0) goto game_logic::@149
Simple Condition game_logic::$209 [1185] if(pacman_xfine!=$61) goto game_logic::@return
Simple Condition choose_direction::$3 [1194] if(0==choose_direction::$2) goto choose_direction::@1
Simple Condition choose_direction::$5 [1198] if(0==choose_direction::$4) goto choose_direction::@2
Simple Condition choose_direction::$13 [1202] if(choose_direction::dist_up#0>=choose_direction::dist_min#0) goto choose_direction::@1
Simple Condition choose_direction::$7 [1207] if(0==choose_direction::$6) goto choose_direction::@3
Simple Condition choose_direction::$17 [1211] if(choose_direction::dist_down#0>=choose_direction::dist_min#6) goto choose_direction::@2
Simple Condition choose_direction::$9 [1216] if(0==choose_direction::$8) goto choose_direction::@4
Simple Condition choose_direction::$21 [1220] if(choose_direction::dist_left#0>=choose_direction::dist_min#10) goto choose_direction::@3
Simple Condition choose_direction::$25 [1226] if(choose_direction::dist_right#0>=choose_direction::dist_min#11) goto choose_direction::@4
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting ! if()-condition to reversed if() [49] merge_code::$10 = ! merge_code::$9
Rewriting && if()-condition to two if()s [48] merge_code::$9 = merge_code::$4 && merge_code::$8
Rewriting || if()-condition to two if()s [47] merge_code::$8 = merge_code::$6 || merge_code::$7
Rewriting ! if()-condition to reversed if() [474] gameplay_run::$15 = ! gameplay_run::$14
Rewriting || if()-condition to two if()s [473] gameplay_run::$14 = pacman_wins || gameplay_run::$13
Rewriting ! if()-condition to reversed if() [540] level_tile_get::$3 = ! level_tile_get::$2
Rewriting || if()-condition to two if()s [539] level_tile_get::$2 = level_tile_get::$0 || level_tile_get::$1
Rewriting ! if()-condition to reversed if() [552] level_tile_directions::$3 = ! level_tile_directions::$2
Rewriting || if()-condition to two if()s [551] level_tile_directions::$2 = level_tile_directions::$0 || level_tile_directions::$1
Rewriting ! if()-condition to reversed if() [717] game_logic::$13 = ! game_logic::$12
Rewriting || if()-condition to two if()s [716] game_logic::$12 = game_logic::$10 || game_logic::$11
Rewriting && if()-condition to two if()s [832] game_logic::$79 = game_logic::$76 && game_logic::$78
Rewriting && if()-condition to two if()s [841] game_logic::$84 = game_logic::$81 && game_logic::$83
Rewriting && if()-condition to two if()s [849] game_logic::$89 = game_logic::$86 && game_logic::$88
Rewriting ! if()-condition to reversed if() [858] game_logic::$95 = ! game_logic::$94
Rewriting && if()-condition to two if()s [857] game_logic::$94 = game_logic::$91 && game_logic::$93
Rewriting && if()-condition to two if()s [907] game_logic::$111 = game_logic::$109 && game_logic::$110
Rewriting && if()-condition to two if()s [971] game_logic::$132 = game_logic::$130 && game_logic::$131
Rewriting && if()-condition to two if()s [1035] game_logic::$153 = game_logic::$151 && game_logic::$152
Rewriting && if()-condition to two if()s [1099] game_logic::$174 = game_logic::$172 && game_logic::$173
Rewriting && if()-condition to two if()s [1158] game_logic::$195 = game_logic::$193 && game_logic::$194
Successful SSA optimization Pass2ConditionalAndOrRewriting
Warning! Adding boolean cast to non-boolean condition pacman_wins
Negating conditional jump and destination [41] if(merge_code::cycle_budget#13<=0) goto merge_code::@10
Constant right-side identified [99] pacman_sound_play::$1 = sizeof PACMAN_CH1_FREQ_HI
Constant right-side identified [204] init_bobs_restore::$2 = byte0 init_bobs_restore::CANVAS_HIDDEN
Constant right-side identified [206] init_bobs_restore::$3 = byte1 init_bobs_restore::CANVAS_HIDDEN
Constant right-side identified [208] init_bobs_restore::$4 = byte0 init_bobs_restore::CANVAS_HIDDEN
Constant right-side identified [210] init_bobs_restore::$5 = byte1 init_bobs_restore::CANVAS_HIDDEN
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant pacman_sound_play::$1 = sizeof PACMAN_CH1_FREQ_HI
Constant init_render_index::render_index#0 = RENDER_INDEX
Constant init_render_index::x_col#0 = 0
Constant init_render_index::render_ypos_table#0 = RENDER_YPOS
Constant init_render_index::ypos_inc_offset#0 = 0
Constant init_render_index::y_pos#0 = 0
Constant init_render_index::render_ypos_table#1 = RENDER_YPOS_9TH
Constant init_render_index::ypos_inc_offset#1 = $b
Constant render::i#0 = 0
Constant render_tiles::y#0 = 0
Constant init_bobs_restore::bob_restore#0 = bobs_restore
Constant init_bobs_restore::bob#0 = 0
Constant init_bobs_restore::i#0 = 0
Constant init_bobs_restore::$2 = byte0 init_bobs_restore::CANVAS_HIDDEN
Constant init_bobs_restore::$3 = byte1 init_bobs_restore::CANVAS_HIDDEN
Constant init_bobs_restore::$4 = byte0 init_bobs_restore::CANVAS_HIDDEN
Constant init_bobs_restore::$5 = byte1 init_bobs_restore::CANVAS_HIDDEN
Constant done_run::i#0 = 0
Constant done_run::i1#0 = 0
Constant done_run::gfx#0 = WIN_GFX
Constant done_run::xcol#0 = 0
Constant done_run::ypos#0 = 0
Constant memset::str#0 = (void *)(char *) 16384
Constant memset::c#0 = 0
Constant memset::num#0 = $c00
Constant merge_code::dest_code#7 = RASTER_CODE
Constant merge_code::raster_code#3 = RASTER_CODE_UNMERGED
Constant merge_code::logic_code#6 = LOGIC_CODE_UNMERGED
Constant memset::str#1 = (void *)BANK_1+$2000
Constant memset::c#1 = 0
Constant memset::num#1 = $1fff
Constant memset::str#2 = (void *)BANK_2
Constant memset::c#2 = 0
Constant memset::num#2 = $3fff
Constant memset::str#3 = (void *)BANK_1
Constant memset::c#3 = 0
Constant memset::num#3 = $1fff
Constant memcpy::destination#0 = (void *)INTRO_MUSIC_CRUNCHED_UPPER
Constant memcpy::source#0 = (void *)INTRO_MUSIC_CRUNCHED
Constant memcpy::num#0 = INTRO_MUSIC_CRUNCHED_SIZE
Constant memset::str#4 = (void *)INTRO_MUSIC_CRUNCHED_UPPER
Constant memset::c#4 = 0
Constant memset::num#4 = INTRO_MUSIC_CRUNCHED_SIZE
Constant splash_run::msb#0 = 0
Constant splash_run::i#0 = 0
Constant splash_run::toDd001_gfx#0 = SCREENS_1
Constant splash_run::toD0181_screen#0 = SCREENS_1
Constant splash_run::toD0181_gfx#0 = SCREENS_1
Constant splash_run::i1#0 = 0
Constant splash_run::i2#0 = 0
Constant gameplay_run::i#0 = 0
Constant gameplay_run::i1#0 = 0
Constant gameplay_run::i2#0 = 0
Constant joyfire::return#2 = 1
Constant joyfire::return#3 = 0
Constant splash_show::splash#0 = SPLASH
Constant splash_show::xcol#0 = 0
Constant splash_show::ypos#0 = 0
Constant level_show::count#0 = 0
Constant level_show::level#0 = LEVEL_TILES
Constant level_show::ytile#0 = 0
Constant level_show::xcol#0 = 0
Constant level_show::xtile#0 = 0
Constant level_tile_get::return#1 = 0
Constant level_tile_directions::return#1 = 0
Constant init_level_tile_directions::directions#0 = LEVEL_TILES_DIRECTIONS
Constant init_level_tile_directions::ytile#0 = 0
Constant init_level_tile_directions::xtile#0 = 0
Constant init_level_tile_directions::open_directions#0 = 0
Constant init_sprite_pointers::sprites_ptr_1#0 = SCREENS_1+OFFSET_SPRITE_PTRS
Constant init_sprite_pointers::sprites_ptr_2#0 = SCREENS_2+OFFSET_SPRITE_PTRS
Constant init_sprite_pointers::screen#0 = 0
Constant init_sprite_pointers::sprite#0 = 0
Constant irq_screen_top::toD0181_screen#0 = SCREENS_1
Constant irq_screen_top::toD0181_gfx#0 = SCREENS_1
Constant irq_screen_top::toDd001_gfx#0 = SCREENS_2
Constant irq_screen_top::toDd002_gfx#0 = SCREENS_1
Constant game_logic::do_reverse#0 = 0
Constant game_logic::do_reverse#1 = 1
Constant game_logic::do_reverse#2 = 1
Constant game_logic::do_reverse#3 = 1
Constant game_logic::target_xtile#0 = 0
Constant game_logic::target_ytile#0 = 0
Constant game_logic::target_xtile#1 = 2
Constant game_logic::target_ytile#1 = 2
Constant game_logic::target_xtile1#0 = 0
Constant game_logic::target_ytile1#0 = 0
Constant game_logic::target_xtile1#1 = 2
Constant game_logic::target_ytile1#1 = 2
Constant game_logic::target_xtile2#0 = 0
Constant game_logic::target_ytile2#0 = 0
Constant game_logic::target_xtile2#1 = 2
Constant game_logic::target_ytile2#1 = 2
Constant game_logic::target_xtile3#0 = 0
Constant game_logic::target_ytile3#0 = 0
Constant game_logic::target_xtile3#1 = 2
Constant game_logic::target_ytile3#1 = 2
Constant choose_direction::direction#0 = STOP
Constant choose_direction::dist_min#0 = $ff
Constant choose_direction::direction#1 = UP
Constant choose_direction::direction#2 = DOWN
Constant choose_direction::direction#3 = LEFT
Constant choose_direction::direction#4 = RIGHT
Successful SSA optimization Pass2ConstantIdentification
Constant memcpy::src#0 = (char *)memcpy::source#0
Constant memcpy::dst#0 = (char *)memcpy::destination#0
Constant memcpy::$2 = (char *)memcpy::source#0
Constant memcpy::return#2 = memcpy::destination#0
Constant splash_run::toD0181_$7 = (unsigned int)splash_run::toD0181_screen#0
Constant irq_screen_top::toD0181_$7 = (unsigned int)irq_screen_top::toD0181_screen#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (unsigned int)splash_run::toDd001_gfx#0 in [341] splash_run::toDd001_$0 = byte1 (unsigned int)splash_run::toDd001_gfx#0
Constant value identified (unsigned int)splash_run::toD0181_gfx#0 in [353] splash_run::toD0181_$3 = byte1 (unsigned int)splash_run::toD0181_gfx#0
Constant value identified (unsigned int)irq_screen_top::toD0181_gfx#0 in [646] irq_screen_top::toD0181_$3 = byte1 (unsigned int)irq_screen_top::toD0181_gfx#0
Constant value identified (unsigned int)irq_screen_top::toDd001_gfx#0 in [660] irq_screen_top::toDd001_$0 = byte1 (unsigned int)irq_screen_top::toDd001_gfx#0
Constant value identified (unsigned int)irq_screen_top::toDd002_gfx#0 in [667] irq_screen_top::toDd002_$0 = byte1 (unsigned int)irq_screen_top::toDd002_gfx#0
Successful SSA optimization Pass2ConstantValues
Rewriting conditional comparison [773] if(ghosts_mode_count<=$32) goto game_logic::@47
Rewriting conditional comparison [777] if(ghosts_mode_count<=$96) goto game_logic::@47
Rewriting conditional comparison [781] if(ghosts_mode_count<=$32) goto game_logic::@47
De-inlining pointer[w] to *(pointer+w) [127] init_render_index::canvas#0 = init_render_index::canvas_xcol#0 + init_render_index::render_ypos_table#4[init_render_index::$10]
Successful SSA optimization Pass2DeInlineWordDerefIdx
Simplifying constant evaluating to zero (unsigned int)0+0 in
Simplifying constant evaluating to zero (unsigned int)0+0 in
Simplifying constant evaluating to zero (unsigned int)0+0 in
Simplifying constant evaluating to zero byte0 init_bobs_restore::CANVAS_HIDDEN in
Simplifying constant evaluating to zero byte0 init_bobs_restore::CANVAS_HIDDEN in
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero 6 in
Simplifying expression containing zero $c in
Simplifying expression containing zero $12 in
Simplifying expression containing zero $18 in
Simplifying expression containing zero $1e in
Simplifying expression containing zero $24 in
Simplifying expression containing zero $2a in
Simplifying expression containing zero $30 in
Simplifying expression containing zero $36 in
Simplifying expression containing zero $3c in
Simplifying expression containing zero $80 in
Simplifying expression containing zero $100 in
Simplifying expression containing zero $180 in
Simplifying expression containing zero $200 in
Simplifying expression containing zero $280 in
Simplifying expression containing zero $300 in
Simplifying expression containing zero 3 in
Simplifying expression containing zero 3 in
Simplifying expression containing zero 3 in
Simplifying expression containing zero 9 in
Simplifying expression containing zero $f in
Simplifying expression containing zero $15 in
Simplifying expression containing zero $1b in
Simplifying expression containing zero $21 in
Simplifying expression containing zero $27 in
Simplifying expression containing zero $2d in
Simplifying expression containing zero $33 in
Simplifying expression containing zero $39 in
Simplifying expression containing zero $40 in
Simplifying expression containing zero $c0 in
Simplifying expression containing zero $140 in
Simplifying expression containing zero $1c0 in
Simplifying expression containing zero $240 in
Simplifying expression containing zero $2c0 in
Simplifying expression containing zero $340 in
Simplifying expression containing zero (void (*)())INTRO_MUSIC in
Simplifying expression containing zero (unsigned int *)SID in [88] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_FREQ) = 0
Simplifying expression containing zero init_render_index::render_index_xcol#2 in [129] init_render_index::render_index_xcol#2[RENDER_OFFSET_CANVAS_LO] = init_render_index::$5
Simplifying expression containing zero render::render_index_xcol#0 in [149] render::canvas_offset#0 = render::render_index_xcol#0[RENDER_OFFSET_CANVAS_HI] w= render::render_index_xcol#0[RENDER_OFFSET_CANVAS_LO]
Simplifying expression containing zero render_tiles::render_index_xcol#0 in [174] render_tiles::canvas_offset#0 = render_tiles::render_index_xcol#0[RENDER_OFFSET_CANVAS_HI] w= render_tiles::render_index_xcol#0[RENDER_OFFSET_CANVAS_LO]
Simplifying expression containing zero init_bobs_restore::bob_restore#5 in [205] init_bobs_restore::bob_restore#5[0] = init_bobs_restore::$2
Simplifying expression containing zero (char *)CIA2 in [344] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = splash_run::toDd001_return#0
Simplifying expression containing zero (char *)CIA1 in [479] joyfire::$0 = *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A) & $10
Simplifying expression containing zero LEFT in [587] init_level_tile_directions::open_directions#1 = init_level_tile_directions::open_directions#0 | LEFT
Simplifying expression containing zero (char *)CIA2 in [663] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = irq_screen_top::toDd001_return#0
Simplifying expression containing zero (char *)CIA2 in [670] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = irq_screen_top::toDd002_return#0
Simplifying expression containing zero bobs_xcol in [724] bobs_xcol[0] = game_logic::$17
Simplifying expression containing zero bobs_yfine in [726] bobs_yfine[0] = game_logic::$18
Simplifying expression containing zero bobs_bob_id in [730] bobs_bob_id[0] = game_logic::$21
Simplifying expression containing zero (char *)CIA1 in [1172] game_logic::$199 = *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A) & $f
Successful SSA optimization PassNSimplifyExpressionWithZero
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Eliminating unused variable merge_code::dest_code#5 and assignment [59] merge_code::dest_code#5 = ++ merge_code::dest_code#12
Eliminating unused variable memset::return#2 and assignment [218] memset::return#2 = memset::str#6
Eliminating unused variable memset::return#3 and assignment [225] memset::return#3 = memset::str#6
Eliminating unused variable memset::return#4 and assignment [227] memset::return#4 = memset::str#6
Eliminating unused variable memset::return#5 and assignment [233] memset::return#5 = memset::str#6
Eliminating unused variable memset::return#6 and assignment [242] memset::return#6 = memset::str#6
Eliminating unused constant memcpy::return#2
Eliminating unused constant game_logic::target_xtile#0
Eliminating unused constant game_logic::target_ytile#0
Eliminating unused constant game_logic::target_xtile1#0
Eliminating unused constant game_logic::target_ytile1#0
Eliminating unused constant game_logic::target_xtile2#0
Eliminating unused constant game_logic::target_ytile2#0
Eliminating unused constant game_logic::target_xtile3#0
Eliminating unused constant game_logic::target_ytile3#0
Eliminating unused constant OFFSET_STRUCT_MOS6526_CIA_PORT_A
Eliminating unused constant OFFSET_STRUCT_MOS6581_SID_CH1_FREQ
Successful SSA optimization PassNEliminateUnusedVars
Adding number conversion cast (unumber) 0 in gameplay_run::$16 = 0 != pacman_wins
Adding number conversion cast (unumber) $32+1 in if(ghosts_mode_count<$32+1) goto game_logic::@47
Adding number conversion cast (unumber) 1 in if(ghosts_mode_count<(unumber)$32+1) goto game_logic::@47
Adding number conversion cast (unumber) $96+1 in if(ghosts_mode_count<$96+1) goto game_logic::@47
Adding number conversion cast (unumber) 1 in if(ghosts_mode_count<(unumber)$96+1) goto game_logic::@47
Adding number conversion cast (unumber) $32+1 in if(ghosts_mode_count<$32+1) goto game_logic::@47
Adding number conversion cast (unumber) 1 in if(ghosts_mode_count<(unumber)$32+1) goto game_logic::@47
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast 6
Simplifying constant integer cast $c
Simplifying constant integer cast $12
Simplifying constant integer cast $18
Simplifying constant integer cast $1e
Simplifying constant integer cast $24
Simplifying constant integer cast $2a
Simplifying constant integer cast $30
Simplifying constant integer cast $36
Simplifying constant integer cast $3c
Simplifying constant integer cast $80
Simplifying constant integer cast $100
Simplifying constant integer cast $180
Simplifying constant integer cast $200
Simplifying constant integer cast $280
Simplifying constant integer cast $300
Simplifying constant integer cast 3
Simplifying constant integer cast 3
Simplifying constant integer cast 3
Simplifying constant integer cast 9
Simplifying constant integer cast $f
Simplifying constant integer cast $15
Simplifying constant integer cast $1b
Simplifying constant integer cast $21
Simplifying constant integer cast $27
Simplifying constant integer cast $2d
Simplifying constant integer cast $33
Simplifying constant integer cast $39
Simplifying constant integer cast $40
Simplifying constant integer cast $c0
Simplifying constant integer cast $140
Simplifying constant integer cast $1c0
Simplifying constant integer cast $240
Simplifying constant integer cast $2c0
Simplifying constant integer cast $340
Simplifying constant integer cast 0
Simplifying constant integer cast $32+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $96+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $32+(unumber)1
Simplifying constant integer cast 1
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Successful SSA optimization PassNFinalizeNumberTypeConversions
Resolving array sizeof() sizeof PACMAN_CH1_FREQ_HI
Successful SSA optimization PassNSizeOfSimplification
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Alias splash_run::$24 = splash_run::$23
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Simple Condition merge_code::$4 [35] if(merge_code::logic_cycles#0!=merge_code::LOGIC_EXIT) goto merge_code::@20
Simple Condition merge_code::$6 [66] if(merge_code::logic_cycles#0<merge_code::$5) goto merge_code::@9
Simple Condition merge_code::$7 [67] if(merge_code::logic_cycles#0==merge_code::cycle_budget#13) goto merge_code::@9
Simple Condition gameplay_run::$16 [364] if(0!=pacman_wins) goto gameplay_run::@return
Simple Condition gameplay_run::$13 [366] if(pacman_lives==0) goto gameplay_run::@return
Simple Condition level_tile_get::$0 [412] if(level_tile_get::xtile#4>$31) goto level_tile_get::@2
Simple Condition level_tile_get::$1 [418] if(level_tile_get::ytile#4>$24) goto level_tile_get::@2
Simple Condition level_tile_directions::$0 [422] if(level_tile_directions::xtile#5>$31) goto level_tile_directions::@2
Simple Condition level_tile_directions::$1 [428] if(level_tile_directions::ytile#5>$24) goto level_tile_directions::@2
Simple Condition game_logic::$10 [548] if(game_logic_substep==3) goto game_logic::@14
Simple Condition game_logic::$76 [649] if(ABS[game_logic::$75]<2) goto game_logic::@170
Simple Condition game_logic::$81 [656] if(ABS[game_logic::$80]<2) goto game_logic::@171
Simple Condition game_logic::$86 [662] if(ABS[game_logic::$85]<2) goto game_logic::@172
Simple Condition game_logic::$91 [668] if(ABS[game_logic::$90]<2) goto game_logic::@173
Simple Condition game_logic::$109 [710] if(ghost4_substep==0) goto game_logic::@174
Simple Condition game_logic::$130 [759] if(ghost3_substep==0) goto game_logic::@175
Simple Condition game_logic::$151 [808] if(ghost2_substep==0) goto game_logic::@176
Simple Condition game_logic::$172 [857] if(ghost1_substep==0) goto game_logic::@177
Simple Condition game_logic::$193 [903] if(pacman_substep==0) goto game_logic::@178
Simple Condition game_logic::$11 [927] if(game_logic_substep==7) goto game_logic::@14
Simple Condition game_logic::$78 [928] if(ABS[game_logic::$77]<2) goto game_logic::@51
Simple Condition game_logic::$83 [929] if(ABS[game_logic::$82]<2) goto game_logic::@52
Simple Condition game_logic::$88 [930] if(ABS[game_logic::$87]<2) goto game_logic::@53
Simple Condition game_logic::$93 [931] if(ABS[game_logic::$92]<2) goto game_logic::@67
Condition not simple game_logic::$110 [932] if(game_logic::$110) goto game_logic::@77
Introduced intermediate condition variable game_logic::$220 = ghost4_direction
Condition not simple game_logic::$110 [932] if(game_logic::$110) goto game_logic::@77
Introduced intermediate condition variable game_logic::$221 = ghost4_direction
Condition not simple game_logic::$110 [932] if(game_logic::$110) goto game_logic::@77
Introduced intermediate condition variable game_logic::$222 = ghost4_direction
Simple Condition game_logic::$110 [932] if(game_logic::$220!=STOP) goto game_logic::@77
Condition not simple game_logic::$131 [933] if(game_logic::$131) goto game_logic::@95
Introduced intermediate condition variable game_logic::$223 = ghost3_direction
Condition not simple game_logic::$131 [933] if(game_logic::$131) goto game_logic::@95
Introduced intermediate condition variable game_logic::$224 = ghost3_direction
Condition not simple game_logic::$131 [933] if(game_logic::$131) goto game_logic::@95
Introduced intermediate condition variable game_logic::$225 = ghost3_direction
Simple Condition game_logic::$131 [933] if(game_logic::$223!=STOP) goto game_logic::@95
Condition not simple game_logic::$152 [934] if(game_logic::$152) goto game_logic::@113
Introduced intermediate condition variable game_logic::$226 = ghost2_direction
Condition not simple game_logic::$152 [934] if(game_logic::$152) goto game_logic::@113
Introduced intermediate condition variable game_logic::$227 = ghost2_direction
Condition not simple game_logic::$152 [934] if(game_logic::$152) goto game_logic::@113
Introduced intermediate condition variable game_logic::$228 = ghost2_direction
Simple Condition game_logic::$152 [934] if(game_logic::$226!=STOP) goto game_logic::@113
Condition not simple game_logic::$173 [935] if(game_logic::$173) goto game_logic::@131
Introduced intermediate condition variable game_logic::$229 = ghost1_direction
Condition not simple game_logic::$173 [935] if(game_logic::$173) goto game_logic::@131
Introduced intermediate condition variable game_logic::$230 = ghost1_direction
Condition not simple game_logic::$173 [935] if(game_logic::$173) goto game_logic::@131
Introduced intermediate condition variable game_logic::$231 = ghost1_direction
Simple Condition game_logic::$173 [935] if(game_logic::$229!=STOP) goto game_logic::@131
Condition not simple game_logic::$194 [936] if(game_logic::$194) goto game_logic::@148
Introduced intermediate condition variable game_logic::$232 = pacman_direction
Condition not simple game_logic::$194 [936] if(game_logic::$194) goto game_logic::@148
Introduced intermediate condition variable game_logic::$233 = pacman_direction
Simple Condition game_logic::$194 [936] if(game_logic::$232!=STOP) goto game_logic::@148
Successful SSA optimization Pass2ConditionalJumpSimplification
Negating conditional jump and destination [649] if(ABS[game_logic::$75]>=2) goto game_logic::@64
Negating conditional jump and destination [656] if(ABS[game_logic::$80]>=2) goto game_logic::@65
Negating conditional jump and destination [662] if(ABS[game_logic::$85]>=2) goto game_logic::@66
Negating conditional jump and destination [668] if(ABS[game_logic::$90]>=2) goto game_logic::@return
Negating conditional jump and destination [710] if(ghost4_substep!=0) goto game_logic::@83
Negating conditional jump and destination [759] if(ghost3_substep!=0) goto game_logic::@101
Negating conditional jump and destination [808] if(ghost2_substep!=0) goto game_logic::@119
Negating conditional jump and destination [857] if(ghost1_substep!=0) goto game_logic::@137
Negating conditional jump and destination [903] if(pacman_substep!=0) goto game_logic::@151
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
Constant right-side identified [0] memcpy::src_end#0 = memcpy::$2 + memcpy::num#0
Constant right-side identified [249] splash_run::toDd001_$0 = byte1 (unsigned int)splash_run::toDd001_gfx#0
Constant right-side identified [255] splash_run::toD0181_$0 = splash_run::toD0181_$7 & $3fff
Constant right-side identified [258] splash_run::toD0181_$3 = byte1 (unsigned int)splash_run::toD0181_gfx#0
Constant right-side identified [493] irq_screen_top::toD0181_$0 = irq_screen_top::toD0181_$7 & $3fff
Constant right-side identified [496] irq_screen_top::toD0181_$3 = byte1 (unsigned int)irq_screen_top::toD0181_gfx#0
Constant right-side identified [508] irq_screen_top::toDd001_$0 = byte1 (unsigned int)irq_screen_top::toDd001_gfx#0
Constant right-side identified [514] irq_screen_top::toDd002_$0 = byte1 (unsigned int)irq_screen_top::toDd002_gfx#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant memcpy::src_end#0 = memcpy::$2+memcpy::num#0
Constant splash_run::toDd001_$0 = byte1 (unsigned int)splash_run::toDd001_gfx#0
Constant splash_run::toD0181_$0 = splash_run::toD0181_$7&$3fff
Constant splash_run::toD0181_$3 = byte1 (unsigned int)splash_run::toD0181_gfx#0
Constant init_level_tile_directions::open_directions#1 = LEFT
Constant irq_screen_top::toD0181_$0 = irq_screen_top::toD0181_$7&$3fff
Constant irq_screen_top::toD0181_$3 = byte1 (unsigned int)irq_screen_top::toD0181_gfx#0
Constant irq_screen_top::toDd001_$0 = byte1 (unsigned int)irq_screen_top::toDd001_gfx#0
Constant irq_screen_top::toDd002_$0 = byte1 (unsigned int)irq_screen_top::toDd002_gfx#0
Successful SSA optimization Pass2ConstantIdentification
Rewriting conditional comparison [412] if(level_tile_get::xtile#4>$31) goto level_tile_get::@2
Rewriting conditional comparison [418] if(level_tile_get::ytile#4>$24) goto level_tile_get::@2
Rewriting conditional comparison [422] if(level_tile_directions::xtile#5>$31) goto level_tile_directions::@2
Rewriting conditional comparison [428] if(level_tile_directions::ytile#5>$24) goto level_tile_directions::@2
Simplifying constant evaluating to zero splash_run::toD0181_$7&$3fff in
Simplifying constant evaluating to zero irq_screen_top::toD0181_$7&$3fff in
Successful SSA optimization PassNSimplifyConstantZero
Eliminating unused variable game_logic::$221 and assignment [681] game_logic::$221 = ghost4_direction
Eliminating unused variable game_logic::$222 and assignment [682] game_logic::$222 = ghost4_direction
Eliminating unused variable game_logic::$224 and assignment [731] game_logic::$224 = ghost3_direction
Eliminating unused variable game_logic::$225 and assignment [732] game_logic::$225 = ghost3_direction
Eliminating unused variable game_logic::$227 and assignment [781] game_logic::$227 = ghost2_direction
Eliminating unused variable game_logic::$228 and assignment [782] game_logic::$228 = ghost2_direction
Eliminating unused variable game_logic::$230 and assignment [831] game_logic::$230 = ghost1_direction
Eliminating unused variable game_logic::$231 and assignment [832] game_logic::$231 = ghost1_direction
Eliminating unused variable game_logic::$233 and assignment [878] game_logic::$233 = pacman_direction
Eliminating unused constant splash_run::toD0181_$7
Eliminating unused constant irq_screen_top::toD0181_$7
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant splash_run::toD0181_screen#0
Eliminating unused constant irq_screen_top::toD0181_screen#0
Successful SSA optimization PassNEliminateUnusedVars
Adding number conversion cast (unumber) $16 in
Adding number conversion cast (unumber) $31+1 in if(level_tile_get::xtile#4>=$31+1) goto level_tile_get::@2
Adding number conversion cast (unumber) 1 in if(level_tile_get::xtile#4>=(unumber)$31+1) goto level_tile_get::@2
Adding number conversion cast (unumber) $24+1 in if(level_tile_get::ytile#4>=$24+1) goto level_tile_get::@2
Adding number conversion cast (unumber) 1 in if(level_tile_get::ytile#4>=(unumber)$24+1) goto level_tile_get::@2
Adding number conversion cast (unumber) $31+1 in if(level_tile_directions::xtile#5>=$31+1) goto level_tile_directions::@2
Adding number conversion cast (unumber) 1 in if(level_tile_directions::xtile#5>=(unumber)$31+1) goto level_tile_directions::@2
Adding number conversion cast (unumber) $24+1 in if(level_tile_directions::ytile#5>=$24+1) goto level_tile_directions::@2
Adding number conversion cast (unumber) 1 in if(level_tile_directions::ytile#5>=(unumber)$24+1) goto level_tile_directions::@2
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast $16
Simplifying constant integer cast $31+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $24+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $31+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $24+(unumber)1
Simplifying constant integer cast 1
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) $16
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Constant right-side identified [245] splash_run::toDd001_$1 = splash_run::toDd001_$0 / $40
Constant right-side identified [250] splash_run::toD0181_$1 = splash_run::toD0181_$0 * 4
Constant right-side identified [252] splash_run::toD0181_$4 = splash_run::toD0181_$3 / 4
Constant right-side identified [479] irq_screen_top::toD0181_$1 = irq_screen_top::toD0181_$0 * 4
Constant right-side identified [481] irq_screen_top::toD0181_$4 = irq_screen_top::toD0181_$3 / 4
Constant right-side identified [492] irq_screen_top::toDd001_$1 = irq_screen_top::toDd001_$0 / $40
Constant right-side identified [497] irq_screen_top::toDd002_$1 = irq_screen_top::toDd002_$0 / $40
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant splash_run::toDd001_$1 = splash_run::toDd001_$0/$40
Constant splash_run::toD0181_$1 = splash_run::toD0181_$0*4
Constant splash_run::toD0181_$4 = splash_run::toD0181_$3/4
Constant irq_screen_top::toD0181_$1 = irq_screen_top::toD0181_$0*4
Constant irq_screen_top::toD0181_$4 = irq_screen_top::toD0181_$3/4
Constant irq_screen_top::toDd001_$1 = irq_screen_top::toDd001_$0/$40
Constant irq_screen_top::toDd002_$1 = irq_screen_top::toDd002_$0/$40
Successful SSA optimization Pass2ConstantIdentification
Simplifying constant evaluating to zero splash_run::toD0181_$0*4 in
Simplifying constant evaluating to zero irq_screen_top::toD0181_$0*4 in
Successful SSA optimization PassNSimplifyConstantZero
Eliminating unused constant splash_run::toD0181_$0
Eliminating unused constant irq_screen_top::toD0181_$0
Successful SSA optimization PassNEliminateUnusedVars
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Constant right-side identified [245] splash_run::toDd001_return#0 = 3 ^ splash_run::toDd001_$1
Constant right-side identified [249] splash_run::toD0181_$2 = byte1 splash_run::toD0181_$1
Constant right-side identified [250] splash_run::toD0181_$5 = splash_run::toD0181_$4 & $f
Constant right-side identified [476] irq_screen_top::toD0181_$2 = byte1 irq_screen_top::toD0181_$1
Constant right-side identified [477] irq_screen_top::toD0181_$5 = irq_screen_top::toD0181_$4 & $f
Constant right-side identified [487] irq_screen_top::toDd001_return#0 = 3 ^ irq_screen_top::toDd001_$1
Constant right-side identified [491] irq_screen_top::toDd002_return#0 = 3 ^ irq_screen_top::toDd002_$1
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant splash_run::toDd001_return#0 = 3^splash_run::toDd001_$1
Constant splash_run::toD0181_$2 = byte1 splash_run::toD0181_$1
Constant splash_run::toD0181_$5 = splash_run::toD0181_$4&$f
Constant irq_screen_top::toD0181_$2 = byte1 irq_screen_top::toD0181_$1
Constant irq_screen_top::toD0181_$5 = irq_screen_top::toD0181_$4&$f
Constant irq_screen_top::toDd001_return#0 = 3^irq_screen_top::toDd001_$1
Constant irq_screen_top::toDd002_return#0 = 3^irq_screen_top::toDd002_$1
Successful SSA optimization Pass2ConstantIdentification
Simplifying constant evaluating to zero byte1 splash_run::toD0181_$1 in
Simplifying constant evaluating to zero splash_run::toD0181_$4&$f in
Simplifying constant evaluating to zero byte1 irq_screen_top::toD0181_$1 in
Simplifying constant evaluating to zero irq_screen_top::toD0181_$4&$f in
Simplifying constant evaluating to zero 3^irq_screen_top::toDd001_$1 in
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero splash_run::toD0181_$5 in [251] splash_run::toD0181_return#0 = splash_run::toD0181_$2 | splash_run::toD0181_$5
Simplifying expression containing zero irq_screen_top::toD0181_$5 in [478] irq_screen_top::toD0181_return#0 = irq_screen_top::toD0181_$2 | irq_screen_top::toD0181_$5
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating unused constant splash_run::toD0181_$1
Eliminating unused constant splash_run::toD0181_$4
Eliminating unused constant splash_run::toD0181_$2
Eliminating unused constant irq_screen_top::toD0181_$1
Eliminating unused constant irq_screen_top::toD0181_$4
Eliminating unused constant irq_screen_top::toDd001_$1
Eliminating unused constant irq_screen_top::toD0181_$2
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant splash_run::toD0181_$3
Eliminating unused constant irq_screen_top::toD0181_$3
Eliminating unused constant irq_screen_top::toDd001_$0
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant splash_run::toD0181_gfx#0
Eliminating unused constant irq_screen_top::toD0181_gfx#0
Eliminating unused constant irq_screen_top::toDd001_gfx#0
Successful SSA optimization PassNEliminateUnusedVars
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Constant splash_run::toD0181_return#0 = splash_run::toD0181_$5
Constant irq_screen_top::toD0181_return#0 = irq_screen_top::toD0181_$5
Successful SSA optimization Pass2ConstantIdentification
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Inlining Noop Cast [8] memset::$4 = (char *)memset::str#6 keeping memset::str#6
Inlining Noop Cast [10] memset::dst#0 = (char *)memset::str#6 keeping memset::str#6
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [112] render::render_index_xcol#0 = (char *)render::$3 keeping render::render_index_xcol#0
Inlining Noop Cast [134] render_tiles::render_index_xcol#0 = (char *)render_tiles::$6 keeping render_tiles::render_index_xcol#0
Successful SSA optimization Pass2NopCastInlining
Rewriting multiplication to use shift [85] init_render_index::$9 = init_render_index::x_col#2 * SIZEOF_POINTER
Rewriting multiplication to use shift [90] init_render_index::$10 = init_render_index::$11 * SIZEOF_UNSIGNED_INT
Rewriting division to use shift [108] render::ytile#0 = render::ypos#2 / 4
Rewriting multiplication to use shift [110] render::$2 = render::ytile#0 * 2
Rewriting multiplication to use shift [127] render_tiles::$0 = render_tiles::tile_left#0 * 4
Rewriting multiplication to use shift [129] render_tiles::$2 = render_tiles::tile_right#0 * 4
Rewriting multiplication to use shift [132] render_tiles::$5 = render_tiles::ytile#0 * 2
Rewriting multiplication to use shift [237] splash_run::$24 = splash_run::i#2 * 2
Rewriting multiplication to use shift [239] splash_run::$34 = splash_run::i#2 * SIZEOF_UNSIGNED_INT
Rewriting division to use shift [242] splash_run::msb#1 = splash_run::msb#10 / 2
Rewriting multiplication to use shift [395] level_tile_get::$5 = level_tile_get::ytile#4 * SIZEOF_UNSIGNED_INT
Rewriting multiplication to use shift [403] level_tile_directions::$5 = level_tile_directions::ytile#5 * SIZEOF_UNSIGNED_INT
Rewriting division to use shift [517] game_logic::$17 = game_logic::pacman_bob_xfine#0 / 4
Rewriting division to use shift [529] game_logic::$25 = game_logic::ghost1_bob_xfine#0 / 4
Rewriting division to use shift [538] game_logic::$31 = game_logic::ghost2_bob_xfine#0 / 4
Rewriting division to use shift [547] game_logic::$37 = game_logic::ghost3_bob_xfine#0 / 4
Rewriting division to use shift [556] game_logic::$43 = game_logic::ghost4_bob_xfine#0 / 4
Rewriting division to use shift [578] game_logic::pacman_xtile#0 = pacman_xfine / 2
Rewriting division to use shift [579] game_logic::pacman_ytile#0 = pacman_yfine / 2
Rewriting multiplication to use shift [580] game_logic::$210 = game_logic::pacman_ytile#0 * SIZEOF_UNSIGNED_INT
Rewriting division to use shift [589] game_logic::$69 = game_logic::pacman_xtile#0 / 2
Rewriting multiplication to use shift [594] game_logic::$72 = game_logic::pacman_ytile#0 * 2
Rewriting division to use shift [600] game_logic::$65 = game_logic::pacman_xtile#0 / 2
Rewriting multiplication to use shift [605] game_logic::$68 = game_logic::pacman_ytile#0 * 2
Rewriting division to use shift [672] game_logic::ghost4_xtile#0 = ghost4_xfine / 2
Rewriting division to use shift [673] game_logic::ghost4_ytile#0 = ghost4_yfine / 2
Rewriting division to use shift [683] game_logic::target_xtile#2 = pacman_xfine / 2
Rewriting division to use shift [684] game_logic::target_ytile#2 = pacman_yfine / 2
Rewriting division to use shift [720] game_logic::ghost3_xtile#0 = ghost3_xfine / 2
Rewriting division to use shift [721] game_logic::ghost3_ytile#0 = ghost3_yfine / 2
Rewriting division to use shift [731] game_logic::target_xtile1#2 = pacman_xfine / 2
Rewriting division to use shift [732] game_logic::target_ytile1#2 = pacman_yfine / 2
Rewriting division to use shift [768] game_logic::ghost2_xtile#0 = ghost2_xfine / 2
Rewriting division to use shift [769] game_logic::ghost2_ytile#0 = ghost2_yfine / 2
Rewriting division to use shift [779] game_logic::target_xtile2#2 = pacman_xfine / 2
Rewriting division to use shift [780] game_logic::target_ytile2#2 = pacman_yfine / 2
Rewriting division to use shift [816] game_logic::ghost1_xtile#0 = ghost1_xfine / 2
Rewriting division to use shift [817] game_logic::ghost1_ytile#0 = ghost1_yfine / 2
Rewriting division to use shift [827] game_logic::target_xtile3#2 = pacman_xfine / 2
Rewriting division to use shift [828] game_logic::target_ytile3#2 = pacman_yfine / 2
Rewriting division to use shift [859] game_logic::pacman_xtile1#0 = pacman_xfine / 2
Rewriting division to use shift [860] game_logic::pacman_ytile1#0 = pacman_yfine / 2
Rewriting multiplication to use shift [868] game_logic::joy_directions#0 = game_logic::$200 * 4
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings memcpy::src#0
Inlining constant with var siblings memcpy::dst#0
Inlining constant with var siblings memset::str#0
Inlining constant with var siblings memset::c#0
Inlining constant with var siblings memset::num#0
Inlining constant with var siblings memset::str#1
Inlining constant with var siblings memset::c#1
Inlining constant with var siblings memset::num#1
Inlining constant with var siblings memset::str#2
Inlining constant with var siblings memset::c#2
Inlining constant with var siblings memset::num#2
Inlining constant with var siblings memset::str#3
Inlining constant with var siblings memset::c#3
Inlining constant with var siblings memset::num#3
Inlining constant with var siblings memset::str#4
Inlining constant with var siblings memset::c#4
Inlining constant with var siblings memset::num#4
Inlining constant with var siblings merge_code::dest_code#7
Inlining constant with var siblings merge_code::raster_code#3
Inlining constant with var siblings merge_code::logic_code#6
Inlining constant with var siblings init_render_index::render_index#0
Inlining constant with var siblings init_render_index::x_col#0
Inlining constant with var siblings init_render_index::render_ypos_table#0
Inlining constant with var siblings init_render_index::ypos_inc_offset#0
Inlining constant with var siblings init_render_index::y_pos#0
Inlining constant with var siblings init_render_index::render_ypos_table#1
Inlining constant with var siblings init_render_index::ypos_inc_offset#1
Inlining constant with var siblings render::i#0
Inlining constant with var siblings render_tiles::y#0
Inlining constant with var siblings init_bobs_restore::bob_restore#0
Inlining constant with var siblings init_bobs_restore::bob#0
Inlining constant with var siblings init_bobs_restore::i#0
Inlining constant with var siblings done_run::i#0
Inlining constant with var siblings done_run::i1#0
Inlining constant with var siblings done_run::gfx#0
Inlining constant with var siblings done_run::xcol#0
Inlining constant with var siblings done_run::ypos#0
Inlining constant with var siblings splash_run::msb#0
Inlining constant with var siblings splash_run::i#0
Inlining constant with var siblings splash_run::i1#0
Inlining constant with var siblings splash_run::i2#0
Inlining constant with var siblings gameplay_run::i#0
Inlining constant with var siblings gameplay_run::i1#0
Inlining constant with var siblings gameplay_run::i2#0
Inlining constant with var siblings joyfire::return#2
Inlining constant with var siblings joyfire::return#3
Inlining constant with var siblings splash_show::splash#0
Inlining constant with var siblings splash_show::xcol#0
Inlining constant with var siblings splash_show::ypos#0
Inlining constant with var siblings level_show::count#0
Inlining constant with var siblings level_show::level#0
Inlining constant with var siblings level_show::ytile#0
Inlining constant with var siblings level_show::xcol#0
Inlining constant with var siblings level_show::xtile#0
Inlining constant with var siblings level_tile_get::return#1
Inlining constant with var siblings level_tile_directions::return#1
Inlining constant with var siblings init_level_tile_directions::directions#0
Inlining constant with var siblings init_level_tile_directions::ytile#0
Inlining constant with var siblings init_level_tile_directions::xtile#0
Inlining constant with var siblings init_level_tile_directions::open_directions#0
Inlining constant with var siblings init_level_tile_directions::open_directions#1
Inlining constant with var siblings init_sprite_pointers::sprites_ptr_1#0
Inlining constant with var siblings init_sprite_pointers::sprites_ptr_2#0
Inlining constant with var siblings init_sprite_pointers::screen#0
Inlining constant with var siblings init_sprite_pointers::sprite#0
Inlining constant with var siblings game_logic::do_reverse#0
Inlining constant with var siblings game_logic::do_reverse#1
Inlining constant with var siblings game_logic::do_reverse#2
Inlining constant with var siblings game_logic::do_reverse#3
Inlining constant with var siblings game_logic::target_xtile#1
Inlining constant with var siblings game_logic::target_ytile#1
Inlining constant with var siblings game_logic::target_xtile1#1
Inlining constant with var siblings game_logic::target_ytile1#1
Inlining constant with var siblings game_logic::target_xtile2#1
Inlining constant with var siblings game_logic::target_ytile2#1
Inlining constant with var siblings game_logic::target_xtile3#1
Inlining constant with var siblings game_logic::target_ytile3#1
Inlining constant with var siblings choose_direction::direction#0
Inlining constant with var siblings choose_direction::dist_min#0
Inlining constant with var siblings choose_direction::direction#1
Inlining constant with var siblings choose_direction::direction#2
Inlining constant with var siblings choose_direction::direction#3
Inlining constant with var siblings choose_direction::direction#4
Constant inlined splash_show::ypos#0 = 0
Constant inlined splash_show::xcol#0 = 0
Constant inlined level_show::xcol#0 = 0
Constant inlined game_logic::target_ytile#1 = 2
Constant inlined init_level_tile_directions::xtile#0 = 0
Constant inlined init_level_tile_directions::open_directions#0 = 0
Constant inlined memcpy::$2 = (char *)memcpy::source#0
Constant inlined init_level_tile_directions::open_directions#1 = LEFT
Constant inlined splash_run::toDd001_gfx#0 = SCREENS_1
Constant inlined irq_screen_top::toDd002_gfx#0 = SCREENS_1
Constant inlined splash_run::msb#0 = 0
Constant inlined level_show::xtile#0 = 0
Constant inlined init_level_tile_directions::directions#0 = LEVEL_TILES_DIRECTIONS
Constant inlined splash_run::i#0 = 0
Constant inlined game_logic::target_ytile1#1 = 2
Constant inlined render_tiles::y#0 = 0
Constant inlined init_sprite_pointers::sprites_ptr_2#0 = SCREENS_2+OFFSET_SPRITE_PTRS
Constant inlined memset::c#0 = 0
Constant inlined memset::c#1 = 0
Constant inlined memset::c#2 = 0
Constant inlined memset::c#3 = 0
Constant inlined memset::c#4 = 0
Constant inlined choose_direction::dist_min#0 = $ff
Constant inlined init_bobs_restore::bob_restore#0 = bobs_restore
Constant inlined merge_code::dest_code#7 = RASTER_CODE
Constant inlined irq_screen_top::toD0181_$5 = 0
Constant inlined splash_show::splash#0 = SPLASH
Constant inlined level_tile_get::return#1 = 0
Constant inlined splash_run::i1#0 = 0
Constant inlined render::i#0 = 0
Constant inlined gameplay_run::i1#0 = 0
Constant inlined game_logic::target_xtile3#1 = 2
Constant inlined pacman_sound_play::$1 = $16*SIZEOF_CHAR
Constant inlined game_logic::target_ytile2#1 = 2
Constant inlined done_run::xcol#0 = 0
Constant inlined game_logic::do_reverse#3 = 1
Constant inlined game_logic::do_reverse#2 = 1
Constant inlined level_show::ytile#0 = 0
Constant inlined game_logic::do_reverse#1 = 1
Constant inlined done_run::gfx#0 = WIN_GFX
Constant inlined game_logic::do_reverse#0 = 0
Constant inlined memset::num#3 = $1fff
Constant inlined memset::num#2 = $3fff
Constant inlined choose_direction::direction#3 = LEFT
Constant inlined memset::num#4 = INTRO_MUSIC_CRUNCHED_SIZE
Constant inlined choose_direction::direction#4 = RIGHT
Constant inlined choose_direction::direction#1 = UP
Constant inlined init_sprite_pointers::screen#0 = 0
Constant inlined choose_direction::direction#2 = DOWN
Constant inlined memset::num#1 = $1fff
Constant inlined choose_direction::direction#0 = STOP
Constant inlined memset::num#0 = $c00
Constant inlined done_run::i1#0 = 0
Constant inlined init_render_index::ypos_inc_offset#1 = $b
Constant inlined done_run::i#0 = 0
Constant inlined init_render_index::ypos_inc_offset#0 = 0
Constant inlined splash_run::i2#0 = 0
Constant inlined gameplay_run::i2#0 = 0
Constant inlined merge_code::logic_code#6 = LOGIC_CODE_UNMERGED
Constant inlined level_tile_directions::return#1 = 0
Constant inlined done_run::ypos#0 = 0
Constant inlined init_bobs_restore::i#0 = 0
Constant inlined splash_run::toDd001_$0 = byte1 (unsigned int)SCREENS_1
Constant inlined game_logic::target_ytile3#1 = 2
Constant inlined splash_run::toDd001_$1 = byte1 (unsigned int)SCREENS_1/$40
Constant inlined game_logic::target_xtile2#1 = 2
Constant inlined level_show::count#0 = 0
Constant inlined gameplay_run::i#0 = 0
Constant inlined init_level_tile_directions::ytile#0 = 0
Constant inlined game_logic::target_xtile#1 = 2
Constant inlined init_bobs_restore::bob#0 = 0
Constant inlined memcpy::dst#0 = (char *)memcpy::destination#0
Constant inlined splash_run::toD0181_$5 = 0
Constant inlined memcpy::src#0 = (char *)memcpy::source#0
Constant inlined init_render_index::y_pos#0 = 0
Constant inlined merge_code::raster_code#3 = RASTER_CODE_UNMERGED
Constant inlined init_bobs_restore::$4 = 0
Constant inlined init_bobs_restore::$5 = byte1 init_bobs_restore::CANVAS_HIDDEN
Constant inlined init_render_index::x_col#0 = 0
Constant inlined init_bobs_restore::$2 = 0
Constant inlined init_bobs_restore::$3 = byte1 init_bobs_restore::CANVAS_HIDDEN
Constant inlined memset::str#2 = (void *)BANK_2
Constant inlined memset::str#1 = (void *)BANK_1+$2000
Constant inlined memset::str#0 = (void *)(char *) 16384
Constant inlined memset::str#4 = (void *)INTRO_MUSIC_CRUNCHED_UPPER
Constant inlined memset::str#3 = (void *)BANK_1
Constant inlined game_logic::target_xtile1#1 = 2
Constant inlined level_show::level#0 = LEVEL_TILES
Constant inlined init_sprite_pointers::sprites_ptr_1#0 = SCREENS_1+OFFSET_SPRITE_PTRS
Constant inlined memcpy::num#0 = INTRO_MUSIC_CRUNCHED_SIZE
Constant inlined irq_screen_top::toDd002_$1 = byte1 (unsigned int)SCREENS_1/$40
Constant inlined init_sprite_pointers::sprite#0 = 0
Constant inlined init_render_index::render_ypos_table#0 = RENDER_YPOS
Constant inlined irq_screen_top::toDd002_$0 = byte1 (unsigned int)SCREENS_1
Constant inlined init_render_index::render_ypos_table#1 = RENDER_YPOS_9TH
Constant inlined init_render_index::render_index#0 = RENDER_INDEX
Constant inlined joyfire::return#2 = 1
Constant inlined joyfire::return#3 = 0
Successful SSA optimization Pass2ConstantInlining
Consolidated array index constant in *(RENDER_INDEX+(unsigned int)$18*$100+RENDER_OFFSET_YPOS_INC)
Consolidated array index constant in *(RENDER_INDEX+(unsigned int)$19*$100+RENDER_OFFSET_YPOS_INC)
Consolidated array index constant in *(bobs_xcol+1)
Consolidated array index constant in *(bobs_yfine+1)
Consolidated array index constant in *(bobs_bob_id+1)
Consolidated array index constant in *(bobs_xcol+2)
Consolidated array index constant in *(bobs_yfine+2)
Consolidated array index constant in *(bobs_bob_id+2)
Consolidated array index constant in *(bobs_xcol+3)
Consolidated array index constant in *(bobs_yfine+3)
Consolidated array index constant in *(bobs_bob_id+3)
Consolidated array index constant in *(bobs_xcol+4)
Consolidated array index constant in *(bobs_yfine+4)
Consolidated array index constant in *(bobs_bob_id+4)
Consolidated array index constant in assignment (ABS+-1)[choose_direction::$10]
Consolidated array index constant in assignment (ABS+1)[choose_direction::$14]
Consolidated array index constant in assignment (ABS+-1)[choose_direction::$18]
Consolidated array index constant in assignment (ABS+1)[choose_direction::$22]
Successful SSA optimization Pass2ConstantAdditionElimination
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Alias choose_direction::ydiff#0 = choose_direction::$10 choose_direction::$14
Alias choose_direction::xdiff#0 = choose_direction::$18 choose_direction::$22
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Identical Phi Values memset::c#7 0
Successful SSA optimization Pass2IdenticalPhiElimination
Identified duplicate assignment right side [235] splash_run::$34 = splash_run::i#2 << 1
Identified duplicate assignment right side [590] game_logic::$72 = game_logic::pacman_ytile#0 << 1
Identified duplicate assignment right side [601] game_logic::$68 = game_logic::pacman_ytile#0 << 1
Successful SSA optimization Pass2DuplicateRValueIdentification
Eliminating unused constant SIZEOF_POINTER
Eliminating unused constant SIZEOF_UNSIGNED_INT
Successful SSA optimization PassNEliminateUnusedVars
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$210 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Alias splash_run::$34 = splash_run::$24
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$210 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$210 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (unsigned int) $400
Finalized unsigned number type (unsigned int) $401
Finalized unsigned number type (unsigned int) $402
Finalized unsigned number type (unsigned int) $800
Finalized unsigned number type (unsigned int) $801
Finalized unsigned number type (unsigned int) $802
Finalized unsigned number type (unsigned int) $c00
Finalized unsigned number type (unsigned int) $c01
Finalized unsigned number type (unsigned int) $c02
Finalized unsigned number type (unsigned int) $1000
Finalized unsigned number type (unsigned int) $1001
Finalized unsigned number type (unsigned int) $1002
Finalized unsigned number type (unsigned int) $1400
Finalized unsigned number type (unsigned int) $1401
Finalized unsigned number type (unsigned int) $1402
Finalized unsigned number type (unsigned int) $1800
Finalized unsigned number type (unsigned int) $1801
Finalized unsigned number type (unsigned int) $1802
Finalized unsigned number type (unsigned int) $1c00
Finalized unsigned number type (unsigned int) $1c01
Finalized unsigned number type (unsigned int) $1c02
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $1a
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) 9
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $15
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $1b
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $21
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $27
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $2d
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $33
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $39
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) 6
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $c
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $12
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $18
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $1e
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $24
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $2a
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $30
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $36
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $3c
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) 9
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $15
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $1b
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $21
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $27
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $2d
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $33
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $39
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) 6
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $c
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $12
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $18
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $1e
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $24
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $2a
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $30
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $36
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $3c
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) 3
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) 9
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $f
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $15
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $1b
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $21
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $27
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $2d
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $33
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $39
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) 6
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $c
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $12
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $18
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $1e
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $24
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $2a
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $30
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $36
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $3c
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) 3
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) 9
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $f
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $15
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $1b
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $21
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $27
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $2d
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $33
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $39
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) 6
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $c
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $12
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $18
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $1e
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $24
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $2a
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $30
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $36
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $3c
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) 3
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) 9
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $f
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $15
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $1b
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $21
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $27
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $2d
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $33
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $39
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) 6
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $c
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $12
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $18
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $1e
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $24
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $2a
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $30
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $36
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $3c
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) 3
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) 9
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $f
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $15
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $1b
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $21
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $27
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $2d
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $33
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $39
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) 6
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $c
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $12
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $18
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $1e
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $24
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $2a
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $30
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $36
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $3c
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) 3
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) 9
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $f
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $15
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $1b
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $21
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $27
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $2d
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $33
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $39
Finalized unsigned number type (char) $95
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) 6
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $c
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $12
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $18
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $1e
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $24
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $2a
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $30
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $36
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $3c
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) 9
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $15
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $1b
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $21
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $27
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $2d
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $33
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $39
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) 6
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $c
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $12
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $18
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $1e
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $24
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $2a
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $30
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $36
Finalized unsigned number type (char) $c0
Finalized unsigned number type (char) $3c
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) 3
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) 9
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $f
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $15
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $1b
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $21
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $27
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $2d
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $33
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $39
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) 6
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $c
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $12
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $18
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $1e
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $24
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $2a
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $30
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $36
Finalized unsigned number type (unsigned int) $140
Finalized unsigned number type (char) $3c
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) 3
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) 9
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $f
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $15
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $1b
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $21
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $27
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $2d
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $33
Finalized unsigned number type (unsigned int) $180
Finalized unsigned number type (char) $39
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) 6
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $c
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $12
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $18
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $1e
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $24
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $2a
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $30
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $36
Finalized unsigned number type (unsigned int) $1c0
Finalized unsigned number type (char) $3c
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) 3
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) 9
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $f
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $15
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $1b
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $21
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $27
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $2d
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $33
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) $39
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) 6
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $c
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $12
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $18
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $1e
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $24
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $2a
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $30
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $36
Finalized unsigned number type (unsigned int) $240
Finalized unsigned number type (char) $3c
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) 3
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) 9
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $f
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $15
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $1b
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $21
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $27
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $2d
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $33
Finalized unsigned number type (unsigned int) $280
Finalized unsigned number type (char) $39
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) 6
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $c
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $12
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $18
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $1e
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $24
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $2a
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $30
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $36
Finalized unsigned number type (unsigned int) $2c0
Finalized unsigned number type (char) $3c
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) 3
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) 9
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $f
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $15
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $1b
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $21
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $27
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $2d
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $33
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) $39
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) 6
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $c
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $12
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $18
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $1e
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $24
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $2a
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $30
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $36
Finalized unsigned number type (unsigned int) $340
Finalized unsigned number type (char) $3c
Finalized unsigned number type (char) $95
Finalized unsigned number type (char) $a0
Finalized unsigned number type (char) $25
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $10
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $10
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $21
Finalized unsigned number type (char) $21
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 1
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $18
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $19
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $12
Successful SSA optimization PassNFinalizeNumberTypeConversions
Simplifying constant integer cast $100+6
Simplifying constant integer cast $100+$c
Simplifying constant integer cast $100+$12
Simplifying constant integer cast $100+$18
Simplifying constant integer cast $100+$1e
Simplifying constant integer cast $100+$24
Simplifying constant integer cast $100+$2a
Simplifying constant integer cast $100+$30
Simplifying constant integer cast $100+$36
Simplifying constant integer cast $100+$3c
Simplifying constant integer cast $140+3
Simplifying constant integer cast $140+9
Simplifying constant integer cast $140+$f
Simplifying constant integer cast $140+$15
Simplifying constant integer cast $140+$1b
Simplifying constant integer cast $140+$21
Simplifying constant integer cast $140+$27
Simplifying constant integer cast $140+$2d
Simplifying constant integer cast $140+$33
Simplifying constant integer cast $140+$39
Simplifying constant integer cast $180+6
Simplifying constant integer cast $180+$c
Simplifying constant integer cast $180+$12
Simplifying constant integer cast $180+$18
Simplifying constant integer cast $180+$1e
Simplifying constant integer cast $180+$24
Simplifying constant integer cast $180+$2a
Simplifying constant integer cast $180+$30
Simplifying constant integer cast $180+$36
Simplifying constant integer cast $180+$3c
Simplifying constant integer cast $1c0+3
Simplifying constant integer cast $1c0+9
Simplifying constant integer cast $1c0+$f
Simplifying constant integer cast $1c0+$15
Simplifying constant integer cast $1c0+$1b
Simplifying constant integer cast $1c0+$21
Simplifying constant integer cast $1c0+$27
Simplifying constant integer cast $1c0+$2d
Simplifying constant integer cast $1c0+$33
Simplifying constant integer cast $1c0+$39
Simplifying constant integer cast $200+6
Simplifying constant integer cast $200+$c
Simplifying constant integer cast $200+$12
Simplifying constant integer cast $200+$18
Simplifying constant integer cast $200+$1e
Simplifying constant integer cast $200+$24
Simplifying constant integer cast $200+$2a
Simplifying constant integer cast $200+$30
Simplifying constant integer cast $200+$36
Simplifying constant integer cast $200+$3c
Simplifying constant integer cast $240+3
Simplifying constant integer cast $240+9
Simplifying constant integer cast $240+$f
Simplifying constant integer cast $240+$15
Simplifying constant integer cast $240+$1b
Simplifying constant integer cast $240+$21
Simplifying constant integer cast $240+$27
Simplifying constant integer cast $240+$2d
Simplifying constant integer cast $240+$33
Simplifying constant integer cast $240+$39
Simplifying constant integer cast $280+6
Simplifying constant integer cast $280+$c
Simplifying constant integer cast $280+$12
Simplifying constant integer cast $280+$18
Simplifying constant integer cast $280+$1e
Simplifying constant integer cast $280+$24
Simplifying constant integer cast $280+$2a
Simplifying constant integer cast $280+$30
Simplifying constant integer cast $280+$36
Simplifying constant integer cast $280+$3c
Simplifying constant integer cast $2c0+3
Simplifying constant integer cast $2c0+9
Simplifying constant integer cast $2c0+$f
Simplifying constant integer cast $2c0+$15
Simplifying constant integer cast $2c0+$1b
Simplifying constant integer cast $2c0+$21
Simplifying constant integer cast $2c0+$27
Simplifying constant integer cast $2c0+$2d
Simplifying constant integer cast $2c0+$33
Simplifying constant integer cast $2c0+$39
Simplifying constant integer cast $300+6
Simplifying constant integer cast $300+$c
Simplifying constant integer cast $300+$12
Simplifying constant integer cast $300+$18
Simplifying constant integer cast $300+$1e
Simplifying constant integer cast $300+$24
Simplifying constant integer cast $300+$2a
Simplifying constant integer cast $300+$30
Simplifying constant integer cast $300+$36
Simplifying constant integer cast $300+$3c
Simplifying constant integer cast $340+3
Simplifying constant integer cast $340+9
Simplifying constant integer cast $340+$f
Simplifying constant integer cast $340+$15
Simplifying constant integer cast $340+$1b
Simplifying constant integer cast $340+$21
Simplifying constant integer cast $340+$27
Simplifying constant integer cast $340+$2d
Simplifying constant integer cast $340+$33
Simplifying constant integer cast $340+$39
Simplifying constant integer cast $100+3
Simplifying constant integer cast $100+9
Simplifying constant integer cast $100+$f
Simplifying constant integer cast $100+$15
Simplifying constant integer cast $100+$1b
Simplifying constant integer cast $100+$21
Simplifying constant integer cast $100+$27
Simplifying constant integer cast $100+$2d
Simplifying constant integer cast $100+$33
Simplifying constant integer cast $100+$39
Simplifying constant integer cast $140+6
Simplifying constant integer cast $140+$c
Simplifying constant integer cast $140+$12
Simplifying constant integer cast $140+$18
Simplifying constant integer cast $140+$1e
Simplifying constant integer cast $140+$24
Simplifying constant integer cast $140+$2a
Simplifying constant integer cast $140+$30
Simplifying constant integer cast $140+$36
Simplifying constant integer cast $140+$3c
Simplifying constant integer cast $180+3
Simplifying constant integer cast $180+9
Simplifying constant integer cast $180+$f
Simplifying constant integer cast $180+$15
Simplifying constant integer cast $180+$1b
Simplifying constant integer cast $180+$21
Simplifying constant integer cast $180+$27
Simplifying constant integer cast $180+$2d
Simplifying constant integer cast $180+$33
Simplifying constant integer cast $180+$39
Simplifying constant integer cast $1c0+6
Simplifying constant integer cast $1c0+$c
Simplifying constant integer cast $1c0+$12
Simplifying constant integer cast $1c0+$18
Simplifying constant integer cast $1c0+$1e
Simplifying constant integer cast $1c0+$24
Simplifying constant integer cast $1c0+$2a
Simplifying constant integer cast $1c0+$30
Simplifying constant integer cast $1c0+$36
Simplifying constant integer cast $1c0+$3c
Simplifying constant integer cast $200+3
Simplifying constant integer cast $200+9
Simplifying constant integer cast $200+$f
Simplifying constant integer cast $200+$15
Simplifying constant integer cast $200+$1b
Simplifying constant integer cast $200+$21
Simplifying constant integer cast $200+$27
Simplifying constant integer cast $200+$2d
Simplifying constant integer cast $200+$33
Simplifying constant integer cast $200+$39
Simplifying constant integer cast $240+6
Simplifying constant integer cast $240+$c
Simplifying constant integer cast $240+$12
Simplifying constant integer cast $240+$18
Simplifying constant integer cast $240+$1e
Simplifying constant integer cast $240+$24
Simplifying constant integer cast $240+$2a
Simplifying constant integer cast $240+$30
Simplifying constant integer cast $240+$36
Simplifying constant integer cast $240+$3c
Simplifying constant integer cast $280+3
Simplifying constant integer cast $280+9
Simplifying constant integer cast $280+$f
Simplifying constant integer cast $280+$15
Simplifying constant integer cast $280+$1b
Simplifying constant integer cast $280+$21
Simplifying constant integer cast $280+$27
Simplifying constant integer cast $280+$2d
Simplifying constant integer cast $280+$33
Simplifying constant integer cast $280+$39
Simplifying constant integer cast $2c0+6
Simplifying constant integer cast $2c0+$c
Simplifying constant integer cast $2c0+$12
Simplifying constant integer cast $2c0+$18
Simplifying constant integer cast $2c0+$1e
Simplifying constant integer cast $2c0+$24
Simplifying constant integer cast $2c0+$2a
Simplifying constant integer cast $2c0+$30
Simplifying constant integer cast $2c0+$36
Simplifying constant integer cast $2c0+$3c
Simplifying constant integer cast $300+3
Simplifying constant integer cast $300+9
Simplifying constant integer cast $300+$f
Simplifying constant integer cast $300+$15
Simplifying constant integer cast $300+$1b
Simplifying constant integer cast $300+$21
Simplifying constant integer cast $300+$27
Simplifying constant integer cast $300+$2d
Simplifying constant integer cast $300+$33
Simplifying constant integer cast $300+$39
Simplifying constant integer cast $340+6
Simplifying constant integer cast $340+$c
Simplifying constant integer cast $340+$12
Simplifying constant integer cast $340+$18
Simplifying constant integer cast $340+$1e
Simplifying constant integer cast $340+$24
Simplifying constant integer cast $340+$2a
Simplifying constant integer cast $340+$30
Simplifying constant integer cast $340+$36
Simplifying constant integer cast $340+$3c
Simplifying constant integer cast $18*$100
Simplifying constant integer cast $19*$100
Successful SSA optimization PassNCastSimplification
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$210 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Alias candidate removed (volatile)pill_count = gameplay_run::$4
Alias candidate removed (volatile)frame = irq_screen_top::$2
Alias candidate removed (volatile)game_logic_substep = game_logic::$3
Alias candidate removed (volatile)anim_frame_idx = game_logic::$15
Alias candidate removed (volatile)logic_tile_xcol = game_logic::$69 game_logic::$65
Alias candidate removed (volatile)logic_tile_ptr = game_logic::$71 game_logic::$67
Alias candidate removed (volatile)logic_tile_yfine = game_logic::$72 game_logic::$210 game_logic::$68
Alias candidate removed (volatile)ghost4_direction = game_logic::$119
Alias candidate removed (volatile)ghost3_direction = game_logic::$140
Alias candidate removed (volatile)ghost2_direction = game_logic::$161
Alias candidate removed (volatile)ghost1_direction = game_logic::$182
Added new block during phi lifting merge_code::@22(between merge_code::@10 and merge_code::@1)
Added new block during phi lifting merge_code::@23(between merge_code::@3 and merge_code::@4)
Added new block during phi lifting merge_code::@24(between merge_code::@4 and merge_code::@10)
Added new block during phi lifting merge_code::@25(between merge_code::@5 and merge_code::@10)
Added new block during phi lifting merge_code::@26(between merge_code::@3 and merge_code::@14)
Added new block during phi lifting init_render_index::@11(between init_render_index::@6 and init_render_index::@8)
Added new block during phi lifting splash_run::@41(between splash_run::@3 and splash_run::@5)
Added new block during phi lifting level_show::@12(between level_show::@5 and level_show::@7)
Added new block during phi lifting level_show::@13(between level_show::@7 and level_show::@8)
Added new block during phi lifting init_level_tile_directions::@18(between init_level_tile_directions::@15 and init_level_tile_directions::@7)
Added new block during phi lifting init_level_tile_directions::@19(between init_level_tile_directions::@16 and init_level_tile_directions::@8)
Added new block during phi lifting init_level_tile_directions::@20(between init_level_tile_directions::@17 and init_level_tile_directions::@9)
Added new block during phi lifting game_logic::@179(between game_logic::@14 and game_logic::@44)
Added new block during phi lifting choose_direction::@13(between choose_direction::@1 and choose_direction::@2)
Added new block during phi lifting choose_direction::@14(between choose_direction::@7 and choose_direction::@2)
Added new block during phi lifting choose_direction::@15(between choose_direction::@2 and choose_direction::@3)
Added new block during phi lifting choose_direction::@16(between choose_direction::@9 and choose_direction::@3)
Added new block during phi lifting choose_direction::@17(between choose_direction::@11 and choose_direction::@4)
Added new block during phi lifting choose_direction::@18(between choose_direction::@3 and choose_direction::@4)
Adding NOP phi() at start of __start
Adding NOP phi() at start of __start::@1
Adding NOP phi() at start of __start::@2
Adding NOP phi() at start of irq_screen_top::toD0181
Adding NOP phi() at start of irq_screen_top::toD0181_@return
Adding NOP phi() at start of irq_screen_top::@5
Adding NOP phi() at start of irq_screen_top::toDd002
Adding NOP phi() at start of irq_screen_top::toDd002_@return
Adding NOP phi() at start of irq_screen_top::@6
Adding NOP phi() at start of irq_screen_top::@10
Adding NOP phi() at start of irq_screen_top::@11
Adding NOP phi() at start of irq_screen_top::@1
Adding NOP phi() at start of irq_screen_top::toDd001
Adding NOP phi() at start of irq_screen_top::toDd001_@return
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@4
Adding NOP phi() at start of game_logic::@156
Adding NOP phi() at start of game_logic::@157
Adding NOP phi() at start of game_logic::@158
Adding NOP phi() at start of game_logic::@159
Adding NOP phi() at start of game_logic::@80
Adding NOP phi() at start of game_logic::@98
Adding NOP phi() at start of game_logic::@116
Adding NOP phi() at start of game_logic::@134
Adding NOP phi() at start of splash_run
Adding NOP phi() at start of splash_run::@25
Adding NOP phi() at start of splash_run::@26
Adding NOP phi() at start of splash_run::@27
Adding NOP phi() at start of splash_run::@28
Adding NOP phi() at start of splash_run::@30
Adding NOP phi() at start of splash_run::@31
Adding NOP phi() at start of splash_run::@32
Adding NOP phi() at start of splash_run::@34
Adding NOP phi() at start of splash_run::@35
Adding NOP phi() at start of splash_run::@37
Adding NOP phi() at start of splash_run::@4
Adding NOP phi() at start of splash_run::toDd001
Adding NOP phi() at start of splash_run::toDd001_@return
Adding NOP phi() at start of splash_run::toD0181
Adding NOP phi() at start of splash_run::toD0181_@return
Adding NOP phi() at start of splash_run::@22
Adding NOP phi() at start of splash_run::@15
Adding NOP phi() at start of splash_run::@18
Adding NOP phi() at start of gameplay_run
Adding NOP phi() at start of gameplay_run::@14
Adding NOP phi() at start of gameplay_run::@15
Adding NOP phi() at start of gameplay_run::@16
Adding NOP phi() at start of gameplay_run::@17
Adding NOP phi() at start of gameplay_run::@19
Adding NOP phi() at start of done_run::@7
Adding NOP phi() at start of done_run::@22
Adding NOP phi() at start of done_run::@3
Adding NOP phi() at start of done_run::@17
Adding NOP phi() at start of done_run::@20
Adding NOP phi() at start of done_run::@21
Adding NOP phi() at start of level_tile_directions::@2
Adding NOP phi() at start of choose_direction::@12
Adding NOP phi() at start of memset::@1
Adding NOP phi() at start of merge_code
Adding NOP phi() at start of init_render_index
Adding NOP phi() at start of init_render_index::@10
Adding NOP phi() at start of splash_show
Adding NOP phi() at start of init_bobs_restore
Adding NOP phi() at start of init_bobs_restore::@2
Adding NOP phi() at start of init_sprite_pointers
Adding NOP phi() at start of init_sprite_pointers::@2
Adding NOP phi() at start of memcpy
Adding NOP phi() at start of memcpy::@3
Adding NOP phi() at start of joyfire::@2
Adding NOP phi() at start of joyfire::@1
Adding NOP phi() at start of init_level_tile_directions
Adding NOP phi() at start of init_level_tile_directions::@2
Adding NOP phi() at start of init_level_tile_directions::@10
Adding NOP phi() at start of level_show
Adding NOP phi() at start of level_show::@3
Adding NOP phi() at start of level_tile_get::@2
CALL GRAPH
Calls in [__start] to main:62
Calls in [irq_screen_top] to game_logic:93 pacman_sound_play:95
Calls in [main] to splash_run:109 gameplay_run:112 done_run:114
Calls in [game_logic] to spawn_all:231 spawn_all:240 spawn_all:249 spawn_all:258 level_tile_directions:299 choose_direction:320 level_tile_directions:359 choose_direction:380 level_tile_directions:419 choose_direction:440 level_tile_directions:479 choose_direction:500 level_tile_directions:537
Calls in [splash_run] to memset:571 byteboozer_decrunch:573 byteboozer_decrunch:575 merge_code:577 memset:579 memset:581 init_render_index:583 byteboozer_decrunch:585 splash_show:587 memset:589 init_bobs_restore:591 byteboozer_decrunch:593 init_sprite_pointers:595 memcpy:597 byteboozer_decrunch:599 memset:601 null:636 joyinit:648 joyfire:651 null:658
Calls in [gameplay_run] to byteboozer_decrunch:694 init_level_tile_directions:696 init_sprite_pointers:698 level_show:700 spawn_all:716 pacman_sound_init:718
Calls in [done_run] to null:750 byteboozer_decrunch:753 joyfire:760 null:767 render:783 byteboozer_decrunch:788
Calls in [splash_show] to render:1021
Calls in [init_level_tile_directions] to level_tile_get:1098 level_tile_get:1108 level_tile_get:1119 level_tile_get:1130
Calls in [level_show] to render_tiles:1172
Created 107 initial phi equivalence classes
Coalesced [144] game_logic::ghost_frame_idx#5 = game_logic::ghost_frame_idx#1
Coalesced [182] game_logic::ghost_frame_idx#4 = game_logic::ghost_frame_idx#0
Coalesced [297] level_tile_directions::xtile#11 = level_tile_directions::xtile#0
Coalesced [298] level_tile_directions::ytile#11 = level_tile_directions::ytile#0
Coalesced [307] game_logic::target_xtile#4 = game_logic::target_xtile#2
Coalesced [308] game_logic::target_ytile#4 = game_logic::target_ytile#2
Coalesced [315] choose_direction::ghost_xtile#7 = choose_direction::ghost_xtile#0
Coalesced [316] choose_direction::target_xtile#7 = choose_direction::target_xtile#0
Coalesced [317] choose_direction::ghost_ytile#7 = choose_direction::ghost_ytile#0
Coalesced [318] choose_direction::target_ytile#7 = choose_direction::target_ytile#0
Coalesced [319] choose_direction::open_directions#16 = choose_direction::open_directions#0
Coalesced [357] level_tile_directions::xtile#7 = level_tile_directions::xtile#1
Coalesced [358] level_tile_directions::ytile#7 = level_tile_directions::ytile#1
Coalesced [367] game_logic::target_xtile1#4 = game_logic::target_xtile1#2
Coalesced [368] game_logic::target_ytile1#4 = game_logic::target_ytile1#2
Coalesced [375] choose_direction::ghost_xtile#8 = choose_direction::ghost_xtile#1
Coalesced [376] choose_direction::target_xtile#8 = choose_direction::target_xtile#1
Coalesced [377] choose_direction::ghost_ytile#8 = choose_direction::ghost_ytile#1
Coalesced [378] choose_direction::target_ytile#8 = choose_direction::target_ytile#1
Coalesced [379] choose_direction::open_directions#17 = choose_direction::open_directions#1
Coalesced [417] level_tile_directions::xtile#8 = level_tile_directions::xtile#2
Coalesced [418] level_tile_directions::ytile#8 = level_tile_directions::ytile#2
Coalesced [427] game_logic::target_xtile2#4 = game_logic::target_xtile2#2
Coalesced [428] game_logic::target_ytile2#4 = game_logic::target_ytile2#2
Coalesced [435] choose_direction::ghost_xtile#5 = choose_direction::ghost_xtile#2
Coalesced [436] choose_direction::target_xtile#5 = choose_direction::target_xtile#2
Coalesced [437] choose_direction::ghost_ytile#5 = choose_direction::ghost_ytile#2
Coalesced [438] choose_direction::target_ytile#5 = choose_direction::target_ytile#2
Coalesced [439] choose_direction::open_directions#14 = choose_direction::open_directions#2
Coalesced [477] level_tile_directions::xtile#9 = level_tile_directions::xtile#3
Coalesced [478] level_tile_directions::ytile#9 = level_tile_directions::ytile#3
Coalesced [487] game_logic::target_xtile3#4 = game_logic::target_xtile3#2
Coalesced [488] game_logic::target_ytile3#4 = game_logic::target_ytile3#2
Coalesced [495] choose_direction::ghost_xtile#6 = choose_direction::ghost_xtile#3
Coalesced [496] choose_direction::target_xtile#6 = choose_direction::target_xtile#3
Coalesced [497] choose_direction::ghost_ytile#6 = choose_direction::ghost_ytile#3
Coalesced [498] choose_direction::target_ytile#6 = choose_direction::target_ytile#3
Coalesced [499] choose_direction::open_directions#15 = choose_direction::open_directions#3
Coalesced [535] level_tile_directions::xtile#10 = level_tile_directions::xtile#4
Coalesced [536] level_tile_directions::ytile#10 = level_tile_directions::ytile#4
Coalesced [664] splash_run::i2#4 = splash_run::i2#1
Coalesced [667] splash_run::i1#4 = splash_run::i1#1
Coalesced [676] splash_run::msb#16 = splash_run::msb#2
Coalesced [679] splash_run::i#6 = splash_run::i#1
Coalesced [680] splash_run::msb#14 = splash_run::msb#8
Coalesced [681] splash_run::msb#15 = splash_run::msb#1
Coalesced [735] gameplay_run::i2#4 = gameplay_run::i2#1
Coalesced [738] gameplay_run::i1#4 = gameplay_run::i1#1
Coalesced [741] gameplay_run::i#4 = gameplay_run::i#1
Coalesced [769] done_run::gfx#9 = done_run::gfx#4
Coalesced [773] done_run::xcol#8 = done_run::xcol#1
Coalesced (already) [774] done_run::gfx#8 = done_run::gfx#2
Coalesced [780] render::ypos#3 = render::ypos#0
Coalesced [781] render::xcol#3 = render::xcol#0
Coalesced [782] render::pixels#6 = render::pixels#0
Coalesced [785] done_run::ypos#5 = done_run::ypos#1
Coalesced [786] done_run::gfx#10 = done_run::gfx#1
Coalesced [794] done_run::i1#4 = done_run::i1#1
Coalesced [797] done_run::i#4 = done_run::i#1
Coalesced [830] level_tile_directions::return#14 = level_tile_directions::return#0
Coalesced [841] choose_direction::dist_min#12 = choose_direction::dist_up#0
Coalesced [847] choose_direction::dist_min#15 = choose_direction::dist_down#0
Coalesced [853] choose_direction::dist_min#16 = choose_direction::dist_left#0
Coalesced [862] choose_direction::return#11 = choose_direction::direction#6
Coalesced (already) [863] choose_direction::return#12 = choose_direction::direction#6
Coalesced [864] choose_direction::direction#16 = choose_direction::direction#8
Not coalescing [865] choose_direction::dist_min#18 = choose_direction::dist_min#10
Coalesced (already) [866] choose_direction::direction#15 = choose_direction::direction#8
Not coalescing [867] choose_direction::dist_min#17 = choose_direction::dist_min#10
Not coalescing [868] choose_direction::dist_min#14 = choose_direction::dist_min#6
Coalesced [869] choose_direction::direction#14 = choose_direction::direction#10
Not coalescing [870] choose_direction::dist_min#13 = choose_direction::dist_min#6
Coalesced (already) [871] choose_direction::direction#13 = choose_direction::direction#10
Coalesced [882] memset::dst#5 = memset::dst#1
Coalesced [892] merge_code::logic_code#33 = merge_code::logic_code#18
Coalesced [893] merge_code::dest_code#39 = merge_code::dest_code#14
Coalesced [899] merge_code::logic_code#34 = merge_code::logic_code#3
Coalesced [900] merge_code::dest_code#40 = merge_code::dest_code#12
Coalesced [904] merge_code::logic_code#32 = merge_code::logic_code#5
Coalesced (already) [905] merge_code::dest_code#38 = merge_code::dest_code#13
Coalesced [909] merge_code::logic_code#35 = merge_code::logic_code#4
Coalesced [910] merge_code::dest_code#41 = merge_code::dest_code#6
Coalesced [911] merge_code::cycle_budget#14 = merge_code::cycle_budget#0
Coalesced [912] merge_code::logic_code#28 = merge_code::logic_code#18
Coalesced [913] merge_code::dest_code#30 = merge_code::dest_code#14
Coalesced [919] merge_code::cycle_budget#19 = merge_code::cycle_budget#13
Coalesced [920] merge_code::dest_code#37 = merge_code::dest_code#21
Coalesced [923] merge_code::raster_code#18 = merge_code::raster_code#2
Coalesced (already) [924] merge_code::dest_code#28 = merge_code::dest_code#10
Coalesced (already) [925] merge_code::logic_code#26 = merge_code::logic_code#17
Coalesced [930] merge_code::cycle_budget#17 = merge_code::cycle_budget#3
Coalesced [931] merge_code::dest_code#35 = merge_code::dest_code#4
Coalesced [937] merge_code::cycle_budget#16 = merge_code::cycle_budget#2
Coalesced [938] merge_code::dest_code#34 = merge_code::dest_code#3
Coalesced [942] merge_code::logic_code#31 = merge_code::logic_code#0
Coalesced [943] merge_code::dest_code#33 = merge_code::dest_code#21
Coalesced [948] merge_code::cycle_budget#15 = merge_code::cycle_budget#1
Coalesced [949] merge_code::logic_code#29 = merge_code::logic_code#2
Coalesced (already) [950] merge_code::dest_code#31 = merge_code::dest_code#15
Coalesced [954] merge_code::logic_code#30 = merge_code::logic_code#1
Coalesced [955] merge_code::dest_code#32 = merge_code::dest_code#1
Coalesced (already) [956] merge_code::cycle_budget#18 = merge_code::cycle_budget#13
Coalesced (already) [957] merge_code::dest_code#36 = merge_code::dest_code#21
Coalesced [961] merge_code::raster_code#19 = merge_code::raster_code#0
Coalesced [962] merge_code::dest_code#29 = merge_code::dest_code#0
Coalesced (already) [963] merge_code::logic_code#27 = merge_code::logic_code#18
Not coalescing [975] init_render_index::render_index_xcol#7 = init_render_index::render_index_xcol#0
Coalesced [976] init_render_index::ypos_inc_offset#9 = init_render_index::ypos_inc_offset#7
Coalesced [981] init_render_index::x_col#11 = init_render_index::x_col#1
Coalesced [982] init_render_index::render_index_xcol#6 = init_render_index::render_index#1
Coalesced [995] init_render_index::ypos_inc_offset#12 = init_render_index::ypos_inc_offset#3
Coalesced [999] init_render_index::y_pos#6 = init_render_index::y_pos#1
Coalesced [1000] init_render_index::render_index_xcol#8 = init_render_index::render_index_xcol#1
Coalesced [1001] init_render_index::ypos_inc_offset#10 = init_render_index::ypos_inc_offset#8
Coalesced [1002] init_render_index::ypos_inc_offset#11 = init_render_index::ypos_inc_offset#2
Coalesced [1007] splash_show::splash#9 = splash_show::splash#4
Coalesced [1011] splash_show::xcol#8 = splash_show::xcol#1
Coalesced (already) [1012] splash_show::splash#8 = splash_show::splash#2
Coalesced [1018] render::ypos#4 = render::ypos#1
Coalesced [1019] render::xcol#4 = render::xcol#1
Coalesced [1020] render::pixels#7 = render::pixels#1
Coalesced [1023] splash_show::ypos#5 = splash_show::ypos#1
Coalesced [1024] splash_show::splash#10 = splash_show::splash#1
Coalesced [1041] init_bobs_restore::bob#7 = init_bobs_restore::bob#1
Coalesced [1042] init_bobs_restore::bob_restore#7 = init_bobs_restore::bob_restore#1
Coalesced [1045] init_bobs_restore::i#4 = init_bobs_restore::i#1
Coalesced [1056] init_sprite_pointers::screen#7 = init_sprite_pointers::screen#1
Coalesced [1057] init_sprite_pointers::sprites_ptr_1#7 = init_sprite_pointers::sprites_ptr_1#1
Coalesced [1058] init_sprite_pointers::sprites_ptr_2#7 = init_sprite_pointers::sprites_ptr_2#1
Coalesced [1064] init_sprite_pointers::sprite#4 = init_sprite_pointers::sprite#1
Coalesced [1073] memcpy::src#4 = memcpy::src#1
Coalesced [1074] memcpy::dst#4 = memcpy::dst#1
Coalesced [1092] init_level_tile_directions::ytile#19 = init_level_tile_directions::ytile#1
Coalesced [1093] init_level_tile_directions::directions#19 = init_level_tile_directions::directions#1
Coalesced [1096] level_tile_get::xtile#6 = level_tile_get::xtile#0
Coalesced [1097] level_tile_get::ytile#6 = level_tile_get::ytile#0
Coalesced [1106] level_tile_get::xtile#7 = level_tile_get::xtile#1
Coalesced [1107] level_tile_get::ytile#7 = level_tile_get::ytile#1
Coalesced [1113] init_level_tile_directions::open_directions#17 = init_level_tile_directions::open_directions#2
Coalesced [1117] level_tile_get::xtile#8 = level_tile_get::xtile#2
Coalesced [1118] level_tile_get::ytile#8 = level_tile_get::ytile#2
Coalesced [1124] init_level_tile_directions::open_directions#19 = init_level_tile_directions::open_directions#3
Coalesced [1128] level_tile_get::xtile#9 = level_tile_get::xtile#3
Coalesced [1129] level_tile_get::ytile#9 = level_tile_get::ytile#3
Coalesced [1135] init_level_tile_directions::open_directions#21 = init_level_tile_directions::open_directions#4
Coalesced [1139] init_level_tile_directions::xtile#16 = init_level_tile_directions::xtile#1
Coalesced [1140] init_level_tile_directions::open_directions#22 = init_level_tile_directions::open_directions#13
Coalesced [1141] init_level_tile_directions::open_directions#20 = init_level_tile_directions::open_directions#12
Coalesced [1142] init_level_tile_directions::open_directions#18 = init_level_tile_directions::open_directions#11
Coalesced [1148] level_show::count#16 = level_show::count#12
Coalesced [1153] level_show::ytile#12 = level_show::ytile#1
Coalesced (already) [1154] level_show::count#14 = level_show::count#10
Coalesced [1155] level_show::level#12 = level_show::level#1
Coalesced [1160] level_show::count#18 = level_show::count#1
Coalesced [1166] level_show::count#19 = level_show::count#2
Coalesced [1174] level_show::xcol#9 = level_show::xcol#1
Coalesced [1175] level_show::xtile#10 = level_show::xtile#2
Coalesced [1176] level_show::count#15 = level_show::count#11
Coalesced [1177] level_show::count#20 = level_show::count#5
Coalesced (already) [1178] level_show::count#17 = level_show::count#10
Coalesced [1196] render::canvas1#5 = render::canvas1#0
Coalesced [1197] render::ypos_inc_offset#4 = render::ypos_inc_offset#0
Coalesced [1198] render::canvas2#5 = render::canvas2#0
Coalesced [1208] render::i#4 = render::i#1
Coalesced [1209] render::canvas1#6 = render::canvas1#1
Coalesced [1210] render::ypos_inc_offset#5 = render::ypos_inc_offset#1
Coalesced [1211] render::canvas2#6 = render::canvas2#1
Coalesced [1218] level_tile_get::return#12 = level_tile_get::return#0
Coalesced [1233] render_tiles::canvas1#4 = render_tiles::canvas1#0
Coalesced [1234] render_tiles::canvas2#4 = render_tiles::canvas2#0
Coalesced [1235] render_tiles::ypos_inc_offset#4 = render_tiles::ypos_inc_offset#0
Coalesced [1246] render_tiles::y#4 = render_tiles::y#1
Coalesced [1247] render_tiles::canvas1#5 = render_tiles::canvas1#1
Coalesced [1248] render_tiles::canvas2#5 = render_tiles::canvas2#1
Coalesced [1249] render_tiles::ypos_inc_offset#5 = render_tiles::ypos_inc_offset#1
Coalesced down to 85 phi equivalence classes
Culled Empty Block label __start::@2
Culled Empty Block label irq_screen_top::toD0181_@return
Culled Empty Block label irq_screen_top::@5
Culled Empty Block label irq_screen_top::toDd002_@return
Culled Empty Block label irq_screen_top::@11
Culled Empty Block label irq_screen_top::@1
Culled Empty Block label irq_screen_top::toDd001_@return
Culled Empty Block label main::@2
Culled Empty Block label main::@4
Culled Empty Block label game_logic::@179
Culled Empty Block label game_logic::@156
Culled Empty Block label game_logic::@157
Culled Empty Block label game_logic::@158
Culled Empty Block label game_logic::@159
Culled Empty Block label game_logic::@80
Culled Empty Block label game_logic::@98
Culled Empty Block label game_logic::@116
Culled Empty Block label game_logic::@134
Culled Empty Block label splash_run::@4
Culled Empty Block label splash_run::toDd001_@return
Culled Empty Block label splash_run::toD0181_@return
Culled Empty Block label splash_run::@41
Culled Empty Block label gameplay_run::@14
Culled Empty Block label done_run::@7
Culled Empty Block label done_run::@22
Culled Empty Block label done_run::@3
Culled Empty Block label done_run::@12
Culled Empty Block label done_run::@21
Culled Empty Block label level_tile_directions::@2
Culled Empty Block label choose_direction::@8
Culled Empty Block label choose_direction::@10
Culled Empty Block label choose_direction::@12
Culled Empty Block label choose_direction::@18
Culled Empty Block label memset::@1
Culled Empty Block label merge_code::@26
Culled Empty Block label merge_code::@23
Culled Empty Block label merge_code::@25
Culled Empty Block label merge_code::@22
Culled Empty Block label merge_code::@24
Culled Empty Block label init_render_index::@11
Culled Empty Block label splash_show::@2
Culled Empty Block label init_bobs_restore::@2
Culled Empty Block label init_sprite_pointers::@2
Culled Empty Block label memcpy::@3
Culled Empty Block label joyfire::@2
Culled Empty Block label init_level_tile_directions::@2
Culled Empty Block label init_level_tile_directions::@20
Culled Empty Block label init_level_tile_directions::@19
Culled Empty Block label init_level_tile_directions::@18
Culled Empty Block label level_show::@3
Culled Empty Block label level_show::@2
Culled Empty Block label level_show::@13
Culled Empty Block label level_show::@12
Culled Empty Block label level_tile_get::@2
Renumbering block memset::@2 to memset::@1
Renumbering block memset::@3 to memset::@2
Renumbering block memset::@4 to memset::@3
Renumbering block init_bobs_restore::@3 to init_bobs_restore::@2
Renumbering block init_bobs_restore::@4 to init_bobs_restore::@3
Renumbering block init_bobs_restore::@5 to init_bobs_restore::@4
Renumbering block init_bobs_restore::@6 to init_bobs_restore::@5
Renumbering block main::@3 to main::@2
Renumbering block done_run::@4 to done_run::@3
Renumbering block done_run::@5 to done_run::@4
Renumbering block done_run::@6 to done_run::@5
Renumbering block done_run::@8 to done_run::@6
Renumbering block done_run::@9 to done_run::@7
Renumbering block done_run::@10 to done_run::@8
Renumbering block done_run::@11 to done_run::@9
Renumbering block done_run::@13 to done_run::@10
Renumbering block done_run::@14 to done_run::@11
Renumbering block done_run::@15 to done_run::@12
Renumbering block done_run::@16 to done_run::@13
Renumbering block done_run::@17 to done_run::@14
Renumbering block done_run::@18 to done_run::@15
Renumbering block done_run::@19 to done_run::@16
Renumbering block done_run::@20 to done_run::@17
Renumbering block done_run::@23 to done_run::@18
Renumbering block done_run::@24 to done_run::@19
Renumbering block splash_run::@5 to splash_run::@4
Renumbering block splash_run::@6 to splash_run::@5
Renumbering block splash_run::@7 to splash_run::@6
Renumbering block splash_run::@8 to splash_run::@7
Renumbering block splash_run::@9 to splash_run::@8
Renumbering block splash_run::@10 to splash_run::@9
Renumbering block splash_run::@11 to splash_run::@10
Renumbering block splash_run::@12 to splash_run::@11
Renumbering block splash_run::@13 to splash_run::@12
Renumbering block splash_run::@14 to splash_run::@13
Renumbering block splash_run::@15 to splash_run::@14
Renumbering block splash_run::@16 to splash_run::@15
Renumbering block splash_run::@17 to splash_run::@16
Renumbering block splash_run::@18 to splash_run::@17
Renumbering block splash_run::@19 to splash_run::@18
Renumbering block splash_run::@20 to splash_run::@19
Renumbering block splash_run::@21 to splash_run::@20
Renumbering block splash_run::@22 to splash_run::@21
Renumbering block splash_run::@23 to splash_run::@22
Renumbering block splash_run::@24 to splash_run::@23
Renumbering block splash_run::@25 to splash_run::@24
Renumbering block splash_run::@26 to splash_run::@25
Renumbering block splash_run::@27 to splash_run::@26
Renumbering block splash_run::@28 to splash_run::@27
Renumbering block splash_run::@29 to splash_run::@28
Renumbering block splash_run::@30 to splash_run::@29
Renumbering block splash_run::@31 to splash_run::@30
Renumbering block splash_run::@32 to splash_run::@31
Renumbering block splash_run::@33 to splash_run::@32
Renumbering block splash_run::@34 to splash_run::@33
Renumbering block splash_run::@35 to splash_run::@34
Renumbering block splash_run::@36 to splash_run::@35
Renumbering block splash_run::@37 to splash_run::@36
Renumbering block splash_run::@38 to splash_run::@37
Renumbering block splash_run::@39 to splash_run::@38
Renumbering block splash_run::@40 to splash_run::@39
Renumbering block gameplay_run::@15 to gameplay_run::@14
Renumbering block gameplay_run::@16 to gameplay_run::@15
Renumbering block gameplay_run::@17 to gameplay_run::@16
Renumbering block gameplay_run::@18 to gameplay_run::@17
Renumbering block gameplay_run::@19 to gameplay_run::@18
Renumbering block gameplay_run::@20 to gameplay_run::@19
Renumbering block gameplay_run::@21 to gameplay_run::@20
Renumbering block splash_show::@3 to splash_show::@2
Renumbering block splash_show::@4 to splash_show::@3
Renumbering block splash_show::@5 to splash_show::@4
Renumbering block splash_show::@6 to splash_show::@5
Renumbering block level_show::@4 to level_show::@2
Renumbering block level_show::@5 to level_show::@3
Renumbering block level_show::@6 to level_show::@4
Renumbering block level_show::@7 to level_show::@5
Renumbering block level_show::@8 to level_show::@6
Renumbering block level_show::@9 to level_show::@7
Renumbering block level_show::@10 to level_show::@8
Renumbering block level_show::@11 to level_show::@9
Renumbering block level_tile_get::@3 to level_tile_get::@2
Renumbering block level_tile_directions::@3 to level_tile_directions::@2
Renumbering block init_level_tile_directions::@3 to init_level_tile_directions::@2
Renumbering block init_level_tile_directions::@4 to init_level_tile_directions::@3
Renumbering block init_level_tile_directions::@5 to init_level_tile_directions::@4
Renumbering block init_level_tile_directions::@6 to init_level_tile_directions::@5
Renumbering block init_level_tile_directions::@7 to init_level_tile_directions::@6
Renumbering block init_level_tile_directions::@8 to init_level_tile_directions::@7
Renumbering block init_level_tile_directions::@9 to init_level_tile_directions::@8
Renumbering block init_level_tile_directions::@10 to init_level_tile_directions::@9
Renumbering block init_level_tile_directions::@11 to init_level_tile_directions::@10
Renumbering block init_level_tile_directions::@12 to init_level_tile_directions::@11
Renumbering block init_level_tile_directions::@13 to init_level_tile_directions::@12
Renumbering block init_level_tile_directions::@14 to init_level_tile_directions::@13
Renumbering block init_level_tile_directions::@15 to init_level_tile_directions::@14
Renumbering block init_level_tile_directions::@16 to init_level_tile_directions::@15
Renumbering block init_level_tile_directions::@17 to init_level_tile_directions::@16
Renumbering block init_sprite_pointers::@3 to init_sprite_pointers::@2
Renumbering block init_sprite_pointers::@4 to init_sprite_pointers::@3
Renumbering block init_sprite_pointers::@5 to init_sprite_pointers::@4
Renumbering block irq_screen_top::@2 to irq_screen_top::@1
Renumbering block irq_screen_top::@3 to irq_screen_top::@2
Renumbering block irq_screen_top::@4 to irq_screen_top::@3
Renumbering block irq_screen_top::@6 to irq_screen_top::@4
Renumbering block irq_screen_top::@7 to irq_screen_top::@5
Renumbering block irq_screen_top::@8 to irq_screen_top::@6
Renumbering block irq_screen_top::@9 to irq_screen_top::@7
Renumbering block irq_screen_top::@10 to irq_screen_top::@8
Renumbering block game_logic::@81 to game_logic::@80
Renumbering block game_logic::@82 to game_logic::@81
Renumbering block game_logic::@83 to game_logic::@82
Renumbering block game_logic::@84 to game_logic::@83
Renumbering block game_logic::@85 to game_logic::@84
Renumbering block game_logic::@86 to game_logic::@85
Renumbering block game_logic::@87 to game_logic::@86
Renumbering block game_logic::@88 to game_logic::@87
Renumbering block game_logic::@89 to game_logic::@88
Renumbering block game_logic::@90 to game_logic::@89
Renumbering block game_logic::@91 to game_logic::@90
Renumbering block game_logic::@92 to game_logic::@91
Renumbering block game_logic::@93 to game_logic::@92
Renumbering block game_logic::@94 to game_logic::@93
Renumbering block game_logic::@95 to game_logic::@94
Renumbering block game_logic::@96 to game_logic::@95
Renumbering block game_logic::@97 to game_logic::@96
Renumbering block game_logic::@99 to game_logic::@97
Renumbering block game_logic::@100 to game_logic::@98
Renumbering block game_logic::@101 to game_logic::@99
Renumbering block game_logic::@102 to game_logic::@100
Renumbering block game_logic::@103 to game_logic::@101
Renumbering block game_logic::@104 to game_logic::@102
Renumbering block game_logic::@105 to game_logic::@103
Renumbering block game_logic::@106 to game_logic::@104
Renumbering block game_logic::@107 to game_logic::@105
Renumbering block game_logic::@108 to game_logic::@106
Renumbering block game_logic::@109 to game_logic::@107
Renumbering block game_logic::@110 to game_logic::@108
Renumbering block game_logic::@111 to game_logic::@109
Renumbering block game_logic::@112 to game_logic::@110
Renumbering block game_logic::@113 to game_logic::@111
Renumbering block game_logic::@114 to game_logic::@112
Renumbering block game_logic::@115 to game_logic::@113
Renumbering block game_logic::@117 to game_logic::@114
Renumbering block game_logic::@118 to game_logic::@115
Renumbering block game_logic::@119 to game_logic::@116
Renumbering block game_logic::@120 to game_logic::@117
Renumbering block game_logic::@121 to game_logic::@118
Renumbering block game_logic::@122 to game_logic::@119
Renumbering block game_logic::@123 to game_logic::@120
Renumbering block game_logic::@124 to game_logic::@121
Renumbering block game_logic::@125 to game_logic::@122
Renumbering block game_logic::@126 to game_logic::@123
Renumbering block game_logic::@127 to game_logic::@124
Renumbering block game_logic::@128 to game_logic::@125
Renumbering block game_logic::@129 to game_logic::@126
Renumbering block game_logic::@130 to game_logic::@127
Renumbering block game_logic::@131 to game_logic::@128
Renumbering block game_logic::@132 to game_logic::@129
Renumbering block game_logic::@133 to game_logic::@130
Renumbering block game_logic::@135 to game_logic::@131
Renumbering block game_logic::@136 to game_logic::@132
Renumbering block game_logic::@137 to game_logic::@133
Renumbering block game_logic::@138 to game_logic::@134
Renumbering block game_logic::@139 to game_logic::@135
Renumbering block game_logic::@140 to game_logic::@136
Renumbering block game_logic::@141 to game_logic::@137
Renumbering block game_logic::@142 to game_logic::@138
Renumbering block game_logic::@143 to game_logic::@139
Renumbering block game_logic::@144 to game_logic::@140
Renumbering block game_logic::@145 to game_logic::@141
Renumbering block game_logic::@146 to game_logic::@142
Renumbering block game_logic::@147 to game_logic::@143
Renumbering block game_logic::@148 to game_logic::@144
Renumbering block game_logic::@149 to game_logic::@145
Renumbering block game_logic::@150 to game_logic::@146
Renumbering block game_logic::@151 to game_logic::@147
Renumbering block game_logic::@152 to game_logic::@148
Renumbering block game_logic::@153 to game_logic::@149
Renumbering block game_logic::@154 to game_logic::@150
Renumbering block game_logic::@155 to game_logic::@151
Renumbering block game_logic::@160 to game_logic::@152
Renumbering block game_logic::@161 to game_logic::@153
Renumbering block game_logic::@162 to game_logic::@154
Renumbering block game_logic::@163 to game_logic::@155
Renumbering block game_logic::@164 to game_logic::@156
Renumbering block game_logic::@165 to game_logic::@157
Renumbering block game_logic::@166 to game_logic::@158
Renumbering block game_logic::@167 to game_logic::@159
Renumbering block game_logic::@168 to game_logic::@160
Renumbering block game_logic::@169 to game_logic::@161
Renumbering block game_logic::@170 to game_logic::@162
Renumbering block game_logic::@171 to game_logic::@163
Renumbering block game_logic::@172 to game_logic::@164
Renumbering block game_logic::@173 to game_logic::@165
Renumbering block game_logic::@174 to game_logic::@166
Renumbering block game_logic::@175 to game_logic::@167
Renumbering block game_logic::@176 to game_logic::@168
Renumbering block game_logic::@177 to game_logic::@169
Renumbering block game_logic::@178 to game_logic::@170
Renumbering block choose_direction::@9 to choose_direction::@8
Renumbering block choose_direction::@11 to choose_direction::@9
Renumbering block choose_direction::@13 to choose_direction::@10
Renumbering block choose_direction::@14 to choose_direction::@11
Renumbering block choose_direction::@15 to choose_direction::@12
Renumbering block choose_direction::@16 to choose_direction::@13
Renumbering block choose_direction::@17 to choose_direction::@14
Adding NOP phi() at start of __start
Adding NOP phi() at start of __start::@1
Adding NOP phi() at start of irq_screen_top::toD0181
Adding NOP phi() at start of irq_screen_top::toDd002
Adding NOP phi() at start of irq_screen_top::@4
Adding NOP phi() at start of irq_screen_top::@8
Adding NOP phi() at start of irq_screen_top::toDd001
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of splash_run
Adding NOP phi() at start of splash_run::@24
Adding NOP phi() at start of splash_run::@25
Adding NOP phi() at start of splash_run::@26
Adding NOP phi() at start of splash_run::@27
Adding NOP phi() at start of splash_run::@29
Adding NOP phi() at start of splash_run::@30
Adding NOP phi() at start of splash_run::@31
Adding NOP phi() at start of splash_run::@33
Adding NOP phi() at start of splash_run::@34
Adding NOP phi() at start of splash_run::@36
Adding NOP phi() at start of splash_run::toDd001
Adding NOP phi() at start of splash_run::toD0181
Adding NOP phi() at start of splash_run::@21
Adding NOP phi() at start of splash_run::@14
Adding NOP phi() at start of splash_run::@17
Adding NOP phi() at start of gameplay_run
Adding NOP phi() at start of gameplay_run::@14
Adding NOP phi() at start of gameplay_run::@15
Adding NOP phi() at start of gameplay_run::@16
Adding NOP phi() at start of gameplay_run::@18
Adding NOP phi() at start of done_run::@14
Adding NOP phi() at start of done_run::@17
Adding NOP phi() at start of choose_direction::@6
Adding NOP phi() at start of choose_direction::@14
Adding NOP phi() at start of merge_code
Adding NOP phi() at start of init_render_index
Adding NOP phi() at start of init_render_index::@10
Adding NOP phi() at start of splash_show
Adding NOP phi() at start of init_bobs_restore
Adding NOP phi() at start of init_sprite_pointers
Adding NOP phi() at start of memcpy
Adding NOP phi() at start of joyfire::@1
Adding NOP phi() at start of init_level_tile_directions
Adding NOP phi() at start of init_level_tile_directions::@9
Adding NOP phi() at start of level_show
FINAL CONTROL FLOW GRAPH
void __start()
__start: scope:[__start] from
[0] phi()
to:__start::__init1
__start::__init1: scope:[__start] from __start
[1] pacman_ch1_enabled = 0
[2] pacman_ch1_idx = 0
[3] logic_tile_ptr = (volatile char *) 0
[4] logic_tile_xcol = 0
[5] logic_tile_yfine = 0
[6] logic_tile_left_idx = 0
[7] logic_tile_right_idx = 0
[8] left_render_index_xcol = (char *) 0
[9] left_canvas = (char *) 0
[10] left_ypos_inc_offset = 0
[11] rigt_render_index_xcol = (char *) 0
[12] rigt_canvas = (char *) 0
[13] rigt_ypos_inc_offset = 0
[14] canvas_base_hi = 0
[15] bobs_restore_base = 0
[16] top_sprites_color = 0
[17] top_sprites_mc = 0
[18] side_sprites_color = 0
[19] side_sprites_mc = 0
[20] bottom_sprites_color = 0
[21] bottom_sprites_mc = 0
[22] pill_count = 0
[23] pacman_wins = 0
[24] pacman_lives = 3
[25] music_play_next = 0
[26] phase = 0
[27] frame = 0
[28] anim_frame_idx = 0
[29] pacman_xfine = $2d
[30] pacman_yfine = $23
[31] pacman_direction = STOP
[32] pacman_substep = 0
[33] ghosts_mode = 1
[34] ghosts_mode_count = 0
[35] ghost1_xfine = $2d
[36] ghost1_yfine = $23
[37] ghost1_direction = STOP
[38] ghost1_substep = 0
[39] ghost1_reverse = 0
[40] ghost1_respawn = 0
[41] ghost2_xfine = $2d
[42] ghost2_yfine = $23
[43] ghost2_direction = STOP
[44] ghost2_substep = 0
[45] ghost2_reverse = 0
[46] ghost2_respawn = 0
[47] ghost3_xfine = $2d
[48] ghost3_yfine = $23
[49] ghost3_direction = STOP
[50] ghost3_substep = 0
[51] ghost3_reverse = 0
[52] ghost3_respawn = 0
[53] ghost4_xfine = $2d
[54] ghost4_yfine = $23
[55] ghost4_direction = STOP
[56] ghost4_substep = 0
[57] ghost4_reverse = 0
[58] ghost4_respawn = 0
[59] game_logic_substep = 0
[60] game_playable = 0
to:__start::@1
__start::@1: scope:[__start] from __start::__init1
[61] phi()
[62] call main
to:__start::@return
__start::@return: scope:[__start] from __start::@1
[63] return
to:@return
__interrupt(hardware_clobber) void irq_screen_top()
irq_screen_top: scope:[irq_screen_top] from
kickasm( uses HARDWARE_IRQ uses RASTER uses IRQ_STATUS uses IRQ_RASTER uses VICII_CONTROL1 uses VICII_RSEL uses VICII_MEMORY) {{ // Stabilize the raster by using the double IRQ method
// Acknowledge the IRQ
lda #IRQ_RASTER
sta IRQ_STATUS
// Set-up IRQ for the next line
inc RASTER
// Point IRQ to almost stable code
lda #<stable
sta HARDWARE_IRQ
lda #>stable
sta HARDWARE_IRQ+1
tsx // Save stack pointer
cli // Reenable interrupts
// Wait for new IRQ using NOP's to ensure minimal jitter when it hits
.fill 15, NOP
.align $20
stable:
txs // Restore stack pointer
ldx #9 // Wait till the raster has almost crossed to the next line (48 cycles)
!: dex
bne !-
nop
lda RASTER
cmp RASTER
bne !+ // And correct the last cycle of potential jitter
!:
// Raster is now completely stable! (Line 0x007 cycle 7)
}}
asm { jsrRASTER_CODE }
[66] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y) = 7
[67] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y) = 7
[68] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y) = 7
[69] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y) = 7
[70] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y) = 7
[71] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y) = 7
[72] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y) = 7
[73] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y) = 7
to:irq_screen_top::toD0181
irq_screen_top::toD0181: scope:[irq_screen_top] from irq_screen_top
[74] phi()
to:irq_screen_top::@5
irq_screen_top::@5: scope:[irq_screen_top] from irq_screen_top::toD0181
[75] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = irq_screen_top::toD0181_return#0
[76] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc
[77] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR) = top_sprites_color
[78] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR) = top_sprites_color
[79] irq_screen_top::$1 = frame + 1
[80] irq_screen_top::$2 = irq_screen_top::$1 & 1
[81] frame = irq_screen_top::$2
[82] if(0!=frame) goto irq_screen_top::toDd001
to:irq_screen_top::toDd002
irq_screen_top::toDd002: scope:[irq_screen_top] from irq_screen_top::@5
[83] phi()
to:irq_screen_top::@7
irq_screen_top::@7: scope:[irq_screen_top] from irq_screen_top::toDd002
[84] *((char *)CIA2) = irq_screen_top::toDd002_return#0
[85] canvas_base_hi = byte1 SPRITES_2
[86] bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE
to:irq_screen_top::@1
irq_screen_top::@1: scope:[irq_screen_top] from irq_screen_top::@6 irq_screen_top::@7
[87] if(phase==0) goto irq_screen_top::@2
to:irq_screen_top::@4
irq_screen_top::@4: scope:[irq_screen_top] from irq_screen_top::@1
[88] phi()
[89] call game_logic
to:irq_screen_top::@8
irq_screen_top::@8: scope:[irq_screen_top] from irq_screen_top::@4
[90] phi()
[91] call pacman_sound_play
to:irq_screen_top::@3
irq_screen_top::@3: scope:[irq_screen_top] from irq_screen_top::@2 irq_screen_top::@8
[92] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) = IRQ_RASTER
[93] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE
[94] *HARDWARE_IRQ = &irq_screen_top
to:irq_screen_top::@return
irq_screen_top::@return: scope:[irq_screen_top] from irq_screen_top::@3
[95] return
to:@return
irq_screen_top::@2: scope:[irq_screen_top] from irq_screen_top::@1
[96] music_play_next = 1
to:irq_screen_top::@3
irq_screen_top::toDd001: scope:[irq_screen_top] from irq_screen_top::@5
[97] phi()
to:irq_screen_top::@6
irq_screen_top::@6: scope:[irq_screen_top] from irq_screen_top::toDd001
[98] *((char *)CIA2) = irq_screen_top::toDd001_return#0
[99] canvas_base_hi = byte1 SPRITES_1
[100] bobs_restore_base = 0
to:irq_screen_top::@1
void main()
main: scope:[main] from __start::@1
[101] phi()
[102] call splash_run
to:main::@1
main::@1: scope:[main] from main main::@2
[103] phi()
[104] call gameplay_run
to:main::@2
main::@2: scope:[main] from main::@1
[105] phi()
[106] call done_run
to:main::@1
void game_logic()
game_logic: scope:[game_logic] from irq_screen_top::@4
[107] if(game_playable!=0) goto game_logic::@1
to:game_logic::@return
game_logic::@return: scope:[game_logic] from game_logic game_logic::@103 game_logic::@104 game_logic::@105 game_logic::@106 game_logic::@112 game_logic::@113 game_logic::@115 game_logic::@120 game_logic::@121 game_logic::@122 game_logic::@123 game_logic::@129 game_logic::@130 game_logic::@132 game_logic::@137 game_logic::@138 game_logic::@139 game_logic::@145 game_logic::@146 game_logic::@150 game_logic::@151 game_logic::@153 game_logic::@155 game_logic::@157 game_logic::@159 game_logic::@161 game_logic::@165 game_logic::@44 game_logic::@54 game_logic::@55 game_logic::@56 game_logic::@57 game_logic::@66 game_logic::@68 game_logic::@69 game_logic::@70 game_logic::@71 game_logic::@72 game_logic::@78 game_logic::@79 game_logic::@81 game_logic::@86 game_logic::@87 game_logic::@88 game_logic::@89 game_logic::@95 game_logic::@96 game_logic::@98
[108] return
to:@return
game_logic::@1: scope:[game_logic] from game_logic
[109] game_logic::$2 = game_logic_substep + 1
[110] game_logic::$3 = game_logic::$2 & 7
[111] game_logic_substep = game_logic::$3
[112] if(game_logic_substep==0) goto game_logic::@2
to:game_logic::@8
game_logic::@8: scope:[game_logic] from game_logic::@1
[113] if(game_logic_substep==1) goto game_logic::@3
to:game_logic::@9
game_logic::@9: scope:[game_logic] from game_logic::@8
[114] if(game_logic_substep==2) goto game_logic::@4
to:game_logic::@10
game_logic::@10: scope:[game_logic] from game_logic::@9
[115] if(game_logic_substep==4) goto game_logic::@5
to:game_logic::@11
game_logic::@11: scope:[game_logic] from game_logic::@10
[116] if(game_logic_substep==5) goto game_logic::@6
to:game_logic::@12
game_logic::@12: scope:[game_logic] from game_logic::@11
[117] if(game_logic_substep==6) goto game_logic::@7
to:game_logic::@13
game_logic::@13: scope:[game_logic] from game_logic::@12
[118] if(game_logic_substep==3) goto game_logic::@14
to:game_logic::@161
game_logic::@161: scope:[game_logic] from game_logic::@13
[119] if(game_logic_substep==7) goto game_logic::@14
to:game_logic::@return
game_logic::@14: scope:[game_logic] from game_logic::@13 game_logic::@161
[120] game_logic::$14 = anim_frame_idx + 1
[121] game_logic::$15 = game_logic::$14 & 3
[122] anim_frame_idx = game_logic::$15
[123] game_logic::pacman_bob_xfine#0 = pacman_xfine - 1
[124] game_logic::$17 = game_logic::pacman_bob_xfine#0 >> 2
[125] *bobs_xcol = game_logic::$17
[126] game_logic::$18 = pacman_yfine - 1
[127] *bobs_yfine = game_logic::$18
[128] game_logic::$19 = pacman_direction | anim_frame_idx
[129] game_logic::$20 = game_logic::pacman_bob_xfine#0 & 3
[130] game_logic::$21 = pacman_frames[game_logic::$19] + game_logic::$20
[131] *bobs_bob_id = game_logic::$21
[132] game_logic::ghost_frame_idx#0 = anim_frame_idx
[133] if(ghosts_mode!=FRIGHTENED) goto game_logic::@44
to:game_logic::@15
game_logic::@15: scope:[game_logic] from game_logic::@14
[134] game_logic::ghost_frame_idx#1 = game_logic::ghost_frame_idx#0 | $40
to:game_logic::@44
game_logic::@44: scope:[game_logic] from game_logic::@14 game_logic::@15
[135] game_logic::ghost_frame_idx#2 = phi( game_logic::@14/game_logic::ghost_frame_idx#0, game_logic::@15/game_logic::ghost_frame_idx#1 )
[136] game_logic::ghost1_bob_xfine#0 = ghost1_xfine - 1
[137] game_logic::$25 = game_logic::ghost1_bob_xfine#0 >> 2
[138] *(bobs_xcol+1) = game_logic::$25
[139] game_logic::$26 = ghost1_yfine - 1
[140] *(bobs_yfine+1) = game_logic::$26
[141] game_logic::$27 = ghost1_direction | game_logic::ghost_frame_idx#2
[142] game_logic::$28 = game_logic::ghost1_bob_xfine#0 & 3
[143] game_logic::$29 = ghost_frames[game_logic::$27] + game_logic::$28
[144] *(bobs_bob_id+1) = game_logic::$29
[145] game_logic::ghost2_bob_xfine#0 = ghost2_xfine - 1
[146] game_logic::$31 = game_logic::ghost2_bob_xfine#0 >> 2
[147] *(bobs_xcol+2) = game_logic::$31
[148] game_logic::$32 = ghost2_yfine - 1
[149] *(bobs_yfine+2) = game_logic::$32
[150] game_logic::$33 = ghost2_direction | game_logic::ghost_frame_idx#2
[151] game_logic::$34 = game_logic::ghost2_bob_xfine#0 & 3
[152] game_logic::$35 = ghost_frames[game_logic::$33] + game_logic::$34
[153] *(bobs_bob_id+2) = game_logic::$35
[154] game_logic::ghost3_bob_xfine#0 = ghost3_xfine - 1
[155] game_logic::$37 = game_logic::ghost3_bob_xfine#0 >> 2
[156] *(bobs_xcol+3) = game_logic::$37
[157] game_logic::$38 = ghost3_yfine - 1
[158] *(bobs_yfine+3) = game_logic::$38
[159] game_logic::$39 = ghost3_direction | game_logic::ghost_frame_idx#2
[160] game_logic::$40 = game_logic::ghost3_bob_xfine#0 & 3
[161] game_logic::$41 = ghost_frames[game_logic::$39] + game_logic::$40
[162] *(bobs_bob_id+3) = game_logic::$41
[163] game_logic::ghost4_bob_xfine#0 = ghost4_xfine - 1
[164] game_logic::$43 = game_logic::ghost4_bob_xfine#0 >> 2
[165] *(bobs_xcol+4) = game_logic::$43
[166] game_logic::$44 = ghost4_yfine - 1
[167] *(bobs_yfine+4) = game_logic::$44
[168] game_logic::$45 = ghost4_direction | game_logic::ghost_frame_idx#2
[169] game_logic::$46 = game_logic::ghost4_bob_xfine#0 & 3
[170] game_logic::$47 = ghost_frames[game_logic::$45] + game_logic::$46
[171] *(bobs_bob_id+4) = game_logic::$47
to:game_logic::@return
game_logic::@7: scope:[game_logic] from game_logic::@12
[172] ghosts_mode_count = ++ ghosts_mode_count
[173] if(ghosts_mode==SCATTER) goto game_logic::@45
to:game_logic::@16
game_logic::@16: scope:[game_logic] from game_logic::@7
[174] if(ghosts_mode==CHASE) goto game_logic::@46
to:game_logic::@17
game_logic::@17: scope:[game_logic] from game_logic::@16
[175] if(ghosts_mode!=FRIGHTENED) goto game_logic::@47
to:game_logic::@18
game_logic::@18: scope:[game_logic] from game_logic::@17
[176] if(ghosts_mode_count<$32+1) goto game_logic::@47
to:game_logic::@19
game_logic::@19: scope:[game_logic] from game_logic::@18
[177] ghosts_mode = CHASE
[178] ghosts_mode_count = 0
to:game_logic::@47
game_logic::@47: scope:[game_logic] from game_logic::@17 game_logic::@18 game_logic::@19 game_logic::@45 game_logic::@46 game_logic::@58 game_logic::@59
[179] game_logic::do_reverse#4 = phi( game_logic::@17/0, game_logic::@18/0, game_logic::@19/1, game_logic::@45/0, game_logic::@46/0, game_logic::@58/1, game_logic::@59/1 )
[180] if(0==game_logic::do_reverse#4) goto game_logic::@48
to:game_logic::@60
game_logic::@60: scope:[game_logic] from game_logic::@47
[181] ghost1_reverse = 1
[182] ghost2_reverse = 1
[183] ghost3_reverse = 1
[184] ghost4_reverse = 1
to:game_logic::@48
game_logic::@48: scope:[game_logic] from game_logic::@47 game_logic::@60
[185] game_logic::pacman_xtile#0 = pacman_xfine >> 1
[186] game_logic::pacman_ytile#0 = pacman_yfine >> 1
[187] game_logic::$210 = game_logic::pacman_ytile#0 << 1
[188] game_logic::ytiles#0 = LEVEL_TILES + LEVEL_YTILE_OFFSET[game_logic::$210]
[189] game_logic::tile_id#0 = game_logic::ytiles#0[game_logic::pacman_xtile#0]
[190] if(TILES_TYPE[game_logic::tile_id#0]==PILL) goto game_logic::@49
to:game_logic::@61
game_logic::@61: scope:[game_logic] from game_logic::@48
[191] if(TILES_TYPE[game_logic::tile_id#0]!=POWERUP) goto game_logic::@50
to:game_logic::@62
game_logic::@62: scope:[game_logic] from game_logic::@61
[192] game_logic::ytiles#0[game_logic::pacman_xtile#0] = EMPTY
[193] game_logic::$65 = game_logic::pacman_xtile#0 >> 1
[194] logic_tile_xcol = game_logic::$65
[195] game_logic::$66 = game_logic::pacman_xtile#0 & $fe
[196] game_logic::$67 = game_logic::ytiles#0 + game_logic::$66
[197] logic_tile_ptr = game_logic::$67
[198] game_logic::$68 = game_logic::$210
[199] logic_tile_yfine = game_logic::$68
[200] ghosts_mode = FRIGHTENED
[201] ghosts_mode_count = 0
to:game_logic::@50
game_logic::@50: scope:[game_logic] from game_logic::@49 game_logic::@61 game_logic::@62 game_logic::@63
[202] game_logic::$75 = pacman_xfine - ghost1_xfine
[203] game_logic::$77 = pacman_yfine - ghost1_yfine
[204] if(ABS[game_logic::$75]>=2) goto game_logic::@64
to:game_logic::@162
game_logic::@162: scope:[game_logic] from game_logic::@50
[205] if(ABS[game_logic::$77]<2) goto game_logic::@51
to:game_logic::@64
game_logic::@64: scope:[game_logic] from game_logic::@162 game_logic::@50
[206] game_logic::$80 = pacman_xfine - ghost2_xfine
[207] game_logic::$82 = pacman_yfine - ghost2_yfine
[208] if(ABS[game_logic::$80]>=2) goto game_logic::@65
to:game_logic::@163
game_logic::@163: scope:[game_logic] from game_logic::@64
[209] if(ABS[game_logic::$82]<2) goto game_logic::@52
to:game_logic::@65
game_logic::@65: scope:[game_logic] from game_logic::@163 game_logic::@64
[210] game_logic::$85 = pacman_xfine - ghost3_xfine
[211] game_logic::$87 = pacman_yfine - ghost3_yfine
[212] if(ABS[game_logic::$85]>=2) goto game_logic::@66
to:game_logic::@164
game_logic::@164: scope:[game_logic] from game_logic::@65
[213] if(ABS[game_logic::$87]<2) goto game_logic::@53
to:game_logic::@66
game_logic::@66: scope:[game_logic] from game_logic::@164 game_logic::@65
[214] game_logic::$90 = pacman_xfine - ghost4_xfine
[215] game_logic::$92 = pacman_yfine - ghost4_yfine
[216] if(ABS[game_logic::$90]>=2) goto game_logic::@return
to:game_logic::@165
game_logic::@165: scope:[game_logic] from game_logic::@66
[217] if(ABS[game_logic::$92]<2) goto game_logic::@67
to:game_logic::@return
game_logic::@67: scope:[game_logic] from game_logic::@165
[218] if(ghosts_mode==FRIGHTENED) goto game_logic::@54
to:game_logic::@68
game_logic::@68: scope:[game_logic] from game_logic::@67
[219] pacman_lives = -- pacman_lives
[220] call spawn_all
to:game_logic::@return
game_logic::@54: scope:[game_logic] from game_logic::@67
[221] ghost4_direction = STOP
[222] ghost4_xfine = $32
[223] ghost4_yfine = $23
[224] ghost4_substep = 0
[225] ghost4_respawn = $32
to:game_logic::@return
game_logic::@53: scope:[game_logic] from game_logic::@164
[226] if(ghosts_mode==FRIGHTENED) goto game_logic::@55
to:game_logic::@69
game_logic::@69: scope:[game_logic] from game_logic::@53
[227] pacman_lives = -- pacman_lives
[228] call spawn_all
to:game_logic::@return
game_logic::@55: scope:[game_logic] from game_logic::@53
[229] ghost3_direction = STOP
[230] ghost3_xfine = $32
[231] ghost3_yfine = $23
[232] ghost3_substep = 0
[233] ghost3_respawn = $32
to:game_logic::@return
game_logic::@52: scope:[game_logic] from game_logic::@163
[234] if(ghosts_mode==FRIGHTENED) goto game_logic::@56
to:game_logic::@70
game_logic::@70: scope:[game_logic] from game_logic::@52
[235] pacman_lives = -- pacman_lives
[236] call spawn_all
to:game_logic::@return
game_logic::@56: scope:[game_logic] from game_logic::@52
[237] ghost2_direction = STOP
[238] ghost2_xfine = $32
[239] ghost2_yfine = $23
[240] ghost2_substep = 0
[241] ghost2_respawn = $32
to:game_logic::@return
game_logic::@51: scope:[game_logic] from game_logic::@162
[242] if(ghosts_mode==FRIGHTENED) goto game_logic::@57
to:game_logic::@71
game_logic::@71: scope:[game_logic] from game_logic::@51
[243] pacman_lives = -- pacman_lives
[244] call spawn_all
to:game_logic::@return
game_logic::@57: scope:[game_logic] from game_logic::@51
[245] ghost1_direction = STOP
[246] ghost1_xfine = $32
[247] ghost1_yfine = $23
[248] ghost1_substep = 0
[249] ghost1_respawn = $32
to:game_logic::@return
game_logic::@49: scope:[game_logic] from game_logic::@48
[250] game_logic::ytiles#0[game_logic::pacman_xtile#0] = EMPTY
[251] game_logic::$69 = game_logic::pacman_xtile#0 >> 1
[252] logic_tile_xcol = game_logic::$69
[253] game_logic::$70 = game_logic::pacman_xtile#0 & $fe
[254] game_logic::$71 = game_logic::ytiles#0 + game_logic::$70
[255] logic_tile_ptr = game_logic::$71
[256] game_logic::$72 = game_logic::$210
[257] logic_tile_yfine = game_logic::$72
[258] pill_count = -- pill_count
[259] if(pill_count!=0) goto game_logic::@50
to:game_logic::@63
game_logic::@63: scope:[game_logic] from game_logic::@49
[260] pacman_wins = 1
to:game_logic::@50
game_logic::@46: scope:[game_logic] from game_logic::@16
[261] if(ghosts_mode_count<$96+1) goto game_logic::@47
to:game_logic::@58
game_logic::@58: scope:[game_logic] from game_logic::@46
[262] ghosts_mode = SCATTER
[263] ghosts_mode_count = 0
to:game_logic::@47
game_logic::@45: scope:[game_logic] from game_logic::@7
[264] if(ghosts_mode_count<$32+1) goto game_logic::@47
to:game_logic::@59
game_logic::@59: scope:[game_logic] from game_logic::@45
[265] ghosts_mode = CHASE
[266] ghosts_mode_count = 0
to:game_logic::@47
game_logic::@6: scope:[game_logic] from game_logic::@11
[267] if(0!=ghost4_respawn) goto game_logic::@72
to:game_logic::@20
game_logic::@20: scope:[game_logic] from game_logic::@6
[268] if(ghost4_direction==RIGHT) goto game_logic::@73
to:game_logic::@21
game_logic::@21: scope:[game_logic] from game_logic::@20
[269] if(ghost4_direction==DOWN) goto game_logic::@74
to:game_logic::@22
game_logic::@22: scope:[game_logic] from game_logic::@21
[270] if(ghost4_direction==LEFT) goto game_logic::@75
to:game_logic::@23
game_logic::@23: scope:[game_logic] from game_logic::@22
[271] if(ghost4_direction!=UP) goto game_logic::@76
to:game_logic::@24
game_logic::@24: scope:[game_logic] from game_logic::@23
[272] ghost4_yfine = -- ghost4_yfine
to:game_logic::@76
game_logic::@76: scope:[game_logic] from game_logic::@23 game_logic::@24 game_logic::@73 game_logic::@74 game_logic::@75
[273] game_logic::$220 = ghost4_direction
[274] if(ghost4_substep!=0) goto game_logic::@82
to:game_logic::@166
game_logic::@166: scope:[game_logic] from game_logic::@76
[275] if(game_logic::$220!=STOP) goto game_logic::@77
to:game_logic::@82
game_logic::@82: scope:[game_logic] from game_logic::@166 game_logic::@76
[276] ghost4_substep = 0
[277] if(0!=ghost4_reverse) goto game_logic::@78
to:game_logic::@83
game_logic::@83: scope:[game_logic] from game_logic::@82
[278] game_logic::ghost4_xtile#0 = ghost4_xfine >> 1
[279] game_logic::ghost4_ytile#0 = ghost4_yfine >> 1
[280] level_tile_directions::xtile#0 = game_logic::ghost4_xtile#0
[281] level_tile_directions::ytile#0 = game_logic::ghost4_ytile#0
[282] call level_tile_directions
[283] level_tile_directions::return#3 = level_tile_directions::return#2
to:game_logic::@152
game_logic::@152: scope:[game_logic] from game_logic::@83
[284] game_logic::open_directions#0 = level_tile_directions::return#3
[285] game_logic::open_directions#1 = game_logic::open_directions#0 & DIRECTION_ELIMINATE[ghost4_direction]
[286] if(ghosts_mode==FRIGHTENED) goto game_logic::@79
to:game_logic::@84
game_logic::@84: scope:[game_logic] from game_logic::@152
[287] if(ghosts_mode==SCATTER) goto game_logic::@80
to:game_logic::@85
game_logic::@85: scope:[game_logic] from game_logic::@84
[288] game_logic::target_xtile#2 = pacman_xfine >> 1
[289] game_logic::target_ytile#2 = pacman_yfine >> 1
to:game_logic::@80
game_logic::@80: scope:[game_logic] from game_logic::@84 game_logic::@85
[290] game_logic::target_ytile#3 = phi( game_logic::@84/2, game_logic::@85/game_logic::target_ytile#2 )
[290] game_logic::target_xtile#3 = phi( game_logic::@84/2, game_logic::@85/game_logic::target_xtile#2 )
[291] choose_direction::open_directions#0 = game_logic::open_directions#1
[292] choose_direction::ghost_xtile#0 = game_logic::ghost4_xtile#0
[293] choose_direction::ghost_ytile#0 = game_logic::ghost4_ytile#0
[294] choose_direction::target_xtile#0 = game_logic::target_xtile#3
[295] choose_direction::target_ytile#0 = game_logic::target_ytile#3
[296] call choose_direction
[297] choose_direction::return#0 = choose_direction::return#10
to:game_logic::@153
game_logic::@153: scope:[game_logic] from game_logic::@80
[298] game_logic::$119 = choose_direction::return#0
[299] ghost4_direction = game_logic::$119
to:game_logic::@return
game_logic::@79: scope:[game_logic] from game_logic::@152
[300] ghost4_direction = DIRECTION_SINGLE[game_logic::open_directions#1]
to:game_logic::@return
game_logic::@78: scope:[game_logic] from game_logic::@82
[301] ghost4_direction = DIRECTION_REVERSE[ghost4_direction]
[302] ghost4_reverse = 0
to:game_logic::@return
game_logic::@77: scope:[game_logic] from game_logic::@166
[303] ghost4_substep = 1
[304] if(ghost4_xfine==1) goto game_logic::@81
to:game_logic::@86
game_logic::@86: scope:[game_logic] from game_logic::@77
[305] if(ghost4_xfine!=$61) goto game_logic::@return
to:game_logic::@87
game_logic::@87: scope:[game_logic] from game_logic::@86
[306] ghost4_xfine = 1
to:game_logic::@return
game_logic::@81: scope:[game_logic] from game_logic::@77
[307] ghost4_xfine = $61
to:game_logic::@return
game_logic::@75: scope:[game_logic] from game_logic::@22
[308] ghost4_xfine = -- ghost4_xfine
to:game_logic::@76
game_logic::@74: scope:[game_logic] from game_logic::@21
[309] ghost4_yfine = ++ ghost4_yfine
to:game_logic::@76
game_logic::@73: scope:[game_logic] from game_logic::@20
[310] ghost4_xfine = ++ ghost4_xfine
to:game_logic::@76
game_logic::@72: scope:[game_logic] from game_logic::@6
[311] ghost4_respawn = -- ghost4_respawn
[312] if(ghost4_respawn!=0) goto game_logic::@return
to:game_logic::@88
game_logic::@88: scope:[game_logic] from game_logic::@72
[313] ghost4_direction = RIGHT
[314] ghost4_xfine = 2
[315] ghost4_yfine = 2
[316] ghost4_substep = 0
to:game_logic::@return
game_logic::@5: scope:[game_logic] from game_logic::@10
[317] if(0!=ghost3_respawn) goto game_logic::@89
to:game_logic::@25
game_logic::@25: scope:[game_logic] from game_logic::@5
[318] if(ghost3_direction==RIGHT) goto game_logic::@90
to:game_logic::@26
game_logic::@26: scope:[game_logic] from game_logic::@25
[319] if(ghost3_direction==DOWN) goto game_logic::@91
to:game_logic::@27
game_logic::@27: scope:[game_logic] from game_logic::@26
[320] if(ghost3_direction==LEFT) goto game_logic::@92
to:game_logic::@28
game_logic::@28: scope:[game_logic] from game_logic::@27
[321] if(ghost3_direction!=UP) goto game_logic::@93
to:game_logic::@29
game_logic::@29: scope:[game_logic] from game_logic::@28
[322] ghost3_yfine = -- ghost3_yfine
to:game_logic::@93
game_logic::@93: scope:[game_logic] from game_logic::@28 game_logic::@29 game_logic::@90 game_logic::@91 game_logic::@92
[323] game_logic::$223 = ghost3_direction
[324] if(ghost3_substep!=0) goto game_logic::@99
to:game_logic::@167
game_logic::@167: scope:[game_logic] from game_logic::@93
[325] if(game_logic::$223!=STOP) goto game_logic::@94
to:game_logic::@99
game_logic::@99: scope:[game_logic] from game_logic::@167 game_logic::@93
[326] ghost3_substep = 0
[327] if(0!=ghost3_reverse) goto game_logic::@95
to:game_logic::@100
game_logic::@100: scope:[game_logic] from game_logic::@99
[328] game_logic::ghost3_xtile#0 = ghost3_xfine >> 1
[329] game_logic::ghost3_ytile#0 = ghost3_yfine >> 1
[330] level_tile_directions::xtile#1 = game_logic::ghost3_xtile#0
[331] level_tile_directions::ytile#1 = game_logic::ghost3_ytile#0
[332] call level_tile_directions
[333] level_tile_directions::return#10 = level_tile_directions::return#2
to:game_logic::@154
game_logic::@154: scope:[game_logic] from game_logic::@100
[334] game_logic::open_directions1#0 = level_tile_directions::return#10
[335] game_logic::open_directions1#1 = game_logic::open_directions1#0 & DIRECTION_ELIMINATE[ghost3_direction]
[336] if(ghosts_mode==FRIGHTENED) goto game_logic::@96
to:game_logic::@101
game_logic::@101: scope:[game_logic] from game_logic::@154
[337] if(ghosts_mode==SCATTER) goto game_logic::@97
to:game_logic::@102
game_logic::@102: scope:[game_logic] from game_logic::@101
[338] game_logic::target_xtile1#2 = pacman_xfine >> 1
[339] game_logic::target_ytile1#2 = pacman_yfine >> 1
to:game_logic::@97
game_logic::@97: scope:[game_logic] from game_logic::@101 game_logic::@102
[340] game_logic::target_ytile1#3 = phi( game_logic::@102/game_logic::target_ytile1#2, game_logic::@101/2 )
[340] game_logic::target_xtile1#3 = phi( game_logic::@102/game_logic::target_xtile1#2, game_logic::@101/2 )
[341] choose_direction::open_directions#1 = game_logic::open_directions1#1
[342] choose_direction::ghost_xtile#1 = game_logic::ghost3_xtile#0
[343] choose_direction::ghost_ytile#1 = game_logic::ghost3_ytile#0
[344] choose_direction::target_xtile#1 = game_logic::target_xtile1#3
[345] choose_direction::target_ytile#1 = game_logic::target_ytile1#3
[346] call choose_direction
[347] choose_direction::return#1 = choose_direction::return#10
to:game_logic::@155
game_logic::@155: scope:[game_logic] from game_logic::@97
[348] game_logic::$140 = choose_direction::return#1
[349] ghost3_direction = game_logic::$140
to:game_logic::@return
game_logic::@96: scope:[game_logic] from game_logic::@154
[350] ghost3_direction = DIRECTION_SINGLE[game_logic::open_directions1#1]
to:game_logic::@return
game_logic::@95: scope:[game_logic] from game_logic::@99
[351] ghost3_direction = DIRECTION_REVERSE[ghost3_direction]
[352] ghost3_reverse = 0
to:game_logic::@return
game_logic::@94: scope:[game_logic] from game_logic::@167
[353] ghost3_substep = 1
[354] if(ghost3_xfine==1) goto game_logic::@98
to:game_logic::@103
game_logic::@103: scope:[game_logic] from game_logic::@94
[355] if(ghost3_xfine!=$61) goto game_logic::@return
to:game_logic::@104
game_logic::@104: scope:[game_logic] from game_logic::@103
[356] ghost3_xfine = 1
to:game_logic::@return
game_logic::@98: scope:[game_logic] from game_logic::@94
[357] ghost3_xfine = $61
to:game_logic::@return
game_logic::@92: scope:[game_logic] from game_logic::@27
[358] ghost3_xfine = -- ghost3_xfine
to:game_logic::@93
game_logic::@91: scope:[game_logic] from game_logic::@26
[359] ghost3_yfine = ++ ghost3_yfine
to:game_logic::@93
game_logic::@90: scope:[game_logic] from game_logic::@25
[360] ghost3_xfine = ++ ghost3_xfine
to:game_logic::@93
game_logic::@89: scope:[game_logic] from game_logic::@5
[361] ghost3_respawn = -- ghost3_respawn
[362] if(ghost3_respawn!=0) goto game_logic::@return
to:game_logic::@105
game_logic::@105: scope:[game_logic] from game_logic::@89
[363] ghost3_direction = UP
[364] ghost3_xfine = 2
[365] ghost3_yfine = $46
[366] ghost3_substep = 0
to:game_logic::@return
game_logic::@4: scope:[game_logic] from game_logic::@9
[367] if(0!=ghost2_respawn) goto game_logic::@106
to:game_logic::@30
game_logic::@30: scope:[game_logic] from game_logic::@4
[368] if(ghost2_direction==RIGHT) goto game_logic::@107
to:game_logic::@31
game_logic::@31: scope:[game_logic] from game_logic::@30
[369] if(ghost2_direction==DOWN) goto game_logic::@108
to:game_logic::@32
game_logic::@32: scope:[game_logic] from game_logic::@31
[370] if(ghost2_direction==LEFT) goto game_logic::@109
to:game_logic::@33
game_logic::@33: scope:[game_logic] from game_logic::@32
[371] if(ghost2_direction!=UP) goto game_logic::@110
to:game_logic::@34
game_logic::@34: scope:[game_logic] from game_logic::@33
[372] ghost2_yfine = -- ghost2_yfine
to:game_logic::@110
game_logic::@110: scope:[game_logic] from game_logic::@107 game_logic::@108 game_logic::@109 game_logic::@33 game_logic::@34
[373] game_logic::$226 = ghost2_direction
[374] if(ghost2_substep!=0) goto game_logic::@116
to:game_logic::@168
game_logic::@168: scope:[game_logic] from game_logic::@110
[375] if(game_logic::$226!=STOP) goto game_logic::@111
to:game_logic::@116
game_logic::@116: scope:[game_logic] from game_logic::@110 game_logic::@168
[376] ghost2_substep = 0
[377] if(0!=ghost2_reverse) goto game_logic::@112
to:game_logic::@117
game_logic::@117: scope:[game_logic] from game_logic::@116
[378] game_logic::ghost2_xtile#0 = ghost2_xfine >> 1
[379] game_logic::ghost2_ytile#0 = ghost2_yfine >> 1
[380] level_tile_directions::xtile#2 = game_logic::ghost2_xtile#0
[381] level_tile_directions::ytile#2 = game_logic::ghost2_ytile#0
[382] call level_tile_directions
[383] level_tile_directions::return#11 = level_tile_directions::return#2
to:game_logic::@156
game_logic::@156: scope:[game_logic] from game_logic::@117
[384] game_logic::open_directions2#0 = level_tile_directions::return#11
[385] game_logic::open_directions2#1 = game_logic::open_directions2#0 & DIRECTION_ELIMINATE[ghost2_direction]
[386] if(ghosts_mode==FRIGHTENED) goto game_logic::@113
to:game_logic::@118
game_logic::@118: scope:[game_logic] from game_logic::@156
[387] if(ghosts_mode==SCATTER) goto game_logic::@114
to:game_logic::@119
game_logic::@119: scope:[game_logic] from game_logic::@118
[388] game_logic::target_xtile2#2 = pacman_xfine >> 1
[389] game_logic::target_ytile2#2 = pacman_yfine >> 1
to:game_logic::@114
game_logic::@114: scope:[game_logic] from game_logic::@118 game_logic::@119
[390] game_logic::target_ytile2#3 = phi( game_logic::@118/2, game_logic::@119/game_logic::target_ytile2#2 )
[390] game_logic::target_xtile2#3 = phi( game_logic::@118/2, game_logic::@119/game_logic::target_xtile2#2 )
[391] choose_direction::open_directions#2 = game_logic::open_directions2#1
[392] choose_direction::ghost_xtile#2 = game_logic::ghost2_xtile#0
[393] choose_direction::ghost_ytile#2 = game_logic::ghost2_ytile#0
[394] choose_direction::target_xtile#2 = game_logic::target_xtile2#3
[395] choose_direction::target_ytile#2 = game_logic::target_ytile2#3
[396] call choose_direction
[397] choose_direction::return#2 = choose_direction::return#10
to:game_logic::@157
game_logic::@157: scope:[game_logic] from game_logic::@114
[398] game_logic::$161 = choose_direction::return#2
[399] ghost2_direction = game_logic::$161
to:game_logic::@return
game_logic::@113: scope:[game_logic] from game_logic::@156
[400] ghost2_direction = DIRECTION_SINGLE[game_logic::open_directions2#1]
to:game_logic::@return
game_logic::@112: scope:[game_logic] from game_logic::@116
[401] ghost2_direction = DIRECTION_REVERSE[ghost2_direction]
[402] ghost2_reverse = 0
to:game_logic::@return
game_logic::@111: scope:[game_logic] from game_logic::@168
[403] ghost2_substep = 1
[404] if(ghost2_xfine==1) goto game_logic::@115
to:game_logic::@120
game_logic::@120: scope:[game_logic] from game_logic::@111
[405] if(ghost2_xfine!=$61) goto game_logic::@return
to:game_logic::@121
game_logic::@121: scope:[game_logic] from game_logic::@120
[406] ghost2_xfine = 1
to:game_logic::@return
game_logic::@115: scope:[game_logic] from game_logic::@111
[407] ghost2_xfine = $61
to:game_logic::@return
game_logic::@109: scope:[game_logic] from game_logic::@32
[408] ghost2_xfine = -- ghost2_xfine
to:game_logic::@110
game_logic::@108: scope:[game_logic] from game_logic::@31
[409] ghost2_yfine = ++ ghost2_yfine
to:game_logic::@110
game_logic::@107: scope:[game_logic] from game_logic::@30
[410] ghost2_xfine = ++ ghost2_xfine
to:game_logic::@110
game_logic::@106: scope:[game_logic] from game_logic::@4
[411] ghost2_respawn = -- ghost2_respawn
[412] if(ghost2_respawn!=0) goto game_logic::@return
to:game_logic::@122
game_logic::@122: scope:[game_logic] from game_logic::@106
[413] ghost2_direction = LEFT
[414] ghost2_xfine = $60
[415] ghost2_yfine = $46
[416] ghost2_substep = 0
to:game_logic::@return
game_logic::@3: scope:[game_logic] from game_logic::@8
[417] if(0!=ghost1_respawn) goto game_logic::@123
to:game_logic::@35
game_logic::@35: scope:[game_logic] from game_logic::@3
[418] if(ghost1_direction==RIGHT) goto game_logic::@124
to:game_logic::@36
game_logic::@36: scope:[game_logic] from game_logic::@35
[419] if(ghost1_direction==DOWN) goto game_logic::@125
to:game_logic::@37
game_logic::@37: scope:[game_logic] from game_logic::@36
[420] if(ghost1_direction==LEFT) goto game_logic::@126
to:game_logic::@38
game_logic::@38: scope:[game_logic] from game_logic::@37
[421] if(ghost1_direction!=UP) goto game_logic::@127
to:game_logic::@39
game_logic::@39: scope:[game_logic] from game_logic::@38
[422] ghost1_yfine = -- ghost1_yfine
to:game_logic::@127
game_logic::@127: scope:[game_logic] from game_logic::@124 game_logic::@125 game_logic::@126 game_logic::@38 game_logic::@39
[423] game_logic::$229 = ghost1_direction
[424] if(ghost1_substep!=0) goto game_logic::@133
to:game_logic::@169
game_logic::@169: scope:[game_logic] from game_logic::@127
[425] if(game_logic::$229!=STOP) goto game_logic::@128
to:game_logic::@133
game_logic::@133: scope:[game_logic] from game_logic::@127 game_logic::@169
[426] ghost1_substep = 0
[427] if(0!=ghost1_reverse) goto game_logic::@129
to:game_logic::@134
game_logic::@134: scope:[game_logic] from game_logic::@133
[428] game_logic::ghost1_xtile#0 = ghost1_xfine >> 1
[429] game_logic::ghost1_ytile#0 = ghost1_yfine >> 1
[430] level_tile_directions::xtile#3 = game_logic::ghost1_xtile#0
[431] level_tile_directions::ytile#3 = game_logic::ghost1_ytile#0
[432] call level_tile_directions
[433] level_tile_directions::return#12 = level_tile_directions::return#2
to:game_logic::@158
game_logic::@158: scope:[game_logic] from game_logic::@134
[434] game_logic::open_directions3#0 = level_tile_directions::return#12
[435] game_logic::open_directions3#1 = game_logic::open_directions3#0 & DIRECTION_ELIMINATE[ghost1_direction]
[436] if(ghosts_mode==FRIGHTENED) goto game_logic::@130
to:game_logic::@135
game_logic::@135: scope:[game_logic] from game_logic::@158
[437] if(ghosts_mode==SCATTER) goto game_logic::@131
to:game_logic::@136
game_logic::@136: scope:[game_logic] from game_logic::@135
[438] game_logic::target_xtile3#2 = pacman_xfine >> 1
[439] game_logic::target_ytile3#2 = pacman_yfine >> 1
to:game_logic::@131
game_logic::@131: scope:[game_logic] from game_logic::@135 game_logic::@136
[440] game_logic::target_ytile3#3 = phi( game_logic::@135/2, game_logic::@136/game_logic::target_ytile3#2 )
[440] game_logic::target_xtile3#3 = phi( game_logic::@135/2, game_logic::@136/game_logic::target_xtile3#2 )
[441] choose_direction::open_directions#3 = game_logic::open_directions3#1
[442] choose_direction::ghost_xtile#3 = game_logic::ghost1_xtile#0
[443] choose_direction::ghost_ytile#3 = game_logic::ghost1_ytile#0
[444] choose_direction::target_xtile#3 = game_logic::target_xtile3#3
[445] choose_direction::target_ytile#3 = game_logic::target_ytile3#3
[446] call choose_direction
[447] choose_direction::return#3 = choose_direction::return#10
to:game_logic::@159
game_logic::@159: scope:[game_logic] from game_logic::@131
[448] game_logic::$182 = choose_direction::return#3
[449] ghost1_direction = game_logic::$182
to:game_logic::@return
game_logic::@130: scope:[game_logic] from game_logic::@158
[450] ghost1_direction = DIRECTION_SINGLE[game_logic::open_directions3#1]
to:game_logic::@return
game_logic::@129: scope:[game_logic] from game_logic::@133
[451] ghost1_direction = DIRECTION_REVERSE[ghost1_direction]
[452] ghost1_reverse = 0
to:game_logic::@return
game_logic::@128: scope:[game_logic] from game_logic::@169
[453] ghost1_substep = 1
[454] if(ghost1_xfine==1) goto game_logic::@132
to:game_logic::@137
game_logic::@137: scope:[game_logic] from game_logic::@128
[455] if(ghost1_xfine!=$61) goto game_logic::@return
to:game_logic::@138
game_logic::@138: scope:[game_logic] from game_logic::@137
[456] ghost1_xfine = 1
to:game_logic::@return
game_logic::@132: scope:[game_logic] from game_logic::@128
[457] ghost1_xfine = $61
to:game_logic::@return
game_logic::@126: scope:[game_logic] from game_logic::@37
[458] ghost1_xfine = -- ghost1_xfine
to:game_logic::@127
game_logic::@125: scope:[game_logic] from game_logic::@36
[459] ghost1_yfine = ++ ghost1_yfine
to:game_logic::@127
game_logic::@124: scope:[game_logic] from game_logic::@35
[460] ghost1_xfine = ++ ghost1_xfine
to:game_logic::@127
game_logic::@123: scope:[game_logic] from game_logic::@3
[461] ghost1_respawn = -- ghost1_respawn
[462] if(ghost1_respawn!=0) goto game_logic::@return
to:game_logic::@139
game_logic::@139: scope:[game_logic] from game_logic::@123
[463] ghost1_direction = DOWN
[464] ghost1_xfine = $60
[465] ghost1_yfine = 2
[466] ghost1_substep = 0
to:game_logic::@return
game_logic::@2: scope:[game_logic] from game_logic::@1
[467] if(pacman_direction==RIGHT) goto game_logic::@140
to:game_logic::@40
game_logic::@40: scope:[game_logic] from game_logic::@2
[468] if(pacman_direction==DOWN) goto game_logic::@141
to:game_logic::@41
game_logic::@41: scope:[game_logic] from game_logic::@40
[469] if(pacman_direction==LEFT) goto game_logic::@142
to:game_logic::@42
game_logic::@42: scope:[game_logic] from game_logic::@41
[470] if(pacman_direction!=UP) goto game_logic::@143
to:game_logic::@43
game_logic::@43: scope:[game_logic] from game_logic::@42
[471] pacman_yfine = -- pacman_yfine
to:game_logic::@143
game_logic::@143: scope:[game_logic] from game_logic::@140 game_logic::@141 game_logic::@142 game_logic::@42 game_logic::@43
[472] game_logic::$232 = pacman_direction
[473] if(pacman_substep!=0) goto game_logic::@147
to:game_logic::@170
game_logic::@170: scope:[game_logic] from game_logic::@143
[474] if(game_logic::$232!=STOP) goto game_logic::@144
to:game_logic::@147
game_logic::@147: scope:[game_logic] from game_logic::@143 game_logic::@170
[475] pacman_substep = 0
[476] game_logic::pacman_xtile1#0 = pacman_xfine >> 1
[477] game_logic::pacman_ytile1#0 = pacman_yfine >> 1
[478] level_tile_directions::xtile#4 = game_logic::pacman_xtile1#0
[479] level_tile_directions::ytile#4 = game_logic::pacman_ytile1#0
[480] call level_tile_directions
[481] level_tile_directions::return#13 = level_tile_directions::return#2
to:game_logic::@160
game_logic::@160: scope:[game_logic] from game_logic::@147
[482] game_logic::open_directions4#0 = level_tile_directions::return#13
[483] game_logic::$199 = *((char *)CIA1) & $f
[484] game_logic::$200 = game_logic::$199 ^ $f
[485] game_logic::joy_directions#0 = game_logic::$200 << 2
[486] if(game_logic::joy_directions#0==0) goto game_logic::@145
to:game_logic::@148
game_logic::@148: scope:[game_logic] from game_logic::@160
[487] game_logic::$204 = game_logic::joy_directions#0 & game_logic::open_directions4#0
[488] game_logic::new_direction#0 = DIRECTION_SINGLE[game_logic::$204]
[489] if(game_logic::new_direction#0==0) goto game_logic::@145
to:game_logic::@149
game_logic::@149: scope:[game_logic] from game_logic::@148
[490] pacman_direction = game_logic::new_direction#0
to:game_logic::@145
game_logic::@145: scope:[game_logic] from game_logic::@148 game_logic::@149 game_logic::@160
[491] pacman_direction = pacman_direction & game_logic::open_directions4#0
to:game_logic::@return
game_logic::@144: scope:[game_logic] from game_logic::@170
[492] pacman_substep = 1
[493] pacman_ch1_enabled = 1
[494] if(pacman_xfine==1) goto game_logic::@146
to:game_logic::@150
game_logic::@150: scope:[game_logic] from game_logic::@144
[495] if(pacman_xfine!=$61) goto game_logic::@return
to:game_logic::@151
game_logic::@151: scope:[game_logic] from game_logic::@150
[496] pacman_xfine = 1
to:game_logic::@return
game_logic::@146: scope:[game_logic] from game_logic::@144
[497] pacman_xfine = $61
to:game_logic::@return
game_logic::@142: scope:[game_logic] from game_logic::@41
[498] pacman_xfine = -- pacman_xfine
to:game_logic::@143
game_logic::@141: scope:[game_logic] from game_logic::@40
[499] pacman_yfine = ++ pacman_yfine
to:game_logic::@143
game_logic::@140: scope:[game_logic] from game_logic::@2
[500] pacman_xfine = ++ pacman_xfine
to:game_logic::@143
void pacman_sound_play()
pacman_sound_play: scope:[pacman_sound_play] from irq_screen_top::@8
[501] if(0==pacman_ch1_enabled) goto pacman_sound_play::@return
to:pacman_sound_play::@1
pacman_sound_play::@1: scope:[pacman_sound_play] from pacman_sound_play
[502] *SID_CH1_FREQ_HI = PACMAN_CH1_FREQ_HI[pacman_ch1_idx]
[503] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = PACMAN_CH1_CONTROL[pacman_ch1_idx]
[504] pacman_ch1_idx = ++ pacman_ch1_idx
[505] if(pacman_ch1_idx!=$16*SIZEOF_CHAR) goto pacman_sound_play::@return
to:pacman_sound_play::@2
pacman_sound_play::@2: scope:[pacman_sound_play] from pacman_sound_play::@1
[506] pacman_ch1_idx = 0
[507] pacman_ch1_enabled = 0
to:pacman_sound_play::@return
pacman_sound_play::@return: scope:[pacman_sound_play] from pacman_sound_play pacman_sound_play::@1 pacman_sound_play::@2
[508] return
to:@return
void splash_run()
splash_run: scope:[splash_run] from main
[509] phi()
to:splash_run::SEI1
splash_run::SEI1: scope:[splash_run] from splash_run
asm { sei }
to:splash_run::@18
splash_run::@18: scope:[splash_run] from splash_run::SEI1
[511] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[512] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[513] *PROCPORT = PROCPORT_RAM_ALL
[514] call memset
to:splash_run::@22
splash_run::@22: scope:[splash_run] from splash_run::@18
[515] byteboozer_decrunch::crunched = RASTER_CODE_CRUNCHED
[516] call byteboozer_decrunch
to:splash_run::@23
splash_run::@23: scope:[splash_run] from splash_run::@22
[517] byteboozer_decrunch::crunched = LOGIC_CODE_CRUNCHED
[518] call byteboozer_decrunch
to:splash_run::@24
splash_run::@24: scope:[splash_run] from splash_run::@23
[519] phi()
[520] call merge_code
to:splash_run::@25
splash_run::@25: scope:[splash_run] from splash_run::@24
[521] phi()
[522] call memset
to:splash_run::@26
splash_run::@26: scope:[splash_run] from splash_run::@25
[523] phi()
[524] call memset
to:splash_run::@27
splash_run::@27: scope:[splash_run] from splash_run::@26
[525] phi()
[526] call init_render_index
to:splash_run::@28
splash_run::@28: scope:[splash_run] from splash_run::@27
[527] byteboozer_decrunch::crunched = SPLASH_CRUNCHED
[528] call byteboozer_decrunch
to:splash_run::@29
splash_run::@29: scope:[splash_run] from splash_run::@28
[529] phi()
[530] call splash_show
to:splash_run::@30
splash_run::@30: scope:[splash_run] from splash_run::@29
[531] phi()
[532] call memset
to:splash_run::@31
splash_run::@31: scope:[splash_run] from splash_run::@30
[533] phi()
[534] call init_bobs_restore
to:splash_run::@32
splash_run::@32: scope:[splash_run] from splash_run::@31
[535] byteboozer_decrunch::crunched = BOB_GRAPHICS_CRUNCHED
[536] call byteboozer_decrunch
to:splash_run::@33
splash_run::@33: scope:[splash_run] from splash_run::@32
[537] phi()
[538] call init_sprite_pointers
to:splash_run::@34
splash_run::@34: scope:[splash_run] from splash_run::@33
[539] phi()
[540] call memcpy
to:splash_run::@35
splash_run::@35: scope:[splash_run] from splash_run::@34
[541] byteboozer_decrunch::crunched = INTRO_MUSIC_CRUNCHED_UPPER
[542] call byteboozer_decrunch
to:splash_run::@36
splash_run::@36: scope:[splash_run] from splash_run::@35
[543] phi()
[544] call memset
to:splash_run::@37
splash_run::@37: scope:[splash_run] from splash_run::@36
[545] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[546] *PROCPORT = PROCPORT_RAM_IO
to:splash_run::@2
splash_run::@2: scope:[splash_run] from splash_run::@37 splash_run::@4
[547] splash_run::msb#10 = phi( splash_run::@37/0, splash_run::@4/splash_run::msb#8 )
[547] splash_run::i#2 = phi( splash_run::@37/0, splash_run::@4/splash_run::i#1 )
[548] if(splash_run::i#2<8) goto splash_run::@3
to:splash_run::toDd001
splash_run::toDd001: scope:[splash_run] from splash_run::@2
[549] phi()
to:splash_run::@19
splash_run::@19: scope:[splash_run] from splash_run::toDd001
[550] *((char *)CIA2) = splash_run::toDd001_return#0
[551] canvas_base_hi = byte1 SPRITES_2
[552] bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE
to:splash_run::toD0181
splash_run::toD0181: scope:[splash_run] from splash_run::@19
[553] phi()
to:splash_run::@20
splash_run::@20: scope:[splash_run] from splash_run::toD0181
[554] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = splash_run::toD0181_return#0
[555] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB) = splash_run::msb#10
[556] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $ff
[557] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $ff
[558] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = BLACK
[559] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = BLACK
[560] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLUE
[561] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = RED
[562] top_sprites_mc = 3
[563] side_sprites_mc = 0
[564] bottom_sprites_mc = 3
[565] top_sprites_color = YELLOW
[566] side_sprites_color = BLUE
[567] bottom_sprites_color = YELLOW
[568] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc
to:splash_run::@6
splash_run::@6: scope:[splash_run] from splash_run::@20 splash_run::@7
[569] splash_run::i1#2 = phi( splash_run::@20/0, splash_run::@7/splash_run::i1#1 )
[570] if(splash_run::i1#2<8) goto splash_run::@7
to:splash_run::@8
splash_run::@8: scope:[splash_run] from splash_run::@6
[571] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = 8
to:splash_run::@9
splash_run::@9: scope:[splash_run] from splash_run::@10 splash_run::@8
[572] splash_run::i2#2 = phi( splash_run::@10/splash_run::i2#1, splash_run::@8/0 )
[573] if(splash_run::i2#2<4) goto splash_run::@10
to:splash_run::@11
splash_run::@11: scope:[splash_run] from splash_run::@9
asm { lda#1 staINTRO_MUSIC+$69 }
asm { lda#0 }
[576] callexecute *musicInit
to:splash_run::@1
splash_run::@1: scope:[splash_run] from splash_run::@11
[577] phase = 0
[578] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM
to:splash_run::@12
splash_run::@12: scope:[splash_run] from splash_run::@1 splash_run::@12
[579] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fa) goto splash_run::@12
to:splash_run::@13
splash_run::@13: scope:[splash_run] from splash_run::@12
[580] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & ~VICII_RST8|VICII_RSEL|VICII_DEN
[581] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE
[582] *HARDWARE_IRQ = &irq_screen_top
[583] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
asm { ldaCIA1_INTERRUPT }
[585] *IRQ_STATUS = $f
to:splash_run::CLI1
splash_run::CLI1: scope:[splash_run] from splash_run::@13
asm { cli }
to:splash_run::@21
splash_run::@21: scope:[splash_run] from splash_run::CLI1
[587] phi()
[588] call joyinit
to:splash_run::@38
splash_run::@38: scope:[splash_run] from splash_run::@21
[589] music_play_next = 0
to:splash_run::@14
splash_run::@14: scope:[splash_run] from splash_run::@15 splash_run::@16 splash_run::@38
[590] phi()
[591] call joyfire
[592] joyfire::return#1 = joyfire::return#4
to:splash_run::@39
splash_run::@39: scope:[splash_run] from splash_run::@14
[593] splash_run::$30 = joyfire::return#1
[594] if(0==splash_run::$30) goto splash_run::@15
to:splash_run::@return
splash_run::@return: scope:[splash_run] from splash_run::@39
[595] return
to:@return
splash_run::@15: scope:[splash_run] from splash_run::@39
[596] if(0==music_play_next) goto splash_run::@14
to:splash_run::@17
splash_run::@17: scope:[splash_run] from splash_run::@15
[597] phi()
[598] callexecute *musicPlay
to:splash_run::@16
splash_run::@16: scope:[splash_run] from splash_run::@17
[599] music_play_next = 0
to:splash_run::@14
splash_run::@10: scope:[splash_run] from splash_run::@9
[600] bobs_xcol[splash_run::i2#2] = $a
[601] bobs_yfine[splash_run::i2#2] = $2d
[602] bobs_bob_id[splash_run::i2#2] = 0
[603] splash_run::i2#1 = ++ splash_run::i2#2
to:splash_run::@9
splash_run::@7: scope:[splash_run] from splash_run::@6
[604] SPRITES_COLOR[splash_run::i1#2] = top_sprites_color
[605] splash_run::i1#1 = ++ splash_run::i1#2
to:splash_run::@6
splash_run::@3: scope:[splash_run] from splash_run::@2
[606] splash_run::$34 = splash_run::i#2 << 1
[607] SPRITES_YPOS[splash_run::$34] = 7
[608] splash_run::xpos#0 = splash_run::sprites_xpos[splash_run::$34]
[609] SPRITES_XPOS[splash_run::$34] = (char)splash_run::xpos#0
[610] splash_run::msb#1 = splash_run::msb#10 >> 1
[611] splash_run::$25 = byte1 splash_run::xpos#0
[612] if(0==splash_run::$25) goto splash_run::@4
to:splash_run::@5
splash_run::@5: scope:[splash_run] from splash_run::@3
[613] splash_run::msb#2 = splash_run::msb#1 | $80
to:splash_run::@4
splash_run::@4: scope:[splash_run] from splash_run::@3 splash_run::@5
[614] splash_run::msb#8 = phi( splash_run::@3/splash_run::msb#1, splash_run::@5/splash_run::msb#2 )
[615] splash_run::i#1 = ++ splash_run::i#2
to:splash_run::@2
void gameplay_run()
gameplay_run: scope:[gameplay_run] from main::@1
[616] phi()
to:gameplay_run::SEI1
gameplay_run::SEI1: scope:[gameplay_run] from gameplay_run
asm { sei }
to:gameplay_run::@1
gameplay_run::@1: scope:[gameplay_run] from gameplay_run::@2 gameplay_run::SEI1
[618] gameplay_run::i#2 = phi( gameplay_run::SEI1/0, gameplay_run::@2/gameplay_run::i#1 )
[619] if(gameplay_run::i#2<$2f) goto gameplay_run::@2
to:gameplay_run::@3
gameplay_run::@3: scope:[gameplay_run] from gameplay_run::@1
[620] pacman_wins = 0
[621] pacman_lives = 3
[622] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLACK
[623] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = BLACK
to:gameplay_run::@4
gameplay_run::@4: scope:[gameplay_run] from gameplay_run::@3 gameplay_run::@5
[624] gameplay_run::i1#2 = phi( gameplay_run::@3/0, gameplay_run::@5/gameplay_run::i1#1 )
[625] if(gameplay_run::i1#2<8) goto gameplay_run::@5
to:gameplay_run::@6
gameplay_run::@6: scope:[gameplay_run] from gameplay_run::@4
[626] byteboozer_decrunch::crunched = LEVEL_TILES_CRUNCHED
[627] call byteboozer_decrunch
to:gameplay_run::@14
gameplay_run::@14: scope:[gameplay_run] from gameplay_run::@6
[628] phi()
[629] call init_level_tile_directions
to:gameplay_run::@15
gameplay_run::@15: scope:[gameplay_run] from gameplay_run::@14
[630] phi()
[631] call init_sprite_pointers
to:gameplay_run::@16
gameplay_run::@16: scope:[gameplay_run] from gameplay_run::@15
[632] phi()
[633] call level_show
[634] level_show::return#0 = level_show::count#12
to:gameplay_run::@17
gameplay_run::@17: scope:[gameplay_run] from gameplay_run::@16
[635] gameplay_run::$4 = level_show::return#0
[636] pill_count = gameplay_run::$4
[637] top_sprites_mc = $ff
[638] side_sprites_mc = $ff
[639] bottom_sprites_mc = $ff
[640] top_sprites_color = YELLOW
[641] side_sprites_color = YELLOW
[642] bottom_sprites_color = YELLOW
[643] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc
to:gameplay_run::@7
gameplay_run::@7: scope:[gameplay_run] from gameplay_run::@17 gameplay_run::@8
[644] gameplay_run::i2#2 = phi( gameplay_run::@17/0, gameplay_run::@8/gameplay_run::i2#1 )
[645] if(gameplay_run::i2#2<8) goto gameplay_run::@8
to:gameplay_run::@9
gameplay_run::@9: scope:[gameplay_run] from gameplay_run::@7
[646] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLUE
[647] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = RED
[648] phase = 1
[649] call spawn_all
to:gameplay_run::@18
gameplay_run::@18: scope:[gameplay_run] from gameplay_run::@9
[650] phi()
[651] call pacman_sound_init
to:gameplay_run::@19
gameplay_run::@19: scope:[gameplay_run] from gameplay_run::@18
[652] game_playable = 1
[653] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM
to:gameplay_run::@10
gameplay_run::@10: scope:[gameplay_run] from gameplay_run::@10 gameplay_run::@19
[654] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fb) goto gameplay_run::@10
to:gameplay_run::@11
gameplay_run::@11: scope:[gameplay_run] from gameplay_run::@10 gameplay_run::@11
[655] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fa) goto gameplay_run::@11
to:gameplay_run::@12
gameplay_run::@12: scope:[gameplay_run] from gameplay_run::@11
[656] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & ~VICII_RST8|VICII_RSEL|VICII_DEN
[657] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE
[658] *HARDWARE_IRQ = &irq_screen_top
[659] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
asm { ldaCIA1_INTERRUPT }
[661] *IRQ_STATUS = $f
to:gameplay_run::CLI1
gameplay_run::CLI1: scope:[gameplay_run] from gameplay_run::@12
asm { cli }
to:gameplay_run::@13
gameplay_run::@13: scope:[gameplay_run] from gameplay_run::@20 gameplay_run::CLI1
[663] if(0!=pacman_wins) goto gameplay_run::@return
to:gameplay_run::@20
gameplay_run::@20: scope:[gameplay_run] from gameplay_run::@13
[664] if(pacman_lives==0) goto gameplay_run::@return
to:gameplay_run::@13
gameplay_run::@return: scope:[gameplay_run] from gameplay_run::@13 gameplay_run::@20
[665] return
to:@return
gameplay_run::@8: scope:[gameplay_run] from gameplay_run::@7
[666] SPRITES_COLOR[gameplay_run::i2#2] = top_sprites_color
[667] gameplay_run::i2#1 = ++ gameplay_run::i2#2
to:gameplay_run::@7
gameplay_run::@5: scope:[gameplay_run] from gameplay_run::@4
[668] SPRITES_COLOR[gameplay_run::i1#2] = BLACK
[669] gameplay_run::i1#1 = ++ gameplay_run::i1#2
to:gameplay_run::@4
gameplay_run::@2: scope:[gameplay_run] from gameplay_run::@1
[670] ((char *)SID)[gameplay_run::i#2] = 0
[671] gameplay_run::i#1 = ++ gameplay_run::i#2
to:gameplay_run::@1
void done_run()
done_run: scope:[done_run] from main::@2
[672] game_playable = 0
[673] phase = 0
to:done_run::@4
done_run::@4: scope:[done_run] from done_run done_run::@5
[674] done_run::i#2 = phi( done_run/0, done_run::@5/done_run::i#1 )
[675] if(done_run::i#2<$2f) goto done_run::@5
to:done_run::@6
done_run::@6: scope:[done_run] from done_run::@4 done_run::@7
[676] done_run::i1#2 = phi( done_run::@4/0, done_run::@7/done_run::i1#1 )
[677] if(done_run::i1#2<4) goto done_run::@7
to:done_run::@8
done_run::@8: scope:[done_run] from done_run::@6
asm { lda#0 }
[679] callexecute *musicInit
to:done_run::@1
done_run::@1: scope:[done_run] from done_run::@8
[680] if(0!=pacman_wins) goto done_run::@2
to:done_run::@3
done_run::@3: scope:[done_run] from done_run::@1
[681] byteboozer_decrunch::crunched = GAMEOVER_GFX_CRUNCHED
[682] call byteboozer_decrunch
to:done_run::@9
done_run::@9: scope:[done_run] from done_run::@13 done_run::@2 done_run::@3
[683] done_run::gfx#4 = phi( done_run::@13/done_run::gfx#2, done_run::@2/WIN_GFX, done_run::@3/WIN_GFX )
[683] done_run::xcol#2 = phi( done_run::@13/done_run::xcol#1, done_run::@2/0, done_run::@3/0 )
[684] if(done_run::xcol#2<$19) goto done_run::@11
to:done_run::@10
done_run::@10: scope:[done_run] from done_run::@9
[685] music_play_next = 0
to:done_run::@14
done_run::@14: scope:[done_run] from done_run::@10 done_run::@15 done_run::@16
[686] phi()
[687] call joyfire
[688] joyfire::return#0 = joyfire::return#4
to:done_run::@19
done_run::@19: scope:[done_run] from done_run::@14
[689] done_run::$8 = joyfire::return#0
[690] if(0==done_run::$8) goto done_run::@15
to:done_run::@return
done_run::@return: scope:[done_run] from done_run::@19
[691] return
to:@return
done_run::@15: scope:[done_run] from done_run::@19
[692] if(0==music_play_next) goto done_run::@14
to:done_run::@17
done_run::@17: scope:[done_run] from done_run::@15
[693] phi()
[694] callexecute *musicPlay
to:done_run::@16
done_run::@16: scope:[done_run] from done_run::@17
[695] music_play_next = 0
to:done_run::@14
done_run::@11: scope:[done_run] from done_run::@18 done_run::@9
[696] done_run::gfx#2 = phi( done_run::@9/done_run::gfx#4, done_run::@18/done_run::gfx#1 )
[696] done_run::ypos#2 = phi( done_run::@9/0, done_run::@18/done_run::ypos#1 )
[697] if(done_run::ypos#2<$19) goto done_run::@12
to:done_run::@13
done_run::@13: scope:[done_run] from done_run::@11
[698] done_run::xcol#1 = ++ done_run::xcol#2
to:done_run::@9
done_run::@12: scope:[done_run] from done_run::@11
[699] done_run::pixels#0 = *done_run::gfx#2
[700] done_run::gfx#1 = ++ done_run::gfx#2
[701] render::xcol#0 = done_run::xcol#2
[702] render::ypos#0 = done_run::ypos#2
[703] render::pixels#0 = done_run::pixels#0
[704] call render
to:done_run::@18
done_run::@18: scope:[done_run] from done_run::@12
[705] done_run::ypos#1 = ++ done_run::ypos#2
to:done_run::@11
done_run::@2: scope:[done_run] from done_run::@1
[706] byteboozer_decrunch::crunched = WIN_GFX_CRUNCHED
[707] call byteboozer_decrunch
to:done_run::@9
done_run::@7: scope:[done_run] from done_run::@6
[708] bobs_xcol[done_run::i1#2] = $a
[709] bobs_yfine[done_run::i1#2] = $2d
[710] bobs_bob_id[done_run::i1#2] = 0
[711] done_run::i1#1 = ++ done_run::i1#2
to:done_run::@6
done_run::@5: scope:[done_run] from done_run::@4
[712] ((char *)SID)[done_run::i#2] = 0
[713] done_run::i#1 = ++ done_run::i#2
to:done_run::@4
void spawn_all()
spawn_all: scope:[spawn_all] from game_logic::@68 game_logic::@69 game_logic::@70 game_logic::@71 gameplay_run::@9
[714] ghosts_mode_count = 0
[715] pacman_substep = 0
[716] ghost1_substep = 0
[717] ghost2_substep = 0
[718] ghost3_substep = 0
[719] ghost4_substep = 0
[720] pacman_direction = STOP
[721] ghost1_direction = STOP
[722] ghost2_direction = STOP
[723] ghost3_direction = STOP
[724] ghost4_direction = STOP
[725] pacman_xfine = $32
[726] ghost1_xfine = $32
[727] ghost2_xfine = $32
[728] ghost3_xfine = $32
[729] ghost4_xfine = $32
[730] ghost1_yfine = $23
[731] ghost2_yfine = $23
[732] ghost3_yfine = $23
[733] ghost4_yfine = $23
[734] pacman_yfine = $3e
[735] ghost1_respawn = $a
[736] ghost2_respawn = $14
[737] ghost3_respawn = $1e
[738] ghost4_respawn = $28
to:spawn_all::@return
spawn_all::@return: scope:[spawn_all] from spawn_all
[739] return
to:@return
char level_tile_directions(char xtile , char ytile)
level_tile_directions: scope:[level_tile_directions] from game_logic::@100 game_logic::@117 game_logic::@134 game_logic::@147 game_logic::@83
[740] level_tile_directions::ytile#5 = phi( game_logic::@100/level_tile_directions::ytile#1, game_logic::@117/level_tile_directions::ytile#2, game_logic::@134/level_tile_directions::ytile#3, game_logic::@147/level_tile_directions::ytile#4, game_logic::@83/level_tile_directions::ytile#0 )
[740] level_tile_directions::xtile#5 = phi( game_logic::@100/level_tile_directions::xtile#1, game_logic::@117/level_tile_directions::xtile#2, game_logic::@134/level_tile_directions::xtile#3, game_logic::@147/level_tile_directions::xtile#4, game_logic::@83/level_tile_directions::xtile#0 )
[741] if(level_tile_directions::xtile#5>=$31+1) goto level_tile_directions::@return
to:level_tile_directions::@2
level_tile_directions::@2: scope:[level_tile_directions] from level_tile_directions
[742] if(level_tile_directions::ytile#5>=$24+1) goto level_tile_directions::@return
to:level_tile_directions::@1
level_tile_directions::@1: scope:[level_tile_directions] from level_tile_directions::@2
[743] level_tile_directions::$5 = level_tile_directions::ytile#5 << 1
[744] level_tile_directions::ytiles#0 = LEVEL_TILES_DIRECTIONS + LEVEL_YTILE_OFFSET[level_tile_directions::$5]
[745] level_tile_directions::return#0 = level_tile_directions::ytiles#0[level_tile_directions::xtile#5]
to:level_tile_directions::@return
level_tile_directions::@return: scope:[level_tile_directions] from level_tile_directions level_tile_directions::@1 level_tile_directions::@2
[746] level_tile_directions::return#2 = phi( level_tile_directions::@1/level_tile_directions::return#0, level_tile_directions/0, level_tile_directions::@2/0 )
[747] return
to:@return
char choose_direction(char open_directions , char ghost_xtile , char ghost_ytile , char target_xtile , char target_ytile)
choose_direction: scope:[choose_direction] from game_logic::@114 game_logic::@131 game_logic::@80 game_logic::@97
[748] choose_direction::open_directions#10 = phi( game_logic::@114/choose_direction::open_directions#2, game_logic::@131/choose_direction::open_directions#3, game_logic::@80/choose_direction::open_directions#0, game_logic::@97/choose_direction::open_directions#1 )
[748] choose_direction::target_ytile#4 = phi( game_logic::@114/choose_direction::target_ytile#2, game_logic::@131/choose_direction::target_ytile#3, game_logic::@80/choose_direction::target_ytile#0, game_logic::@97/choose_direction::target_ytile#1 )
[748] choose_direction::ghost_ytile#4 = phi( game_logic::@114/choose_direction::ghost_ytile#2, game_logic::@131/choose_direction::ghost_ytile#3, game_logic::@80/choose_direction::ghost_ytile#0, game_logic::@97/choose_direction::ghost_ytile#1 )
[748] choose_direction::target_xtile#4 = phi( game_logic::@114/choose_direction::target_xtile#2, game_logic::@131/choose_direction::target_xtile#3, game_logic::@80/choose_direction::target_xtile#0, game_logic::@97/choose_direction::target_xtile#1 )
[748] choose_direction::ghost_xtile#4 = phi( game_logic::@114/choose_direction::ghost_xtile#2, game_logic::@131/choose_direction::ghost_xtile#3, game_logic::@80/choose_direction::ghost_xtile#0, game_logic::@97/choose_direction::ghost_xtile#1 )
[749] choose_direction::xdiff#0 = choose_direction::ghost_xtile#4 - choose_direction::target_xtile#4
[750] choose_direction::ydiff#0 = choose_direction::ghost_ytile#4 - choose_direction::target_ytile#4
[751] choose_direction::$2 = choose_direction::open_directions#10 & UP
[752] if(0==choose_direction::$2) goto choose_direction::@1
to:choose_direction::@5
choose_direction::@5: scope:[choose_direction] from choose_direction
[753] choose_direction::dist_up#0 = ABS[choose_direction::xdiff#0] + (ABS+-1)[choose_direction::ydiff#0]
[754] if(choose_direction::dist_up#0>=$ff) goto choose_direction::@1
to:choose_direction::@6
choose_direction::@6: scope:[choose_direction] from choose_direction::@5
[755] phi()
to:choose_direction::@1
choose_direction::@1: scope:[choose_direction] from choose_direction choose_direction::@5 choose_direction::@6
[756] choose_direction::direction#10 = phi( choose_direction/STOP, choose_direction::@5/STOP, choose_direction::@6/UP )
[756] choose_direction::dist_min#6 = phi( choose_direction/$ff, choose_direction::@5/$ff, choose_direction::@6/choose_direction::dist_up#0 )
[757] choose_direction::$4 = choose_direction::open_directions#10 & DOWN
[758] if(0==choose_direction::$4) goto choose_direction::@10
to:choose_direction::@7
choose_direction::@7: scope:[choose_direction] from choose_direction::@1
[759] choose_direction::dist_down#0 = ABS[choose_direction::xdiff#0] + (ABS+1)[choose_direction::ydiff#0]
[760] if(choose_direction::dist_down#0>=choose_direction::dist_min#6) goto choose_direction::@11
to:choose_direction::@2
choose_direction::@11: scope:[choose_direction] from choose_direction::@7
[761] choose_direction::dist_min#14 = choose_direction::dist_min#6
to:choose_direction::@2
choose_direction::@2: scope:[choose_direction] from choose_direction::@10 choose_direction::@11 choose_direction::@7
[762] choose_direction::direction#8 = phi( choose_direction::@10/choose_direction::direction#10, choose_direction::@11/choose_direction::direction#10, choose_direction::@7/DOWN )
[762] choose_direction::dist_min#10 = phi( choose_direction::@10/choose_direction::dist_min#13, choose_direction::@11/choose_direction::dist_min#14, choose_direction::@7/choose_direction::dist_down#0 )
[763] choose_direction::$6 = choose_direction::open_directions#10 & LEFT
[764] if(0==choose_direction::$6) goto choose_direction::@12
to:choose_direction::@8
choose_direction::@8: scope:[choose_direction] from choose_direction::@2
[765] choose_direction::dist_left#0 = (ABS+-1)[choose_direction::xdiff#0] + ABS[choose_direction::ydiff#0]
[766] if(choose_direction::dist_left#0>=choose_direction::dist_min#10) goto choose_direction::@13
to:choose_direction::@3
choose_direction::@13: scope:[choose_direction] from choose_direction::@8
[767] choose_direction::dist_min#18 = choose_direction::dist_min#10
to:choose_direction::@3
choose_direction::@3: scope:[choose_direction] from choose_direction::@12 choose_direction::@13 choose_direction::@8
[768] choose_direction::dist_min#11 = phi( choose_direction::@8/choose_direction::dist_left#0, choose_direction::@12/choose_direction::dist_min#17, choose_direction::@13/choose_direction::dist_min#18 )
[768] choose_direction::direction#6 = phi( choose_direction::@8/LEFT, choose_direction::@12/choose_direction::direction#8, choose_direction::@13/choose_direction::direction#8 )
[769] choose_direction::$8 = choose_direction::open_directions#10 & RIGHT
[770] if(0==choose_direction::$8) goto choose_direction::@4
to:choose_direction::@9
choose_direction::@9: scope:[choose_direction] from choose_direction::@3
[771] choose_direction::dist_right#0 = (ABS+1)[choose_direction::xdiff#0] + ABS[choose_direction::ydiff#0]
[772] if(choose_direction::dist_right#0>=choose_direction::dist_min#11) goto choose_direction::@14
to:choose_direction::@4
choose_direction::@14: scope:[choose_direction] from choose_direction::@9
[773] phi()
to:choose_direction::@4
choose_direction::@4: scope:[choose_direction] from choose_direction::@14 choose_direction::@3 choose_direction::@9
[774] choose_direction::return#10 = phi( choose_direction::@14/choose_direction::direction#6, choose_direction::@9/RIGHT, choose_direction::@3/choose_direction::direction#6 )
to:choose_direction::@return
choose_direction::@return: scope:[choose_direction] from choose_direction::@4
[775] return
to:@return
choose_direction::@12: scope:[choose_direction] from choose_direction::@2
[776] choose_direction::dist_min#17 = choose_direction::dist_min#10
to:choose_direction::@3
choose_direction::@10: scope:[choose_direction] from choose_direction::@1
[777] choose_direction::dist_min#13 = choose_direction::dist_min#6
to:choose_direction::@2
void * memset(void *str , char c , unsigned int num)
memset: scope:[memset] from splash_run::@18 splash_run::@25 splash_run::@26 splash_run::@30 splash_run::@36
[778] memset::str#6 = phi( splash_run::@18/(void *)(char *) 16384, splash_run::@25/(void *)BANK_1+$2000, splash_run::@26/(void *)BANK_2, splash_run::@30/(void *)BANK_1, splash_run::@36/(void *)INTRO_MUSIC_CRUNCHED_UPPER )
[778] memset::num#5 = phi( splash_run::@18/$c00, splash_run::@25/$1fff, splash_run::@26/$3fff, splash_run::@30/$1fff, splash_run::@36/INTRO_MUSIC_CRUNCHED_SIZE )
[779] if(memset::num#5<=0) goto memset::@return
to:memset::@1
memset::@1: scope:[memset] from memset
[780] memset::end#0 = (char *)memset::str#6 + memset::num#5
[781] memset::dst#4 = (char *)memset::str#6
to:memset::@2
memset::@2: scope:[memset] from memset::@1 memset::@3
[782] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
[783] if(memset::dst#2!=memset::end#0) goto memset::@3
to:memset::@return
memset::@return: scope:[memset] from memset memset::@2
[784] return
to:@return
memset::@3: scope:[memset] from memset::@2
[785] *memset::dst#2 = 0
[786] memset::dst#1 = ++ memset::dst#2
to:memset::@2
void byteboozer_decrunch(char * volatile crunched)
byteboozer_decrunch: scope:[byteboozer_decrunch] from done_run::@2 done_run::@3 gameplay_run::@6 splash_run::@22 splash_run::@23 splash_run::@28 splash_run::@32 splash_run::@35
asm { ldycrunched ldxcrunched+1 jsrb2.Decrunch }
to:byteboozer_decrunch::@return
byteboozer_decrunch::@return: scope:[byteboozer_decrunch] from byteboozer_decrunch
[788] return
to:@return
void merge_code(char *dest_code , char *raster_code , char *logic_code)
merge_code: scope:[merge_code] from splash_run::@24
[789] phi()
to:merge_code::@1
merge_code::@1: scope:[merge_code] from merge_code merge_code::@10 merge_code::@2
[790] merge_code::logic_code#18 = phi( merge_code/LOGIC_CODE_UNMERGED, merge_code::@10/merge_code::logic_code#17, merge_code::@2/merge_code::logic_code#18 )
[790] merge_code::dest_code#14 = phi( merge_code/RASTER_CODE, merge_code::@10/merge_code::dest_code#10, merge_code::@2/merge_code::dest_code#0 )
[790] merge_code::raster_code#4 = phi( merge_code/RASTER_CODE_UNMERGED, merge_code::@10/merge_code::raster_code#2, merge_code::@2/merge_code::raster_code#0 )
[791] if(*merge_code::raster_code#4!=merge_code::RASTER_END) goto merge_code::@2
to:merge_code::@3
merge_code::@3: scope:[merge_code] from merge_code::@1
[792] merge_code::raster_code#1 = ++ merge_code::raster_code#4
[793] merge_code::cycle_budget#0 = *merge_code::raster_code#1
[794] merge_code::raster_code#2 = ++ merge_code::raster_code#1
[795] if(merge_code::cycle_budget#0!=merge_code::RASTER_EXIT) goto merge_code::@4
to:merge_code::@14
merge_code::@14: scope:[merge_code] from merge_code::@19 merge_code::@3
[796] merge_code::dest_code#12 = phi( merge_code::@19/merge_code::dest_code#13, merge_code::@3/merge_code::dest_code#14 )
[796] merge_code::logic_code#12 = phi( merge_code::@19/merge_code::logic_code#5, merge_code::@3/merge_code::logic_code#18 )
[797] if(*merge_code::logic_code#12!=merge_code::LOGIC_EXIT) goto merge_code::@15
to:merge_code::@16
merge_code::@16: scope:[merge_code] from merge_code::@14
[798] *merge_code::dest_code#12 = $60
to:merge_code::@return
merge_code::@return: scope:[merge_code] from merge_code::@16
[799] return
to:@return
merge_code::@15: scope:[merge_code] from merge_code::@14
[800] merge_code::logic_code#3 = ++ merge_code::logic_code#12
to:merge_code::@17
merge_code::@17: scope:[merge_code] from merge_code::@15 merge_code::@18
[801] merge_code::dest_code#13 = phi( merge_code::@15/merge_code::dest_code#12, merge_code::@18/merge_code::dest_code#6 )
[801] merge_code::logic_code#14 = phi( merge_code::@15/merge_code::logic_code#3, merge_code::@18/merge_code::logic_code#4 )
[802] if(*merge_code::logic_code#14!=merge_code::LOGIC_END) goto merge_code::@18
to:merge_code::@19
merge_code::@19: scope:[merge_code] from merge_code::@17
[803] merge_code::logic_code#5 = ++ merge_code::logic_code#14
to:merge_code::@14
merge_code::@18: scope:[merge_code] from merge_code::@17
[804] *merge_code::dest_code#13 = *merge_code::logic_code#14
[805] merge_code::dest_code#6 = ++ merge_code::dest_code#13
[806] merge_code::logic_code#4 = ++ merge_code::logic_code#14
to:merge_code::@17
merge_code::@4: scope:[merge_code] from merge_code::@3 merge_code::@8
[807] merge_code::dest_code#21 = phi( merge_code::@3/merge_code::dest_code#14, merge_code::@8/merge_code::dest_code#15 )
[807] merge_code::logic_code#17 = phi( merge_code::@3/merge_code::logic_code#18, merge_code::@8/merge_code::logic_code#2 )
[807] merge_code::cycle_budget#13 = phi( merge_code::@3/merge_code::cycle_budget#0, merge_code::@8/merge_code::cycle_budget#1 )
[808] if(merge_code::cycle_budget#13<=0) goto merge_code::@10
to:merge_code::@5
merge_code::@5: scope:[merge_code] from merge_code::@4
[809] merge_code::logic_cycles#0 = *merge_code::logic_code#17
[810] merge_code::$5 = merge_code::cycle_budget#13 - 1
[811] if(merge_code::logic_cycles#0!=merge_code::LOGIC_EXIT) goto merge_code::@20
to:merge_code::@10
merge_code::@10: scope:[merge_code] from merge_code::@12 merge_code::@13 merge_code::@21 merge_code::@4 merge_code::@5
[812] merge_code::dest_code#10 = phi( merge_code::@12/merge_code::dest_code#3, merge_code::@13/merge_code::dest_code#4, merge_code::@4/merge_code::dest_code#21, merge_code::@5/merge_code::dest_code#21 )
[812] merge_code::cycle_budget#10 = phi( merge_code::@12/merge_code::cycle_budget#2, merge_code::@13/merge_code::cycle_budget#3, merge_code::@4/merge_code::cycle_budget#13, merge_code::@5/merge_code::cycle_budget#13 )
[813] if(merge_code::cycle_budget#10>0) goto merge_code::@11
to:merge_code::@1
merge_code::@11: scope:[merge_code] from merge_code::@10
[814] if(merge_code::cycle_budget#10==3) goto merge_code::@12
to:merge_code::@13
merge_code::@13: scope:[merge_code] from merge_code::@11
[815] *merge_code::dest_code#10 = $ea
[816] merge_code::dest_code#4 = ++ merge_code::dest_code#10
[817] merge_code::cycle_budget#3 = merge_code::cycle_budget#10 - 2
to:merge_code::@10
merge_code::@12: scope:[merge_code] from merge_code::@11
[818] *merge_code::dest_code#10 = $24
[819] merge_code::dest_code#2 = ++ merge_code::dest_code#10
[820] *merge_code::dest_code#2 = $ea
[821] merge_code::dest_code#3 = ++ merge_code::dest_code#2
[822] merge_code::cycle_budget#2 = merge_code::cycle_budget#10 - 3
to:merge_code::@10
merge_code::@20: scope:[merge_code] from merge_code::@5
[823] if(merge_code::logic_cycles#0<merge_code::$5) goto merge_code::@9
to:merge_code::@21
merge_code::@21: scope:[merge_code] from merge_code::@20
[824] if(merge_code::logic_cycles#0==merge_code::cycle_budget#13) goto merge_code::@9
to:merge_code::@10
merge_code::@9: scope:[merge_code] from merge_code::@20 merge_code::@21
[825] merge_code::logic_code#0 = ++ merge_code::logic_code#17
to:merge_code::@6
merge_code::@6: scope:[merge_code] from merge_code::@7 merge_code::@9
[826] merge_code::dest_code#15 = phi( merge_code::@7/merge_code::dest_code#1, merge_code::@9/merge_code::dest_code#21 )
[826] merge_code::logic_code#10 = phi( merge_code::@7/merge_code::logic_code#1, merge_code::@9/merge_code::logic_code#0 )
[827] if(*merge_code::logic_code#10!=merge_code::LOGIC_END) goto merge_code::@7
to:merge_code::@8
merge_code::@8: scope:[merge_code] from merge_code::@6
[828] merge_code::logic_code#2 = ++ merge_code::logic_code#10
[829] merge_code::cycle_budget#1 = merge_code::cycle_budget#13 - merge_code::logic_cycles#0
to:merge_code::@4
merge_code::@7: scope:[merge_code] from merge_code::@6
[830] *merge_code::dest_code#15 = *merge_code::logic_code#10
[831] merge_code::dest_code#1 = ++ merge_code::dest_code#15
[832] merge_code::logic_code#1 = ++ merge_code::logic_code#10
to:merge_code::@6
merge_code::@2: scope:[merge_code] from merge_code::@1
[833] *merge_code::dest_code#14 = *merge_code::raster_code#4
[834] merge_code::dest_code#0 = ++ merge_code::dest_code#14
[835] merge_code::raster_code#0 = ++ merge_code::raster_code#4
to:merge_code::@1
void init_render_index()
init_render_index: scope:[init_render_index] from splash_run::@27
[836] phi()
to:init_render_index::@1
init_render_index::@1: scope:[init_render_index] from init_render_index init_render_index::@7
[837] init_render_index::render_index_xcol#0 = phi( init_render_index/RENDER_INDEX, init_render_index::@7/init_render_index::render_index#1 )
[837] init_render_index::x_col#2 = phi( init_render_index/0, init_render_index::@7/init_render_index::x_col#1 )
[838] if(init_render_index::x_col#2<$1a) goto init_render_index::@2
to:init_render_index::@3
init_render_index::@3: scope:[init_render_index] from init_render_index::@1
[839] *(RENDER_INDEX+$18*$100+RENDER_OFFSET_YPOS_INC) = 0
[840] *(RENDER_INDEX+$19*$100+RENDER_OFFSET_YPOS_INC) = 0
to:init_render_index::@return
init_render_index::@return: scope:[init_render_index] from init_render_index::@3
[841] return
to:@return
init_render_index::@2: scope:[init_render_index] from init_render_index::@1
[842] if(init_render_index::x_col#2<$18) goto init_render_index::@4
to:init_render_index::@10
init_render_index::@10: scope:[init_render_index] from init_render_index::@2
[843] phi()
to:init_render_index::@4
init_render_index::@4: scope:[init_render_index] from init_render_index::@10 init_render_index::@2
[844] init_render_index::ypos_inc_offset#7 = phi( init_render_index::@10/$b, init_render_index::@2/0 )
[844] init_render_index::render_ypos_table#4 = phi( init_render_index::@10/RENDER_YPOS_9TH, init_render_index::@2/RENDER_YPOS )
[845] init_render_index::$9 = init_render_index::x_col#2 << 1
[846] init_render_index::canvas_xcol#0 = RENDER_XCOLS[init_render_index::$9]
[847] init_render_index::render_index_xcol#7 = init_render_index::render_index_xcol#0
to:init_render_index::@5
init_render_index::@5: scope:[init_render_index] from init_render_index::@4 init_render_index::@8
[848] init_render_index::ypos_inc_offset#4 = phi( init_render_index::@4/init_render_index::ypos_inc_offset#7, init_render_index::@8/init_render_index::ypos_inc_offset#8 )
[848] init_render_index::render_index_xcol#2 = phi( init_render_index::@4/init_render_index::render_index_xcol#7, init_render_index::@8/init_render_index::render_index_xcol#1 )
[848] init_render_index::y_pos#2 = phi( init_render_index::@4/0, init_render_index::@8/init_render_index::y_pos#1 )
[849] if(init_render_index::y_pos#2<$94) goto init_render_index::@6
to:init_render_index::@7
init_render_index::@7: scope:[init_render_index] from init_render_index::@5
[850] init_render_index::render_index#1 = init_render_index::render_index_xcol#0 + $100
[851] init_render_index::x_col#1 = ++ init_render_index::x_col#2
to:init_render_index::@1
init_render_index::@6: scope:[init_render_index] from init_render_index::@5
[852] init_render_index::$11 = (unsigned int)init_render_index::y_pos#2
[853] init_render_index::$10 = init_render_index::$11 << 1
[854] init_render_index::$12 = init_render_index::render_ypos_table#4 + init_render_index::$10
[855] init_render_index::canvas#0 = init_render_index::canvas_xcol#0 + *init_render_index::$12
[856] init_render_index::$5 = byte0 init_render_index::canvas#0
[857] *init_render_index::render_index_xcol#2 = init_render_index::$5
[858] init_render_index::$6 = byte1 init_render_index::canvas#0
[859] init_render_index::render_index_xcol#2[RENDER_OFFSET_CANVAS_HI] = init_render_index::$6
[860] init_render_index::render_index_xcol#2[RENDER_OFFSET_YPOS_INC] = init_render_index::ypos_inc_offset#4
[861] init_render_index::ypos_inc_offset#2 = init_render_index::ypos_inc_offset#4 + 2
[862] if(init_render_index::ypos_inc_offset#2<$17) goto init_render_index::@8
to:init_render_index::@9
init_render_index::@9: scope:[init_render_index] from init_render_index::@6
[863] init_render_index::ypos_inc_offset#3 = init_render_index::ypos_inc_offset#2 - $15
to:init_render_index::@8
init_render_index::@8: scope:[init_render_index] from init_render_index::@6 init_render_index::@9
[864] init_render_index::ypos_inc_offset#8 = phi( init_render_index::@6/init_render_index::ypos_inc_offset#2, init_render_index::@9/init_render_index::ypos_inc_offset#3 )
[865] init_render_index::render_index_xcol#1 = ++ init_render_index::render_index_xcol#2
[866] init_render_index::y_pos#1 = init_render_index::y_pos#2 + 2
to:init_render_index::@5
void splash_show()
splash_show: scope:[splash_show] from splash_run::@29
[867] phi()
to:splash_show::@1
splash_show::@1: scope:[splash_show] from splash_show splash_show::@4
[868] splash_show::splash#4 = phi( splash_show/SPLASH, splash_show::@4/splash_show::splash#2 )
[868] splash_show::xcol#2 = phi( splash_show/0, splash_show::@4/splash_show::xcol#1 )
[869] if(splash_show::xcol#2<$19) goto splash_show::@2
to:splash_show::@return
splash_show::@return: scope:[splash_show] from splash_show::@1
[870] return
to:@return
splash_show::@2: scope:[splash_show] from splash_show::@1 splash_show::@5
[871] splash_show::splash#2 = phi( splash_show::@1/splash_show::splash#4, splash_show::@5/splash_show::splash#1 )
[871] splash_show::ypos#2 = phi( splash_show::@1/0, splash_show::@5/splash_show::ypos#1 )
[872] if(splash_show::ypos#2<$93) goto splash_show::@3
to:splash_show::@4
splash_show::@4: scope:[splash_show] from splash_show::@2
[873] splash_show::xcol#1 = ++ splash_show::xcol#2
to:splash_show::@1
splash_show::@3: scope:[splash_show] from splash_show::@2
[874] splash_show::pixels#0 = *splash_show::splash#2
[875] splash_show::splash#1 = ++ splash_show::splash#2
[876] render::xcol#1 = splash_show::xcol#2
[877] render::ypos#1 = splash_show::ypos#2
[878] render::pixels#1 = splash_show::pixels#0
[879] call render
to:splash_show::@5
splash_show::@5: scope:[splash_show] from splash_show::@3
[880] splash_show::ypos#1 = ++ splash_show::ypos#2
to:splash_show::@2
void init_bobs_restore()
init_bobs_restore: scope:[init_bobs_restore] from splash_run::@31
[881] phi()
to:init_bobs_restore::@1
init_bobs_restore::@1: scope:[init_bobs_restore] from init_bobs_restore init_bobs_restore::@5
[882] init_bobs_restore::bob_restore#5 = phi( init_bobs_restore/bobs_restore, init_bobs_restore::@5/init_bobs_restore::bob_restore#1 )
[882] init_bobs_restore::bob#2 = phi( init_bobs_restore/0, init_bobs_restore::@5/init_bobs_restore::bob#1 )
[883] if(init_bobs_restore::bob#2<NUM_BOBS*2) goto init_bobs_restore::@3
to:init_bobs_restore::@2
init_bobs_restore::@2: scope:[init_bobs_restore] from init_bobs_restore::@1
[884] logic_tile_ptr = LEVEL_TILES+(unsigned int)$40*$12+$c
[885] logic_tile_xcol = $c
[886] logic_tile_yfine = $23
to:init_bobs_restore::@return
init_bobs_restore::@return: scope:[init_bobs_restore] from init_bobs_restore::@2
[887] return
to:@return
init_bobs_restore::@3: scope:[init_bobs_restore] from init_bobs_restore::@1 init_bobs_restore::@4
[888] init_bobs_restore::i#2 = phi( init_bobs_restore::@1/0, init_bobs_restore::@4/init_bobs_restore::i#1 )
[889] if(init_bobs_restore::i#2<SIZE_BOB_RESTORE) goto init_bobs_restore::@4
to:init_bobs_restore::@5
init_bobs_restore::@5: scope:[init_bobs_restore] from init_bobs_restore::@3
[890] *init_bobs_restore::bob_restore#5 = 0
[891] init_bobs_restore::bob_restore#5[1] = byte1 init_bobs_restore::CANVAS_HIDDEN
[892] init_bobs_restore::bob_restore#5[3] = 0
[893] init_bobs_restore::bob_restore#5[4] = byte1 init_bobs_restore::CANVAS_HIDDEN
[894] init_bobs_restore::bob_restore#1 = init_bobs_restore::bob_restore#5 + SIZE_BOB_RESTORE
[895] init_bobs_restore::bob#1 = ++ init_bobs_restore::bob#2
to:init_bobs_restore::@1
init_bobs_restore::@4: scope:[init_bobs_restore] from init_bobs_restore::@3
[896] init_bobs_restore::bob_restore#5[init_bobs_restore::i#2] = 0
[897] init_bobs_restore::i#1 = ++ init_bobs_restore::i#2
to:init_bobs_restore::@3
void init_sprite_pointers()
init_sprite_pointers: scope:[init_sprite_pointers] from gameplay_run::@15 splash_run::@33
[898] phi()
to:init_sprite_pointers::@1
init_sprite_pointers::@1: scope:[init_sprite_pointers] from init_sprite_pointers init_sprite_pointers::@4
[899] init_sprite_pointers::sprites_ptr_2#5 = phi( init_sprite_pointers/SCREENS_2+OFFSET_SPRITE_PTRS, init_sprite_pointers::@4/init_sprite_pointers::sprites_ptr_2#1 )
[899] init_sprite_pointers::sprites_ptr_1#5 = phi( init_sprite_pointers/SCREENS_1+OFFSET_SPRITE_PTRS, init_sprite_pointers::@4/init_sprite_pointers::sprites_ptr_1#1 )
[899] init_sprite_pointers::screen#2 = phi( init_sprite_pointers/0, init_sprite_pointers::@4/init_sprite_pointers::screen#1 )
[900] if(init_sprite_pointers::screen#2<$e) goto init_sprite_pointers::@2
to:init_sprite_pointers::@return
init_sprite_pointers::@return: scope:[init_sprite_pointers] from init_sprite_pointers::@1
[901] return
to:@return
init_sprite_pointers::@2: scope:[init_sprite_pointers] from init_sprite_pointers::@1 init_sprite_pointers::@3
[902] init_sprite_pointers::sprite#2 = phi( init_sprite_pointers::@1/0, init_sprite_pointers::@3/init_sprite_pointers::sprite#1 )
[903] if(init_sprite_pointers::sprite#2<8) goto init_sprite_pointers::@3
to:init_sprite_pointers::@4
init_sprite_pointers::@4: scope:[init_sprite_pointers] from init_sprite_pointers::@2
[904] init_sprite_pointers::sprites_ptr_1#1 = init_sprite_pointers::sprites_ptr_1#5 + $400
[905] init_sprite_pointers::sprites_ptr_2#1 = init_sprite_pointers::sprites_ptr_2#5 + $400
[906] init_sprite_pointers::screen#1 = ++ init_sprite_pointers::screen#2
to:init_sprite_pointers::@1
init_sprite_pointers::@3: scope:[init_sprite_pointers] from init_sprite_pointers::@2
[907] init_sprite_pointers::$2 = init_sprite_pointers::SPRITE_ID_0 + init_sprite_pointers::screen#2
[908] init_sprite_pointers::sprite_id#0 = init_sprite_pointers::$2 + init_sprite_pointers::sprites_id[init_sprite_pointers::sprite#2]
[909] init_sprite_pointers::sprites_ptr_1#5[init_sprite_pointers::sprite#2] = init_sprite_pointers::sprite_id#0
[910] init_sprite_pointers::sprites_ptr_2#5[init_sprite_pointers::sprite#2] = init_sprite_pointers::sprite_id#0
[911] init_sprite_pointers::sprite#1 = ++ init_sprite_pointers::sprite#2
to:init_sprite_pointers::@2
void * memcpy(void *destination , void *source , unsigned int num)
memcpy: scope:[memcpy] from splash_run::@34
[912] phi()
to:memcpy::@1
memcpy::@1: scope:[memcpy] from memcpy memcpy::@2
[913] memcpy::dst#2 = phi( memcpy/(char *)memcpy::destination#0, memcpy::@2/memcpy::dst#1 )
[913] memcpy::src#2 = phi( memcpy/(char *)memcpy::source#0, memcpy::@2/memcpy::src#1 )
[914] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
to:memcpy::@return
memcpy::@return: scope:[memcpy] from memcpy::@1
[915] return
to:@return
memcpy::@2: scope:[memcpy] from memcpy::@1
[916] *memcpy::dst#2 = *memcpy::src#2
[917] memcpy::dst#1 = ++ memcpy::dst#2
[918] memcpy::src#1 = ++ memcpy::src#2
to:memcpy::@1
void joyinit()
joyinit: scope:[joyinit] from splash_run::@21
[919] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 0
to:joyinit::@return
joyinit::@return: scope:[joyinit] from joyinit
[920] return
to:@return
char joyfire()
joyfire: scope:[joyfire] from done_run::@14 splash_run::@14
[921] joyfire::$0 = *((char *)CIA1) & $10
[922] if(joyfire::$0==0) goto joyfire::@1
to:joyfire::@return
joyfire::@1: scope:[joyfire] from joyfire
[923] phi()
to:joyfire::@return
joyfire::@return: scope:[joyfire] from joyfire joyfire::@1
[924] joyfire::return#4 = phi( joyfire::@1/1, joyfire/0 )
[925] return
to:@return
void init_level_tile_directions()
init_level_tile_directions: scope:[init_level_tile_directions] from gameplay_run::@14
[926] phi()
to:init_level_tile_directions::@1
init_level_tile_directions::@1: scope:[init_level_tile_directions] from init_level_tile_directions init_level_tile_directions::@4
[927] init_level_tile_directions::directions#7 = phi( init_level_tile_directions/LEVEL_TILES_DIRECTIONS, init_level_tile_directions::@4/init_level_tile_directions::directions#1 )
[927] init_level_tile_directions::ytile#15 = phi( init_level_tile_directions/0, init_level_tile_directions::@4/init_level_tile_directions::ytile#1 )
[928] if(init_level_tile_directions::ytile#15<$25) goto init_level_tile_directions::@2
to:init_level_tile_directions::@return
init_level_tile_directions::@return: scope:[init_level_tile_directions] from init_level_tile_directions::@1
[929] return
to:@return
init_level_tile_directions::@2: scope:[init_level_tile_directions] from init_level_tile_directions::@1 init_level_tile_directions::@8
[930] init_level_tile_directions::xtile#10 = phi( init_level_tile_directions::@1/0, init_level_tile_directions::@8/init_level_tile_directions::xtile#1 )
[931] if(init_level_tile_directions::xtile#10<$32) goto init_level_tile_directions::@3
to:init_level_tile_directions::@4
init_level_tile_directions::@4: scope:[init_level_tile_directions] from init_level_tile_directions::@2
[932] init_level_tile_directions::directions#1 = init_level_tile_directions::directions#7 + $40
[933] init_level_tile_directions::ytile#1 = ++ init_level_tile_directions::ytile#15
to:init_level_tile_directions::@1
init_level_tile_directions::@3: scope:[init_level_tile_directions] from init_level_tile_directions::@2
[934] level_tile_get::xtile#0 = init_level_tile_directions::xtile#10 - 1
[935] level_tile_get::ytile#0 = init_level_tile_directions::ytile#15
[936] call level_tile_get
[937] level_tile_get::return#3 = level_tile_get::return#2
to:init_level_tile_directions::@13
init_level_tile_directions::@13: scope:[init_level_tile_directions] from init_level_tile_directions::@3
[938] init_level_tile_directions::$3 = level_tile_get::return#3
[939] if(TILES_TYPE[init_level_tile_directions::$3]==WALL) goto init_level_tile_directions::@5
to:init_level_tile_directions::@9
init_level_tile_directions::@9: scope:[init_level_tile_directions] from init_level_tile_directions::@13
[940] phi()
to:init_level_tile_directions::@5
init_level_tile_directions::@5: scope:[init_level_tile_directions] from init_level_tile_directions::@13 init_level_tile_directions::@9
[941] init_level_tile_directions::open_directions#11 = phi( init_level_tile_directions::@9/LEFT, init_level_tile_directions::@13/0 )
[942] level_tile_get::xtile#1 = init_level_tile_directions::xtile#10 + 1
[943] level_tile_get::ytile#1 = init_level_tile_directions::ytile#15
[944] call level_tile_get
[945] level_tile_get::return#4 = level_tile_get::return#2
to:init_level_tile_directions::@14
init_level_tile_directions::@14: scope:[init_level_tile_directions] from init_level_tile_directions::@5
[946] init_level_tile_directions::$7 = level_tile_get::return#4
[947] if(TILES_TYPE[init_level_tile_directions::$7]==WALL) goto init_level_tile_directions::@6
to:init_level_tile_directions::@10
init_level_tile_directions::@10: scope:[init_level_tile_directions] from init_level_tile_directions::@14
[948] init_level_tile_directions::open_directions#2 = init_level_tile_directions::open_directions#11 | RIGHT
to:init_level_tile_directions::@6
init_level_tile_directions::@6: scope:[init_level_tile_directions] from init_level_tile_directions::@10 init_level_tile_directions::@14
[949] init_level_tile_directions::open_directions#12 = phi( init_level_tile_directions::@10/init_level_tile_directions::open_directions#2, init_level_tile_directions::@14/init_level_tile_directions::open_directions#11 )
[950] level_tile_get::ytile#2 = init_level_tile_directions::ytile#15 - 1
[951] level_tile_get::xtile#2 = init_level_tile_directions::xtile#10
[952] call level_tile_get
[953] level_tile_get::return#10 = level_tile_get::return#2
to:init_level_tile_directions::@15
init_level_tile_directions::@15: scope:[init_level_tile_directions] from init_level_tile_directions::@6
[954] init_level_tile_directions::$11 = level_tile_get::return#10
[955] if(TILES_TYPE[init_level_tile_directions::$11]==WALL) goto init_level_tile_directions::@7
to:init_level_tile_directions::@11
init_level_tile_directions::@11: scope:[init_level_tile_directions] from init_level_tile_directions::@15
[956] init_level_tile_directions::open_directions#3 = init_level_tile_directions::open_directions#12 | UP
to:init_level_tile_directions::@7
init_level_tile_directions::@7: scope:[init_level_tile_directions] from init_level_tile_directions::@11 init_level_tile_directions::@15
[957] init_level_tile_directions::open_directions#13 = phi( init_level_tile_directions::@11/init_level_tile_directions::open_directions#3, init_level_tile_directions::@15/init_level_tile_directions::open_directions#12 )
[958] level_tile_get::ytile#3 = init_level_tile_directions::ytile#15 + 1
[959] level_tile_get::xtile#3 = init_level_tile_directions::xtile#10
[960] call level_tile_get
[961] level_tile_get::return#11 = level_tile_get::return#2
to:init_level_tile_directions::@16
init_level_tile_directions::@16: scope:[init_level_tile_directions] from init_level_tile_directions::@7
[962] init_level_tile_directions::$15 = level_tile_get::return#11
[963] if(TILES_TYPE[init_level_tile_directions::$15]==WALL) goto init_level_tile_directions::@8
to:init_level_tile_directions::@12
init_level_tile_directions::@12: scope:[init_level_tile_directions] from init_level_tile_directions::@16
[964] init_level_tile_directions::open_directions#4 = init_level_tile_directions::open_directions#13 | DOWN
to:init_level_tile_directions::@8
init_level_tile_directions::@8: scope:[init_level_tile_directions] from init_level_tile_directions::@12 init_level_tile_directions::@16
[965] init_level_tile_directions::open_directions#8 = phi( init_level_tile_directions::@12/init_level_tile_directions::open_directions#4, init_level_tile_directions::@16/init_level_tile_directions::open_directions#13 )
[966] init_level_tile_directions::directions#7[init_level_tile_directions::xtile#10] = init_level_tile_directions::open_directions#8
[967] init_level_tile_directions::xtile#1 = ++ init_level_tile_directions::xtile#10
to:init_level_tile_directions::@2
unsigned int level_show()
level_show: scope:[level_show] from gameplay_run::@16
[968] phi()
to:level_show::@1
level_show::@1: scope:[level_show] from level_show level_show::@4
[969] level_show::level#8 = phi( level_show/LEVEL_TILES, level_show::@4/level_show::level#1 )
[969] level_show::count#12 = phi( level_show/0, level_show::@4/level_show::count#10 )
[969] level_show::ytile#2 = phi( level_show/0, level_show::@4/level_show::ytile#1 )
[970] if(level_show::ytile#2<$25) goto level_show::@2
to:level_show::@return
level_show::@return: scope:[level_show] from level_show::@1
[971] return
to:@return
level_show::@2: scope:[level_show] from level_show::@1 level_show::@9
[972] level_show::count#10 = phi( level_show::@9/level_show::count#11, level_show::@1/level_show::count#12 )
[972] level_show::xtile#3 = phi( level_show::@9/level_show::xtile#2, level_show::@1/0 )
[972] level_show::xcol#2 = phi( level_show::@9/level_show::xcol#1, level_show::@1/0 )
[973] if(level_show::xcol#2<$19) goto level_show::@3
to:level_show::@4
level_show::@4: scope:[level_show] from level_show::@2
[974] level_show::level#1 = level_show::level#8 + $40
[975] level_show::ytile#1 = ++ level_show::ytile#2
to:level_show::@1
level_show::@3: scope:[level_show] from level_show::@2
[976] level_show::tile_left#0 = level_show::level#8[level_show::xtile#3]
[977] level_show::xtile#1 = ++ level_show::xtile#3
[978] if(TILES_TYPE[level_show::tile_left#0]!=PILL) goto level_show::@5
to:level_show::@7
level_show::@7: scope:[level_show] from level_show::@3
[979] level_show::count#1 = ++ level_show::count#10
to:level_show::@5
level_show::@5: scope:[level_show] from level_show::@3 level_show::@7
[980] level_show::count#5 = phi( level_show::@3/level_show::count#10, level_show::@7/level_show::count#1 )
[981] level_show::tile_right#0 = level_show::level#8[level_show::xtile#1]
[982] level_show::xtile#2 = ++ level_show::xtile#1
[983] if(TILES_TYPE[level_show::tile_right#0]!=PILL) goto level_show::@6
to:level_show::@8
level_show::@8: scope:[level_show] from level_show::@5
[984] level_show::count#2 = ++ level_show::count#5
to:level_show::@6
level_show::@6: scope:[level_show] from level_show::@5 level_show::@8
[985] level_show::count#11 = phi( level_show::@8/level_show::count#2, level_show::@5/level_show::count#5 )
[986] render_tiles::xcol#0 = level_show::xcol#2
[987] render_tiles::ytile#0 = level_show::ytile#2
[988] render_tiles::tile_left#0 = level_show::tile_left#0
[989] render_tiles::tile_right#0 = level_show::tile_right#0
[990] call render_tiles
to:level_show::@9
level_show::@9: scope:[level_show] from level_show::@6
[991] level_show::xcol#1 = ++ level_show::xcol#2
to:level_show::@2
void pacman_sound_init()
pacman_sound_init: scope:[pacman_sound_init] from gameplay_run::@18
[992] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE) = $f
[993] *((unsigned int *)SID) = 0
[994] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH) = 0
[995] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = 0
[996] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY) = 0
[997] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE) = $f0
to:pacman_sound_init::@return
pacman_sound_init::@return: scope:[pacman_sound_init] from pacman_sound_init
[998] return
to:@return
void render(char xcol , char ypos , char pixels)
render: scope:[render] from done_run::@12 splash_show::@3
[999] render::pixels#4 = phi( done_run::@12/render::pixels#0, splash_show::@3/render::pixels#1 )
[999] render::xcol#2 = phi( done_run::@12/render::xcol#0, splash_show::@3/render::xcol#1 )
[999] render::ypos#2 = phi( done_run::@12/render::ypos#0, splash_show::@3/render::ypos#1 )
[1000] render::ytile#0 = render::ypos#2 >> 2
[1001] render::$1 = byte1 RENDER_INDEX + render::xcol#2
[1002] render::$2 = render::ytile#0 << 1
[1003] render::render_index_xcol#0 = render::$1 w= render::$2
[1004] render::canvas_offset#0 = ((char *)render::render_index_xcol#0)[RENDER_OFFSET_CANVAS_HI] w= *((char *)render::render_index_xcol#0)
[1005] render::canvas1#0 = SPRITES_1 + render::canvas_offset#0
[1006] render::canvas2#0 = SPRITES_2 + render::canvas_offset#0
[1007] render::ypos_inc_offset#0 = ((char *)render::render_index_xcol#0)[RENDER_OFFSET_YPOS_INC]
[1008] render::ypix#0 = render::ypos#2 & 3
to:render::@1
render::@1: scope:[render] from render render::@2
[1009] render::canvas2#2 = phi( render/render::canvas2#0, render::@2/render::canvas2#1 )
[1009] render::ypos_inc_offset#2 = phi( render/render::ypos_inc_offset#0, render::@2/render::ypos_inc_offset#1 )
[1009] render::canvas1#2 = phi( render/render::canvas1#0, render::@2/render::canvas1#1 )
[1009] render::i#2 = phi( render/0, render::@2/render::i#1 )
[1010] if(render::i#2<render::ypix#0) goto render::@2
to:render::@3
render::@3: scope:[render] from render::@1
[1011] *render::canvas1#2 = render::pixels#4
[1012] *render::canvas2#2 = render::pixels#4
to:render::@return
render::@return: scope:[render] from render::@3
[1013] return
to:@return
render::@2: scope:[render] from render::@1
[1014] render::canvas1#1 = render::canvas1#2 + RENDER_YPOS_INC[render::ypos_inc_offset#2]
[1015] render::canvas2#1 = render::canvas2#2 + RENDER_YPOS_INC[render::ypos_inc_offset#2]
[1016] render::ypos_inc_offset#1 = ++ render::ypos_inc_offset#2
[1017] render::i#1 = ++ render::i#2
to:render::@1
char level_tile_get(char xtile , char ytile)
level_tile_get: scope:[level_tile_get] from init_level_tile_directions::@3 init_level_tile_directions::@5 init_level_tile_directions::@6 init_level_tile_directions::@7
[1018] level_tile_get::ytile#4 = phi( init_level_tile_directions::@3/level_tile_get::ytile#0, init_level_tile_directions::@5/level_tile_get::ytile#1, init_level_tile_directions::@6/level_tile_get::ytile#2, init_level_tile_directions::@7/level_tile_get::ytile#3 )
[1018] level_tile_get::xtile#4 = phi( init_level_tile_directions::@3/level_tile_get::xtile#0, init_level_tile_directions::@5/level_tile_get::xtile#1, init_level_tile_directions::@6/level_tile_get::xtile#2, init_level_tile_directions::@7/level_tile_get::xtile#3 )
[1019] if(level_tile_get::xtile#4>=$31+1) goto level_tile_get::@return
to:level_tile_get::@2
level_tile_get::@2: scope:[level_tile_get] from level_tile_get
[1020] if(level_tile_get::ytile#4>=$24+1) goto level_tile_get::@return
to:level_tile_get::@1
level_tile_get::@1: scope:[level_tile_get] from level_tile_get::@2
[1021] level_tile_get::$5 = level_tile_get::ytile#4 << 1
[1022] level_tile_get::ytiles#0 = LEVEL_TILES + LEVEL_YTILE_OFFSET[level_tile_get::$5]
[1023] level_tile_get::return#0 = level_tile_get::ytiles#0[level_tile_get::xtile#4]
to:level_tile_get::@return
level_tile_get::@return: scope:[level_tile_get] from level_tile_get level_tile_get::@1 level_tile_get::@2
[1024] level_tile_get::return#2 = phi( level_tile_get::@1/level_tile_get::return#0, level_tile_get/0, level_tile_get::@2/0 )
[1025] return
to:@return
void render_tiles(char xcol , char ytile , char tile_left , char tile_right)
render_tiles: scope:[render_tiles] from level_show::@6
[1026] render_tiles::$0 = render_tiles::tile_left#0 << 2
[1027] render_tiles::tile_left_pixels#0 = TILES_LEFT + render_tiles::$0
[1028] render_tiles::$2 = render_tiles::tile_right#0 << 2
[1029] render_tiles::tile_right_pixels#0 = TILES_RIGHT + render_tiles::$2
[1030] render_tiles::$4 = byte1 RENDER_INDEX + render_tiles::xcol#0
[1031] render_tiles::$5 = render_tiles::ytile#0 << 1
[1032] render_tiles::render_index_xcol#0 = render_tiles::$4 w= render_tiles::$5
[1033] render_tiles::canvas_offset#0 = ((char *)render_tiles::render_index_xcol#0)[RENDER_OFFSET_CANVAS_HI] w= *((char *)render_tiles::render_index_xcol#0)
[1034] render_tiles::canvas1#0 = SPRITES_1 + render_tiles::canvas_offset#0
[1035] render_tiles::canvas2#0 = SPRITES_2 + render_tiles::canvas_offset#0
[1036] render_tiles::ypos_inc_offset#0 = ((char *)render_tiles::render_index_xcol#0)[RENDER_OFFSET_YPOS_INC]
to:render_tiles::@1
render_tiles::@1: scope:[render_tiles] from render_tiles render_tiles::@2
[1037] render_tiles::ypos_inc_offset#2 = phi( render_tiles/render_tiles::ypos_inc_offset#0, render_tiles::@2/render_tiles::ypos_inc_offset#1 )
[1037] render_tiles::canvas2#2 = phi( render_tiles/render_tiles::canvas2#0, render_tiles::@2/render_tiles::canvas2#1 )
[1037] render_tiles::canvas1#2 = phi( render_tiles/render_tiles::canvas1#0, render_tiles::@2/render_tiles::canvas1#1 )
[1037] render_tiles::y#2 = phi( render_tiles/0, render_tiles::@2/render_tiles::y#1 )
[1038] if(render_tiles::y#2<4) goto render_tiles::@2
to:render_tiles::@return
render_tiles::@return: scope:[render_tiles] from render_tiles::@1
[1039] return
to:@return
render_tiles::@2: scope:[render_tiles] from render_tiles::@1
[1040] render_tiles::pixels#0 = render_tiles::tile_left_pixels#0[render_tiles::y#2] | render_tiles::tile_right_pixels#0[render_tiles::y#2]
[1041] *render_tiles::canvas1#2 = render_tiles::pixels#0
[1042] *render_tiles::canvas2#2 = render_tiles::pixels#0
[1043] render_tiles::canvas1#1 = render_tiles::canvas1#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2]
[1044] render_tiles::canvas2#1 = render_tiles::canvas2#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2]
[1045] render_tiles::ypos_inc_offset#1 = ++ render_tiles::ypos_inc_offset#2
[1046] render_tiles::y#1 = ++ render_tiles::y#2
to:render_tiles::@1
VARIABLE REGISTER WEIGHTS
void __start()
__loadstore volatile char anim_frame_idx // 0.9019607843137255
__loadstore volatile char bobs_restore_base // 1070.0
__loadstore volatile char bottom_sprites_color // 11040.0
__loadstore volatile char bottom_sprites_mc // 11040.0
void byteboozer_decrunch(char * volatile crunched)
__loadstore char * volatile byteboozer_decrunch::crunched // 438.5
__loadstore volatile char canvas_base_hi // 1070.0
char choose_direction(char open_directions , char ghost_xtile , char ghost_ytile , char target_xtile , char target_ytile)
char choose_direction::$2 // 202.0
char choose_direction::$4 // 202.0
char choose_direction::$6 // 202.0
char choose_direction::$8 // 202.0
char choose_direction::direction
char choose_direction::direction#10 // 28.857142857142858
char choose_direction::direction#6 // 67.33333333333333
char choose_direction::direction#8 // 57.714285714285715
char choose_direction::dist_down
char choose_direction::dist_down#0 // 151.5
char choose_direction::dist_left
char choose_direction::dist_left#0 // 151.5
char choose_direction::dist_min
char choose_direction::dist_min#10 // 121.2
char choose_direction::dist_min#11 // 101.0
char choose_direction::dist_min#13 // 202.0
char choose_direction::dist_min#14 // 202.0
char choose_direction::dist_min#17 // 202.0
char choose_direction::dist_min#18 // 202.0
char choose_direction::dist_min#6 // 80.8
char choose_direction::dist_right
char choose_direction::dist_right#0 // 202.0
char choose_direction::dist_up
char choose_direction::dist_up#0 // 101.0
char choose_direction::ghost_xtile
char choose_direction::ghost_xtile#0 // 5.5
char choose_direction::ghost_xtile#1 // 5.5
char choose_direction::ghost_xtile#2 // 5.5
char choose_direction::ghost_xtile#3 // 5.5
char choose_direction::ghost_xtile#4 // 145.0
char choose_direction::ghost_ytile
char choose_direction::ghost_ytile#0 // 7.333333333333333
char choose_direction::ghost_ytile#1 // 7.333333333333333
char choose_direction::ghost_ytile#2 // 7.333333333333333
char choose_direction::ghost_ytile#3 // 7.333333333333333
char choose_direction::ghost_ytile#4 // 72.5
char choose_direction::open_directions
char choose_direction::open_directions#0 // 4.4
char choose_direction::open_directions#1 // 4.4
char choose_direction::open_directions#10 // 19.478260869565215
char choose_direction::open_directions#2 // 4.4
char choose_direction::open_directions#3 // 4.4
char choose_direction::return
char choose_direction::return#0 // 22.0
char choose_direction::return#1 // 22.0
char choose_direction::return#10 // 41.0
char choose_direction::return#2 // 22.0
char choose_direction::return#3 // 22.0
char choose_direction::target_xtile
char choose_direction::target_xtile#0 // 11.0
char choose_direction::target_xtile#1 // 11.0
char choose_direction::target_xtile#2 // 11.0
char choose_direction::target_xtile#3 // 11.0
char choose_direction::target_xtile#4 // 145.0
char choose_direction::target_ytile
char choose_direction::target_ytile#0 // 22.0
char choose_direction::target_ytile#1 // 22.0
char choose_direction::target_ytile#2 // 22.0
char choose_direction::target_ytile#3 // 22.0
char choose_direction::target_ytile#4 // 72.5
char choose_direction::xdiff
char choose_direction::xdiff#0 // 21.041666666666664
char choose_direction::ydiff
char choose_direction::ydiff#0 // 21.956521739130434
void done_run()
char done_run::$8 // 2000002.0
char *done_run::gfx
char *done_run::gfx#1 // 333333.6666666667
char *done_run::gfx#2 // 800001.25
char *done_run::gfx#4 // 100001.0
char done_run::i
char done_run::i#1 // 200002.0
char done_run::i#2 // 133334.66666666666
char done_run::i1
char done_run::i1#1 // 200002.0
char done_run::i1#2 // 120001.2
char done_run::pixels
char done_run::pixels#0 // 500000.5
char done_run::xcol
char done_run::xcol#1 // 200002.0
char done_run::xcol#2 // 118182.18181818182
char done_run::ypos
char done_run::ypos#1 // 2000002.0
char done_run::ypos#2 // 500000.5
__loadstore volatile char frame // 0.5
void game_logic()
char game_logic::$119 // 22.0
char game_logic::$14 // 22.0
char game_logic::$140 // 22.0
char game_logic::$15 // 22.0
char game_logic::$161 // 22.0
char game_logic::$17 // 22.0
char game_logic::$18 // 22.0
char game_logic::$182 // 22.0
char game_logic::$19 // 11.0
char game_logic::$199 // 22.0
char game_logic::$2 // 22.0
char game_logic::$20 // 22.0
char game_logic::$200 // 22.0
char game_logic::$204 // 22.0
char game_logic::$21 // 22.0
char game_logic::$210 // 2.588235294117647
char game_logic::$220 // 11.0
char game_logic::$223 // 11.0
char game_logic::$226 // 11.0
char game_logic::$229 // 11.0
char game_logic::$232 // 11.0
char game_logic::$25 // 22.0
char game_logic::$26 // 22.0
char game_logic::$27 // 11.0
char game_logic::$28 // 22.0
char game_logic::$29 // 22.0
char game_logic::$3 // 22.0
char game_logic::$31 // 22.0
char game_logic::$32 // 22.0
char game_logic::$33 // 11.0
char game_logic::$34 // 22.0
char game_logic::$35 // 22.0
char game_logic::$37 // 22.0
char game_logic::$38 // 22.0
char game_logic::$39 // 11.0
char game_logic::$40 // 22.0
char game_logic::$41 // 22.0
char game_logic::$43 // 22.0
char game_logic::$44 // 22.0
char game_logic::$45 // 11.0
char game_logic::$46 // 22.0
char game_logic::$47 // 22.0
char game_logic::$65 // 22.0
char game_logic::$66 // 22.0
char *game_logic::$67 // 22.0
char game_logic::$68 // 22.0
char game_logic::$69 // 22.0
char game_logic::$70 // 22.0
char *game_logic::$71 // 22.0
char game_logic::$72 // 22.0
char game_logic::$75 // 11.0
char game_logic::$77 // 11.0
char game_logic::$80 // 11.0
char game_logic::$82 // 11.0
char game_logic::$85 // 11.0
char game_logic::$87 // 11.0
char game_logic::$90 // 11.0
char game_logic::$92 // 11.0
char game_logic::do_reverse
char game_logic::do_reverse#4 // 11.0
char game_logic::ghost1_bob_xfine
char game_logic::ghost1_bob_xfine#0 // 5.5
char game_logic::ghost1_xtile
char game_logic::ghost1_xtile#0 // 2.357142857142857
char game_logic::ghost1_ytile
char game_logic::ghost1_ytile#0 // 2.357142857142857
char game_logic::ghost2_bob_xfine
char game_logic::ghost2_bob_xfine#0 // 5.5
char game_logic::ghost2_xtile
char game_logic::ghost2_xtile#0 // 2.357142857142857
char game_logic::ghost2_ytile
char game_logic::ghost2_ytile#0 // 2.357142857142857
char game_logic::ghost3_bob_xfine
char game_logic::ghost3_bob_xfine#0 // 5.5
char game_logic::ghost3_xtile
char game_logic::ghost3_xtile#0 // 2.357142857142857
char game_logic::ghost3_ytile
char game_logic::ghost3_ytile#0 // 2.357142857142857
char game_logic::ghost4_bob_xfine
char game_logic::ghost4_bob_xfine#0 // 5.5
char game_logic::ghost4_xtile
char game_logic::ghost4_xtile#0 // 2.357142857142857
char game_logic::ghost4_ytile
char game_logic::ghost4_ytile#0 // 2.357142857142857
char game_logic::ghost_frame_idx
char game_logic::ghost_frame_idx#0 // 16.5
char game_logic::ghost_frame_idx#1 // 22.0
char game_logic::ghost_frame_idx#2 // 1.9999999999999998
char game_logic::joy_directions
char game_logic::joy_directions#0 // 16.5
char game_logic::new_direction
char game_logic::new_direction#0 // 16.5
char game_logic::open_directions
char game_logic::open_directions#0 // 22.0
char game_logic::open_directions#1 // 5.5
char game_logic::open_directions1
char game_logic::open_directions1#0 // 22.0
char game_logic::open_directions1#1 // 5.5
char game_logic::open_directions2
char game_logic::open_directions2#0 // 22.0
char game_logic::open_directions2#1 // 5.5
char game_logic::open_directions3
char game_logic::open_directions3#0 // 22.0
char game_logic::open_directions3#1 // 5.5
char game_logic::open_directions4
char game_logic::open_directions4#0 // 3.666666666666667
char game_logic::pacman_bob_xfine
char game_logic::pacman_bob_xfine#0 // 5.5
char game_logic::pacman_xtile
char game_logic::pacman_xtile#0 // 6.769230769230768
char game_logic::pacman_xtile1
char game_logic::pacman_xtile1#0 // 11.0
char game_logic::pacman_ytile
char game_logic::pacman_ytile#0 // 22.0
char game_logic::pacman_ytile1
char game_logic::pacman_ytile1#0 // 11.0
char game_logic::target_xtile
char game_logic::target_xtile#2 // 11.0
char game_logic::target_xtile#3 // 5.5
char game_logic::target_xtile1
char game_logic::target_xtile1#2 // 11.0
char game_logic::target_xtile1#3 // 5.5
char game_logic::target_xtile2
char game_logic::target_xtile2#2 // 11.0
char game_logic::target_xtile2#3 // 5.5
char game_logic::target_xtile3
char game_logic::target_xtile3#2 // 11.0
char game_logic::target_xtile3#3 // 5.5
char game_logic::target_ytile
char game_logic::target_ytile#2 // 22.0
char game_logic::target_ytile#3 // 4.4
char game_logic::target_ytile1
char game_logic::target_ytile1#2 // 22.0
char game_logic::target_ytile1#3 // 4.4
char game_logic::target_ytile2
char game_logic::target_ytile2#2 // 22.0
char game_logic::target_ytile2#3 // 4.4
char game_logic::target_ytile3
char game_logic::target_ytile3#2 // 22.0
char game_logic::target_ytile3#3 // 4.4
char game_logic::tile_id
char game_logic::tile_id#0 // 16.5
char *game_logic::ytiles
char *game_logic::ytiles#0 // 5.5
__loadstore volatile char game_logic_substep // 2.947368421052632
__loadstore volatile char game_playable // 69.48275862068965
void gameplay_run()
unsigned int gameplay_run::$4 // 2002.0
char gameplay_run::i
char gameplay_run::i#1 // 200002.0
char gameplay_run::i#2 // 133334.66666666666
char gameplay_run::i1
char gameplay_run::i1#1 // 200002.0
char gameplay_run::i1#2 // 133334.66666666666
char gameplay_run::i2
char gameplay_run::i2#1 // 200002.0
char gameplay_run::i2#2 // 133334.66666666666
__loadstore volatile char ghost1_direction // 122.24096385542168
__loadstore volatile char ghost1_respawn // 271.8378378378378
__loadstore volatile char ghost1_reverse // 0.7291666666666666
__loadstore volatile char ghost1_substep // 223.51111111111112
__loadstore volatile char ghost1_xfine // 84.55
__loadstore volatile char ghost1_yfine // 82.13008130081302
__loadstore volatile char ghost2_direction // 110.28260869565217
__loadstore volatile char ghost2_respawn // 264.6842105263158
__loadstore volatile char ghost2_reverse // 0.7142857142857143
__loadstore volatile char ghost2_substep // 218.65217391304347
__loadstore volatile char ghost2_xfine // 76.28571428571428
__loadstore volatile char ghost2_yfine // 74.27941176470588
__loadstore volatile char ghost3_direction // 100.45544554455446
__loadstore volatile char ghost3_respawn // 257.8974358974359
__loadstore volatile char ghost3_reverse // 0.7
__loadstore volatile char ghost3_substep // 214.0
__loadstore volatile char ghost3_xfine // 69.4931506849315
__loadstore volatile char ghost3_yfine // 67.7986577181208
__loadstore volatile char ghost4_direction // 92.23636363636363
__loadstore volatile char ghost4_respawn // 251.45000000000002
__loadstore volatile char ghost4_reverse // 0.6862745098039216
__loadstore volatile char ghost4_substep // 209.54166666666666
__loadstore volatile char ghost4_xfine // 63.81132075471698
__loadstore volatile char ghost4_yfine // 62.358024691358025
__loadstore volatile char ghosts_mode // 1.1044776119402984
__loadstore volatile char ghosts_mode_count // 234.93023255813955
void init_bobs_restore()
char init_bobs_restore::bob
char init_bobs_restore::bob#1 // 20002.0
char init_bobs_restore::bob#2 // 2727.5454545454545
char *init_bobs_restore::bob_restore
char *init_bobs_restore::bob_restore#1 // 10001.0
char *init_bobs_restore::bob_restore#5 // 16000.7
char init_bobs_restore::i
char init_bobs_restore::i#1 // 200002.0
char init_bobs_restore::i#2 // 133334.66666666666
void init_level_tile_directions()
char init_level_tile_directions::$11 // 2.0000002E7
char init_level_tile_directions::$15 // 2.0000002E7
char init_level_tile_directions::$3 // 2.0000002E7
char init_level_tile_directions::$7 // 2.0000002E7
char *init_level_tile_directions::directions
char *init_level_tile_directions::directions#1 // 1000001.0
char *init_level_tile_directions::directions#7 // 315789.55263157893
char init_level_tile_directions::open_directions
char init_level_tile_directions::open_directions#11 // 2857143.1428571427
char init_level_tile_directions::open_directions#12 // 5714286.285714285
char init_level_tile_directions::open_directions#13 // 5714286.285714285
char init_level_tile_directions::open_directions#2 // 2.0000002E7
char init_level_tile_directions::open_directions#3 // 2.0000002E7
char init_level_tile_directions::open_directions#4 // 2.0000002E7
char init_level_tile_directions::open_directions#8 // 3.0000003E7
char init_level_tile_directions::xtile
char init_level_tile_directions::xtile#1 // 2.0000002E7
char init_level_tile_directions::xtile#10 // 2285714.514285714
char init_level_tile_directions::ytile
char init_level_tile_directions::ytile#1 // 2000002.0
char init_level_tile_directions::ytile#15 // 1102564.282051282
void init_render_index()
unsigned int init_render_index::$10 // 200002.0
unsigned int init_render_index::$11 // 200002.0
unsigned int *init_render_index::$12 // 200002.0
char init_render_index::$5 // 200002.0
char init_render_index::$6 // 200002.0
char init_render_index::$9 // 20002.0
char *init_render_index::canvas
char *init_render_index::canvas#0 // 100001.0
char *init_render_index::canvas_xcol
char *init_render_index::canvas_xcol#0 // 5789.578947368421
char *init_render_index::render_index
char *init_render_index::render_index#1 // 10001.0
char *init_render_index::render_index_xcol
char *init_render_index::render_index_xcol#0 // 1200.1200000000001
char *init_render_index::render_index_xcol#1 // 100001.0
char *init_render_index::render_index_xcol#2 // 34000.4
char *init_render_index::render_index_xcol#7 // 20002.0
unsigned int *init_render_index::render_ypos_table
unsigned int *init_render_index::render_ypos_table#4 // 4761.952380952381
char init_render_index::x_col
char init_render_index::x_col#1 // 20002.0
char init_render_index::x_col#2 // 1923.2692307692307
char init_render_index::y_pos
char init_render_index::y_pos#1 // 200002.0
char init_render_index::y_pos#2 // 18750.1875
char init_render_index::ypos_inc_offset
char init_render_index::ypos_inc_offset#2 // 200002.0
char init_render_index::ypos_inc_offset#3 // 200002.0
char init_render_index::ypos_inc_offset#4 // 28182.181818181816
char init_render_index::ypos_inc_offset#7 // 2500.25
char init_render_index::ypos_inc_offset#8 // 100001.0
void init_sprite_pointers()
char init_sprite_pointers::$2 // 2.0000002E7
char init_sprite_pointers::screen
char init_sprite_pointers::screen#1 // 2000002.0
char init_sprite_pointers::screen#2 // 1181818.5454545454
char init_sprite_pointers::sprite
char init_sprite_pointers::sprite#1 // 2.0000002E7
char init_sprite_pointers::sprite#2 // 1.0000001E7
char init_sprite_pointers::sprite_id
char init_sprite_pointers::sprite_id#0 // 1.50000015E7
char *init_sprite_pointers::sprites_ptr_1
char *init_sprite_pointers::sprites_ptr_1#1 // 666667.3333333334
char *init_sprite_pointers::sprites_ptr_1#5 // 1333333.6666666667
char *init_sprite_pointers::sprites_ptr_2
char *init_sprite_pointers::sprites_ptr_2#1 // 1000001.0
char *init_sprite_pointers::sprites_ptr_2#5 // 1200000.3
__interrupt(hardware_clobber) void irq_screen_top()
char irq_screen_top::$1 // 4.0
char irq_screen_top::$2 // 4.0
char *irq_screen_top::toD0181_gfx
char irq_screen_top::toD0181_return
char *irq_screen_top::toD0181_screen
char *irq_screen_top::toDd001_gfx
char irq_screen_top::toDd001_return
char *irq_screen_top::toDd002_gfx
char irq_screen_top::toDd002_return
char joyfire()
char joyfire::$0 // 2.0000002E7
char joyfire::return
char joyfire::return#0 // 2000002.0
char joyfire::return#1 // 20002.0
char joyfire::return#4 // 252500.5
void joyinit()
__loadstore char * volatile left_canvas // 20.0
__loadstore char * volatile left_render_index_xcol // 20.0
__loadstore volatile char left_ypos_inc_offset // 20.0
unsigned int level_show()
unsigned int level_show::count
unsigned int level_show::count#1 // 2.0000002E7
unsigned int level_show::count#10 // 4571429.285714285
unsigned int level_show::count#11 // 4285714.714285715
unsigned int level_show::count#12 // 500250.75
unsigned int level_show::count#2 // 2.0000002E7
unsigned int level_show::count#5 // 1.0000001E7
char *level_show::level
char *level_show::level#1 // 1000001.0
char *level_show::level#8 // 1100000.2
unsigned int level_show::return
unsigned int level_show::return#0 // 2002.0
char level_show::tile_left
char level_show::tile_left#0 // 2500000.25
char level_show::tile_right
char level_show::tile_right#0 // 3750000.375
char level_show::xcol
char level_show::xcol#1 // 2.0000002E7
char level_show::xcol#2 // 2352941.411764706
char level_show::xtile
char level_show::xtile#1 // 6000000.6
char level_show::xtile#2 // 2000000.2
char level_show::xtile#3 // 1.0000001E7
char level_show::ytile
char level_show::ytile#1 // 2000002.0
char level_show::ytile#2 // 619047.8095238095
char level_tile_directions(char xtile , char ytile)
char level_tile_directions::$5 // 202.0
char level_tile_directions::return
char level_tile_directions::return#0 // 202.0
char level_tile_directions::return#10 // 22.0
char level_tile_directions::return#11 // 22.0
char level_tile_directions::return#12 // 22.0
char level_tile_directions::return#13 // 22.0
char level_tile_directions::return#2 // 22.285714285714285
char level_tile_directions::return#3 // 22.0
char level_tile_directions::xtile
char level_tile_directions::xtile#0 // 11.0
char level_tile_directions::xtile#1 // 11.0
char level_tile_directions::xtile#2 // 11.0
char level_tile_directions::xtile#3 // 11.0
char level_tile_directions::xtile#4 // 11.0
char level_tile_directions::xtile#5 // 51.4
char level_tile_directions::ytile
char level_tile_directions::ytile#0 // 22.0
char level_tile_directions::ytile#1 // 22.0
char level_tile_directions::ytile#2 // 22.0
char level_tile_directions::ytile#3 // 22.0
char level_tile_directions::ytile#4 // 22.0
char level_tile_directions::ytile#5 // 85.66666666666666
char *level_tile_directions::ytiles
char *level_tile_directions::ytiles#0 // 202.0
char level_tile_get(char xtile , char ytile)
char level_tile_get::$5 // 2.00000002E8
char level_tile_get::return
char level_tile_get::return#0 // 2.00000002E8
char level_tile_get::return#10 // 2.0000002E7
char level_tile_get::return#11 // 2.0000002E7
char level_tile_get::return#2 // 2.3333334166666668E7
char level_tile_get::return#3 // 2.0000002E7
char level_tile_get::return#4 // 2.0000002E7
char level_tile_get::xtile
char level_tile_get::xtile#0 // 1.0000001E7
char level_tile_get::xtile#1 // 1.0000001E7
char level_tile_get::xtile#2 // 2.0000002E7
char level_tile_get::xtile#3 // 2.0000002E7
char level_tile_get::xtile#4 // 4.80000012E7
char level_tile_get::ytile
char level_tile_get::ytile#0 // 2.0000002E7
char level_tile_get::ytile#1 // 2.0000002E7
char level_tile_get::ytile#2 // 1.0000001E7
char level_tile_get::ytile#3 // 1.0000001E7
char level_tile_get::ytile#4 // 8.0000002E7
char *level_tile_get::ytiles
char *level_tile_get::ytiles#0 // 2.00000002E8
__loadstore volatile char logic_tile_left_idx // 20.0
__loadstore volatile char * volatile logic_tile_ptr // 10250.0
__loadstore volatile char logic_tile_right_idx // 20.0
__loadstore volatile char logic_tile_xcol // 10250.0
__loadstore volatile char logic_tile_yfine // 10250.0
void main()
void * memcpy(void *destination , void *source , unsigned int num)
void *memcpy::destination
char *memcpy::dst
char *memcpy::dst#1 // 10001.0
char *memcpy::dst#2 // 10001.0
unsigned int memcpy::num
void *memcpy::return
void *memcpy::source
char *memcpy::src
char *memcpy::src#1 // 20002.0
char *memcpy::src#2 // 10001.0
char *memcpy::src_end
void * memset(void *str , char c , unsigned int num)
char memset::c
char *memset::dst
char *memset::dst#1 // 20002.0
char *memset::dst#2 // 13668.333333333332
char *memset::dst#4 // 2002.0
char *memset::end
char *memset::end#0 // 1833.6666666666665
unsigned int memset::num
unsigned int memset::num#5 // 1001.0
void *memset::return
void *memset::str
void *memset::str#6
void merge_code(char *dest_code , char *raster_code , char *logic_code)
char merge_code::$5 // 100001.0
char merge_code::cycle_budget
char merge_code::cycle_budget#0 // 10001.0
char merge_code::cycle_budget#1 // 200002.0
char merge_code::cycle_budget#10 // 88889.77777777777
char merge_code::cycle_budget#13 // 50714.857142857145
char merge_code::cycle_budget#2 // 200002.0
char merge_code::cycle_budget#3 // 200002.0
char *merge_code::dest_code
char *merge_code::dest_code#0 // 10001.0
char *merge_code::dest_code#1 // 1000001.0
char *merge_code::dest_code#10 // 180001.80000000002
char *merge_code::dest_code#12 // 10334.666666666666
char *merge_code::dest_code#13 // 80001.25
char *merge_code::dest_code#14 // 21429.428571428572
char *merge_code::dest_code#15 // 640001.0
char *merge_code::dest_code#2 // 150001.5
char *merge_code::dest_code#21 // 51250.625
char *merge_code::dest_code#3 // 100001.0
char *merge_code::dest_code#4 // 100001.0
char *merge_code::dest_code#6 // 100001.0
char *merge_code::logic_code
char *merge_code::logic_code#0 // 200002.0
char *merge_code::logic_code#1 // 2000002.0
char *merge_code::logic_code#10 // 1050001.5
char *merge_code::logic_code#12 // 20002.0
char *merge_code::logic_code#14 // 105001.5
char *merge_code::logic_code#17 // 22778.055555555555
char *merge_code::logic_code#18 // 15556.111111111113
char *merge_code::logic_code#2 // 100001.0
char *merge_code::logic_code#3 // 20002.0
char *merge_code::logic_code#4 // 200002.0
char *merge_code::logic_code#5 // 20002.0
char merge_code::logic_cycles
char merge_code::logic_cycles#0 // 41667.08333333333
char *merge_code::raster_code
char *merge_code::raster_code#0 // 20002.0
char *merge_code::raster_code#1 // 15001.5
char *merge_code::raster_code#2 // 3928.6428571428573
char *merge_code::raster_code#4 // 37501.5
__loadstore volatile char music_play_next // 69506.875
__loadstore volatile char pacman_ch1_enabled // 0.08254716981132076
__loadstore volatile char pacman_ch1_idx // 1.9428571428571428
__loadstore volatile char pacman_direction // 132.92105263157893
__loadstore volatile char pacman_lives // 656.4415584415585
void pacman_sound_init()
void pacman_sound_play()
__loadstore volatile char pacman_substep // 233.39534883720933
__loadstore volatile char pacman_wins // 2040.32
__loadstore volatile char pacman_xfine // 47.719626168224295
__loadstore volatile char pacman_yfine // 46.21818181818182
__loadstore volatile char phase // 78.03703703703704
__loadstore volatile unsigned int pill_count // 14.191780821917808
void render(char xcol , char ypos , char pixels)
char render::$1 // 1.0000001E7
char render::$2 // 2.0000002E7
char *render::canvas1
char *render::canvas1#0 // 5000000.5
char *render::canvas1#1 // 5.00000000005E10
char *render::canvas1#2 // 1.00010000002E11
char *render::canvas2
char *render::canvas2#0 // 6666667.333333333
char *render::canvas2#1 // 6.6666666667333336E10
char *render::canvas2#2 // 5.0005000001E10
unsigned int render::canvas_offset
unsigned int render::canvas_offset#0 // 1.50000015E7
char render::i
char render::i#1 // 2.00000000002E11
char render::i#2 // 6.0000000000600006E10
char render::pixels
char render::pixels#0 // 2000002.0
char render::pixels#1 // 200002.0
char render::pixels#4 // 1241176.705882353
char *render::render_index_xcol
unsigned int render::render_index_xcol#0 // 2500000.25
char render::xcol
char render::xcol#0 // 666667.3333333334
char render::xcol#1 // 66667.33333333333
char render::xcol#2 // 5550001.5
char render::ypix
char render::ypix#0 // 1.4287142857428572E10
char render::ypos
char render::ypos#0 // 1000001.0
char render::ypos#1 // 100001.0
char render::ypos#2 // 2344444.888888889
char render::ypos_inc_offset
char render::ypos_inc_offset#0 // 1.0000001E7
char render::ypos_inc_offset#1 // 1.00000000001E11
char render::ypos_inc_offset#2 // 1.0000250000125E11
char render::ytile
char render::ytile#0 // 1.0000001E7
void render_tiles(char xcol , char ytile , char tile_left , char tile_right)
char render_tiles::$0 // 2.00000002E8
char render_tiles::$2 // 2.00000002E8
char render_tiles::$4 // 1.00000001E8
char render_tiles::$5 // 2.00000002E8
char *render_tiles::canvas1
char *render_tiles::canvas1#0 // 6.6666667333333336E7
char *render_tiles::canvas1#1 // 5.000000000005E11
char *render_tiles::canvas1#2 // 6.000200000008E11
char *render_tiles::canvas2
char *render_tiles::canvas2#0 // 1.00000001E8
char *render_tiles::canvas2#1 // 6.666666666673334E11
char *render_tiles::canvas2#2 // 5.000166666673334E11
unsigned int render_tiles::canvas_offset
unsigned int render_tiles::canvas_offset#0 // 1.500000015E8
char render_tiles::pixels
char render_tiles::pixels#0 // 1.5000000000015E12
char *render_tiles::render_index_xcol
unsigned int render_tiles::render_index_xcol#0 // 2.500000025E7
char render_tiles::tile_left
char render_tiles::tile_left#0 // 5.5000001E7
char *render_tiles::tile_left_pixels
char *render_tiles::tile_left_pixels#0 // 5.2636842105368416E10
char render_tiles::tile_right
char render_tiles::tile_right#0 // 3.6666667333333336E7
char *render_tiles::tile_right_pixels
char *render_tiles::tile_right_pixels#0 // 5.882941176482353E10
char render_tiles::xcol
char render_tiles::xcol#0 // 1.375000025E7
char render_tiles::y
char render_tiles::y#1 // 2.000000000002E12
char render_tiles::y#2 // 6.25000000000625E11
char render_tiles::ypos_inc_offset
char render_tiles::ypos_inc_offset#0 // 2.00000002E8
char render_tiles::ypos_inc_offset#1 // 1.000000000001E12
char render_tiles::ypos_inc_offset#2 // 5.714428571435714E11
char render_tiles::ytile
char render_tiles::ytile#0 // 1.375000025E7
__loadstore char * volatile rigt_canvas // 20.0
__loadstore char * volatile rigt_render_index_xcol // 20.0
__loadstore volatile char rigt_ypos_inc_offset // 20.0
__loadstore volatile char side_sprites_color // 11040.0
__loadstore volatile char side_sprites_mc // 11040.0
void spawn_all()
void splash_run()
char splash_run::$25 // 2002.0
char splash_run::$30 // 20002.0
char splash_run::$34 // 1334.6666666666667
char splash_run::i
char splash_run::i#1 // 2002.0
char splash_run::i#2 // 364.0
char splash_run::i1
char splash_run::i1#1 // 2002.0
char splash_run::i1#2 // 1334.6666666666667
char splash_run::i2
char splash_run::i2#1 // 2002.0
char splash_run::i2#2 // 1201.2
char splash_run::msb
char splash_run::msb#1 // 1001.0
char splash_run::msb#10 // 175.25
char splash_run::msb#2 // 2002.0
char splash_run::msb#8 // 1501.5
char *splash_run::toD0181_gfx
char splash_run::toD0181_return
char *splash_run::toD0181_screen
char *splash_run::toDd001_gfx
char splash_run::toDd001_return
unsigned int splash_run::xpos
unsigned int splash_run::xpos#0 // 667.3333333333334
void splash_show()
char splash_show::pixels
char splash_show::pixels#0 // 50000.5
char *splash_show::splash
char *splash_show::splash#1 // 33333.666666666664
char *splash_show::splash#2 // 80001.25
char *splash_show::splash#4 // 10001.0
char splash_show::xcol
char splash_show::xcol#1 // 20002.0
char splash_show::xcol#2 // 11818.545454545454
char splash_show::ypos
char splash_show::ypos#1 // 200002.0
char splash_show::ypos#2 // 50000.5
__loadstore volatile char top_sprites_color // 3403.666666666667
__loadstore volatile char top_sprites_mc // 92.0
Initial phi equivalence classes
[ game_logic::ghost_frame_idx#2 game_logic::ghost_frame_idx#0 game_logic::ghost_frame_idx#1 ]
[ game_logic::do_reverse#4 ]
[ game_logic::target_xtile#3 game_logic::target_xtile#2 ]
[ game_logic::target_ytile#3 game_logic::target_ytile#2 ]
[ game_logic::target_xtile1#3 game_logic::target_xtile1#2 ]
[ game_logic::target_ytile1#3 game_logic::target_ytile1#2 ]
[ game_logic::target_xtile2#3 game_logic::target_xtile2#2 ]
[ game_logic::target_ytile2#3 game_logic::target_ytile2#2 ]
[ game_logic::target_xtile3#3 game_logic::target_xtile3#2 ]
[ game_logic::target_ytile3#3 game_logic::target_ytile3#2 ]
[ splash_run::i#2 splash_run::i#1 ]
[ splash_run::msb#10 splash_run::msb#8 splash_run::msb#1 splash_run::msb#2 ]
[ splash_run::i1#2 splash_run::i1#1 ]
[ splash_run::i2#2 splash_run::i2#1 ]
[ gameplay_run::i#2 gameplay_run::i#1 ]
[ gameplay_run::i1#2 gameplay_run::i1#1 ]
[ gameplay_run::i2#2 gameplay_run::i2#1 ]
[ done_run::i#2 done_run::i#1 ]
[ done_run::i1#2 done_run::i1#1 ]
[ done_run::xcol#2 done_run::xcol#1 ]
[ done_run::gfx#4 done_run::gfx#2 done_run::gfx#1 ]
[ done_run::ypos#2 done_run::ypos#1 ]
[ level_tile_directions::xtile#5 level_tile_directions::xtile#1 level_tile_directions::xtile#2 level_tile_directions::xtile#3 level_tile_directions::xtile#4 level_tile_directions::xtile#0 ]
[ level_tile_directions::ytile#5 level_tile_directions::ytile#1 level_tile_directions::ytile#2 level_tile_directions::ytile#3 level_tile_directions::ytile#4 level_tile_directions::ytile#0 ]
[ level_tile_directions::return#2 level_tile_directions::return#0 ]
[ choose_direction::ghost_xtile#4 choose_direction::ghost_xtile#2 choose_direction::ghost_xtile#3 choose_direction::ghost_xtile#0 choose_direction::ghost_xtile#1 ]
[ choose_direction::target_xtile#4 choose_direction::target_xtile#2 choose_direction::target_xtile#3 choose_direction::target_xtile#0 choose_direction::target_xtile#1 ]
[ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 ]
[ choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 ]
[ choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ]
[ choose_direction::dist_min#6 choose_direction::dist_up#0 ]
[ choose_direction::dist_min#10 choose_direction::dist_min#13 choose_direction::dist_min#14 choose_direction::dist_down#0 ]
[ choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ]
[ choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ]
[ memset::num#5 ]
[ memset::str#6 ]
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
[ merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 ]
[ merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 ]
[ merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 ]
[ merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 ]
[ merge_code::cycle_budget#10 merge_code::cycle_budget#2 merge_code::cycle_budget#3 merge_code::cycle_budget#13 merge_code::cycle_budget#0 merge_code::cycle_budget#1 ]
[ merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 ]
[ init_render_index::x_col#2 init_render_index::x_col#1 ]
[ init_render_index::render_index_xcol#0 init_render_index::render_index#1 ]
[ init_render_index::render_ypos_table#4 ]
[ init_render_index::y_pos#2 init_render_index::y_pos#1 ]
[ init_render_index::render_index_xcol#2 init_render_index::render_index_xcol#7 init_render_index::render_index_xcol#1 ]
[ init_render_index::ypos_inc_offset#4 init_render_index::ypos_inc_offset#7 init_render_index::ypos_inc_offset#8 init_render_index::ypos_inc_offset#2 init_render_index::ypos_inc_offset#3 ]
[ splash_show::xcol#2 splash_show::xcol#1 ]
[ splash_show::splash#4 splash_show::splash#2 splash_show::splash#1 ]
[ splash_show::ypos#2 splash_show::ypos#1 ]
[ init_bobs_restore::bob#2 init_bobs_restore::bob#1 ]
[ init_bobs_restore::bob_restore#5 init_bobs_restore::bob_restore#1 ]
[ init_bobs_restore::i#2 init_bobs_restore::i#1 ]
[ init_sprite_pointers::screen#2 init_sprite_pointers::screen#1 ]
[ init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_1#1 ]
[ init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_2#1 ]
[ init_sprite_pointers::sprite#2 init_sprite_pointers::sprite#1 ]
[ memcpy::src#2 memcpy::src#1 ]
[ memcpy::dst#2 memcpy::dst#1 ]
[ joyfire::return#4 ]
[ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 ]
[ init_level_tile_directions::directions#7 init_level_tile_directions::directions#1 ]
[ init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 ]
[ init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ]
[ level_show::ytile#2 level_show::ytile#1 ]
[ level_show::level#8 level_show::level#1 ]
[ level_show::xcol#2 level_show::xcol#1 ]
[ level_show::xtile#3 level_show::xtile#2 ]
[ level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 ]
[ render::ypos#2 render::ypos#0 render::ypos#1 ]
[ render::xcol#2 render::xcol#0 render::xcol#1 ]
[ render::pixels#4 render::pixels#0 render::pixels#1 ]
[ render::i#2 render::i#1 ]
[ render::canvas1#2 render::canvas1#0 render::canvas1#1 ]
[ render::ypos_inc_offset#2 render::ypos_inc_offset#0 render::ypos_inc_offset#1 ]
[ render::canvas2#2 render::canvas2#0 render::canvas2#1 ]
[ level_tile_get::xtile#4 level_tile_get::xtile#0 level_tile_get::xtile#1 level_tile_get::xtile#2 level_tile_get::xtile#3 ]
[ level_tile_get::ytile#4 level_tile_get::ytile#0 level_tile_get::ytile#1 level_tile_get::ytile#2 level_tile_get::ytile#3 ]
[ level_tile_get::return#2 level_tile_get::return#0 ]
[ render_tiles::y#2 render_tiles::y#1 ]
[ render_tiles::canvas1#2 render_tiles::canvas1#0 render_tiles::canvas1#1 ]
[ render_tiles::canvas2#2 render_tiles::canvas2#0 render_tiles::canvas2#1 ]
[ render_tiles::ypos_inc_offset#2 render_tiles::ypos_inc_offset#0 render_tiles::ypos_inc_offset#1 ]
Added variable pacman_ch1_enabled to live range equivalence class [ pacman_ch1_enabled ]
Added variable pacman_ch1_idx to live range equivalence class [ pacman_ch1_idx ]
Added variable logic_tile_ptr to live range equivalence class [ logic_tile_ptr ]
Added variable logic_tile_xcol to live range equivalence class [ logic_tile_xcol ]
Added variable logic_tile_yfine to live range equivalence class [ logic_tile_yfine ]
Added variable logic_tile_left_idx to live range equivalence class [ logic_tile_left_idx ]
Added variable logic_tile_right_idx to live range equivalence class [ logic_tile_right_idx ]
Added variable left_render_index_xcol to live range equivalence class [ left_render_index_xcol ]
Added variable left_canvas to live range equivalence class [ left_canvas ]
Added variable left_ypos_inc_offset to live range equivalence class [ left_ypos_inc_offset ]
Added variable rigt_render_index_xcol to live range equivalence class [ rigt_render_index_xcol ]
Added variable rigt_canvas to live range equivalence class [ rigt_canvas ]
Added variable rigt_ypos_inc_offset to live range equivalence class [ rigt_ypos_inc_offset ]
Added variable canvas_base_hi to live range equivalence class [ canvas_base_hi ]
Added variable bobs_restore_base to live range equivalence class [ bobs_restore_base ]
Added variable top_sprites_color to live range equivalence class [ top_sprites_color ]
Added variable top_sprites_mc to live range equivalence class [ top_sprites_mc ]
Added variable side_sprites_color to live range equivalence class [ side_sprites_color ]
Added variable side_sprites_mc to live range equivalence class [ side_sprites_mc ]
Added variable bottom_sprites_color to live range equivalence class [ bottom_sprites_color ]
Added variable bottom_sprites_mc to live range equivalence class [ bottom_sprites_mc ]
Added variable pill_count to live range equivalence class [ pill_count ]
Added variable pacman_wins to live range equivalence class [ pacman_wins ]
Added variable pacman_lives to live range equivalence class [ pacman_lives ]
Added variable music_play_next to live range equivalence class [ music_play_next ]
Added variable phase to live range equivalence class [ phase ]
Added variable frame to live range equivalence class [ frame ]
Added variable anim_frame_idx to live range equivalence class [ anim_frame_idx ]
Added variable pacman_xfine to live range equivalence class [ pacman_xfine ]
Added variable pacman_yfine to live range equivalence class [ pacman_yfine ]
Added variable pacman_direction to live range equivalence class [ pacman_direction ]
Added variable pacman_substep to live range equivalence class [ pacman_substep ]
Added variable ghosts_mode to live range equivalence class [ ghosts_mode ]
Added variable ghosts_mode_count to live range equivalence class [ ghosts_mode_count ]
Added variable ghost1_xfine to live range equivalence class [ ghost1_xfine ]
Added variable ghost1_yfine to live range equivalence class [ ghost1_yfine ]
Added variable ghost1_direction to live range equivalence class [ ghost1_direction ]
Added variable ghost1_substep to live range equivalence class [ ghost1_substep ]
Added variable ghost1_reverse to live range equivalence class [ ghost1_reverse ]
Added variable ghost1_respawn to live range equivalence class [ ghost1_respawn ]
Added variable ghost2_xfine to live range equivalence class [ ghost2_xfine ]
Added variable ghost2_yfine to live range equivalence class [ ghost2_yfine ]
Added variable ghost2_direction to live range equivalence class [ ghost2_direction ]
Added variable ghost2_substep to live range equivalence class [ ghost2_substep ]
Added variable ghost2_reverse to live range equivalence class [ ghost2_reverse ]
Added variable ghost2_respawn to live range equivalence class [ ghost2_respawn ]
Added variable ghost3_xfine to live range equivalence class [ ghost3_xfine ]
Added variable ghost3_yfine to live range equivalence class [ ghost3_yfine ]
Added variable ghost3_direction to live range equivalence class [ ghost3_direction ]
Added variable ghost3_substep to live range equivalence class [ ghost3_substep ]
Added variable ghost3_reverse to live range equivalence class [ ghost3_reverse ]
Added variable ghost3_respawn to live range equivalence class [ ghost3_respawn ]
Added variable ghost4_xfine to live range equivalence class [ ghost4_xfine ]
Added variable ghost4_yfine to live range equivalence class [ ghost4_yfine ]
Added variable ghost4_direction to live range equivalence class [ ghost4_direction ]
Added variable ghost4_substep to live range equivalence class [ ghost4_substep ]
Added variable ghost4_reverse to live range equivalence class [ ghost4_reverse ]
Added variable ghost4_respawn to live range equivalence class [ ghost4_respawn ]
Added variable game_logic_substep to live range equivalence class [ game_logic_substep ]
Added variable game_playable to live range equivalence class [ game_playable ]
Added variable irq_screen_top::$1 to live range equivalence class [ irq_screen_top::$1 ]
Added variable irq_screen_top::$2 to live range equivalence class [ irq_screen_top::$2 ]
Added variable game_logic::$2 to live range equivalence class [ game_logic::$2 ]
Added variable game_logic::$3 to live range equivalence class [ game_logic::$3 ]
Added variable game_logic::$14 to live range equivalence class [ game_logic::$14 ]
Added variable game_logic::$15 to live range equivalence class [ game_logic::$15 ]
Added variable game_logic::pacman_bob_xfine#0 to live range equivalence class [ game_logic::pacman_bob_xfine#0 ]
Added variable game_logic::$17 to live range equivalence class [ game_logic::$17 ]
Added variable game_logic::$18 to live range equivalence class [ game_logic::$18 ]
Added variable game_logic::$19 to live range equivalence class [ game_logic::$19 ]
Added variable game_logic::$20 to live range equivalence class [ game_logic::$20 ]
Added variable game_logic::$21 to live range equivalence class [ game_logic::$21 ]
Added variable game_logic::ghost1_bob_xfine#0 to live range equivalence class [ game_logic::ghost1_bob_xfine#0 ]
Added variable game_logic::$25 to live range equivalence class [ game_logic::$25 ]
Added variable game_logic::$26 to live range equivalence class [ game_logic::$26 ]
Added variable game_logic::$27 to live range equivalence class [ game_logic::$27 ]
Added variable game_logic::$28 to live range equivalence class [ game_logic::$28 ]
Added variable game_logic::$29 to live range equivalence class [ game_logic::$29 ]
Added variable game_logic::ghost2_bob_xfine#0 to live range equivalence class [ game_logic::ghost2_bob_xfine#0 ]
Added variable game_logic::$31 to live range equivalence class [ game_logic::$31 ]
Added variable game_logic::$32 to live range equivalence class [ game_logic::$32 ]
Added variable game_logic::$33 to live range equivalence class [ game_logic::$33 ]
Added variable game_logic::$34 to live range equivalence class [ game_logic::$34 ]
Added variable game_logic::$35 to live range equivalence class [ game_logic::$35 ]
Added variable game_logic::ghost3_bob_xfine#0 to live range equivalence class [ game_logic::ghost3_bob_xfine#0 ]
Added variable game_logic::$37 to live range equivalence class [ game_logic::$37 ]
Added variable game_logic::$38 to live range equivalence class [ game_logic::$38 ]
Added variable game_logic::$39 to live range equivalence class [ game_logic::$39 ]
Added variable game_logic::$40 to live range equivalence class [ game_logic::$40 ]
Added variable game_logic::$41 to live range equivalence class [ game_logic::$41 ]
Added variable game_logic::ghost4_bob_xfine#0 to live range equivalence class [ game_logic::ghost4_bob_xfine#0 ]
Added variable game_logic::$43 to live range equivalence class [ game_logic::$43 ]
Added variable game_logic::$44 to live range equivalence class [ game_logic::$44 ]
Added variable game_logic::$45 to live range equivalence class [ game_logic::$45 ]
Added variable game_logic::$46 to live range equivalence class [ game_logic::$46 ]
Added variable game_logic::$47 to live range equivalence class [ game_logic::$47 ]
Added variable game_logic::pacman_xtile#0 to live range equivalence class [ game_logic::pacman_xtile#0 ]
Added variable game_logic::pacman_ytile#0 to live range equivalence class [ game_logic::pacman_ytile#0 ]
Added variable game_logic::$210 to live range equivalence class [ game_logic::$210 ]
Added variable game_logic::ytiles#0 to live range equivalence class [ game_logic::ytiles#0 ]
Added variable game_logic::tile_id#0 to live range equivalence class [ game_logic::tile_id#0 ]
Added variable game_logic::$65 to live range equivalence class [ game_logic::$65 ]
Added variable game_logic::$66 to live range equivalence class [ game_logic::$66 ]
Added variable game_logic::$67 to live range equivalence class [ game_logic::$67 ]
Added variable game_logic::$68 to live range equivalence class [ game_logic::$68 ]
Added variable game_logic::$75 to live range equivalence class [ game_logic::$75 ]
Added variable game_logic::$77 to live range equivalence class [ game_logic::$77 ]
Added variable game_logic::$80 to live range equivalence class [ game_logic::$80 ]
Added variable game_logic::$82 to live range equivalence class [ game_logic::$82 ]
Added variable game_logic::$85 to live range equivalence class [ game_logic::$85 ]
Added variable game_logic::$87 to live range equivalence class [ game_logic::$87 ]
Added variable game_logic::$90 to live range equivalence class [ game_logic::$90 ]
Added variable game_logic::$92 to live range equivalence class [ game_logic::$92 ]
Added variable game_logic::$69 to live range equivalence class [ game_logic::$69 ]
Added variable game_logic::$70 to live range equivalence class [ game_logic::$70 ]
Added variable game_logic::$71 to live range equivalence class [ game_logic::$71 ]
Added variable game_logic::$72 to live range equivalence class [ game_logic::$72 ]
Added variable game_logic::$220 to live range equivalence class [ game_logic::$220 ]
Added variable game_logic::ghost4_xtile#0 to live range equivalence class [ game_logic::ghost4_xtile#0 ]
Added variable game_logic::ghost4_ytile#0 to live range equivalence class [ game_logic::ghost4_ytile#0 ]
Added variable level_tile_directions::return#3 to live range equivalence class [ level_tile_directions::return#3 ]
Added variable game_logic::open_directions#0 to live range equivalence class [ game_logic::open_directions#0 ]
Added variable game_logic::open_directions#1 to live range equivalence class [ game_logic::open_directions#1 ]
Added variable choose_direction::return#0 to live range equivalence class [ choose_direction::return#0 ]
Added variable game_logic::$119 to live range equivalence class [ game_logic::$119 ]
Added variable game_logic::$223 to live range equivalence class [ game_logic::$223 ]
Added variable game_logic::ghost3_xtile#0 to live range equivalence class [ game_logic::ghost3_xtile#0 ]
Added variable game_logic::ghost3_ytile#0 to live range equivalence class [ game_logic::ghost3_ytile#0 ]
Added variable level_tile_directions::return#10 to live range equivalence class [ level_tile_directions::return#10 ]
Added variable game_logic::open_directions1#0 to live range equivalence class [ game_logic::open_directions1#0 ]
Added variable game_logic::open_directions1#1 to live range equivalence class [ game_logic::open_directions1#1 ]
Added variable choose_direction::return#1 to live range equivalence class [ choose_direction::return#1 ]
Added variable game_logic::$140 to live range equivalence class [ game_logic::$140 ]
Added variable game_logic::$226 to live range equivalence class [ game_logic::$226 ]
Added variable game_logic::ghost2_xtile#0 to live range equivalence class [ game_logic::ghost2_xtile#0 ]
Added variable game_logic::ghost2_ytile#0 to live range equivalence class [ game_logic::ghost2_ytile#0 ]
Added variable level_tile_directions::return#11 to live range equivalence class [ level_tile_directions::return#11 ]
Added variable game_logic::open_directions2#0 to live range equivalence class [ game_logic::open_directions2#0 ]
Added variable game_logic::open_directions2#1 to live range equivalence class [ game_logic::open_directions2#1 ]
Added variable choose_direction::return#2 to live range equivalence class [ choose_direction::return#2 ]
Added variable game_logic::$161 to live range equivalence class [ game_logic::$161 ]
Added variable game_logic::$229 to live range equivalence class [ game_logic::$229 ]
Added variable game_logic::ghost1_xtile#0 to live range equivalence class [ game_logic::ghost1_xtile#0 ]
Added variable game_logic::ghost1_ytile#0 to live range equivalence class [ game_logic::ghost1_ytile#0 ]
Added variable level_tile_directions::return#12 to live range equivalence class [ level_tile_directions::return#12 ]
Added variable game_logic::open_directions3#0 to live range equivalence class [ game_logic::open_directions3#0 ]
Added variable game_logic::open_directions3#1 to live range equivalence class [ game_logic::open_directions3#1 ]
Added variable choose_direction::return#3 to live range equivalence class [ choose_direction::return#3 ]
Added variable game_logic::$182 to live range equivalence class [ game_logic::$182 ]
Added variable game_logic::$232 to live range equivalence class [ game_logic::$232 ]
Added variable game_logic::pacman_xtile1#0 to live range equivalence class [ game_logic::pacman_xtile1#0 ]
Added variable game_logic::pacman_ytile1#0 to live range equivalence class [ game_logic::pacman_ytile1#0 ]
Added variable level_tile_directions::return#13 to live range equivalence class [ level_tile_directions::return#13 ]
Added variable game_logic::open_directions4#0 to live range equivalence class [ game_logic::open_directions4#0 ]
Added variable game_logic::$199 to live range equivalence class [ game_logic::$199 ]
Added variable game_logic::$200 to live range equivalence class [ game_logic::$200 ]
Added variable game_logic::joy_directions#0 to live range equivalence class [ game_logic::joy_directions#0 ]
Added variable game_logic::$204 to live range equivalence class [ game_logic::$204 ]
Added variable game_logic::new_direction#0 to live range equivalence class [ game_logic::new_direction#0 ]
Added variable byteboozer_decrunch::crunched to live range equivalence class [ byteboozer_decrunch::crunched ]
Added variable joyfire::return#1 to live range equivalence class [ joyfire::return#1 ]
Added variable splash_run::$30 to live range equivalence class [ splash_run::$30 ]
Added variable splash_run::$34 to live range equivalence class [ splash_run::$34 ]
Added variable splash_run::xpos#0 to live range equivalence class [ splash_run::xpos#0 ]
Added variable splash_run::$25 to live range equivalence class [ splash_run::$25 ]
Added variable level_show::return#0 to live range equivalence class [ level_show::return#0 ]
Added variable gameplay_run::$4 to live range equivalence class [ gameplay_run::$4 ]
Added variable joyfire::return#0 to live range equivalence class [ joyfire::return#0 ]
Added variable done_run::$8 to live range equivalence class [ done_run::$8 ]
Added variable done_run::pixels#0 to live range equivalence class [ done_run::pixels#0 ]
Added variable level_tile_directions::$5 to live range equivalence class [ level_tile_directions::$5 ]
Added variable level_tile_directions::ytiles#0 to live range equivalence class [ level_tile_directions::ytiles#0 ]
Added variable choose_direction::xdiff#0 to live range equivalence class [ choose_direction::xdiff#0 ]
Added variable choose_direction::ydiff#0 to live range equivalence class [ choose_direction::ydiff#0 ]
Added variable choose_direction::$2 to live range equivalence class [ choose_direction::$2 ]
Added variable choose_direction::$4 to live range equivalence class [ choose_direction::$4 ]
Added variable choose_direction::$6 to live range equivalence class [ choose_direction::$6 ]
Added variable choose_direction::$8 to live range equivalence class [ choose_direction::$8 ]
Added variable choose_direction::dist_right#0 to live range equivalence class [ choose_direction::dist_right#0 ]
Added variable memset::end#0 to live range equivalence class [ memset::end#0 ]
Added variable merge_code::raster_code#1 to live range equivalence class [ merge_code::raster_code#1 ]
Added variable merge_code::logic_cycles#0 to live range equivalence class [ merge_code::logic_cycles#0 ]
Added variable merge_code::$5 to live range equivalence class [ merge_code::$5 ]
Added variable merge_code::dest_code#2 to live range equivalence class [ merge_code::dest_code#2 ]
Added variable init_render_index::$9 to live range equivalence class [ init_render_index::$9 ]
Added variable init_render_index::canvas_xcol#0 to live range equivalence class [ init_render_index::canvas_xcol#0 ]
Added variable init_render_index::$11 to live range equivalence class [ init_render_index::$11 ]
Added variable init_render_index::$10 to live range equivalence class [ init_render_index::$10 ]
Added variable init_render_index::$12 to live range equivalence class [ init_render_index::$12 ]
Added variable init_render_index::canvas#0 to live range equivalence class [ init_render_index::canvas#0 ]
Added variable init_render_index::$5 to live range equivalence class [ init_render_index::$5 ]
Added variable init_render_index::$6 to live range equivalence class [ init_render_index::$6 ]
Added variable splash_show::pixels#0 to live range equivalence class [ splash_show::pixels#0 ]
Added variable init_sprite_pointers::$2 to live range equivalence class [ init_sprite_pointers::$2 ]
Added variable init_sprite_pointers::sprite_id#0 to live range equivalence class [ init_sprite_pointers::sprite_id#0 ]
Added variable joyfire::$0 to live range equivalence class [ joyfire::$0 ]
Added variable level_tile_get::return#3 to live range equivalence class [ level_tile_get::return#3 ]
Added variable init_level_tile_directions::$3 to live range equivalence class [ init_level_tile_directions::$3 ]
Added variable level_tile_get::return#4 to live range equivalence class [ level_tile_get::return#4 ]
Added variable init_level_tile_directions::$7 to live range equivalence class [ init_level_tile_directions::$7 ]
Added variable level_tile_get::return#10 to live range equivalence class [ level_tile_get::return#10 ]
Added variable init_level_tile_directions::$11 to live range equivalence class [ init_level_tile_directions::$11 ]
Added variable level_tile_get::return#11 to live range equivalence class [ level_tile_get::return#11 ]
Added variable init_level_tile_directions::$15 to live range equivalence class [ init_level_tile_directions::$15 ]
Added variable level_show::tile_left#0 to live range equivalence class [ level_show::tile_left#0 ]
Added variable level_show::xtile#1 to live range equivalence class [ level_show::xtile#1 ]
Added variable level_show::tile_right#0 to live range equivalence class [ level_show::tile_right#0 ]
Added variable render_tiles::xcol#0 to live range equivalence class [ render_tiles::xcol#0 ]
Added variable render_tiles::ytile#0 to live range equivalence class [ render_tiles::ytile#0 ]
Added variable render_tiles::tile_left#0 to live range equivalence class [ render_tiles::tile_left#0 ]
Added variable render_tiles::tile_right#0 to live range equivalence class [ render_tiles::tile_right#0 ]
Added variable render::ytile#0 to live range equivalence class [ render::ytile#0 ]
Added variable render::$1 to live range equivalence class [ render::$1 ]
Added variable render::$2 to live range equivalence class [ render::$2 ]
Added variable render::render_index_xcol#0 to live range equivalence class [ render::render_index_xcol#0 ]
Added variable render::canvas_offset#0 to live range equivalence class [ render::canvas_offset#0 ]
Added variable render::ypix#0 to live range equivalence class [ render::ypix#0 ]
Added variable level_tile_get::$5 to live range equivalence class [ level_tile_get::$5 ]
Added variable level_tile_get::ytiles#0 to live range equivalence class [ level_tile_get::ytiles#0 ]
Added variable render_tiles::$0 to live range equivalence class [ render_tiles::$0 ]
Added variable render_tiles::tile_left_pixels#0 to live range equivalence class [ render_tiles::tile_left_pixels#0 ]
Added variable render_tiles::$2 to live range equivalence class [ render_tiles::$2 ]
Added variable render_tiles::tile_right_pixels#0 to live range equivalence class [ render_tiles::tile_right_pixels#0 ]
Added variable render_tiles::$4 to live range equivalence class [ render_tiles::$4 ]
Added variable render_tiles::$5 to live range equivalence class [ render_tiles::$5 ]
Added variable render_tiles::render_index_xcol#0 to live range equivalence class [ render_tiles::render_index_xcol#0 ]
Added variable render_tiles::canvas_offset#0 to live range equivalence class [ render_tiles::canvas_offset#0 ]
Added variable render_tiles::pixels#0 to live range equivalence class [ render_tiles::pixels#0 ]
Complete equivalence classes
[ game_logic::ghost_frame_idx#2 game_logic::ghost_frame_idx#0 game_logic::ghost_frame_idx#1 ]
[ game_logic::do_reverse#4 ]
[ game_logic::target_xtile#3 game_logic::target_xtile#2 ]
[ game_logic::target_ytile#3 game_logic::target_ytile#2 ]
[ game_logic::target_xtile1#3 game_logic::target_xtile1#2 ]
[ game_logic::target_ytile1#3 game_logic::target_ytile1#2 ]
[ game_logic::target_xtile2#3 game_logic::target_xtile2#2 ]
[ game_logic::target_ytile2#3 game_logic::target_ytile2#2 ]
[ game_logic::target_xtile3#3 game_logic::target_xtile3#2 ]
[ game_logic::target_ytile3#3 game_logic::target_ytile3#2 ]
[ splash_run::i#2 splash_run::i#1 ]
[ splash_run::msb#10 splash_run::msb#8 splash_run::msb#1 splash_run::msb#2 ]
[ splash_run::i1#2 splash_run::i1#1 ]
[ splash_run::i2#2 splash_run::i2#1 ]
[ gameplay_run::i#2 gameplay_run::i#1 ]
[ gameplay_run::i1#2 gameplay_run::i1#1 ]
[ gameplay_run::i2#2 gameplay_run::i2#1 ]
[ done_run::i#2 done_run::i#1 ]
[ done_run::i1#2 done_run::i1#1 ]
[ done_run::xcol#2 done_run::xcol#1 ]
[ done_run::gfx#4 done_run::gfx#2 done_run::gfx#1 ]
[ done_run::ypos#2 done_run::ypos#1 ]
[ level_tile_directions::xtile#5 level_tile_directions::xtile#1 level_tile_directions::xtile#2 level_tile_directions::xtile#3 level_tile_directions::xtile#4 level_tile_directions::xtile#0 ]
[ level_tile_directions::ytile#5 level_tile_directions::ytile#1 level_tile_directions::ytile#2 level_tile_directions::ytile#3 level_tile_directions::ytile#4 level_tile_directions::ytile#0 ]
[ level_tile_directions::return#2 level_tile_directions::return#0 ]
[ choose_direction::ghost_xtile#4 choose_direction::ghost_xtile#2 choose_direction::ghost_xtile#3 choose_direction::ghost_xtile#0 choose_direction::ghost_xtile#1 ]
[ choose_direction::target_xtile#4 choose_direction::target_xtile#2 choose_direction::target_xtile#3 choose_direction::target_xtile#0 choose_direction::target_xtile#1 ]
[ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 ]
[ choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 ]
[ choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ]
[ choose_direction::dist_min#6 choose_direction::dist_up#0 ]
[ choose_direction::dist_min#10 choose_direction::dist_min#13 choose_direction::dist_min#14 choose_direction::dist_down#0 ]
[ choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ]
[ choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ]
[ memset::num#5 ]
[ memset::str#6 ]
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
[ merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 ]
[ merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 ]
[ merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 ]
[ merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 ]
[ merge_code::cycle_budget#10 merge_code::cycle_budget#2 merge_code::cycle_budget#3 merge_code::cycle_budget#13 merge_code::cycle_budget#0 merge_code::cycle_budget#1 ]
[ merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 ]
[ init_render_index::x_col#2 init_render_index::x_col#1 ]
[ init_render_index::render_index_xcol#0 init_render_index::render_index#1 ]
[ init_render_index::render_ypos_table#4 ]
[ init_render_index::y_pos#2 init_render_index::y_pos#1 ]
[ init_render_index::render_index_xcol#2 init_render_index::render_index_xcol#7 init_render_index::render_index_xcol#1 ]
[ init_render_index::ypos_inc_offset#4 init_render_index::ypos_inc_offset#7 init_render_index::ypos_inc_offset#8 init_render_index::ypos_inc_offset#2 init_render_index::ypos_inc_offset#3 ]
[ splash_show::xcol#2 splash_show::xcol#1 ]
[ splash_show::splash#4 splash_show::splash#2 splash_show::splash#1 ]
[ splash_show::ypos#2 splash_show::ypos#1 ]
[ init_bobs_restore::bob#2 init_bobs_restore::bob#1 ]
[ init_bobs_restore::bob_restore#5 init_bobs_restore::bob_restore#1 ]
[ init_bobs_restore::i#2 init_bobs_restore::i#1 ]
[ init_sprite_pointers::screen#2 init_sprite_pointers::screen#1 ]
[ init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_1#1 ]
[ init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_2#1 ]
[ init_sprite_pointers::sprite#2 init_sprite_pointers::sprite#1 ]
[ memcpy::src#2 memcpy::src#1 ]
[ memcpy::dst#2 memcpy::dst#1 ]
[ joyfire::return#4 ]
[ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 ]
[ init_level_tile_directions::directions#7 init_level_tile_directions::directions#1 ]
[ init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 ]
[ init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ]
[ level_show::ytile#2 level_show::ytile#1 ]
[ level_show::level#8 level_show::level#1 ]
[ level_show::xcol#2 level_show::xcol#1 ]
[ level_show::xtile#3 level_show::xtile#2 ]
[ level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 ]
[ render::ypos#2 render::ypos#0 render::ypos#1 ]
[ render::xcol#2 render::xcol#0 render::xcol#1 ]
[ render::pixels#4 render::pixels#0 render::pixels#1 ]
[ render::i#2 render::i#1 ]
[ render::canvas1#2 render::canvas1#0 render::canvas1#1 ]
[ render::ypos_inc_offset#2 render::ypos_inc_offset#0 render::ypos_inc_offset#1 ]
[ render::canvas2#2 render::canvas2#0 render::canvas2#1 ]
[ level_tile_get::xtile#4 level_tile_get::xtile#0 level_tile_get::xtile#1 level_tile_get::xtile#2 level_tile_get::xtile#3 ]
[ level_tile_get::ytile#4 level_tile_get::ytile#0 level_tile_get::ytile#1 level_tile_get::ytile#2 level_tile_get::ytile#3 ]
[ level_tile_get::return#2 level_tile_get::return#0 ]
[ render_tiles::y#2 render_tiles::y#1 ]
[ render_tiles::canvas1#2 render_tiles::canvas1#0 render_tiles::canvas1#1 ]
[ render_tiles::canvas2#2 render_tiles::canvas2#0 render_tiles::canvas2#1 ]
[ render_tiles::ypos_inc_offset#2 render_tiles::ypos_inc_offset#0 render_tiles::ypos_inc_offset#1 ]
[ pacman_ch1_enabled ]
[ pacman_ch1_idx ]
[ logic_tile_ptr ]
[ logic_tile_xcol ]
[ logic_tile_yfine ]
[ logic_tile_left_idx ]
[ logic_tile_right_idx ]
[ left_render_index_xcol ]
[ left_canvas ]
[ left_ypos_inc_offset ]
[ rigt_render_index_xcol ]
[ rigt_canvas ]
[ rigt_ypos_inc_offset ]
[ canvas_base_hi ]
[ bobs_restore_base ]
[ top_sprites_color ]
[ top_sprites_mc ]
[ side_sprites_color ]
[ side_sprites_mc ]
[ bottom_sprites_color ]
[ bottom_sprites_mc ]
[ pill_count ]
[ pacman_wins ]
[ pacman_lives ]
[ music_play_next ]
[ phase ]
[ frame ]
[ anim_frame_idx ]
[ pacman_xfine ]
[ pacman_yfine ]
[ pacman_direction ]
[ pacman_substep ]
[ ghosts_mode ]
[ ghosts_mode_count ]
[ ghost1_xfine ]
[ ghost1_yfine ]
[ ghost1_direction ]
[ ghost1_substep ]
[ ghost1_reverse ]
[ ghost1_respawn ]
[ ghost2_xfine ]
[ ghost2_yfine ]
[ ghost2_direction ]
[ ghost2_substep ]
[ ghost2_reverse ]
[ ghost2_respawn ]
[ ghost3_xfine ]
[ ghost3_yfine ]
[ ghost3_direction ]
[ ghost3_substep ]
[ ghost3_reverse ]
[ ghost3_respawn ]
[ ghost4_xfine ]
[ ghost4_yfine ]
[ ghost4_direction ]
[ ghost4_substep ]
[ ghost4_reverse ]
[ ghost4_respawn ]
[ game_logic_substep ]
[ game_playable ]
[ irq_screen_top::$1 ]
[ irq_screen_top::$2 ]
[ game_logic::$2 ]
[ game_logic::$3 ]
[ game_logic::$14 ]
[ game_logic::$15 ]
[ game_logic::pacman_bob_xfine#0 ]
[ game_logic::$17 ]
[ game_logic::$18 ]
[ game_logic::$19 ]
[ game_logic::$20 ]
[ game_logic::$21 ]
[ game_logic::ghost1_bob_xfine#0 ]
[ game_logic::$25 ]
[ game_logic::$26 ]
[ game_logic::$27 ]
[ game_logic::$28 ]
[ game_logic::$29 ]
[ game_logic::ghost2_bob_xfine#0 ]
[ game_logic::$31 ]
[ game_logic::$32 ]
[ game_logic::$33 ]
[ game_logic::$34 ]
[ game_logic::$35 ]
[ game_logic::ghost3_bob_xfine#0 ]
[ game_logic::$37 ]
[ game_logic::$38 ]
[ game_logic::$39 ]
[ game_logic::$40 ]
[ game_logic::$41 ]
[ game_logic::ghost4_bob_xfine#0 ]
[ game_logic::$43 ]
[ game_logic::$44 ]
[ game_logic::$45 ]
[ game_logic::$46 ]
[ game_logic::$47 ]
[ game_logic::pacman_xtile#0 ]
[ game_logic::pacman_ytile#0 ]
[ game_logic::$210 ]
[ game_logic::ytiles#0 ]
[ game_logic::tile_id#0 ]
[ game_logic::$65 ]
[ game_logic::$66 ]
[ game_logic::$67 ]
[ game_logic::$68 ]
[ game_logic::$75 ]
[ game_logic::$77 ]
[ game_logic::$80 ]
[ game_logic::$82 ]
[ game_logic::$85 ]
[ game_logic::$87 ]
[ game_logic::$90 ]
[ game_logic::$92 ]
[ game_logic::$69 ]
[ game_logic::$70 ]
[ game_logic::$71 ]
[ game_logic::$72 ]
[ game_logic::$220 ]
[ game_logic::ghost4_xtile#0 ]
[ game_logic::ghost4_ytile#0 ]
[ level_tile_directions::return#3 ]
[ game_logic::open_directions#0 ]
[ game_logic::open_directions#1 ]
[ choose_direction::return#0 ]
[ game_logic::$119 ]
[ game_logic::$223 ]
[ game_logic::ghost3_xtile#0 ]
[ game_logic::ghost3_ytile#0 ]
[ level_tile_directions::return#10 ]
[ game_logic::open_directions1#0 ]
[ game_logic::open_directions1#1 ]
[ choose_direction::return#1 ]
[ game_logic::$140 ]
[ game_logic::$226 ]
[ game_logic::ghost2_xtile#0 ]
[ game_logic::ghost2_ytile#0 ]
[ level_tile_directions::return#11 ]
[ game_logic::open_directions2#0 ]
[ game_logic::open_directions2#1 ]
[ choose_direction::return#2 ]
[ game_logic::$161 ]
[ game_logic::$229 ]
[ game_logic::ghost1_xtile#0 ]
[ game_logic::ghost1_ytile#0 ]
[ level_tile_directions::return#12 ]
[ game_logic::open_directions3#0 ]
[ game_logic::open_directions3#1 ]
[ choose_direction::return#3 ]
[ game_logic::$182 ]
[ game_logic::$232 ]
[ game_logic::pacman_xtile1#0 ]
[ game_logic::pacman_ytile1#0 ]
[ level_tile_directions::return#13 ]
[ game_logic::open_directions4#0 ]
[ game_logic::$199 ]
[ game_logic::$200 ]
[ game_logic::joy_directions#0 ]
[ game_logic::$204 ]
[ game_logic::new_direction#0 ]
[ byteboozer_decrunch::crunched ]
[ joyfire::return#1 ]
[ splash_run::$30 ]
[ splash_run::$34 ]
[ splash_run::xpos#0 ]
[ splash_run::$25 ]
[ level_show::return#0 ]
[ gameplay_run::$4 ]
[ joyfire::return#0 ]
[ done_run::$8 ]
[ done_run::pixels#0 ]
[ level_tile_directions::$5 ]
[ level_tile_directions::ytiles#0 ]
[ choose_direction::xdiff#0 ]
[ choose_direction::ydiff#0 ]
[ choose_direction::$2 ]
[ choose_direction::$4 ]
[ choose_direction::$6 ]
[ choose_direction::$8 ]
[ choose_direction::dist_right#0 ]
[ memset::end#0 ]
[ merge_code::raster_code#1 ]
[ merge_code::logic_cycles#0 ]
[ merge_code::$5 ]
[ merge_code::dest_code#2 ]
[ init_render_index::$9 ]
[ init_render_index::canvas_xcol#0 ]
[ init_render_index::$11 ]
[ init_render_index::$10 ]
[ init_render_index::$12 ]
[ init_render_index::canvas#0 ]
[ init_render_index::$5 ]
[ init_render_index::$6 ]
[ splash_show::pixels#0 ]
[ init_sprite_pointers::$2 ]
[ init_sprite_pointers::sprite_id#0 ]
[ joyfire::$0 ]
[ level_tile_get::return#3 ]
[ init_level_tile_directions::$3 ]
[ level_tile_get::return#4 ]
[ init_level_tile_directions::$7 ]
[ level_tile_get::return#10 ]
[ init_level_tile_directions::$11 ]
[ level_tile_get::return#11 ]
[ init_level_tile_directions::$15 ]
[ level_show::tile_left#0 ]
[ level_show::xtile#1 ]
[ level_show::tile_right#0 ]
[ render_tiles::xcol#0 ]
[ render_tiles::ytile#0 ]
[ render_tiles::tile_left#0 ]
[ render_tiles::tile_right#0 ]
[ render::ytile#0 ]
[ render::$1 ]
[ render::$2 ]
[ render::render_index_xcol#0 ]
[ render::canvas_offset#0 ]
[ render::ypix#0 ]
[ level_tile_get::$5 ]
[ level_tile_get::ytiles#0 ]
[ render_tiles::$0 ]
[ render_tiles::tile_left_pixels#0 ]
[ render_tiles::$2 ]
[ render_tiles::tile_right_pixels#0 ]
[ render_tiles::$4 ]
[ render_tiles::$5 ]
[ render_tiles::render_index_xcol#0 ]
[ render_tiles::canvas_offset#0 ]
[ render_tiles::pixels#0 ]
Allocated zp[1]:2 [ render_tiles::y#2 render_tiles::y#1 ]
Allocated zp[1]:3 [ render_tiles::ypos_inc_offset#2 render_tiles::ypos_inc_offset#0 render_tiles::ypos_inc_offset#1 ]
Allocated zp[1]:4 [ render_tiles::pixels#0 ]
Allocated zp[2]:5 [ render_tiles::canvas2#2 render_tiles::canvas2#0 render_tiles::canvas2#1 ]
Allocated zp[2]:7 [ render_tiles::canvas1#2 render_tiles::canvas1#0 render_tiles::canvas1#1 ]
Allocated zp[1]:9 [ render::i#2 render::i#1 ]
Allocated zp[1]:10 [ render::ypos_inc_offset#2 render::ypos_inc_offset#0 render::ypos_inc_offset#1 ]
Allocated zp[2]:11 [ render::canvas1#2 render::canvas1#0 render::canvas1#1 ]
Allocated zp[2]:13 [ render::canvas2#2 render::canvas2#0 render::canvas2#1 ]
Allocated zp[2]:15 [ render_tiles::tile_right_pixels#0 ]
Allocated zp[2]:17 [ render_tiles::tile_left_pixels#0 ]
Allocated zp[1]:19 [ render::ypix#0 ]
Allocated zp[1]:20 [ level_tile_get::return#2 level_tile_get::return#0 ]
Allocated zp[1]:21 [ level_tile_get::$5 ]
Allocated zp[2]:22 [ level_tile_get::ytiles#0 ]
Allocated zp[1]:24 [ render_tiles::$0 ]
Allocated zp[1]:25 [ render_tiles::$2 ]
Allocated zp[1]:26 [ render_tiles::$5 ]
Allocated zp[2]:27 [ render_tiles::canvas_offset#0 ]
Allocated zp[1]:29 [ level_tile_get::ytile#4 level_tile_get::ytile#0 level_tile_get::ytile#1 level_tile_get::ytile#2 level_tile_get::ytile#3 ]
Allocated zp[1]:30 [ level_tile_get::xtile#4 level_tile_get::xtile#0 level_tile_get::xtile#1 level_tile_get::xtile#2 level_tile_get::xtile#3 ]
Allocated zp[1]:31 [ init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ]
Allocated zp[1]:32 [ render_tiles::$4 ]
Allocated zp[2]:33 [ level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 ]
Allocated zp[1]:35 [ render_tiles::tile_left#0 ]
Allocated zp[1]:36 [ render_tiles::tile_right#0 ]
Allocated zp[1]:37 [ init_sprite_pointers::sprite#2 init_sprite_pointers::sprite#1 ]
Allocated zp[2]:38 [ render_tiles::render_index_xcol#0 ]
Allocated zp[1]:40 [ level_show::xcol#2 level_show::xcol#1 ]
Allocated zp[1]:41 [ init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 ]
Allocated zp[1]:42 [ init_sprite_pointers::$2 ]
Allocated zp[1]:43 [ joyfire::$0 ]
Allocated zp[1]:44 [ level_tile_get::return#3 ]
Allocated zp[1]:45 [ init_level_tile_directions::$3 ]
Allocated zp[1]:46 [ level_tile_get::return#4 ]
Allocated zp[1]:47 [ init_level_tile_directions::$7 ]
Allocated zp[1]:48 [ level_tile_get::return#10 ]
Allocated zp[1]:49 [ init_level_tile_directions::$11 ]
Allocated zp[1]:50 [ level_tile_get::return#11 ]
Allocated zp[1]:51 [ init_level_tile_directions::$15 ]
Allocated zp[1]:52 [ render::$2 ]
Allocated zp[1]:53 [ init_sprite_pointers::sprite_id#0 ]
Allocated zp[2]:54 [ render::canvas_offset#0 ]
Allocated zp[1]:56 [ render_tiles::xcol#0 ]
Allocated zp[1]:57 [ render_tiles::ytile#0 ]
Allocated zp[1]:58 [ level_show::xtile#3 level_show::xtile#2 ]
Allocated zp[1]:59 [ render::ytile#0 ]
Allocated zp[1]:60 [ render::$1 ]
Allocated zp[1]:61 [ render::xcol#2 render::xcol#0 render::xcol#1 ]
Allocated zp[1]:62 [ level_show::xtile#1 ]
Allocated zp[1]:63 [ level_show::tile_right#0 ]
Allocated zp[1]:64 [ render::ypos#2 render::ypos#0 render::ypos#1 ]
Allocated zp[1]:65 [ render::pixels#4 render::pixels#0 render::pixels#1 ]
Allocated zp[2]:66 [ merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 ]
Allocated zp[1]:68 [ init_sprite_pointers::screen#2 init_sprite_pointers::screen#1 ]
Allocated zp[1]:69 [ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 ]
Allocated zp[1]:70 [ level_show::ytile#2 level_show::ytile#1 ]
Allocated zp[1]:71 [ done_run::ypos#2 done_run::ypos#1 ]
Allocated zp[1]:72 [ level_show::tile_left#0 ]
Allocated zp[2]:73 [ render::render_index_xcol#0 ]
Allocated zp[2]:75 [ merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 ]
Allocated zp[2]:77 [ init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_2#1 ]
Allocated zp[2]:79 [ level_show::level#8 level_show::level#1 ]
Allocated zp[1]:81 [ joyfire::return#0 ]
Allocated zp[1]:82 [ done_run::$8 ]
Allocated zp[2]:83 [ init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_1#1 ]
Allocated zp[2]:85 [ init_level_tile_directions::directions#7 init_level_tile_directions::directions#1 ]
Allocated zp[2]:87 [ done_run::gfx#4 done_run::gfx#2 done_run::gfx#1 ]
Allocated zp[1]:89 [ merge_code::cycle_budget#10 merge_code::cycle_budget#2 merge_code::cycle_budget#3 merge_code::cycle_budget#13 merge_code::cycle_budget#0 merge_code::cycle_budget#1 ]
Allocated zp[1]:90 [ init_render_index::ypos_inc_offset#4 init_render_index::ypos_inc_offset#7 init_render_index::ypos_inc_offset#8 init_render_index::ypos_inc_offset#2 init_render_index::ypos_inc_offset#3 ]
Allocated zp[1]:91 [ done_run::pixels#0 ]
Allocated zp[1]:92 [ gameplay_run::i#2 gameplay_run::i#1 ]
Allocated zp[1]:93 [ gameplay_run::i1#2 gameplay_run::i1#1 ]
Allocated zp[1]:94 [ gameplay_run::i2#2 gameplay_run::i2#1 ]
Allocated zp[1]:95 [ done_run::i#2 done_run::i#1 ]
Allocated zp[1]:96 [ init_bobs_restore::i#2 init_bobs_restore::i#1 ]
Allocated zp[2]:97 [ merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 ]
Allocated zp[1]:99 [ done_run::i1#2 done_run::i1#1 ]
Allocated zp[1]:100 [ done_run::xcol#2 done_run::xcol#1 ]
Allocated zp[1]:101 [ joyfire::return#4 ]
Allocated zp[1]:102 [ splash_show::ypos#2 splash_show::ypos#1 ]
Allocated zp[1]:103 [ init_render_index::y_pos#2 init_render_index::y_pos#1 ]
Allocated zp[2]:104 [ init_render_index::$11 ]
Allocated zp[2]:106 [ init_render_index::$10 ]
Allocated zp[2]:108 [ init_render_index::$12 ]
Allocated zp[1]:110 [ init_render_index::$5 ]
Allocated zp[1]:111 [ init_render_index::$6 ]
Allocated zp[2]:112 [ merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 ]
Allocated zp[2]:114 [ init_render_index::render_index_xcol#2 init_render_index::render_index_xcol#7 init_render_index::render_index_xcol#1 ]
Allocated zp[2]:116 [ merge_code::dest_code#2 ]
Allocated zp[2]:118 [ splash_show::splash#4 splash_show::splash#2 splash_show::splash#1 ]
Allocated zp[1]:120 [ merge_code::$5 ]
Allocated zp[2]:121 [ init_render_index::canvas#0 ]
Allocated zp[1]:123 [ music_play_next ]
Allocated zp[2]:124 [ merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 ]
Allocated zp[1]:126 [ splash_show::pixels#0 ]
Allocated zp[1]:127 [ merge_code::logic_cycles#0 ]
Allocated zp[2]:128 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
Allocated zp[1]:130 [ splash_show::xcol#2 splash_show::xcol#1 ]
Allocated zp[2]:131 [ memcpy::src#2 memcpy::src#1 ]
Allocated zp[2]:133 [ init_bobs_restore::bob_restore#5 init_bobs_restore::bob_restore#1 ]
Allocated zp[1]:135 [ init_bobs_restore::bob#2 init_bobs_restore::bob#1 ]
Allocated zp[1]:136 [ init_render_index::x_col#2 init_render_index::x_col#1 ]
Allocated zp[2]:137 [ memcpy::dst#2 memcpy::dst#1 ]
Allocated zp[1]:139 [ joyfire::return#1 ]
Allocated zp[1]:140 [ splash_run::$30 ]
Allocated zp[1]:141 [ init_render_index::$9 ]
Allocated zp[2]:142 [ merge_code::raster_code#1 ]
Allocated zp[2]:144 [ init_render_index::render_index_xcol#0 init_render_index::render_index#1 ]
Allocated zp[1]:146 [ side_sprites_color ]
Allocated zp[1]:147 [ side_sprites_mc ]
Allocated zp[1]:148 [ bottom_sprites_color ]
Allocated zp[1]:149 [ bottom_sprites_mc ]
Allocated zp[2]:150 [ logic_tile_ptr ]
Allocated zp[1]:152 [ logic_tile_xcol ]
Allocated zp[1]:153 [ logic_tile_yfine ]
Allocated zp[2]:154 [ init_render_index::canvas_xcol#0 ]
Allocated zp[2]:156 [ init_render_index::render_ypos_table#4 ]
Allocated zp[1]:158 [ splash_run::msb#10 splash_run::msb#8 splash_run::msb#1 splash_run::msb#2 ]
Allocated zp[1]:159 [ top_sprites_color ]
Allocated zp[1]:160 [ splash_run::i1#2 splash_run::i1#1 ]
Allocated zp[1]:161 [ splash_run::i2#2 splash_run::i2#1 ]
Allocated zp[1]:162 [ splash_run::i#2 splash_run::i#1 ]
Allocated zp[1]:163 [ pacman_wins ]
Allocated zp[1]:164 [ splash_run::$25 ]
Allocated zp[2]:165 [ level_show::return#0 ]
Allocated zp[2]:167 [ gameplay_run::$4 ]
Allocated zp[2]:169 [ memset::end#0 ]
Allocated zp[1]:171 [ splash_run::$34 ]
Allocated zp[1]:172 [ canvas_base_hi ]
Allocated zp[1]:173 [ bobs_restore_base ]
Allocated zp[2]:174 [ memset::num#5 ]
Allocated zp[1]:176 [ choose_direction::dist_min#10 choose_direction::dist_min#13 choose_direction::dist_min#14 choose_direction::dist_down#0 ]
Allocated zp[2]:177 [ splash_run::xpos#0 ]
Allocated zp[1]:179 [ choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ]
Allocated zp[1]:180 [ pacman_lives ]
Allocated zp[2]:181 [ byteboozer_decrunch::crunched ]
Allocated zp[1]:183 [ ghost1_respawn ]
Allocated zp[1]:184 [ ghost2_respawn ]
Allocated zp[1]:185 [ ghost3_respawn ]
Allocated zp[1]:186 [ ghost4_respawn ]
Allocated zp[1]:187 [ ghosts_mode_count ]
Allocated zp[1]:188 [ pacman_substep ]
Allocated zp[1]:189 [ level_tile_directions::return#2 level_tile_directions::return#0 ]
Allocated zp[1]:190 [ ghost1_substep ]
Allocated zp[1]:191 [ ghost2_substep ]
Allocated zp[1]:192 [ ghost3_substep ]
Allocated zp[1]:193 [ ghost4_substep ]
Allocated zp[1]:194 [ level_tile_directions::$5 ]
Allocated zp[2]:195 [ level_tile_directions::ytiles#0 ]
Allocated zp[1]:197 [ choose_direction::$2 ]
Allocated zp[1]:198 [ choose_direction::$4 ]
Allocated zp[1]:199 [ choose_direction::$6 ]
Allocated zp[1]:200 [ choose_direction::$8 ]
Allocated zp[1]:201 [ choose_direction::dist_right#0 ]
Allocated zp[1]:202 [ level_tile_directions::ytile#5 level_tile_directions::ytile#1 level_tile_directions::ytile#2 level_tile_directions::ytile#3 level_tile_directions::ytile#4 level_tile_directions::ytile#0 ]
Allocated zp[1]:203 [ choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ]
Allocated zp[1]:204 [ choose_direction::target_xtile#4 choose_direction::target_xtile#2 choose_direction::target_xtile#3 choose_direction::target_xtile#0 choose_direction::target_xtile#1 ]
Allocated zp[1]:205 [ choose_direction::dist_min#6 choose_direction::dist_up#0 ]
Allocated zp[1]:206 [ choose_direction::ghost_xtile#4 choose_direction::ghost_xtile#2 choose_direction::ghost_xtile#3 choose_direction::ghost_xtile#0 choose_direction::ghost_xtile#1 ]
Allocated zp[1]:207 [ choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 ]
Allocated zp[1]:208 [ pacman_direction ]
Allocated zp[1]:209 [ ghost1_direction ]
Allocated zp[1]:210 [ ghost2_direction ]
Allocated zp[1]:211 [ level_tile_directions::xtile#5 level_tile_directions::xtile#1 level_tile_directions::xtile#2 level_tile_directions::xtile#3 level_tile_directions::xtile#4 level_tile_directions::xtile#0 ]
Allocated zp[1]:212 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 ]
Allocated zp[1]:213 [ ghost3_direction ]
Allocated zp[1]:214 [ ghost4_direction ]
Allocated zp[1]:215 [ top_sprites_mc ]
Allocated zp[1]:216 [ ghost1_xfine ]
Allocated zp[1]:217 [ ghost1_yfine ]
Allocated zp[1]:218 [ phase ]
Allocated zp[1]:219 [ ghost2_xfine ]
Allocated zp[1]:220 [ ghost2_yfine ]
Allocated zp[1]:221 [ ghost3_xfine ]
Allocated zp[1]:222 [ game_playable ]
Allocated zp[1]:223 [ ghost3_yfine ]
Allocated zp[1]:224 [ ghost4_xfine ]
Allocated zp[1]:225 [ ghost4_yfine ]
Allocated zp[1]:226 [ pacman_xfine ]
Allocated zp[1]:227 [ pacman_yfine ]
Allocated zp[1]:228 [ game_logic::ghost_frame_idx#2 game_logic::ghost_frame_idx#0 game_logic::ghost_frame_idx#1 ]
Allocated zp[1]:229 [ choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ]
Allocated zp[1]:230 [ game_logic::target_ytile#3 game_logic::target_ytile#2 ]
Allocated zp[1]:231 [ game_logic::target_ytile1#3 game_logic::target_ytile1#2 ]
Allocated zp[1]:232 [ game_logic::target_ytile2#3 game_logic::target_ytile2#2 ]
Allocated zp[1]:233 [ game_logic::target_ytile3#3 game_logic::target_ytile3#2 ]
Allocated zp[1]:234 [ game_logic::$2 ]
Allocated zp[1]:235 [ game_logic::$3 ]
Allocated zp[1]:236 [ game_logic::$14 ]
Allocated zp[1]:237 [ game_logic::$15 ]
Allocated zp[1]:238 [ game_logic::$17 ]
Allocated zp[1]:239 [ game_logic::$18 ]
Allocated zp[1]:240 [ game_logic::$20 ]
Allocated zp[1]:241 [ game_logic::$21 ]
Allocated zp[1]:242 [ game_logic::$25 ]
Allocated zp[1]:243 [ game_logic::$26 ]
Allocated zp[1]:244 [ game_logic::$28 ]
Allocated zp[1]:245 [ game_logic::$29 ]
Allocated zp[1]:246 [ game_logic::$31 ]
Allocated zp[1]:247 [ game_logic::$32 ]
Allocated zp[1]:248 [ game_logic::$34 ]
Allocated zp[1]:249 [ game_logic::$35 ]
Allocated zp[1]:250 [ game_logic::$37 ]
Allocated zp[1]:251 [ game_logic::$38 ]
Allocated zp[1]:256 [ game_logic::$40 ]
Allocated zp[1]:257 [ game_logic::$41 ]
Allocated zp[1]:258 [ game_logic::$43 ]
Allocated zp[1]:259 [ game_logic::$44 ]
Allocated zp[1]:260 [ game_logic::$46 ]
Allocated zp[1]:261 [ game_logic::$47 ]
Allocated zp[1]:262 [ game_logic::pacman_ytile#0 ]
Allocated zp[1]:263 [ game_logic::$65 ]
Allocated zp[1]:264 [ game_logic::$66 ]
Allocated zp[2]:265 [ game_logic::$67 ]
Allocated zp[1]:267 [ game_logic::$68 ]
Allocated zp[1]:268 [ game_logic::$69 ]
Allocated zp[1]:269 [ game_logic::$70 ]
Allocated zp[2]:270 [ game_logic::$71 ]
Allocated zp[1]:272 [ game_logic::$72 ]
Allocated zp[1]:273 [ level_tile_directions::return#3 ]
Allocated zp[1]:274 [ game_logic::open_directions#0 ]
Allocated zp[1]:275 [ choose_direction::return#0 ]
Allocated zp[1]:276 [ game_logic::$119 ]
Allocated zp[1]:277 [ level_tile_directions::return#10 ]
Allocated zp[1]:278 [ game_logic::open_directions1#0 ]
Allocated zp[1]:279 [ choose_direction::return#1 ]
Allocated zp[1]:280 [ game_logic::$140 ]
Allocated zp[1]:281 [ level_tile_directions::return#11 ]
Allocated zp[1]:282 [ game_logic::open_directions2#0 ]
Allocated zp[1]:283 [ choose_direction::return#2 ]
Allocated zp[1]:284 [ game_logic::$161 ]
Allocated zp[1]:285 [ level_tile_directions::return#12 ]
Allocated zp[1]:286 [ game_logic::open_directions3#0 ]
Allocated zp[1]:287 [ choose_direction::return#3 ]
Allocated zp[1]:288 [ game_logic::$182 ]
Allocated zp[1]:289 [ level_tile_directions::return#13 ]
Allocated zp[1]:290 [ game_logic::$199 ]
Allocated zp[1]:291 [ game_logic::$200 ]
Allocated zp[1]:292 [ game_logic::$204 ]
Allocated zp[1]:293 [ choose_direction::ydiff#0 ]
Allocated zp[1]:294 [ choose_direction::xdiff#0 ]
Allocated zp[1]:295 [ logic_tile_left_idx ]
Allocated zp[1]:296 [ logic_tile_right_idx ]
Allocated zp[2]:297 [ left_render_index_xcol ]
Allocated zp[2]:299 [ left_canvas ]
Allocated zp[1]:301 [ left_ypos_inc_offset ]
Allocated zp[2]:302 [ rigt_render_index_xcol ]
Allocated zp[2]:304 [ rigt_canvas ]
Allocated zp[1]:306 [ rigt_ypos_inc_offset ]
Allocated zp[1]:307 [ game_logic::target_xtile#3 game_logic::target_xtile#2 ]
Allocated zp[1]:308 [ game_logic::target_xtile1#3 game_logic::target_xtile1#2 ]
Allocated zp[1]:309 [ game_logic::target_xtile2#3 game_logic::target_xtile2#2 ]
Allocated zp[1]:310 [ game_logic::target_xtile3#3 game_logic::target_xtile3#2 ]
Allocated zp[1]:311 [ game_logic::tile_id#0 ]
Allocated zp[1]:312 [ game_logic::joy_directions#0 ]
Allocated zp[1]:313 [ game_logic::new_direction#0 ]
Allocated zp[2]:314 [ pill_count ]
Allocated zp[1]:316 [ game_logic::do_reverse#4 ]
Allocated zp[1]:317 [ game_logic::$19 ]
Allocated zp[1]:318 [ game_logic::$27 ]
Allocated zp[1]:319 [ game_logic::$33 ]
Allocated zp[1]:320 [ game_logic::$39 ]
Allocated zp[1]:321 [ game_logic::$45 ]
Allocated zp[1]:322 [ game_logic::$75 ]
Allocated zp[1]:323 [ game_logic::$77 ]
Allocated zp[1]:324 [ game_logic::$80 ]
Allocated zp[1]:325 [ game_logic::$82 ]
Allocated zp[1]:326 [ game_logic::$85 ]
Allocated zp[1]:327 [ game_logic::$87 ]
Allocated zp[1]:328 [ game_logic::$90 ]
Allocated zp[1]:329 [ game_logic::$92 ]
Allocated zp[1]:330 [ game_logic::$220 ]
Allocated zp[1]:331 [ game_logic::$223 ]
Allocated zp[1]:332 [ game_logic::$226 ]
Allocated zp[1]:333 [ game_logic::$229 ]
Allocated zp[1]:334 [ game_logic::$232 ]
Allocated zp[1]:335 [ game_logic::pacman_xtile1#0 ]
Allocated zp[1]:336 [ game_logic::pacman_ytile1#0 ]
Allocated zp[1]:337 [ game_logic::pacman_xtile#0 ]
Allocated zp[1]:338 [ game_logic::pacman_bob_xfine#0 ]
Allocated zp[1]:339 [ game_logic::ghost1_bob_xfine#0 ]
Allocated zp[1]:340 [ game_logic::ghost2_bob_xfine#0 ]
Allocated zp[1]:341 [ game_logic::ghost3_bob_xfine#0 ]
Allocated zp[1]:342 [ game_logic::ghost4_bob_xfine#0 ]
Allocated zp[2]:343 [ game_logic::ytiles#0 ]
Allocated zp[1]:345 [ game_logic::open_directions#1 ]
Allocated zp[1]:346 [ game_logic::open_directions1#1 ]
Allocated zp[1]:347 [ game_logic::open_directions2#1 ]
Allocated zp[1]:348 [ game_logic::open_directions3#1 ]
Allocated zp[1]:349 [ irq_screen_top::$1 ]
Allocated zp[1]:350 [ irq_screen_top::$2 ]
Allocated zp[1]:351 [ game_logic::open_directions4#0 ]
Allocated zp[1]:352 [ game_logic_substep ]
Allocated zp[1]:353 [ game_logic::$210 ]
Allocated zp[1]:354 [ game_logic::ghost4_xtile#0 ]
Allocated zp[1]:355 [ game_logic::ghost4_ytile#0 ]
Allocated zp[1]:356 [ game_logic::ghost3_xtile#0 ]
Allocated zp[1]:357 [ game_logic::ghost3_ytile#0 ]
Allocated zp[1]:358 [ game_logic::ghost2_xtile#0 ]
Allocated zp[1]:359 [ game_logic::ghost2_ytile#0 ]
Allocated zp[1]:360 [ game_logic::ghost1_xtile#0 ]
Allocated zp[1]:361 [ game_logic::ghost1_ytile#0 ]
Allocated zp[1]:362 [ pacman_ch1_idx ]
Allocated zp[1]:363 [ ghosts_mode ]
Allocated zp[1]:364 [ anim_frame_idx ]
Allocated zp[1]:365 [ ghost1_reverse ]
Allocated zp[1]:366 [ ghost2_reverse ]
Allocated zp[1]:367 [ ghost3_reverse ]
Allocated zp[1]:368 [ ghost4_reverse ]
Allocated zp[1]:369 [ frame ]
Allocated zp[1]:370 [ pacman_ch1_enabled ]
Allocated zp[2]:371 [ memset::str#6 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [1] pacman_ch1_enabled = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] pacman_ch1_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] logic_tile_ptr = (volatile char *) 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [4] logic_tile_xcol = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] logic_tile_yfine = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] logic_tile_left_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] logic_tile_right_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] left_render_index_xcol = (char *) 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] left_canvas = (char *) 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] left_ypos_inc_offset = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [11] rigt_render_index_xcol = (char *) 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [12] rigt_canvas = (char *) 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [13] rigt_ypos_inc_offset = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [14] canvas_base_hi = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [15] bobs_restore_base = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [16] top_sprites_color = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [17] top_sprites_mc = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [18] side_sprites_color = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [19] side_sprites_mc = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [20] bottom_sprites_color = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [21] bottom_sprites_mc = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [22] pill_count = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [23] pacman_wins = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [24] pacman_lives = 3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [25] music_play_next = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [26] phase = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [27] frame = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [28] anim_frame_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [29] pacman_xfine = $2d [ ] ( [ ] { } ) always clobbers reg byte a
Statement [30] pacman_yfine = $23 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [31] pacman_direction = STOP [ ] ( [ ] { } ) always clobbers reg byte a
Statement [32] pacman_substep = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [33] ghosts_mode = 1 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [34] ghosts_mode_count = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [35] ghost1_xfine = $2d [ ] ( [ ] { } ) always clobbers reg byte a
Statement [36] ghost1_yfine = $23 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [37] ghost1_direction = STOP [ ] ( [ ] { } ) always clobbers reg byte a
Statement [38] ghost1_substep = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [39] ghost1_reverse = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [40] ghost1_respawn = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [41] ghost2_xfine = $2d [ ] ( [ ] { } ) always clobbers reg byte a
Statement [42] ghost2_yfine = $23 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [43] ghost2_direction = STOP [ ] ( [ ] { } ) always clobbers reg byte a
Statement [44] ghost2_substep = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [45] ghost2_reverse = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [46] ghost2_respawn = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [47] ghost3_xfine = $2d [ ] ( [ ] { } ) always clobbers reg byte a
Statement [48] ghost3_yfine = $23 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [49] ghost3_direction = STOP [ ] ( [ ] { } ) always clobbers reg byte a
Statement [50] ghost3_substep = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [51] ghost3_reverse = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [52] ghost3_respawn = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [53] ghost4_xfine = $2d [ ] ( [ ] { } ) always clobbers reg byte a
Statement [54] ghost4_yfine = $23 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [55] ghost4_direction = STOP [ ] ( [ ] { } ) always clobbers reg byte a
Statement [56] ghost4_substep = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [57] ghost4_reverse = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [58] ghost4_respawn = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [59] game_logic_substep = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [60] game_playable = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement kickasm( uses HARDWARE_IRQ uses RASTER uses IRQ_STATUS uses IRQ_RASTER uses VICII_CONTROL1 uses VICII_RSEL uses VICII_MEMORY) {{ // Stabilize the raster by using the double IRQ method
// Acknowledge the IRQ
lda #IRQ_RASTER
sta IRQ_STATUS
// Set-up IRQ for the next line
inc RASTER
// Point IRQ to almost stable code
lda #<stable
sta HARDWARE_IRQ
lda #>stable
sta HARDWARE_IRQ+1
tsx // Save stack pointer
cli // Reenable interrupts
// Wait for new IRQ using NOP's to ensure minimal jitter when it hits
.fill 15, NOP
.align $20
stable:
txs // Restore stack pointer
ldx #9 // Wait till the raster has almost crossed to the next line (48 cycles)
!: dex
bne !-
nop
lda RASTER
cmp RASTER
bne !+ // And correct the last cycle of potential jitter
!:
// Raster is now completely stable! (Line 0x007 cycle 7)
}} always clobbers reg byte a reg byte x
Statement asm { jsrRASTER_CODE } always clobbers reg byte a reg byte x reg byte y
Statement [66] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [67] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [68] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [69] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [70] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [71] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [72] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [73] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [75] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = irq_screen_top::toD0181_return#0 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [76] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [77] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR) = top_sprites_color [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [78] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR) = top_sprites_color [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [82] if(0!=frame) goto irq_screen_top::toDd001 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [84] *((char *)CIA2) = irq_screen_top::toDd002_return#0 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [85] canvas_base_hi = byte1 SPRITES_2 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [86] bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [87] if(phase==0) goto irq_screen_top::@2 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [92] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [93] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE [ ] ( [ ] { } ) always clobbers reg byte a
Statement [94] *HARDWARE_IRQ = &irq_screen_top [ ] ( [ ] { } ) always clobbers reg byte a
Statement [95] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [96] music_play_next = 1 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [98] *((char *)CIA2) = irq_screen_top::toDd001_return#0 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [99] canvas_base_hi = byte1 SPRITES_1 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [100] bobs_restore_base = 0 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [107] if(game_playable!=0) goto game_logic::@1 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] { } ) always clobbers reg byte a
Statement [112] if(game_logic_substep==0) goto game_logic::@2 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] { } ) always clobbers reg byte a
Statement [113] if(game_logic_substep==1) goto game_logic::@3 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] { } ) always clobbers reg byte a
Statement [114] if(game_logic_substep==2) goto game_logic::@4 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] { } ) always clobbers reg byte a
Statement [115] if(game_logic_substep==4) goto game_logic::@5 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] { } ) always clobbers reg byte a
Statement [116] if(game_logic_substep==5) goto game_logic::@6 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] { } ) always clobbers reg byte a
Statement [117] if(game_logic_substep==6) goto game_logic::@7 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic_substep ] { } ) always clobbers reg byte a
Statement [118] if(game_logic_substep==3) goto game_logic::@14 [ pacman_ch1_enabled anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic_substep ] { } ) always clobbers reg byte a
Statement [119] if(game_logic_substep==7) goto game_logic::@14 [ pacman_ch1_enabled anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction ] { } ) always clobbers reg byte a
Statement [124] game_logic::$17 = game_logic::pacman_bob_xfine#0 >> 2 [ pacman_ch1_enabled anim_frame_idx pacman_yfine pacman_direction ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::pacman_bob_xfine#0 game_logic::$17 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled anim_frame_idx pacman_yfine pacman_direction ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::pacman_bob_xfine#0 game_logic::$17 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:338 [ game_logic::pacman_bob_xfine#0 ]
Statement [128] game_logic::$19 = pacman_direction | anim_frame_idx [ pacman_ch1_enabled anim_frame_idx ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::pacman_bob_xfine#0 game_logic::$19 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled anim_frame_idx ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::pacman_bob_xfine#0 game_logic::$19 ] { } ) always clobbers reg byte a
Statement [129] game_logic::$20 = game_logic::pacman_bob_xfine#0 & 3 [ pacman_ch1_enabled anim_frame_idx ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::$19 game_logic::$20 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled anim_frame_idx ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::$19 game_logic::$20 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:317 [ game_logic::$19 ]
Statement [130] game_logic::$21 = pacman_frames[game_logic::$19] + game_logic::$20 [ pacman_ch1_enabled anim_frame_idx ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::$21 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled anim_frame_idx ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::$21 ] { } ) always clobbers reg byte a
Statement [133] if(ghosts_mode!=FRIGHTENED) goto game_logic::@44 [ pacman_ch1_enabled ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#0 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:228 [ game_logic::ghost_frame_idx#2 game_logic::ghost_frame_idx#0 game_logic::ghost_frame_idx#1 ]
Statement [134] game_logic::ghost_frame_idx#1 = game_logic::ghost_frame_idx#0 | $40 [ pacman_ch1_enabled ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#1 ] { } ) always clobbers reg byte a
Statement [137] game_logic::$25 = game_logic::ghost1_bob_xfine#0 >> 2 [ pacman_ch1_enabled ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost1_bob_xfine#0 game_logic::$25 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost1_bob_xfine#0 game_logic::$25 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:339 [ game_logic::ghost1_bob_xfine#0 ]
Statement [141] game_logic::$27 = ghost1_direction | game_logic::ghost_frame_idx#2 [ pacman_ch1_enabled ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost1_bob_xfine#0 game_logic::$27 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost1_bob_xfine#0 game_logic::$27 ] { } ) always clobbers reg byte a
Statement [142] game_logic::$28 = game_logic::ghost1_bob_xfine#0 & 3 [ pacman_ch1_enabled ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$27 game_logic::$28 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$27 game_logic::$28 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:318 [ game_logic::$27 ]
Statement [143] game_logic::$29 = ghost_frames[game_logic::$27] + game_logic::$28 [ pacman_ch1_enabled ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$29 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$29 ] { } ) always clobbers reg byte a
Statement [146] game_logic::$31 = game_logic::ghost2_bob_xfine#0 >> 2 [ pacman_ch1_enabled ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost2_bob_xfine#0 game_logic::$31 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost2_bob_xfine#0 game_logic::$31 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:340 [ game_logic::ghost2_bob_xfine#0 ]
Statement [150] game_logic::$33 = ghost2_direction | game_logic::ghost_frame_idx#2 [ pacman_ch1_enabled ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost2_bob_xfine#0 game_logic::$33 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost2_bob_xfine#0 game_logic::$33 ] { } ) always clobbers reg byte a
Statement [151] game_logic::$34 = game_logic::ghost2_bob_xfine#0 & 3 [ pacman_ch1_enabled ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$33 game_logic::$34 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$33 game_logic::$34 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:319 [ game_logic::$33 ]
Statement [152] game_logic::$35 = ghost_frames[game_logic::$33] + game_logic::$34 [ pacman_ch1_enabled ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$35 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$35 ] { } ) always clobbers reg byte a
Statement [155] game_logic::$37 = game_logic::ghost3_bob_xfine#0 >> 2 [ pacman_ch1_enabled ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost3_bob_xfine#0 game_logic::$37 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost3_bob_xfine#0 game_logic::$37 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:341 [ game_logic::ghost3_bob_xfine#0 ]
Statement [159] game_logic::$39 = ghost3_direction | game_logic::ghost_frame_idx#2 [ pacman_ch1_enabled ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost3_bob_xfine#0 game_logic::$39 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost3_bob_xfine#0 game_logic::$39 ] { } ) always clobbers reg byte a
Statement [160] game_logic::$40 = game_logic::ghost3_bob_xfine#0 & 3 [ pacman_ch1_enabled ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$39 game_logic::$40 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$39 game_logic::$40 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:320 [ game_logic::$39 ]
Statement [161] game_logic::$41 = ghost_frames[game_logic::$39] + game_logic::$40 [ pacman_ch1_enabled ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$41 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$41 ] { } ) always clobbers reg byte a
Statement [164] game_logic::$43 = game_logic::ghost4_bob_xfine#0 >> 2 [ pacman_ch1_enabled ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost4_bob_xfine#0 game_logic::$43 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost4_bob_xfine#0 game_logic::$43 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:342 [ game_logic::ghost4_bob_xfine#0 ]
Statement [168] game_logic::$45 = ghost4_direction | game_logic::ghost_frame_idx#2 [ pacman_ch1_enabled game_logic::ghost4_bob_xfine#0 game_logic::$45 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::ghost4_bob_xfine#0 game_logic::$45 ] { } ) always clobbers reg byte a
Statement [169] game_logic::$46 = game_logic::ghost4_bob_xfine#0 & 3 [ pacman_ch1_enabled game_logic::$45 game_logic::$46 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::$45 game_logic::$46 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:321 [ game_logic::$45 ]
Statement [170] game_logic::$47 = ghost_frames[game_logic::$45] + game_logic::$46 [ pacman_ch1_enabled game_logic::$47 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::$47 ] { } ) always clobbers reg byte a
Statement [173] if(ghosts_mode==SCATTER) goto game_logic::@45 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [174] if(ghosts_mode==CHASE) goto game_logic::@46 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [175] if(ghosts_mode!=FRIGHTENED) goto game_logic::@47 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [176] if(ghosts_mode_count<$32+1) goto game_logic::@47 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [177] ghosts_mode = CHASE [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [178] ghosts_mode_count = 0 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [181] ghost1_reverse = 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [182] ghost2_reverse = 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [183] ghost3_reverse = 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [184] ghost4_reverse = 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [185] game_logic::pacman_xtile#0 = pacman_xfine >> 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 ] { } ) always clobbers reg byte a
Statement [186] game_logic::pacman_ytile#0 = pacman_yfine >> 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::pacman_ytile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::pacman_ytile#0 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:337 [ game_logic::pacman_xtile#0 ]
Statement [187] game_logic::$210 = game_logic::pacman_ytile#0 << 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 ] { } ) always clobbers reg byte a
Statement [188] game_logic::ytiles#0 = LEVEL_TILES + LEVEL_YTILE_OFFSET[game_logic::$210] [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:353 [ game_logic::$210 ]
Statement [189] game_logic::tile_id#0 = game_logic::ytiles#0[game_logic::pacman_xtile#0] [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::tile_id#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::tile_id#0 ] { } ) always clobbers reg byte a
Statement [190] if(TILES_TYPE[game_logic::tile_id#0]==PILL) goto game_logic::@49 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::tile_id#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::tile_id#0 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:311 [ game_logic::tile_id#0 ]
Statement [191] if(TILES_TYPE[game_logic::tile_id#0]!=POWERUP) goto game_logic::@50 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] { } ) always clobbers reg byte a
Statement [192] game_logic::ytiles#0[game_logic::pacman_xtile#0] = EMPTY [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] { } ) always clobbers reg byte a
Statement [193] game_logic::$65 = game_logic::pacman_xtile#0 >> 1 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::$65 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::$65 ] { } ) always clobbers reg byte a
Statement [195] game_logic::$66 = game_logic::pacman_xtile#0 & $fe [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::ytiles#0 game_logic::$66 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::ytiles#0 game_logic::$66 ] { } ) always clobbers reg byte a
Statement [196] game_logic::$67 = game_logic::ytiles#0 + game_logic::$66 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::$67 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::$67 ] { } ) always clobbers reg byte a
Statement [197] logic_tile_ptr = game_logic::$67 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 ] { } ) always clobbers reg byte a
Statement [200] ghosts_mode = FRIGHTENED [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [201] ghosts_mode_count = 0 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [202] game_logic::$75 = pacman_xfine - ghost1_xfine [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$75 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$75 ] { } ) always clobbers reg byte a
Statement [203] game_logic::$77 = pacman_yfine - ghost1_yfine [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$75 game_logic::$77 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$75 game_logic::$77 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:322 [ game_logic::$75 ]
Statement [204] if(ABS[game_logic::$75]>=2) goto game_logic::@64 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$77 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$77 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:323 [ game_logic::$77 ]
Statement [205] if(ABS[game_logic::$77]<2) goto game_logic::@51 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [206] game_logic::$80 = pacman_xfine - ghost2_xfine [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$80 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$80 ] { } ) always clobbers reg byte a
Statement [207] game_logic::$82 = pacman_yfine - ghost2_yfine [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$80 game_logic::$82 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$80 game_logic::$82 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:324 [ game_logic::$80 ]
Statement [208] if(ABS[game_logic::$80]>=2) goto game_logic::@65 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$82 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$82 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:325 [ game_logic::$82 ]
Statement [209] if(ABS[game_logic::$82]<2) goto game_logic::@52 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [210] game_logic::$85 = pacman_xfine - ghost3_xfine [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$85 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$85 ] { } ) always clobbers reg byte a
Statement [211] game_logic::$87 = pacman_yfine - ghost3_yfine [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine game_logic::$85 game_logic::$87 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine game_logic::$85 game_logic::$87 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:326 [ game_logic::$85 ]
Statement [212] if(ABS[game_logic::$85]>=2) goto game_logic::@66 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine game_logic::$87 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine game_logic::$87 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:327 [ game_logic::$87 ]
Statement [213] if(ABS[game_logic::$87]<2) goto game_logic::@53 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [214] game_logic::$90 = pacman_xfine - ghost4_xfine [ pacman_ch1_enabled pacman_lives pacman_yfine ghosts_mode ghost4_yfine game_logic::$90 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_yfine ghosts_mode ghost4_yfine game_logic::$90 ] { } ) always clobbers reg byte a
Statement [215] game_logic::$92 = pacman_yfine - ghost4_yfine [ pacman_ch1_enabled pacman_lives ghosts_mode game_logic::$90 game_logic::$92 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ghosts_mode game_logic::$90 game_logic::$92 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:328 [ game_logic::$90 ]
Statement [216] if(ABS[game_logic::$90]>=2) goto game_logic::@return [ pacman_ch1_enabled pacman_lives ghosts_mode game_logic::$92 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ghosts_mode game_logic::$92 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:329 [ game_logic::$92 ]
Statement [217] if(ABS[game_logic::$92]<2) goto game_logic::@67 [ pacman_ch1_enabled pacman_lives ghosts_mode ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ghosts_mode ] { } ) always clobbers reg byte a
Statement [218] if(ghosts_mode==FRIGHTENED) goto game_logic::@54 [ pacman_ch1_enabled pacman_lives ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ] { } ) always clobbers reg byte a
Statement [221] ghost4_direction = STOP [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [222] ghost4_xfine = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [223] ghost4_yfine = $23 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [224] ghost4_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [225] ghost4_respawn = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [226] if(ghosts_mode==FRIGHTENED) goto game_logic::@55 [ pacman_ch1_enabled pacman_lives ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ] { } ) always clobbers reg byte a
Statement [229] ghost3_direction = STOP [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [230] ghost3_xfine = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [231] ghost3_yfine = $23 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [232] ghost3_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [233] ghost3_respawn = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [234] if(ghosts_mode==FRIGHTENED) goto game_logic::@56 [ pacman_ch1_enabled pacman_lives ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ] { } ) always clobbers reg byte a
Statement [237] ghost2_direction = STOP [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [238] ghost2_xfine = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [239] ghost2_yfine = $23 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [240] ghost2_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [241] ghost2_respawn = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [242] if(ghosts_mode==FRIGHTENED) goto game_logic::@57 [ pacman_ch1_enabled pacman_lives ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ] { } ) always clobbers reg byte a
Statement [245] ghost1_direction = STOP [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [246] ghost1_xfine = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [247] ghost1_yfine = $23 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [248] ghost1_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [249] ghost1_respawn = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [250] game_logic::ytiles#0[game_logic::pacman_xtile#0] = EMPTY [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] { } ) always clobbers reg byte a
Statement [251] game_logic::$69 = game_logic::pacman_xtile#0 >> 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::$69 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::$69 ] { } ) always clobbers reg byte a
Statement [253] game_logic::$70 = game_logic::pacman_xtile#0 & $fe [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::ytiles#0 game_logic::$70 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::ytiles#0 game_logic::$70 ] { } ) always clobbers reg byte a
Statement [254] game_logic::$71 = game_logic::ytiles#0 + game_logic::$70 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::$71 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::$71 ] { } ) always clobbers reg byte a
Statement [255] logic_tile_ptr = game_logic::$71 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 ] { } ) always clobbers reg byte a
Statement [258] pill_count = -- pill_count [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [259] if(pill_count!=0) goto game_logic::@50 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [260] pacman_wins = 1 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [261] if(ghosts_mode_count<$96+1) goto game_logic::@47 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [262] ghosts_mode = SCATTER [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [263] ghosts_mode_count = 0 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [264] if(ghosts_mode_count<$32+1) goto game_logic::@47 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [265] ghosts_mode = CHASE [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [266] ghosts_mode_count = 0 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [267] if(0!=ghost4_respawn) goto game_logic::@72 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn ] { } ) always clobbers reg byte a
Statement [268] if(ghost4_direction==RIGHT) goto game_logic::@73 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] { } ) always clobbers reg byte a
Statement [269] if(ghost4_direction==DOWN) goto game_logic::@74 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] { } ) always clobbers reg byte a
Statement [270] if(ghost4_direction==LEFT) goto game_logic::@75 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] { } ) always clobbers reg byte a
Statement [271] if(ghost4_direction!=UP) goto game_logic::@76 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] { } ) always clobbers reg byte a
Statement [274] if(ghost4_substep!=0) goto game_logic::@82 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_reverse game_logic::$220 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_reverse game_logic::$220 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:330 [ game_logic::$220 ]
Statement [276] ghost4_substep = 0 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_reverse ] { } ) always clobbers reg byte a
Statement [277] if(0!=ghost4_reverse) goto game_logic::@78 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ] { } ) always clobbers reg byte a
Statement [278] game_logic::ghost4_xtile#0 = ghost4_xfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_yfine ghost4_direction game_logic::ghost4_xtile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_yfine ghost4_direction game_logic::ghost4_xtile#0 ] { { level_tile_directions::xtile#0 = level_tile_directions::xtile#5 game_logic::ghost4_xtile#0 } { level_tile_directions::ytile#0 = level_tile_directions::ytile#5 game_logic::ghost4_ytile#0 } { level_tile_directions::return#2 = level_tile_directions::return#3 } } ) always clobbers reg byte a
Statement [279] game_logic::ghost4_ytile#0 = ghost4_yfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_direction game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_direction game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 ] { { level_tile_directions::xtile#0 = level_tile_directions::xtile#5 game_logic::ghost4_xtile#0 } { level_tile_directions::ytile#0 = level_tile_directions::ytile#5 game_logic::ghost4_ytile#0 } { level_tile_directions::return#2 = level_tile_directions::return#3 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:354 [ game_logic::ghost4_xtile#0 ]
Statement [285] game_logic::open_directions#1 = game_logic::open_directions#0 & DIRECTION_ELIMINATE[ghost4_direction] [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:355 [ game_logic::ghost4_ytile#0 ]
Statement [286] if(ghosts_mode==FRIGHTENED) goto game_logic::@79 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:345 [ game_logic::open_directions#1 ]
Statement [287] if(ghosts_mode==SCATTER) goto game_logic::@80 [ pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 ] { } ) always clobbers reg byte a
Statement [288] game_logic::target_xtile#2 = pacman_xfine >> 1 [ pacman_ch1_enabled pacman_yfine game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 game_logic::target_xtile#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_yfine game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 game_logic::target_xtile#2 ] { } ) always clobbers reg byte a
Statement [289] game_logic::target_ytile#2 = pacman_yfine >> 1 [ pacman_ch1_enabled game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 game_logic::target_xtile#2 game_logic::target_ytile#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 game_logic::target_xtile#2 game_logic::target_ytile#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:307 [ game_logic::target_xtile#3 game_logic::target_xtile#2 ]
Statement [300] ghost4_direction = DIRECTION_SINGLE[game_logic::open_directions#1] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [301] ghost4_direction = DIRECTION_REVERSE[ghost4_direction] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a reg byte y
Statement [302] ghost4_reverse = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [303] ghost4_substep = 1 [ pacman_ch1_enabled ghost4_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost4_xfine ] { } ) always clobbers reg byte a
Statement [304] if(ghost4_xfine==1) goto game_logic::@81 [ pacman_ch1_enabled ghost4_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost4_xfine ] { } ) always clobbers reg byte a
Statement [305] if(ghost4_xfine!=$61) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [306] ghost4_xfine = 1 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [307] ghost4_xfine = $61 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [312] if(ghost4_respawn!=0) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [313] ghost4_direction = RIGHT [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [314] ghost4_xfine = 2 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [315] ghost4_yfine = 2 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [316] ghost4_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [317] if(0!=ghost3_respawn) goto game_logic::@89 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ] { } ) always clobbers reg byte a
Statement [318] if(ghost3_direction==RIGHT) goto game_logic::@90 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] { } ) always clobbers reg byte a
Statement [319] if(ghost3_direction==DOWN) goto game_logic::@91 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] { } ) always clobbers reg byte a
Statement [320] if(ghost3_direction==LEFT) goto game_logic::@92 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] { } ) always clobbers reg byte a
Statement [321] if(ghost3_direction!=UP) goto game_logic::@93 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] { } ) always clobbers reg byte a
Statement [324] if(ghost3_substep!=0) goto game_logic::@99 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_reverse game_logic::$223 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_reverse game_logic::$223 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:331 [ game_logic::$223 ]
Statement [326] ghost3_substep = 0 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_reverse ] { } ) always clobbers reg byte a
Statement [327] if(0!=ghost3_reverse) goto game_logic::@95 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ] { } ) always clobbers reg byte a
Statement [328] game_logic::ghost3_xtile#0 = ghost3_xfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_yfine ghost3_direction game_logic::ghost3_xtile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_yfine ghost3_direction game_logic::ghost3_xtile#0 ] { { level_tile_directions::xtile#1 = level_tile_directions::xtile#5 game_logic::ghost3_xtile#0 } { level_tile_directions::ytile#1 = level_tile_directions::ytile#5 game_logic::ghost3_ytile#0 } { level_tile_directions::return#10 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [329] game_logic::ghost3_ytile#0 = ghost3_yfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_direction game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_direction game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 ] { { level_tile_directions::xtile#1 = level_tile_directions::xtile#5 game_logic::ghost3_xtile#0 } { level_tile_directions::ytile#1 = level_tile_directions::ytile#5 game_logic::ghost3_ytile#0 } { level_tile_directions::return#10 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:356 [ game_logic::ghost3_xtile#0 ]
Statement [335] game_logic::open_directions1#1 = game_logic::open_directions1#0 & DIRECTION_ELIMINATE[ghost3_direction] [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:357 [ game_logic::ghost3_ytile#0 ]
Statement [336] if(ghosts_mode==FRIGHTENED) goto game_logic::@96 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:346 [ game_logic::open_directions1#1 ]
Statement [337] if(ghosts_mode==SCATTER) goto game_logic::@97 [ pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 ] { } ) always clobbers reg byte a
Statement [338] game_logic::target_xtile1#2 = pacman_xfine >> 1 [ pacman_ch1_enabled pacman_yfine game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 game_logic::target_xtile1#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_yfine game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 game_logic::target_xtile1#2 ] { } ) always clobbers reg byte a
Statement [339] game_logic::target_ytile1#2 = pacman_yfine >> 1 [ pacman_ch1_enabled game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 game_logic::target_xtile1#2 game_logic::target_ytile1#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 game_logic::target_xtile1#2 game_logic::target_ytile1#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:308 [ game_logic::target_xtile1#3 game_logic::target_xtile1#2 ]
Statement [350] ghost3_direction = DIRECTION_SINGLE[game_logic::open_directions1#1] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [351] ghost3_direction = DIRECTION_REVERSE[ghost3_direction] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a reg byte y
Statement [352] ghost3_reverse = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [353] ghost3_substep = 1 [ pacman_ch1_enabled ghost3_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost3_xfine ] { } ) always clobbers reg byte a
Statement [354] if(ghost3_xfine==1) goto game_logic::@98 [ pacman_ch1_enabled ghost3_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost3_xfine ] { } ) always clobbers reg byte a
Statement [355] if(ghost3_xfine!=$61) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [356] ghost3_xfine = 1 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [357] ghost3_xfine = $61 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [362] if(ghost3_respawn!=0) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [363] ghost3_direction = UP [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [364] ghost3_xfine = 2 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [365] ghost3_yfine = $46 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [366] ghost3_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [367] if(0!=ghost2_respawn) goto game_logic::@106 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ] { } ) always clobbers reg byte a
Statement [368] if(ghost2_direction==RIGHT) goto game_logic::@107 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] { } ) always clobbers reg byte a
Statement [369] if(ghost2_direction==DOWN) goto game_logic::@108 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] { } ) always clobbers reg byte a
Statement [370] if(ghost2_direction==LEFT) goto game_logic::@109 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] { } ) always clobbers reg byte a
Statement [371] if(ghost2_direction!=UP) goto game_logic::@110 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] { } ) always clobbers reg byte a
Statement [374] if(ghost2_substep!=0) goto game_logic::@116 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_reverse game_logic::$226 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_reverse game_logic::$226 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:332 [ game_logic::$226 ]
Statement [376] ghost2_substep = 0 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_reverse ] { } ) always clobbers reg byte a
Statement [377] if(0!=ghost2_reverse) goto game_logic::@112 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ] { } ) always clobbers reg byte a
Statement [378] game_logic::ghost2_xtile#0 = ghost2_xfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_yfine ghost2_direction game_logic::ghost2_xtile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_yfine ghost2_direction game_logic::ghost2_xtile#0 ] { { level_tile_directions::xtile#2 = level_tile_directions::xtile#5 game_logic::ghost2_xtile#0 } { level_tile_directions::ytile#2 = level_tile_directions::ytile#5 game_logic::ghost2_ytile#0 } { level_tile_directions::return#11 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [379] game_logic::ghost2_ytile#0 = ghost2_yfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_direction game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_direction game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 ] { { level_tile_directions::xtile#2 = level_tile_directions::xtile#5 game_logic::ghost2_xtile#0 } { level_tile_directions::ytile#2 = level_tile_directions::ytile#5 game_logic::ghost2_ytile#0 } { level_tile_directions::return#11 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:358 [ game_logic::ghost2_xtile#0 ]
Statement [385] game_logic::open_directions2#1 = game_logic::open_directions2#0 & DIRECTION_ELIMINATE[ghost2_direction] [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:359 [ game_logic::ghost2_ytile#0 ]
Statement [386] if(ghosts_mode==FRIGHTENED) goto game_logic::@113 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:347 [ game_logic::open_directions2#1 ]
Statement [387] if(ghosts_mode==SCATTER) goto game_logic::@114 [ pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 ] { } ) always clobbers reg byte a
Statement [388] game_logic::target_xtile2#2 = pacman_xfine >> 1 [ pacman_ch1_enabled pacman_yfine game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 game_logic::target_xtile2#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_yfine game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 game_logic::target_xtile2#2 ] { } ) always clobbers reg byte a
Statement [389] game_logic::target_ytile2#2 = pacman_yfine >> 1 [ pacman_ch1_enabled game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 game_logic::target_xtile2#2 game_logic::target_ytile2#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 game_logic::target_xtile2#2 game_logic::target_ytile2#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:309 [ game_logic::target_xtile2#3 game_logic::target_xtile2#2 ]
Statement [400] ghost2_direction = DIRECTION_SINGLE[game_logic::open_directions2#1] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [401] ghost2_direction = DIRECTION_REVERSE[ghost2_direction] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a reg byte y
Statement [402] ghost2_reverse = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [403] ghost2_substep = 1 [ pacman_ch1_enabled ghost2_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost2_xfine ] { } ) always clobbers reg byte a
Statement [404] if(ghost2_xfine==1) goto game_logic::@115 [ pacman_ch1_enabled ghost2_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost2_xfine ] { } ) always clobbers reg byte a
Statement [405] if(ghost2_xfine!=$61) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [406] ghost2_xfine = 1 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [407] ghost2_xfine = $61 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [412] if(ghost2_respawn!=0) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [413] ghost2_direction = LEFT [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [414] ghost2_xfine = $60 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [415] ghost2_yfine = $46 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [416] ghost2_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [417] if(0!=ghost1_respawn) goto game_logic::@123 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ] { } ) always clobbers reg byte a
Statement [418] if(ghost1_direction==RIGHT) goto game_logic::@124 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] { } ) always clobbers reg byte a
Statement [419] if(ghost1_direction==DOWN) goto game_logic::@125 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] { } ) always clobbers reg byte a
Statement [420] if(ghost1_direction==LEFT) goto game_logic::@126 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] { } ) always clobbers reg byte a
Statement [421] if(ghost1_direction!=UP) goto game_logic::@127 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] { } ) always clobbers reg byte a
Statement [424] if(ghost1_substep!=0) goto game_logic::@133 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_reverse game_logic::$229 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_reverse game_logic::$229 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:333 [ game_logic::$229 ]
Statement [426] ghost1_substep = 0 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_reverse ] { } ) always clobbers reg byte a
Statement [427] if(0!=ghost1_reverse) goto game_logic::@129 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ] { } ) always clobbers reg byte a
Statement [428] game_logic::ghost1_xtile#0 = ghost1_xfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_yfine ghost1_direction game_logic::ghost1_xtile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_yfine ghost1_direction game_logic::ghost1_xtile#0 ] { { level_tile_directions::xtile#3 = level_tile_directions::xtile#5 game_logic::ghost1_xtile#0 } { level_tile_directions::ytile#3 = level_tile_directions::ytile#5 game_logic::ghost1_ytile#0 } { level_tile_directions::return#12 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [429] game_logic::ghost1_ytile#0 = ghost1_yfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_direction game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_direction game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 ] { { level_tile_directions::xtile#3 = level_tile_directions::xtile#5 game_logic::ghost1_xtile#0 } { level_tile_directions::ytile#3 = level_tile_directions::ytile#5 game_logic::ghost1_ytile#0 } { level_tile_directions::return#12 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:360 [ game_logic::ghost1_xtile#0 ]
Statement [435] game_logic::open_directions3#1 = game_logic::open_directions3#0 & DIRECTION_ELIMINATE[ghost1_direction] [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:361 [ game_logic::ghost1_ytile#0 ]
Statement [436] if(ghosts_mode==FRIGHTENED) goto game_logic::@130 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:348 [ game_logic::open_directions3#1 ]
Statement [437] if(ghosts_mode==SCATTER) goto game_logic::@131 [ pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 ] { } ) always clobbers reg byte a
Statement [438] game_logic::target_xtile3#2 = pacman_xfine >> 1 [ pacman_ch1_enabled pacman_yfine game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 game_logic::target_xtile3#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_yfine game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 game_logic::target_xtile3#2 ] { } ) always clobbers reg byte a
Statement [439] game_logic::target_ytile3#2 = pacman_yfine >> 1 [ pacman_ch1_enabled game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 game_logic::target_xtile3#2 game_logic::target_ytile3#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 game_logic::target_xtile3#2 game_logic::target_ytile3#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:310 [ game_logic::target_xtile3#3 game_logic::target_xtile3#2 ]
Statement [450] ghost1_direction = DIRECTION_SINGLE[game_logic::open_directions3#1] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [451] ghost1_direction = DIRECTION_REVERSE[ghost1_direction] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a reg byte y
Statement [452] ghost1_reverse = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [453] ghost1_substep = 1 [ pacman_ch1_enabled ghost1_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost1_xfine ] { } ) always clobbers reg byte a
Statement [454] if(ghost1_xfine==1) goto game_logic::@132 [ pacman_ch1_enabled ghost1_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost1_xfine ] { } ) always clobbers reg byte a
Statement [455] if(ghost1_xfine!=$61) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [456] ghost1_xfine = 1 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [457] ghost1_xfine = $61 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [462] if(ghost1_respawn!=0) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [463] ghost1_direction = DOWN [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [464] ghost1_xfine = $60 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [465] ghost1_yfine = 2 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [466] ghost1_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [467] if(pacman_direction==RIGHT) goto game_logic::@140 [ pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] { } ) always clobbers reg byte a
Statement [468] if(pacman_direction==DOWN) goto game_logic::@141 [ pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] { } ) always clobbers reg byte a
Statement [469] if(pacman_direction==LEFT) goto game_logic::@142 [ pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] { } ) always clobbers reg byte a
Statement [470] if(pacman_direction!=UP) goto game_logic::@143 [ pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] { } ) always clobbers reg byte a
Statement [473] if(pacman_substep!=0) goto game_logic::@147 [ pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction game_logic::$232 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction game_logic::$232 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:334 [ game_logic::$232 ]
Statement [475] pacman_substep = 0 [ pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction ] { { level_tile_directions::xtile#4 = level_tile_directions::xtile#5 game_logic::pacman_xtile1#0 } { level_tile_directions::ytile#4 = level_tile_directions::ytile#5 game_logic::pacman_ytile1#0 } { level_tile_directions::return#13 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [476] game_logic::pacman_xtile1#0 = pacman_xfine >> 1 [ pacman_ch1_enabled pacman_yfine pacman_direction game_logic::pacman_xtile1#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_yfine pacman_direction game_logic::pacman_xtile1#0 ] { { level_tile_directions::xtile#4 = level_tile_directions::xtile#5 game_logic::pacman_xtile1#0 } { level_tile_directions::ytile#4 = level_tile_directions::ytile#5 game_logic::pacman_ytile1#0 } { level_tile_directions::return#13 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [477] game_logic::pacman_ytile1#0 = pacman_yfine >> 1 [ pacman_ch1_enabled pacman_direction game_logic::pacman_xtile1#0 game_logic::pacman_ytile1#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction game_logic::pacman_xtile1#0 game_logic::pacman_ytile1#0 ] { { level_tile_directions::xtile#4 = level_tile_directions::xtile#5 game_logic::pacman_xtile1#0 } { level_tile_directions::ytile#4 = level_tile_directions::ytile#5 game_logic::pacman_ytile1#0 } { level_tile_directions::return#13 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:335 [ game_logic::pacman_xtile1#0 ]
Statement [483] game_logic::$199 = *((char *)CIA1) & $f [ pacman_ch1_enabled pacman_direction game_logic::open_directions4#0 game_logic::$199 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction game_logic::open_directions4#0 game_logic::$199 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:351 [ game_logic::open_directions4#0 ]
Statement [484] game_logic::$200 = game_logic::$199 ^ $f [ pacman_ch1_enabled pacman_direction game_logic::open_directions4#0 game_logic::$200 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction game_logic::open_directions4#0 game_logic::$200 ] { } ) always clobbers reg byte a
Statement [485] game_logic::joy_directions#0 = game_logic::$200 << 2 [ pacman_ch1_enabled pacman_direction game_logic::open_directions4#0 game_logic::joy_directions#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction game_logic::open_directions4#0 game_logic::joy_directions#0 ] { } ) always clobbers reg byte a
Statement [491] pacman_direction = pacman_direction & game_logic::open_directions4#0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [492] pacman_substep = 1 [ pacman_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_xfine ] { } ) always clobbers reg byte a
Statement [493] pacman_ch1_enabled = 1 [ pacman_ch1_enabled pacman_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine ] { } ) always clobbers reg byte a
Statement [494] if(pacman_xfine==1) goto game_logic::@146 [ pacman_ch1_enabled pacman_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine ] { } ) always clobbers reg byte a
Statement [495] if(pacman_xfine!=$61) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [496] pacman_xfine = 1 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [497] pacman_xfine = $61 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [501] if(0==pacman_ch1_enabled) goto pacman_sound_play::@return [ pacman_ch1_idx ] ( pacman_sound_play:91 [ pacman_ch1_idx ] { } ) always clobbers reg byte a
Statement [502] *SID_CH1_FREQ_HI = PACMAN_CH1_FREQ_HI[pacman_ch1_idx] [ pacman_ch1_idx ] ( pacman_sound_play:91 [ pacman_ch1_idx ] { } ) always clobbers reg byte a reg byte y
Statement [503] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = PACMAN_CH1_CONTROL[pacman_ch1_idx] [ pacman_ch1_idx ] ( pacman_sound_play:91 [ pacman_ch1_idx ] { } ) always clobbers reg byte a reg byte y
Statement [505] if(pacman_ch1_idx!=$16*SIZEOF_CHAR) goto pacman_sound_play::@return [ ] ( pacman_sound_play:91 [ ] { } ) always clobbers reg byte a
Statement [506] pacman_ch1_idx = 0 [ ] ( pacman_sound_play:91 [ ] { } ) always clobbers reg byte a
Statement [507] pacman_ch1_enabled = 0 [ ] ( pacman_sound_play:91 [ ] { } ) always clobbers reg byte a
Statement [511] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [512] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [513] *PROCPORT = PROCPORT_RAM_ALL [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [515] byteboozer_decrunch::crunched = RASTER_CODE_CRUNCHED [ byteboozer_decrunch::crunched ] ( main:62::splash_run:102 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [517] byteboozer_decrunch::crunched = LOGIC_CODE_CRUNCHED [ byteboozer_decrunch::crunched ] ( main:62::splash_run:102 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [527] byteboozer_decrunch::crunched = SPLASH_CRUNCHED [ byteboozer_decrunch::crunched ] ( main:62::splash_run:102 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [535] byteboozer_decrunch::crunched = BOB_GRAPHICS_CRUNCHED [ byteboozer_decrunch::crunched ] ( main:62::splash_run:102 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [541] byteboozer_decrunch::crunched = INTRO_MUSIC_CRUNCHED_UPPER [ byteboozer_decrunch::crunched ] ( main:62::splash_run:102 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [545] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [546] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [550] *((char *)CIA2) = splash_run::toDd001_return#0 [ splash_run::msb#10 ] ( main:62::splash_run:102 [ splash_run::msb#10 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:158 [ splash_run::msb#10 splash_run::msb#8 splash_run::msb#1 splash_run::msb#2 ]
Statement [551] canvas_base_hi = byte1 SPRITES_2 [ splash_run::msb#10 ] ( main:62::splash_run:102 [ splash_run::msb#10 ] { } ) always clobbers reg byte a
Statement [552] bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE [ splash_run::msb#10 ] ( main:62::splash_run:102 [ splash_run::msb#10 ] { } ) always clobbers reg byte a
Statement [554] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = splash_run::toD0181_return#0 [ splash_run::msb#10 ] ( main:62::splash_run:102 [ splash_run::msb#10 ] { } ) always clobbers reg byte a
Statement [556] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $ff [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [557] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $ff [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [558] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = BLACK [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [559] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = BLACK [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [560] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLUE [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [561] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = RED [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [562] top_sprites_mc = 3 [ top_sprites_mc ] ( main:62::splash_run:102 [ top_sprites_mc ] { } ) always clobbers reg byte a
Statement [563] side_sprites_mc = 0 [ top_sprites_mc ] ( main:62::splash_run:102 [ top_sprites_mc ] { } ) always clobbers reg byte a
Statement [564] bottom_sprites_mc = 3 [ top_sprites_mc ] ( main:62::splash_run:102 [ top_sprites_mc ] { } ) always clobbers reg byte a
Statement [565] top_sprites_color = YELLOW [ top_sprites_color top_sprites_mc ] ( main:62::splash_run:102 [ top_sprites_color top_sprites_mc ] { } ) always clobbers reg byte a
Statement [566] side_sprites_color = BLUE [ top_sprites_color top_sprites_mc ] ( main:62::splash_run:102 [ top_sprites_color top_sprites_mc ] { } ) always clobbers reg byte a
Statement [567] bottom_sprites_color = YELLOW [ top_sprites_color top_sprites_mc ] ( main:62::splash_run:102 [ top_sprites_color top_sprites_mc ] { } ) always clobbers reg byte a
Statement [568] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc [ top_sprites_color ] ( main:62::splash_run:102 [ top_sprites_color ] { } ) always clobbers reg byte a
Statement [571] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = 8 [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement asm { lda#1 staINTRO_MUSIC+$69 } always clobbers reg byte a
Statement asm { lda#0 } always clobbers reg byte a
Statement [576] callexecute *musicInit [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [577] phase = 0 [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [578] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [579] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fa) goto splash_run::@12 [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [580] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & ~VICII_RST8|VICII_RSEL|VICII_DEN [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [581] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [582] *HARDWARE_IRQ = &irq_screen_top [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [583] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a
Statement [585] *IRQ_STATUS = $f [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [589] music_play_next = 0 [ music_play_next ] ( main:62::splash_run:102 [ music_play_next ] { } ) always clobbers reg byte a
Statement [596] if(0==music_play_next) goto splash_run::@14 [ music_play_next ] ( main:62::splash_run:102 [ music_play_next ] { } ) always clobbers reg byte a
Statement [598] callexecute *musicPlay [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [599] music_play_next = 0 [ music_play_next ] ( main:62::splash_run:102 [ music_play_next ] { } ) always clobbers reg byte a
Statement [600] bobs_xcol[splash_run::i2#2] = $a [ splash_run::i2#2 ] ( main:62::splash_run:102 [ splash_run::i2#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:161 [ splash_run::i2#2 splash_run::i2#1 ]
Statement [601] bobs_yfine[splash_run::i2#2] = $2d [ splash_run::i2#2 ] ( main:62::splash_run:102 [ splash_run::i2#2 ] { } ) always clobbers reg byte a
Statement [602] bobs_bob_id[splash_run::i2#2] = 0 [ splash_run::i2#2 ] ( main:62::splash_run:102 [ splash_run::i2#2 ] { } ) always clobbers reg byte a
Statement [604] SPRITES_COLOR[splash_run::i1#2] = top_sprites_color [ top_sprites_color splash_run::i1#2 ] ( main:62::splash_run:102 [ top_sprites_color splash_run::i1#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:160 [ splash_run::i1#2 splash_run::i1#1 ]
Statement [606] splash_run::$34 = splash_run::i#2 << 1 [ splash_run::i#2 splash_run::msb#10 splash_run::$34 ] ( main:62::splash_run:102 [ splash_run::i#2 splash_run::msb#10 splash_run::$34 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:162 [ splash_run::i#2 splash_run::i#1 ]
Statement [607] SPRITES_YPOS[splash_run::$34] = 7 [ splash_run::i#2 splash_run::msb#10 splash_run::$34 ] ( main:62::splash_run:102 [ splash_run::i#2 splash_run::msb#10 splash_run::$34 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:171 [ splash_run::$34 ]
Statement [608] splash_run::xpos#0 = splash_run::sprites_xpos[splash_run::$34] [ splash_run::i#2 splash_run::msb#10 splash_run::$34 splash_run::xpos#0 ] ( main:62::splash_run:102 [ splash_run::i#2 splash_run::msb#10 splash_run::$34 splash_run::xpos#0 ] { } ) always clobbers reg byte a
Statement [609] SPRITES_XPOS[splash_run::$34] = (char)splash_run::xpos#0 [ splash_run::i#2 splash_run::msb#10 splash_run::xpos#0 ] ( main:62::splash_run:102 [ splash_run::i#2 splash_run::msb#10 splash_run::xpos#0 ] { } ) always clobbers reg byte a
Statement [613] splash_run::msb#2 = splash_run::msb#1 | $80 [ splash_run::i#2 splash_run::msb#2 ] ( main:62::splash_run:102 [ splash_run::i#2 splash_run::msb#2 ] { } ) always clobbers reg byte a
Statement [620] pacman_wins = 0 [ pacman_wins ] ( main:62::gameplay_run:104 [ pacman_wins ] { } ) always clobbers reg byte a
Statement [621] pacman_lives = 3 [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [622] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLACK [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [623] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = BLACK [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [626] byteboozer_decrunch::crunched = LEVEL_TILES_CRUNCHED [ pacman_wins pacman_lives byteboozer_decrunch::crunched ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [634] level_show::return#0 = level_show::count#12 [ pacman_wins pacman_lives level_show::return#0 ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives level_show::return#0 ] { { level_show::return#0 = level_show::count#12 } } ) always clobbers reg byte a
Statement [635] gameplay_run::$4 = level_show::return#0 [ pacman_wins pacman_lives gameplay_run::$4 ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives gameplay_run::$4 ] { } ) always clobbers reg byte a
Statement [636] pill_count = gameplay_run::$4 [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [637] top_sprites_mc = $ff [ top_sprites_mc pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_mc pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [638] side_sprites_mc = $ff [ top_sprites_mc pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_mc pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [639] bottom_sprites_mc = $ff [ top_sprites_mc pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_mc pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [640] top_sprites_color = YELLOW [ top_sprites_color top_sprites_mc pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_color top_sprites_mc pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [641] side_sprites_color = YELLOW [ top_sprites_color top_sprites_mc pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_color top_sprites_mc pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [642] bottom_sprites_color = YELLOW [ top_sprites_color top_sprites_mc pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_color top_sprites_mc pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [643] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc [ top_sprites_color pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_color pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [646] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLUE [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [647] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = RED [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [648] phase = 1 [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [652] game_playable = 1 [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [653] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [654] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fb) goto gameplay_run::@10 [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [655] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fa) goto gameplay_run::@11 [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [656] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & ~VICII_RST8|VICII_RSEL|VICII_DEN [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [657] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [658] *HARDWARE_IRQ = &irq_screen_top [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [659] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a
Statement [661] *IRQ_STATUS = $f [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [663] if(0!=pacman_wins) goto gameplay_run::@return [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [664] if(pacman_lives==0) goto gameplay_run::@return [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [666] SPRITES_COLOR[gameplay_run::i2#2] = top_sprites_color [ top_sprites_color pacman_wins pacman_lives gameplay_run::i2#2 ] ( main:62::gameplay_run:104 [ top_sprites_color pacman_wins pacman_lives gameplay_run::i2#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:94 [ gameplay_run::i2#2 gameplay_run::i2#1 ]
Statement [668] SPRITES_COLOR[gameplay_run::i1#2] = BLACK [ pacman_wins pacman_lives gameplay_run::i1#2 ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives gameplay_run::i1#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:93 [ gameplay_run::i1#2 gameplay_run::i1#1 ]
Statement [670] ((char *)SID)[gameplay_run::i#2] = 0 [ gameplay_run::i#2 ] ( main:62::gameplay_run:104 [ gameplay_run::i#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:92 [ gameplay_run::i#2 gameplay_run::i#1 ]
Statement [672] game_playable = 0 [ ] ( main:62::done_run:106 [ ] { } ) always clobbers reg byte a
Statement [673] phase = 0 [ ] ( main:62::done_run:106 [ ] { } ) always clobbers reg byte a
Statement asm { lda#0 } always clobbers reg byte a
Statement [679] callexecute *musicInit [ pacman_wins ] ( main:62::done_run:106 [ pacman_wins ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [680] if(0!=pacman_wins) goto done_run::@2 [ ] ( main:62::done_run:106 [ ] { } ) always clobbers reg byte a
Statement [681] byteboozer_decrunch::crunched = GAMEOVER_GFX_CRUNCHED [ byteboozer_decrunch::crunched ] ( main:62::done_run:106 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [685] music_play_next = 0 [ music_play_next ] ( main:62::done_run:106 [ music_play_next ] { } ) always clobbers reg byte a
Statement [692] if(0==music_play_next) goto done_run::@14 [ music_play_next ] ( main:62::done_run:106 [ music_play_next ] { } ) always clobbers reg byte a
Statement [694] callexecute *musicPlay [ ] ( main:62::done_run:106 [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [695] music_play_next = 0 [ music_play_next ] ( main:62::done_run:106 [ music_play_next ] { } ) always clobbers reg byte a
Statement [699] done_run::pixels#0 = *done_run::gfx#2 [ done_run::xcol#2 done_run::gfx#2 done_run::ypos#2 done_run::pixels#0 ] ( main:62::done_run:106 [ done_run::xcol#2 done_run::gfx#2 done_run::ypos#2 done_run::pixels#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp[1]:100 [ done_run::xcol#2 done_run::xcol#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:100 [ done_run::xcol#2 done_run::xcol#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:71 [ done_run::ypos#2 done_run::ypos#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:71 [ done_run::ypos#2 done_run::ypos#1 ]
Statement [706] byteboozer_decrunch::crunched = WIN_GFX_CRUNCHED [ byteboozer_decrunch::crunched ] ( main:62::done_run:106 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [708] bobs_xcol[done_run::i1#2] = $a [ done_run::i1#2 ] ( main:62::done_run:106 [ done_run::i1#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:99 [ done_run::i1#2 done_run::i1#1 ]
Statement [709] bobs_yfine[done_run::i1#2] = $2d [ done_run::i1#2 ] ( main:62::done_run:106 [ done_run::i1#2 ] { } ) always clobbers reg byte a
Statement [710] bobs_bob_id[done_run::i1#2] = 0 [ done_run::i1#2 ] ( main:62::done_run:106 [ done_run::i1#2 ] { } ) always clobbers reg byte a
Statement [712] ((char *)SID)[done_run::i#2] = 0 [ done_run::i#2 ] ( main:62::done_run:106 [ done_run::i#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:95 [ done_run::i#2 done_run::i#1 ]
Statement [714] ghosts_mode_count = 0 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [715] pacman_substep = 0 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [716] ghost1_substep = 0 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [717] ghost2_substep = 0 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [718] ghost3_substep = 0 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [719] ghost4_substep = 0 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [720] pacman_direction = STOP [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [721] ghost1_direction = STOP [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [722] ghost2_direction = STOP [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [723] ghost3_direction = STOP [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [724] ghost4_direction = STOP [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [725] pacman_xfine = $32 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [726] ghost1_xfine = $32 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [727] ghost2_xfine = $32 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [728] ghost3_xfine = $32 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [729] ghost4_xfine = $32 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [730] ghost1_yfine = $23 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [731] ghost2_yfine = $23 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [732] ghost3_yfine = $23 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [733] ghost4_yfine = $23 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [734] pacman_yfine = $3e [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [735] ghost1_respawn = $a [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [736] ghost2_respawn = $14 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [737] ghost3_respawn = $1e [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [738] ghost4_respawn = $28 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [743] level_tile_directions::$5 = level_tile_directions::ytile#5 << 1 [ level_tile_directions::xtile#5 level_tile_directions::$5 ] ( game_logic:89::level_tile_directions:282 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_direction game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 level_tile_directions::xtile#5 level_tile_directions::$5 ] { { level_tile_directions::xtile#0 = level_tile_directions::xtile#5 game_logic::ghost4_xtile#0 } { level_tile_directions::ytile#0 = level_tile_directions::ytile#5 game_logic::ghost4_ytile#0 } { level_tile_directions::return#2 = level_tile_directions::return#3 } } game_logic:89::level_tile_directions:332 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_direction game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 level_tile_directions::xtile#5 level_tile_directions::$5 ] { { level_tile_directions::xtile#1 = level_tile_directions::xtile#5 game_logic::ghost3_xtile#0 } { level_tile_directions::ytile#1 = level_tile_directions::ytile#5 game_logic::ghost3_ytile#0 } { level_tile_directions::return#10 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:382 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_direction game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 level_tile_directions::xtile#5 level_tile_directions::$5 ] { { level_tile_directions::xtile#2 = level_tile_directions::xtile#5 game_logic::ghost2_xtile#0 } { level_tile_directions::ytile#2 = level_tile_directions::ytile#5 game_logic::ghost2_ytile#0 } { level_tile_directions::return#11 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:432 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_direction game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 level_tile_directions::xtile#5 level_tile_directions::$5 ] { { level_tile_directions::xtile#3 = level_tile_directions::xtile#5 game_logic::ghost1_xtile#0 } { level_tile_directions::ytile#3 = level_tile_directions::ytile#5 game_logic::ghost1_ytile#0 } { level_tile_directions::return#12 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:480 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction level_tile_directions::xtile#5 level_tile_directions::$5 ] { { level_tile_directions::xtile#4 = level_tile_directions::xtile#5 game_logic::pacman_xtile1#0 } { level_tile_directions::ytile#4 = level_tile_directions::ytile#5 game_logic::pacman_ytile1#0 } { level_tile_directions::return#13 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:211 [ level_tile_directions::xtile#5 level_tile_directions::xtile#1 level_tile_directions::xtile#2 level_tile_directions::xtile#3 level_tile_directions::xtile#4 level_tile_directions::xtile#0 ]
Statement [744] level_tile_directions::ytiles#0 = LEVEL_TILES_DIRECTIONS + LEVEL_YTILE_OFFSET[level_tile_directions::$5] [ level_tile_directions::xtile#5 level_tile_directions::ytiles#0 ] ( game_logic:89::level_tile_directions:282 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_direction game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 level_tile_directions::xtile#5 level_tile_directions::ytiles#0 ] { { level_tile_directions::xtile#0 = level_tile_directions::xtile#5 game_logic::ghost4_xtile#0 } { level_tile_directions::ytile#0 = level_tile_directions::ytile#5 game_logic::ghost4_ytile#0 } { level_tile_directions::return#2 = level_tile_directions::return#3 } } game_logic:89::level_tile_directions:332 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_direction game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 level_tile_directions::xtile#5 level_tile_directions::ytiles#0 ] { { level_tile_directions::xtile#1 = level_tile_directions::xtile#5 game_logic::ghost3_xtile#0 } { level_tile_directions::ytile#1 = level_tile_directions::ytile#5 game_logic::ghost3_ytile#0 } { level_tile_directions::return#10 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:382 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_direction game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 level_tile_directions::xtile#5 level_tile_directions::ytiles#0 ] { { level_tile_directions::xtile#2 = level_tile_directions::xtile#5 game_logic::ghost2_xtile#0 } { level_tile_directions::ytile#2 = level_tile_directions::ytile#5 game_logic::ghost2_ytile#0 } { level_tile_directions::return#11 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:432 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_direction game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 level_tile_directions::xtile#5 level_tile_directions::ytiles#0 ] { { level_tile_directions::xtile#3 = level_tile_directions::xtile#5 game_logic::ghost1_xtile#0 } { level_tile_directions::ytile#3 = level_tile_directions::ytile#5 game_logic::ghost1_ytile#0 } { level_tile_directions::return#12 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:480 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction level_tile_directions::xtile#5 level_tile_directions::ytiles#0 ] { { level_tile_directions::xtile#4 = level_tile_directions::xtile#5 game_logic::pacman_xtile1#0 } { level_tile_directions::ytile#4 = level_tile_directions::ytile#5 game_logic::pacman_ytile1#0 } { level_tile_directions::return#13 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [745] level_tile_directions::return#0 = level_tile_directions::ytiles#0[level_tile_directions::xtile#5] [ level_tile_directions::return#0 ] ( game_logic:89::level_tile_directions:282 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_direction game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 level_tile_directions::return#0 ] { { level_tile_directions::xtile#0 = level_tile_directions::xtile#5 game_logic::ghost4_xtile#0 } { level_tile_directions::ytile#0 = level_tile_directions::ytile#5 game_logic::ghost4_ytile#0 } { level_tile_directions::return#2 = level_tile_directions::return#3 } } game_logic:89::level_tile_directions:332 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_direction game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 level_tile_directions::return#0 ] { { level_tile_directions::xtile#1 = level_tile_directions::xtile#5 game_logic::ghost3_xtile#0 } { level_tile_directions::ytile#1 = level_tile_directions::ytile#5 game_logic::ghost3_ytile#0 } { level_tile_directions::return#10 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:382 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_direction game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 level_tile_directions::return#0 ] { { level_tile_directions::xtile#2 = level_tile_directions::xtile#5 game_logic::ghost2_xtile#0 } { level_tile_directions::ytile#2 = level_tile_directions::ytile#5 game_logic::ghost2_ytile#0 } { level_tile_directions::return#11 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:432 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_direction game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 level_tile_directions::return#0 ] { { level_tile_directions::xtile#3 = level_tile_directions::xtile#5 game_logic::ghost1_xtile#0 } { level_tile_directions::ytile#3 = level_tile_directions::ytile#5 game_logic::ghost1_ytile#0 } { level_tile_directions::return#12 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:480 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction level_tile_directions::return#0 ] { { level_tile_directions::xtile#4 = level_tile_directions::xtile#5 game_logic::pacman_xtile1#0 } { level_tile_directions::ytile#4 = level_tile_directions::ytile#5 game_logic::pacman_ytile1#0 } { level_tile_directions::return#13 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [749] choose_direction::xdiff#0 = choose_direction::ghost_xtile#4 - choose_direction::target_xtile#4 [ choose_direction::ghost_ytile#4 choose_direction::target_ytile#4 choose_direction::open_directions#10 choose_direction::xdiff#0 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::ghost_ytile#4 choose_direction::target_ytile#4 choose_direction::open_directions#10 choose_direction::xdiff#0 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::ghost_ytile#4 choose_direction::target_ytile#4 choose_direction::open_directions#10 choose_direction::xdiff#0 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::ghost_ytile#4 choose_direction::target_ytile#4 choose_direction::open_directions#10 choose_direction::xdiff#0 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::ghost_ytile#4 choose_direction::target_ytile#4 choose_direction::open_directions#10 choose_direction::xdiff#0 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:212 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:207 [ choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:229 [ choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ]
Statement [750] choose_direction::ydiff#0 = choose_direction::ghost_ytile#4 - choose_direction::target_ytile#4 [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:294 [ choose_direction::xdiff#0 ]
Statement [751] choose_direction::$2 = choose_direction::open_directions#10 & UP [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::$2 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::$2 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::$2 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::$2 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::$2 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:293 [ choose_direction::ydiff#0 ]
Statement [753] choose_direction::dist_up#0 = ABS[choose_direction::xdiff#0] + (ABS+-1)[choose_direction::ydiff#0] [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_up#0 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_up#0 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_up#0 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_up#0 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_up#0 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [757] choose_direction::$4 = choose_direction::open_directions#10 & DOWN [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::$4 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::$4 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::$4 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::$4 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::$4 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:205 [ choose_direction::dist_min#6 choose_direction::dist_up#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:203 [ choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ]
Statement [759] choose_direction::dist_down#0 = ABS[choose_direction::xdiff#0] + (ABS+1)[choose_direction::ydiff#0] [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::dist_down#0 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::dist_down#0 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::dist_down#0 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::dist_down#0 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::dist_down#0 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [763] choose_direction::$6 = choose_direction::open_directions#10 & LEFT [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::$6 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::$6 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::$6 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::$6 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::$6 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:176 [ choose_direction::dist_min#10 choose_direction::dist_min#13 choose_direction::dist_min#14 choose_direction::dist_down#0 ]
Statement [765] choose_direction::dist_left#0 = (ABS+-1)[choose_direction::xdiff#0] + ABS[choose_direction::ydiff#0] [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::dist_left#0 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::dist_left#0 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::dist_left#0 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::dist_left#0 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::dist_left#0 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [769] choose_direction::$8 = choose_direction::open_directions#10 & RIGHT [ choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::$8 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::$8 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::$8 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::$8 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::$8 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:179 [ choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ]
Statement [771] choose_direction::dist_right#0 = (ABS+1)[choose_direction::xdiff#0] + ABS[choose_direction::ydiff#0] [ choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::dist_right#0 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::dist_right#0 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::dist_right#0 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::dist_right#0 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::dist_right#0 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [779] if(memset::num#5<=0) goto memset::@return [ memset::num#5 memset::str#6 ] ( main:62::splash_run:102::memset:514 [ memset::num#5 memset::str#6 ] { } main:62::splash_run:102::memset:522 [ memset::num#5 memset::str#6 ] { } main:62::splash_run:102::memset:524 [ memset::num#5 memset::str#6 ] { } main:62::splash_run:102::memset:532 [ memset::num#5 memset::str#6 ] { } main:62::splash_run:102::memset:544 [ memset::num#5 memset::str#6 ] { } ) always clobbers reg byte a
Statement [780] memset::end#0 = (char *)memset::str#6 + memset::num#5 [ memset::str#6 memset::end#0 ] ( main:62::splash_run:102::memset:514 [ memset::str#6 memset::end#0 ] { } main:62::splash_run:102::memset:522 [ memset::str#6 memset::end#0 ] { } main:62::splash_run:102::memset:524 [ memset::str#6 memset::end#0 ] { } main:62::splash_run:102::memset:532 [ memset::str#6 memset::end#0 ] { } main:62::splash_run:102::memset:544 [ memset::str#6 memset::end#0 ] { } ) always clobbers reg byte a
Statement [781] memset::dst#4 = (char *)memset::str#6 [ memset::end#0 memset::dst#4 ] ( main:62::splash_run:102::memset:514 [ memset::end#0 memset::dst#4 ] { } main:62::splash_run:102::memset:522 [ memset::end#0 memset::dst#4 ] { } main:62::splash_run:102::memset:524 [ memset::end#0 memset::dst#4 ] { } main:62::splash_run:102::memset:532 [ memset::end#0 memset::dst#4 ] { } main:62::splash_run:102::memset:544 [ memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a
Statement [783] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::end#0 memset::dst#2 ] ( main:62::splash_run:102::memset:514 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:522 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:524 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:532 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:544 [ memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
Statement [785] *memset::dst#2 = 0 [ memset::end#0 memset::dst#2 ] ( main:62::splash_run:102::memset:514 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:522 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:524 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:532 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:544 [ memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
Statement asm { ldycrunched ldxcrunched+1 jsrb2.Decrunch } always clobbers reg byte a reg byte x reg byte y
Statement [791] if(*merge_code::raster_code#4!=merge_code::RASTER_END) goto merge_code::@2 [ merge_code::raster_code#4 merge_code::dest_code#14 merge_code::logic_code#18 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#4 merge_code::dest_code#14 merge_code::logic_code#18 ] { } ) always clobbers reg byte a reg byte y
Statement [792] merge_code::raster_code#1 = ++ merge_code::raster_code#4 [ merge_code::dest_code#14 merge_code::logic_code#18 merge_code::raster_code#1 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::dest_code#14 merge_code::logic_code#18 merge_code::raster_code#1 ] { } ) always clobbers reg byte a
Statement [793] merge_code::cycle_budget#0 = *merge_code::raster_code#1 [ merge_code::dest_code#14 merge_code::logic_code#18 merge_code::raster_code#1 merge_code::cycle_budget#0 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::dest_code#14 merge_code::logic_code#18 merge_code::raster_code#1 merge_code::cycle_budget#0 ] { } ) always clobbers reg byte a reg byte y
Statement [794] merge_code::raster_code#2 = ++ merge_code::raster_code#1 [ merge_code::dest_code#14 merge_code::logic_code#18 merge_code::raster_code#2 merge_code::cycle_budget#0 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::dest_code#14 merge_code::logic_code#18 merge_code::raster_code#2 merge_code::cycle_budget#0 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:89 [ merge_code::cycle_budget#10 merge_code::cycle_budget#2 merge_code::cycle_budget#3 merge_code::cycle_budget#13 merge_code::cycle_budget#0 merge_code::cycle_budget#1 ]
Statement [797] if(*merge_code::logic_code#12!=merge_code::LOGIC_EXIT) goto merge_code::@15 [ merge_code::logic_code#12 merge_code::dest_code#12 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::logic_code#12 merge_code::dest_code#12 ] { } ) always clobbers reg byte a reg byte y
Statement [798] *merge_code::dest_code#12 = $60 [ ] ( main:62::splash_run:102::merge_code:520 [ ] { } ) always clobbers reg byte a reg byte y
Statement [800] merge_code::logic_code#3 = ++ merge_code::logic_code#12 [ merge_code::dest_code#12 merge_code::logic_code#3 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::dest_code#12 merge_code::logic_code#3 ] { } ) always clobbers reg byte a
Statement [802] if(*merge_code::logic_code#14!=merge_code::LOGIC_END) goto merge_code::@18 [ merge_code::dest_code#13 merge_code::logic_code#14 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::dest_code#13 merge_code::logic_code#14 ] { } ) always clobbers reg byte a reg byte y
Statement [803] merge_code::logic_code#5 = ++ merge_code::logic_code#14 [ merge_code::logic_code#5 merge_code::dest_code#13 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::logic_code#5 merge_code::dest_code#13 ] { } ) always clobbers reg byte a
Statement [804] *merge_code::dest_code#13 = *merge_code::logic_code#14 [ merge_code::dest_code#13 merge_code::logic_code#14 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::dest_code#13 merge_code::logic_code#14 ] { } ) always clobbers reg byte a reg byte y
Statement [809] merge_code::logic_cycles#0 = *merge_code::logic_code#17 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#13 merge_code::dest_code#21 merge_code::logic_cycles#0 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#13 merge_code::dest_code#21 merge_code::logic_cycles#0 ] { } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:89 [ merge_code::cycle_budget#10 merge_code::cycle_budget#2 merge_code::cycle_budget#3 merge_code::cycle_budget#13 merge_code::cycle_budget#0 merge_code::cycle_budget#1 ]
Statement [815] *merge_code::dest_code#10 = $ea [ merge_code::raster_code#2 merge_code::dest_code#10 merge_code::logic_code#17 merge_code::cycle_budget#10 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::dest_code#10 merge_code::logic_code#17 merge_code::cycle_budget#10 ] { } ) always clobbers reg byte a reg byte y
Statement [818] *merge_code::dest_code#10 = $24 [ merge_code::raster_code#2 merge_code::dest_code#10 merge_code::logic_code#17 merge_code::cycle_budget#10 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::dest_code#10 merge_code::logic_code#17 merge_code::cycle_budget#10 ] { } ) always clobbers reg byte a reg byte y
Statement [819] merge_code::dest_code#2 = ++ merge_code::dest_code#10 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#10 merge_code::dest_code#2 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#10 merge_code::dest_code#2 ] { } ) always clobbers reg byte a
Statement [820] *merge_code::dest_code#2 = $ea [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#10 merge_code::dest_code#2 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#10 merge_code::dest_code#2 ] { } ) always clobbers reg byte a reg byte y
Statement [821] merge_code::dest_code#3 = ++ merge_code::dest_code#2 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#10 merge_code::dest_code#3 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#10 merge_code::dest_code#3 ] { } ) always clobbers reg byte a
Statement [822] merge_code::cycle_budget#2 = merge_code::cycle_budget#10 - 3 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#2 merge_code::dest_code#3 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#2 merge_code::dest_code#3 ] { } ) always clobbers reg byte a reg byte x
Statement [825] merge_code::logic_code#0 = ++ merge_code::logic_code#17 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::dest_code#21 merge_code::logic_cycles#0 merge_code::logic_code#0 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::dest_code#21 merge_code::logic_cycles#0 merge_code::logic_code#0 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:127 [ merge_code::logic_cycles#0 ]
Statement [827] if(*merge_code::logic_code#10!=merge_code::LOGIC_END) goto merge_code::@7 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::dest_code#15 merge_code::logic_cycles#0 merge_code::logic_code#10 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::dest_code#15 merge_code::logic_cycles#0 merge_code::logic_code#10 ] { } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:127 [ merge_code::logic_cycles#0 ]
Statement [828] merge_code::logic_code#2 = ++ merge_code::logic_code#10 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::logic_code#2 merge_code::dest_code#15 merge_code::logic_cycles#0 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::logic_code#2 merge_code::dest_code#15 merge_code::logic_cycles#0 ] { } ) always clobbers reg byte a
Statement [829] merge_code::cycle_budget#1 = merge_code::cycle_budget#13 - merge_code::logic_cycles#0 [ merge_code::raster_code#2 merge_code::cycle_budget#1 merge_code::logic_code#2 merge_code::dest_code#15 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::cycle_budget#1 merge_code::logic_code#2 merge_code::dest_code#15 ] { } ) always clobbers reg byte a
Statement [830] *merge_code::dest_code#15 = *merge_code::logic_code#10 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::dest_code#15 merge_code::logic_cycles#0 merge_code::logic_code#10 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::dest_code#15 merge_code::logic_cycles#0 merge_code::logic_code#10 ] { } ) always clobbers reg byte a reg byte y
Statement [833] *merge_code::dest_code#14 = *merge_code::raster_code#4 [ merge_code::raster_code#4 merge_code::dest_code#14 merge_code::logic_code#18 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#4 merge_code::dest_code#14 merge_code::logic_code#18 ] { } ) always clobbers reg byte a reg byte y
Statement [839] *(RENDER_INDEX+$18*$100+RENDER_OFFSET_YPOS_INC) = 0 [ ] ( main:62::splash_run:102::init_render_index:526 [ ] { } ) always clobbers reg byte a
Statement [840] *(RENDER_INDEX+$19*$100+RENDER_OFFSET_YPOS_INC) = 0 [ ] ( main:62::splash_run:102::init_render_index:526 [ ] { } ) always clobbers reg byte a
Statement [845] init_render_index::$9 = init_render_index::x_col#2 << 1 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::ypos_inc_offset#7 init_render_index::$9 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::ypos_inc_offset#7 init_render_index::$9 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:136 [ init_render_index::x_col#2 init_render_index::x_col#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:90 [ init_render_index::ypos_inc_offset#4 init_render_index::ypos_inc_offset#7 init_render_index::ypos_inc_offset#8 init_render_index::ypos_inc_offset#2 init_render_index::ypos_inc_offset#3 ]
Statement [846] init_render_index::canvas_xcol#0 = RENDER_XCOLS[init_render_index::$9] [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::ypos_inc_offset#7 init_render_index::canvas_xcol#0 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::ypos_inc_offset#7 init_render_index::canvas_xcol#0 ] { } ) always clobbers reg byte a
Statement [847] init_render_index::render_index_xcol#7 = init_render_index::render_index_xcol#0 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::ypos_inc_offset#7 init_render_index::canvas_xcol#0 init_render_index::render_index_xcol#7 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::ypos_inc_offset#7 init_render_index::canvas_xcol#0 init_render_index::render_index_xcol#7 ] { } ) always clobbers reg byte a
Statement [850] init_render_index::render_index#1 = init_render_index::render_index_xcol#0 + $100 [ init_render_index::x_col#2 init_render_index::render_index#1 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index#1 ] { } ) always clobbers reg byte a
Statement [852] init_render_index::$11 = (unsigned int)init_render_index::y_pos#2 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::$11 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::$11 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:103 [ init_render_index::y_pos#2 init_render_index::y_pos#1 ]
Statement [853] init_render_index::$10 = init_render_index::$11 << 1 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::$10 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::$10 ] { } ) always clobbers reg byte a
Statement [854] init_render_index::$12 = init_render_index::render_ypos_table#4 + init_render_index::$10 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::$12 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::$12 ] { } ) always clobbers reg byte a
Statement [855] init_render_index::canvas#0 = init_render_index::canvas_xcol#0 + *init_render_index::$12 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::canvas#0 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::canvas#0 ] { } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:136 [ init_render_index::x_col#2 init_render_index::x_col#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:103 [ init_render_index::y_pos#2 init_render_index::y_pos#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:90 [ init_render_index::ypos_inc_offset#4 init_render_index::ypos_inc_offset#7 init_render_index::ypos_inc_offset#8 init_render_index::ypos_inc_offset#2 init_render_index::ypos_inc_offset#3 ]
Statement [857] *init_render_index::render_index_xcol#2 = init_render_index::$5 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::canvas#0 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::canvas#0 ] { } ) always clobbers reg byte y
Statement [859] init_render_index::render_index_xcol#2[RENDER_OFFSET_CANVAS_HI] = init_render_index::$6 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 ] { } ) always clobbers reg byte y
Statement [860] init_render_index::render_index_xcol#2[RENDER_OFFSET_YPOS_INC] = init_render_index::ypos_inc_offset#4 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 ] { } ) always clobbers reg byte a reg byte y
Statement [863] init_render_index::ypos_inc_offset#3 = init_render_index::ypos_inc_offset#2 - $15 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#3 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#3 ] { } ) always clobbers reg byte a reg byte x
Removing always clobbered register reg byte x as potential for zp[1]:136 [ init_render_index::x_col#2 init_render_index::x_col#1 ]
Removing always clobbered register reg byte x as potential for zp[1]:103 [ init_render_index::y_pos#2 init_render_index::y_pos#1 ]
Statement [866] init_render_index::y_pos#1 = init_render_index::y_pos#2 + 2 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#1 init_render_index::render_index_xcol#1 init_render_index::ypos_inc_offset#8 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#1 init_render_index::render_index_xcol#1 init_render_index::ypos_inc_offset#8 ] { } ) always clobbers reg byte a
Statement [874] splash_show::pixels#0 = *splash_show::splash#2 [ splash_show::xcol#2 splash_show::splash#2 splash_show::ypos#2 splash_show::pixels#0 ] ( main:62::splash_run:102::splash_show:530 [ splash_show::xcol#2 splash_show::splash#2 splash_show::ypos#2 splash_show::pixels#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp[1]:130 [ splash_show::xcol#2 splash_show::xcol#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:130 [ splash_show::xcol#2 splash_show::xcol#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:102 [ splash_show::ypos#2 splash_show::ypos#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:102 [ splash_show::ypos#2 splash_show::ypos#1 ]
Statement [884] logic_tile_ptr = LEVEL_TILES+(unsigned int)$40*$12+$c [ ] ( main:62::splash_run:102::init_bobs_restore:534 [ ] { } ) always clobbers reg byte a
Statement [885] logic_tile_xcol = $c [ ] ( main:62::splash_run:102::init_bobs_restore:534 [ ] { } ) always clobbers reg byte a
Statement [886] logic_tile_yfine = $23 [ ] ( main:62::splash_run:102::init_bobs_restore:534 [ ] { } ) always clobbers reg byte a
Statement [890] *init_bobs_restore::bob_restore#5 = 0 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] ( main:62::splash_run:102::init_bobs_restore:534 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] { } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp[1]:135 [ init_bobs_restore::bob#2 init_bobs_restore::bob#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:135 [ init_bobs_restore::bob#2 init_bobs_restore::bob#1 ]
Statement [891] init_bobs_restore::bob_restore#5[1] = byte1 init_bobs_restore::CANVAS_HIDDEN [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] ( main:62::splash_run:102::init_bobs_restore:534 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] { } ) always clobbers reg byte a reg byte y
Statement [892] init_bobs_restore::bob_restore#5[3] = 0 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] ( main:62::splash_run:102::init_bobs_restore:534 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] { } ) always clobbers reg byte a reg byte y
Statement [893] init_bobs_restore::bob_restore#5[4] = byte1 init_bobs_restore::CANVAS_HIDDEN [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] ( main:62::splash_run:102::init_bobs_restore:534 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] { } ) always clobbers reg byte a reg byte y
Statement [894] init_bobs_restore::bob_restore#1 = init_bobs_restore::bob_restore#5 + SIZE_BOB_RESTORE [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#1 ] ( main:62::splash_run:102::init_bobs_restore:534 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#1 ] { } ) always clobbers reg byte a
Statement [896] init_bobs_restore::bob_restore#5[init_bobs_restore::i#2] = 0 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 init_bobs_restore::i#2 ] ( main:62::splash_run:102::init_bobs_restore:534 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 init_bobs_restore::i#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:96 [ init_bobs_restore::i#2 init_bobs_restore::i#1 ]
Statement [904] init_sprite_pointers::sprites_ptr_1#1 = init_sprite_pointers::sprites_ptr_1#5 + $400 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_1#1 ] ( main:62::splash_run:102::init_sprite_pointers:538 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_1#1 ] { } main:62::gameplay_run:104::init_sprite_pointers:631 [ pacman_wins pacman_lives init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_1#1 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:68 [ init_sprite_pointers::screen#2 init_sprite_pointers::screen#1 ]
Statement [905] init_sprite_pointers::sprites_ptr_2#1 = init_sprite_pointers::sprites_ptr_2#5 + $400 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#1 init_sprite_pointers::sprites_ptr_2#1 ] ( main:62::splash_run:102::init_sprite_pointers:538 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#1 init_sprite_pointers::sprites_ptr_2#1 ] { } main:62::gameplay_run:104::init_sprite_pointers:631 [ pacman_wins pacman_lives init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#1 init_sprite_pointers::sprites_ptr_2#1 ] { } ) always clobbers reg byte a
Statement [907] init_sprite_pointers::$2 = init_sprite_pointers::SPRITE_ID_0 + init_sprite_pointers::screen#2 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprite#2 init_sprite_pointers::$2 ] ( main:62::splash_run:102::init_sprite_pointers:538 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprite#2 init_sprite_pointers::$2 ] { } main:62::gameplay_run:104::init_sprite_pointers:631 [ pacman_wins pacman_lives init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprite#2 init_sprite_pointers::$2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:37 [ init_sprite_pointers::sprite#2 init_sprite_pointers::sprite#1 ]
Statement [908] init_sprite_pointers::sprite_id#0 = init_sprite_pointers::$2 + init_sprite_pointers::sprites_id[init_sprite_pointers::sprite#2] [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprite#2 init_sprite_pointers::sprite_id#0 ] ( main:62::splash_run:102::init_sprite_pointers:538 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprite#2 init_sprite_pointers::sprite_id#0 ] { } main:62::gameplay_run:104::init_sprite_pointers:631 [ pacman_wins pacman_lives init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprite#2 init_sprite_pointers::sprite_id#0 ] { } ) always clobbers reg byte a
Statement [914] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 [ memcpy::src#2 memcpy::dst#2 ] ( main:62::splash_run:102::memcpy:540 [ memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a
Statement [916] *memcpy::dst#2 = *memcpy::src#2 [ memcpy::src#2 memcpy::dst#2 ] ( main:62::splash_run:102::memcpy:540 [ memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a reg byte y
Statement [919] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 0 [ ] ( main:62::splash_run:102::joyinit:588 [ ] { } ) always clobbers reg byte a
Statement [921] joyfire::$0 = *((char *)CIA1) & $10 [ joyfire::$0 ] ( main:62::splash_run:102::joyfire:591 [ music_play_next joyfire::$0 ] { { joyfire::return#1 = joyfire::return#4 } } main:62::done_run:106::joyfire:687 [ music_play_next joyfire::$0 ] { { joyfire::return#0 = joyfire::return#4 } } ) always clobbers reg byte a
Statement [932] init_level_tile_directions::directions#1 = init_level_tile_directions::directions#7 + $40 [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#1 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#1 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:69 [ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 ]
Statement [939] if(TILES_TYPE[init_level_tile_directions::$3]==WALL) goto init_level_tile_directions::@5 [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:41 [ init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 ]
Statement [947] if(TILES_TYPE[init_level_tile_directions::$7]==WALL) goto init_level_tile_directions::@6 [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#11 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#11 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:31 [ init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ]
Statement [948] init_level_tile_directions::open_directions#2 = init_level_tile_directions::open_directions#11 | RIGHT [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#2 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#2 ] { } ) always clobbers reg byte a
Statement [955] if(TILES_TYPE[init_level_tile_directions::$11]==WALL) goto init_level_tile_directions::@7 [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#12 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#12 ] { } ) always clobbers reg byte a
Statement [956] init_level_tile_directions::open_directions#3 = init_level_tile_directions::open_directions#12 | UP [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#3 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#3 ] { } ) always clobbers reg byte a
Statement [963] if(TILES_TYPE[init_level_tile_directions::$15]==WALL) goto init_level_tile_directions::@8 [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#13 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#13 ] { } ) always clobbers reg byte a
Statement [964] init_level_tile_directions::open_directions#4 = init_level_tile_directions::open_directions#13 | DOWN [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#4 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#4 ] { } ) always clobbers reg byte a
Statement [966] init_level_tile_directions::directions#7[init_level_tile_directions::xtile#10] = init_level_tile_directions::open_directions#8 [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 ] { } ) always clobbers reg byte a
Statement [974] level_show::level#1 = level_show::level#8 + $40 [ level_show::ytile#2 level_show::count#10 level_show::level#1 ] ( main:62::gameplay_run:104::level_show:633 [ pacman_wins pacman_lives level_show::ytile#2 level_show::count#10 level_show::level#1 ] { { level_show::return#0 = level_show::count#12 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:70 [ level_show::ytile#2 level_show::ytile#1 ]
Statement [976] level_show::tile_left#0 = level_show::level#8[level_show::xtile#3] [ level_show::ytile#2 level_show::level#8 level_show::count#10 level_show::xcol#2 level_show::xtile#3 level_show::tile_left#0 ] ( main:62::gameplay_run:104::level_show:633 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::count#10 level_show::xcol#2 level_show::xtile#3 level_show::tile_left#0 ] { { level_show::return#0 = level_show::count#12 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:40 [ level_show::xcol#2 level_show::xcol#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:58 [ level_show::xtile#3 level_show::xtile#2 ]
Statement [978] if(TILES_TYPE[level_show::tile_left#0]!=PILL) goto level_show::@5 [ level_show::ytile#2 level_show::level#8 level_show::count#10 level_show::xcol#2 level_show::tile_left#0 level_show::xtile#1 ] ( main:62::gameplay_run:104::level_show:633 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::count#10 level_show::xcol#2 level_show::tile_left#0 level_show::xtile#1 ] { { level_show::return#0 = level_show::count#12 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:72 [ level_show::tile_left#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:62 [ level_show::xtile#1 ]
Statement [981] level_show::tile_right#0 = level_show::level#8[level_show::xtile#1] [ level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::tile_left#0 level_show::xtile#1 level_show::count#5 level_show::tile_right#0 ] ( main:62::gameplay_run:104::level_show:633 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::tile_left#0 level_show::xtile#1 level_show::count#5 level_show::tile_right#0 ] { { level_show::return#0 = level_show::count#12 } } ) always clobbers reg byte a
Statement [983] if(TILES_TYPE[level_show::tile_right#0]!=PILL) goto level_show::@6 [ level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::tile_left#0 level_show::count#5 level_show::tile_right#0 ] ( main:62::gameplay_run:104::level_show:633 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::tile_left#0 level_show::count#5 level_show::tile_right#0 ] { { level_show::return#0 = level_show::count#12 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:63 [ level_show::tile_right#0 ]
Statement [992] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE) = $f [ ] ( main:62::gameplay_run:104::pacman_sound_init:651 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [993] *((unsigned int *)SID) = 0 [ ] ( main:62::gameplay_run:104::pacman_sound_init:651 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [994] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH) = 0 [ ] ( main:62::gameplay_run:104::pacman_sound_init:651 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [995] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = 0 [ ] ( main:62::gameplay_run:104::pacman_sound_init:651 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [996] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY) = 0 [ ] ( main:62::gameplay_run:104::pacman_sound_init:651 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [997] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE) = $f0 [ ] ( main:62::gameplay_run:104::pacman_sound_init:651 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [1000] render::ytile#0 = render::ypos#2 >> 2 [ render::ypos#2 render::xcol#2 render::pixels#4 render::ytile#0 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::xcol#2 render::pixels#4 render::ytile#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::xcol#2 render::pixels#4 render::ytile#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:64 [ render::ypos#2 render::ypos#0 render::ypos#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:61 [ render::xcol#2 render::xcol#0 render::xcol#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:65 [ render::pixels#4 render::pixels#0 render::pixels#1 ]
Statement [1001] render::$1 = byte1 RENDER_INDEX + render::xcol#2 [ render::ypos#2 render::pixels#4 render::ytile#0 render::$1 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::pixels#4 render::ytile#0 render::$1 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::pixels#4 render::ytile#0 render::$1 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:59 [ render::ytile#0 ]
Statement [1002] render::$2 = render::ytile#0 << 1 [ render::ypos#2 render::pixels#4 render::$1 render::$2 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::pixels#4 render::$1 render::$2 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::pixels#4 render::$1 render::$2 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:60 [ render::$1 ]
Statement [1004] render::canvas_offset#0 = ((char *)render::render_index_xcol#0)[RENDER_OFFSET_CANVAS_HI] w= *((char *)render::render_index_xcol#0) [ render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas_offset#0 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas_offset#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas_offset#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:64 [ render::ypos#2 render::ypos#0 render::ypos#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:65 [ render::pixels#4 render::pixels#0 render::pixels#1 ]
Statement [1005] render::canvas1#0 = SPRITES_1 + render::canvas_offset#0 [ render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas_offset#0 render::canvas1#0 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas_offset#0 render::canvas1#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas_offset#0 render::canvas1#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Statement [1006] render::canvas2#0 = SPRITES_2 + render::canvas_offset#0 [ render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas1#0 render::canvas2#0 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas1#0 render::canvas2#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas1#0 render::canvas2#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Statement [1007] render::ypos_inc_offset#0 = ((char *)render::render_index_xcol#0)[RENDER_OFFSET_YPOS_INC] [ render::ypos#2 render::pixels#4 render::canvas1#0 render::canvas2#0 render::ypos_inc_offset#0 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::pixels#4 render::canvas1#0 render::canvas2#0 render::ypos_inc_offset#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::pixels#4 render::canvas1#0 render::canvas2#0 render::ypos_inc_offset#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a reg byte y
Statement [1008] render::ypix#0 = render::ypos#2 & 3 [ render::pixels#4 render::canvas1#0 render::canvas2#0 render::ypos_inc_offset#0 render::ypix#0 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::pixels#4 render::canvas1#0 render::canvas2#0 render::ypos_inc_offset#0 render::ypix#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::pixels#4 render::canvas1#0 render::canvas2#0 render::ypos_inc_offset#0 render::ypix#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:10 [ render::ypos_inc_offset#2 render::ypos_inc_offset#0 render::ypos_inc_offset#1 ]
Statement [1011] *render::canvas1#2 = render::pixels#4 [ render::pixels#4 render::canvas2#2 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::pixels#4 render::canvas2#2 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::pixels#4 render::canvas2#2 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a reg byte y
Statement [1012] *render::canvas2#2 = render::pixels#4 [ ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a reg byte y
Statement [1014] render::canvas1#1 = render::canvas1#2 + RENDER_YPOS_INC[render::ypos_inc_offset#2] [ render::pixels#4 render::ypix#0 render::i#2 render::ypos_inc_offset#2 render::canvas2#2 render::canvas1#1 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::pixels#4 render::ypix#0 render::i#2 render::ypos_inc_offset#2 render::canvas2#2 render::canvas1#1 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::pixels#4 render::ypix#0 render::i#2 render::ypos_inc_offset#2 render::canvas2#2 render::canvas1#1 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:19 [ render::ypix#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:9 [ render::i#2 render::i#1 ]
Statement [1015] render::canvas2#1 = render::canvas2#2 + RENDER_YPOS_INC[render::ypos_inc_offset#2] [ render::pixels#4 render::ypix#0 render::i#2 render::ypos_inc_offset#2 render::canvas1#1 render::canvas2#1 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::pixels#4 render::ypix#0 render::i#2 render::ypos_inc_offset#2 render::canvas1#1 render::canvas2#1 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::pixels#4 render::ypix#0 render::i#2 render::ypos_inc_offset#2 render::canvas1#1 render::canvas2#1 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Statement [1021] level_tile_get::$5 = level_tile_get::ytile#4 << 1 [ level_tile_get::xtile#4 level_tile_get::$5 ] ( main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:936 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 level_tile_get::xtile#4 level_tile_get::$5 ] { { level_tile_get::xtile#0 = level_tile_get::xtile#4 } { level_tile_get::ytile#0 = level_tile_get::ytile#4 init_level_tile_directions::ytile#15 } { level_tile_get::return#2 = level_tile_get::return#3 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:944 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#11 level_tile_get::xtile#4 level_tile_get::$5 ] { { level_tile_get::xtile#1 = level_tile_get::xtile#4 } { level_tile_get::ytile#1 = level_tile_get::ytile#4 init_level_tile_directions::ytile#15 } { level_tile_get::return#2 = level_tile_get::return#4 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:952 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#12 level_tile_get::xtile#4 level_tile_get::$5 ] { { level_tile_get::xtile#2 = level_tile_get::xtile#4 init_level_tile_directions::xtile#10 } { level_tile_get::ytile#2 = level_tile_get::ytile#4 } { level_tile_get::return#10 = level_tile_get::return#2 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:960 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#13 level_tile_get::xtile#4 level_tile_get::$5 ] { { level_tile_get::xtile#3 = level_tile_get::xtile#4 init_level_tile_directions::xtile#10 } { level_tile_get::ytile#3 = level_tile_get::ytile#4 } { level_tile_get::return#11 = level_tile_get::return#2 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:30 [ level_tile_get::xtile#4 level_tile_get::xtile#0 level_tile_get::xtile#1 level_tile_get::xtile#2 level_tile_get::xtile#3 ]
Statement [1022] level_tile_get::ytiles#0 = LEVEL_TILES + LEVEL_YTILE_OFFSET[level_tile_get::$5] [ level_tile_get::xtile#4 level_tile_get::ytiles#0 ] ( main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:936 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 level_tile_get::xtile#4 level_tile_get::ytiles#0 ] { { level_tile_get::xtile#0 = level_tile_get::xtile#4 } { level_tile_get::ytile#0 = level_tile_get::ytile#4 init_level_tile_directions::ytile#15 } { level_tile_get::return#2 = level_tile_get::return#3 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:944 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#11 level_tile_get::xtile#4 level_tile_get::ytiles#0 ] { { level_tile_get::xtile#1 = level_tile_get::xtile#4 } { level_tile_get::ytile#1 = level_tile_get::ytile#4 init_level_tile_directions::ytile#15 } { level_tile_get::return#2 = level_tile_get::return#4 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:952 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#12 level_tile_get::xtile#4 level_tile_get::ytiles#0 ] { { level_tile_get::xtile#2 = level_tile_get::xtile#4 init_level_tile_directions::xtile#10 } { level_tile_get::ytile#2 = level_tile_get::ytile#4 } { level_tile_get::return#10 = level_tile_get::return#2 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:960 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#13 level_tile_get::xtile#4 level_tile_get::ytiles#0 ] { { level_tile_get::xtile#3 = level_tile_get::xtile#4 init_level_tile_directions::xtile#10 } { level_tile_get::ytile#3 = level_tile_get::ytile#4 } { level_tile_get::return#11 = level_tile_get::return#2 } } ) always clobbers reg byte a
Statement [1023] level_tile_get::return#0 = level_tile_get::ytiles#0[level_tile_get::xtile#4] [ level_tile_get::return#0 ] ( main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:936 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 level_tile_get::return#0 ] { { level_tile_get::xtile#0 = level_tile_get::xtile#4 } { level_tile_get::ytile#0 = level_tile_get::ytile#4 init_level_tile_directions::ytile#15 } { level_tile_get::return#2 = level_tile_get::return#3 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:944 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#11 level_tile_get::return#0 ] { { level_tile_get::xtile#1 = level_tile_get::xtile#4 } { level_tile_get::ytile#1 = level_tile_get::ytile#4 init_level_tile_directions::ytile#15 } { level_tile_get::return#2 = level_tile_get::return#4 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:952 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#12 level_tile_get::return#0 ] { { level_tile_get::xtile#2 = level_tile_get::xtile#4 init_level_tile_directions::xtile#10 } { level_tile_get::ytile#2 = level_tile_get::ytile#4 } { level_tile_get::return#10 = level_tile_get::return#2 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:960 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#13 level_tile_get::return#0 ] { { level_tile_get::xtile#3 = level_tile_get::xtile#4 init_level_tile_directions::xtile#10 } { level_tile_get::ytile#3 = level_tile_get::ytile#4 } { level_tile_get::return#11 = level_tile_get::return#2 } } ) always clobbers reg byte a
Statement [1026] render_tiles::$0 = render_tiles::tile_left#0 << 2 [ render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_right#0 render_tiles::$0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_right#0 render_tiles::$0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:56 [ render_tiles::xcol#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:57 [ render_tiles::ytile#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:36 [ render_tiles::tile_right#0 ]
Statement [1027] render_tiles::tile_left_pixels#0 = TILES_LEFT + render_tiles::$0 [ render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_right#0 render_tiles::tile_left_pixels#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_right#0 render_tiles::tile_left_pixels#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1028] render_tiles::$2 = render_tiles::tile_right#0 << 2 [ render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_left_pixels#0 render_tiles::$2 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_left_pixels#0 render_tiles::$2 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1029] render_tiles::tile_right_pixels#0 = TILES_RIGHT + render_tiles::$2 [ render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1030] render_tiles::$4 = byte1 RENDER_INDEX + render_tiles::xcol#0 [ render_tiles::ytile#0 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::$4 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::ytile#0 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::$4 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1031] render_tiles::$5 = render_tiles::ytile#0 << 1 [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::$4 render_tiles::$5 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::$4 render_tiles::$5 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:32 [ render_tiles::$4 ]
Statement [1033] render_tiles::canvas_offset#0 = ((char *)render_tiles::render_index_xcol#0)[RENDER_OFFSET_CANVAS_HI] w= *((char *)render_tiles::render_index_xcol#0) [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::render_index_xcol#0 render_tiles::canvas_offset#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::render_index_xcol#0 render_tiles::canvas_offset#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:70 [ level_show::ytile#2 level_show::ytile#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:40 [ level_show::xcol#2 level_show::xcol#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:58 [ level_show::xtile#3 level_show::xtile#2 ]
Statement [1034] render_tiles::canvas1#0 = SPRITES_1 + render_tiles::canvas_offset#0 [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::render_index_xcol#0 render_tiles::canvas_offset#0 render_tiles::canvas1#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::render_index_xcol#0 render_tiles::canvas_offset#0 render_tiles::canvas1#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1035] render_tiles::canvas2#0 = SPRITES_2 + render_tiles::canvas_offset#0 [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::render_index_xcol#0 render_tiles::canvas1#0 render_tiles::canvas2#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::render_index_xcol#0 render_tiles::canvas1#0 render_tiles::canvas2#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1036] render_tiles::ypos_inc_offset#0 = ((char *)render_tiles::render_index_xcol#0)[RENDER_OFFSET_YPOS_INC] [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::canvas1#0 render_tiles::canvas2#0 render_tiles::ypos_inc_offset#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::canvas1#0 render_tiles::canvas2#0 render_tiles::ypos_inc_offset#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a reg byte y
Statement [1040] render_tiles::pixels#0 = render_tiles::tile_left_pixels#0[render_tiles::y#2] | render_tiles::tile_right_pixels#0[render_tiles::y#2] [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas1#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 render_tiles::pixels#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas1#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 render_tiles::pixels#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:2 [ render_tiles::y#2 render_tiles::y#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:3 [ render_tiles::ypos_inc_offset#2 render_tiles::ypos_inc_offset#0 render_tiles::ypos_inc_offset#1 ]
Statement [1041] *render_tiles::canvas1#2 = render_tiles::pixels#0 [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas1#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 render_tiles::pixels#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas1#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 render_tiles::pixels#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:2 [ render_tiles::y#2 render_tiles::y#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:3 [ render_tiles::ypos_inc_offset#2 render_tiles::ypos_inc_offset#0 render_tiles::ypos_inc_offset#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:4 [ render_tiles::pixels#0 ]
Statement [1042] *render_tiles::canvas2#2 = render_tiles::pixels#0 [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas1#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas1#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte y
Statement [1043] render_tiles::canvas1#1 = render_tiles::canvas1#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2] [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 render_tiles::canvas1#1 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 render_tiles::canvas1#1 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1044] render_tiles::canvas2#1 = render_tiles::canvas2#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2] [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::ypos_inc_offset#2 render_tiles::canvas1#1 render_tiles::canvas2#1 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::ypos_inc_offset#2 render_tiles::canvas1#1 render_tiles::canvas2#1 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1] pacman_ch1_enabled = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] pacman_ch1_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] logic_tile_ptr = (volatile char *) 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [4] logic_tile_xcol = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] logic_tile_yfine = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] logic_tile_left_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] logic_tile_right_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] left_render_index_xcol = (char *) 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] left_canvas = (char *) 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] left_ypos_inc_offset = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [11] rigt_render_index_xcol = (char *) 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [12] rigt_canvas = (char *) 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [13] rigt_ypos_inc_offset = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [14] canvas_base_hi = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [15] bobs_restore_base = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [16] top_sprites_color = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [17] top_sprites_mc = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [18] side_sprites_color = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [19] side_sprites_mc = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [20] bottom_sprites_color = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [21] bottom_sprites_mc = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [22] pill_count = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [23] pacman_wins = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [24] pacman_lives = 3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [25] music_play_next = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [26] phase = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [27] frame = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [28] anim_frame_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [29] pacman_xfine = $2d [ ] ( [ ] { } ) always clobbers reg byte a
Statement [30] pacman_yfine = $23 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [31] pacman_direction = STOP [ ] ( [ ] { } ) always clobbers reg byte a
Statement [32] pacman_substep = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [33] ghosts_mode = 1 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [34] ghosts_mode_count = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [35] ghost1_xfine = $2d [ ] ( [ ] { } ) always clobbers reg byte a
Statement [36] ghost1_yfine = $23 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [37] ghost1_direction = STOP [ ] ( [ ] { } ) always clobbers reg byte a
Statement [38] ghost1_substep = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [39] ghost1_reverse = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [40] ghost1_respawn = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [41] ghost2_xfine = $2d [ ] ( [ ] { } ) always clobbers reg byte a
Statement [42] ghost2_yfine = $23 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [43] ghost2_direction = STOP [ ] ( [ ] { } ) always clobbers reg byte a
Statement [44] ghost2_substep = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [45] ghost2_reverse = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [46] ghost2_respawn = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [47] ghost3_xfine = $2d [ ] ( [ ] { } ) always clobbers reg byte a
Statement [48] ghost3_yfine = $23 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [49] ghost3_direction = STOP [ ] ( [ ] { } ) always clobbers reg byte a
Statement [50] ghost3_substep = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [51] ghost3_reverse = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [52] ghost3_respawn = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [53] ghost4_xfine = $2d [ ] ( [ ] { } ) always clobbers reg byte a
Statement [54] ghost4_yfine = $23 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [55] ghost4_direction = STOP [ ] ( [ ] { } ) always clobbers reg byte a
Statement [56] ghost4_substep = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [57] ghost4_reverse = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [58] ghost4_respawn = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [59] game_logic_substep = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [60] game_playable = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement kickasm( uses HARDWARE_IRQ uses RASTER uses IRQ_STATUS uses IRQ_RASTER uses VICII_CONTROL1 uses VICII_RSEL uses VICII_MEMORY) {{ // Stabilize the raster by using the double IRQ method
// Acknowledge the IRQ
lda #IRQ_RASTER
sta IRQ_STATUS
// Set-up IRQ for the next line
inc RASTER
// Point IRQ to almost stable code
lda #<stable
sta HARDWARE_IRQ
lda #>stable
sta HARDWARE_IRQ+1
tsx // Save stack pointer
cli // Reenable interrupts
// Wait for new IRQ using NOP's to ensure minimal jitter when it hits
.fill 15, NOP
.align $20
stable:
txs // Restore stack pointer
ldx #9 // Wait till the raster has almost crossed to the next line (48 cycles)
!: dex
bne !-
nop
lda RASTER
cmp RASTER
bne !+ // And correct the last cycle of potential jitter
!:
// Raster is now completely stable! (Line 0x007 cycle 7)
}} always clobbers reg byte a reg byte x
Statement asm { jsrRASTER_CODE } always clobbers reg byte a reg byte x reg byte y
Statement [66] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [67] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [68] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [69] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [70] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [71] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [72] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [73] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y) = 7 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [75] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = irq_screen_top::toD0181_return#0 [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color top_sprites_mc pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [76] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [77] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR) = top_sprites_color [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx top_sprites_color pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [78] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR) = top_sprites_color [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase frame anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [82] if(0!=frame) goto irq_screen_top::toDd001 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [84] *((char *)CIA2) = irq_screen_top::toDd002_return#0 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [85] canvas_base_hi = byte1 SPRITES_2 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [86] bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [87] if(phase==0) goto irq_screen_top::@2 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [92] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [93] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE [ ] ( [ ] { } ) always clobbers reg byte a
Statement [94] *HARDWARE_IRQ = &irq_screen_top [ ] ( [ ] { } ) always clobbers reg byte a
Statement [95] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [96] music_play_next = 1 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [98] *((char *)CIA2) = irq_screen_top::toDd001_return#0 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [99] canvas_base_hi = byte1 SPRITES_1 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [100] bobs_restore_base = 0 [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] ( [ pacman_ch1_enabled pacman_ch1_idx pill_count pacman_lives phase anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep game_playable ] { } ) always clobbers reg byte a
Statement [107] if(game_playable!=0) goto game_logic::@1 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] { } ) always clobbers reg byte a
Statement [112] if(game_logic_substep==0) goto game_logic::@2 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction pacman_substep ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] { } ) always clobbers reg byte a
Statement [113] if(game_logic_substep==1) goto game_logic::@3 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] { } ) always clobbers reg byte a
Statement [114] if(game_logic_substep==2) goto game_logic::@4 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] { } ) always clobbers reg byte a
Statement [115] if(game_logic_substep==4) goto game_logic::@5 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] { } ) always clobbers reg byte a
Statement [116] if(game_logic_substep==5) goto game_logic::@6 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn game_logic_substep ] { } ) always clobbers reg byte a
Statement [117] if(game_logic_substep==6) goto game_logic::@7 [ pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic_substep ] { } ) always clobbers reg byte a
Statement [118] if(game_logic_substep==3) goto game_logic::@14 [ pacman_ch1_enabled anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic_substep ] { } ) always clobbers reg byte a
Statement [119] if(game_logic_substep==7) goto game_logic::@14 [ pacman_ch1_enabled anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled anim_frame_idx pacman_xfine pacman_yfine pacman_direction ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction ] { } ) always clobbers reg byte a
Statement [124] game_logic::$17 = game_logic::pacman_bob_xfine#0 >> 2 [ pacman_ch1_enabled anim_frame_idx pacman_yfine pacman_direction ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::pacman_bob_xfine#0 game_logic::$17 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled anim_frame_idx pacman_yfine pacman_direction ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::pacman_bob_xfine#0 game_logic::$17 ] { } ) always clobbers reg byte a
Statement [128] game_logic::$19 = pacman_direction | anim_frame_idx [ pacman_ch1_enabled anim_frame_idx ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::pacman_bob_xfine#0 game_logic::$19 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled anim_frame_idx ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::pacman_bob_xfine#0 game_logic::$19 ] { } ) always clobbers reg byte a
Statement [129] game_logic::$20 = game_logic::pacman_bob_xfine#0 & 3 [ pacman_ch1_enabled anim_frame_idx ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::$19 game_logic::$20 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled anim_frame_idx ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::$19 game_logic::$20 ] { } ) always clobbers reg byte a
Statement [130] game_logic::$21 = pacman_frames[game_logic::$19] + game_logic::$20 [ pacman_ch1_enabled anim_frame_idx ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::$21 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled anim_frame_idx ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::$21 ] { } ) always clobbers reg byte a
Statement [133] if(ghosts_mode!=FRIGHTENED) goto game_logic::@44 [ pacman_ch1_enabled ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#0 ] { } ) always clobbers reg byte a
Statement [134] game_logic::ghost_frame_idx#1 = game_logic::ghost_frame_idx#0 | $40 [ pacman_ch1_enabled ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost1_xfine ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#1 ] { } ) always clobbers reg byte a
Statement [137] game_logic::$25 = game_logic::ghost1_bob_xfine#0 >> 2 [ pacman_ch1_enabled ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost1_bob_xfine#0 game_logic::$25 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost1_yfine ghost1_direction ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost1_bob_xfine#0 game_logic::$25 ] { } ) always clobbers reg byte a
Statement [141] game_logic::$27 = ghost1_direction | game_logic::ghost_frame_idx#2 [ pacman_ch1_enabled ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost1_bob_xfine#0 game_logic::$27 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost1_bob_xfine#0 game_logic::$27 ] { } ) always clobbers reg byte a
Statement [142] game_logic::$28 = game_logic::ghost1_bob_xfine#0 & 3 [ pacman_ch1_enabled ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$27 game_logic::$28 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$27 game_logic::$28 ] { } ) always clobbers reg byte a
Statement [143] game_logic::$29 = ghost_frames[game_logic::$27] + game_logic::$28 [ pacman_ch1_enabled ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$29 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost2_xfine ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$29 ] { } ) always clobbers reg byte a
Statement [146] game_logic::$31 = game_logic::ghost2_bob_xfine#0 >> 2 [ pacman_ch1_enabled ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost2_bob_xfine#0 game_logic::$31 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost2_yfine ghost2_direction ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost2_bob_xfine#0 game_logic::$31 ] { } ) always clobbers reg byte a
Statement [150] game_logic::$33 = ghost2_direction | game_logic::ghost_frame_idx#2 [ pacman_ch1_enabled ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost2_bob_xfine#0 game_logic::$33 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost2_bob_xfine#0 game_logic::$33 ] { } ) always clobbers reg byte a
Statement [151] game_logic::$34 = game_logic::ghost2_bob_xfine#0 & 3 [ pacman_ch1_enabled ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$33 game_logic::$34 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$33 game_logic::$34 ] { } ) always clobbers reg byte a
Statement [152] game_logic::$35 = ghost_frames[game_logic::$33] + game_logic::$34 [ pacman_ch1_enabled ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$35 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost3_xfine ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$35 ] { } ) always clobbers reg byte a
Statement [155] game_logic::$37 = game_logic::ghost3_bob_xfine#0 >> 2 [ pacman_ch1_enabled ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost3_bob_xfine#0 game_logic::$37 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost3_yfine ghost3_direction ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost3_bob_xfine#0 game_logic::$37 ] { } ) always clobbers reg byte a
Statement [159] game_logic::$39 = ghost3_direction | game_logic::ghost_frame_idx#2 [ pacman_ch1_enabled ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost3_bob_xfine#0 game_logic::$39 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost3_bob_xfine#0 game_logic::$39 ] { } ) always clobbers reg byte a
Statement [160] game_logic::$40 = game_logic::ghost3_bob_xfine#0 & 3 [ pacman_ch1_enabled ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$39 game_logic::$40 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$39 game_logic::$40 ] { } ) always clobbers reg byte a
Statement [161] game_logic::$41 = ghost_frames[game_logic::$39] + game_logic::$40 [ pacman_ch1_enabled ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$41 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost4_xfine ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::$41 ] { } ) always clobbers reg byte a
Statement [164] game_logic::$43 = game_logic::ghost4_bob_xfine#0 >> 2 [ pacman_ch1_enabled ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost4_bob_xfine#0 game_logic::$43 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost4_yfine ghost4_direction game_logic::ghost_frame_idx#2 game_logic::ghost4_bob_xfine#0 game_logic::$43 ] { } ) always clobbers reg byte a
Statement [168] game_logic::$45 = ghost4_direction | game_logic::ghost_frame_idx#2 [ pacman_ch1_enabled game_logic::ghost4_bob_xfine#0 game_logic::$45 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::ghost4_bob_xfine#0 game_logic::$45 ] { } ) always clobbers reg byte a
Statement [169] game_logic::$46 = game_logic::ghost4_bob_xfine#0 & 3 [ pacman_ch1_enabled game_logic::$45 game_logic::$46 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::$45 game_logic::$46 ] { } ) always clobbers reg byte a
Statement [170] game_logic::$47 = ghost_frames[game_logic::$45] + game_logic::$46 [ pacman_ch1_enabled game_logic::$47 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::$47 ] { } ) always clobbers reg byte a
Statement [173] if(ghosts_mode==SCATTER) goto game_logic::@45 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [174] if(ghosts_mode==CHASE) goto game_logic::@46 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [175] if(ghosts_mode!=FRIGHTENED) goto game_logic::@47 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghosts_mode_count ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [176] if(ghosts_mode_count<$32+1) goto game_logic::@47 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [177] ghosts_mode = CHASE [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [178] ghosts_mode_count = 0 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [181] ghost1_reverse = 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [182] ghost2_reverse = 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [183] ghost3_reverse = 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [184] ghost4_reverse = 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [185] game_logic::pacman_xtile#0 = pacman_xfine >> 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 ] { } ) always clobbers reg byte a
Statement [186] game_logic::pacman_ytile#0 = pacman_yfine >> 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::pacman_ytile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::pacman_ytile#0 ] { } ) always clobbers reg byte a
Statement [187] game_logic::$210 = game_logic::pacman_ytile#0 << 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 ] { } ) always clobbers reg byte a
Statement [188] game_logic::ytiles#0 = LEVEL_TILES + LEVEL_YTILE_OFFSET[game_logic::$210] [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] { } ) always clobbers reg byte a
Statement [189] game_logic::tile_id#0 = game_logic::ytiles#0[game_logic::pacman_xtile#0] [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::tile_id#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::tile_id#0 ] { } ) always clobbers reg byte a
Statement [190] if(TILES_TYPE[game_logic::tile_id#0]==PILL) goto game_logic::@49 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::tile_id#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::tile_id#0 ] { } ) always clobbers reg byte a
Statement [191] if(TILES_TYPE[game_logic::tile_id#0]!=POWERUP) goto game_logic::@50 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] { } ) always clobbers reg byte a
Statement [192] game_logic::ytiles#0[game_logic::pacman_xtile#0] = EMPTY [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] { } ) always clobbers reg byte a
Statement [193] game_logic::$65 = game_logic::pacman_xtile#0 >> 1 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::$65 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::$65 ] { } ) always clobbers reg byte a
Statement [195] game_logic::$66 = game_logic::pacman_xtile#0 & $fe [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::ytiles#0 game_logic::$66 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::ytiles#0 game_logic::$66 ] { } ) always clobbers reg byte a
Statement [196] game_logic::$67 = game_logic::ytiles#0 + game_logic::$66 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::$67 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::$67 ] { } ) always clobbers reg byte a
Statement [197] logic_tile_ptr = game_logic::$67 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 ] { } ) always clobbers reg byte a
Statement [200] ghosts_mode = FRIGHTENED [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [201] ghosts_mode_count = 0 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [202] game_logic::$75 = pacman_xfine - ghost1_xfine [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$75 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$75 ] { } ) always clobbers reg byte a
Statement [203] game_logic::$77 = pacman_yfine - ghost1_yfine [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$75 game_logic::$77 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$75 game_logic::$77 ] { } ) always clobbers reg byte a
Statement [204] if(ABS[game_logic::$75]>=2) goto game_logic::@64 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$77 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$77 ] { } ) always clobbers reg byte a
Statement [205] if(ABS[game_logic::$77]<2) goto game_logic::@51 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [206] game_logic::$80 = pacman_xfine - ghost2_xfine [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$80 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$80 ] { } ) always clobbers reg byte a
Statement [207] game_logic::$82 = pacman_yfine - ghost2_yfine [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$80 game_logic::$82 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$80 game_logic::$82 ] { } ) always clobbers reg byte a
Statement [208] if(ABS[game_logic::$80]>=2) goto game_logic::@65 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$82 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$82 ] { } ) always clobbers reg byte a
Statement [209] if(ABS[game_logic::$82]<2) goto game_logic::@52 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [210] game_logic::$85 = pacman_xfine - ghost3_xfine [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$85 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$85 ] { } ) always clobbers reg byte a
Statement [211] game_logic::$87 = pacman_yfine - ghost3_yfine [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine game_logic::$85 game_logic::$87 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine game_logic::$85 game_logic::$87 ] { } ) always clobbers reg byte a
Statement [212] if(ABS[game_logic::$85]>=2) goto game_logic::@66 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine game_logic::$87 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine game_logic::$87 ] { } ) always clobbers reg byte a
Statement [213] if(ABS[game_logic::$87]<2) goto game_logic::@53 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [214] game_logic::$90 = pacman_xfine - ghost4_xfine [ pacman_ch1_enabled pacman_lives pacman_yfine ghosts_mode ghost4_yfine game_logic::$90 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_yfine ghosts_mode ghost4_yfine game_logic::$90 ] { } ) always clobbers reg byte a
Statement [215] game_logic::$92 = pacman_yfine - ghost4_yfine [ pacman_ch1_enabled pacman_lives ghosts_mode game_logic::$90 game_logic::$92 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ghosts_mode game_logic::$90 game_logic::$92 ] { } ) always clobbers reg byte a
Statement [216] if(ABS[game_logic::$90]>=2) goto game_logic::@return [ pacman_ch1_enabled pacman_lives ghosts_mode game_logic::$92 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ghosts_mode game_logic::$92 ] { } ) always clobbers reg byte a
Statement [217] if(ABS[game_logic::$92]<2) goto game_logic::@67 [ pacman_ch1_enabled pacman_lives ghosts_mode ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ghosts_mode ] { } ) always clobbers reg byte a
Statement [218] if(ghosts_mode==FRIGHTENED) goto game_logic::@54 [ pacman_ch1_enabled pacman_lives ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ] { } ) always clobbers reg byte a
Statement [221] ghost4_direction = STOP [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [222] ghost4_xfine = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [223] ghost4_yfine = $23 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [224] ghost4_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [225] ghost4_respawn = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [226] if(ghosts_mode==FRIGHTENED) goto game_logic::@55 [ pacman_ch1_enabled pacman_lives ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ] { } ) always clobbers reg byte a
Statement [229] ghost3_direction = STOP [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [230] ghost3_xfine = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [231] ghost3_yfine = $23 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [232] ghost3_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [233] ghost3_respawn = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [234] if(ghosts_mode==FRIGHTENED) goto game_logic::@56 [ pacman_ch1_enabled pacman_lives ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ] { } ) always clobbers reg byte a
Statement [237] ghost2_direction = STOP [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [238] ghost2_xfine = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [239] ghost2_yfine = $23 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [240] ghost2_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [241] ghost2_respawn = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [242] if(ghosts_mode==FRIGHTENED) goto game_logic::@57 [ pacman_ch1_enabled pacman_lives ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives ] { } ) always clobbers reg byte a
Statement [245] ghost1_direction = STOP [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [246] ghost1_xfine = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [247] ghost1_yfine = $23 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [248] ghost1_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [249] ghost1_respawn = $32 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [250] game_logic::ytiles#0[game_logic::pacman_xtile#0] = EMPTY [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 ] { } ) always clobbers reg byte a
Statement [251] game_logic::$69 = game_logic::pacman_xtile#0 >> 1 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::$69 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::pacman_xtile#0 game_logic::$210 game_logic::ytiles#0 game_logic::$69 ] { } ) always clobbers reg byte a
Statement [253] game_logic::$70 = game_logic::pacman_xtile#0 & $fe [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::ytiles#0 game_logic::$70 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::ytiles#0 game_logic::$70 ] { } ) always clobbers reg byte a
Statement [254] game_logic::$71 = game_logic::ytiles#0 + game_logic::$70 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::$71 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 game_logic::$71 ] { } ) always clobbers reg byte a
Statement [255] logic_tile_ptr = game_logic::$71 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine game_logic::$210 ] { } ) always clobbers reg byte a
Statement [258] pill_count = -- pill_count [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [259] if(pill_count!=0) goto game_logic::@50 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [260] pacman_wins = 1 [ pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [261] if(ghosts_mode_count<$96+1) goto game_logic::@47 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [262] ghosts_mode = SCATTER [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [263] ghosts_mode_count = 0 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [264] if(ghosts_mode_count<$32+1) goto game_logic::@47 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [265] ghosts_mode = CHASE [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [266] ghosts_mode_count = 0 [ pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pill_count pacman_lives pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost2_xfine ghost2_yfine ghost3_xfine ghost3_yfine ghost4_xfine ghost4_yfine ] { } ) always clobbers reg byte a
Statement [267] if(0!=ghost4_respawn) goto game_logic::@72 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ghost4_respawn ] { } ) always clobbers reg byte a
Statement [268] if(ghost4_direction==RIGHT) goto game_logic::@73 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] { } ) always clobbers reg byte a
Statement [269] if(ghost4_direction==DOWN) goto game_logic::@74 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] { } ) always clobbers reg byte a
Statement [270] if(ghost4_direction==LEFT) goto game_logic::@75 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] { } ) always clobbers reg byte a
Statement [271] if(ghost4_direction!=UP) goto game_logic::@76 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_substep ghost4_reverse ] { } ) always clobbers reg byte a
Statement [274] if(ghost4_substep!=0) goto game_logic::@82 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_reverse game_logic::$220 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_reverse game_logic::$220 ] { } ) always clobbers reg byte a
Statement [276] ghost4_substep = 0 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ghost4_reverse ] { } ) always clobbers reg byte a
Statement [277] if(0!=ghost4_reverse) goto game_logic::@78 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_xfine ghost4_yfine ghost4_direction ] { } ) always clobbers reg byte a
Statement [278] game_logic::ghost4_xtile#0 = ghost4_xfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_yfine ghost4_direction game_logic::ghost4_xtile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_yfine ghost4_direction game_logic::ghost4_xtile#0 ] { { level_tile_directions::xtile#0 = level_tile_directions::xtile#5 game_logic::ghost4_xtile#0 } { level_tile_directions::ytile#0 = level_tile_directions::ytile#5 game_logic::ghost4_ytile#0 } { level_tile_directions::return#2 = level_tile_directions::return#3 } } ) always clobbers reg byte a
Statement [279] game_logic::ghost4_ytile#0 = ghost4_yfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_direction game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_direction game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 ] { { level_tile_directions::xtile#0 = level_tile_directions::xtile#5 game_logic::ghost4_xtile#0 } { level_tile_directions::ytile#0 = level_tile_directions::ytile#5 game_logic::ghost4_ytile#0 } { level_tile_directions::return#2 = level_tile_directions::return#3 } } ) always clobbers reg byte a
Statement [285] game_logic::open_directions#1 = game_logic::open_directions#0 & DIRECTION_ELIMINATE[ghost4_direction] [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 ] { } ) always clobbers reg byte a
Statement [286] if(ghosts_mode==FRIGHTENED) goto game_logic::@79 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 ] { } ) always clobbers reg byte a
Statement [287] if(ghosts_mode==SCATTER) goto game_logic::@80 [ pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 ] { } ) always clobbers reg byte a
Statement [288] game_logic::target_xtile#2 = pacman_xfine >> 1 [ pacman_ch1_enabled pacman_yfine game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 game_logic::target_xtile#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_yfine game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 game_logic::target_xtile#2 ] { } ) always clobbers reg byte a
Statement [289] game_logic::target_ytile#2 = pacman_yfine >> 1 [ pacman_ch1_enabled game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 game_logic::target_xtile#2 game_logic::target_ytile#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 game_logic::open_directions#1 game_logic::target_xtile#2 game_logic::target_ytile#2 ] { } ) always clobbers reg byte a
Statement [300] ghost4_direction = DIRECTION_SINGLE[game_logic::open_directions#1] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [301] ghost4_direction = DIRECTION_REVERSE[ghost4_direction] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a reg byte y
Statement [302] ghost4_reverse = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [303] ghost4_substep = 1 [ pacman_ch1_enabled ghost4_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost4_xfine ] { } ) always clobbers reg byte a
Statement [304] if(ghost4_xfine==1) goto game_logic::@81 [ pacman_ch1_enabled ghost4_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost4_xfine ] { } ) always clobbers reg byte a
Statement [305] if(ghost4_xfine!=$61) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [306] ghost4_xfine = 1 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [307] ghost4_xfine = $61 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [312] if(ghost4_respawn!=0) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [313] ghost4_direction = RIGHT [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [314] ghost4_xfine = 2 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [315] ghost4_yfine = 2 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [316] ghost4_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [317] if(0!=ghost3_respawn) goto game_logic::@89 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ghost3_respawn ] { } ) always clobbers reg byte a
Statement [318] if(ghost3_direction==RIGHT) goto game_logic::@90 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] { } ) always clobbers reg byte a
Statement [319] if(ghost3_direction==DOWN) goto game_logic::@91 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] { } ) always clobbers reg byte a
Statement [320] if(ghost3_direction==LEFT) goto game_logic::@92 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] { } ) always clobbers reg byte a
Statement [321] if(ghost3_direction!=UP) goto game_logic::@93 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_substep ghost3_reverse ] { } ) always clobbers reg byte a
Statement [324] if(ghost3_substep!=0) goto game_logic::@99 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_reverse game_logic::$223 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_reverse game_logic::$223 ] { } ) always clobbers reg byte a
Statement [326] ghost3_substep = 0 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ghost3_reverse ] { } ) always clobbers reg byte a
Statement [327] if(0!=ghost3_reverse) goto game_logic::@95 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_xfine ghost3_yfine ghost3_direction ] { } ) always clobbers reg byte a
Statement [328] game_logic::ghost3_xtile#0 = ghost3_xfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_yfine ghost3_direction game_logic::ghost3_xtile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_yfine ghost3_direction game_logic::ghost3_xtile#0 ] { { level_tile_directions::xtile#1 = level_tile_directions::xtile#5 game_logic::ghost3_xtile#0 } { level_tile_directions::ytile#1 = level_tile_directions::ytile#5 game_logic::ghost3_ytile#0 } { level_tile_directions::return#10 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [329] game_logic::ghost3_ytile#0 = ghost3_yfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_direction game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_direction game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 ] { { level_tile_directions::xtile#1 = level_tile_directions::xtile#5 game_logic::ghost3_xtile#0 } { level_tile_directions::ytile#1 = level_tile_directions::ytile#5 game_logic::ghost3_ytile#0 } { level_tile_directions::return#10 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [335] game_logic::open_directions1#1 = game_logic::open_directions1#0 & DIRECTION_ELIMINATE[ghost3_direction] [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 ] { } ) always clobbers reg byte a
Statement [336] if(ghosts_mode==FRIGHTENED) goto game_logic::@96 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 ] { } ) always clobbers reg byte a
Statement [337] if(ghosts_mode==SCATTER) goto game_logic::@97 [ pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 ] { } ) always clobbers reg byte a
Statement [338] game_logic::target_xtile1#2 = pacman_xfine >> 1 [ pacman_ch1_enabled pacman_yfine game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 game_logic::target_xtile1#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_yfine game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 game_logic::target_xtile1#2 ] { } ) always clobbers reg byte a
Statement [339] game_logic::target_ytile1#2 = pacman_yfine >> 1 [ pacman_ch1_enabled game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 game_logic::target_xtile1#2 game_logic::target_ytile1#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 game_logic::open_directions1#1 game_logic::target_xtile1#2 game_logic::target_ytile1#2 ] { } ) always clobbers reg byte a
Statement [350] ghost3_direction = DIRECTION_SINGLE[game_logic::open_directions1#1] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [351] ghost3_direction = DIRECTION_REVERSE[ghost3_direction] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a reg byte y
Statement [352] ghost3_reverse = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [353] ghost3_substep = 1 [ pacman_ch1_enabled ghost3_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost3_xfine ] { } ) always clobbers reg byte a
Statement [354] if(ghost3_xfine==1) goto game_logic::@98 [ pacman_ch1_enabled ghost3_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost3_xfine ] { } ) always clobbers reg byte a
Statement [355] if(ghost3_xfine!=$61) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [356] ghost3_xfine = 1 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [357] ghost3_xfine = $61 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [362] if(ghost3_respawn!=0) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [363] ghost3_direction = UP [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [364] ghost3_xfine = 2 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [365] ghost3_yfine = $46 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [366] ghost3_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [367] if(0!=ghost2_respawn) goto game_logic::@106 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ghost2_respawn ] { } ) always clobbers reg byte a
Statement [368] if(ghost2_direction==RIGHT) goto game_logic::@107 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] { } ) always clobbers reg byte a
Statement [369] if(ghost2_direction==DOWN) goto game_logic::@108 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] { } ) always clobbers reg byte a
Statement [370] if(ghost2_direction==LEFT) goto game_logic::@109 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] { } ) always clobbers reg byte a
Statement [371] if(ghost2_direction!=UP) goto game_logic::@110 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_substep ghost2_reverse ] { } ) always clobbers reg byte a
Statement [374] if(ghost2_substep!=0) goto game_logic::@116 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_reverse game_logic::$226 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_reverse game_logic::$226 ] { } ) always clobbers reg byte a
Statement [376] ghost2_substep = 0 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ghost2_reverse ] { } ) always clobbers reg byte a
Statement [377] if(0!=ghost2_reverse) goto game_logic::@112 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_xfine ghost2_yfine ghost2_direction ] { } ) always clobbers reg byte a
Statement [378] game_logic::ghost2_xtile#0 = ghost2_xfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_yfine ghost2_direction game_logic::ghost2_xtile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_yfine ghost2_direction game_logic::ghost2_xtile#0 ] { { level_tile_directions::xtile#2 = level_tile_directions::xtile#5 game_logic::ghost2_xtile#0 } { level_tile_directions::ytile#2 = level_tile_directions::ytile#5 game_logic::ghost2_ytile#0 } { level_tile_directions::return#11 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [379] game_logic::ghost2_ytile#0 = ghost2_yfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_direction game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_direction game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 ] { { level_tile_directions::xtile#2 = level_tile_directions::xtile#5 game_logic::ghost2_xtile#0 } { level_tile_directions::ytile#2 = level_tile_directions::ytile#5 game_logic::ghost2_ytile#0 } { level_tile_directions::return#11 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [385] game_logic::open_directions2#1 = game_logic::open_directions2#0 & DIRECTION_ELIMINATE[ghost2_direction] [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 ] { } ) always clobbers reg byte a
Statement [386] if(ghosts_mode==FRIGHTENED) goto game_logic::@113 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 ] { } ) always clobbers reg byte a
Statement [387] if(ghosts_mode==SCATTER) goto game_logic::@114 [ pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 ] { } ) always clobbers reg byte a
Statement [388] game_logic::target_xtile2#2 = pacman_xfine >> 1 [ pacman_ch1_enabled pacman_yfine game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 game_logic::target_xtile2#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_yfine game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 game_logic::target_xtile2#2 ] { } ) always clobbers reg byte a
Statement [389] game_logic::target_ytile2#2 = pacman_yfine >> 1 [ pacman_ch1_enabled game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 game_logic::target_xtile2#2 game_logic::target_ytile2#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 game_logic::open_directions2#1 game_logic::target_xtile2#2 game_logic::target_ytile2#2 ] { } ) always clobbers reg byte a
Statement [400] ghost2_direction = DIRECTION_SINGLE[game_logic::open_directions2#1] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [401] ghost2_direction = DIRECTION_REVERSE[ghost2_direction] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a reg byte y
Statement [402] ghost2_reverse = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [403] ghost2_substep = 1 [ pacman_ch1_enabled ghost2_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost2_xfine ] { } ) always clobbers reg byte a
Statement [404] if(ghost2_xfine==1) goto game_logic::@115 [ pacman_ch1_enabled ghost2_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost2_xfine ] { } ) always clobbers reg byte a
Statement [405] if(ghost2_xfine!=$61) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [406] ghost2_xfine = 1 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [407] ghost2_xfine = $61 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [412] if(ghost2_respawn!=0) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [413] ghost2_direction = LEFT [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [414] ghost2_xfine = $60 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [415] ghost2_yfine = $46 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [416] ghost2_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [417] if(0!=ghost1_respawn) goto game_logic::@123 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ghost1_respawn ] { } ) always clobbers reg byte a
Statement [418] if(ghost1_direction==RIGHT) goto game_logic::@124 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] { } ) always clobbers reg byte a
Statement [419] if(ghost1_direction==DOWN) goto game_logic::@125 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] { } ) always clobbers reg byte a
Statement [420] if(ghost1_direction==LEFT) goto game_logic::@126 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] { } ) always clobbers reg byte a
Statement [421] if(ghost1_direction!=UP) goto game_logic::@127 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_substep ghost1_reverse ] { } ) always clobbers reg byte a
Statement [424] if(ghost1_substep!=0) goto game_logic::@133 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_reverse game_logic::$229 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_reverse game_logic::$229 ] { } ) always clobbers reg byte a
Statement [426] ghost1_substep = 0 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_reverse ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ghost1_reverse ] { } ) always clobbers reg byte a
Statement [427] if(0!=ghost1_reverse) goto game_logic::@129 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_xfine ghost1_yfine ghost1_direction ] { } ) always clobbers reg byte a
Statement [428] game_logic::ghost1_xtile#0 = ghost1_xfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_yfine ghost1_direction game_logic::ghost1_xtile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_yfine ghost1_direction game_logic::ghost1_xtile#0 ] { { level_tile_directions::xtile#3 = level_tile_directions::xtile#5 game_logic::ghost1_xtile#0 } { level_tile_directions::ytile#3 = level_tile_directions::ytile#5 game_logic::ghost1_ytile#0 } { level_tile_directions::return#12 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [429] game_logic::ghost1_ytile#0 = ghost1_yfine >> 1 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_direction game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_direction game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 ] { { level_tile_directions::xtile#3 = level_tile_directions::xtile#5 game_logic::ghost1_xtile#0 } { level_tile_directions::ytile#3 = level_tile_directions::ytile#5 game_logic::ghost1_ytile#0 } { level_tile_directions::return#12 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [435] game_logic::open_directions3#1 = game_logic::open_directions3#0 & DIRECTION_ELIMINATE[ghost1_direction] [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 ] { } ) always clobbers reg byte a
Statement [436] if(ghosts_mode==FRIGHTENED) goto game_logic::@130 [ pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 ] { } ) always clobbers reg byte a
Statement [437] if(ghosts_mode==SCATTER) goto game_logic::@131 [ pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 ] { } ) always clobbers reg byte a
Statement [438] game_logic::target_xtile3#2 = pacman_xfine >> 1 [ pacman_ch1_enabled pacman_yfine game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 game_logic::target_xtile3#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_yfine game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 game_logic::target_xtile3#2 ] { } ) always clobbers reg byte a
Statement [439] game_logic::target_ytile3#2 = pacman_yfine >> 1 [ pacman_ch1_enabled game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 game_logic::target_xtile3#2 game_logic::target_ytile3#2 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 game_logic::open_directions3#1 game_logic::target_xtile3#2 game_logic::target_ytile3#2 ] { } ) always clobbers reg byte a
Statement [450] ghost1_direction = DIRECTION_SINGLE[game_logic::open_directions3#1] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [451] ghost1_direction = DIRECTION_REVERSE[ghost1_direction] [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a reg byte y
Statement [452] ghost1_reverse = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [453] ghost1_substep = 1 [ pacman_ch1_enabled ghost1_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost1_xfine ] { } ) always clobbers reg byte a
Statement [454] if(ghost1_xfine==1) goto game_logic::@132 [ pacman_ch1_enabled ghost1_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ghost1_xfine ] { } ) always clobbers reg byte a
Statement [455] if(ghost1_xfine!=$61) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [456] ghost1_xfine = 1 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [457] ghost1_xfine = $61 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [462] if(ghost1_respawn!=0) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [463] ghost1_direction = DOWN [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [464] ghost1_xfine = $60 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [465] ghost1_yfine = 2 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [466] ghost1_substep = 0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [467] if(pacman_direction==RIGHT) goto game_logic::@140 [ pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] { } ) always clobbers reg byte a
Statement [468] if(pacman_direction==DOWN) goto game_logic::@141 [ pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] { } ) always clobbers reg byte a
Statement [469] if(pacman_direction==LEFT) goto game_logic::@142 [ pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] { } ) always clobbers reg byte a
Statement [470] if(pacman_direction!=UP) goto game_logic::@143 [ pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction pacman_substep ] { } ) always clobbers reg byte a
Statement [473] if(pacman_substep!=0) goto game_logic::@147 [ pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction game_logic::$232 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction game_logic::$232 ] { } ) always clobbers reg byte a
Statement [475] pacman_substep = 0 [ pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine pacman_direction ] { { level_tile_directions::xtile#4 = level_tile_directions::xtile#5 game_logic::pacman_xtile1#0 } { level_tile_directions::ytile#4 = level_tile_directions::ytile#5 game_logic::pacman_ytile1#0 } { level_tile_directions::return#13 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [476] game_logic::pacman_xtile1#0 = pacman_xfine >> 1 [ pacman_ch1_enabled pacman_yfine pacman_direction game_logic::pacman_xtile1#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_yfine pacman_direction game_logic::pacman_xtile1#0 ] { { level_tile_directions::xtile#4 = level_tile_directions::xtile#5 game_logic::pacman_xtile1#0 } { level_tile_directions::ytile#4 = level_tile_directions::ytile#5 game_logic::pacman_ytile1#0 } { level_tile_directions::return#13 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [477] game_logic::pacman_ytile1#0 = pacman_yfine >> 1 [ pacman_ch1_enabled pacman_direction game_logic::pacman_xtile1#0 game_logic::pacman_ytile1#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction game_logic::pacman_xtile1#0 game_logic::pacman_ytile1#0 ] { { level_tile_directions::xtile#4 = level_tile_directions::xtile#5 game_logic::pacman_xtile1#0 } { level_tile_directions::ytile#4 = level_tile_directions::ytile#5 game_logic::pacman_ytile1#0 } { level_tile_directions::return#13 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [483] game_logic::$199 = *((char *)CIA1) & $f [ pacman_ch1_enabled pacman_direction game_logic::open_directions4#0 game_logic::$199 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction game_logic::open_directions4#0 game_logic::$199 ] { } ) always clobbers reg byte a
Statement [484] game_logic::$200 = game_logic::$199 ^ $f [ pacman_ch1_enabled pacman_direction game_logic::open_directions4#0 game_logic::$200 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction game_logic::open_directions4#0 game_logic::$200 ] { } ) always clobbers reg byte a
Statement [485] game_logic::joy_directions#0 = game_logic::$200 << 2 [ pacman_ch1_enabled pacman_direction game_logic::open_directions4#0 game_logic::joy_directions#0 ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction game_logic::open_directions4#0 game_logic::joy_directions#0 ] { } ) always clobbers reg byte a
Statement [491] pacman_direction = pacman_direction & game_logic::open_directions4#0 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [492] pacman_substep = 1 [ pacman_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_xfine ] { } ) always clobbers reg byte a
Statement [493] pacman_ch1_enabled = 1 [ pacman_ch1_enabled pacman_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine ] { } ) always clobbers reg byte a
Statement [494] if(pacman_xfine==1) goto game_logic::@146 [ pacman_ch1_enabled pacman_xfine ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine ] { } ) always clobbers reg byte a
Statement [495] if(pacman_xfine!=$61) goto game_logic::@return [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [496] pacman_xfine = 1 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [497] pacman_xfine = $61 [ pacman_ch1_enabled ] ( game_logic:89 [ pacman_ch1_idx pacman_ch1_enabled ] { } ) always clobbers reg byte a
Statement [501] if(0==pacman_ch1_enabled) goto pacman_sound_play::@return [ pacman_ch1_idx ] ( pacman_sound_play:91 [ pacman_ch1_idx ] { } ) always clobbers reg byte a
Statement [502] *SID_CH1_FREQ_HI = PACMAN_CH1_FREQ_HI[pacman_ch1_idx] [ pacman_ch1_idx ] ( pacman_sound_play:91 [ pacman_ch1_idx ] { } ) always clobbers reg byte a reg byte y
Statement [503] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = PACMAN_CH1_CONTROL[pacman_ch1_idx] [ pacman_ch1_idx ] ( pacman_sound_play:91 [ pacman_ch1_idx ] { } ) always clobbers reg byte a reg byte y
Statement [505] if(pacman_ch1_idx!=$16*SIZEOF_CHAR) goto pacman_sound_play::@return [ ] ( pacman_sound_play:91 [ ] { } ) always clobbers reg byte a
Statement [506] pacman_ch1_idx = 0 [ ] ( pacman_sound_play:91 [ ] { } ) always clobbers reg byte a
Statement [507] pacman_ch1_enabled = 0 [ ] ( pacman_sound_play:91 [ ] { } ) always clobbers reg byte a
Statement [511] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [512] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [513] *PROCPORT = PROCPORT_RAM_ALL [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [515] byteboozer_decrunch::crunched = RASTER_CODE_CRUNCHED [ byteboozer_decrunch::crunched ] ( main:62::splash_run:102 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [517] byteboozer_decrunch::crunched = LOGIC_CODE_CRUNCHED [ byteboozer_decrunch::crunched ] ( main:62::splash_run:102 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [527] byteboozer_decrunch::crunched = SPLASH_CRUNCHED [ byteboozer_decrunch::crunched ] ( main:62::splash_run:102 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [535] byteboozer_decrunch::crunched = BOB_GRAPHICS_CRUNCHED [ byteboozer_decrunch::crunched ] ( main:62::splash_run:102 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [541] byteboozer_decrunch::crunched = INTRO_MUSIC_CRUNCHED_UPPER [ byteboozer_decrunch::crunched ] ( main:62::splash_run:102 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [545] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [546] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [550] *((char *)CIA2) = splash_run::toDd001_return#0 [ splash_run::msb#10 ] ( main:62::splash_run:102 [ splash_run::msb#10 ] { } ) always clobbers reg byte a
Statement [551] canvas_base_hi = byte1 SPRITES_2 [ splash_run::msb#10 ] ( main:62::splash_run:102 [ splash_run::msb#10 ] { } ) always clobbers reg byte a
Statement [552] bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE [ splash_run::msb#10 ] ( main:62::splash_run:102 [ splash_run::msb#10 ] { } ) always clobbers reg byte a
Statement [554] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = splash_run::toD0181_return#0 [ splash_run::msb#10 ] ( main:62::splash_run:102 [ splash_run::msb#10 ] { } ) always clobbers reg byte a
Statement [556] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $ff [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [557] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $ff [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [558] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = BLACK [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [559] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = BLACK [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [560] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLUE [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [561] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = RED [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [562] top_sprites_mc = 3 [ top_sprites_mc ] ( main:62::splash_run:102 [ top_sprites_mc ] { } ) always clobbers reg byte a
Statement [563] side_sprites_mc = 0 [ top_sprites_mc ] ( main:62::splash_run:102 [ top_sprites_mc ] { } ) always clobbers reg byte a
Statement [564] bottom_sprites_mc = 3 [ top_sprites_mc ] ( main:62::splash_run:102 [ top_sprites_mc ] { } ) always clobbers reg byte a
Statement [565] top_sprites_color = YELLOW [ top_sprites_color top_sprites_mc ] ( main:62::splash_run:102 [ top_sprites_color top_sprites_mc ] { } ) always clobbers reg byte a
Statement [566] side_sprites_color = BLUE [ top_sprites_color top_sprites_mc ] ( main:62::splash_run:102 [ top_sprites_color top_sprites_mc ] { } ) always clobbers reg byte a
Statement [567] bottom_sprites_color = YELLOW [ top_sprites_color top_sprites_mc ] ( main:62::splash_run:102 [ top_sprites_color top_sprites_mc ] { } ) always clobbers reg byte a
Statement [568] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc [ top_sprites_color ] ( main:62::splash_run:102 [ top_sprites_color ] { } ) always clobbers reg byte a
Statement [571] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = 8 [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement asm { lda#1 staINTRO_MUSIC+$69 } always clobbers reg byte a
Statement asm { lda#0 } always clobbers reg byte a
Statement [576] callexecute *musicInit [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [577] phase = 0 [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [578] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [579] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fa) goto splash_run::@12 [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [580] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & ~VICII_RST8|VICII_RSEL|VICII_DEN [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [581] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [582] *HARDWARE_IRQ = &irq_screen_top [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [583] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a
Statement [585] *IRQ_STATUS = $f [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a
Statement [589] music_play_next = 0 [ music_play_next ] ( main:62::splash_run:102 [ music_play_next ] { } ) always clobbers reg byte a
Statement [596] if(0==music_play_next) goto splash_run::@14 [ music_play_next ] ( main:62::splash_run:102 [ music_play_next ] { } ) always clobbers reg byte a
Statement [598] callexecute *musicPlay [ ] ( main:62::splash_run:102 [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [599] music_play_next = 0 [ music_play_next ] ( main:62::splash_run:102 [ music_play_next ] { } ) always clobbers reg byte a
Statement [600] bobs_xcol[splash_run::i2#2] = $a [ splash_run::i2#2 ] ( main:62::splash_run:102 [ splash_run::i2#2 ] { } ) always clobbers reg byte a
Statement [601] bobs_yfine[splash_run::i2#2] = $2d [ splash_run::i2#2 ] ( main:62::splash_run:102 [ splash_run::i2#2 ] { } ) always clobbers reg byte a
Statement [602] bobs_bob_id[splash_run::i2#2] = 0 [ splash_run::i2#2 ] ( main:62::splash_run:102 [ splash_run::i2#2 ] { } ) always clobbers reg byte a
Statement [604] SPRITES_COLOR[splash_run::i1#2] = top_sprites_color [ top_sprites_color splash_run::i1#2 ] ( main:62::splash_run:102 [ top_sprites_color splash_run::i1#2 ] { } ) always clobbers reg byte a
Statement [606] splash_run::$34 = splash_run::i#2 << 1 [ splash_run::i#2 splash_run::msb#10 splash_run::$34 ] ( main:62::splash_run:102 [ splash_run::i#2 splash_run::msb#10 splash_run::$34 ] { } ) always clobbers reg byte a
Statement [607] SPRITES_YPOS[splash_run::$34] = 7 [ splash_run::i#2 splash_run::msb#10 splash_run::$34 ] ( main:62::splash_run:102 [ splash_run::i#2 splash_run::msb#10 splash_run::$34 ] { } ) always clobbers reg byte a
Statement [608] splash_run::xpos#0 = splash_run::sprites_xpos[splash_run::$34] [ splash_run::i#2 splash_run::msb#10 splash_run::$34 splash_run::xpos#0 ] ( main:62::splash_run:102 [ splash_run::i#2 splash_run::msb#10 splash_run::$34 splash_run::xpos#0 ] { } ) always clobbers reg byte a
Statement [609] SPRITES_XPOS[splash_run::$34] = (char)splash_run::xpos#0 [ splash_run::i#2 splash_run::msb#10 splash_run::xpos#0 ] ( main:62::splash_run:102 [ splash_run::i#2 splash_run::msb#10 splash_run::xpos#0 ] { } ) always clobbers reg byte a
Statement [613] splash_run::msb#2 = splash_run::msb#1 | $80 [ splash_run::i#2 splash_run::msb#2 ] ( main:62::splash_run:102 [ splash_run::i#2 splash_run::msb#2 ] { } ) always clobbers reg byte a
Statement [620] pacman_wins = 0 [ pacman_wins ] ( main:62::gameplay_run:104 [ pacman_wins ] { } ) always clobbers reg byte a
Statement [621] pacman_lives = 3 [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [622] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLACK [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [623] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = BLACK [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [626] byteboozer_decrunch::crunched = LEVEL_TILES_CRUNCHED [ pacman_wins pacman_lives byteboozer_decrunch::crunched ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [634] level_show::return#0 = level_show::count#12 [ pacman_wins pacman_lives level_show::return#0 ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives level_show::return#0 ] { { level_show::return#0 = level_show::count#12 } } ) always clobbers reg byte a
Statement [635] gameplay_run::$4 = level_show::return#0 [ pacman_wins pacman_lives gameplay_run::$4 ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives gameplay_run::$4 ] { } ) always clobbers reg byte a
Statement [636] pill_count = gameplay_run::$4 [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [637] top_sprites_mc = $ff [ top_sprites_mc pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_mc pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [638] side_sprites_mc = $ff [ top_sprites_mc pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_mc pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [639] bottom_sprites_mc = $ff [ top_sprites_mc pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_mc pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [640] top_sprites_color = YELLOW [ top_sprites_color top_sprites_mc pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_color top_sprites_mc pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [641] side_sprites_color = YELLOW [ top_sprites_color top_sprites_mc pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_color top_sprites_mc pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [642] bottom_sprites_color = YELLOW [ top_sprites_color top_sprites_mc pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_color top_sprites_mc pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [643] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc [ top_sprites_color pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ top_sprites_color pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [646] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLUE [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [647] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = RED [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [648] phase = 1 [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [652] game_playable = 1 [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [653] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [654] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fb) goto gameplay_run::@10 [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [655] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fa) goto gameplay_run::@11 [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [656] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & ~VICII_RST8|VICII_RSEL|VICII_DEN [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [657] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [658] *HARDWARE_IRQ = &irq_screen_top [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [659] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a
Statement [661] *IRQ_STATUS = $f [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [663] if(0!=pacman_wins) goto gameplay_run::@return [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [664] if(pacman_lives==0) goto gameplay_run::@return [ pacman_wins pacman_lives ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [666] SPRITES_COLOR[gameplay_run::i2#2] = top_sprites_color [ top_sprites_color pacman_wins pacman_lives gameplay_run::i2#2 ] ( main:62::gameplay_run:104 [ top_sprites_color pacman_wins pacman_lives gameplay_run::i2#2 ] { } ) always clobbers reg byte a
Statement [668] SPRITES_COLOR[gameplay_run::i1#2] = BLACK [ pacman_wins pacman_lives gameplay_run::i1#2 ] ( main:62::gameplay_run:104 [ pacman_wins pacman_lives gameplay_run::i1#2 ] { } ) always clobbers reg byte a
Statement [670] ((char *)SID)[gameplay_run::i#2] = 0 [ gameplay_run::i#2 ] ( main:62::gameplay_run:104 [ gameplay_run::i#2 ] { } ) always clobbers reg byte a
Statement [672] game_playable = 0 [ ] ( main:62::done_run:106 [ ] { } ) always clobbers reg byte a
Statement [673] phase = 0 [ ] ( main:62::done_run:106 [ ] { } ) always clobbers reg byte a
Statement asm { lda#0 } always clobbers reg byte a
Statement [679] callexecute *musicInit [ pacman_wins ] ( main:62::done_run:106 [ pacman_wins ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [680] if(0!=pacman_wins) goto done_run::@2 [ ] ( main:62::done_run:106 [ ] { } ) always clobbers reg byte a
Statement [681] byteboozer_decrunch::crunched = GAMEOVER_GFX_CRUNCHED [ byteboozer_decrunch::crunched ] ( main:62::done_run:106 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [685] music_play_next = 0 [ music_play_next ] ( main:62::done_run:106 [ music_play_next ] { } ) always clobbers reg byte a
Statement [692] if(0==music_play_next) goto done_run::@14 [ music_play_next ] ( main:62::done_run:106 [ music_play_next ] { } ) always clobbers reg byte a
Statement [694] callexecute *musicPlay [ ] ( main:62::done_run:106 [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [695] music_play_next = 0 [ music_play_next ] ( main:62::done_run:106 [ music_play_next ] { } ) always clobbers reg byte a
Statement [699] done_run::pixels#0 = *done_run::gfx#2 [ done_run::xcol#2 done_run::gfx#2 done_run::ypos#2 done_run::pixels#0 ] ( main:62::done_run:106 [ done_run::xcol#2 done_run::gfx#2 done_run::ypos#2 done_run::pixels#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } ) always clobbers reg byte a reg byte y
Statement [706] byteboozer_decrunch::crunched = WIN_GFX_CRUNCHED [ byteboozer_decrunch::crunched ] ( main:62::done_run:106 [ byteboozer_decrunch::crunched ] { } ) always clobbers reg byte a
Statement [708] bobs_xcol[done_run::i1#2] = $a [ done_run::i1#2 ] ( main:62::done_run:106 [ done_run::i1#2 ] { } ) always clobbers reg byte a
Statement [709] bobs_yfine[done_run::i1#2] = $2d [ done_run::i1#2 ] ( main:62::done_run:106 [ done_run::i1#2 ] { } ) always clobbers reg byte a
Statement [710] bobs_bob_id[done_run::i1#2] = 0 [ done_run::i1#2 ] ( main:62::done_run:106 [ done_run::i1#2 ] { } ) always clobbers reg byte a
Statement [712] ((char *)SID)[done_run::i#2] = 0 [ done_run::i#2 ] ( main:62::done_run:106 [ done_run::i#2 ] { } ) always clobbers reg byte a
Statement [714] ghosts_mode_count = 0 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [715] pacman_substep = 0 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [716] ghost1_substep = 0 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [717] ghost2_substep = 0 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [718] ghost3_substep = 0 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [719] ghost4_substep = 0 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [720] pacman_direction = STOP [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [721] ghost1_direction = STOP [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [722] ghost2_direction = STOP [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [723] ghost3_direction = STOP [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [724] ghost4_direction = STOP [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [725] pacman_xfine = $32 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [726] ghost1_xfine = $32 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [727] ghost2_xfine = $32 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [728] ghost3_xfine = $32 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [729] ghost4_xfine = $32 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [730] ghost1_yfine = $23 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [731] ghost2_yfine = $23 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [732] ghost3_yfine = $23 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [733] ghost4_yfine = $23 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [734] pacman_yfine = $3e [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [735] ghost1_respawn = $a [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [736] ghost2_respawn = $14 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [737] ghost3_respawn = $1e [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [738] ghost4_respawn = $28 [ ] ( game_logic:89::spawn_all:220 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:228 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:236 [ pacman_ch1_idx pacman_ch1_enabled ] { } game_logic:89::spawn_all:244 [ pacman_ch1_idx pacman_ch1_enabled ] { } main:62::gameplay_run:104::spawn_all:649 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [743] level_tile_directions::$5 = level_tile_directions::ytile#5 << 1 [ level_tile_directions::xtile#5 level_tile_directions::$5 ] ( game_logic:89::level_tile_directions:282 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_direction game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 level_tile_directions::xtile#5 level_tile_directions::$5 ] { { level_tile_directions::xtile#0 = level_tile_directions::xtile#5 game_logic::ghost4_xtile#0 } { level_tile_directions::ytile#0 = level_tile_directions::ytile#5 game_logic::ghost4_ytile#0 } { level_tile_directions::return#2 = level_tile_directions::return#3 } } game_logic:89::level_tile_directions:332 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_direction game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 level_tile_directions::xtile#5 level_tile_directions::$5 ] { { level_tile_directions::xtile#1 = level_tile_directions::xtile#5 game_logic::ghost3_xtile#0 } { level_tile_directions::ytile#1 = level_tile_directions::ytile#5 game_logic::ghost3_ytile#0 } { level_tile_directions::return#10 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:382 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_direction game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 level_tile_directions::xtile#5 level_tile_directions::$5 ] { { level_tile_directions::xtile#2 = level_tile_directions::xtile#5 game_logic::ghost2_xtile#0 } { level_tile_directions::ytile#2 = level_tile_directions::ytile#5 game_logic::ghost2_ytile#0 } { level_tile_directions::return#11 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:432 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_direction game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 level_tile_directions::xtile#5 level_tile_directions::$5 ] { { level_tile_directions::xtile#3 = level_tile_directions::xtile#5 game_logic::ghost1_xtile#0 } { level_tile_directions::ytile#3 = level_tile_directions::ytile#5 game_logic::ghost1_ytile#0 } { level_tile_directions::return#12 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:480 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction level_tile_directions::xtile#5 level_tile_directions::$5 ] { { level_tile_directions::xtile#4 = level_tile_directions::xtile#5 game_logic::pacman_xtile1#0 } { level_tile_directions::ytile#4 = level_tile_directions::ytile#5 game_logic::pacman_ytile1#0 } { level_tile_directions::return#13 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [744] level_tile_directions::ytiles#0 = LEVEL_TILES_DIRECTIONS + LEVEL_YTILE_OFFSET[level_tile_directions::$5] [ level_tile_directions::xtile#5 level_tile_directions::ytiles#0 ] ( game_logic:89::level_tile_directions:282 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_direction game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 level_tile_directions::xtile#5 level_tile_directions::ytiles#0 ] { { level_tile_directions::xtile#0 = level_tile_directions::xtile#5 game_logic::ghost4_xtile#0 } { level_tile_directions::ytile#0 = level_tile_directions::ytile#5 game_logic::ghost4_ytile#0 } { level_tile_directions::return#2 = level_tile_directions::return#3 } } game_logic:89::level_tile_directions:332 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_direction game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 level_tile_directions::xtile#5 level_tile_directions::ytiles#0 ] { { level_tile_directions::xtile#1 = level_tile_directions::xtile#5 game_logic::ghost3_xtile#0 } { level_tile_directions::ytile#1 = level_tile_directions::ytile#5 game_logic::ghost3_ytile#0 } { level_tile_directions::return#10 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:382 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_direction game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 level_tile_directions::xtile#5 level_tile_directions::ytiles#0 ] { { level_tile_directions::xtile#2 = level_tile_directions::xtile#5 game_logic::ghost2_xtile#0 } { level_tile_directions::ytile#2 = level_tile_directions::ytile#5 game_logic::ghost2_ytile#0 } { level_tile_directions::return#11 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:432 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_direction game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 level_tile_directions::xtile#5 level_tile_directions::ytiles#0 ] { { level_tile_directions::xtile#3 = level_tile_directions::xtile#5 game_logic::ghost1_xtile#0 } { level_tile_directions::ytile#3 = level_tile_directions::ytile#5 game_logic::ghost1_ytile#0 } { level_tile_directions::return#12 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:480 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction level_tile_directions::xtile#5 level_tile_directions::ytiles#0 ] { { level_tile_directions::xtile#4 = level_tile_directions::xtile#5 game_logic::pacman_xtile1#0 } { level_tile_directions::ytile#4 = level_tile_directions::ytile#5 game_logic::pacman_ytile1#0 } { level_tile_directions::return#13 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [745] level_tile_directions::return#0 = level_tile_directions::ytiles#0[level_tile_directions::xtile#5] [ level_tile_directions::return#0 ] ( game_logic:89::level_tile_directions:282 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost4_direction game_logic::ghost4_xtile#0 game_logic::ghost4_ytile#0 level_tile_directions::return#0 ] { { level_tile_directions::xtile#0 = level_tile_directions::xtile#5 game_logic::ghost4_xtile#0 } { level_tile_directions::ytile#0 = level_tile_directions::ytile#5 game_logic::ghost4_ytile#0 } { level_tile_directions::return#2 = level_tile_directions::return#3 } } game_logic:89::level_tile_directions:332 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost3_direction game_logic::ghost3_xtile#0 game_logic::ghost3_ytile#0 level_tile_directions::return#0 ] { { level_tile_directions::xtile#1 = level_tile_directions::xtile#5 game_logic::ghost3_xtile#0 } { level_tile_directions::ytile#1 = level_tile_directions::ytile#5 game_logic::ghost3_ytile#0 } { level_tile_directions::return#10 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:382 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost2_direction game_logic::ghost2_xtile#0 game_logic::ghost2_ytile#0 level_tile_directions::return#0 ] { { level_tile_directions::xtile#2 = level_tile_directions::xtile#5 game_logic::ghost2_xtile#0 } { level_tile_directions::ytile#2 = level_tile_directions::ytile#5 game_logic::ghost2_ytile#0 } { level_tile_directions::return#11 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:432 [ pacman_ch1_idx pacman_ch1_enabled pacman_xfine pacman_yfine ghosts_mode ghost1_direction game_logic::ghost1_xtile#0 game_logic::ghost1_ytile#0 level_tile_directions::return#0 ] { { level_tile_directions::xtile#3 = level_tile_directions::xtile#5 game_logic::ghost1_xtile#0 } { level_tile_directions::ytile#3 = level_tile_directions::ytile#5 game_logic::ghost1_ytile#0 } { level_tile_directions::return#12 = level_tile_directions::return#2 } } game_logic:89::level_tile_directions:480 [ pacman_ch1_idx pacman_ch1_enabled pacman_direction level_tile_directions::return#0 ] { { level_tile_directions::xtile#4 = level_tile_directions::xtile#5 game_logic::pacman_xtile1#0 } { level_tile_directions::ytile#4 = level_tile_directions::ytile#5 game_logic::pacman_ytile1#0 } { level_tile_directions::return#13 = level_tile_directions::return#2 } } ) always clobbers reg byte a
Statement [749] choose_direction::xdiff#0 = choose_direction::ghost_xtile#4 - choose_direction::target_xtile#4 [ choose_direction::ghost_ytile#4 choose_direction::target_ytile#4 choose_direction::open_directions#10 choose_direction::xdiff#0 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::ghost_ytile#4 choose_direction::target_ytile#4 choose_direction::open_directions#10 choose_direction::xdiff#0 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::ghost_ytile#4 choose_direction::target_ytile#4 choose_direction::open_directions#10 choose_direction::xdiff#0 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::ghost_ytile#4 choose_direction::target_ytile#4 choose_direction::open_directions#10 choose_direction::xdiff#0 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::ghost_ytile#4 choose_direction::target_ytile#4 choose_direction::open_directions#10 choose_direction::xdiff#0 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [750] choose_direction::ydiff#0 = choose_direction::ghost_ytile#4 - choose_direction::target_ytile#4 [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [751] choose_direction::$2 = choose_direction::open_directions#10 & UP [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::$2 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::$2 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::$2 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::$2 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::$2 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [753] choose_direction::dist_up#0 = ABS[choose_direction::xdiff#0] + (ABS+-1)[choose_direction::ydiff#0] [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_up#0 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_up#0 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_up#0 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_up#0 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_up#0 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [757] choose_direction::$4 = choose_direction::open_directions#10 & DOWN [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::$4 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::$4 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::$4 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::$4 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::$4 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [759] choose_direction::dist_down#0 = ABS[choose_direction::xdiff#0] + (ABS+1)[choose_direction::ydiff#0] [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::dist_down#0 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::dist_down#0 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::dist_down#0 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::dist_down#0 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#6 choose_direction::direction#10 choose_direction::dist_down#0 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [763] choose_direction::$6 = choose_direction::open_directions#10 & LEFT [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::$6 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::$6 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::$6 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::$6 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::$6 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [765] choose_direction::dist_left#0 = (ABS+-1)[choose_direction::xdiff#0] + ABS[choose_direction::ydiff#0] [ choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::dist_left#0 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::dist_left#0 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::dist_left#0 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::dist_left#0 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::open_directions#10 choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::dist_min#10 choose_direction::direction#8 choose_direction::dist_left#0 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [769] choose_direction::$8 = choose_direction::open_directions#10 & RIGHT [ choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::$8 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::$8 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::$8 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::$8 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::xdiff#0 choose_direction::ydiff#0 choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::$8 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [771] choose_direction::dist_right#0 = (ABS+1)[choose_direction::xdiff#0] + ABS[choose_direction::ydiff#0] [ choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::dist_right#0 ] ( game_logic:89::choose_direction:296 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::dist_right#0 ] { { choose_direction::ghost_xtile#0 = choose_direction::ghost_xtile#4 game_logic::ghost4_xtile#0 } { choose_direction::target_xtile#0 = choose_direction::target_xtile#4 game_logic::target_xtile#3 } { choose_direction::ghost_ytile#0 = choose_direction::ghost_ytile#4 game_logic::ghost4_ytile#0 } { choose_direction::target_ytile#0 = choose_direction::target_ytile#4 game_logic::target_ytile#3 } { choose_direction::open_directions#0 = choose_direction::open_directions#10 game_logic::open_directions#1 } { choose_direction::return#0 = choose_direction::return#10 } } game_logic:89::choose_direction:346 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::dist_right#0 ] { { choose_direction::ghost_xtile#1 = choose_direction::ghost_xtile#4 game_logic::ghost3_xtile#0 } { choose_direction::target_xtile#1 = choose_direction::target_xtile#4 game_logic::target_xtile1#3 } { choose_direction::ghost_ytile#1 = choose_direction::ghost_ytile#4 game_logic::ghost3_ytile#0 } { choose_direction::target_ytile#1 = choose_direction::target_ytile#4 game_logic::target_ytile1#3 } { choose_direction::open_directions#1 = choose_direction::open_directions#10 game_logic::open_directions1#1 } { choose_direction::return#1 = choose_direction::return#10 } } game_logic:89::choose_direction:396 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::dist_right#0 ] { { choose_direction::ghost_xtile#2 = choose_direction::ghost_xtile#4 game_logic::ghost2_xtile#0 } { choose_direction::target_xtile#2 = choose_direction::target_xtile#4 game_logic::target_xtile2#3 } { choose_direction::ghost_ytile#2 = choose_direction::ghost_ytile#4 game_logic::ghost2_ytile#0 } { choose_direction::target_ytile#2 = choose_direction::target_ytile#4 game_logic::target_ytile2#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#2 game_logic::open_directions2#1 } { choose_direction::return#10 = choose_direction::return#2 } } game_logic:89::choose_direction:446 [ pacman_ch1_idx pacman_ch1_enabled choose_direction::direction#6 choose_direction::dist_min#11 choose_direction::dist_right#0 ] { { choose_direction::ghost_xtile#3 = choose_direction::ghost_xtile#4 game_logic::ghost1_xtile#0 } { choose_direction::target_xtile#3 = choose_direction::target_xtile#4 game_logic::target_xtile3#3 } { choose_direction::ghost_ytile#3 = choose_direction::ghost_ytile#4 game_logic::ghost1_ytile#0 } { choose_direction::target_ytile#3 = choose_direction::target_ytile#4 game_logic::target_ytile3#3 } { choose_direction::open_directions#10 = choose_direction::open_directions#3 game_logic::open_directions3#1 } { choose_direction::return#10 = choose_direction::return#3 } } ) always clobbers reg byte a
Statement [779] if(memset::num#5<=0) goto memset::@return [ memset::num#5 memset::str#6 ] ( main:62::splash_run:102::memset:514 [ memset::num#5 memset::str#6 ] { } main:62::splash_run:102::memset:522 [ memset::num#5 memset::str#6 ] { } main:62::splash_run:102::memset:524 [ memset::num#5 memset::str#6 ] { } main:62::splash_run:102::memset:532 [ memset::num#5 memset::str#6 ] { } main:62::splash_run:102::memset:544 [ memset::num#5 memset::str#6 ] { } ) always clobbers reg byte a
Statement [780] memset::end#0 = (char *)memset::str#6 + memset::num#5 [ memset::str#6 memset::end#0 ] ( main:62::splash_run:102::memset:514 [ memset::str#6 memset::end#0 ] { } main:62::splash_run:102::memset:522 [ memset::str#6 memset::end#0 ] { } main:62::splash_run:102::memset:524 [ memset::str#6 memset::end#0 ] { } main:62::splash_run:102::memset:532 [ memset::str#6 memset::end#0 ] { } main:62::splash_run:102::memset:544 [ memset::str#6 memset::end#0 ] { } ) always clobbers reg byte a
Statement [781] memset::dst#4 = (char *)memset::str#6 [ memset::end#0 memset::dst#4 ] ( main:62::splash_run:102::memset:514 [ memset::end#0 memset::dst#4 ] { } main:62::splash_run:102::memset:522 [ memset::end#0 memset::dst#4 ] { } main:62::splash_run:102::memset:524 [ memset::end#0 memset::dst#4 ] { } main:62::splash_run:102::memset:532 [ memset::end#0 memset::dst#4 ] { } main:62::splash_run:102::memset:544 [ memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a
Statement [783] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::end#0 memset::dst#2 ] ( main:62::splash_run:102::memset:514 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:522 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:524 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:532 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:544 [ memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
Statement [785] *memset::dst#2 = 0 [ memset::end#0 memset::dst#2 ] ( main:62::splash_run:102::memset:514 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:522 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:524 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:532 [ memset::end#0 memset::dst#2 ] { } main:62::splash_run:102::memset:544 [ memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
Statement asm { ldycrunched ldxcrunched+1 jsrb2.Decrunch } always clobbers reg byte a reg byte x reg byte y
Statement [791] if(*merge_code::raster_code#4!=merge_code::RASTER_END) goto merge_code::@2 [ merge_code::raster_code#4 merge_code::dest_code#14 merge_code::logic_code#18 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#4 merge_code::dest_code#14 merge_code::logic_code#18 ] { } ) always clobbers reg byte a reg byte y
Statement [792] merge_code::raster_code#1 = ++ merge_code::raster_code#4 [ merge_code::dest_code#14 merge_code::logic_code#18 merge_code::raster_code#1 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::dest_code#14 merge_code::logic_code#18 merge_code::raster_code#1 ] { } ) always clobbers reg byte a
Statement [793] merge_code::cycle_budget#0 = *merge_code::raster_code#1 [ merge_code::dest_code#14 merge_code::logic_code#18 merge_code::raster_code#1 merge_code::cycle_budget#0 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::dest_code#14 merge_code::logic_code#18 merge_code::raster_code#1 merge_code::cycle_budget#0 ] { } ) always clobbers reg byte a reg byte y
Statement [794] merge_code::raster_code#2 = ++ merge_code::raster_code#1 [ merge_code::dest_code#14 merge_code::logic_code#18 merge_code::raster_code#2 merge_code::cycle_budget#0 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::dest_code#14 merge_code::logic_code#18 merge_code::raster_code#2 merge_code::cycle_budget#0 ] { } ) always clobbers reg byte a
Statement [797] if(*merge_code::logic_code#12!=merge_code::LOGIC_EXIT) goto merge_code::@15 [ merge_code::logic_code#12 merge_code::dest_code#12 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::logic_code#12 merge_code::dest_code#12 ] { } ) always clobbers reg byte a reg byte y
Statement [798] *merge_code::dest_code#12 = $60 [ ] ( main:62::splash_run:102::merge_code:520 [ ] { } ) always clobbers reg byte a reg byte y
Statement [800] merge_code::logic_code#3 = ++ merge_code::logic_code#12 [ merge_code::dest_code#12 merge_code::logic_code#3 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::dest_code#12 merge_code::logic_code#3 ] { } ) always clobbers reg byte a
Statement [802] if(*merge_code::logic_code#14!=merge_code::LOGIC_END) goto merge_code::@18 [ merge_code::dest_code#13 merge_code::logic_code#14 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::dest_code#13 merge_code::logic_code#14 ] { } ) always clobbers reg byte a reg byte y
Statement [803] merge_code::logic_code#5 = ++ merge_code::logic_code#14 [ merge_code::logic_code#5 merge_code::dest_code#13 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::logic_code#5 merge_code::dest_code#13 ] { } ) always clobbers reg byte a
Statement [804] *merge_code::dest_code#13 = *merge_code::logic_code#14 [ merge_code::dest_code#13 merge_code::logic_code#14 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::dest_code#13 merge_code::logic_code#14 ] { } ) always clobbers reg byte a reg byte y
Statement [809] merge_code::logic_cycles#0 = *merge_code::logic_code#17 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#13 merge_code::dest_code#21 merge_code::logic_cycles#0 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#13 merge_code::dest_code#21 merge_code::logic_cycles#0 ] { } ) always clobbers reg byte a reg byte y
Statement [815] *merge_code::dest_code#10 = $ea [ merge_code::raster_code#2 merge_code::dest_code#10 merge_code::logic_code#17 merge_code::cycle_budget#10 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::dest_code#10 merge_code::logic_code#17 merge_code::cycle_budget#10 ] { } ) always clobbers reg byte a reg byte y
Statement [818] *merge_code::dest_code#10 = $24 [ merge_code::raster_code#2 merge_code::dest_code#10 merge_code::logic_code#17 merge_code::cycle_budget#10 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::dest_code#10 merge_code::logic_code#17 merge_code::cycle_budget#10 ] { } ) always clobbers reg byte a reg byte y
Statement [819] merge_code::dest_code#2 = ++ merge_code::dest_code#10 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#10 merge_code::dest_code#2 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#10 merge_code::dest_code#2 ] { } ) always clobbers reg byte a
Statement [820] *merge_code::dest_code#2 = $ea [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#10 merge_code::dest_code#2 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#10 merge_code::dest_code#2 ] { } ) always clobbers reg byte a reg byte y
Statement [821] merge_code::dest_code#3 = ++ merge_code::dest_code#2 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#10 merge_code::dest_code#3 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#10 merge_code::dest_code#3 ] { } ) always clobbers reg byte a
Statement [822] merge_code::cycle_budget#2 = merge_code::cycle_budget#10 - 3 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#2 merge_code::dest_code#3 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::logic_code#17 merge_code::cycle_budget#2 merge_code::dest_code#3 ] { } ) always clobbers reg byte a reg byte x
Statement [825] merge_code::logic_code#0 = ++ merge_code::logic_code#17 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::dest_code#21 merge_code::logic_cycles#0 merge_code::logic_code#0 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::dest_code#21 merge_code::logic_cycles#0 merge_code::logic_code#0 ] { } ) always clobbers reg byte a
Statement [827] if(*merge_code::logic_code#10!=merge_code::LOGIC_END) goto merge_code::@7 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::dest_code#15 merge_code::logic_cycles#0 merge_code::logic_code#10 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::dest_code#15 merge_code::logic_cycles#0 merge_code::logic_code#10 ] { } ) always clobbers reg byte a reg byte y
Statement [828] merge_code::logic_code#2 = ++ merge_code::logic_code#10 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::logic_code#2 merge_code::dest_code#15 merge_code::logic_cycles#0 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::logic_code#2 merge_code::dest_code#15 merge_code::logic_cycles#0 ] { } ) always clobbers reg byte a
Statement [829] merge_code::cycle_budget#1 = merge_code::cycle_budget#13 - merge_code::logic_cycles#0 [ merge_code::raster_code#2 merge_code::cycle_budget#1 merge_code::logic_code#2 merge_code::dest_code#15 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::cycle_budget#1 merge_code::logic_code#2 merge_code::dest_code#15 ] { } ) always clobbers reg byte a
Statement [830] *merge_code::dest_code#15 = *merge_code::logic_code#10 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::dest_code#15 merge_code::logic_cycles#0 merge_code::logic_code#10 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#2 merge_code::cycle_budget#13 merge_code::dest_code#15 merge_code::logic_cycles#0 merge_code::logic_code#10 ] { } ) always clobbers reg byte a reg byte y
Statement [833] *merge_code::dest_code#14 = *merge_code::raster_code#4 [ merge_code::raster_code#4 merge_code::dest_code#14 merge_code::logic_code#18 ] ( main:62::splash_run:102::merge_code:520 [ merge_code::raster_code#4 merge_code::dest_code#14 merge_code::logic_code#18 ] { } ) always clobbers reg byte a reg byte y
Statement [838] if(init_render_index::x_col#2<$1a) goto init_render_index::@2 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 ] { } ) always clobbers reg byte a
Statement [839] *(RENDER_INDEX+$18*$100+RENDER_OFFSET_YPOS_INC) = 0 [ ] ( main:62::splash_run:102::init_render_index:526 [ ] { } ) always clobbers reg byte a
Statement [840] *(RENDER_INDEX+$19*$100+RENDER_OFFSET_YPOS_INC) = 0 [ ] ( main:62::splash_run:102::init_render_index:526 [ ] { } ) always clobbers reg byte a
Statement [842] if(init_render_index::x_col#2<$18) goto init_render_index::@4 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 ] { } ) always clobbers reg byte a
Statement [845] init_render_index::$9 = init_render_index::x_col#2 << 1 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::ypos_inc_offset#7 init_render_index::$9 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::ypos_inc_offset#7 init_render_index::$9 ] { } ) always clobbers reg byte a
Statement [846] init_render_index::canvas_xcol#0 = RENDER_XCOLS[init_render_index::$9] [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::ypos_inc_offset#7 init_render_index::canvas_xcol#0 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::ypos_inc_offset#7 init_render_index::canvas_xcol#0 ] { } ) always clobbers reg byte a
Statement [847] init_render_index::render_index_xcol#7 = init_render_index::render_index_xcol#0 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::ypos_inc_offset#7 init_render_index::canvas_xcol#0 init_render_index::render_index_xcol#7 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::ypos_inc_offset#7 init_render_index::canvas_xcol#0 init_render_index::render_index_xcol#7 ] { } ) always clobbers reg byte a
Statement [849] if(init_render_index::y_pos#2<$94) goto init_render_index::@6 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 ] { } ) always clobbers reg byte a
Statement [850] init_render_index::render_index#1 = init_render_index::render_index_xcol#0 + $100 [ init_render_index::x_col#2 init_render_index::render_index#1 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index#1 ] { } ) always clobbers reg byte a
Statement [852] init_render_index::$11 = (unsigned int)init_render_index::y_pos#2 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::$11 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::$11 ] { } ) always clobbers reg byte a
Statement [853] init_render_index::$10 = init_render_index::$11 << 1 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::$10 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::$10 ] { } ) always clobbers reg byte a
Statement [854] init_render_index::$12 = init_render_index::render_ypos_table#4 + init_render_index::$10 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::$12 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::$12 ] { } ) always clobbers reg byte a
Statement [855] init_render_index::canvas#0 = init_render_index::canvas_xcol#0 + *init_render_index::$12 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::canvas#0 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::canvas#0 ] { } ) always clobbers reg byte a reg byte y
Statement [857] *init_render_index::render_index_xcol#2 = init_render_index::$5 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::canvas#0 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 init_render_index::canvas#0 ] { } ) always clobbers reg byte y
Statement [859] init_render_index::render_index_xcol#2[RENDER_OFFSET_CANVAS_HI] = init_render_index::$6 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 ] { } ) always clobbers reg byte y
Statement [860] init_render_index::render_index_xcol#2[RENDER_OFFSET_YPOS_INC] = init_render_index::ypos_inc_offset#4 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#4 ] { } ) always clobbers reg byte a reg byte y
Statement [863] init_render_index::ypos_inc_offset#3 = init_render_index::ypos_inc_offset#2 - $15 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#3 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#2 init_render_index::render_index_xcol#2 init_render_index::ypos_inc_offset#3 ] { } ) always clobbers reg byte a reg byte x
Statement [866] init_render_index::y_pos#1 = init_render_index::y_pos#2 + 2 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#1 init_render_index::render_index_xcol#1 init_render_index::ypos_inc_offset#8 ] ( main:62::splash_run:102::init_render_index:526 [ init_render_index::x_col#2 init_render_index::render_index_xcol#0 init_render_index::render_ypos_table#4 init_render_index::canvas_xcol#0 init_render_index::y_pos#1 init_render_index::render_index_xcol#1 init_render_index::ypos_inc_offset#8 ] { } ) always clobbers reg byte a
Statement [874] splash_show::pixels#0 = *splash_show::splash#2 [ splash_show::xcol#2 splash_show::splash#2 splash_show::ypos#2 splash_show::pixels#0 ] ( main:62::splash_run:102::splash_show:530 [ splash_show::xcol#2 splash_show::splash#2 splash_show::ypos#2 splash_show::pixels#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a reg byte y
Statement [884] logic_tile_ptr = LEVEL_TILES+(unsigned int)$40*$12+$c [ ] ( main:62::splash_run:102::init_bobs_restore:534 [ ] { } ) always clobbers reg byte a
Statement [885] logic_tile_xcol = $c [ ] ( main:62::splash_run:102::init_bobs_restore:534 [ ] { } ) always clobbers reg byte a
Statement [886] logic_tile_yfine = $23 [ ] ( main:62::splash_run:102::init_bobs_restore:534 [ ] { } ) always clobbers reg byte a
Statement [890] *init_bobs_restore::bob_restore#5 = 0 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] ( main:62::splash_run:102::init_bobs_restore:534 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] { } ) always clobbers reg byte a reg byte y
Statement [891] init_bobs_restore::bob_restore#5[1] = byte1 init_bobs_restore::CANVAS_HIDDEN [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] ( main:62::splash_run:102::init_bobs_restore:534 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] { } ) always clobbers reg byte a reg byte y
Statement [892] init_bobs_restore::bob_restore#5[3] = 0 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] ( main:62::splash_run:102::init_bobs_restore:534 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] { } ) always clobbers reg byte a reg byte y
Statement [893] init_bobs_restore::bob_restore#5[4] = byte1 init_bobs_restore::CANVAS_HIDDEN [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] ( main:62::splash_run:102::init_bobs_restore:534 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 ] { } ) always clobbers reg byte a reg byte y
Statement [894] init_bobs_restore::bob_restore#1 = init_bobs_restore::bob_restore#5 + SIZE_BOB_RESTORE [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#1 ] ( main:62::splash_run:102::init_bobs_restore:534 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#1 ] { } ) always clobbers reg byte a
Statement [896] init_bobs_restore::bob_restore#5[init_bobs_restore::i#2] = 0 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 init_bobs_restore::i#2 ] ( main:62::splash_run:102::init_bobs_restore:534 [ init_bobs_restore::bob#2 init_bobs_restore::bob_restore#5 init_bobs_restore::i#2 ] { } ) always clobbers reg byte a
Statement [904] init_sprite_pointers::sprites_ptr_1#1 = init_sprite_pointers::sprites_ptr_1#5 + $400 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_1#1 ] ( main:62::splash_run:102::init_sprite_pointers:538 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_1#1 ] { } main:62::gameplay_run:104::init_sprite_pointers:631 [ pacman_wins pacman_lives init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_1#1 ] { } ) always clobbers reg byte a
Statement [905] init_sprite_pointers::sprites_ptr_2#1 = init_sprite_pointers::sprites_ptr_2#5 + $400 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#1 init_sprite_pointers::sprites_ptr_2#1 ] ( main:62::splash_run:102::init_sprite_pointers:538 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#1 init_sprite_pointers::sprites_ptr_2#1 ] { } main:62::gameplay_run:104::init_sprite_pointers:631 [ pacman_wins pacman_lives init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#1 init_sprite_pointers::sprites_ptr_2#1 ] { } ) always clobbers reg byte a
Statement [907] init_sprite_pointers::$2 = init_sprite_pointers::SPRITE_ID_0 + init_sprite_pointers::screen#2 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprite#2 init_sprite_pointers::$2 ] ( main:62::splash_run:102::init_sprite_pointers:538 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprite#2 init_sprite_pointers::$2 ] { } main:62::gameplay_run:104::init_sprite_pointers:631 [ pacman_wins pacman_lives init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprite#2 init_sprite_pointers::$2 ] { } ) always clobbers reg byte a
Statement [908] init_sprite_pointers::sprite_id#0 = init_sprite_pointers::$2 + init_sprite_pointers::sprites_id[init_sprite_pointers::sprite#2] [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprite#2 init_sprite_pointers::sprite_id#0 ] ( main:62::splash_run:102::init_sprite_pointers:538 [ init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprite#2 init_sprite_pointers::sprite_id#0 ] { } main:62::gameplay_run:104::init_sprite_pointers:631 [ pacman_wins pacman_lives init_sprite_pointers::screen#2 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprite#2 init_sprite_pointers::sprite_id#0 ] { } ) always clobbers reg byte a
Statement [914] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 [ memcpy::src#2 memcpy::dst#2 ] ( main:62::splash_run:102::memcpy:540 [ memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a
Statement [916] *memcpy::dst#2 = *memcpy::src#2 [ memcpy::src#2 memcpy::dst#2 ] ( main:62::splash_run:102::memcpy:540 [ memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a reg byte y
Statement [919] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 0 [ ] ( main:62::splash_run:102::joyinit:588 [ ] { } ) always clobbers reg byte a
Statement [921] joyfire::$0 = *((char *)CIA1) & $10 [ joyfire::$0 ] ( main:62::splash_run:102::joyfire:591 [ music_play_next joyfire::$0 ] { { joyfire::return#1 = joyfire::return#4 } } main:62::done_run:106::joyfire:687 [ music_play_next joyfire::$0 ] { { joyfire::return#0 = joyfire::return#4 } } ) always clobbers reg byte a
Statement [932] init_level_tile_directions::directions#1 = init_level_tile_directions::directions#7 + $40 [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#1 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#1 ] { } ) always clobbers reg byte a
Statement [939] if(TILES_TYPE[init_level_tile_directions::$3]==WALL) goto init_level_tile_directions::@5 [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 ] { } ) always clobbers reg byte a
Statement [947] if(TILES_TYPE[init_level_tile_directions::$7]==WALL) goto init_level_tile_directions::@6 [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#11 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#11 ] { } ) always clobbers reg byte a
Statement [948] init_level_tile_directions::open_directions#2 = init_level_tile_directions::open_directions#11 | RIGHT [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#2 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#2 ] { } ) always clobbers reg byte a
Statement [955] if(TILES_TYPE[init_level_tile_directions::$11]==WALL) goto init_level_tile_directions::@7 [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#12 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#12 ] { } ) always clobbers reg byte a
Statement [956] init_level_tile_directions::open_directions#3 = init_level_tile_directions::open_directions#12 | UP [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#3 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#3 ] { } ) always clobbers reg byte a
Statement [963] if(TILES_TYPE[init_level_tile_directions::$15]==WALL) goto init_level_tile_directions::@8 [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#13 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#13 ] { } ) always clobbers reg byte a
Statement [964] init_level_tile_directions::open_directions#4 = init_level_tile_directions::open_directions#13 | DOWN [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#4 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#4 ] { } ) always clobbers reg byte a
Statement [966] init_level_tile_directions::directions#7[init_level_tile_directions::xtile#10] = init_level_tile_directions::open_directions#8 [ init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 ] ( main:62::gameplay_run:104::init_level_tile_directions:629 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 ] { } ) always clobbers reg byte a
Statement [974] level_show::level#1 = level_show::level#8 + $40 [ level_show::ytile#2 level_show::count#10 level_show::level#1 ] ( main:62::gameplay_run:104::level_show:633 [ pacman_wins pacman_lives level_show::ytile#2 level_show::count#10 level_show::level#1 ] { { level_show::return#0 = level_show::count#12 } } ) always clobbers reg byte a
Statement [976] level_show::tile_left#0 = level_show::level#8[level_show::xtile#3] [ level_show::ytile#2 level_show::level#8 level_show::count#10 level_show::xcol#2 level_show::xtile#3 level_show::tile_left#0 ] ( main:62::gameplay_run:104::level_show:633 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::count#10 level_show::xcol#2 level_show::xtile#3 level_show::tile_left#0 ] { { level_show::return#0 = level_show::count#12 } } ) always clobbers reg byte a reg byte y
Statement [978] if(TILES_TYPE[level_show::tile_left#0]!=PILL) goto level_show::@5 [ level_show::ytile#2 level_show::level#8 level_show::count#10 level_show::xcol#2 level_show::tile_left#0 level_show::xtile#1 ] ( main:62::gameplay_run:104::level_show:633 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::count#10 level_show::xcol#2 level_show::tile_left#0 level_show::xtile#1 ] { { level_show::return#0 = level_show::count#12 } } ) always clobbers reg byte a
Statement [981] level_show::tile_right#0 = level_show::level#8[level_show::xtile#1] [ level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::tile_left#0 level_show::xtile#1 level_show::count#5 level_show::tile_right#0 ] ( main:62::gameplay_run:104::level_show:633 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::tile_left#0 level_show::xtile#1 level_show::count#5 level_show::tile_right#0 ] { { level_show::return#0 = level_show::count#12 } } ) always clobbers reg byte a
Statement [983] if(TILES_TYPE[level_show::tile_right#0]!=PILL) goto level_show::@6 [ level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::tile_left#0 level_show::count#5 level_show::tile_right#0 ] ( main:62::gameplay_run:104::level_show:633 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::tile_left#0 level_show::count#5 level_show::tile_right#0 ] { { level_show::return#0 = level_show::count#12 } } ) always clobbers reg byte a
Statement [992] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE) = $f [ ] ( main:62::gameplay_run:104::pacman_sound_init:651 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [993] *((unsigned int *)SID) = 0 [ ] ( main:62::gameplay_run:104::pacman_sound_init:651 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [994] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH) = 0 [ ] ( main:62::gameplay_run:104::pacman_sound_init:651 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [995] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = 0 [ ] ( main:62::gameplay_run:104::pacman_sound_init:651 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [996] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY) = 0 [ ] ( main:62::gameplay_run:104::pacman_sound_init:651 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [997] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE) = $f0 [ ] ( main:62::gameplay_run:104::pacman_sound_init:651 [ pacman_wins pacman_lives ] { } ) always clobbers reg byte a
Statement [1000] render::ytile#0 = render::ypos#2 >> 2 [ render::ypos#2 render::xcol#2 render::pixels#4 render::ytile#0 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::xcol#2 render::pixels#4 render::ytile#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::xcol#2 render::pixels#4 render::ytile#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Statement [1001] render::$1 = byte1 RENDER_INDEX + render::xcol#2 [ render::ypos#2 render::pixels#4 render::ytile#0 render::$1 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::pixels#4 render::ytile#0 render::$1 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::pixels#4 render::ytile#0 render::$1 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Statement [1002] render::$2 = render::ytile#0 << 1 [ render::ypos#2 render::pixels#4 render::$1 render::$2 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::pixels#4 render::$1 render::$2 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::pixels#4 render::$1 render::$2 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Statement [1004] render::canvas_offset#0 = ((char *)render::render_index_xcol#0)[RENDER_OFFSET_CANVAS_HI] w= *((char *)render::render_index_xcol#0) [ render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas_offset#0 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas_offset#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas_offset#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a reg byte y
Statement [1005] render::canvas1#0 = SPRITES_1 + render::canvas_offset#0 [ render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas_offset#0 render::canvas1#0 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas_offset#0 render::canvas1#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas_offset#0 render::canvas1#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Statement [1006] render::canvas2#0 = SPRITES_2 + render::canvas_offset#0 [ render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas1#0 render::canvas2#0 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas1#0 render::canvas2#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::pixels#4 render::render_index_xcol#0 render::canvas1#0 render::canvas2#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Statement [1007] render::ypos_inc_offset#0 = ((char *)render::render_index_xcol#0)[RENDER_OFFSET_YPOS_INC] [ render::ypos#2 render::pixels#4 render::canvas1#0 render::canvas2#0 render::ypos_inc_offset#0 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::ypos#2 render::pixels#4 render::canvas1#0 render::canvas2#0 render::ypos_inc_offset#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::ypos#2 render::pixels#4 render::canvas1#0 render::canvas2#0 render::ypos_inc_offset#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a reg byte y
Statement [1008] render::ypix#0 = render::ypos#2 & 3 [ render::pixels#4 render::canvas1#0 render::canvas2#0 render::ypos_inc_offset#0 render::ypix#0 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::pixels#4 render::canvas1#0 render::canvas2#0 render::ypos_inc_offset#0 render::ypix#0 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::pixels#4 render::canvas1#0 render::canvas2#0 render::ypos_inc_offset#0 render::ypix#0 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Statement [1011] *render::canvas1#2 = render::pixels#4 [ render::pixels#4 render::canvas2#2 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::pixels#4 render::canvas2#2 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::pixels#4 render::canvas2#2 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a reg byte y
Statement [1012] *render::canvas2#2 = render::pixels#4 [ ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a reg byte y
Statement [1014] render::canvas1#1 = render::canvas1#2 + RENDER_YPOS_INC[render::ypos_inc_offset#2] [ render::pixels#4 render::ypix#0 render::i#2 render::ypos_inc_offset#2 render::canvas2#2 render::canvas1#1 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::pixels#4 render::ypix#0 render::i#2 render::ypos_inc_offset#2 render::canvas2#2 render::canvas1#1 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::pixels#4 render::ypix#0 render::i#2 render::ypos_inc_offset#2 render::canvas2#2 render::canvas1#1 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Statement [1015] render::canvas2#1 = render::canvas2#2 + RENDER_YPOS_INC[render::ypos_inc_offset#2] [ render::pixels#4 render::ypix#0 render::i#2 render::ypos_inc_offset#2 render::canvas1#1 render::canvas2#1 ] ( main:62::done_run:106::render:704 [ done_run::xcol#2 done_run::ypos#2 done_run::gfx#1 render::pixels#4 render::ypix#0 render::i#2 render::ypos_inc_offset#2 render::canvas1#1 render::canvas2#1 ] { { render::ypos#0 = render::ypos#2 done_run::ypos#2 } { render::xcol#0 = render::xcol#2 done_run::xcol#2 } { render::pixels#0 = render::pixels#4 done_run::pixels#0 } } main:62::splash_run:102::splash_show:530::render:879 [ splash_show::xcol#2 splash_show::ypos#2 splash_show::splash#1 render::pixels#4 render::ypix#0 render::i#2 render::ypos_inc_offset#2 render::canvas1#1 render::canvas2#1 ] { { render::ypos#1 = render::ypos#2 splash_show::ypos#2 } { render::xcol#1 = render::xcol#2 splash_show::xcol#2 } { render::pixels#1 = render::pixels#4 splash_show::pixels#0 } } ) always clobbers reg byte a
Statement [1021] level_tile_get::$5 = level_tile_get::ytile#4 << 1 [ level_tile_get::xtile#4 level_tile_get::$5 ] ( main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:936 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 level_tile_get::xtile#4 level_tile_get::$5 ] { { level_tile_get::xtile#0 = level_tile_get::xtile#4 } { level_tile_get::ytile#0 = level_tile_get::ytile#4 init_level_tile_directions::ytile#15 } { level_tile_get::return#2 = level_tile_get::return#3 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:944 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#11 level_tile_get::xtile#4 level_tile_get::$5 ] { { level_tile_get::xtile#1 = level_tile_get::xtile#4 } { level_tile_get::ytile#1 = level_tile_get::ytile#4 init_level_tile_directions::ytile#15 } { level_tile_get::return#2 = level_tile_get::return#4 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:952 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#12 level_tile_get::xtile#4 level_tile_get::$5 ] { { level_tile_get::xtile#2 = level_tile_get::xtile#4 init_level_tile_directions::xtile#10 } { level_tile_get::ytile#2 = level_tile_get::ytile#4 } { level_tile_get::return#10 = level_tile_get::return#2 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:960 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#13 level_tile_get::xtile#4 level_tile_get::$5 ] { { level_tile_get::xtile#3 = level_tile_get::xtile#4 init_level_tile_directions::xtile#10 } { level_tile_get::ytile#3 = level_tile_get::ytile#4 } { level_tile_get::return#11 = level_tile_get::return#2 } } ) always clobbers reg byte a
Statement [1022] level_tile_get::ytiles#0 = LEVEL_TILES + LEVEL_YTILE_OFFSET[level_tile_get::$5] [ level_tile_get::xtile#4 level_tile_get::ytiles#0 ] ( main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:936 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 level_tile_get::xtile#4 level_tile_get::ytiles#0 ] { { level_tile_get::xtile#0 = level_tile_get::xtile#4 } { level_tile_get::ytile#0 = level_tile_get::ytile#4 init_level_tile_directions::ytile#15 } { level_tile_get::return#2 = level_tile_get::return#3 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:944 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#11 level_tile_get::xtile#4 level_tile_get::ytiles#0 ] { { level_tile_get::xtile#1 = level_tile_get::xtile#4 } { level_tile_get::ytile#1 = level_tile_get::ytile#4 init_level_tile_directions::ytile#15 } { level_tile_get::return#2 = level_tile_get::return#4 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:952 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#12 level_tile_get::xtile#4 level_tile_get::ytiles#0 ] { { level_tile_get::xtile#2 = level_tile_get::xtile#4 init_level_tile_directions::xtile#10 } { level_tile_get::ytile#2 = level_tile_get::ytile#4 } { level_tile_get::return#10 = level_tile_get::return#2 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:960 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#13 level_tile_get::xtile#4 level_tile_get::ytiles#0 ] { { level_tile_get::xtile#3 = level_tile_get::xtile#4 init_level_tile_directions::xtile#10 } { level_tile_get::ytile#3 = level_tile_get::ytile#4 } { level_tile_get::return#11 = level_tile_get::return#2 } } ) always clobbers reg byte a
Statement [1023] level_tile_get::return#0 = level_tile_get::ytiles#0[level_tile_get::xtile#4] [ level_tile_get::return#0 ] ( main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:936 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 level_tile_get::return#0 ] { { level_tile_get::xtile#0 = level_tile_get::xtile#4 } { level_tile_get::ytile#0 = level_tile_get::ytile#4 init_level_tile_directions::ytile#15 } { level_tile_get::return#2 = level_tile_get::return#3 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:944 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#11 level_tile_get::return#0 ] { { level_tile_get::xtile#1 = level_tile_get::xtile#4 } { level_tile_get::ytile#1 = level_tile_get::ytile#4 init_level_tile_directions::ytile#15 } { level_tile_get::return#2 = level_tile_get::return#4 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:952 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#12 level_tile_get::return#0 ] { { level_tile_get::xtile#2 = level_tile_get::xtile#4 init_level_tile_directions::xtile#10 } { level_tile_get::ytile#2 = level_tile_get::ytile#4 } { level_tile_get::return#10 = level_tile_get::return#2 } } main:62::gameplay_run:104::init_level_tile_directions:629::level_tile_get:960 [ pacman_wins pacman_lives init_level_tile_directions::ytile#15 init_level_tile_directions::directions#7 init_level_tile_directions::xtile#10 init_level_tile_directions::open_directions#13 level_tile_get::return#0 ] { { level_tile_get::xtile#3 = level_tile_get::xtile#4 init_level_tile_directions::xtile#10 } { level_tile_get::ytile#3 = level_tile_get::ytile#4 } { level_tile_get::return#11 = level_tile_get::return#2 } } ) always clobbers reg byte a
Statement [1026] render_tiles::$0 = render_tiles::tile_left#0 << 2 [ render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_right#0 render_tiles::$0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_right#0 render_tiles::$0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1027] render_tiles::tile_left_pixels#0 = TILES_LEFT + render_tiles::$0 [ render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_right#0 render_tiles::tile_left_pixels#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_right#0 render_tiles::tile_left_pixels#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1028] render_tiles::$2 = render_tiles::tile_right#0 << 2 [ render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_left_pixels#0 render_tiles::$2 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_left_pixels#0 render_tiles::$2 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1029] render_tiles::tile_right_pixels#0 = TILES_RIGHT + render_tiles::$2 [ render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::xcol#0 render_tiles::ytile#0 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1030] render_tiles::$4 = byte1 RENDER_INDEX + render_tiles::xcol#0 [ render_tiles::ytile#0 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::$4 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::ytile#0 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::$4 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1031] render_tiles::$5 = render_tiles::ytile#0 << 1 [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::$4 render_tiles::$5 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::$4 render_tiles::$5 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1033] render_tiles::canvas_offset#0 = ((char *)render_tiles::render_index_xcol#0)[RENDER_OFFSET_CANVAS_HI] w= *((char *)render_tiles::render_index_xcol#0) [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::render_index_xcol#0 render_tiles::canvas_offset#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::render_index_xcol#0 render_tiles::canvas_offset#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a reg byte y
Statement [1034] render_tiles::canvas1#0 = SPRITES_1 + render_tiles::canvas_offset#0 [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::render_index_xcol#0 render_tiles::canvas_offset#0 render_tiles::canvas1#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::render_index_xcol#0 render_tiles::canvas_offset#0 render_tiles::canvas1#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1035] render_tiles::canvas2#0 = SPRITES_2 + render_tiles::canvas_offset#0 [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::render_index_xcol#0 render_tiles::canvas1#0 render_tiles::canvas2#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::render_index_xcol#0 render_tiles::canvas1#0 render_tiles::canvas2#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1036] render_tiles::ypos_inc_offset#0 = ((char *)render_tiles::render_index_xcol#0)[RENDER_OFFSET_YPOS_INC] [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::canvas1#0 render_tiles::canvas2#0 render_tiles::ypos_inc_offset#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::canvas1#0 render_tiles::canvas2#0 render_tiles::ypos_inc_offset#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a reg byte y
Statement [1040] render_tiles::pixels#0 = render_tiles::tile_left_pixels#0[render_tiles::y#2] | render_tiles::tile_right_pixels#0[render_tiles::y#2] [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas1#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 render_tiles::pixels#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas1#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 render_tiles::pixels#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a reg byte y
Statement [1041] *render_tiles::canvas1#2 = render_tiles::pixels#0 [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas1#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 render_tiles::pixels#0 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas1#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 render_tiles::pixels#0 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte y
Statement [1042] *render_tiles::canvas2#2 = render_tiles::pixels#0 [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas1#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas1#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte y
Statement [1043] render_tiles::canvas1#1 = render_tiles::canvas1#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2] [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 render_tiles::canvas1#1 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::canvas2#2 render_tiles::ypos_inc_offset#2 render_tiles::canvas1#1 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Statement [1044] render_tiles::canvas2#1 = render_tiles::canvas2#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2] [ render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::ypos_inc_offset#2 render_tiles::canvas1#1 render_tiles::canvas2#1 ] ( main:62::gameplay_run:104::level_show:633::render_tiles:990 [ pacman_wins pacman_lives level_show::ytile#2 level_show::level#8 level_show::xcol#2 level_show::xtile#2 level_show::count#11 render_tiles::tile_left_pixels#0 render_tiles::tile_right_pixels#0 render_tiles::y#2 render_tiles::ypos_inc_offset#2 render_tiles::canvas1#1 render_tiles::canvas2#1 ] { { level_show::return#0 = level_show::count#12 } { render_tiles::xcol#0 = level_show::xcol#2 } { render_tiles::ytile#0 = level_show::ytile#2 } { render_tiles::tile_left#0 = level_show::tile_left#0 } { render_tiles::tile_right#0 = level_show::tile_right#0 } } ) always clobbers reg byte a
Potential registers zp[1]:228 [ game_logic::ghost_frame_idx#2 game_logic::ghost_frame_idx#0 game_logic::ghost_frame_idx#1 ] : zp[1]:228 , reg byte x , reg byte y ,
Potential registers zp[1]:316 [ game_logic::do_reverse#4 ] : zp[1]:316 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:307 [ game_logic::target_xtile#3 game_logic::target_xtile#2 ] : zp[1]:307 , reg byte x , reg byte y ,
Potential registers zp[1]:230 [ game_logic::target_ytile#3 game_logic::target_ytile#2 ] : zp[1]:230 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:308 [ game_logic::target_xtile1#3 game_logic::target_xtile1#2 ] : zp[1]:308 , reg byte x , reg byte y ,
Potential registers zp[1]:231 [ game_logic::target_ytile1#3 game_logic::target_ytile1#2 ] : zp[1]:231 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:309 [ game_logic::target_xtile2#3 game_logic::target_xtile2#2 ] : zp[1]:309 , reg byte x , reg byte y ,
Potential registers zp[1]:232 [ game_logic::target_ytile2#3 game_logic::target_ytile2#2 ] : zp[1]:232 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:310 [ game_logic::target_xtile3#3 game_logic::target_xtile3#2 ] : zp[1]:310 , reg byte x , reg byte y ,
Potential registers zp[1]:233 [ game_logic::target_ytile3#3 game_logic::target_ytile3#2 ] : zp[1]:233 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:162 [ splash_run::i#2 splash_run::i#1 ] : zp[1]:162 , reg byte x , reg byte y ,
Potential registers zp[1]:158 [ splash_run::msb#10 splash_run::msb#8 splash_run::msb#1 splash_run::msb#2 ] : zp[1]:158 , reg byte x , reg byte y ,
Potential registers zp[1]:160 [ splash_run::i1#2 splash_run::i1#1 ] : zp[1]:160 , reg byte x , reg byte y ,
Potential registers zp[1]:161 [ splash_run::i2#2 splash_run::i2#1 ] : zp[1]:161 , reg byte x , reg byte y ,
Potential registers zp[1]:92 [ gameplay_run::i#2 gameplay_run::i#1 ] : zp[1]:92 , reg byte x , reg byte y ,
Potential registers zp[1]:93 [ gameplay_run::i1#2 gameplay_run::i1#1 ] : zp[1]:93 , reg byte x , reg byte y ,
Potential registers zp[1]:94 [ gameplay_run::i2#2 gameplay_run::i2#1 ] : zp[1]:94 , reg byte x , reg byte y ,
Potential registers zp[1]:95 [ done_run::i#2 done_run::i#1 ] : zp[1]:95 , reg byte x , reg byte y ,
Potential registers zp[1]:99 [ done_run::i1#2 done_run::i1#1 ] : zp[1]:99 , reg byte x , reg byte y ,
Potential registers zp[1]:100 [ done_run::xcol#2 done_run::xcol#1 ] : zp[1]:100 , reg byte x ,
Potential registers zp[2]:87 [ done_run::gfx#4 done_run::gfx#2 done_run::gfx#1 ] : zp[2]:87 ,
Potential registers zp[1]:71 [ done_run::ypos#2 done_run::ypos#1 ] : zp[1]:71 , reg byte x ,
Potential registers zp[1]:211 [ level_tile_directions::xtile#5 level_tile_directions::xtile#1 level_tile_directions::xtile#2 level_tile_directions::xtile#3 level_tile_directions::xtile#4 level_tile_directions::xtile#0 ] : zp[1]:211 , reg byte x , reg byte y ,
Potential registers zp[1]:202 [ level_tile_directions::ytile#5 level_tile_directions::ytile#1 level_tile_directions::ytile#2 level_tile_directions::ytile#3 level_tile_directions::ytile#4 level_tile_directions::ytile#0 ] : zp[1]:202 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:189 [ level_tile_directions::return#2 level_tile_directions::return#0 ] : zp[1]:189 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:206 [ choose_direction::ghost_xtile#4 choose_direction::ghost_xtile#2 choose_direction::ghost_xtile#3 choose_direction::ghost_xtile#0 choose_direction::ghost_xtile#1 ] : zp[1]:206 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:204 [ choose_direction::target_xtile#4 choose_direction::target_xtile#2 choose_direction::target_xtile#3 choose_direction::target_xtile#0 choose_direction::target_xtile#1 ] : zp[1]:204 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:212 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 ] : zp[1]:212 , reg byte x , reg byte y ,
Potential registers zp[1]:207 [ choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 ] : zp[1]:207 , reg byte x , reg byte y ,
Potential registers zp[1]:229 [ choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ] : zp[1]:229 , reg byte x , reg byte y ,
Potential registers zp[1]:205 [ choose_direction::dist_min#6 choose_direction::dist_up#0 ] : zp[1]:205 , reg byte x , reg byte y ,
Potential registers zp[1]:176 [ choose_direction::dist_min#10 choose_direction::dist_min#13 choose_direction::dist_min#14 choose_direction::dist_down#0 ] : zp[1]:176 , reg byte x , reg byte y ,
Potential registers zp[1]:179 [ choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ] : zp[1]:179 , reg byte x , reg byte y ,
Potential registers zp[1]:203 [ choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ] : zp[1]:203 , reg byte x , reg byte y ,
Potential registers zp[2]:174 [ memset::num#5 ] : zp[2]:174 ,
Potential registers zp[2]:371 [ memset::str#6 ] : zp[2]:371 ,
Potential registers zp[2]:128 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:128 ,
Potential registers zp[2]:124 [ merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 ] : zp[2]:124 ,
Potential registers zp[2]:112 [ merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 ] : zp[2]:112 ,
Potential registers zp[2]:97 [ merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 ] : zp[2]:97 ,
Potential registers zp[2]:75 [ merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 ] : zp[2]:75 ,
Potential registers zp[1]:89 [ merge_code::cycle_budget#10 merge_code::cycle_budget#2 merge_code::cycle_budget#3 merge_code::cycle_budget#13 merge_code::cycle_budget#0 merge_code::cycle_budget#1 ] : zp[1]:89 , reg byte x ,
Potential registers zp[2]:66 [ merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 ] : zp[2]:66 ,
Potential registers zp[1]:136 [ init_render_index::x_col#2 init_render_index::x_col#1 ] : zp[1]:136 ,
Potential registers zp[2]:144 [ init_render_index::render_index_xcol#0 init_render_index::render_index#1 ] : zp[2]:144 ,
Potential registers zp[2]:156 [ init_render_index::render_ypos_table#4 ] : zp[2]:156 ,
Potential registers zp[1]:103 [ init_render_index::y_pos#2 init_render_index::y_pos#1 ] : zp[1]:103 ,
Potential registers zp[2]:114 [ init_render_index::render_index_xcol#2 init_render_index::render_index_xcol#7 init_render_index::render_index_xcol#1 ] : zp[2]:114 ,
Potential registers zp[1]:90 [ init_render_index::ypos_inc_offset#4 init_render_index::ypos_inc_offset#7 init_render_index::ypos_inc_offset#8 init_render_index::ypos_inc_offset#2 init_render_index::ypos_inc_offset#3 ] : zp[1]:90 , reg byte x ,
Potential registers zp[1]:130 [ splash_show::xcol#2 splash_show::xcol#1 ] : zp[1]:130 , reg byte x ,
Potential registers zp[2]:118 [ splash_show::splash#4 splash_show::splash#2 splash_show::splash#1 ] : zp[2]:118 ,
Potential registers zp[1]:102 [ splash_show::ypos#2 splash_show::ypos#1 ] : zp[1]:102 , reg byte x ,
Potential registers zp[1]:135 [ init_bobs_restore::bob#2 init_bobs_restore::bob#1 ] : zp[1]:135 , reg byte x ,
Potential registers zp[2]:133 [ init_bobs_restore::bob_restore#5 init_bobs_restore::bob_restore#1 ] : zp[2]:133 ,
Potential registers zp[1]:96 [ init_bobs_restore::i#2 init_bobs_restore::i#1 ] : zp[1]:96 , reg byte x , reg byte y ,
Potential registers zp[1]:68 [ init_sprite_pointers::screen#2 init_sprite_pointers::screen#1 ] : zp[1]:68 , reg byte x , reg byte y ,
Potential registers zp[2]:83 [ init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_1#1 ] : zp[2]:83 ,
Potential registers zp[2]:77 [ init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_2#1 ] : zp[2]:77 ,
Potential registers zp[1]:37 [ init_sprite_pointers::sprite#2 init_sprite_pointers::sprite#1 ] : zp[1]:37 , reg byte x , reg byte y ,
Potential registers zp[2]:131 [ memcpy::src#2 memcpy::src#1 ] : zp[2]:131 ,
Potential registers zp[2]:137 [ memcpy::dst#2 memcpy::dst#1 ] : zp[2]:137 ,
Potential registers zp[1]:101 [ joyfire::return#4 ] : zp[1]:101 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:69 [ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 ] : zp[1]:69 , reg byte x , reg byte y ,
Potential registers zp[2]:85 [ init_level_tile_directions::directions#7 init_level_tile_directions::directions#1 ] : zp[2]:85 ,
Potential registers zp[1]:41 [ init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 ] : zp[1]:41 , reg byte x , reg byte y ,
Potential registers zp[1]:31 [ init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ] : zp[1]:31 , reg byte x , reg byte y ,
Potential registers zp[1]:70 [ level_show::ytile#2 level_show::ytile#1 ] : zp[1]:70 , reg byte x ,
Potential registers zp[2]:79 [ level_show::level#8 level_show::level#1 ] : zp[2]:79 ,
Potential registers zp[1]:40 [ level_show::xcol#2 level_show::xcol#1 ] : zp[1]:40 , reg byte x ,
Potential registers zp[1]:58 [ level_show::xtile#3 level_show::xtile#2 ] : zp[1]:58 , reg byte x ,
Potential registers zp[2]:33 [ level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 ] : zp[2]:33 ,
Potential registers zp[1]:64 [ render::ypos#2 render::ypos#0 render::ypos#1 ] : zp[1]:64 , reg byte x ,
Potential registers zp[1]:61 [ render::xcol#2 render::xcol#0 render::xcol#1 ] : zp[1]:61 , reg byte x , reg byte y ,
Potential registers zp[1]:65 [ render::pixels#4 render::pixels#0 render::pixels#1 ] : zp[1]:65 , reg byte x ,
Potential registers zp[1]:9 [ render::i#2 render::i#1 ] : zp[1]:9 , reg byte x , reg byte y ,
Potential registers zp[2]:11 [ render::canvas1#2 render::canvas1#0 render::canvas1#1 ] : zp[2]:11 ,
Potential registers zp[1]:10 [ render::ypos_inc_offset#2 render::ypos_inc_offset#0 render::ypos_inc_offset#1 ] : zp[1]:10 , reg byte x , reg byte y ,
Potential registers zp[2]:13 [ render::canvas2#2 render::canvas2#0 render::canvas2#1 ] : zp[2]:13 ,
Potential registers zp[1]:30 [ level_tile_get::xtile#4 level_tile_get::xtile#0 level_tile_get::xtile#1 level_tile_get::xtile#2 level_tile_get::xtile#3 ] : zp[1]:30 , reg byte x , reg byte y ,
Potential registers zp[1]:29 [ level_tile_get::ytile#4 level_tile_get::ytile#0 level_tile_get::ytile#1 level_tile_get::ytile#2 level_tile_get::ytile#3 ] : zp[1]:29 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:20 [ level_tile_get::return#2 level_tile_get::return#0 ] : zp[1]:20 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:2 [ render_tiles::y#2 render_tiles::y#1 ] : zp[1]:2 , reg byte x ,
Potential registers zp[2]:7 [ render_tiles::canvas1#2 render_tiles::canvas1#0 render_tiles::canvas1#1 ] : zp[2]:7 ,
Potential registers zp[2]:5 [ render_tiles::canvas2#2 render_tiles::canvas2#0 render_tiles::canvas2#1 ] : zp[2]:5 ,
Potential registers zp[1]:3 [ render_tiles::ypos_inc_offset#2 render_tiles::ypos_inc_offset#0 render_tiles::ypos_inc_offset#1 ] : zp[1]:3 , reg byte x ,
Potential registers zp[1]:370 [ pacman_ch1_enabled ] : zp[1]:370 ,
Potential registers zp[1]:362 [ pacman_ch1_idx ] : zp[1]:362 ,
Potential registers zp[2]:150 [ logic_tile_ptr ] : zp[2]:150 ,
Potential registers zp[1]:152 [ logic_tile_xcol ] : zp[1]:152 ,
Potential registers zp[1]:153 [ logic_tile_yfine ] : zp[1]:153 ,
Potential registers zp[1]:295 [ logic_tile_left_idx ] : zp[1]:295 ,
Potential registers zp[1]:296 [ logic_tile_right_idx ] : zp[1]:296 ,
Potential registers zp[2]:297 [ left_render_index_xcol ] : zp[2]:297 ,
Potential registers zp[2]:299 [ left_canvas ] : zp[2]:299 ,
Potential registers zp[1]:301 [ left_ypos_inc_offset ] : zp[1]:301 ,
Potential registers zp[2]:302 [ rigt_render_index_xcol ] : zp[2]:302 ,
Potential registers zp[2]:304 [ rigt_canvas ] : zp[2]:304 ,
Potential registers zp[1]:306 [ rigt_ypos_inc_offset ] : zp[1]:306 ,
Potential registers zp[1]:172 [ canvas_base_hi ] : zp[1]:172 ,
Potential registers zp[1]:173 [ bobs_restore_base ] : zp[1]:173 ,
Potential registers zp[1]:159 [ top_sprites_color ] : zp[1]:159 ,
Potential registers zp[1]:215 [ top_sprites_mc ] : zp[1]:215 ,
Potential registers zp[1]:146 [ side_sprites_color ] : zp[1]:146 ,
Potential registers zp[1]:147 [ side_sprites_mc ] : zp[1]:147 ,
Potential registers zp[1]:148 [ bottom_sprites_color ] : zp[1]:148 ,
Potential registers zp[1]:149 [ bottom_sprites_mc ] : zp[1]:149 ,
Potential registers zp[2]:314 [ pill_count ] : zp[2]:314 ,
Potential registers zp[1]:163 [ pacman_wins ] : zp[1]:163 ,
Potential registers zp[1]:180 [ pacman_lives ] : zp[1]:180 ,
Potential registers zp[1]:123 [ music_play_next ] : zp[1]:123 ,
Potential registers zp[1]:218 [ phase ] : zp[1]:218 ,
Potential registers zp[1]:369 [ frame ] : zp[1]:369 ,
Potential registers zp[1]:364 [ anim_frame_idx ] : zp[1]:364 ,
Potential registers zp[1]:226 [ pacman_xfine ] : zp[1]:226 ,
Potential registers zp[1]:227 [ pacman_yfine ] : zp[1]:227 ,
Potential registers zp[1]:208 [ pacman_direction ] : zp[1]:208 ,
Potential registers zp[1]:188 [ pacman_substep ] : zp[1]:188 ,
Potential registers zp[1]:363 [ ghosts_mode ] : zp[1]:363 ,
Potential registers zp[1]:187 [ ghosts_mode_count ] : zp[1]:187 ,
Potential registers zp[1]:216 [ ghost1_xfine ] : zp[1]:216 ,
Potential registers zp[1]:217 [ ghost1_yfine ] : zp[1]:217 ,
Potential registers zp[1]:209 [ ghost1_direction ] : zp[1]:209 ,
Potential registers zp[1]:190 [ ghost1_substep ] : zp[1]:190 ,
Potential registers zp[1]:365 [ ghost1_reverse ] : zp[1]:365 ,
Potential registers zp[1]:183 [ ghost1_respawn ] : zp[1]:183 ,
Potential registers zp[1]:219 [ ghost2_xfine ] : zp[1]:219 ,
Potential registers zp[1]:220 [ ghost2_yfine ] : zp[1]:220 ,
Potential registers zp[1]:210 [ ghost2_direction ] : zp[1]:210 ,
Potential registers zp[1]:191 [ ghost2_substep ] : zp[1]:191 ,
Potential registers zp[1]:366 [ ghost2_reverse ] : zp[1]:366 ,
Potential registers zp[1]:184 [ ghost2_respawn ] : zp[1]:184 ,
Potential registers zp[1]:221 [ ghost3_xfine ] : zp[1]:221 ,
Potential registers zp[1]:223 [ ghost3_yfine ] : zp[1]:223 ,
Potential registers zp[1]:213 [ ghost3_direction ] : zp[1]:213 ,
Potential registers zp[1]:192 [ ghost3_substep ] : zp[1]:192 ,
Potential registers zp[1]:367 [ ghost3_reverse ] : zp[1]:367 ,
Potential registers zp[1]:185 [ ghost3_respawn ] : zp[1]:185 ,
Potential registers zp[1]:224 [ ghost4_xfine ] : zp[1]:224 ,
Potential registers zp[1]:225 [ ghost4_yfine ] : zp[1]:225 ,
Potential registers zp[1]:214 [ ghost4_direction ] : zp[1]:214 ,
Potential registers zp[1]:193 [ ghost4_substep ] : zp[1]:193 ,
Potential registers zp[1]:368 [ ghost4_reverse ] : zp[1]:368 ,
Potential registers zp[1]:186 [ ghost4_respawn ] : zp[1]:186 ,
Potential registers zp[1]:352 [ game_logic_substep ] : zp[1]:352 ,
Potential registers zp[1]:222 [ game_playable ] : zp[1]:222 ,
Potential registers zp[1]:349 [ irq_screen_top::$1 ] : zp[1]:349 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:350 [ irq_screen_top::$2 ] : zp[1]:350 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:234 [ game_logic::$2 ] : zp[1]:234 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:235 [ game_logic::$3 ] : zp[1]:235 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:236 [ game_logic::$14 ] : zp[1]:236 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:237 [ game_logic::$15 ] : zp[1]:237 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:338 [ game_logic::pacman_bob_xfine#0 ] : zp[1]:338 , reg byte x , reg byte y ,
Potential registers zp[1]:238 [ game_logic::$17 ] : zp[1]:238 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:239 [ game_logic::$18 ] : zp[1]:239 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:317 [ game_logic::$19 ] : zp[1]:317 , reg byte x , reg byte y ,
Potential registers zp[1]:240 [ game_logic::$20 ] : zp[1]:240 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:241 [ game_logic::$21 ] : zp[1]:241 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:339 [ game_logic::ghost1_bob_xfine#0 ] : zp[1]:339 , reg byte x , reg byte y ,
Potential registers zp[1]:242 [ game_logic::$25 ] : zp[1]:242 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:243 [ game_logic::$26 ] : zp[1]:243 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:318 [ game_logic::$27 ] : zp[1]:318 , reg byte x , reg byte y ,
Potential registers zp[1]:244 [ game_logic::$28 ] : zp[1]:244 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:245 [ game_logic::$29 ] : zp[1]:245 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:340 [ game_logic::ghost2_bob_xfine#0 ] : zp[1]:340 , reg byte x , reg byte y ,
Potential registers zp[1]:246 [ game_logic::$31 ] : zp[1]:246 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:247 [ game_logic::$32 ] : zp[1]:247 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:319 [ game_logic::$33 ] : zp[1]:319 , reg byte x , reg byte y ,
Potential registers zp[1]:248 [ game_logic::$34 ] : zp[1]:248 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:249 [ game_logic::$35 ] : zp[1]:249 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:341 [ game_logic::ghost3_bob_xfine#0 ] : zp[1]:341 , reg byte x , reg byte y ,
Potential registers zp[1]:250 [ game_logic::$37 ] : zp[1]:250 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:251 [ game_logic::$38 ] : zp[1]:251 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:320 [ game_logic::$39 ] : zp[1]:320 , reg byte x , reg byte y ,
Potential registers zp[1]:256 [ game_logic::$40 ] : zp[1]:256 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:257 [ game_logic::$41 ] : zp[1]:257 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:342 [ game_logic::ghost4_bob_xfine#0 ] : zp[1]:342 , reg byte x , reg byte y ,
Potential registers zp[1]:258 [ game_logic::$43 ] : zp[1]:258 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:259 [ game_logic::$44 ] : zp[1]:259 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:321 [ game_logic::$45 ] : zp[1]:321 , reg byte x , reg byte y ,
Potential registers zp[1]:260 [ game_logic::$46 ] : zp[1]:260 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:261 [ game_logic::$47 ] : zp[1]:261 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:337 [ game_logic::pacman_xtile#0 ] : zp[1]:337 , reg byte x , reg byte y ,
Potential registers zp[1]:262 [ game_logic::pacman_ytile#0 ] : zp[1]:262 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:353 [ game_logic::$210 ] : zp[1]:353 , reg byte x , reg byte y ,
Potential registers zp[2]:343 [ game_logic::ytiles#0 ] : zp[2]:343 ,
Potential registers zp[1]:311 [ game_logic::tile_id#0 ] : zp[1]:311 , reg byte x , reg byte y ,
Potential registers zp[1]:263 [ game_logic::$65 ] : zp[1]:263 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:264 [ game_logic::$66 ] : zp[1]:264 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:265 [ game_logic::$67 ] : zp[2]:265 ,
Potential registers zp[1]:267 [ game_logic::$68 ] : zp[1]:267 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:322 [ game_logic::$75 ] : zp[1]:322 , reg byte x , reg byte y ,
Potential registers zp[1]:323 [ game_logic::$77 ] : zp[1]:323 , reg byte x , reg byte y ,
Potential registers zp[1]:324 [ game_logic::$80 ] : zp[1]:324 , reg byte x , reg byte y ,
Potential registers zp[1]:325 [ game_logic::$82 ] : zp[1]:325 , reg byte x , reg byte y ,
Potential registers zp[1]:326 [ game_logic::$85 ] : zp[1]:326 , reg byte x , reg byte y ,
Potential registers zp[1]:327 [ game_logic::$87 ] : zp[1]:327 , reg byte x , reg byte y ,
Potential registers zp[1]:328 [ game_logic::$90 ] : zp[1]:328 , reg byte x , reg byte y ,
Potential registers zp[1]:329 [ game_logic::$92 ] : zp[1]:329 , reg byte x , reg byte y ,
Potential registers zp[1]:268 [ game_logic::$69 ] : zp[1]:268 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:269 [ game_logic::$70 ] : zp[1]:269 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:270 [ game_logic::$71 ] : zp[2]:270 ,
Potential registers zp[1]:272 [ game_logic::$72 ] : zp[1]:272 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:330 [ game_logic::$220 ] : zp[1]:330 , reg byte x , reg byte y ,
Potential registers zp[1]:354 [ game_logic::ghost4_xtile#0 ] : zp[1]:354 , reg byte x , reg byte y ,
Potential registers zp[1]:355 [ game_logic::ghost4_ytile#0 ] : zp[1]:355 , reg byte x , reg byte y ,
Potential registers zp[1]:273 [ level_tile_directions::return#3 ] : zp[1]:273 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:274 [ game_logic::open_directions#0 ] : zp[1]:274 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:345 [ game_logic::open_directions#1 ] : zp[1]:345 , reg byte x , reg byte y ,
Potential registers zp[1]:275 [ choose_direction::return#0 ] : zp[1]:275 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:276 [ game_logic::$119 ] : zp[1]:276 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:331 [ game_logic::$223 ] : zp[1]:331 , reg byte x , reg byte y ,
Potential registers zp[1]:356 [ game_logic::ghost3_xtile#0 ] : zp[1]:356 , reg byte x , reg byte y ,
Potential registers zp[1]:357 [ game_logic::ghost3_ytile#0 ] : zp[1]:357 , reg byte x , reg byte y ,
Potential registers zp[1]:277 [ level_tile_directions::return#10 ] : zp[1]:277 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:278 [ game_logic::open_directions1#0 ] : zp[1]:278 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:346 [ game_logic::open_directions1#1 ] : zp[1]:346 , reg byte x , reg byte y ,
Potential registers zp[1]:279 [ choose_direction::return#1 ] : zp[1]:279 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:280 [ game_logic::$140 ] : zp[1]:280 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:332 [ game_logic::$226 ] : zp[1]:332 , reg byte x , reg byte y ,
Potential registers zp[1]:358 [ game_logic::ghost2_xtile#0 ] : zp[1]:358 , reg byte x , reg byte y ,
Potential registers zp[1]:359 [ game_logic::ghost2_ytile#0 ] : zp[1]:359 , reg byte x , reg byte y ,
Potential registers zp[1]:281 [ level_tile_directions::return#11 ] : zp[1]:281 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:282 [ game_logic::open_directions2#0 ] : zp[1]:282 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:347 [ game_logic::open_directions2#1 ] : zp[1]:347 , reg byte x , reg byte y ,
Potential registers zp[1]:283 [ choose_direction::return#2 ] : zp[1]:283 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:284 [ game_logic::$161 ] : zp[1]:284 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:333 [ game_logic::$229 ] : zp[1]:333 , reg byte x , reg byte y ,
Potential registers zp[1]:360 [ game_logic::ghost1_xtile#0 ] : zp[1]:360 , reg byte x , reg byte y ,
Potential registers zp[1]:361 [ game_logic::ghost1_ytile#0 ] : zp[1]:361 , reg byte x , reg byte y ,
Potential registers zp[1]:285 [ level_tile_directions::return#12 ] : zp[1]:285 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:286 [ game_logic::open_directions3#0 ] : zp[1]:286 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:348 [ game_logic::open_directions3#1 ] : zp[1]:348 , reg byte x , reg byte y ,
Potential registers zp[1]:287 [ choose_direction::return#3 ] : zp[1]:287 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:288 [ game_logic::$182 ] : zp[1]:288 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:334 [ game_logic::$232 ] : zp[1]:334 , reg byte x , reg byte y ,
Potential registers zp[1]:335 [ game_logic::pacman_xtile1#0 ] : zp[1]:335 , reg byte x , reg byte y ,
Potential registers zp[1]:336 [ game_logic::pacman_ytile1#0 ] : zp[1]:336 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:289 [ level_tile_directions::return#13 ] : zp[1]:289 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:351 [ game_logic::open_directions4#0 ] : zp[1]:351 , reg byte x , reg byte y ,
Potential registers zp[1]:290 [ game_logic::$199 ] : zp[1]:290 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:291 [ game_logic::$200 ] : zp[1]:291 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:312 [ game_logic::joy_directions#0 ] : zp[1]:312 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:292 [ game_logic::$204 ] : zp[1]:292 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:313 [ game_logic::new_direction#0 ] : zp[1]:313 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:181 [ byteboozer_decrunch::crunched ] : zp[2]:181 ,
Potential registers zp[1]:139 [ joyfire::return#1 ] : zp[1]:139 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:140 [ splash_run::$30 ] : zp[1]:140 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:171 [ splash_run::$34 ] : zp[1]:171 , reg byte x , reg byte y ,
Potential registers zp[2]:177 [ splash_run::xpos#0 ] : zp[2]:177 ,
Potential registers zp[1]:164 [ splash_run::$25 ] : zp[1]:164 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:165 [ level_show::return#0 ] : zp[2]:165 ,
Potential registers zp[2]:167 [ gameplay_run::$4 ] : zp[2]:167 ,
Potential registers zp[1]:81 [ joyfire::return#0 ] : zp[1]:81 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:82 [ done_run::$8 ] : zp[1]:82 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:91 [ done_run::pixels#0 ] : zp[1]:91 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:194 [ level_tile_directions::$5 ] : zp[1]:194 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:195 [ level_tile_directions::ytiles#0 ] : zp[2]:195 ,
Potential registers zp[1]:294 [ choose_direction::xdiff#0 ] : zp[1]:294 , reg byte x , reg byte y ,
Potential registers zp[1]:293 [ choose_direction::ydiff#0 ] : zp[1]:293 , reg byte x , reg byte y ,
Potential registers zp[1]:197 [ choose_direction::$2 ] : zp[1]:197 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:198 [ choose_direction::$4 ] : zp[1]:198 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:199 [ choose_direction::$6 ] : zp[1]:199 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:200 [ choose_direction::$8 ] : zp[1]:200 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:201 [ choose_direction::dist_right#0 ] : zp[1]:201 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:169 [ memset::end#0 ] : zp[2]:169 ,
Potential registers zp[2]:142 [ merge_code::raster_code#1 ] : zp[2]:142 ,
Potential registers zp[1]:127 [ merge_code::logic_cycles#0 ] : zp[1]:127 , reg byte x ,
Potential registers zp[1]:120 [ merge_code::$5 ] : zp[1]:120 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:116 [ merge_code::dest_code#2 ] : zp[2]:116 ,
Potential registers zp[1]:141 [ init_render_index::$9 ] : zp[1]:141 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:154 [ init_render_index::canvas_xcol#0 ] : zp[2]:154 ,
Potential registers zp[2]:104 [ init_render_index::$11 ] : zp[2]:104 ,
Potential registers zp[2]:106 [ init_render_index::$10 ] : zp[2]:106 ,
Potential registers zp[2]:108 [ init_render_index::$12 ] : zp[2]:108 ,
Potential registers zp[2]:121 [ init_render_index::canvas#0 ] : zp[2]:121 ,
Potential registers zp[1]:110 [ init_render_index::$5 ] : zp[1]:110 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:111 [ init_render_index::$6 ] : zp[1]:111 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:126 [ splash_show::pixels#0 ] : zp[1]:126 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:42 [ init_sprite_pointers::$2 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:53 [ init_sprite_pointers::sprite_id#0 ] : zp[1]:53 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:43 [ joyfire::$0 ] : zp[1]:43 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:44 [ level_tile_get::return#3 ] : zp[1]:44 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:45 [ init_level_tile_directions::$3 ] : zp[1]:45 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:46 [ level_tile_get::return#4 ] : zp[1]:46 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:47 [ init_level_tile_directions::$7 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:48 [ level_tile_get::return#10 ] : zp[1]:48 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:49 [ init_level_tile_directions::$11 ] : zp[1]:49 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:50 [ level_tile_get::return#11 ] : zp[1]:50 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:51 [ init_level_tile_directions::$15 ] : zp[1]:51 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:72 [ level_show::tile_left#0 ] : zp[1]:72 , reg byte x , reg byte y ,
Potential registers zp[1]:62 [ level_show::xtile#1 ] : zp[1]:62 , reg byte x , reg byte y ,
Potential registers zp[1]:63 [ level_show::tile_right#0 ] : zp[1]:63 , reg byte x , reg byte y ,
Potential registers zp[1]:56 [ render_tiles::xcol#0 ] : zp[1]:56 , reg byte x , reg byte y ,
Potential registers zp[1]:57 [ render_tiles::ytile#0 ] : zp[1]:57 , reg byte x , reg byte y ,
Potential registers zp[1]:35 [ render_tiles::tile_left#0 ] : zp[1]:35 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:36 [ render_tiles::tile_right#0 ] : zp[1]:36 , reg byte x , reg byte y ,
Potential registers zp[1]:59 [ render::ytile#0 ] : zp[1]:59 , reg byte x , reg byte y ,
Potential registers zp[1]:60 [ render::$1 ] : zp[1]:60 , reg byte x , reg byte y ,
Potential registers zp[1]:52 [ render::$2 ] : zp[1]:52 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:73 [ render::render_index_xcol#0 ] : zp[2]:73 ,
Potential registers zp[2]:54 [ render::canvas_offset#0 ] : zp[2]:54 ,
Potential registers zp[1]:19 [ render::ypix#0 ] : zp[1]:19 , reg byte x , reg byte y ,
Potential registers zp[1]:21 [ level_tile_get::$5 ] : zp[1]:21 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:22 [ level_tile_get::ytiles#0 ] : zp[2]:22 ,
Potential registers zp[1]:24 [ render_tiles::$0 ] : zp[1]:24 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:17 [ render_tiles::tile_left_pixels#0 ] : zp[2]:17 ,
Potential registers zp[1]:25 [ render_tiles::$2 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:15 [ render_tiles::tile_right_pixels#0 ] : zp[2]:15 ,
Potential registers zp[1]:32 [ render_tiles::$4 ] : zp[1]:32 , reg byte x , reg byte y ,
Potential registers zp[1]:26 [ render_tiles::$5 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[2]:38 [ render_tiles::render_index_xcol#0 ] : zp[2]:38 ,
Potential registers zp[2]:27 [ render_tiles::canvas_offset#0 ] : zp[2]:27 ,
Potential registers zp[1]:4 [ render_tiles::pixels#0 ] : zp[1]:4 , reg byte a , reg byte x ,
REGISTER UPLIFT SCOPES
Uplift Scope [render_tiles] 2,625,000,000,002.62: zp[1]:2 [ render_tiles::y#2 render_tiles::y#1 ] 1,571,642,857,146.57: zp[1]:3 [ render_tiles::ypos_inc_offset#2 render_tiles::ypos_inc_offset#0 render_tiles::ypos_inc_offset#1 ] 1,500,000,000,001.5: zp[1]:4 [ render_tiles::pixels#0 ] 1,166,783,333,335.67: zp[2]:5 [ render_tiles::canvas2#2 render_tiles::canvas2#0 render_tiles::canvas2#1 ] 1,100,086,666,668.63: zp[2]:7 [ render_tiles::canvas1#2 render_tiles::canvas1#0 render_tiles::canvas1#1 ] 58,829,411,764.82: zp[2]:15 [ render_tiles::tile_right_pixels#0 ] 52,636,842,105.37: zp[2]:17 [ render_tiles::tile_left_pixels#0 ] 200,000,002: zp[1]:24 [ render_tiles::$0 ] 200,000,002: zp[1]:25 [ render_tiles::$2 ] 200,000,002: zp[1]:26 [ render_tiles::$5 ] 150,000,001.5: zp[2]:27 [ render_tiles::canvas_offset#0 ] 100,000,001: zp[1]:32 [ render_tiles::$4 ] 55,000,001: zp[1]:35 [ render_tiles::tile_left#0 ] 36,666,667.33: zp[1]:36 [ render_tiles::tile_right#0 ] 25,000,000.25: zp[2]:38 [ render_tiles::render_index_xcol#0 ] 13,750,000.25: zp[1]:56 [ render_tiles::xcol#0 ] 13,750,000.25: zp[1]:57 [ render_tiles::ytile#0 ]
Uplift Scope [render] 260,000,000,002.6: zp[1]:9 [ render::i#2 render::i#1 ] 200,012,500,003.25: zp[1]:10 [ render::ypos_inc_offset#2 render::ypos_inc_offset#0 render::ypos_inc_offset#1 ] 150,015,000,003: zp[2]:11 [ render::canvas1#2 render::canvas1#0 render::canvas1#1 ] 116,678,333,335.67: zp[2]:13 [ render::canvas2#2 render::canvas2#0 render::canvas2#1 ] 14,287,142,857.43: zp[1]:19 [ render::ypix#0 ] 20,000,002: zp[1]:52 [ render::$2 ] 15,000,001.5: zp[2]:54 [ render::canvas_offset#0 ] 10,000,001: zp[1]:59 [ render::ytile#0 ] 10,000,001: zp[1]:60 [ render::$1 ] 6,283,336.17: zp[1]:61 [ render::xcol#2 render::xcol#0 render::xcol#1 ] 3,444,446.89: zp[1]:64 [ render::ypos#2 render::ypos#0 render::ypos#1 ] 3,441,180.71: zp[1]:65 [ render::pixels#4 render::pixels#0 render::pixels#1 ] 2,500,000.25: zp[2]:73 [ render::render_index_xcol#0 ]
Uplift Scope [level_tile_get] 223,333,336.17: zp[1]:20 [ level_tile_get::return#2 level_tile_get::return#0 ] 200,000,002: zp[1]:21 [ level_tile_get::$5 ] 200,000,002: zp[2]:22 [ level_tile_get::ytiles#0 ] 140,000,008: zp[1]:29 [ level_tile_get::ytile#4 level_tile_get::ytile#0 level_tile_get::ytile#1 level_tile_get::ytile#2 level_tile_get::ytile#3 ] 108,000,007.2: zp[1]:30 [ level_tile_get::xtile#4 level_tile_get::xtile#0 level_tile_get::xtile#1 level_tile_get::xtile#2 level_tile_get::xtile#3 ] 20,000,002: zp[1]:44 [ level_tile_get::return#3 ] 20,000,002: zp[1]:46 [ level_tile_get::return#4 ] 20,000,002: zp[1]:48 [ level_tile_get::return#10 ] 20,000,002: zp[1]:50 [ level_tile_get::return#11 ]
Uplift Scope [init_level_tile_directions] 104,285,724.71: zp[1]:31 [ init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ] 22,285,716.51: zp[1]:41 [ init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 ] 20,000,002: zp[1]:45 [ init_level_tile_directions::$3 ] 20,000,002: zp[1]:47 [ init_level_tile_directions::$7 ] 20,000,002: zp[1]:49 [ init_level_tile_directions::$11 ] 20,000,002: zp[1]:51 [ init_level_tile_directions::$15 ] 3,102,566.28: zp[1]:69 [ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 ] 1,315,790.55: zp[2]:85 [ init_level_tile_directions::directions#7 init_level_tile_directions::directions#1 ]
Uplift Scope [level_show] 59,357,399.75: zp[2]:33 [ level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 ] 22,352,943.41: zp[1]:40 [ level_show::xcol#2 level_show::xcol#1 ] 12,000,001.2: zp[1]:58 [ level_show::xtile#3 level_show::xtile#2 ] 6,000,000.6: zp[1]:62 [ level_show::xtile#1 ] 3,750,000.38: zp[1]:63 [ level_show::tile_right#0 ] 2,619,049.81: zp[1]:70 [ level_show::ytile#2 level_show::ytile#1 ] 2,500,000.25: zp[1]:72 [ level_show::tile_left#0 ] 2,100,001.2: zp[2]:79 [ level_show::level#8 level_show::level#1 ] 2,002: zp[2]:165 [ level_show::return#0 ]
Uplift Scope [init_sprite_pointers] 30,000,003: zp[1]:37 [ init_sprite_pointers::sprite#2 init_sprite_pointers::sprite#1 ] 20,000,002: zp[1]:42 [ init_sprite_pointers::$2 ] 15,000,001.5: zp[1]:53 [ init_sprite_pointers::sprite_id#0 ] 3,181,820.55: zp[1]:68 [ init_sprite_pointers::screen#2 init_sprite_pointers::screen#1 ] 2,200,001.3: zp[2]:77 [ init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_2#1 ] 2,000,001: zp[2]:83 [ init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_1#1 ]
Uplift Scope [joyfire] 20,000,002: zp[1]:43 [ joyfire::$0 ] 2,000,002: zp[1]:81 [ joyfire::return#0 ] 252,500.5: zp[1]:101 [ joyfire::return#4 ] 20,002: zp[1]:139 [ joyfire::return#1 ]
Uplift Scope [done_run] 2,500,002.5: zp[1]:71 [ done_run::ypos#2 done_run::ypos#1 ] 2,000,002: zp[1]:82 [ done_run::$8 ] 1,233,335.92: zp[2]:87 [ done_run::gfx#4 done_run::gfx#2 done_run::gfx#1 ] 500,000.5: zp[1]:91 [ done_run::pixels#0 ] 333,336.67: zp[1]:95 [ done_run::i#2 done_run::i#1 ] 320,003.2: zp[1]:99 [ done_run::i1#2 done_run::i1#1 ] 318,184.18: zp[1]:100 [ done_run::xcol#2 done_run::xcol#1 ]
Uplift Scope [merge_code] 3,250,005.5: zp[2]:66 [ merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 ] 2,293,023.77: zp[2]:75 [ merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 ] 749,611.63: zp[1]:89 [ merge_code::cycle_budget#10 merge_code::cycle_budget#2 merge_code::cycle_budget#3 merge_code::cycle_budget#13 merge_code::cycle_budget#0 merge_code::cycle_budget#1 ] 325,005.5: zp[2]:97 [ merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 ] 178,339.17: zp[2]:112 [ merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 ] 150,001.5: zp[2]:116 [ merge_code::dest_code#2 ] 100,001: zp[1]:120 [ merge_code::$5 ] 61,432.14: zp[2]:124 [ merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 ] 41,667.08: zp[1]:127 [ merge_code::logic_cycles#0 ] 15,001.5: zp[2]:142 [ merge_code::raster_code#1 ]
Uplift Scope [init_render_index] 530,687.43: zp[1]:90 [ init_render_index::ypos_inc_offset#4 init_render_index::ypos_inc_offset#7 init_render_index::ypos_inc_offset#8 init_render_index::ypos_inc_offset#2 init_render_index::ypos_inc_offset#3 ] 218,752.19: zp[1]:103 [ init_render_index::y_pos#2 init_render_index::y_pos#1 ] 200,002: zp[2]:104 [ init_render_index::$11 ] 200,002: zp[2]:106 [ init_render_index::$10 ] 200,002: zp[2]:108 [ init_render_index::$12 ] 200,002: zp[1]:110 [ init_render_index::$5 ] 200,002: zp[1]:111 [ init_render_index::$6 ] 154,003.4: zp[2]:114 [ init_render_index::render_index_xcol#2 init_render_index::render_index_xcol#7 init_render_index::render_index_xcol#1 ] 100,001: zp[2]:121 [ init_render_index::canvas#0 ] 21,925.27: zp[1]:136 [ init_render_index::x_col#2 init_render_index::x_col#1 ] 20,002: zp[1]:141 [ init_render_index::$9 ] 11,201.12: zp[2]:144 [ init_render_index::render_index_xcol#0 init_render_index::render_index#1 ] 5,789.58: zp[2]:154 [ init_render_index::canvas_xcol#0 ] 4,761.95: zp[2]:156 [ init_render_index::render_ypos_table#4 ]
Uplift Scope [gameplay_run] 333,336.67: zp[1]:92 [ gameplay_run::i#2 gameplay_run::i#1 ] 333,336.67: zp[1]:93 [ gameplay_run::i1#2 gameplay_run::i1#1 ] 333,336.67: zp[1]:94 [ gameplay_run::i2#2 gameplay_run::i2#1 ] 2,002: zp[2]:167 [ gameplay_run::$4 ]
Uplift Scope [splash_show] 250,002.5: zp[1]:102 [ splash_show::ypos#2 splash_show::ypos#1 ] 123,335.92: zp[2]:118 [ splash_show::splash#4 splash_show::splash#2 splash_show::splash#1 ] 50,000.5: zp[1]:126 [ splash_show::pixels#0 ] 31,820.55: zp[1]:130 [ splash_show::xcol#2 splash_show::xcol#1 ]
Uplift Scope [init_bobs_restore] 333,336.67: zp[1]:96 [ init_bobs_restore::i#2 init_bobs_restore::i#1 ] 26,001.7: zp[2]:133 [ init_bobs_restore::bob_restore#5 init_bobs_restore::bob_restore#1 ] 22,729.55: zp[1]:135 [ init_bobs_restore::bob#2 init_bobs_restore::bob#1 ]
Uplift Scope [] 69,506.88: zp[1]:123 [ music_play_next ] 11,040: zp[1]:146 [ side_sprites_color ] 11,040: zp[1]:147 [ side_sprites_mc ] 11,040: zp[1]:148 [ bottom_sprites_color ] 11,040: zp[1]:149 [ bottom_sprites_mc ] 10,250: zp[2]:150 [ logic_tile_ptr ] 10,250: zp[1]:152 [ logic_tile_xcol ] 10,250: zp[1]:153 [ logic_tile_yfine ] 3,403.67: zp[1]:159 [ top_sprites_color ] 2,040.32: zp[1]:163 [ pacman_wins ] 1,070: zp[1]:172 [ canvas_base_hi ] 1,070: zp[1]:173 [ bobs_restore_base ] 656.44: zp[1]:180 [ pacman_lives ] 271.84: zp[1]:183 [ ghost1_respawn ] 264.68: zp[1]:184 [ ghost2_respawn ] 257.9: zp[1]:185 [ ghost3_respawn ] 251.45: zp[1]:186 [ ghost4_respawn ] 234.93: zp[1]:187 [ ghosts_mode_count ] 233.4: zp[1]:188 [ pacman_substep ] 223.51: zp[1]:190 [ ghost1_substep ] 218.65: zp[1]:191 [ ghost2_substep ] 214: zp[1]:192 [ ghost3_substep ] 209.54: zp[1]:193 [ ghost4_substep ] 132.92: zp[1]:208 [ pacman_direction ] 122.24: zp[1]:209 [ ghost1_direction ] 110.28: zp[1]:210 [ ghost2_direction ] 100.46: zp[1]:213 [ ghost3_direction ] 92.24: zp[1]:214 [ ghost4_direction ] 92: zp[1]:215 [ top_sprites_mc ] 84.55: zp[1]:216 [ ghost1_xfine ] 82.13: zp[1]:217 [ ghost1_yfine ] 78.04: zp[1]:218 [ phase ] 76.29: zp[1]:219 [ ghost2_xfine ] 74.28: zp[1]:220 [ ghost2_yfine ] 69.49: zp[1]:221 [ ghost3_xfine ] 69.48: zp[1]:222 [ game_playable ] 67.8: zp[1]:223 [ ghost3_yfine ] 63.81: zp[1]:224 [ ghost4_xfine ] 62.36: zp[1]:225 [ ghost4_yfine ] 47.72: zp[1]:226 [ pacman_xfine ] 46.22: zp[1]:227 [ pacman_yfine ] 20: zp[1]:295 [ logic_tile_left_idx ] 20: zp[1]:296 [ logic_tile_right_idx ] 20: zp[2]:297 [ left_render_index_xcol ] 20: zp[2]:299 [ left_canvas ] 20: zp[1]:301 [ left_ypos_inc_offset ] 20: zp[2]:302 [ rigt_render_index_xcol ] 20: zp[2]:304 [ rigt_canvas ] 20: zp[1]:306 [ rigt_ypos_inc_offset ] 14.19: zp[2]:314 [ pill_count ] 2.95: zp[1]:352 [ game_logic_substep ] 1.94: zp[1]:362 [ pacman_ch1_idx ] 1.1: zp[1]:363 [ ghosts_mode ] 0.9: zp[1]:364 [ anim_frame_idx ] 0.73: zp[1]:365 [ ghost1_reverse ] 0.71: zp[1]:366 [ ghost2_reverse ] 0.7: zp[1]:367 [ ghost3_reverse ] 0.69: zp[1]:368 [ ghost4_reverse ] 0.5: zp[1]:369 [ frame ] 0.08: zp[1]:370 [ pacman_ch1_enabled ]
Uplift Scope [memcpy] 30,003: zp[2]:131 [ memcpy::src#2 memcpy::src#1 ] 20,002: zp[2]:137 [ memcpy::dst#2 memcpy::dst#1 ]
Uplift Scope [memset] 35,672.33: zp[2]:128 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:169 [ memset::end#0 ] 1,001: zp[2]:174 [ memset::num#5 ] 0: zp[2]:371 [ memset::str#6 ]
Uplift Scope [splash_run] 20,002: zp[1]:140 [ splash_run::$30 ] 4,679.75: zp[1]:158 [ splash_run::msb#10 splash_run::msb#8 splash_run::msb#1 splash_run::msb#2 ] 3,336.67: zp[1]:160 [ splash_run::i1#2 splash_run::i1#1 ] 3,203.2: zp[1]:161 [ splash_run::i2#2 splash_run::i2#1 ] 2,366: zp[1]:162 [ splash_run::i#2 splash_run::i#1 ] 2,002: zp[1]:164 [ splash_run::$25 ] 1,334.67: zp[1]:171 [ splash_run::$34 ] 667.33: zp[2]:177 [ splash_run::xpos#0 ]
Uplift Scope [choose_direction] 676.7: zp[1]:176 [ choose_direction::dist_min#10 choose_direction::dist_min#13 choose_direction::dist_min#14 choose_direction::dist_down#0 ] 656.5: zp[1]:179 [ choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ] 202: zp[1]:197 [ choose_direction::$2 ] 202: zp[1]:198 [ choose_direction::$4 ] 202: zp[1]:199 [ choose_direction::$6 ] 202: zp[1]:200 [ choose_direction::$8 ] 202: zp[1]:201 [ choose_direction::dist_right#0 ] 194.9: zp[1]:203 [ choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ] 189: zp[1]:204 [ choose_direction::target_xtile#4 choose_direction::target_xtile#2 choose_direction::target_xtile#3 choose_direction::target_xtile#0 choose_direction::target_xtile#1 ] 181.8: zp[1]:205 [ choose_direction::dist_min#6 choose_direction::dist_up#0 ] 167: zp[1]:206 [ choose_direction::ghost_xtile#4 choose_direction::ghost_xtile#2 choose_direction::ghost_xtile#3 choose_direction::ghost_xtile#0 choose_direction::ghost_xtile#1 ] 160.5: zp[1]:207 [ choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 ] 101.83: zp[1]:212 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 ] 37.08: zp[1]:229 [ choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ] 22: zp[1]:275 [ choose_direction::return#0 ] 22: zp[1]:279 [ choose_direction::return#1 ] 22: zp[1]:283 [ choose_direction::return#2 ] 22: zp[1]:287 [ choose_direction::return#3 ] 21.96: zp[1]:293 [ choose_direction::ydiff#0 ] 21.04: zp[1]:294 [ choose_direction::xdiff#0 ]
Uplift Scope [game_logic] 40.5: zp[1]:228 [ game_logic::ghost_frame_idx#2 game_logic::ghost_frame_idx#0 game_logic::ghost_frame_idx#1 ] 26.4: zp[1]:230 [ game_logic::target_ytile#3 game_logic::target_ytile#2 ] 26.4: zp[1]:231 [ game_logic::target_ytile1#3 game_logic::target_ytile1#2 ] 26.4: zp[1]:232 [ game_logic::target_ytile2#3 game_logic::target_ytile2#2 ] 26.4: zp[1]:233 [ game_logic::target_ytile3#3 game_logic::target_ytile3#2 ] 22: zp[1]:234 [ game_logic::$2 ] 22: zp[1]:235 [ game_logic::$3 ] 22: zp[1]:236 [ game_logic::$14 ] 22: zp[1]:237 [ game_logic::$15 ] 22: zp[1]:238 [ game_logic::$17 ] 22: zp[1]:239 [ game_logic::$18 ] 22: zp[1]:240 [ game_logic::$20 ] 22: zp[1]:241 [ game_logic::$21 ] 22: zp[1]:242 [ game_logic::$25 ] 22: zp[1]:243 [ game_logic::$26 ] 22: zp[1]:244 [ game_logic::$28 ] 22: zp[1]:245 [ game_logic::$29 ] 22: zp[1]:246 [ game_logic::$31 ] 22: zp[1]:247 [ game_logic::$32 ] 22: zp[1]:248 [ game_logic::$34 ] 22: zp[1]:249 [ game_logic::$35 ] 22: zp[1]:250 [ game_logic::$37 ] 22: zp[1]:251 [ game_logic::$38 ] 22: zp[1]:256 [ game_logic::$40 ] 22: zp[1]:257 [ game_logic::$41 ] 22: zp[1]:258 [ game_logic::$43 ] 22: zp[1]:259 [ game_logic::$44 ] 22: zp[1]:260 [ game_logic::$46 ] 22: zp[1]:261 [ game_logic::$47 ] 22: zp[1]:262 [ game_logic::pacman_ytile#0 ] 22: zp[1]:263 [ game_logic::$65 ] 22: zp[1]:264 [ game_logic::$66 ] 22: zp[2]:265 [ game_logic::$67 ] 22: zp[1]:267 [ game_logic::$68 ] 22: zp[1]:268 [ game_logic::$69 ] 22: zp[1]:269 [ game_logic::$70 ] 22: zp[2]:270 [ game_logic::$71 ] 22: zp[1]:272 [ game_logic::$72 ] 22: zp[1]:274 [ game_logic::open_directions#0 ] 22: zp[1]:276 [ game_logic::$119 ] 22: zp[1]:278 [ game_logic::open_directions1#0 ] 22: zp[1]:280 [ game_logic::$140 ] 22: zp[1]:282 [ game_logic::open_directions2#0 ] 22: zp[1]:284 [ game_logic::$161 ] 22: zp[1]:286 [ game_logic::open_directions3#0 ] 22: zp[1]:288 [ game_logic::$182 ] 22: zp[1]:290 [ game_logic::$199 ] 22: zp[1]:291 [ game_logic::$200 ] 22: zp[1]:292 [ game_logic::$204 ] 16.5: zp[1]:307 [ game_logic::target_xtile#3 game_logic::target_xtile#2 ] 16.5: zp[1]:308 [ game_logic::target_xtile1#3 game_logic::target_xtile1#2 ] 16.5: zp[1]:309 [ game_logic::target_xtile2#3 game_logic::target_xtile2#2 ] 16.5: zp[1]:310 [ game_logic::target_xtile3#3 game_logic::target_xtile3#2 ] 16.5: zp[1]:311 [ game_logic::tile_id#0 ] 16.5: zp[1]:312 [ game_logic::joy_directions#0 ] 16.5: zp[1]:313 [ game_logic::new_direction#0 ] 11: zp[1]:316 [ game_logic::do_reverse#4 ] 11: zp[1]:317 [ game_logic::$19 ] 11: zp[1]:318 [ game_logic::$27 ] 11: zp[1]:319 [ game_logic::$33 ] 11: zp[1]:320 [ game_logic::$39 ] 11: zp[1]:321 [ game_logic::$45 ] 11: zp[1]:322 [ game_logic::$75 ] 11: zp[1]:323 [ game_logic::$77 ] 11: zp[1]:324 [ game_logic::$80 ] 11: zp[1]:325 [ game_logic::$82 ] 11: zp[1]:326 [ game_logic::$85 ] 11: zp[1]:327 [ game_logic::$87 ] 11: zp[1]:328 [ game_logic::$90 ] 11: zp[1]:329 [ game_logic::$92 ] 11: zp[1]:330 [ game_logic::$220 ] 11: zp[1]:331 [ game_logic::$223 ] 11: zp[1]:332 [ game_logic::$226 ] 11: zp[1]:333 [ game_logic::$229 ] 11: zp[1]:334 [ game_logic::$232 ] 11: zp[1]:335 [ game_logic::pacman_xtile1#0 ] 11: zp[1]:336 [ game_logic::pacman_ytile1#0 ] 6.77: zp[1]:337 [ game_logic::pacman_xtile#0 ] 5.5: zp[1]:338 [ game_logic::pacman_bob_xfine#0 ] 5.5: zp[1]:339 [ game_logic::ghost1_bob_xfine#0 ] 5.5: zp[1]:340 [ game_logic::ghost2_bob_xfine#0 ] 5.5: zp[1]:341 [ game_logic::ghost3_bob_xfine#0 ] 5.5: zp[1]:342 [ game_logic::ghost4_bob_xfine#0 ] 5.5: zp[2]:343 [ game_logic::ytiles#0 ] 5.5: zp[1]:345 [ game_logic::open_directions#1 ] 5.5: zp[1]:346 [ game_logic::open_directions1#1 ] 5.5: zp[1]:347 [ game_logic::open_directions2#1 ] 5.5: zp[1]:348 [ game_logic::open_directions3#1 ] 3.67: zp[1]:351 [ game_logic::open_directions4#0 ] 2.59: zp[1]:353 [ game_logic::$210 ] 2.36: zp[1]:354 [ game_logic::ghost4_xtile#0 ] 2.36: zp[1]:355 [ game_logic::ghost4_ytile#0 ] 2.36: zp[1]:356 [ game_logic::ghost3_xtile#0 ] 2.36: zp[1]:357 [ game_logic::ghost3_ytile#0 ] 2.36: zp[1]:358 [ game_logic::ghost2_xtile#0 ] 2.36: zp[1]:359 [ game_logic::ghost2_ytile#0 ] 2.36: zp[1]:360 [ game_logic::ghost1_xtile#0 ] 2.36: zp[1]:361 [ game_logic::ghost1_ytile#0 ]
Uplift Scope [level_tile_directions] 224.29: zp[1]:189 [ level_tile_directions::return#2 level_tile_directions::return#0 ] 202: zp[1]:194 [ level_tile_directions::$5 ] 202: zp[2]:195 [ level_tile_directions::ytiles#0 ] 195.67: zp[1]:202 [ level_tile_directions::ytile#5 level_tile_directions::ytile#1 level_tile_directions::ytile#2 level_tile_directions::ytile#3 level_tile_directions::ytile#4 level_tile_directions::ytile#0 ] 106.4: zp[1]:211 [ level_tile_directions::xtile#5 level_tile_directions::xtile#1 level_tile_directions::xtile#2 level_tile_directions::xtile#3 level_tile_directions::xtile#4 level_tile_directions::xtile#0 ] 22: zp[1]:273 [ level_tile_directions::return#3 ] 22: zp[1]:277 [ level_tile_directions::return#10 ] 22: zp[1]:281 [ level_tile_directions::return#11 ] 22: zp[1]:285 [ level_tile_directions::return#12 ] 22: zp[1]:289 [ level_tile_directions::return#13 ]
Uplift Scope [byteboozer_decrunch] 438.5: zp[2]:181 [ byteboozer_decrunch::crunched ]
Uplift Scope [irq_screen_top] 4: zp[1]:349 [ irq_screen_top::$1 ] 4: zp[1]:350 [ irq_screen_top::$2 ]
Uplift Scope [MOS6526_CIA]
Uplift Scope [MOS6569_VICII]
Uplift Scope [MOS6581_SID]
Uplift Scope [pacman_sound_init]
Uplift Scope [pacman_sound_play]
Uplift Scope [TILE_TYPE]
Uplift Scope [main]
Uplift Scope [joyinit]
Uplift Scope [DIRECTION]
Uplift Scope [GHOSTS_MODE]
Uplift Scope [spawn_all]
Uplift Scope [__start]
Uplifting [render_tiles] best 2567556 combination zp[1]:2 [ render_tiles::y#2 render_tiles::y#1 ] reg byte x [ render_tiles::ypos_inc_offset#2 render_tiles::ypos_inc_offset#0 render_tiles::ypos_inc_offset#1 ] reg byte a [ render_tiles::pixels#0 ] zp[2]:5 [ render_tiles::canvas2#2 render_tiles::canvas2#0 render_tiles::canvas2#1 ] zp[2]:7 [ render_tiles::canvas1#2 render_tiles::canvas1#0 render_tiles::canvas1#1 ] zp[2]:15 [ render_tiles::tile_right_pixels#0 ] zp[2]:17 [ render_tiles::tile_left_pixels#0 ] reg byte a [ render_tiles::$0 ] reg byte a [ render_tiles::$2 ] zp[1]:26 [ render_tiles::$5 ] zp[2]:27 [ render_tiles::canvas_offset#0 ] zp[1]:32 [ render_tiles::$4 ] zp[1]:35 [ render_tiles::tile_left#0 ] zp[1]:36 [ render_tiles::tile_right#0 ] zp[2]:38 [ render_tiles::render_index_xcol#0 ] zp[1]:56 [ render_tiles::xcol#0 ] zp[1]:57 [ render_tiles::ytile#0 ]
Limited combination testing to 100 combinations of 248832 possible.
Uplifting [render] best 2387549 combination reg byte y [ render::i#2 render::i#1 ] reg byte x [ render::ypos_inc_offset#2 render::ypos_inc_offset#0 render::ypos_inc_offset#1 ] zp[2]:11 [ render::canvas1#2 render::canvas1#0 render::canvas1#1 ] zp[2]:13 [ render::canvas2#2 render::canvas2#0 render::canvas2#1 ] zp[1]:19 [ render::ypix#0 ] reg byte a [ render::$2 ] zp[2]:54 [ render::canvas_offset#0 ] zp[1]:59 [ render::ytile#0 ] zp[1]:60 [ render::$1 ] zp[1]:61 [ render::xcol#2 render::xcol#0 render::xcol#1 ] zp[1]:64 [ render::ypos#2 render::ypos#0 render::ypos#1 ] zp[1]:65 [ render::pixels#4 render::pixels#0 render::pixels#1 ] zp[2]:73 [ render::render_index_xcol#0 ]
Limited combination testing to 100 combinations of 11664 possible.
Uplifting [level_tile_get] best 2355531 combination reg byte a [ level_tile_get::return#2 level_tile_get::return#0 ] reg byte a [ level_tile_get::$5 ] zp[2]:22 [ level_tile_get::ytiles#0 ] reg byte a [ level_tile_get::ytile#4 level_tile_get::ytile#0 level_tile_get::ytile#1 level_tile_get::ytile#2 level_tile_get::ytile#3 ] reg byte x [ level_tile_get::xtile#4 level_tile_get::xtile#0 level_tile_get::xtile#1 level_tile_get::xtile#2 level_tile_get::xtile#3 ] zp[1]:44 [ level_tile_get::return#3 ] zp[1]:46 [ level_tile_get::return#4 ] zp[1]:48 [ level_tile_get::return#10 ] zp[1]:50 [ level_tile_get::return#11 ]
Limited combination testing to 100 combinations of 49152 possible.
Uplifting [init_level_tile_directions] best 2343531 combination zp[1]:31 [ init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ] zp[1]:41 [ init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 ] reg byte x [ init_level_tile_directions::$3 ] reg byte x [ init_level_tile_directions::$7 ] zp[1]:49 [ init_level_tile_directions::$11 ] zp[1]:51 [ init_level_tile_directions::$15 ] zp[1]:69 [ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 ] zp[2]:85 [ init_level_tile_directions::directions#7 init_level_tile_directions::directions#1 ]
Limited combination testing to 100 combinations of 6912 possible.
Uplifting [level_show] best 2327531 combination zp[2]:33 [ level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 ] zp[1]:40 [ level_show::xcol#2 level_show::xcol#1 ] zp[1]:58 [ level_show::xtile#3 level_show::xtile#2 ] reg byte y [ level_show::xtile#1 ] zp[1]:63 [ level_show::tile_right#0 ] zp[1]:70 [ level_show::ytile#2 level_show::ytile#1 ] reg byte x [ level_show::tile_left#0 ] zp[2]:79 [ level_show::level#8 level_show::level#1 ] zp[2]:165 [ level_show::return#0 ]
Limited combination testing to 100 combinations of 216 possible.
Uplifting [init_sprite_pointers] best 2294631 combination reg byte y [ init_sprite_pointers::sprite#2 init_sprite_pointers::sprite#1 ] reg byte a [ init_sprite_pointers::$2 ] reg byte a [ init_sprite_pointers::sprite_id#0 ] reg byte x [ init_sprite_pointers::screen#2 init_sprite_pointers::screen#1 ] zp[2]:77 [ init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_2#1 ] zp[2]:83 [ init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_1#1 ]
Limited combination testing to 100 combinations of 144 possible.
Uplifting [joyfire] best 2284721 combination reg byte a [ joyfire::$0 ] reg byte a [ joyfire::return#0 ] reg byte a [ joyfire::return#4 ] reg byte a [ joyfire::return#1 ]
Limited combination testing to 100 combinations of 256 possible.
Uplifting [done_run] best 2275521 combination zp[1]:71 [ done_run::ypos#2 done_run::ypos#1 ] reg byte a [ done_run::$8 ] zp[2]:87 [ done_run::gfx#4 done_run::gfx#2 done_run::gfx#1 ] reg byte x [ done_run::pixels#0 ] reg byte x [ done_run::i#2 done_run::i#1 ] zp[1]:99 [ done_run::i1#2 done_run::i1#1 ] zp[1]:100 [ done_run::xcol#2 done_run::xcol#1 ]
Limited combination testing to 100 combinations of 576 possible.
Uplifting [merge_code] best 2273031 combination zp[2]:66 [ merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 ] zp[2]:75 [ merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 ] reg byte x [ merge_code::cycle_budget#10 merge_code::cycle_budget#2 merge_code::cycle_budget#3 merge_code::cycle_budget#13 merge_code::cycle_budget#0 merge_code::cycle_budget#1 ] zp[2]:97 [ merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 ] zp[2]:112 [ merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 ] zp[2]:116 [ merge_code::dest_code#2 ] reg byte y [ merge_code::$5 ] zp[2]:124 [ merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 ] zp[1]:127 [ merge_code::logic_cycles#0 ] zp[2]:142 [ merge_code::raster_code#1 ]
Uplifting [init_render_index] best 2270331 combination reg byte x [ init_render_index::ypos_inc_offset#4 init_render_index::ypos_inc_offset#7 init_render_index::ypos_inc_offset#8 init_render_index::ypos_inc_offset#2 init_render_index::ypos_inc_offset#3 ] zp[1]:103 [ init_render_index::y_pos#2 init_render_index::y_pos#1 ] zp[2]:104 [ init_render_index::$11 ] zp[2]:106 [ init_render_index::$10 ] zp[2]:108 [ init_render_index::$12 ] reg byte a [ init_render_index::$5 ] reg byte a [ init_render_index::$6 ] zp[2]:114 [ init_render_index::render_index_xcol#2 init_render_index::render_index_xcol#7 init_render_index::render_index_xcol#1 ] zp[2]:121 [ init_render_index::canvas#0 ] zp[1]:136 [ init_render_index::x_col#2 init_render_index::x_col#1 ] reg byte a [ init_render_index::$9 ] zp[2]:144 [ init_render_index::render_index_xcol#0 init_render_index::render_index#1 ] zp[2]:154 [ init_render_index::canvas_xcol#0 ] zp[2]:156 [ init_render_index::render_ypos_table#4 ]
Limited combination testing to 100 combinations of 128 possible.
Uplifting [gameplay_run] best 2266731 combination reg byte x [ gameplay_run::i#2 gameplay_run::i#1 ] reg byte x [ gameplay_run::i1#2 gameplay_run::i1#1 ] reg byte x [ gameplay_run::i2#2 gameplay_run::i2#1 ] zp[2]:167 [ gameplay_run::$4 ]
Uplifting [splash_show] best 2266331 combination zp[1]:102 [ splash_show::ypos#2 splash_show::ypos#1 ] zp[2]:118 [ splash_show::splash#4 splash_show::splash#2 splash_show::splash#1 ] reg byte x [ splash_show::pixels#0 ] zp[1]:130 [ splash_show::xcol#2 splash_show::xcol#1 ]
Uplifting [init_bobs_restore] best 2265041 combination reg byte y [ init_bobs_restore::i#2 init_bobs_restore::i#1 ] zp[2]:133 [ init_bobs_restore::bob_restore#5 init_bobs_restore::bob_restore#1 ] reg byte x [ init_bobs_restore::bob#2 init_bobs_restore::bob#1 ]
Uplifting [] best 2265041 combination zp[1]:123 [ music_play_next ] zp[1]:146 [ side_sprites_color ] zp[1]:147 [ side_sprites_mc ] zp[1]:148 [ bottom_sprites_color ] zp[1]:149 [ bottom_sprites_mc ] zp[2]:150 [ logic_tile_ptr ] zp[1]:152 [ logic_tile_xcol ] zp[1]:153 [ logic_tile_yfine ] zp[1]:159 [ top_sprites_color ] zp[1]:163 [ pacman_wins ] zp[1]:172 [ canvas_base_hi ] zp[1]:173 [ bobs_restore_base ] zp[1]:180 [ pacman_lives ] zp[1]:183 [ ghost1_respawn ] zp[1]:184 [ ghost2_respawn ] zp[1]:185 [ ghost3_respawn ] zp[1]:186 [ ghost4_respawn ] zp[1]:187 [ ghosts_mode_count ] zp[1]:188 [ pacman_substep ] zp[1]:190 [ ghost1_substep ] zp[1]:191 [ ghost2_substep ] zp[1]:192 [ ghost3_substep ] zp[1]:193 [ ghost4_substep ] zp[1]:208 [ pacman_direction ] zp[1]:209 [ ghost1_direction ] zp[1]:210 [ ghost2_direction ] zp[1]:213 [ ghost3_direction ] zp[1]:214 [ ghost4_direction ] zp[1]:215 [ top_sprites_mc ] zp[1]:216 [ ghost1_xfine ] zp[1]:217 [ ghost1_yfine ] zp[1]:218 [ phase ] zp[1]:219 [ ghost2_xfine ] zp[1]:220 [ ghost2_yfine ] zp[1]:221 [ ghost3_xfine ] zp[1]:222 [ game_playable ] zp[1]:223 [ ghost3_yfine ] zp[1]:224 [ ghost4_xfine ] zp[1]:225 [ ghost4_yfine ] zp[1]:226 [ pacman_xfine ] zp[1]:227 [ pacman_yfine ] zp[1]:295 [ logic_tile_left_idx ] zp[1]:296 [ logic_tile_right_idx ] zp[2]:297 [ left_render_index_xcol ] zp[2]:299 [ left_canvas ] zp[1]:301 [ left_ypos_inc_offset ] zp[2]:302 [ rigt_render_index_xcol ] zp[2]:304 [ rigt_canvas ] zp[1]:306 [ rigt_ypos_inc_offset ] zp[2]:314 [ pill_count ] zp[1]:352 [ game_logic_substep ] zp[1]:362 [ pacman_ch1_idx ] zp[1]:363 [ ghosts_mode ] zp[1]:364 [ anim_frame_idx ] zp[1]:365 [ ghost1_reverse ] zp[1]:366 [ ghost2_reverse ] zp[1]:367 [ ghost3_reverse ] zp[1]:368 [ ghost4_reverse ] zp[1]:369 [ frame ] zp[1]:370 [ pacman_ch1_enabled ]
Uplifting [memcpy] best 2265041 combination zp[2]:131 [ memcpy::src#2 memcpy::src#1 ] zp[2]:137 [ memcpy::dst#2 memcpy::dst#1 ]
Uplifting [memset] best 2265041 combination zp[2]:128 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:169 [ memset::end#0 ] zp[2]:174 [ memset::num#5 ] zp[2]:371 [ memset::str#6 ]
Uplifting [splash_run] best 2264298 combination reg byte a [ splash_run::$30 ] reg byte x [ splash_run::msb#10 splash_run::msb#8 splash_run::msb#1 splash_run::msb#2 ] reg byte x [ splash_run::i1#2 splash_run::i1#1 ] reg byte x [ splash_run::i2#2 splash_run::i2#1 ] zp[1]:162 [ splash_run::i#2 splash_run::i#1 ] zp[1]:164 [ splash_run::$25 ] zp[1]:171 [ splash_run::$34 ] zp[2]:177 [ splash_run::xpos#0 ]
Limited combination testing to 100 combinations of 3888 possible.
Uplifting [choose_direction] best 2264277 combination reg byte x [ choose_direction::dist_min#10 choose_direction::dist_min#13 choose_direction::dist_min#14 choose_direction::dist_down#0 ] zp[1]:179 [ choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ] reg byte a [ choose_direction::$2 ] reg byte a [ choose_direction::$4 ] zp[1]:199 [ choose_direction::$6 ] zp[1]:200 [ choose_direction::$8 ] zp[1]:201 [ choose_direction::dist_right#0 ] zp[1]:203 [ choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ] zp[1]:204 [ choose_direction::target_xtile#4 choose_direction::target_xtile#2 choose_direction::target_xtile#3 choose_direction::target_xtile#0 choose_direction::target_xtile#1 ] zp[1]:205 [ choose_direction::dist_min#6 choose_direction::dist_up#0 ] zp[1]:206 [ choose_direction::ghost_xtile#4 choose_direction::ghost_xtile#2 choose_direction::ghost_xtile#3 choose_direction::ghost_xtile#0 choose_direction::ghost_xtile#1 ] zp[1]:207 [ choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 ] zp[1]:212 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 ] zp[1]:229 [ choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ] zp[1]:275 [ choose_direction::return#0 ] zp[1]:279 [ choose_direction::return#1 ] zp[1]:283 [ choose_direction::return#2 ] zp[1]:287 [ choose_direction::return#3 ] zp[1]:293 [ choose_direction::ydiff#0 ] zp[1]:294 [ choose_direction::xdiff#0 ]
Limited combination testing to 100 combinations of 952107008 possible.
Uplifting [level_tile_directions] best 2264214 combination reg byte a [ level_tile_directions::return#2 level_tile_directions::return#0 ] reg byte a [ level_tile_directions::$5 ] zp[2]:195 [ level_tile_directions::ytiles#0 ] reg byte a [ level_tile_directions::ytile#5 level_tile_directions::ytile#1 level_tile_directions::ytile#2 level_tile_directions::ytile#3 level_tile_directions::ytile#4 level_tile_directions::ytile#0 ] reg byte x [ level_tile_directions::xtile#5 level_tile_directions::xtile#1 level_tile_directions::xtile#2 level_tile_directions::xtile#3 level_tile_directions::xtile#4 level_tile_directions::xtile#0 ] zp[1]:273 [ level_tile_directions::return#3 ] zp[1]:277 [ level_tile_directions::return#10 ] zp[1]:281 [ level_tile_directions::return#11 ] zp[1]:285 [ level_tile_directions::return#12 ] zp[1]:289 [ level_tile_directions::return#13 ]
Limited combination testing to 100 combinations of 196608 possible.
Uplifting [byteboozer_decrunch] best 2264214 combination zp[2]:181 [ byteboozer_decrunch::crunched ]
Uplifting [irq_screen_top] best 2264204 combination reg byte a [ irq_screen_top::$1 ] reg byte a [ irq_screen_top::$2 ]
Uplifting [MOS6526_CIA] best 2264204 combination
Uplifting [MOS6569_VICII] best 2264204 combination
Uplifting [MOS6581_SID] best 2264204 combination
Uplifting [pacman_sound_init] best 2264204 combination
Uplifting [pacman_sound_play] best 2264204 combination
Uplifting [TILE_TYPE] best 2264204 combination
Uplifting [main] best 2264204 combination
Uplifting [joyinit] best 2264204 combination
Uplifting [DIRECTION] best 2264204 combination
Uplifting [GHOSTS_MODE] best 2264204 combination
Uplifting [spawn_all] best 2264204 combination
Uplifting [__start] best 2264204 combination
Attempting to uplift remaining variables inzp[1]:2 [ render_tiles::y#2 render_tiles::y#1 ]
Uplifting [render_tiles] best 2264204 combination zp[1]:2 [ render_tiles::y#2 render_tiles::y#1 ]
Attempting to uplift remaining variables inzp[1]:19 [ render::ypix#0 ]
Uplifting [render] best 2264204 combination zp[1]:19 [ render::ypix#0 ]
Attempting to uplift remaining variables inzp[1]:26 [ render_tiles::$5 ]
Uplifting [render_tiles] best 2264198 combination reg byte a [ render_tiles::$5 ]
Attempting to uplift remaining variables inzp[1]:31 [ init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ]
Uplifting [init_level_tile_directions] best 2264198 combination zp[1]:31 [ init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ]
Attempting to uplift remaining variables inzp[1]:32 [ render_tiles::$4 ]
Uplifting [render_tiles] best 2264192 combination reg byte x [ render_tiles::$4 ]
Attempting to uplift remaining variables inzp[1]:35 [ render_tiles::tile_left#0 ]
Uplifting [render_tiles] best 2261191 combination reg byte x [ render_tiles::tile_left#0 ]
Attempting to uplift remaining variables inzp[1]:36 [ render_tiles::tile_right#0 ]
Uplifting [render_tiles] best 2258190 combination reg byte y [ render_tiles::tile_right#0 ]
Attempting to uplift remaining variables inzp[1]:40 [ level_show::xcol#2 level_show::xcol#1 ]
Uplifting [level_show] best 2258190 combination zp[1]:40 [ level_show::xcol#2 level_show::xcol#1 ]
Attempting to uplift remaining variables inzp[1]:41 [ init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 ]
Uplifting [init_level_tile_directions] best 2258190 combination zp[1]:41 [ init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 ]
Attempting to uplift remaining variables inzp[1]:44 [ level_tile_get::return#3 ]
Uplifting [level_tile_get] best 2254190 combination reg byte a [ level_tile_get::return#3 ]
Attempting to uplift remaining variables inzp[1]:46 [ level_tile_get::return#4 ]
Uplifting [level_tile_get] best 2250190 combination reg byte a [ level_tile_get::return#4 ]
Attempting to uplift remaining variables inzp[1]:48 [ level_tile_get::return#10 ]
Uplifting [level_tile_get] best 2244190 combination reg byte a [ level_tile_get::return#10 ]
Attempting to uplift remaining variables inzp[1]:49 [ init_level_tile_directions::$11 ]
Uplifting [init_level_tile_directions] best 2240190 combination reg byte a [ init_level_tile_directions::$11 ]
Attempting to uplift remaining variables inzp[1]:50 [ level_tile_get::return#11 ]
Uplifting [level_tile_get] best 2234190 combination reg byte a [ level_tile_get::return#11 ]
Attempting to uplift remaining variables inzp[1]:51 [ init_level_tile_directions::$15 ]
Uplifting [init_level_tile_directions] best 2230190 combination reg byte a [ init_level_tile_directions::$15 ]
Attempting to uplift remaining variables inzp[1]:56 [ render_tiles::xcol#0 ]
Uplifting [render_tiles] best 2230190 combination zp[1]:56 [ render_tiles::xcol#0 ]
Attempting to uplift remaining variables inzp[1]:57 [ render_tiles::ytile#0 ]
Uplifting [render_tiles] best 2230190 combination zp[1]:57 [ render_tiles::ytile#0 ]
Attempting to uplift remaining variables inzp[1]:58 [ level_show::xtile#3 level_show::xtile#2 ]
Uplifting [level_show] best 2230190 combination zp[1]:58 [ level_show::xtile#3 level_show::xtile#2 ]
Attempting to uplift remaining variables inzp[1]:59 [ render::ytile#0 ]
Uplifting [render] best 2230188 combination reg byte y [ render::ytile#0 ]
Attempting to uplift remaining variables inzp[1]:60 [ render::$1 ]
Uplifting [render] best 2230182 combination reg byte x [ render::$1 ]
Attempting to uplift remaining variables inzp[1]:61 [ render::xcol#2 render::xcol#0 render::xcol#1 ]
Uplifting [render] best 2230182 combination zp[1]:61 [ render::xcol#2 render::xcol#0 render::xcol#1 ]
Attempting to uplift remaining variables inzp[1]:63 [ level_show::tile_right#0 ]
Uplifting [level_show] best 2230182 combination zp[1]:63 [ level_show::tile_right#0 ]
Attempting to uplift remaining variables inzp[1]:64 [ render::ypos#2 render::ypos#0 render::ypos#1 ]
Uplifting [render] best 2230182 combination zp[1]:64 [ render::ypos#2 render::ypos#0 render::ypos#1 ]
Attempting to uplift remaining variables inzp[1]:65 [ render::pixels#4 render::pixels#0 render::pixels#1 ]
Uplifting [render] best 2230182 combination zp[1]:65 [ render::pixels#4 render::pixels#0 render::pixels#1 ]
Attempting to uplift remaining variables inzp[1]:69 [ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 ]
Uplifting [init_level_tile_directions] best 2230182 combination zp[1]:69 [ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 ]
Attempting to uplift remaining variables inzp[1]:70 [ level_show::ytile#2 level_show::ytile#1 ]
Uplifting [level_show] best 2230182 combination zp[1]:70 [ level_show::ytile#2 level_show::ytile#1 ]
Attempting to uplift remaining variables inzp[1]:71 [ done_run::ypos#2 done_run::ypos#1 ]
Uplifting [done_run] best 2230182 combination zp[1]:71 [ done_run::ypos#2 done_run::ypos#1 ]
Attempting to uplift remaining variables inzp[1]:99 [ done_run::i1#2 done_run::i1#1 ]
Uplifting [done_run] best 2228382 combination reg byte x [ done_run::i1#2 done_run::i1#1 ]
Attempting to uplift remaining variables inzp[1]:100 [ done_run::xcol#2 done_run::xcol#1 ]
Uplifting [done_run] best 2228382 combination zp[1]:100 [ done_run::xcol#2 done_run::xcol#1 ]
Attempting to uplift remaining variables inzp[1]:102 [ splash_show::ypos#2 splash_show::ypos#1 ]
Uplifting [splash_show] best 2228382 combination zp[1]:102 [ splash_show::ypos#2 splash_show::ypos#1 ]
Attempting to uplift remaining variables inzp[1]:103 [ init_render_index::y_pos#2 init_render_index::y_pos#1 ]
Uplifting [init_render_index] best 2228382 combination zp[1]:103 [ init_render_index::y_pos#2 init_render_index::y_pos#1 ]
Attempting to uplift remaining variables inzp[1]:123 [ music_play_next ]
Uplifting [] best 2228382 combination zp[1]:123 [ music_play_next ]
Attempting to uplift remaining variables inzp[1]:127 [ merge_code::logic_cycles#0 ]
Uplifting [merge_code] best 2228382 combination zp[1]:127 [ merge_code::logic_cycles#0 ]
Attempting to uplift remaining variables inzp[1]:130 [ splash_show::xcol#2 splash_show::xcol#1 ]
Uplifting [splash_show] best 2228382 combination zp[1]:130 [ splash_show::xcol#2 splash_show::xcol#1 ]
Attempting to uplift remaining variables inzp[1]:136 [ init_render_index::x_col#2 init_render_index::x_col#1 ]
Uplifting [init_render_index] best 2228382 combination zp[1]:136 [ init_render_index::x_col#2 init_render_index::x_col#1 ]
Attempting to uplift remaining variables inzp[1]:146 [ side_sprites_color ]
Uplifting [] best 2228382 combination zp[1]:146 [ side_sprites_color ]
Attempting to uplift remaining variables inzp[1]:147 [ side_sprites_mc ]
Uplifting [] best 2228382 combination zp[1]:147 [ side_sprites_mc ]
Attempting to uplift remaining variables inzp[1]:148 [ bottom_sprites_color ]
Uplifting [] best 2228382 combination zp[1]:148 [ bottom_sprites_color ]
Attempting to uplift remaining variables inzp[1]:149 [ bottom_sprites_mc ]
Uplifting [] best 2228382 combination zp[1]:149 [ bottom_sprites_mc ]
Attempting to uplift remaining variables inzp[1]:152 [ logic_tile_xcol ]
Uplifting [] best 2228382 combination zp[1]:152 [ logic_tile_xcol ]
Attempting to uplift remaining variables inzp[1]:153 [ logic_tile_yfine ]
Uplifting [] best 2228382 combination zp[1]:153 [ logic_tile_yfine ]
Attempting to uplift remaining variables inzp[1]:159 [ top_sprites_color ]
Uplifting [] best 2228382 combination zp[1]:159 [ top_sprites_color ]
Attempting to uplift remaining variables inzp[1]:162 [ splash_run::i#2 splash_run::i#1 ]
Uplifting [splash_run] best 2228382 combination zp[1]:162 [ splash_run::i#2 splash_run::i#1 ]
Attempting to uplift remaining variables inzp[1]:163 [ pacman_wins ]
Uplifting [] best 2228382 combination zp[1]:163 [ pacman_wins ]
Attempting to uplift remaining variables inzp[1]:164 [ splash_run::$25 ]
Uplifting [splash_run] best 2228342 combination reg byte a [ splash_run::$25 ]
Attempting to uplift remaining variables inzp[1]:171 [ splash_run::$34 ]
Uplifting [splash_run] best 2228242 combination reg byte y [ splash_run::$34 ]
Attempting to uplift remaining variables inzp[1]:172 [ canvas_base_hi ]
Uplifting [] best 2228242 combination zp[1]:172 [ canvas_base_hi ]
Attempting to uplift remaining variables inzp[1]:173 [ bobs_restore_base ]
Uplifting [] best 2228242 combination zp[1]:173 [ bobs_restore_base ]
Attempting to uplift remaining variables inzp[1]:179 [ choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ]
Uplifting [choose_direction] best 2228242 combination zp[1]:179 [ choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ]
Attempting to uplift remaining variables inzp[1]:180 [ pacman_lives ]
Uplifting [] best 2228242 combination zp[1]:180 [ pacman_lives ]
Attempting to uplift remaining variables inzp[1]:183 [ ghost1_respawn ]
Uplifting [] best 2228242 combination zp[1]:183 [ ghost1_respawn ]
Attempting to uplift remaining variables inzp[1]:184 [ ghost2_respawn ]
Uplifting [] best 2228242 combination zp[1]:184 [ ghost2_respawn ]
Attempting to uplift remaining variables inzp[1]:185 [ ghost3_respawn ]
Uplifting [] best 2228242 combination zp[1]:185 [ ghost3_respawn ]
Attempting to uplift remaining variables inzp[1]:186 [ ghost4_respawn ]
Uplifting [] best 2228242 combination zp[1]:186 [ ghost4_respawn ]
Attempting to uplift remaining variables inzp[1]:187 [ ghosts_mode_count ]
Uplifting [] best 2228242 combination zp[1]:187 [ ghosts_mode_count ]
Attempting to uplift remaining variables inzp[1]:188 [ pacman_substep ]
Uplifting [] best 2228242 combination zp[1]:188 [ pacman_substep ]
Attempting to uplift remaining variables inzp[1]:190 [ ghost1_substep ]
Uplifting [] best 2228242 combination zp[1]:190 [ ghost1_substep ]
Attempting to uplift remaining variables inzp[1]:191 [ ghost2_substep ]
Uplifting [] best 2228242 combination zp[1]:191 [ ghost2_substep ]
Attempting to uplift remaining variables inzp[1]:192 [ ghost3_substep ]
Uplifting [] best 2228242 combination zp[1]:192 [ ghost3_substep ]
Attempting to uplift remaining variables inzp[1]:193 [ ghost4_substep ]
Uplifting [] best 2228242 combination zp[1]:193 [ ghost4_substep ]
Attempting to uplift remaining variables inzp[1]:199 [ choose_direction::$6 ]
Uplifting [choose_direction] best 2228238 combination reg byte a [ choose_direction::$6 ]
Attempting to uplift remaining variables inzp[1]:200 [ choose_direction::$8 ]
Uplifting [choose_direction] best 2228234 combination reg byte a [ choose_direction::$8 ]
Attempting to uplift remaining variables inzp[1]:201 [ choose_direction::dist_right#0 ]
Uplifting [choose_direction] best 2228228 combination reg byte a [ choose_direction::dist_right#0 ]
Attempting to uplift remaining variables inzp[1]:203 [ choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ]
Uplifting [choose_direction] best 2228228 combination zp[1]:203 [ choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ]
Attempting to uplift remaining variables inzp[1]:204 [ choose_direction::target_xtile#4 choose_direction::target_xtile#2 choose_direction::target_xtile#3 choose_direction::target_xtile#0 choose_direction::target_xtile#1 ]
Uplifting [choose_direction] best 2228217 combination reg byte x [ choose_direction::target_xtile#4 choose_direction::target_xtile#2 choose_direction::target_xtile#3 choose_direction::target_xtile#0 choose_direction::target_xtile#1 ]
Attempting to uplift remaining variables inzp[1]:205 [ choose_direction::dist_min#6 choose_direction::dist_up#0 ]
Uplifting [choose_direction] best 2228215 combination reg byte y [ choose_direction::dist_min#6 choose_direction::dist_up#0 ]
Attempting to uplift remaining variables inzp[1]:206 [ choose_direction::ghost_xtile#4 choose_direction::ghost_xtile#2 choose_direction::ghost_xtile#3 choose_direction::ghost_xtile#0 choose_direction::ghost_xtile#1 ]
Uplifting [choose_direction] best 2228204 combination reg byte y [ choose_direction::ghost_xtile#4 choose_direction::ghost_xtile#2 choose_direction::ghost_xtile#3 choose_direction::ghost_xtile#0 choose_direction::ghost_xtile#1 ]
Attempting to uplift remaining variables inzp[1]:207 [ choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 ]
Uplifting [choose_direction] best 2228204 combination zp[1]:207 [ choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 ]
Attempting to uplift remaining variables inzp[1]:208 [ pacman_direction ]
Uplifting [] best 2228204 combination zp[1]:208 [ pacman_direction ]
Attempting to uplift remaining variables inzp[1]:209 [ ghost1_direction ]
Uplifting [] best 2228204 combination zp[1]:209 [ ghost1_direction ]
Attempting to uplift remaining variables inzp[1]:210 [ ghost2_direction ]
Uplifting [] best 2228204 combination zp[1]:210 [ ghost2_direction ]
Attempting to uplift remaining variables inzp[1]:212 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 ]
Uplifting [choose_direction] best 2228204 combination zp[1]:212 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 ]
Attempting to uplift remaining variables inzp[1]:213 [ ghost3_direction ]
Uplifting [] best 2228204 combination zp[1]:213 [ ghost3_direction ]
Attempting to uplift remaining variables inzp[1]:214 [ ghost4_direction ]
Uplifting [] best 2228204 combination zp[1]:214 [ ghost4_direction ]
Attempting to uplift remaining variables inzp[1]:215 [ top_sprites_mc ]
Uplifting [] best 2228204 combination zp[1]:215 [ top_sprites_mc ]
Attempting to uplift remaining variables inzp[1]:216 [ ghost1_xfine ]
Uplifting [] best 2228204 combination zp[1]:216 [ ghost1_xfine ]
Attempting to uplift remaining variables inzp[1]:217 [ ghost1_yfine ]
Uplifting [] best 2228204 combination zp[1]:217 [ ghost1_yfine ]
Attempting to uplift remaining variables inzp[1]:218 [ phase ]
Uplifting [] best 2228204 combination zp[1]:218 [ phase ]
Attempting to uplift remaining variables inzp[1]:219 [ ghost2_xfine ]
Uplifting [] best 2228204 combination zp[1]:219 [ ghost2_xfine ]
Attempting to uplift remaining variables inzp[1]:220 [ ghost2_yfine ]
Uplifting [] best 2228204 combination zp[1]:220 [ ghost2_yfine ]
Attempting to uplift remaining variables inzp[1]:221 [ ghost3_xfine ]
Uplifting [] best 2228204 combination zp[1]:221 [ ghost3_xfine ]
Attempting to uplift remaining variables inzp[1]:222 [ game_playable ]
Uplifting [] best 2228204 combination zp[1]:222 [ game_playable ]
Attempting to uplift remaining variables inzp[1]:223 [ ghost3_yfine ]
Uplifting [] best 2228204 combination zp[1]:223 [ ghost3_yfine ]
Attempting to uplift remaining variables inzp[1]:224 [ ghost4_xfine ]
Uplifting [] best 2228204 combination zp[1]:224 [ ghost4_xfine ]
Attempting to uplift remaining variables inzp[1]:225 [ ghost4_yfine ]
Uplifting [] best 2228204 combination zp[1]:225 [ ghost4_yfine ]
Attempting to uplift remaining variables inzp[1]:226 [ pacman_xfine ]
Uplifting [] best 2228204 combination zp[1]:226 [ pacman_xfine ]
Attempting to uplift remaining variables inzp[1]:227 [ pacman_yfine ]
Uplifting [] best 2228204 combination zp[1]:227 [ pacman_yfine ]
Attempting to uplift remaining variables inzp[1]:228 [ game_logic::ghost_frame_idx#2 game_logic::ghost_frame_idx#0 game_logic::ghost_frame_idx#1 ]
Uplifting [game_logic] best 2228204 combination zp[1]:228 [ game_logic::ghost_frame_idx#2 game_logic::ghost_frame_idx#0 game_logic::ghost_frame_idx#1 ]
Attempting to uplift remaining variables inzp[1]:229 [ choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ]
Uplifting [choose_direction] best 2228204 combination zp[1]:229 [ choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ]
Attempting to uplift remaining variables inzp[1]:230 [ game_logic::target_ytile#3 game_logic::target_ytile#2 ]
Uplifting [game_logic] best 2228204 combination zp[1]:230 [ game_logic::target_ytile#3 game_logic::target_ytile#2 ]
Attempting to uplift remaining variables inzp[1]:231 [ game_logic::target_ytile1#3 game_logic::target_ytile1#2 ]
Uplifting [game_logic] best 2228204 combination zp[1]:231 [ game_logic::target_ytile1#3 game_logic::target_ytile1#2 ]
Attempting to uplift remaining variables inzp[1]:232 [ game_logic::target_ytile2#3 game_logic::target_ytile2#2 ]
Uplifting [game_logic] best 2228204 combination zp[1]:232 [ game_logic::target_ytile2#3 game_logic::target_ytile2#2 ]
Attempting to uplift remaining variables inzp[1]:233 [ game_logic::target_ytile3#3 game_logic::target_ytile3#2 ]
Uplifting [game_logic] best 2228204 combination zp[1]:233 [ game_logic::target_ytile3#3 game_logic::target_ytile3#2 ]
Attempting to uplift remaining variables inzp[1]:234 [ game_logic::$2 ]
Uplifting [game_logic] best 2228198 combination reg byte x [ game_logic::$2 ]
Attempting to uplift remaining variables inzp[1]:235 [ game_logic::$3 ]
Uplifting [game_logic] best 2228194 combination reg byte a [ game_logic::$3 ]
Attempting to uplift remaining variables inzp[1]:236 [ game_logic::$14 ]
Uplifting [game_logic] best 2228188 combination reg byte x [ game_logic::$14 ]
Attempting to uplift remaining variables inzp[1]:237 [ game_logic::$15 ]
Uplifting [game_logic] best 2228184 combination reg byte a [ game_logic::$15 ]
Attempting to uplift remaining variables inzp[1]:238 [ game_logic::$17 ]
Uplifting [game_logic] best 2228178 combination reg byte a [ game_logic::$17 ]
Attempting to uplift remaining variables inzp[1]:239 [ game_logic::$18 ]
Uplifting [game_logic] best 2228172 combination reg byte x [ game_logic::$18 ]
Attempting to uplift remaining variables inzp[1]:240 [ game_logic::$20 ]
Uplifting [game_logic] best 2228166 combination reg byte a [ game_logic::$20 ]
Attempting to uplift remaining variables inzp[1]:241 [ game_logic::$21 ]
Uplifting [game_logic] best 2228160 combination reg byte a [ game_logic::$21 ]
Attempting to uplift remaining variables inzp[1]:242 [ game_logic::$25 ]
Uplifting [game_logic] best 2228154 combination reg byte a [ game_logic::$25 ]
Attempting to uplift remaining variables inzp[1]:243 [ game_logic::$26 ]
Uplifting [game_logic] best 2228148 combination reg byte x [ game_logic::$26 ]
Attempting to uplift remaining variables inzp[1]:244 [ game_logic::$28 ]
Uplifting [game_logic] best 2228142 combination reg byte a [ game_logic::$28 ]
Attempting to uplift remaining variables inzp[1]:245 [ game_logic::$29 ]
Uplifting [game_logic] best 2228136 combination reg byte a [ game_logic::$29 ]
Attempting to uplift remaining variables inzp[1]:246 [ game_logic::$31 ]
Uplifting [game_logic] best 2228130 combination reg byte a [ game_logic::$31 ]
Attempting to uplift remaining variables inzp[1]:247 [ game_logic::$32 ]
Uplifting [game_logic] best 2228124 combination reg byte x [ game_logic::$32 ]
Attempting to uplift remaining variables inzp[1]:248 [ game_logic::$34 ]
Uplifting [game_logic] best 2228118 combination reg byte a [ game_logic::$34 ]
Attempting to uplift remaining variables inzp[1]:249 [ game_logic::$35 ]
Uplifting [game_logic] best 2228112 combination reg byte a [ game_logic::$35 ]
Attempting to uplift remaining variables inzp[1]:250 [ game_logic::$37 ]
Uplifting [game_logic] best 2228106 combination reg byte a [ game_logic::$37 ]
Attempting to uplift remaining variables inzp[1]:251 [ game_logic::$38 ]
Uplifting [game_logic] best 2228100 combination reg byte x [ game_logic::$38 ]
Attempting to uplift remaining variables inzp[1]:256 [ game_logic::$40 ]
Uplifting [game_logic] best 2228094 combination reg byte a [ game_logic::$40 ]
Attempting to uplift remaining variables inzp[1]:257 [ game_logic::$41 ]
Uplifting [game_logic] best 2228088 combination reg byte a [ game_logic::$41 ]
Attempting to uplift remaining variables inzp[1]:258 [ game_logic::$43 ]
Uplifting [game_logic] best 2228082 combination reg byte a [ game_logic::$43 ]
Attempting to uplift remaining variables inzp[1]:259 [ game_logic::$44 ]
Uplifting [game_logic] best 2228076 combination reg byte x [ game_logic::$44 ]
Attempting to uplift remaining variables inzp[1]:260 [ game_logic::$46 ]
Uplifting [game_logic] best 2228070 combination reg byte a [ game_logic::$46 ]
Attempting to uplift remaining variables inzp[1]:261 [ game_logic::$47 ]
Uplifting [game_logic] best 2228064 combination reg byte a [ game_logic::$47 ]
Attempting to uplift remaining variables inzp[1]:262 [ game_logic::pacman_ytile#0 ]
Uplifting [game_logic] best 2228058 combination reg byte a [ game_logic::pacman_ytile#0 ]
Attempting to uplift remaining variables inzp[1]:263 [ game_logic::$65 ]
Uplifting [game_logic] best 2228052 combination reg byte a [ game_logic::$65 ]
Attempting to uplift remaining variables inzp[1]:264 [ game_logic::$66 ]
Uplifting [game_logic] best 2228046 combination reg byte a [ game_logic::$66 ]
Attempting to uplift remaining variables inzp[1]:267 [ game_logic::$68 ]
Uplifting [game_logic] best 2228040 combination reg byte a [ game_logic::$68 ]
Attempting to uplift remaining variables inzp[1]:268 [ game_logic::$69 ]
Uplifting [game_logic] best 2228034 combination reg byte a [ game_logic::$69 ]
Attempting to uplift remaining variables inzp[1]:269 [ game_logic::$70 ]
Uplifting [game_logic] best 2228028 combination reg byte a [ game_logic::$70 ]
Attempting to uplift remaining variables inzp[1]:272 [ game_logic::$72 ]
Uplifting [game_logic] best 2228022 combination reg byte a [ game_logic::$72 ]
Attempting to uplift remaining variables inzp[1]:273 [ level_tile_directions::return#3 ]
Uplifting [level_tile_directions] best 2228016 combination reg byte a [ level_tile_directions::return#3 ]
Attempting to uplift remaining variables inzp[1]:274 [ game_logic::open_directions#0 ]
Uplifting [game_logic] best 2228010 combination reg byte a [ game_logic::open_directions#0 ]
Attempting to uplift remaining variables inzp[1]:275 [ choose_direction::return#0 ]
Uplifting [choose_direction] best 2228004 combination reg byte a [ choose_direction::return#0 ]
Attempting to uplift remaining variables inzp[1]:276 [ game_logic::$119 ]
Uplifting [game_logic] best 2227998 combination reg byte a [ game_logic::$119 ]
Attempting to uplift remaining variables inzp[1]:277 [ level_tile_directions::return#10 ]
Uplifting [level_tile_directions] best 2227992 combination reg byte a [ level_tile_directions::return#10 ]
Attempting to uplift remaining variables inzp[1]:278 [ game_logic::open_directions1#0 ]
Uplifting [game_logic] best 2227986 combination reg byte a [ game_logic::open_directions1#0 ]
Attempting to uplift remaining variables inzp[1]:279 [ choose_direction::return#1 ]
Uplifting [choose_direction] best 2227980 combination reg byte a [ choose_direction::return#1 ]
Attempting to uplift remaining variables inzp[1]:280 [ game_logic::$140 ]
Uplifting [game_logic] best 2227974 combination reg byte a [ game_logic::$140 ]
Attempting to uplift remaining variables inzp[1]:281 [ level_tile_directions::return#11 ]
Uplifting [level_tile_directions] best 2227968 combination reg byte a [ level_tile_directions::return#11 ]
Attempting to uplift remaining variables inzp[1]:282 [ game_logic::open_directions2#0 ]
Uplifting [game_logic] best 2227962 combination reg byte a [ game_logic::open_directions2#0 ]
Attempting to uplift remaining variables inzp[1]:283 [ choose_direction::return#2 ]
Uplifting [choose_direction] best 2227956 combination reg byte a [ choose_direction::return#2 ]
Attempting to uplift remaining variables inzp[1]:284 [ game_logic::$161 ]
Uplifting [game_logic] best 2227950 combination reg byte a [ game_logic::$161 ]
Attempting to uplift remaining variables inzp[1]:285 [ level_tile_directions::return#12 ]
Uplifting [level_tile_directions] best 2227944 combination reg byte a [ level_tile_directions::return#12 ]
Attempting to uplift remaining variables inzp[1]:286 [ game_logic::open_directions3#0 ]
Uplifting [game_logic] best 2227938 combination reg byte a [ game_logic::open_directions3#0 ]
Attempting to uplift remaining variables inzp[1]:287 [ choose_direction::return#3 ]
Uplifting [choose_direction] best 2227932 combination reg byte a [ choose_direction::return#3 ]
Attempting to uplift remaining variables inzp[1]:288 [ game_logic::$182 ]
Uplifting [game_logic] best 2227926 combination reg byte a [ game_logic::$182 ]
Attempting to uplift remaining variables inzp[1]:289 [ level_tile_directions::return#13 ]
Uplifting [level_tile_directions] best 2227920 combination reg byte a [ level_tile_directions::return#13 ]
Attempting to uplift remaining variables inzp[1]:290 [ game_logic::$199 ]
Uplifting [game_logic] best 2227914 combination reg byte a [ game_logic::$199 ]
Attempting to uplift remaining variables inzp[1]:291 [ game_logic::$200 ]
Uplifting [game_logic] best 2227908 combination reg byte a [ game_logic::$200 ]
Attempting to uplift remaining variables inzp[1]:292 [ game_logic::$204 ]
Uplifting [game_logic] best 2227904 combination reg byte a [ game_logic::$204 ]
Attempting to uplift remaining variables inzp[1]:293 [ choose_direction::ydiff#0 ]
Uplifting [choose_direction] best 2227904 combination zp[1]:293 [ choose_direction::ydiff#0 ]
Attempting to uplift remaining variables inzp[1]:294 [ choose_direction::xdiff#0 ]
Uplifting [choose_direction] best 2227904 combination zp[1]:294 [ choose_direction::xdiff#0 ]
Attempting to uplift remaining variables inzp[1]:295 [ logic_tile_left_idx ]
Uplifting [] best 2227904 combination zp[1]:295 [ logic_tile_left_idx ]
Attempting to uplift remaining variables inzp[1]:296 [ logic_tile_right_idx ]
Uplifting [] best 2227904 combination zp[1]:296 [ logic_tile_right_idx ]
Attempting to uplift remaining variables inzp[1]:301 [ left_ypos_inc_offset ]
Uplifting [] best 2227904 combination zp[1]:301 [ left_ypos_inc_offset ]
Attempting to uplift remaining variables inzp[1]:306 [ rigt_ypos_inc_offset ]
Uplifting [] best 2227904 combination zp[1]:306 [ rigt_ypos_inc_offset ]
Attempting to uplift remaining variables inzp[1]:307 [ game_logic::target_xtile#3 game_logic::target_xtile#2 ]
Uplifting [game_logic] best 2227897 combination reg byte x [ game_logic::target_xtile#3 game_logic::target_xtile#2 ]
Attempting to uplift remaining variables inzp[1]:308 [ game_logic::target_xtile1#3 game_logic::target_xtile1#2 ]
Uplifting [game_logic] best 2227890 combination reg byte x [ game_logic::target_xtile1#3 game_logic::target_xtile1#2 ]
Attempting to uplift remaining variables inzp[1]:309 [ game_logic::target_xtile2#3 game_logic::target_xtile2#2 ]
Uplifting [game_logic] best 2227883 combination reg byte x [ game_logic::target_xtile2#3 game_logic::target_xtile2#2 ]
Attempting to uplift remaining variables inzp[1]:310 [ game_logic::target_xtile3#3 game_logic::target_xtile3#2 ]
Uplifting [game_logic] best 2227876 combination reg byte x [ game_logic::target_xtile3#3 game_logic::target_xtile3#2 ]
Attempting to uplift remaining variables inzp[1]:311 [ game_logic::tile_id#0 ]
Uplifting [game_logic] best 2227869 combination reg byte x [ game_logic::tile_id#0 ]
Attempting to uplift remaining variables inzp[1]:312 [ game_logic::joy_directions#0 ]
Uplifting [game_logic] best 2227862 combination reg byte a [ game_logic::joy_directions#0 ]
Attempting to uplift remaining variables inzp[1]:313 [ game_logic::new_direction#0 ]
Uplifting [game_logic] best 2227855 combination reg byte a [ game_logic::new_direction#0 ]
Attempting to uplift remaining variables inzp[1]:316 [ game_logic::do_reverse#4 ]
Uplifting [game_logic] best 2227848 combination reg byte a [ game_logic::do_reverse#4 ]
Attempting to uplift remaining variables inzp[1]:317 [ game_logic::$19 ]
Uplifting [game_logic] best 2227844 combination reg byte x [ game_logic::$19 ]
Attempting to uplift remaining variables inzp[1]:318 [ game_logic::$27 ]
Uplifting [game_logic] best 2227840 combination reg byte x [ game_logic::$27 ]
Attempting to uplift remaining variables inzp[1]:319 [ game_logic::$33 ]
Uplifting [game_logic] best 2227836 combination reg byte x [ game_logic::$33 ]
Attempting to uplift remaining variables inzp[1]:320 [ game_logic::$39 ]
Uplifting [game_logic] best 2227832 combination reg byte x [ game_logic::$39 ]
Attempting to uplift remaining variables inzp[1]:321 [ game_logic::$45 ]
Uplifting [game_logic] best 2227828 combination reg byte x [ game_logic::$45 ]
Attempting to uplift remaining variables inzp[1]:322 [ game_logic::$75 ]
Uplifting [game_logic] best 2227824 combination reg byte x [ game_logic::$75 ]
Attempting to uplift remaining variables inzp[1]:323 [ game_logic::$77 ]
Uplifting [game_logic] best 2227820 combination reg byte y [ game_logic::$77 ]
Attempting to uplift remaining variables inzp[1]:324 [ game_logic::$80 ]
Uplifting [game_logic] best 2227816 combination reg byte x [ game_logic::$80 ]
Attempting to uplift remaining variables inzp[1]:325 [ game_logic::$82 ]
Uplifting [game_logic] best 2227812 combination reg byte y [ game_logic::$82 ]
Attempting to uplift remaining variables inzp[1]:326 [ game_logic::$85 ]
Uplifting [game_logic] best 2227808 combination reg byte x [ game_logic::$85 ]
Attempting to uplift remaining variables inzp[1]:327 [ game_logic::$87 ]
Uplifting [game_logic] best 2227804 combination reg byte y [ game_logic::$87 ]
Attempting to uplift remaining variables inzp[1]:328 [ game_logic::$90 ]
Uplifting [game_logic] best 2227800 combination reg byte x [ game_logic::$90 ]
Attempting to uplift remaining variables inzp[1]:329 [ game_logic::$92 ]
Uplifting [game_logic] best 2227796 combination reg byte y [ game_logic::$92 ]
Attempting to uplift remaining variables inzp[1]:330 [ game_logic::$220 ]
Uplifting [game_logic] best 2227790 combination reg byte x [ game_logic::$220 ]
Attempting to uplift remaining variables inzp[1]:331 [ game_logic::$223 ]
Uplifting [game_logic] best 2227784 combination reg byte x [ game_logic::$223 ]
Attempting to uplift remaining variables inzp[1]:332 [ game_logic::$226 ]
Uplifting [game_logic] best 2227778 combination reg byte x [ game_logic::$226 ]
Attempting to uplift remaining variables inzp[1]:333 [ game_logic::$229 ]
Uplifting [game_logic] best 2227772 combination reg byte x [ game_logic::$229 ]
Attempting to uplift remaining variables inzp[1]:334 [ game_logic::$232 ]
Uplifting [game_logic] best 2227766 combination reg byte x [ game_logic::$232 ]
Attempting to uplift remaining variables inzp[1]:335 [ game_logic::pacman_xtile1#0 ]
Uplifting [game_logic] best 2227762 combination reg byte x [ game_logic::pacman_xtile1#0 ]
Attempting to uplift remaining variables inzp[1]:336 [ game_logic::pacman_ytile1#0 ]
Uplifting [game_logic] best 2227756 combination reg byte a [ game_logic::pacman_ytile1#0 ]
Attempting to uplift remaining variables inzp[1]:337 [ game_logic::pacman_xtile#0 ]
Uplifting [game_logic] best 2227756 combination zp[1]:337 [ game_logic::pacman_xtile#0 ]
Attempting to uplift remaining variables inzp[1]:338 [ game_logic::pacman_bob_xfine#0 ]
Uplifting [game_logic] best 2227753 combination reg byte y [ game_logic::pacman_bob_xfine#0 ]
Attempting to uplift remaining variables inzp[1]:339 [ game_logic::ghost1_bob_xfine#0 ]
Uplifting [game_logic] best 2227750 combination reg byte y [ game_logic::ghost1_bob_xfine#0 ]
Attempting to uplift remaining variables inzp[1]:340 [ game_logic::ghost2_bob_xfine#0 ]
Uplifting [game_logic] best 2227747 combination reg byte y [ game_logic::ghost2_bob_xfine#0 ]
Attempting to uplift remaining variables inzp[1]:341 [ game_logic::ghost3_bob_xfine#0 ]
Uplifting [game_logic] best 2227744 combination reg byte y [ game_logic::ghost3_bob_xfine#0 ]
Attempting to uplift remaining variables inzp[1]:342 [ game_logic::ghost4_bob_xfine#0 ]
Uplifting [game_logic] best 2227741 combination reg byte y [ game_logic::ghost4_bob_xfine#0 ]
Attempting to uplift remaining variables inzp[1]:345 [ game_logic::open_directions#1 ]
Uplifting [game_logic] best 2227734 combination reg byte y [ game_logic::open_directions#1 ]
Attempting to uplift remaining variables inzp[1]:346 [ game_logic::open_directions1#1 ]
Uplifting [game_logic] best 2227727 combination reg byte y [ game_logic::open_directions1#1 ]
Attempting to uplift remaining variables inzp[1]:347 [ game_logic::open_directions2#1 ]
Uplifting [game_logic] best 2227720 combination reg byte y [ game_logic::open_directions2#1 ]
Attempting to uplift remaining variables inzp[1]:348 [ game_logic::open_directions3#1 ]
Uplifting [game_logic] best 2227713 combination reg byte y [ game_logic::open_directions3#1 ]
Attempting to uplift remaining variables inzp[1]:351 [ game_logic::open_directions4#0 ]
Uplifting [game_logic] best 2227712 combination reg byte x [ game_logic::open_directions4#0 ]
Attempting to uplift remaining variables inzp[1]:352 [ game_logic_substep ]
Uplifting [] best 2227712 combination zp[1]:352 [ game_logic_substep ]
Attempting to uplift remaining variables inzp[1]:353 [ game_logic::$210 ]
Uplifting [game_logic] best 2227712 combination zp[1]:353 [ game_logic::$210 ]
Attempting to uplift remaining variables inzp[1]:354 [ game_logic::ghost4_xtile#0 ]
Uplifting [game_logic] best 2227712 combination zp[1]:354 [ game_logic::ghost4_xtile#0 ]
Attempting to uplift remaining variables inzp[1]:355 [ game_logic::ghost4_ytile#0 ]
Uplifting [game_logic] best 2227712 combination zp[1]:355 [ game_logic::ghost4_ytile#0 ]
Attempting to uplift remaining variables inzp[1]:356 [ game_logic::ghost3_xtile#0 ]
Uplifting [game_logic] best 2227712 combination zp[1]:356 [ game_logic::ghost3_xtile#0 ]
Attempting to uplift remaining variables inzp[1]:357 [ game_logic::ghost3_ytile#0 ]
Uplifting [game_logic] best 2227712 combination zp[1]:357 [ game_logic::ghost3_ytile#0 ]
Attempting to uplift remaining variables inzp[1]:358 [ game_logic::ghost2_xtile#0 ]
Uplifting [game_logic] best 2227712 combination zp[1]:358 [ game_logic::ghost2_xtile#0 ]
Attempting to uplift remaining variables inzp[1]:359 [ game_logic::ghost2_ytile#0 ]
Uplifting [game_logic] best 2227712 combination zp[1]:359 [ game_logic::ghost2_ytile#0 ]
Attempting to uplift remaining variables inzp[1]:360 [ game_logic::ghost1_xtile#0 ]
Uplifting [game_logic] best 2227712 combination zp[1]:360 [ game_logic::ghost1_xtile#0 ]
Attempting to uplift remaining variables inzp[1]:361 [ game_logic::ghost1_ytile#0 ]
Uplifting [game_logic] best 2227712 combination zp[1]:361 [ game_logic::ghost1_ytile#0 ]
Attempting to uplift remaining variables inzp[1]:362 [ pacman_ch1_idx ]
Uplifting [] best 2227712 combination zp[1]:362 [ pacman_ch1_idx ]
Attempting to uplift remaining variables inzp[1]:363 [ ghosts_mode ]
Uplifting [] best 2227712 combination zp[1]:363 [ ghosts_mode ]
Attempting to uplift remaining variables inzp[1]:364 [ anim_frame_idx ]
Uplifting [] best 2227712 combination zp[1]:364 [ anim_frame_idx ]
Attempting to uplift remaining variables inzp[1]:365 [ ghost1_reverse ]
Uplifting [] best 2227712 combination zp[1]:365 [ ghost1_reverse ]
Attempting to uplift remaining variables inzp[1]:366 [ ghost2_reverse ]
Uplifting [] best 2227712 combination zp[1]:366 [ ghost2_reverse ]
Attempting to uplift remaining variables inzp[1]:367 [ ghost3_reverse ]
Uplifting [] best 2227712 combination zp[1]:367 [ ghost3_reverse ]
Attempting to uplift remaining variables inzp[1]:368 [ ghost4_reverse ]
Uplifting [] best 2227712 combination zp[1]:368 [ ghost4_reverse ]
Attempting to uplift remaining variables inzp[1]:369 [ frame ]
Uplifting [] best 2227712 combination zp[1]:369 [ frame ]
Attempting to uplift remaining variables inzp[1]:370 [ pacman_ch1_enabled ]
Uplifting [] best 2227712 combination zp[1]:370 [ pacman_ch1_enabled ]
Coalescing zero page register [ zp[2]:124 [ merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 ] ] with [ zp[2]:142 [ merge_code::raster_code#1 ] ] - score: 2
Coalescing zero page register [ zp[2]:112 [ merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 ] ] with [ zp[2]:97 [ merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 ] ] - score: 2
Coalescing zero page register [ zp[2]:112 [ merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 ] ] with [ zp[2]:66 [ merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 ] ] - score: 2
Coalescing zero page register [ zp[2]:75 [ merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 ] ] with [ zp[2]:116 [ merge_code::dest_code#2 ] ] - score: 2
Coalescing zero page register [ zp[1]:230 [ game_logic::target_ytile#3 game_logic::target_ytile#2 ] ] with [ zp[1]:207 [ choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 ] ] - score: 1
Coalescing zero page register [ zp[1]:100 [ done_run::xcol#2 done_run::xcol#1 ] ] with [ zp[1]:61 [ render::xcol#2 render::xcol#0 render::xcol#1 ] ] - score: 1
Coalescing zero page register [ zp[1]:71 [ done_run::ypos#2 done_run::ypos#1 ] ] with [ zp[1]:64 [ render::ypos#2 render::ypos#0 render::ypos#1 ] ] - score: 1
Coalescing zero page register [ zp[1]:212 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 ] ] with [ zp[1]:355 [ game_logic::ghost4_ytile#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:212 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 game_logic::ghost4_ytile#0 ] ] with [ zp[1]:357 [ game_logic::ghost3_ytile#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:212 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 game_logic::ghost4_ytile#0 game_logic::ghost3_ytile#0 ] ] with [ zp[1]:359 [ game_logic::ghost2_ytile#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:212 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 game_logic::ghost4_ytile#0 game_logic::ghost3_ytile#0 game_logic::ghost2_ytile#0 ] ] with [ zp[1]:361 [ game_logic::ghost1_ytile#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:212 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 game_logic::ghost4_ytile#0 game_logic::ghost3_ytile#0 game_logic::ghost2_ytile#0 game_logic::ghost1_ytile#0 ] ] with [ zp[1]:293 [ choose_direction::ydiff#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:174 [ memset::num#5 ] ] with [ zp[2]:169 [ memset::end#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:371 [ memset::str#6 ] ] with [ zp[2]:128 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
Coalescing zero page register [ zp[1]:70 [ level_show::ytile#2 level_show::ytile#1 ] ] with [ zp[1]:57 [ render_tiles::ytile#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:40 [ level_show::xcol#2 level_show::xcol#1 ] ] with [ zp[1]:56 [ render_tiles::xcol#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:33 [ level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 ] ] with [ zp[2]:165 [ level_show::return#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:13 [ render::canvas2#2 render::canvas2#0 render::canvas2#1 ] ] with [ zp[2]:54 [ render::canvas_offset#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:5 [ render_tiles::canvas2#2 render_tiles::canvas2#0 render_tiles::canvas2#1 ] ] with [ zp[2]:27 [ render_tiles::canvas_offset#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:343 [ game_logic::ytiles#0 ] ] with [ zp[2]:265 [ game_logic::$67 ] ] - score: 1
Coalescing zero page register [ zp[2]:343 [ game_logic::ytiles#0 game_logic::$67 ] ] with [ zp[2]:270 [ game_logic::$71 ] ] - score: 1
Coalescing zero page register [ zp[2]:104 [ init_render_index::$11 ] ] with [ zp[2]:106 [ init_render_index::$10 ] ] - score: 1
Coalescing zero page register [ zp[2]:108 [ init_render_index::$12 ] ] with [ zp[2]:121 [ init_render_index::canvas#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:230 [ game_logic::target_ytile#3 game_logic::target_ytile#2 choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 ] ] with [ zp[1]:231 [ game_logic::target_ytile1#3 game_logic::target_ytile1#2 ] ] - score: 1
Coalescing zero page register [ zp[1]:230 [ game_logic::target_ytile#3 game_logic::target_ytile#2 choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 game_logic::target_ytile1#3 game_logic::target_ytile1#2 ] ] with [ zp[1]:232 [ game_logic::target_ytile2#3 game_logic::target_ytile2#2 ] ] - score: 1
Coalescing zero page register [ zp[1]:230 [ game_logic::target_ytile#3 game_logic::target_ytile#2 choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 game_logic::target_ytile1#3 game_logic::target_ytile1#2 game_logic::target_ytile2#3 game_logic::target_ytile2#2 ] ] with [ zp[1]:233 [ game_logic::target_ytile3#3 game_logic::target_ytile3#2 ] ] - score: 1
Coalescing zero page register [ zp[1]:100 [ done_run::xcol#2 done_run::xcol#1 render::xcol#2 render::xcol#0 render::xcol#1 ] ] with [ zp[1]:130 [ splash_show::xcol#2 splash_show::xcol#1 ] ] - score: 1
Coalescing zero page register [ zp[1]:71 [ done_run::ypos#2 done_run::ypos#1 render::ypos#2 render::ypos#0 render::ypos#1 ] ] with [ zp[1]:102 [ splash_show::ypos#2 splash_show::ypos#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:33 [ level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 level_show::return#0 ] ] with [ zp[2]:167 [ gameplay_run::$4 ] ] - score: 1
Coalescing zero page register [ zp[2]:104 [ init_render_index::$11 init_render_index::$10 ] ] with [ zp[2]:108 [ init_render_index::$12 init_render_index::canvas#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:174 [ memset::num#5 memset::end#0 ] ] with [ zp[2]:87 [ done_run::gfx#4 done_run::gfx#2 done_run::gfx#1 ] ]
Coalescing zero page register [ zp[2]:124 [ merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 merge_code::raster_code#1 ] ] with [ zp[2]:371 [ memset::str#6 memset::dst#2 memset::dst#4 memset::dst#1 ] ]
Coalescing zero page register [ zp[1]:136 [ init_render_index::x_col#2 init_render_index::x_col#1 ] ] with [ zp[1]:100 [ done_run::xcol#2 done_run::xcol#1 render::xcol#2 render::xcol#0 render::xcol#1 splash_show::xcol#2 splash_show::xcol#1 ] ]
Coalescing zero page register [ zp[2]:144 [ init_render_index::render_index_xcol#0 init_render_index::render_index#1 ] ] with [ zp[2]:112 [ merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 ] ]
Coalescing zero page register [ zp[2]:156 [ init_render_index::render_ypos_table#4 ] ] with [ zp[2]:75 [ merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 merge_code::dest_code#2 ] ]
Coalescing zero page register [ zp[1]:103 [ init_render_index::y_pos#2 init_render_index::y_pos#1 ] ] with [ zp[1]:71 [ done_run::ypos#2 done_run::ypos#1 render::ypos#2 render::ypos#0 render::ypos#1 splash_show::ypos#2 splash_show::ypos#1 ] ]
Coalescing zero page register [ zp[2]:118 [ splash_show::splash#4 splash_show::splash#2 splash_show::splash#1 ] ] with [ zp[2]:114 [ init_render_index::render_index_xcol#2 init_render_index::render_index_xcol#7 init_render_index::render_index_xcol#1 ] ]
Coalescing zero page register [ zp[2]:83 [ init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_1#1 ] ] with [ zp[2]:133 [ init_bobs_restore::bob_restore#5 init_bobs_restore::bob_restore#1 ] ]
Coalescing zero page register [ zp[2]:131 [ memcpy::src#2 memcpy::src#1 ] ] with [ zp[2]:77 [ init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_2#1 ] ]
Coalescing zero page register [ zp[1]:69 [ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 ] ] with [ zp[1]:162 [ splash_run::i#2 splash_run::i#1 ] ]
Coalescing zero page register [ zp[2]:85 [ init_level_tile_directions::directions#7 init_level_tile_directions::directions#1 ] ] with [ zp[2]:137 [ memcpy::dst#2 memcpy::dst#1 ] ]
Coalescing zero page register [ zp[1]:70 [ level_show::ytile#2 level_show::ytile#1 render_tiles::ytile#0 ] ] with [ zp[1]:41 [ init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 ] ]
Coalescing zero page register [ zp[1]:40 [ level_show::xcol#2 level_show::xcol#1 render_tiles::xcol#0 ] ] with [ zp[1]:31 [ init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ] ]
Coalescing zero page register [ zp[1]:65 [ render::pixels#4 render::pixels#0 render::pixels#1 ] ] with [ zp[1]:58 [ level_show::xtile#3 level_show::xtile#2 ] ]
Coalescing zero page register [ zp[2]:11 [ render::canvas1#2 render::canvas1#0 render::canvas1#1 ] ] with [ zp[2]:79 [ level_show::level#8 level_show::level#1 ] ]
Coalescing zero page register [ zp[2]:13 [ render::canvas2#2 render::canvas2#0 render::canvas2#1 render::canvas_offset#0 ] ] with [ zp[2]:33 [ level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 level_show::return#0 gameplay_run::$4 ] ]
Coalescing zero page register [ zp[1]:337 [ game_logic::pacman_xtile#0 ] ] with [ zp[1]:229 [ choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ] ]
Coalescing zero page register [ zp[1]:353 [ game_logic::$210 ] ] with [ zp[1]:179 [ choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ] ]
Coalescing zero page register [ zp[1]:354 [ game_logic::ghost4_xtile#0 ] ] with [ zp[1]:203 [ choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ] ]
Coalescing zero page register [ zp[2]:177 [ splash_run::xpos#0 ] ] with [ zp[2]:7 [ render_tiles::canvas1#2 render_tiles::canvas1#0 render_tiles::canvas1#1 ] ]
Coalescing zero page register [ zp[1]:127 [ merge_code::logic_cycles#0 ] ] with [ zp[1]:2 [ render_tiles::y#2 render_tiles::y#1 ] ]
Coalescing zero page register [ zp[2]:154 [ init_render_index::canvas_xcol#0 ] ] with [ zp[2]:5 [ render_tiles::canvas2#2 render_tiles::canvas2#0 render_tiles::canvas2#1 render_tiles::canvas_offset#0 ] ]
Coalescing zero page register [ zp[2]:73 [ render::render_index_xcol#0 ] ] with [ zp[2]:104 [ init_render_index::$11 init_render_index::$10 init_render_index::$12 init_render_index::canvas#0 ] ]
Coalescing zero page register [ zp[1]:19 [ render::ypix#0 ] ] with [ zp[1]:63 [ level_show::tile_right#0 ] ]
Coalescing zero page register [ zp[2]:17 [ render_tiles::tile_left_pixels#0 ] ] with [ zp[2]:22 [ level_tile_get::ytiles#0 ] ]
Coalescing zero page register [ zp[2]:144 [ init_render_index::render_index_xcol#0 init_render_index::render_index#1 merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 ] ] with [ zp[2]:174 [ memset::num#5 memset::end#0 done_run::gfx#4 done_run::gfx#2 done_run::gfx#1 ] ]
Coalescing zero page register [ zp[2]:118 [ splash_show::splash#4 splash_show::splash#2 splash_show::splash#1 init_render_index::render_index_xcol#2 init_render_index::render_index_xcol#7 init_render_index::render_index_xcol#1 ] ] with [ zp[2]:124 [ merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 merge_code::raster_code#1 memset::str#6 memset::dst#2 memset::dst#4 memset::dst#1 ] ]
Coalescing zero page register [ zp[2]:83 [ init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_1#1 init_bobs_restore::bob_restore#5 init_bobs_restore::bob_restore#1 ] ] with [ zp[2]:156 [ init_render_index::render_ypos_table#4 merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 merge_code::dest_code#2 ] ]
Coalescing zero page register [ zp[1]:69 [ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 splash_run::i#2 splash_run::i#1 ] ] with [ zp[1]:136 [ init_render_index::x_col#2 init_render_index::x_col#1 done_run::xcol#2 done_run::xcol#1 render::xcol#2 render::xcol#0 render::xcol#1 splash_show::xcol#2 splash_show::xcol#1 ] ]
Coalescing zero page register [ zp[1]:70 [ level_show::ytile#2 level_show::ytile#1 render_tiles::ytile#0 init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 ] ] with [ zp[1]:103 [ init_render_index::y_pos#2 init_render_index::y_pos#1 done_run::ypos#2 done_run::ypos#1 render::ypos#2 render::ypos#0 render::ypos#1 splash_show::ypos#2 splash_show::ypos#1 ] ]
Coalescing zero page register [ zp[2]:11 [ render::canvas1#2 render::canvas1#0 render::canvas1#1 level_show::level#8 level_show::level#1 ] ] with [ zp[2]:131 [ memcpy::src#2 memcpy::src#1 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_2#1 ] ]
Coalescing zero page register [ zp[2]:13 [ render::canvas2#2 render::canvas2#0 render::canvas2#1 render::canvas_offset#0 level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 level_show::return#0 gameplay_run::$4 ] ] with [ zp[2]:85 [ init_level_tile_directions::directions#7 init_level_tile_directions::directions#1 memcpy::dst#2 memcpy::dst#1 ] ]
Coalescing zero page register [ zp[1]:19 [ render::ypix#0 level_show::tile_right#0 ] ] with [ zp[1]:127 [ merge_code::logic_cycles#0 render_tiles::y#2 render_tiles::y#1 ] ]
Coalescing zero page register [ zp[2]:17 [ render_tiles::tile_left_pixels#0 level_tile_get::ytiles#0 ] ] with [ zp[2]:73 [ render::render_index_xcol#0 init_render_index::$11 init_render_index::$10 init_render_index::$12 init_render_index::canvas#0 ] ]
Coalescing zero page register [ zp[2]:13 [ render::canvas2#2 render::canvas2#0 render::canvas2#1 render::canvas_offset#0 level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 level_show::return#0 gameplay_run::$4 init_level_tile_directions::directions#7 init_level_tile_directions::directions#1 memcpy::dst#2 memcpy::dst#1 ] ] with [ zp[2]:83 [ init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_1#1 init_bobs_restore::bob_restore#5 init_bobs_restore::bob_restore#1 init_render_index::render_ypos_table#4 merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 merge_code::dest_code#2 ] ]
Coalescing zero page register [ zp[2]:177 [ splash_run::xpos#0 render_tiles::canvas1#2 render_tiles::canvas1#0 render_tiles::canvas1#1 ] ] with [ zp[2]:144 [ init_render_index::render_index_xcol#0 init_render_index::render_index#1 merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 memset::num#5 memset::end#0 done_run::gfx#4 done_run::gfx#2 done_run::gfx#1 ] ]
Coalescing zero page register [ zp[2]:15 [ render_tiles::tile_right_pixels#0 ] ] with [ zp[2]:118 [ splash_show::splash#4 splash_show::splash#2 splash_show::splash#1 init_render_index::render_index_xcol#2 init_render_index::render_index_xcol#7 init_render_index::render_index_xcol#1 merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 merge_code::raster_code#1 memset::str#6 memset::dst#2 memset::dst#4 memset::dst#1 ] ]
Allocated (was zp[1]:19) zp[1]:2 [ render::ypix#0 level_show::tile_right#0 merge_code::logic_cycles#0 render_tiles::y#2 render_tiles::y#1 ]
Allocated (was zp[2]:154) zp[2]:3 [ init_render_index::canvas_xcol#0 render_tiles::canvas2#2 render_tiles::canvas2#0 render_tiles::canvas2#1 render_tiles::canvas_offset#0 ]
Allocated (was zp[2]:177) zp[2]:5 [ splash_run::xpos#0 render_tiles::canvas1#2 render_tiles::canvas1#0 render_tiles::canvas1#1 init_render_index::render_index_xcol#0 init_render_index::render_index#1 merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 memset::num#5 memset::end#0 done_run::gfx#4 done_run::gfx#2 done_run::gfx#1 ]
Allocated (was zp[2]:11) zp[2]:7 [ render::canvas1#2 render::canvas1#0 render::canvas1#1 level_show::level#8 level_show::level#1 memcpy::src#2 memcpy::src#1 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_2#1 ]
Allocated (was zp[2]:13) zp[2]:9 [ render::canvas2#2 render::canvas2#0 render::canvas2#1 render::canvas_offset#0 level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 level_show::return#0 gameplay_run::$4 init_level_tile_directions::directions#7 init_level_tile_directions::directions#1 memcpy::dst#2 memcpy::dst#1 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_1#1 init_bobs_restore::bob_restore#5 init_bobs_restore::bob_restore#1 init_render_index::render_ypos_table#4 merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 merge_code::dest_code#2 ]
Allocated (was zp[2]:15) zp[2]:11 [ render_tiles::tile_right_pixels#0 splash_show::splash#4 splash_show::splash#2 splash_show::splash#1 init_render_index::render_index_xcol#2 init_render_index::render_index_xcol#7 init_render_index::render_index_xcol#1 merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 merge_code::raster_code#1 memset::str#6 memset::dst#2 memset::dst#4 memset::dst#1 ]
Allocated (was zp[2]:17) zp[2]:13 [ render_tiles::tile_left_pixels#0 level_tile_get::ytiles#0 render::render_index_xcol#0 init_render_index::$11 init_render_index::$10 init_render_index::$12 init_render_index::canvas#0 ]
Allocated (was zp[1]:40) zp[1]:15 [ level_show::xcol#2 level_show::xcol#1 render_tiles::xcol#0 init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ]
Allocated (was zp[1]:70) zp[1]:16 [ level_show::ytile#2 level_show::ytile#1 render_tiles::ytile#0 init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 init_render_index::y_pos#2 init_render_index::y_pos#1 done_run::ypos#2 done_run::ypos#1 render::ypos#2 render::ypos#0 render::ypos#1 splash_show::ypos#2 splash_show::ypos#1 ]
Allocated (was zp[2]:38) zp[2]:17 [ render_tiles::render_index_xcol#0 ]
Allocated (was zp[1]:65) zp[1]:19 [ render::pixels#4 render::pixels#0 render::pixels#1 level_show::xtile#3 level_show::xtile#2 ]
Allocated (was zp[1]:69) zp[1]:20 [ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 splash_run::i#2 splash_run::i#1 init_render_index::x_col#2 init_render_index::x_col#1 done_run::xcol#2 done_run::xcol#1 render::xcol#2 render::xcol#0 render::xcol#1 splash_show::xcol#2 splash_show::xcol#1 ]
Allocated (was zp[1]:123) zp[1]:21 [ music_play_next ]
Allocated (was zp[1]:146) zp[1]:22 [ side_sprites_color ]
Allocated (was zp[1]:147) zp[1]:23 [ side_sprites_mc ]
Allocated (was zp[1]:148) zp[1]:24 [ bottom_sprites_color ]
Allocated (was zp[1]:149) zp[1]:25 [ bottom_sprites_mc ]
Allocated (was zp[2]:150) zp[2]:26 [ logic_tile_ptr ]
Allocated (was zp[1]:152) zp[1]:28 [ logic_tile_xcol ]
Allocated (was zp[1]:153) zp[1]:29 [ logic_tile_yfine ]
Allocated (was zp[1]:159) zp[1]:30 [ top_sprites_color ]
Allocated (was zp[1]:163) zp[1]:31 [ pacman_wins ]
Allocated (was zp[1]:172) zp[1]:32 [ canvas_base_hi ]
Allocated (was zp[1]:173) zp[1]:33 [ bobs_restore_base ]
Allocated (was zp[1]:353) zp[1]:34 [ game_logic::$210 choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ]
Allocated (was zp[1]:180) zp[1]:35 [ pacman_lives ]
Allocated (was zp[2]:181) zp[2]:36 [ byteboozer_decrunch::crunched ]
Allocated (was zp[1]:183) zp[1]:38 [ ghost1_respawn ]
Allocated (was zp[1]:230) zp[1]:39 [ game_logic::target_ytile#3 game_logic::target_ytile#2 choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 game_logic::target_ytile1#3 game_logic::target_ytile1#2 game_logic::target_ytile2#3 game_logic::target_ytile2#2 game_logic::target_ytile3#3 game_logic::target_ytile3#2 ]
Allocated (was zp[1]:184) zp[1]:40 [ ghost2_respawn ]
Allocated (was zp[1]:185) zp[1]:41 [ ghost3_respawn ]
Allocated (was zp[1]:186) zp[1]:42 [ ghost4_respawn ]
Allocated (was zp[1]:187) zp[1]:43 [ ghosts_mode_count ]
Allocated (was zp[1]:188) zp[1]:44 [ pacman_substep ]
Allocated (was zp[1]:190) zp[1]:45 [ ghost1_substep ]
Allocated (was zp[1]:191) zp[1]:46 [ ghost2_substep ]
Allocated (was zp[1]:192) zp[1]:47 [ ghost3_substep ]
Allocated (was zp[1]:193) zp[1]:48 [ ghost4_substep ]
Allocated (was zp[2]:195) zp[2]:49 [ level_tile_directions::ytiles#0 ]
Allocated (was zp[1]:354) zp[1]:51 [ game_logic::ghost4_xtile#0 choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ]
Allocated (was zp[1]:212) zp[1]:52 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 game_logic::ghost4_ytile#0 game_logic::ghost3_ytile#0 game_logic::ghost2_ytile#0 game_logic::ghost1_ytile#0 choose_direction::ydiff#0 ]
Allocated (was zp[1]:208) zp[1]:53 [ pacman_direction ]
Allocated (was zp[1]:209) zp[1]:54 [ ghost1_direction ]
Allocated (was zp[1]:210) zp[1]:55 [ ghost2_direction ]
Allocated (was zp[1]:213) zp[1]:56 [ ghost3_direction ]
Allocated (was zp[1]:214) zp[1]:57 [ ghost4_direction ]
Allocated (was zp[1]:215) zp[1]:58 [ top_sprites_mc ]
Allocated (was zp[1]:216) zp[1]:59 [ ghost1_xfine ]
Allocated (was zp[1]:217) zp[1]:60 [ ghost1_yfine ]
Allocated (was zp[1]:218) zp[1]:61 [ phase ]
Allocated (was zp[1]:219) zp[1]:62 [ ghost2_xfine ]
Allocated (was zp[1]:220) zp[1]:63 [ ghost2_yfine ]
Allocated (was zp[1]:221) zp[1]:64 [ ghost3_xfine ]
Allocated (was zp[1]:222) zp[1]:65 [ game_playable ]
Allocated (was zp[1]:223) zp[1]:66 [ ghost3_yfine ]
Allocated (was zp[1]:224) zp[1]:67 [ ghost4_xfine ]
Allocated (was zp[1]:225) zp[1]:68 [ ghost4_yfine ]
Allocated (was zp[2]:343) zp[2]:69 [ game_logic::ytiles#0 game_logic::$67 game_logic::$71 ]
Allocated (was zp[1]:226) zp[1]:71 [ pacman_xfine ]
Allocated (was zp[1]:227) zp[1]:72 [ pacman_yfine ]
Allocated (was zp[1]:337) zp[1]:73 [ game_logic::pacman_xtile#0 choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ]
Allocated (was zp[1]:228) zp[1]:74 [ game_logic::ghost_frame_idx#2 game_logic::ghost_frame_idx#0 game_logic::ghost_frame_idx#1 ]
Allocated (was zp[1]:294) zp[1]:75 [ choose_direction::xdiff#0 ]
Allocated (was zp[1]:295) zp[1]:76 [ logic_tile_left_idx ]
Allocated (was zp[1]:296) zp[1]:77 [ logic_tile_right_idx ]
Allocated (was zp[2]:297) zp[2]:78 [ left_render_index_xcol ]
Allocated (was zp[2]:299) zp[2]:80 [ left_canvas ]
Allocated (was zp[1]:301) zp[1]:82 [ left_ypos_inc_offset ]
Allocated (was zp[2]:302) zp[2]:83 [ rigt_render_index_xcol ]
Allocated (was zp[2]:304) zp[2]:85 [ rigt_canvas ]
Allocated (was zp[1]:306) zp[1]:87 [ rigt_ypos_inc_offset ]
Allocated (was zp[2]:314) zp[2]:88 [ pill_count ]
Allocated (was zp[1]:352) zp[1]:90 [ game_logic_substep ]
Allocated (was zp[1]:356) zp[1]:91 [ game_logic::ghost3_xtile#0 ]
Allocated (was zp[1]:358) zp[1]:92 [ game_logic::ghost2_xtile#0 ]
Allocated (was zp[1]:360) zp[1]:93 [ game_logic::ghost1_xtile#0 ]
Allocated (was zp[1]:362) zp[1]:94 [ pacman_ch1_idx ]
Allocated (was zp[1]:363) zp[1]:95 [ ghosts_mode ]
Allocated (was zp[1]:364) zp[1]:96 [ anim_frame_idx ]
Allocated (was zp[1]:365) zp[1]:97 [ ghost1_reverse ]
Allocated (was zp[1]:366) zp[1]:98 [ ghost2_reverse ]
Allocated (was zp[1]:367) zp[1]:99 [ ghost3_reverse ]
Allocated (was zp[1]:368) zp[1]:100 [ ghost4_reverse ]
Allocated (was zp[1]:369) zp[1]:101 [ frame ]
Allocated (was zp[1]:370) zp[1]:102 [ pacman_ch1_enabled ]
Interrupt procedure irq_screen_top clobbers AXYZcnzvidePSB
ASSEMBLER BEFORE OPTIMIZATION
// File Comments
// Camelot Borderline Entry
// Pacman made with 9 sprites in in the borders
// Upstart
// Commodore 64 PRG executable file
.plugin "se.triad.kickass.CruncherPlugins"
.file [name="pacman.prg", type="prg", segments="Program", modify="B2exe", _jmpAdress=__start]
.segmentdef Program [segments="Code, Data, Init"]
.segmentdef Code [start=$810]
.segmentdef Data [startAfter="Code"]
.segmentdef Init [startAfter="Data"]
// 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
/// $D011 Control Register #1 Bit#7: RST8 9th Bit for $D012 Rasterline counter
.const VICII_RST8 = $80
/// $D011 Control Register #1 Bit#6: ECM Turn Extended Color Mode on/off
.const VICII_ECM = $40
/// $D011 Control Register #1 Bit#5: BMM Turn Bitmap Mode on/off
.const VICII_BMM = $20
/// $D011 Control Register #1 Bit#4: DEN Switch VIC-II output on/off
.const VICII_DEN = $10
/// $D011 Control Register #1 Bit#3: RSEL Switch betweem 25 or 24 visible rows
/// RSEL| Display window height | First line | Last line
/// ----+--------------------------+-------------+----------
/// 0 | 24 text lines/192 pixels | 55 ($37) | 246 ($f6)
/// 1 | 25 text lines/200 pixels | 51 ($33) | 250 ($fa)
.const VICII_RSEL = 8
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
/// | | to register 0xd012 and bit 7 of $d011 and internally stored by
/// | | the VIC for the raster compare. The test for reaching the
/// | | interrupt raster line is done in cycle 0 of every line (for line
/// | | 0, in cycle 1).
.const IRQ_RASTER = 1
/// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
/// RAM in all three areas 0xA000, 0xD000, 0xE000
.const PROCPORT_RAM_ALL = 0
/// 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 BLUE = 6
.const YELLOW = 7
.const EMPTY = 0
.const PILL = 1
.const POWERUP = 2
.const WALL = 4
// Address of the (decrunched) splash screen
.const BOB_ROW_SIZE = $80
.const RENDER_OFFSET_CANVAS_LO = 0
.const RENDER_OFFSET_CANVAS_HI = $50
.const RENDER_OFFSET_YPOS_INC = $a0
// The number of bobs rendered
.const NUM_BOBS = 5
// The size of the BOB restore structure
.const SIZE_BOB_RESTORE = $12
// Size of the crunched music
.const INTRO_MUSIC_CRUNCHED_SIZE = $600
// The raster line for irq_screen_top()
.const IRQ_SCREEN_TOP_LINE = 5
.const STOP = 0
.const UP = 4
.const DOWN = 8
.const LEFT = $10
.const RIGHT = $20
.const CHASE = 0
.const SCATTER = 1
.const FRIGHTENED = 2
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
.const OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE = $18
.const OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH = 2
.const OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL = 4
.const OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY = 5
.const OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE = 6
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
.const OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB = $10
.const OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE = $15
.const OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X = $1d
.const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
.const OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1 = $25
.const OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2 = $26
.const OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC = $1c
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
.const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
.const OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE = $1a
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y = 1
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y = 3
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y = 5
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y = 7
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y = 9
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y = $b
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y = $d
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y = $f
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR = $27
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR = $28
.const OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS = $19
.const SIZEOF_CHAR = 1
/// Sprite X position register for sprite #0
.label SPRITES_XPOS = $d000
/// Sprite Y position register for sprite #0
.label SPRITES_YPOS = $d001
/// Sprite colors register for sprite #0
.label SPRITES_COLOR = $d027
/// $D012 RASTER Raster counter
.label RASTER = $d012
/// $D020 Border Color
.label BORDER_COLOR = $d020
/// $D011 Control Register #1
/// - Bit#0-#2: YSCROLL Screen Soft Scroll Vertical
/// - Bit#3: RSEL Switch betweem 25 or 24 visible rows
/// RSEL| Display window height | First line | Last line
/// ----+--------------------------+-------------+----------
/// 0 | 24 text lines/192 pixels | 55 ($37) | 246 ($f6)
/// 1 | 25 text lines/200 pixels | 51 ($33) | 250 ($fa)
/// - Bit#4: DEN Switch VIC-II output on/off
/// - Bit#5: BMM Turn Bitmap Mode on/off
/// - Bit#6: ECM Turn Extended Color Mode on/off
/// - Bit#7: RST8 9th Bit for $D012 Rasterline counter
/// Initial Value: %10011011
.label VICII_CONTROL1 = $d011
/// $D016 Control register 2
/// - Bit#0-#2: XSCROLL Screen Soft Scroll Horizontal
/// - Bit#3: CSEL Switch betweem 40 or 38 visible columns
/// CSEL| Display window width | First X coo. | Last X coo.
/// ----+--------------------------+--------------+------------
/// 0 | 38 characters/304 pixels | 31 ($1f) | 334 ($14e)
/// 1 | 40 characters/320 pixels | 24 ($18) | 343 ($157)
/// - Bit#4: MCM Turn Multicolor Mode on/off
/// - Bit#5-#7: not used
/// Initial Value: %00001000
.label VICII_CONTROL2 = $d016
/// $D018 VIC-II base addresses
/// - Bit#0: not used
/// - Bit#1-#3: CB Address Bits 11-13 of the Character Set (*2048)
/// - Bit#4-#7: VM Address Bits 10-13 of the Screen RAM (*1024)
/// Initial Value: %00010100
.label VICII_MEMORY = $d018
/// VIC II IRQ Status Register
.label IRQ_STATUS = $d019
/// Channel 1 Frequency High byte
.label SID_CH1_FREQ_HI = $d401
/// 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
/// The VIC-II MOS 6567/6569
.label VICII = $d000
/// 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
// Graphics Bank 1
// Address of the sprites
.label BANK_1 = $4000
// Address of the sprites
.label SPRITES_1 = $6000
// Use sprite pointers on all screens (0x43f8, 0x47f8, ...)
.label SCREENS_1 = $4000
// Graphics Bank 2
// Address of the sprites
.label BANK_2 = $c000
// Address of the sprites
.label SPRITES_2 = $e000
// Use sprite pointers on all screens (0x43f8, 0x47f8, ...)
.label SCREENS_2 = $c000
// The location where the logic code will be located before merging
.label LOGIC_CODE_UNMERGED = $e000
// The location where the screen raster code will be located before merging
.label RASTER_CODE_UNMERGED = $6000
// The location where the screen raster code will be located when running
.label RASTER_CODE = $8000
// Address of the (decrunched) splash screen
.label SPLASH = $4000
// Address for the victory graphics
.label WIN_GFX = $a700
// Address for the gameover graphics
.label GAMEOVER_GFX = $a700
// Address used by (decrunched) tiles
.label LEVEL_TILES = $4800
.label TILES_LEFT = LEVEL_TILES+$a00
.label TILES_RIGHT = LEVEL_TILES+$a80
.label TILES_TYPE = LEVEL_TILES+$b00
// Address used for table containing available directions for all tiles
// TABLE LEVEL_TILES_DIRECTIONS[64*37]
// The level data is organized as 37 rows of 64 bytes. Each row is 50 bytes containing DIRECTION bits plus 14 unused bytes to achieve 64-byte alignment.
.label LEVEL_TILES_DIRECTIONS = $3e00
.label BOB_MASK_LEFT = $5400
.label BOB_MASK_RIGT = BOB_MASK_LEFT+BOB_ROW_SIZE*6
.label BOB_PIXEL_LEFT = BOB_MASK_LEFT+BOB_ROW_SIZE*$c
.label BOB_PIXEL_RIGT = BOB_MASK_LEFT+BOB_ROW_SIZE*$12
// Tables pointing to the graphics.
// Each page represents one X column (1 byte wide, 4 MC pixels)
// On each page:
// - 0xNN00-0xNN4A : low-byte of the graphics for (X-column, Y-fine)
// - 0xNN50-0xNN9A : high-byte of the graphics for (X-column, Y-fine)
// - 0xNNA0-0xNNEA : index into RENDER_YPOS_INC for incrementing the y-pos.
.label RENDER_INDEX = $b600
// Upper memory location used during decrunching
.label INTRO_MUSIC_CRUNCHED_UPPER = $a700
// Address of the music during run-time
.label INTRO_MUSIC = $3000
// Pointer to the music init routine
.label musicInit = INTRO_MUSIC
// Pointer to the music play routine
.label musicPlay = INTRO_MUSIC+6
// Is the pacman eating sound enabled
.label pacman_ch1_enabled = $66
// Index into the eating sound
.label pacman_ch1_idx = $5e
// Pointer to the tile to render in the logic code
.label logic_tile_ptr = $1a
// The x-column of the tile to render
.label logic_tile_xcol = $1c
// The y-fine of the tile to render
.label logic_tile_yfine = $1d
// The ID*4 of the left tile to render
.label logic_tile_left_idx = $4c
// The ID*4 of the right tile to render
.label logic_tile_right_idx = $4d
// Variables used by the logic-code renderer and restorer
.label left_render_index_xcol = $4e
.label left_canvas = $50
.label left_ypos_inc_offset = $52
.label rigt_render_index_xcol = $53
.label rigt_canvas = $55
.label rigt_ypos_inc_offset = $57
// The high-byte of the start-address of the canvas currently being rendered to
.label canvas_base_hi = $20
// The offset used for bobs_restore - used to achieve double buffering
.label bobs_restore_base = $21
// Sprite settings used for the top/side/bottom sprites.
// Used for achieving single-color sprites on the splash and multi-color sprites in the game
.label top_sprites_color = $1e
.label top_sprites_mc = $3a
.label side_sprites_color = $16
.label side_sprites_mc = $17
.label bottom_sprites_color = $18
.label bottom_sprites_mc = $19
// The number of pills left
.label pill_count = $58
// 1 When pacman wins
.label pacman_wins = $1f
// The number of pacman lives left
.label pacman_lives = $23
// Signal for playing th next music frame during the intro
.label music_play_next = $15
// 0: intro, 1: game
.label phase = $3d
// The double buffer frame (0=BANK_1, 1=BANK_2)
.label frame = $65
// The animation frame IDX (within the current direction) [0-3]
.label anim_frame_idx = $60
// Pacman x fine position (0-99).
.label pacman_xfine = $47
// Pacman y fine position (0-70).
.label pacman_yfine = $48
// The pacman movement current direction
.label pacman_direction = $35
// Pacman movement substep (0: on tile, 1: between tiles).
.label pacman_substep = $2c
// Mode determining ghost target mode. 0: chase, 1: scatter
.label ghosts_mode = $5f
// Counts frames to change ghost mode (7 seconds scatter, 20 seconds chase )
.label ghosts_mode_count = $2b
// Ghost 1 x fine position (0-99).
.label ghost1_xfine = $3b
// Ghost 1 y fine position (0-70).
.label ghost1_yfine = $3c
// Ghost 1 movement current direction
.label ghost1_direction = $36
// Ghost 1 movement substep (0: on tile, 1: between tiles).
.label ghost1_substep = $2d
// Ghost 1 movement should be reversed (0: normal, 1: reverse direction)
.label ghost1_reverse = $61
// Ghost 1 respawn timer
.label ghost1_respawn = $26
// Ghost 2 x fine position (0-99).
.label ghost2_xfine = $3e
// Ghost 2 y fine position (0-70).
.label ghost2_yfine = $3f
// Ghost 2 movement current direction
.label ghost2_direction = $37
// Ghost 2 movement substep (0: on tile, 1: between tiles).
.label ghost2_substep = $2e
// Ghost 2 movement should be reversed (0: normal, 1: reverse direction)
.label ghost2_reverse = $62
// Ghost 2 respawn timer
.label ghost2_respawn = $28
// Ghost 3 x fine position (0-99).
.label ghost3_xfine = $40
// Ghost 3 y fine position (0-70).
.label ghost3_yfine = $42
// Ghost 3 movement current direction
.label ghost3_direction = $38
// Ghost 3 movement substep (0: on tile, 1: between tiles).
.label ghost3_substep = $2f
// Ghost 3 movement should be reversed (0: normal, 1: reverse direction)
.label ghost3_reverse = $63
// Ghost 3 respawn timer
.label ghost3_respawn = $29
// Ghost 4 x fine position (0-99).
.label ghost4_xfine = $43
// Ghost 4 y fine position (0-70).
.label ghost4_yfine = $44
// Ghost 4 movement current direction
.label ghost4_direction = $39
// Ghost 4 movement substep (0: on tile, 1: between tiles).
.label ghost4_substep = $30
// Ghost 4 movement should be reversed (0: normal, 1: reverse direction)
.label ghost4_reverse = $64
// Ghost 4 respawn timer
.label ghost4_respawn = $2a
// Game logic sub-step [0-7]. Each frame a different sub-step is animated
.label game_logic_substep = $5a
// 1 when the game is playable and characters should move around
.label game_playable = $41
.segment Code
// __start
__start: {
jmp __init1
// __start::__init1
__init1:
// [1] pacman_ch1_enabled = 0 -- vbuz1=vbuc1
lda #0
sta.z pacman_ch1_enabled
// [2] pacman_ch1_idx = 0 -- vbuz1=vbuc1
lda #0
sta.z pacman_ch1_idx
// [3] logic_tile_ptr = (volatile char *) 0 -- pbuz1=pbuc1
lda #<0
sta.z logic_tile_ptr
lda #>0
sta.z logic_tile_ptr+1
// [4] logic_tile_xcol = 0 -- vbuz1=vbuc1
lda #0
sta.z logic_tile_xcol
// [5] logic_tile_yfine = 0 -- vbuz1=vbuc1
lda #0
sta.z logic_tile_yfine
// [6] logic_tile_left_idx = 0 -- vbuz1=vbuc1
lda #0
sta.z logic_tile_left_idx
// [7] logic_tile_right_idx = 0 -- vbuz1=vbuc1
lda #0
sta.z logic_tile_right_idx
// [8] left_render_index_xcol = (char *) 0 -- pbuz1=pbuc1
lda #<0
sta.z left_render_index_xcol
lda #>0
sta.z left_render_index_xcol+1
// [9] left_canvas = (char *) 0 -- pbuz1=pbuc1
lda #<0
sta.z left_canvas
lda #>0
sta.z left_canvas+1
// [10] left_ypos_inc_offset = 0 -- vbuz1=vbuc1
lda #0
sta.z left_ypos_inc_offset
// [11] rigt_render_index_xcol = (char *) 0 -- pbuz1=pbuc1
lda #<0
sta.z rigt_render_index_xcol
lda #>0
sta.z rigt_render_index_xcol+1
// [12] rigt_canvas = (char *) 0 -- pbuz1=pbuc1
lda #<0
sta.z rigt_canvas
lda #>0
sta.z rigt_canvas+1
// [13] rigt_ypos_inc_offset = 0 -- vbuz1=vbuc1
lda #0
sta.z rigt_ypos_inc_offset
// [14] canvas_base_hi = 0 -- vbuz1=vbuc1
lda #0
sta.z canvas_base_hi
// [15] bobs_restore_base = 0 -- vbuz1=vbuc1
lda #0
sta.z bobs_restore_base
// [16] top_sprites_color = 0 -- vbuz1=vbuc1
lda #0
sta.z top_sprites_color
// [17] top_sprites_mc = 0 -- vbuz1=vbuc1
lda #0
sta.z top_sprites_mc
// [18] side_sprites_color = 0 -- vbuz1=vbuc1
lda #0
sta.z side_sprites_color
// [19] side_sprites_mc = 0 -- vbuz1=vbuc1
lda #0
sta.z side_sprites_mc
// [20] bottom_sprites_color = 0 -- vbuz1=vbuc1
lda #0
sta.z bottom_sprites_color
// [21] bottom_sprites_mc = 0 -- vbuz1=vbuc1
lda #0
sta.z bottom_sprites_mc
// [22] pill_count = 0 -- vwuz1=vwuc1
lda #<0
sta.z pill_count
lda #>0
sta.z pill_count+1
// [23] pacman_wins = 0 -- vbuz1=vbuc1
lda #0
sta.z pacman_wins
// [24] pacman_lives = 3 -- vbuz1=vbuc1
lda #3
sta.z pacman_lives
// [25] music_play_next = 0 -- vbuz1=vbuc1
lda #0
sta.z music_play_next
// [26] phase = 0 -- vbuz1=vbuc1
lda #0
sta.z phase
// [27] frame = 0 -- vbuz1=vbuc1
lda #0
sta.z frame
// [28] anim_frame_idx = 0 -- vbuz1=vbuc1
lda #0
sta.z anim_frame_idx
// [29] pacman_xfine = $2d -- vbuz1=vbuc1
lda #$2d
sta.z pacman_xfine
// [30] pacman_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z pacman_yfine
// [31] pacman_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z pacman_direction
// [32] pacman_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z pacman_substep
// [33] ghosts_mode = 1 -- vbuz1=vbuc1
lda #1
sta.z ghosts_mode
// [34] ghosts_mode_count = 0 -- vbuz1=vbuc1
lda #0
sta.z ghosts_mode_count
// [35] ghost1_xfine = $2d -- vbuz1=vbuc1
lda #$2d
sta.z ghost1_xfine
// [36] ghost1_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost1_yfine
// [37] ghost1_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost1_direction
// [38] ghost1_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost1_substep
// [39] ghost1_reverse = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost1_reverse
// [40] ghost1_respawn = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost1_respawn
// [41] ghost2_xfine = $2d -- vbuz1=vbuc1
lda #$2d
sta.z ghost2_xfine
// [42] ghost2_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost2_yfine
// [43] ghost2_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost2_direction
// [44] ghost2_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost2_substep
// [45] ghost2_reverse = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost2_reverse
// [46] ghost2_respawn = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost2_respawn
// [47] ghost3_xfine = $2d -- vbuz1=vbuc1
lda #$2d
sta.z ghost3_xfine
// [48] ghost3_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost3_yfine
// [49] ghost3_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost3_direction
// [50] ghost3_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost3_substep
// [51] ghost3_reverse = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost3_reverse
// [52] ghost3_respawn = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost3_respawn
// [53] ghost4_xfine = $2d -- vbuz1=vbuc1
lda #$2d
sta.z ghost4_xfine
// [54] ghost4_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost4_yfine
// [55] ghost4_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost4_direction
// [56] ghost4_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost4_substep
// [57] ghost4_reverse = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost4_reverse
// [58] ghost4_respawn = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost4_respawn
// [59] game_logic_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z game_logic_substep
// [60] game_playable = 0 -- vbuz1=vbuc1
lda #0
sta.z game_playable
// [61] phi from __start::__init1 to __start::@1 [phi:__start::__init1->__start::@1]
__b1_from___init1:
jmp __b1
// __start::@1
__b1:
// [62] call main
// [101] phi from __start::@1 to main [phi:__start::@1->main]
main_from___b1:
jsr main
jmp __breturn
// __start::@return
__breturn:
// [63] return
rts
}
// irq_screen_top
// Interrupt Routine at Screen Top
irq_screen_top: {
.const toDd001_return = 0
.const toDd002_return = 3^(>SCREENS_1)/$40
.const toD0181_return = 0
// interrupt(isr_hardware_clobber_entry) -- isr_hardware_all_entry
sta rega+1
stx regx+1
sty regy+1
// kickasm( uses HARDWARE_IRQ uses RASTER uses IRQ_STATUS uses IRQ_RASTER uses VICII_CONTROL1 uses VICII_RSEL uses VICII_MEMORY) {{ // Stabilize the raster by using the double IRQ method // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS // Set-up IRQ for the next line inc RASTER // Point IRQ to almost stable code lda #<stable sta HARDWARE_IRQ lda #>stable sta HARDWARE_IRQ+1 tsx // Save stack pointer cli // Reenable interrupts // Wait for new IRQ using NOP's to ensure minimal jitter when it hits .fill 15, NOP .align $20 stable: txs // Restore stack pointer ldx #9 // Wait till the raster has almost crossed to the next line (48 cycles) !: dex bne !- nop lda RASTER cmp RASTER bne !+ // And correct the last cycle of potential jitter !: // Raster is now completely stable! (Line 0x007 cycle 7) }}
// Stabilize the raster by using the double IRQ method
// Acknowledge the IRQ
lda #IRQ_RASTER
sta IRQ_STATUS
// Set-up IRQ for the next line
inc RASTER
// Point IRQ to almost stable code
lda #<stable
sta HARDWARE_IRQ
lda #>stable
sta HARDWARE_IRQ+1
tsx // Save stack pointer
cli // Reenable interrupts
// Wait for new IRQ using NOP's to ensure minimal jitter when it hits
.fill 15, NOP
.align $20
stable:
txs // Restore stack pointer
ldx #9 // Wait till the raster has almost crossed to the next line (48 cycles)
!: dex
bne !-
nop
lda RASTER
cmp RASTER
bne !+ // And correct the last cycle of potential jitter
!:
// Raster is now completely stable! (Line 0x007 cycle 7)
// asm { jsrRASTER_CODE }
jsr RASTER_CODE
// [66] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y) = 7 -- _deref_pbuc1=vbuc2
// Move sprites back to the top
lda #7
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y
// [67] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y) = 7 -- _deref_pbuc1=vbuc2
lda #7
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y
// [68] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y) = 7 -- _deref_pbuc1=vbuc2
lda #7
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y
// [69] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y) = 7 -- _deref_pbuc1=vbuc2
lda #7
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y
// [70] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y) = 7 -- _deref_pbuc1=vbuc2
lda #7
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y
// [71] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y) = 7 -- _deref_pbuc1=vbuc2
lda #7
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y
// [72] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y) = 7 -- _deref_pbuc1=vbuc2
lda #7
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y
// [73] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y) = 7 -- _deref_pbuc1=vbuc2
lda #7
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y
// [74] phi from irq_screen_top to irq_screen_top::toD0181 [phi:irq_screen_top->irq_screen_top::toD0181]
toD0181_from_irq_screen_top:
jmp toD0181
// irq_screen_top::toD0181
toD0181:
jmp __b5
// irq_screen_top::@5
__b5:
// [75] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = irq_screen_top::toD0181_return#0 -- _deref_pbuc1=vbuc2
// Select first screen (graphics bank not important since layout in the banks is identical)
lda #toD0181_return
sta VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY
// [76] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc -- _deref_pbuc1=vbuz1
// Set the top sprites color/MC
lda.z top_sprites_mc
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC
// [77] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR) = top_sprites_color -- _deref_pbuc1=vbuz1
lda.z top_sprites_color
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR
// [78] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR) = top_sprites_color -- _deref_pbuc1=vbuz1
lda.z top_sprites_color
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR
// [79] irq_screen_top::$1 = frame + 1 -- vbuaa=vbuz1_plus_1
lda.z frame
clc
adc #1
// [80] irq_screen_top::$2 = irq_screen_top::$1 & 1 -- vbuaa=vbuaa_band_vbuc1
and #1
// [81] frame = irq_screen_top::$2 -- vbuz1=vbuaa
// Move to next frame
sta.z frame
// [82] if(0!=frame) goto irq_screen_top::toDd001 -- 0_neq_vbuz1_then_la1
lda.z frame
bne toDd001_from___b5
// [83] phi from irq_screen_top::@5 to irq_screen_top::toDd002 [phi:irq_screen_top::@5->irq_screen_top::toDd002]
toDd002_from___b5:
jmp toDd002
// irq_screen_top::toDd002
toDd002:
jmp __b7
// irq_screen_top::@7
__b7:
// [84] *((char *)CIA2) = irq_screen_top::toDd002_return#0 -- _deref_pbuc1=vbuc2
// Change graphics bank
lda #toDd002_return
sta CIA2
// [85] canvas_base_hi = byte1 SPRITES_2 -- vbuz1=vbuc1
// Set the next canvas base address
lda #>SPRITES_2
sta.z canvas_base_hi
// [86] bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE -- vbuz1=vbuc1
lda #NUM_BOBS*SIZE_BOB_RESTORE
sta.z bobs_restore_base
jmp __b1
// irq_screen_top::@1
__b1:
// [87] if(phase==0) goto irq_screen_top::@2 -- vbuz1_eq_0_then_la1
lda.z phase
beq __b2
// [88] phi from irq_screen_top::@1 to irq_screen_top::@4 [phi:irq_screen_top::@1->irq_screen_top::@4]
__b4_from___b1:
jmp __b4
// irq_screen_top::@4
__b4:
// [89] call game_logic
// Game phase
// Perform game logic
jsr game_logic
// [90] phi from irq_screen_top::@4 to irq_screen_top::@8 [phi:irq_screen_top::@4->irq_screen_top::@8]
__b8_from___b4:
jmp __b8
// irq_screen_top::@8
__b8:
// [91] call pacman_sound_play
// Play sounds
jsr pacman_sound_play
jmp __b3
// irq_screen_top::@3
__b3:
// [92] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) = IRQ_RASTER -- _deref_pbuc1=vbuc2
// Acknowledge the IRQ
lda #IRQ_RASTER
sta VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS
// [93] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE -- _deref_pbuc1=vbuc2
// Trigger IRQ at screen top again
lda #IRQ_SCREEN_TOP_LINE
sta VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
// [94] *HARDWARE_IRQ = &irq_screen_top -- _deref_qprc1=pprc2
lda #<irq_screen_top
sta HARDWARE_IRQ
lda #>irq_screen_top
sta HARDWARE_IRQ+1
jmp __breturn
// irq_screen_top::@return
__breturn:
// [95] return
// interrupt(isr_hardware_clobber_exit) -- isr_hardware_all_exit
rega:
lda #0
regx:
ldx #0
regy:
ldy #0
rti
// irq_screen_top::@2
__b2:
// [96] music_play_next = 1 -- vbuz1=vbuc1
// intro phase
// Play intro music
lda #1
sta.z music_play_next
jmp __b3
// [97] phi from irq_screen_top::@5 to irq_screen_top::toDd001 [phi:irq_screen_top::@5->irq_screen_top::toDd001]
toDd001_from___b5:
jmp toDd001
// irq_screen_top::toDd001
toDd001:
jmp __b6
// irq_screen_top::@6
__b6:
// [98] *((char *)CIA2) = irq_screen_top::toDd001_return#0 -- _deref_pbuc1=vbuc2
// Change graphics bank
lda #toDd001_return
sta CIA2
// [99] canvas_base_hi = byte1 SPRITES_1 -- vbuz1=vbuc1
// Set the next canvas base address
lda #>SPRITES_1
sta.z canvas_base_hi
// [100] bobs_restore_base = 0 -- vbuz1=vbuc1
lda #0
sta.z bobs_restore_base
jmp __b1
}
// main
main: {
// [102] call splash_run
// Show the splash screen
// [509] phi from main to splash_run [phi:main->splash_run]
splash_run_from_main:
jsr splash_run
// [103] phi from main main::@2 to main::@1 [phi:main/main::@2->main::@1]
__b1_from_main:
__b1_from___b2:
jmp __b1
// main::@1
__b1:
// [104] call gameplay_run
// Run the gameplay
// [616] phi from main::@1 to gameplay_run [phi:main::@1->gameplay_run]
gameplay_run_from___b1:
jsr gameplay_run
// [105] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
__b2_from___b1:
jmp __b2
// main::@2
__b2:
// [106] call done_run
// Show victory or game over image
jsr done_run
jmp __b1_from___b2
}
// game_logic
// Perform game logic such as moving pacman and ghosts
game_logic: {
.label __67 = $45
.label __71 = $45
.label __210 = $22
.label ghost_frame_idx = $4a
.label pacman_xtile = $49
.label ytiles = $45
.label ghost4_xtile = $33
.label ghost4_ytile = $34
.label target_ytile = $27
.label ghost3_xtile = $5b
.label ghost3_ytile = $34
.label target_ytile1 = $27
.label ghost2_xtile = $5c
.label ghost2_ytile = $34
.label target_ytile2 = $27
.label ghost1_xtile = $5d
.label ghost1_ytile = $34
.label target_ytile3 = $27
// [107] if(game_playable!=0) goto game_logic::@1 -- vbuz1_neq_0_then_la1
lda.z game_playable
bne __b1
jmp __breturn
// game_logic::@return
__breturn:
// [108] return
rts
// game_logic::@1
__b1:
// [109] game_logic::$2 = game_logic_substep + 1 -- vbuxx=vbuz1_plus_1
ldx.z game_logic_substep
inx
// [110] game_logic::$3 = game_logic::$2 & 7 -- vbuaa=vbuxx_band_vbuc1
txa
and #7
// [111] game_logic_substep = game_logic::$3 -- vbuz1=vbuaa
// Move to next sub-step
sta.z game_logic_substep
// [112] if(game_logic_substep==0) goto game_logic::@2 -- vbuz1_eq_0_then_la1
lda.z game_logic_substep
beq __b2
jmp __b8
// game_logic::@8
__b8:
// [113] if(game_logic_substep==1) goto game_logic::@3 -- vbuz1_eq_vbuc1_then_la1
lda #1
cmp.z game_logic_substep
beq __b3
jmp __b9
// game_logic::@9
__b9:
// [114] if(game_logic_substep==2) goto game_logic::@4 -- vbuz1_eq_vbuc1_then_la1
lda #2
cmp.z game_logic_substep
beq __b4
jmp __b10
// game_logic::@10
__b10:
// [115] if(game_logic_substep==4) goto game_logic::@5 -- vbuz1_eq_vbuc1_then_la1
lda #4
cmp.z game_logic_substep
beq __b5
jmp __b11
// game_logic::@11
__b11:
// [116] if(game_logic_substep==5) goto game_logic::@6 -- vbuz1_eq_vbuc1_then_la1
lda #5
cmp.z game_logic_substep
beq __b6
jmp __b12
// game_logic::@12
__b12:
// [117] if(game_logic_substep==6) goto game_logic::@7 -- vbuz1_eq_vbuc1_then_la1
lda #6
cmp.z game_logic_substep
beq __b7
jmp __b13
// game_logic::@13
__b13:
// [118] if(game_logic_substep==3) goto game_logic::@14 -- vbuz1_eq_vbuc1_then_la1
lda #3
cmp.z game_logic_substep
beq __b14
jmp __b161
// game_logic::@161
__b161:
// [119] if(game_logic_substep==7) goto game_logic::@14 -- vbuz1_eq_vbuc1_then_la1
lda #7
cmp.z game_logic_substep
beq __b14
jmp __breturn
// game_logic::@14
__b14:
// [120] game_logic::$14 = anim_frame_idx + 1 -- vbuxx=vbuz1_plus_1
ldx.z anim_frame_idx
inx
// [121] game_logic::$15 = game_logic::$14 & 3 -- vbuaa=vbuxx_band_vbuc1
txa
and #3
// [122] anim_frame_idx = game_logic::$15 -- vbuz1=vbuaa
// Update animation and bobs
sta.z anim_frame_idx
// [123] game_logic::pacman_bob_xfine#0 = pacman_xfine - 1 -- vbuyy=vbuz1_minus_1
lda.z pacman_xfine
tay
dey
// [124] game_logic::$17 = game_logic::pacman_bob_xfine#0 >> 2 -- vbuaa=vbuyy_ror_2
tya
lsr
lsr
// [125] *bobs_xcol = game_logic::$17 -- _deref_pbuc1=vbuaa
sta bobs_xcol
// [126] game_logic::$18 = pacman_yfine - 1 -- vbuxx=vbuz1_minus_1
ldx.z pacman_yfine
dex
// [127] *bobs_yfine = game_logic::$18 -- _deref_pbuc1=vbuxx
stx bobs_yfine
// [128] game_logic::$19 = pacman_direction | anim_frame_idx -- vbuxx=vbuz1_bor_vbuz2
lda.z pacman_direction
ora.z anim_frame_idx
tax
// [129] game_logic::$20 = game_logic::pacman_bob_xfine#0 & 3 -- vbuaa=vbuyy_band_vbuc1
tya
and #3
// [130] game_logic::$21 = pacman_frames[game_logic::$19] + game_logic::$20 -- vbuaa=pbuc1_derefidx_vbuxx_plus_vbuaa
clc
adc pacman_frames,x
// [131] *bobs_bob_id = game_logic::$21 -- _deref_pbuc1=vbuaa
sta bobs_bob_id
// [132] game_logic::ghost_frame_idx#0 = anim_frame_idx -- vbuz1=vbuz2
lda.z anim_frame_idx
sta.z ghost_frame_idx
// [133] if(ghosts_mode!=FRIGHTENED) goto game_logic::@44 -- vbuz1_neq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
bne __b44_from___b14
jmp __b15
// game_logic::@15
__b15:
// [134] game_logic::ghost_frame_idx#1 = game_logic::ghost_frame_idx#0 | $40 -- vbuz1=vbuz1_bor_vbuc1
lda #$40
ora.z ghost_frame_idx
sta.z ghost_frame_idx
// [135] phi from game_logic::@14 game_logic::@15 to game_logic::@44 [phi:game_logic::@14/game_logic::@15->game_logic::@44]
__b44_from___b14:
__b44_from___b15:
// [135] phi game_logic::ghost_frame_idx#2 = game_logic::ghost_frame_idx#0 [phi:game_logic::@14/game_logic::@15->game_logic::@44#0] -- register_copy
jmp __b44
// game_logic::@44
__b44:
// [136] game_logic::ghost1_bob_xfine#0 = ghost1_xfine - 1 -- vbuyy=vbuz1_minus_1
lda.z ghost1_xfine
tay
dey
// [137] game_logic::$25 = game_logic::ghost1_bob_xfine#0 >> 2 -- vbuaa=vbuyy_ror_2
tya
lsr
lsr
// [138] *(bobs_xcol+1) = game_logic::$25 -- _deref_pbuc1=vbuaa
sta bobs_xcol+1
// [139] game_logic::$26 = ghost1_yfine - 1 -- vbuxx=vbuz1_minus_1
ldx.z ghost1_yfine
dex
// [140] *(bobs_yfine+1) = game_logic::$26 -- _deref_pbuc1=vbuxx
stx bobs_yfine+1
// [141] game_logic::$27 = ghost1_direction | game_logic::ghost_frame_idx#2 -- vbuxx=vbuz1_bor_vbuz2
lda.z ghost1_direction
ora.z ghost_frame_idx
tax
// [142] game_logic::$28 = game_logic::ghost1_bob_xfine#0 & 3 -- vbuaa=vbuyy_band_vbuc1
tya
and #3
// [143] game_logic::$29 = ghost_frames[game_logic::$27] + game_logic::$28 -- vbuaa=pbuc1_derefidx_vbuxx_plus_vbuaa
clc
adc ghost_frames,x
// [144] *(bobs_bob_id+1) = game_logic::$29 -- _deref_pbuc1=vbuaa
sta bobs_bob_id+1
// [145] game_logic::ghost2_bob_xfine#0 = ghost2_xfine - 1 -- vbuyy=vbuz1_minus_1
lda.z ghost2_xfine
tay
dey
// [146] game_logic::$31 = game_logic::ghost2_bob_xfine#0 >> 2 -- vbuaa=vbuyy_ror_2
tya
lsr
lsr
// [147] *(bobs_xcol+2) = game_logic::$31 -- _deref_pbuc1=vbuaa
sta bobs_xcol+2
// [148] game_logic::$32 = ghost2_yfine - 1 -- vbuxx=vbuz1_minus_1
ldx.z ghost2_yfine
dex
// [149] *(bobs_yfine+2) = game_logic::$32 -- _deref_pbuc1=vbuxx
stx bobs_yfine+2
// [150] game_logic::$33 = ghost2_direction | game_logic::ghost_frame_idx#2 -- vbuxx=vbuz1_bor_vbuz2
lda.z ghost2_direction
ora.z ghost_frame_idx
tax
// [151] game_logic::$34 = game_logic::ghost2_bob_xfine#0 & 3 -- vbuaa=vbuyy_band_vbuc1
tya
and #3
// [152] game_logic::$35 = ghost_frames[game_logic::$33] + game_logic::$34 -- vbuaa=pbuc1_derefidx_vbuxx_plus_vbuaa
clc
adc ghost_frames,x
// [153] *(bobs_bob_id+2) = game_logic::$35 -- _deref_pbuc1=vbuaa
sta bobs_bob_id+2
// [154] game_logic::ghost3_bob_xfine#0 = ghost3_xfine - 1 -- vbuyy=vbuz1_minus_1
lda.z ghost3_xfine
tay
dey
// [155] game_logic::$37 = game_logic::ghost3_bob_xfine#0 >> 2 -- vbuaa=vbuyy_ror_2
tya
lsr
lsr
// [156] *(bobs_xcol+3) = game_logic::$37 -- _deref_pbuc1=vbuaa
sta bobs_xcol+3
// [157] game_logic::$38 = ghost3_yfine - 1 -- vbuxx=vbuz1_minus_1
ldx.z ghost3_yfine
dex
// [158] *(bobs_yfine+3) = game_logic::$38 -- _deref_pbuc1=vbuxx
stx bobs_yfine+3
// [159] game_logic::$39 = ghost3_direction | game_logic::ghost_frame_idx#2 -- vbuxx=vbuz1_bor_vbuz2
lda.z ghost3_direction
ora.z ghost_frame_idx
tax
// [160] game_logic::$40 = game_logic::ghost3_bob_xfine#0 & 3 -- vbuaa=vbuyy_band_vbuc1
tya
and #3
// [161] game_logic::$41 = ghost_frames[game_logic::$39] + game_logic::$40 -- vbuaa=pbuc1_derefidx_vbuxx_plus_vbuaa
clc
adc ghost_frames,x
// [162] *(bobs_bob_id+3) = game_logic::$41 -- _deref_pbuc1=vbuaa
sta bobs_bob_id+3
// [163] game_logic::ghost4_bob_xfine#0 = ghost4_xfine - 1 -- vbuyy=vbuz1_minus_1
lda.z ghost4_xfine
tay
dey
// [164] game_logic::$43 = game_logic::ghost4_bob_xfine#0 >> 2 -- vbuaa=vbuyy_ror_2
tya
lsr
lsr
// [165] *(bobs_xcol+4) = game_logic::$43 -- _deref_pbuc1=vbuaa
sta bobs_xcol+4
// [166] game_logic::$44 = ghost4_yfine - 1 -- vbuxx=vbuz1_minus_1
ldx.z ghost4_yfine
dex
// [167] *(bobs_yfine+4) = game_logic::$44 -- _deref_pbuc1=vbuxx
stx bobs_yfine+4
// [168] game_logic::$45 = ghost4_direction | game_logic::ghost_frame_idx#2 -- vbuxx=vbuz1_bor_vbuz2
lda.z ghost4_direction
ora.z ghost_frame_idx
tax
// [169] game_logic::$46 = game_logic::ghost4_bob_xfine#0 & 3 -- vbuaa=vbuyy_band_vbuc1
tya
and #3
// [170] game_logic::$47 = ghost_frames[game_logic::$45] + game_logic::$46 -- vbuaa=pbuc1_derefidx_vbuxx_plus_vbuaa
clc
adc ghost_frames,x
// [171] *(bobs_bob_id+4) = game_logic::$47 -- _deref_pbuc1=vbuaa
sta bobs_bob_id+4
jmp __breturn
// game_logic::@7
__b7:
// [172] ghosts_mode_count = ++ ghosts_mode_count -- vbuz1=_inc_vbuz1
inc.z ghosts_mode_count
// [173] if(ghosts_mode==SCATTER) goto game_logic::@45 -- vbuz1_eq_vbuc1_then_la1
lda #SCATTER
cmp.z ghosts_mode
beq __b45
jmp __b16
// game_logic::@16
__b16:
// [174] if(ghosts_mode==CHASE) goto game_logic::@46 -- vbuz1_eq_vbuc1_then_la1
lda #CHASE
cmp.z ghosts_mode
beq __b46
jmp __b17
// game_logic::@17
__b17:
// [175] if(ghosts_mode!=FRIGHTENED) goto game_logic::@47 -- vbuz1_neq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
bne __b47_from___b17
jmp __b18
// game_logic::@18
__b18:
// [176] if(ghosts_mode_count<$32+1) goto game_logic::@47 -- vbuz1_lt_vbuc1_then_la1
lda.z ghosts_mode_count
cmp #$32+1
bcc __b47_from___b18
jmp __b19
// game_logic::@19
__b19:
// [177] ghosts_mode = CHASE -- vbuz1=vbuc1
lda #CHASE
sta.z ghosts_mode
// [178] ghosts_mode_count = 0 -- vbuz1=vbuc1
lda #0
sta.z ghosts_mode_count
// [179] phi from game_logic::@19 game_logic::@58 game_logic::@59 to game_logic::@47 [phi:game_logic::@19/game_logic::@58/game_logic::@59->game_logic::@47]
__b47_from___b19:
__b47_from___b58:
__b47_from___b59:
// [179] phi game_logic::do_reverse#4 = 1 [phi:game_logic::@19/game_logic::@58/game_logic::@59->game_logic::@47#0] -- vbuaa=vbuc1
lda #1
jmp __b47
// [179] phi from game_logic::@17 game_logic::@18 game_logic::@45 game_logic::@46 to game_logic::@47 [phi:game_logic::@17/game_logic::@18/game_logic::@45/game_logic::@46->game_logic::@47]
__b47_from___b17:
__b47_from___b18:
__b47_from___b45:
__b47_from___b46:
// [179] phi game_logic::do_reverse#4 = 0 [phi:game_logic::@17/game_logic::@18/game_logic::@45/game_logic::@46->game_logic::@47#0] -- vbuaa=vbuc1
lda #0
jmp __b47
// game_logic::@47
__b47:
// [180] if(0==game_logic::do_reverse#4) goto game_logic::@48 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b48
jmp __b60
// game_logic::@60
__b60:
// [181] ghost1_reverse = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost1_reverse
// [182] ghost2_reverse = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost2_reverse
// [183] ghost3_reverse = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost3_reverse
// [184] ghost4_reverse = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost4_reverse
jmp __b48
// game_logic::@48
__b48:
// [185] game_logic::pacman_xtile#0 = pacman_xfine >> 1 -- vbuz1=vbuz2_ror_1
// Examine if pacman is on a pill tile - and handle it
lda.z pacman_xfine
lsr
sta.z pacman_xtile
// [186] game_logic::pacman_ytile#0 = pacman_yfine >> 1 -- vbuaa=vbuz1_ror_1
lda.z pacman_yfine
lsr
// [187] game_logic::$210 = game_logic::pacman_ytile#0 << 1 -- vbuz1=vbuaa_rol_1
asl
sta.z __210
// [188] game_logic::ytiles#0 = LEVEL_TILES + LEVEL_YTILE_OFFSET[game_logic::$210] -- pbuz1=pbuc1_plus_pwuc2_derefidx_vbuz2
ldy.z __210
clc
lda #<LEVEL_TILES
adc LEVEL_YTILE_OFFSET,y
sta.z ytiles
lda #>LEVEL_TILES
adc LEVEL_YTILE_OFFSET+1,y
sta.z ytiles+1
// [189] game_logic::tile_id#0 = game_logic::ytiles#0[game_logic::pacman_xtile#0] -- vbuxx=pbuz1_derefidx_vbuz2
ldy.z pacman_xtile
lda (ytiles),y
tax
// [190] if(TILES_TYPE[game_logic::tile_id#0]==PILL) goto game_logic::@49 -- pbuc1_derefidx_vbuxx_eq_vbuc2_then_la1
lda TILES_TYPE,x
cmp #PILL
beq __b49
jmp __b61
// game_logic::@61
__b61:
// [191] if(TILES_TYPE[game_logic::tile_id#0]!=POWERUP) goto game_logic::@50 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1
lda TILES_TYPE,x
cmp #POWERUP
bne __b50
jmp __b62
// game_logic::@62
__b62:
// [192] game_logic::ytiles#0[game_logic::pacman_xtile#0] = EMPTY -- pbuz1_derefidx_vbuz2=vbuc1
// Empty the tile
lda #EMPTY
ldy.z pacman_xtile
sta (ytiles),y
// [193] game_logic::$65 = game_logic::pacman_xtile#0 >> 1 -- vbuaa=vbuz1_ror_1
lda.z pacman_xtile
lsr
// [194] logic_tile_xcol = game_logic::$65 -- vbuz1=vbuaa
// Ask the logic code renderer to update the tile
sta.z logic_tile_xcol
// [195] game_logic::$66 = game_logic::pacman_xtile#0 & $fe -- vbuaa=vbuz1_band_vbuc1
lda #$fe
and.z pacman_xtile
// [196] game_logic::$67 = game_logic::ytiles#0 + game_logic::$66 -- pbuz1=pbuz1_plus_vbuaa
clc
adc.z __67
sta.z __67
bcc !+
inc.z __67+1
!:
// [197] logic_tile_ptr = game_logic::$67 -- pbuz1=pbuz2
lda.z __67
sta.z logic_tile_ptr
lda.z __67+1
sta.z logic_tile_ptr+1
// [198] game_logic::$68 = game_logic::$210 -- vbuaa=vbuz1
lda.z __210
// [199] logic_tile_yfine = game_logic::$68 -- vbuz1=vbuaa
sta.z logic_tile_yfine
// [200] ghosts_mode = FRIGHTENED -- vbuz1=vbuc1
// Start power-up mode
lda #FRIGHTENED
sta.z ghosts_mode
// [201] ghosts_mode_count = 0 -- vbuz1=vbuc1
lda #0
sta.z ghosts_mode_count
jmp __b50
// game_logic::@50
__b50:
// [202] game_logic::$75 = pacman_xfine - ghost1_xfine -- vbuxx=vbuz1_minus_vbuz2
lda.z pacman_xfine
sec
sbc.z ghost1_xfine
tax
// [203] game_logic::$77 = pacman_yfine - ghost1_yfine -- vbuyy=vbuz1_minus_vbuz2
lda.z pacman_yfine
sec
sbc.z ghost1_yfine
tay
// [204] if(ABS[game_logic::$75]>=2) goto game_logic::@64 -- pbuc1_derefidx_vbuxx_ge_vbuc2_then_la1
// Check if anyone dies
lda ABS,x
cmp #2
bcs __b64
jmp __b162
// game_logic::@162
__b162:
// [205] if(ABS[game_logic::$77]<2) goto game_logic::@51 -- pbuc1_derefidx_vbuyy_lt_vbuc2_then_la1
lda ABS,y
cmp #2
bcc __b51
jmp __b64
// game_logic::@64
__b64:
// [206] game_logic::$80 = pacman_xfine - ghost2_xfine -- vbuxx=vbuz1_minus_vbuz2
lda.z pacman_xfine
sec
sbc.z ghost2_xfine
tax
// [207] game_logic::$82 = pacman_yfine - ghost2_yfine -- vbuyy=vbuz1_minus_vbuz2
lda.z pacman_yfine
sec
sbc.z ghost2_yfine
tay
// [208] if(ABS[game_logic::$80]>=2) goto game_logic::@65 -- pbuc1_derefidx_vbuxx_ge_vbuc2_then_la1
lda ABS,x
cmp #2
bcs __b65
jmp __b163
// game_logic::@163
__b163:
// [209] if(ABS[game_logic::$82]<2) goto game_logic::@52 -- pbuc1_derefidx_vbuyy_lt_vbuc2_then_la1
lda ABS,y
cmp #2
bcc __b52
jmp __b65
// game_logic::@65
__b65:
// [210] game_logic::$85 = pacman_xfine - ghost3_xfine -- vbuxx=vbuz1_minus_vbuz2
lda.z pacman_xfine
sec
sbc.z ghost3_xfine
tax
// [211] game_logic::$87 = pacman_yfine - ghost3_yfine -- vbuyy=vbuz1_minus_vbuz2
lda.z pacman_yfine
sec
sbc.z ghost3_yfine
tay
// [212] if(ABS[game_logic::$85]>=2) goto game_logic::@66 -- pbuc1_derefidx_vbuxx_ge_vbuc2_then_la1
lda ABS,x
cmp #2
bcs __b66
jmp __b164
// game_logic::@164
__b164:
// [213] if(ABS[game_logic::$87]<2) goto game_logic::@53 -- pbuc1_derefidx_vbuyy_lt_vbuc2_then_la1
lda ABS,y
cmp #2
bcc __b53
jmp __b66
// game_logic::@66
__b66:
// [214] game_logic::$90 = pacman_xfine - ghost4_xfine -- vbuxx=vbuz1_minus_vbuz2
lda.z pacman_xfine
sec
sbc.z ghost4_xfine
tax
// [215] game_logic::$92 = pacman_yfine - ghost4_yfine -- vbuyy=vbuz1_minus_vbuz2
lda.z pacman_yfine
sec
sbc.z ghost4_yfine
tay
// [216] if(ABS[game_logic::$90]>=2) goto game_logic::@return -- pbuc1_derefidx_vbuxx_ge_vbuc2_then_la1
lda ABS,x
cmp #2
bcs __breturn
jmp __b165
// game_logic::@165
__b165:
// [217] if(ABS[game_logic::$92]<2) goto game_logic::@67 -- pbuc1_derefidx_vbuyy_lt_vbuc2_then_la1
lda ABS,y
cmp #2
bcc __b67
jmp __breturn
// game_logic::@67
__b67:
// [218] if(ghosts_mode==FRIGHTENED) goto game_logic::@54 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b54
jmp __b68
// game_logic::@68
__b68:
// [219] pacman_lives = -- pacman_lives -- vbuz1=_dec_vbuz1
dec.z pacman_lives
// [220] call spawn_all
jsr spawn_all
jmp __breturn
// game_logic::@54
__b54:
// [221] ghost4_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost4_direction
// [222] ghost4_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost4_xfine
// [223] ghost4_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost4_yfine
// [224] ghost4_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost4_substep
// [225] ghost4_respawn = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost4_respawn
jmp __breturn
// game_logic::@53
__b53:
// [226] if(ghosts_mode==FRIGHTENED) goto game_logic::@55 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b55
jmp __b69
// game_logic::@69
__b69:
// [227] pacman_lives = -- pacman_lives -- vbuz1=_dec_vbuz1
dec.z pacman_lives
// [228] call spawn_all
jsr spawn_all
jmp __breturn
// game_logic::@55
__b55:
// [229] ghost3_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost3_direction
// [230] ghost3_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost3_xfine
// [231] ghost3_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost3_yfine
// [232] ghost3_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost3_substep
// [233] ghost3_respawn = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost3_respawn
jmp __breturn
// game_logic::@52
__b52:
// [234] if(ghosts_mode==FRIGHTENED) goto game_logic::@56 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b56
jmp __b70
// game_logic::@70
__b70:
// [235] pacman_lives = -- pacman_lives -- vbuz1=_dec_vbuz1
dec.z pacman_lives
// [236] call spawn_all
jsr spawn_all
jmp __breturn
// game_logic::@56
__b56:
// [237] ghost2_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost2_direction
// [238] ghost2_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost2_xfine
// [239] ghost2_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost2_yfine
// [240] ghost2_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost2_substep
// [241] ghost2_respawn = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost2_respawn
jmp __breturn
// game_logic::@51
__b51:
// [242] if(ghosts_mode==FRIGHTENED) goto game_logic::@57 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b57
jmp __b71
// game_logic::@71
__b71:
// [243] pacman_lives = -- pacman_lives -- vbuz1=_dec_vbuz1
dec.z pacman_lives
// [244] call spawn_all
jsr spawn_all
jmp __breturn
// game_logic::@57
__b57:
// [245] ghost1_direction = STOP -- vbuz1=vbuc1
// ghost dies
lda #STOP
sta.z ghost1_direction
// [246] ghost1_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost1_xfine
// [247] ghost1_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost1_yfine
// [248] ghost1_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost1_substep
// [249] ghost1_respawn = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost1_respawn
jmp __breturn
// game_logic::@49
__b49:
// [250] game_logic::ytiles#0[game_logic::pacman_xtile#0] = EMPTY -- pbuz1_derefidx_vbuz2=vbuc1
// Empty the tile
lda #EMPTY
ldy.z pacman_xtile
sta (ytiles),y
// [251] game_logic::$69 = game_logic::pacman_xtile#0 >> 1 -- vbuaa=vbuz1_ror_1
lda.z pacman_xtile
lsr
// [252] logic_tile_xcol = game_logic::$69 -- vbuz1=vbuaa
// Ask the logic code renderer to update the tile
sta.z logic_tile_xcol
// [253] game_logic::$70 = game_logic::pacman_xtile#0 & $fe -- vbuaa=vbuz1_band_vbuc1
lda #$fe
and.z pacman_xtile
// [254] game_logic::$71 = game_logic::ytiles#0 + game_logic::$70 -- pbuz1=pbuz1_plus_vbuaa
clc
adc.z __71
sta.z __71
bcc !+
inc.z __71+1
!:
// [255] logic_tile_ptr = game_logic::$71 -- pbuz1=pbuz2
lda.z __71
sta.z logic_tile_ptr
lda.z __71+1
sta.z logic_tile_ptr+1
// [256] game_logic::$72 = game_logic::$210 -- vbuaa=vbuz1
lda.z __210
// [257] logic_tile_yfine = game_logic::$72 -- vbuz1=vbuaa
sta.z logic_tile_yfine
// [258] pill_count = -- pill_count -- vwuz1=_dec_vwuz1
lda.z pill_count
bne !+
dec.z pill_count+1
!:
dec.z pill_count
// [259] if(pill_count!=0) goto game_logic::@50 -- vwuz1_neq_0_then_la1
lda.z pill_count
ora.z pill_count+1
bne __b50
jmp __b63
// game_logic::@63
__b63:
// [260] pacman_wins = 1 -- vbuz1=vbuc1
lda #1
sta.z pacman_wins
jmp __b50
// game_logic::@46
__b46:
// [261] if(ghosts_mode_count<$96+1) goto game_logic::@47 -- vbuz1_lt_vbuc1_then_la1
lda.z ghosts_mode_count
cmp #$96+1
bcc __b47_from___b46
jmp __b58
// game_logic::@58
__b58:
// [262] ghosts_mode = SCATTER -- vbuz1=vbuc1
lda #SCATTER
sta.z ghosts_mode
// [263] ghosts_mode_count = 0 -- vbuz1=vbuc1
lda #0
sta.z ghosts_mode_count
jmp __b47_from___b58
// game_logic::@45
__b45:
// [264] if(ghosts_mode_count<$32+1) goto game_logic::@47 -- vbuz1_lt_vbuc1_then_la1
lda.z ghosts_mode_count
cmp #$32+1
bcc __b47_from___b45
jmp __b59
// game_logic::@59
__b59:
// [265] ghosts_mode = CHASE -- vbuz1=vbuc1
lda #CHASE
sta.z ghosts_mode
// [266] ghosts_mode_count = 0 -- vbuz1=vbuc1
lda #0
sta.z ghosts_mode_count
jmp __b47_from___b59
// game_logic::@6
__b6:
// [267] if(0!=ghost4_respawn) goto game_logic::@72 -- 0_neq_vbuz1_then_la1
// Ghost spawn timer
lda.z ghost4_respawn
bne __b72
jmp __b20
// game_logic::@20
__b20:
// [268] if(ghost4_direction==RIGHT) goto game_logic::@73 -- vbuz1_eq_vbuc1_then_la1
// Move in the current direction (unless he is stopped)
lda #RIGHT
cmp.z ghost4_direction
beq __b73
jmp __b21
// game_logic::@21
__b21:
// [269] if(ghost4_direction==DOWN) goto game_logic::@74 -- vbuz1_eq_vbuc1_then_la1
lda #DOWN
cmp.z ghost4_direction
beq __b74
jmp __b22
// game_logic::@22
__b22:
// [270] if(ghost4_direction==LEFT) goto game_logic::@75 -- vbuz1_eq_vbuc1_then_la1
lda #LEFT
cmp.z ghost4_direction
beq __b75
jmp __b23
// game_logic::@23
__b23:
// [271] if(ghost4_direction!=UP) goto game_logic::@76 -- vbuz1_neq_vbuc1_then_la1
lda #UP
cmp.z ghost4_direction
bne __b76
jmp __b24
// game_logic::@24
__b24:
// [272] ghost4_yfine = -- ghost4_yfine -- vbuz1=_dec_vbuz1
dec.z ghost4_yfine
jmp __b76
// game_logic::@76
__b76:
// [273] game_logic::$220 = ghost4_direction -- vbuxx=vbuz1
ldx.z ghost4_direction
// [274] if(ghost4_substep!=0) goto game_logic::@82 -- vbuz1_neq_0_then_la1
lda.z ghost4_substep
bne __b82
jmp __b166
// game_logic::@166
__b166:
// [275] if(game_logic::$220!=STOP) goto game_logic::@77 -- vbuxx_neq_vbuc1_then_la1
cpx #STOP
bne __b77
jmp __b82
// game_logic::@82
__b82:
// [276] ghost4_substep = 0 -- vbuz1=vbuc1
// Ghost is on a tile
lda #0
sta.z ghost4_substep
// [277] if(0!=ghost4_reverse) goto game_logic::@78 -- 0_neq_vbuz1_then_la1
lda.z ghost4_reverse
bne __b78
jmp __b83
// game_logic::@83
__b83:
// [278] game_logic::ghost4_xtile#0 = ghost4_xfine >> 1 -- vbuz1=vbuz2_ror_1
// Examine open directions from the new tile to determine next action
lda.z ghost4_xfine
lsr
sta.z ghost4_xtile
// [279] game_logic::ghost4_ytile#0 = ghost4_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z ghost4_yfine
lsr
sta.z ghost4_ytile
// [280] level_tile_directions::xtile#0 = game_logic::ghost4_xtile#0 -- vbuxx=vbuz1
ldx.z ghost4_xtile
// [281] level_tile_directions::ytile#0 = game_logic::ghost4_ytile#0 -- vbuaa=vbuz1
lda.z ghost4_ytile
// [282] call level_tile_directions
// [740] phi from game_logic::@83 to level_tile_directions [phi:game_logic::@83->level_tile_directions]
level_tile_directions_from___b83:
// [740] phi level_tile_directions::ytile#5 = level_tile_directions::ytile#0 [phi:game_logic::@83->level_tile_directions#0] -- register_copy
// [740] phi level_tile_directions::xtile#5 = level_tile_directions::xtile#0 [phi:game_logic::@83->level_tile_directions#1] -- register_copy
jsr level_tile_directions
// [283] level_tile_directions::return#3 = level_tile_directions::return#2
jmp __b152
// game_logic::@152
__b152:
// [284] game_logic::open_directions#0 = level_tile_directions::return#3
// [285] game_logic::open_directions#1 = game_logic::open_directions#0 & DIRECTION_ELIMINATE[ghost4_direction] -- vbuyy=vbuaa_band_pbuc1_derefidx_vbuz1
// Eliminate the direction ghost came from
ldy.z ghost4_direction
and DIRECTION_ELIMINATE,y
tay
// [286] if(ghosts_mode==FRIGHTENED) goto game_logic::@79 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b79
jmp __b84
// game_logic::@84
__b84:
// [287] if(ghosts_mode==SCATTER) goto game_logic::@80 -- vbuz1_eq_vbuc1_then_la1
lda #SCATTER
cmp.z ghosts_mode
beq __b80_from___b84
jmp __b85
// game_logic::@85
__b85:
// [288] game_logic::target_xtile#2 = pacman_xfine >> 1 -- vbuxx=vbuz1_ror_1
lda.z pacman_xfine
lsr
tax
// [289] game_logic::target_ytile#2 = pacman_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z pacman_yfine
lsr
sta.z target_ytile
// [290] phi from game_logic::@85 to game_logic::@80 [phi:game_logic::@85->game_logic::@80]
__b80_from___b85:
// [290] phi game_logic::target_ytile#3 = game_logic::target_ytile#2 [phi:game_logic::@85->game_logic::@80#0] -- register_copy
// [290] phi game_logic::target_xtile#3 = game_logic::target_xtile#2 [phi:game_logic::@85->game_logic::@80#1] -- register_copy
jmp __b80
// [290] phi from game_logic::@84 to game_logic::@80 [phi:game_logic::@84->game_logic::@80]
__b80_from___b84:
// [290] phi game_logic::target_ytile#3 = 2 [phi:game_logic::@84->game_logic::@80#0] -- vbuz1=vbuc1
lda #2
sta.z target_ytile
// [290] phi game_logic::target_xtile#3 = 2 [phi:game_logic::@84->game_logic::@80#1] -- vbuxx=vbuc1
ldx #2
jmp __b80
// game_logic::@80
__b80:
// [291] choose_direction::open_directions#0 = game_logic::open_directions#1 -- vbuz1=vbuyy
sty.z choose_direction.open_directions
// [292] choose_direction::ghost_xtile#0 = game_logic::ghost4_xtile#0 -- vbuyy=vbuz1
ldy.z ghost4_xtile
// [293] choose_direction::ghost_ytile#0 = game_logic::ghost4_ytile#0
// [294] choose_direction::target_xtile#0 = game_logic::target_xtile#3
// [295] choose_direction::target_ytile#0 = game_logic::target_ytile#3
// [296] call choose_direction
// [748] phi from game_logic::@80 to choose_direction [phi:game_logic::@80->choose_direction]
choose_direction_from___b80:
// [748] phi choose_direction::open_directions#10 = choose_direction::open_directions#0 [phi:game_logic::@80->choose_direction#0] -- register_copy
// [748] phi choose_direction::target_ytile#4 = choose_direction::target_ytile#0 [phi:game_logic::@80->choose_direction#1] -- register_copy
// [748] phi choose_direction::ghost_ytile#4 = choose_direction::ghost_ytile#0 [phi:game_logic::@80->choose_direction#2] -- register_copy
// [748] phi choose_direction::target_xtile#4 = choose_direction::target_xtile#0 [phi:game_logic::@80->choose_direction#3] -- register_copy
// [748] phi choose_direction::ghost_xtile#4 = choose_direction::ghost_xtile#0 [phi:game_logic::@80->choose_direction#4] -- register_copy
jsr choose_direction
// [297] choose_direction::return#0 = choose_direction::return#10 -- vbuaa=vbuz1
lda.z choose_direction.return
jmp __b153
// game_logic::@153
__b153:
// [298] game_logic::$119 = choose_direction::return#0
// [299] ghost4_direction = game_logic::$119 -- vbuz1=vbuaa
sta.z ghost4_direction
jmp __breturn
// game_logic::@79
__b79:
// [300] ghost4_direction = DIRECTION_SINGLE[game_logic::open_directions#1] -- vbuz1=pbuc1_derefidx_vbuyy
// Choose a random direction between the open directions
lda DIRECTION_SINGLE,y
sta.z ghost4_direction
jmp __breturn
// game_logic::@78
__b78:
// [301] ghost4_direction = DIRECTION_REVERSE[ghost4_direction] -- vbuz1=pbuc1_derefidx_vbuz1
// If we are changing between scatter & chase then reverse the direction
ldy.z ghost4_direction
lda DIRECTION_REVERSE,y
sta.z ghost4_direction
// [302] ghost4_reverse = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost4_reverse
jmp __breturn
// game_logic::@77
__b77:
// [303] ghost4_substep = 1 -- vbuz1=vbuc1
// Ghost was on a tile and is moving, so he is now between tiles
lda #1
sta.z ghost4_substep
// [304] if(ghost4_xfine==1) goto game_logic::@81 -- vbuz1_eq_vbuc1_then_la1
// Teleport if we are in the magic positions
lda #1
cmp.z ghost4_xfine
beq __b81
jmp __b86
// game_logic::@86
__b86:
// [305] if(ghost4_xfine!=$61) goto game_logic::@return -- vbuz1_neq_vbuc1_then_la1
lda #$61
cmp.z ghost4_xfine
bne __breturn
jmp __b87
// game_logic::@87
__b87:
// [306] ghost4_xfine = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost4_xfine
jmp __breturn
// game_logic::@81
__b81:
// [307] ghost4_xfine = $61 -- vbuz1=vbuc1
lda #$61
sta.z ghost4_xfine
jmp __breturn
// game_logic::@75
__b75:
// [308] ghost4_xfine = -- ghost4_xfine -- vbuz1=_dec_vbuz1
dec.z ghost4_xfine
jmp __b76
// game_logic::@74
__b74:
// [309] ghost4_yfine = ++ ghost4_yfine -- vbuz1=_inc_vbuz1
inc.z ghost4_yfine
jmp __b76
// game_logic::@73
__b73:
// [310] ghost4_xfine = ++ ghost4_xfine -- vbuz1=_inc_vbuz1
inc.z ghost4_xfine
jmp __b76
// game_logic::@72
__b72:
// [311] ghost4_respawn = -- ghost4_respawn -- vbuz1=_dec_vbuz1
dec.z ghost4_respawn
// [312] if(ghost4_respawn!=0) goto game_logic::@return -- vbuz1_neq_0_then_la1
lda.z ghost4_respawn
bne __breturn
jmp __b88
// game_logic::@88
__b88:
// [313] ghost4_direction = RIGHT -- vbuz1=vbuc1
// Spawn ghost
lda #RIGHT
sta.z ghost4_direction
// [314] ghost4_xfine = 2 -- vbuz1=vbuc1
lda #2
sta.z ghost4_xfine
// [315] ghost4_yfine = 2 -- vbuz1=vbuc1
lda #2
sta.z ghost4_yfine
// [316] ghost4_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost4_substep
jmp __breturn
// game_logic::@5
__b5:
// [317] if(0!=ghost3_respawn) goto game_logic::@89 -- 0_neq_vbuz1_then_la1
// Ghost spawn timer
lda.z ghost3_respawn
bne __b89
jmp __b25
// game_logic::@25
__b25:
// [318] if(ghost3_direction==RIGHT) goto game_logic::@90 -- vbuz1_eq_vbuc1_then_la1
// Move in the current direction (unless he is stopped)
lda #RIGHT
cmp.z ghost3_direction
beq __b90
jmp __b26
// game_logic::@26
__b26:
// [319] if(ghost3_direction==DOWN) goto game_logic::@91 -- vbuz1_eq_vbuc1_then_la1
lda #DOWN
cmp.z ghost3_direction
beq __b91
jmp __b27
// game_logic::@27
__b27:
// [320] if(ghost3_direction==LEFT) goto game_logic::@92 -- vbuz1_eq_vbuc1_then_la1
lda #LEFT
cmp.z ghost3_direction
beq __b92
jmp __b28
// game_logic::@28
__b28:
// [321] if(ghost3_direction!=UP) goto game_logic::@93 -- vbuz1_neq_vbuc1_then_la1
lda #UP
cmp.z ghost3_direction
bne __b93
jmp __b29
// game_logic::@29
__b29:
// [322] ghost3_yfine = -- ghost3_yfine -- vbuz1=_dec_vbuz1
dec.z ghost3_yfine
jmp __b93
// game_logic::@93
__b93:
// [323] game_logic::$223 = ghost3_direction -- vbuxx=vbuz1
ldx.z ghost3_direction
// [324] if(ghost3_substep!=0) goto game_logic::@99 -- vbuz1_neq_0_then_la1
lda.z ghost3_substep
bne __b99
jmp __b167
// game_logic::@167
__b167:
// [325] if(game_logic::$223!=STOP) goto game_logic::@94 -- vbuxx_neq_vbuc1_then_la1
cpx #STOP
bne __b94
jmp __b99
// game_logic::@99
__b99:
// [326] ghost3_substep = 0 -- vbuz1=vbuc1
// Ghost is on a tile
lda #0
sta.z ghost3_substep
// [327] if(0!=ghost3_reverse) goto game_logic::@95 -- 0_neq_vbuz1_then_la1
lda.z ghost3_reverse
bne __b95
jmp __b100
// game_logic::@100
__b100:
// [328] game_logic::ghost3_xtile#0 = ghost3_xfine >> 1 -- vbuz1=vbuz2_ror_1
// Examine open directions from the new tile to determine next action
lda.z ghost3_xfine
lsr
sta.z ghost3_xtile
// [329] game_logic::ghost3_ytile#0 = ghost3_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z ghost3_yfine
lsr
sta.z ghost3_ytile
// [330] level_tile_directions::xtile#1 = game_logic::ghost3_xtile#0 -- vbuxx=vbuz1
ldx.z ghost3_xtile
// [331] level_tile_directions::ytile#1 = game_logic::ghost3_ytile#0 -- vbuaa=vbuz1
lda.z ghost3_ytile
// [332] call level_tile_directions
// [740] phi from game_logic::@100 to level_tile_directions [phi:game_logic::@100->level_tile_directions]
level_tile_directions_from___b100:
// [740] phi level_tile_directions::ytile#5 = level_tile_directions::ytile#1 [phi:game_logic::@100->level_tile_directions#0] -- register_copy
// [740] phi level_tile_directions::xtile#5 = level_tile_directions::xtile#1 [phi:game_logic::@100->level_tile_directions#1] -- register_copy
jsr level_tile_directions
// [333] level_tile_directions::return#10 = level_tile_directions::return#2
jmp __b154
// game_logic::@154
__b154:
// [334] game_logic::open_directions1#0 = level_tile_directions::return#10
// [335] game_logic::open_directions1#1 = game_logic::open_directions1#0 & DIRECTION_ELIMINATE[ghost3_direction] -- vbuyy=vbuaa_band_pbuc1_derefidx_vbuz1
// Eliminate the direction ghost came from
ldy.z ghost3_direction
and DIRECTION_ELIMINATE,y
tay
// [336] if(ghosts_mode==FRIGHTENED) goto game_logic::@96 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b96
jmp __b101
// game_logic::@101
__b101:
// [337] if(ghosts_mode==SCATTER) goto game_logic::@97 -- vbuz1_eq_vbuc1_then_la1
lda #SCATTER
cmp.z ghosts_mode
beq __b97_from___b101
jmp __b102
// game_logic::@102
__b102:
// [338] game_logic::target_xtile1#2 = pacman_xfine >> 1 -- vbuxx=vbuz1_ror_1
lda.z pacman_xfine
lsr
tax
// [339] game_logic::target_ytile1#2 = pacman_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z pacman_yfine
lsr
sta.z target_ytile1
// [340] phi from game_logic::@102 to game_logic::@97 [phi:game_logic::@102->game_logic::@97]
__b97_from___b102:
// [340] phi game_logic::target_ytile1#3 = game_logic::target_ytile1#2 [phi:game_logic::@102->game_logic::@97#0] -- register_copy
// [340] phi game_logic::target_xtile1#3 = game_logic::target_xtile1#2 [phi:game_logic::@102->game_logic::@97#1] -- register_copy
jmp __b97
// [340] phi from game_logic::@101 to game_logic::@97 [phi:game_logic::@101->game_logic::@97]
__b97_from___b101:
// [340] phi game_logic::target_ytile1#3 = 2 [phi:game_logic::@101->game_logic::@97#0] -- vbuz1=vbuc1
lda #2
sta.z target_ytile1
// [340] phi game_logic::target_xtile1#3 = 2 [phi:game_logic::@101->game_logic::@97#1] -- vbuxx=vbuc1
ldx #2
jmp __b97
// game_logic::@97
__b97:
// [341] choose_direction::open_directions#1 = game_logic::open_directions1#1 -- vbuz1=vbuyy
sty.z choose_direction.open_directions
// [342] choose_direction::ghost_xtile#1 = game_logic::ghost3_xtile#0 -- vbuyy=vbuz1
ldy.z ghost3_xtile
// [343] choose_direction::ghost_ytile#1 = game_logic::ghost3_ytile#0
// [344] choose_direction::target_xtile#1 = game_logic::target_xtile1#3
// [345] choose_direction::target_ytile#1 = game_logic::target_ytile1#3
// [346] call choose_direction
// [748] phi from game_logic::@97 to choose_direction [phi:game_logic::@97->choose_direction]
choose_direction_from___b97:
// [748] phi choose_direction::open_directions#10 = choose_direction::open_directions#1 [phi:game_logic::@97->choose_direction#0] -- register_copy
// [748] phi choose_direction::target_ytile#4 = choose_direction::target_ytile#1 [phi:game_logic::@97->choose_direction#1] -- register_copy
// [748] phi choose_direction::ghost_ytile#4 = choose_direction::ghost_ytile#1 [phi:game_logic::@97->choose_direction#2] -- register_copy
// [748] phi choose_direction::target_xtile#4 = choose_direction::target_xtile#1 [phi:game_logic::@97->choose_direction#3] -- register_copy
// [748] phi choose_direction::ghost_xtile#4 = choose_direction::ghost_xtile#1 [phi:game_logic::@97->choose_direction#4] -- register_copy
jsr choose_direction
// [347] choose_direction::return#1 = choose_direction::return#10 -- vbuaa=vbuz1
lda.z choose_direction.return
jmp __b155
// game_logic::@155
__b155:
// [348] game_logic::$140 = choose_direction::return#1
// [349] ghost3_direction = game_logic::$140 -- vbuz1=vbuaa
sta.z ghost3_direction
jmp __breturn
// game_logic::@96
__b96:
// [350] ghost3_direction = DIRECTION_SINGLE[game_logic::open_directions1#1] -- vbuz1=pbuc1_derefidx_vbuyy
// Choose a random direction between the open directions
lda DIRECTION_SINGLE,y
sta.z ghost3_direction
jmp __breturn
// game_logic::@95
__b95:
// [351] ghost3_direction = DIRECTION_REVERSE[ghost3_direction] -- vbuz1=pbuc1_derefidx_vbuz1
// If we are changing between scatter & chase then reverse the direction
ldy.z ghost3_direction
lda DIRECTION_REVERSE,y
sta.z ghost3_direction
// [352] ghost3_reverse = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost3_reverse
jmp __breturn
// game_logic::@94
__b94:
// [353] ghost3_substep = 1 -- vbuz1=vbuc1
// Ghost was on a tile and is moving, so he is now between tiles
lda #1
sta.z ghost3_substep
// [354] if(ghost3_xfine==1) goto game_logic::@98 -- vbuz1_eq_vbuc1_then_la1
// Teleport if we are in the magic positions
lda #1
cmp.z ghost3_xfine
beq __b98
jmp __b103
// game_logic::@103
__b103:
// [355] if(ghost3_xfine!=$61) goto game_logic::@return -- vbuz1_neq_vbuc1_then_la1
lda #$61
cmp.z ghost3_xfine
bne __breturn
jmp __b104
// game_logic::@104
__b104:
// [356] ghost3_xfine = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost3_xfine
jmp __breturn
// game_logic::@98
__b98:
// [357] ghost3_xfine = $61 -- vbuz1=vbuc1
lda #$61
sta.z ghost3_xfine
jmp __breturn
// game_logic::@92
__b92:
// [358] ghost3_xfine = -- ghost3_xfine -- vbuz1=_dec_vbuz1
dec.z ghost3_xfine
jmp __b93
// game_logic::@91
__b91:
// [359] ghost3_yfine = ++ ghost3_yfine -- vbuz1=_inc_vbuz1
inc.z ghost3_yfine
jmp __b93
// game_logic::@90
__b90:
// [360] ghost3_xfine = ++ ghost3_xfine -- vbuz1=_inc_vbuz1
inc.z ghost3_xfine
jmp __b93
// game_logic::@89
__b89:
// [361] ghost3_respawn = -- ghost3_respawn -- vbuz1=_dec_vbuz1
dec.z ghost3_respawn
// [362] if(ghost3_respawn!=0) goto game_logic::@return -- vbuz1_neq_0_then_la1
lda.z ghost3_respawn
bne __breturn
jmp __b105
// game_logic::@105
__b105:
// [363] ghost3_direction = UP -- vbuz1=vbuc1
// Spawn ghost
lda #UP
sta.z ghost3_direction
// [364] ghost3_xfine = 2 -- vbuz1=vbuc1
lda #2
sta.z ghost3_xfine
// [365] ghost3_yfine = $46 -- vbuz1=vbuc1
lda #$46
sta.z ghost3_yfine
// [366] ghost3_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost3_substep
jmp __breturn
// game_logic::@4
__b4:
// [367] if(0!=ghost2_respawn) goto game_logic::@106 -- 0_neq_vbuz1_then_la1
// Ghost spawn timer
lda.z ghost2_respawn
bne __b106
jmp __b30
// game_logic::@30
__b30:
// [368] if(ghost2_direction==RIGHT) goto game_logic::@107 -- vbuz1_eq_vbuc1_then_la1
// Move in the current direction (unless he is stopped)
lda #RIGHT
cmp.z ghost2_direction
beq __b107
jmp __b31
// game_logic::@31
__b31:
// [369] if(ghost2_direction==DOWN) goto game_logic::@108 -- vbuz1_eq_vbuc1_then_la1
lda #DOWN
cmp.z ghost2_direction
beq __b108
jmp __b32
// game_logic::@32
__b32:
// [370] if(ghost2_direction==LEFT) goto game_logic::@109 -- vbuz1_eq_vbuc1_then_la1
lda #LEFT
cmp.z ghost2_direction
beq __b109
jmp __b33
// game_logic::@33
__b33:
// [371] if(ghost2_direction!=UP) goto game_logic::@110 -- vbuz1_neq_vbuc1_then_la1
lda #UP
cmp.z ghost2_direction
bne __b110
jmp __b34
// game_logic::@34
__b34:
// [372] ghost2_yfine = -- ghost2_yfine -- vbuz1=_dec_vbuz1
dec.z ghost2_yfine
jmp __b110
// game_logic::@110
__b110:
// [373] game_logic::$226 = ghost2_direction -- vbuxx=vbuz1
ldx.z ghost2_direction
// [374] if(ghost2_substep!=0) goto game_logic::@116 -- vbuz1_neq_0_then_la1
lda.z ghost2_substep
bne __b116
jmp __b168
// game_logic::@168
__b168:
// [375] if(game_logic::$226!=STOP) goto game_logic::@111 -- vbuxx_neq_vbuc1_then_la1
cpx #STOP
bne __b111
jmp __b116
// game_logic::@116
__b116:
// [376] ghost2_substep = 0 -- vbuz1=vbuc1
// Ghost is on a tile
lda #0
sta.z ghost2_substep
// [377] if(0!=ghost2_reverse) goto game_logic::@112 -- 0_neq_vbuz1_then_la1
lda.z ghost2_reverse
bne __b112
jmp __b117
// game_logic::@117
__b117:
// [378] game_logic::ghost2_xtile#0 = ghost2_xfine >> 1 -- vbuz1=vbuz2_ror_1
// Examine open directions from the new tile to determine next action
lda.z ghost2_xfine
lsr
sta.z ghost2_xtile
// [379] game_logic::ghost2_ytile#0 = ghost2_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z ghost2_yfine
lsr
sta.z ghost2_ytile
// [380] level_tile_directions::xtile#2 = game_logic::ghost2_xtile#0 -- vbuxx=vbuz1
ldx.z ghost2_xtile
// [381] level_tile_directions::ytile#2 = game_logic::ghost2_ytile#0 -- vbuaa=vbuz1
lda.z ghost2_ytile
// [382] call level_tile_directions
// [740] phi from game_logic::@117 to level_tile_directions [phi:game_logic::@117->level_tile_directions]
level_tile_directions_from___b117:
// [740] phi level_tile_directions::ytile#5 = level_tile_directions::ytile#2 [phi:game_logic::@117->level_tile_directions#0] -- register_copy
// [740] phi level_tile_directions::xtile#5 = level_tile_directions::xtile#2 [phi:game_logic::@117->level_tile_directions#1] -- register_copy
jsr level_tile_directions
// [383] level_tile_directions::return#11 = level_tile_directions::return#2
jmp __b156
// game_logic::@156
__b156:
// [384] game_logic::open_directions2#0 = level_tile_directions::return#11
// [385] game_logic::open_directions2#1 = game_logic::open_directions2#0 & DIRECTION_ELIMINATE[ghost2_direction] -- vbuyy=vbuaa_band_pbuc1_derefidx_vbuz1
// Eliminate the direction ghost came from
ldy.z ghost2_direction
and DIRECTION_ELIMINATE,y
tay
// [386] if(ghosts_mode==FRIGHTENED) goto game_logic::@113 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b113
jmp __b118
// game_logic::@118
__b118:
// [387] if(ghosts_mode==SCATTER) goto game_logic::@114 -- vbuz1_eq_vbuc1_then_la1
lda #SCATTER
cmp.z ghosts_mode
beq __b114_from___b118
jmp __b119
// game_logic::@119
__b119:
// [388] game_logic::target_xtile2#2 = pacman_xfine >> 1 -- vbuxx=vbuz1_ror_1
lda.z pacman_xfine
lsr
tax
// [389] game_logic::target_ytile2#2 = pacman_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z pacman_yfine
lsr
sta.z target_ytile2
// [390] phi from game_logic::@119 to game_logic::@114 [phi:game_logic::@119->game_logic::@114]
__b114_from___b119:
// [390] phi game_logic::target_ytile2#3 = game_logic::target_ytile2#2 [phi:game_logic::@119->game_logic::@114#0] -- register_copy
// [390] phi game_logic::target_xtile2#3 = game_logic::target_xtile2#2 [phi:game_logic::@119->game_logic::@114#1] -- register_copy
jmp __b114
// [390] phi from game_logic::@118 to game_logic::@114 [phi:game_logic::@118->game_logic::@114]
__b114_from___b118:
// [390] phi game_logic::target_ytile2#3 = 2 [phi:game_logic::@118->game_logic::@114#0] -- vbuz1=vbuc1
lda #2
sta.z target_ytile2
// [390] phi game_logic::target_xtile2#3 = 2 [phi:game_logic::@118->game_logic::@114#1] -- vbuxx=vbuc1
ldx #2
jmp __b114
// game_logic::@114
__b114:
// [391] choose_direction::open_directions#2 = game_logic::open_directions2#1 -- vbuz1=vbuyy
sty.z choose_direction.open_directions
// [392] choose_direction::ghost_xtile#2 = game_logic::ghost2_xtile#0 -- vbuyy=vbuz1
ldy.z ghost2_xtile
// [393] choose_direction::ghost_ytile#2 = game_logic::ghost2_ytile#0
// [394] choose_direction::target_xtile#2 = game_logic::target_xtile2#3
// [395] choose_direction::target_ytile#2 = game_logic::target_ytile2#3
// [396] call choose_direction
// [748] phi from game_logic::@114 to choose_direction [phi:game_logic::@114->choose_direction]
choose_direction_from___b114:
// [748] phi choose_direction::open_directions#10 = choose_direction::open_directions#2 [phi:game_logic::@114->choose_direction#0] -- register_copy
// [748] phi choose_direction::target_ytile#4 = choose_direction::target_ytile#2 [phi:game_logic::@114->choose_direction#1] -- register_copy
// [748] phi choose_direction::ghost_ytile#4 = choose_direction::ghost_ytile#2 [phi:game_logic::@114->choose_direction#2] -- register_copy
// [748] phi choose_direction::target_xtile#4 = choose_direction::target_xtile#2 [phi:game_logic::@114->choose_direction#3] -- register_copy
// [748] phi choose_direction::ghost_xtile#4 = choose_direction::ghost_xtile#2 [phi:game_logic::@114->choose_direction#4] -- register_copy
jsr choose_direction
// [397] choose_direction::return#2 = choose_direction::return#10 -- vbuaa=vbuz1
lda.z choose_direction.return
jmp __b157
// game_logic::@157
__b157:
// [398] game_logic::$161 = choose_direction::return#2
// [399] ghost2_direction = game_logic::$161 -- vbuz1=vbuaa
sta.z ghost2_direction
jmp __breturn
// game_logic::@113
__b113:
// [400] ghost2_direction = DIRECTION_SINGLE[game_logic::open_directions2#1] -- vbuz1=pbuc1_derefidx_vbuyy
// Choose a random direction between the open directions
lda DIRECTION_SINGLE,y
sta.z ghost2_direction
jmp __breturn
// game_logic::@112
__b112:
// [401] ghost2_direction = DIRECTION_REVERSE[ghost2_direction] -- vbuz1=pbuc1_derefidx_vbuz1
// If we are changing between scatter & chase then reverse the direction
ldy.z ghost2_direction
lda DIRECTION_REVERSE,y
sta.z ghost2_direction
// [402] ghost2_reverse = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost2_reverse
jmp __breturn
// game_logic::@111
__b111:
// [403] ghost2_substep = 1 -- vbuz1=vbuc1
// Ghost was on a tile and is moving, so he is now between tiles
lda #1
sta.z ghost2_substep
// [404] if(ghost2_xfine==1) goto game_logic::@115 -- vbuz1_eq_vbuc1_then_la1
// Teleport if we are in the magic positions
lda #1
cmp.z ghost2_xfine
beq __b115
jmp __b120
// game_logic::@120
__b120:
// [405] if(ghost2_xfine!=$61) goto game_logic::@return -- vbuz1_neq_vbuc1_then_la1
lda #$61
cmp.z ghost2_xfine
bne __breturn
jmp __b121
// game_logic::@121
__b121:
// [406] ghost2_xfine = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost2_xfine
jmp __breturn
// game_logic::@115
__b115:
// [407] ghost2_xfine = $61 -- vbuz1=vbuc1
lda #$61
sta.z ghost2_xfine
jmp __breturn
// game_logic::@109
__b109:
// [408] ghost2_xfine = -- ghost2_xfine -- vbuz1=_dec_vbuz1
dec.z ghost2_xfine
jmp __b110
// game_logic::@108
__b108:
// [409] ghost2_yfine = ++ ghost2_yfine -- vbuz1=_inc_vbuz1
inc.z ghost2_yfine
jmp __b110
// game_logic::@107
__b107:
// [410] ghost2_xfine = ++ ghost2_xfine -- vbuz1=_inc_vbuz1
inc.z ghost2_xfine
jmp __b110
// game_logic::@106
__b106:
// [411] ghost2_respawn = -- ghost2_respawn -- vbuz1=_dec_vbuz1
dec.z ghost2_respawn
// [412] if(ghost2_respawn!=0) goto game_logic::@return -- vbuz1_neq_0_then_la1
lda.z ghost2_respawn
bne __breturn
jmp __b122
// game_logic::@122
__b122:
// [413] ghost2_direction = LEFT -- vbuz1=vbuc1
// Spawn ghost
lda #LEFT
sta.z ghost2_direction
// [414] ghost2_xfine = $60 -- vbuz1=vbuc1
lda #$60
sta.z ghost2_xfine
// [415] ghost2_yfine = $46 -- vbuz1=vbuc1
lda #$46
sta.z ghost2_yfine
// [416] ghost2_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost2_substep
jmp __breturn
// game_logic::@3
__b3:
// [417] if(0!=ghost1_respawn) goto game_logic::@123 -- 0_neq_vbuz1_then_la1
// Ghost spawn timer
lda.z ghost1_respawn
bne __b123
jmp __b35
// game_logic::@35
__b35:
// [418] if(ghost1_direction==RIGHT) goto game_logic::@124 -- vbuz1_eq_vbuc1_then_la1
// Ghost 1 animation
// Move in the current direction (unless he is stopped)
lda #RIGHT
cmp.z ghost1_direction
beq __b124
jmp __b36
// game_logic::@36
__b36:
// [419] if(ghost1_direction==DOWN) goto game_logic::@125 -- vbuz1_eq_vbuc1_then_la1
lda #DOWN
cmp.z ghost1_direction
beq __b125
jmp __b37
// game_logic::@37
__b37:
// [420] if(ghost1_direction==LEFT) goto game_logic::@126 -- vbuz1_eq_vbuc1_then_la1
lda #LEFT
cmp.z ghost1_direction
beq __b126
jmp __b38
// game_logic::@38
__b38:
// [421] if(ghost1_direction!=UP) goto game_logic::@127 -- vbuz1_neq_vbuc1_then_la1
lda #UP
cmp.z ghost1_direction
bne __b127
jmp __b39
// game_logic::@39
__b39:
// [422] ghost1_yfine = -- ghost1_yfine -- vbuz1=_dec_vbuz1
dec.z ghost1_yfine
jmp __b127
// game_logic::@127
__b127:
// [423] game_logic::$229 = ghost1_direction -- vbuxx=vbuz1
ldx.z ghost1_direction
// [424] if(ghost1_substep!=0) goto game_logic::@133 -- vbuz1_neq_0_then_la1
lda.z ghost1_substep
bne __b133
jmp __b169
// game_logic::@169
__b169:
// [425] if(game_logic::$229!=STOP) goto game_logic::@128 -- vbuxx_neq_vbuc1_then_la1
cpx #STOP
bne __b128
jmp __b133
// game_logic::@133
__b133:
// [426] ghost1_substep = 0 -- vbuz1=vbuc1
// Ghost is on a tile
lda #0
sta.z ghost1_substep
// [427] if(0!=ghost1_reverse) goto game_logic::@129 -- 0_neq_vbuz1_then_la1
lda.z ghost1_reverse
bne __b129
jmp __b134
// game_logic::@134
__b134:
// [428] game_logic::ghost1_xtile#0 = ghost1_xfine >> 1 -- vbuz1=vbuz2_ror_1
// Examine open directions from the new tile to determine next action
lda.z ghost1_xfine
lsr
sta.z ghost1_xtile
// [429] game_logic::ghost1_ytile#0 = ghost1_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z ghost1_yfine
lsr
sta.z ghost1_ytile
// [430] level_tile_directions::xtile#3 = game_logic::ghost1_xtile#0 -- vbuxx=vbuz1
ldx.z ghost1_xtile
// [431] level_tile_directions::ytile#3 = game_logic::ghost1_ytile#0 -- vbuaa=vbuz1
lda.z ghost1_ytile
// [432] call level_tile_directions
// [740] phi from game_logic::@134 to level_tile_directions [phi:game_logic::@134->level_tile_directions]
level_tile_directions_from___b134:
// [740] phi level_tile_directions::ytile#5 = level_tile_directions::ytile#3 [phi:game_logic::@134->level_tile_directions#0] -- register_copy
// [740] phi level_tile_directions::xtile#5 = level_tile_directions::xtile#3 [phi:game_logic::@134->level_tile_directions#1] -- register_copy
jsr level_tile_directions
// [433] level_tile_directions::return#12 = level_tile_directions::return#2
jmp __b158
// game_logic::@158
__b158:
// [434] game_logic::open_directions3#0 = level_tile_directions::return#12
// [435] game_logic::open_directions3#1 = game_logic::open_directions3#0 & DIRECTION_ELIMINATE[ghost1_direction] -- vbuyy=vbuaa_band_pbuc1_derefidx_vbuz1
// Eliminate the direction ghost came from
ldy.z ghost1_direction
and DIRECTION_ELIMINATE,y
tay
// [436] if(ghosts_mode==FRIGHTENED) goto game_logic::@130 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b130
jmp __b135
// game_logic::@135
__b135:
// [437] if(ghosts_mode==SCATTER) goto game_logic::@131 -- vbuz1_eq_vbuc1_then_la1
lda #SCATTER
cmp.z ghosts_mode
beq __b131_from___b135
jmp __b136
// game_logic::@136
__b136:
// [438] game_logic::target_xtile3#2 = pacman_xfine >> 1 -- vbuxx=vbuz1_ror_1
lda.z pacman_xfine
lsr
tax
// [439] game_logic::target_ytile3#2 = pacman_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z pacman_yfine
lsr
sta.z target_ytile3
// [440] phi from game_logic::@136 to game_logic::@131 [phi:game_logic::@136->game_logic::@131]
__b131_from___b136:
// [440] phi game_logic::target_ytile3#3 = game_logic::target_ytile3#2 [phi:game_logic::@136->game_logic::@131#0] -- register_copy
// [440] phi game_logic::target_xtile3#3 = game_logic::target_xtile3#2 [phi:game_logic::@136->game_logic::@131#1] -- register_copy
jmp __b131
// [440] phi from game_logic::@135 to game_logic::@131 [phi:game_logic::@135->game_logic::@131]
__b131_from___b135:
// [440] phi game_logic::target_ytile3#3 = 2 [phi:game_logic::@135->game_logic::@131#0] -- vbuz1=vbuc1
lda #2
sta.z target_ytile3
// [440] phi game_logic::target_xtile3#3 = 2 [phi:game_logic::@135->game_logic::@131#1] -- vbuxx=vbuc1
ldx #2
jmp __b131
// game_logic::@131
__b131:
// [441] choose_direction::open_directions#3 = game_logic::open_directions3#1 -- vbuz1=vbuyy
sty.z choose_direction.open_directions
// [442] choose_direction::ghost_xtile#3 = game_logic::ghost1_xtile#0 -- vbuyy=vbuz1
ldy.z ghost1_xtile
// [443] choose_direction::ghost_ytile#3 = game_logic::ghost1_ytile#0
// [444] choose_direction::target_xtile#3 = game_logic::target_xtile3#3
// [445] choose_direction::target_ytile#3 = game_logic::target_ytile3#3
// [446] call choose_direction
// [748] phi from game_logic::@131 to choose_direction [phi:game_logic::@131->choose_direction]
choose_direction_from___b131:
// [748] phi choose_direction::open_directions#10 = choose_direction::open_directions#3 [phi:game_logic::@131->choose_direction#0] -- register_copy
// [748] phi choose_direction::target_ytile#4 = choose_direction::target_ytile#3 [phi:game_logic::@131->choose_direction#1] -- register_copy
// [748] phi choose_direction::ghost_ytile#4 = choose_direction::ghost_ytile#3 [phi:game_logic::@131->choose_direction#2] -- register_copy
// [748] phi choose_direction::target_xtile#4 = choose_direction::target_xtile#3 [phi:game_logic::@131->choose_direction#3] -- register_copy
// [748] phi choose_direction::ghost_xtile#4 = choose_direction::ghost_xtile#3 [phi:game_logic::@131->choose_direction#4] -- register_copy
jsr choose_direction
// [447] choose_direction::return#3 = choose_direction::return#10 -- vbuaa=vbuz1
lda.z choose_direction.return
jmp __b159
// game_logic::@159
__b159:
// [448] game_logic::$182 = choose_direction::return#3
// [449] ghost1_direction = game_logic::$182 -- vbuz1=vbuaa
sta.z ghost1_direction
jmp __breturn
// game_logic::@130
__b130:
// [450] ghost1_direction = DIRECTION_SINGLE[game_logic::open_directions3#1] -- vbuz1=pbuc1_derefidx_vbuyy
// Choose a random direction between the open directions
lda DIRECTION_SINGLE,y
sta.z ghost1_direction
jmp __breturn
// game_logic::@129
__b129:
// [451] ghost1_direction = DIRECTION_REVERSE[ghost1_direction] -- vbuz1=pbuc1_derefidx_vbuz1
// If we are changing between scatter & chase then reverse the direction
ldy.z ghost1_direction
lda DIRECTION_REVERSE,y
sta.z ghost1_direction
// [452] ghost1_reverse = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost1_reverse
jmp __breturn
// game_logic::@128
__b128:
// [453] ghost1_substep = 1 -- vbuz1=vbuc1
// Ghost was on a tile and is moving, so he is now between tiles
lda #1
sta.z ghost1_substep
// [454] if(ghost1_xfine==1) goto game_logic::@132 -- vbuz1_eq_vbuc1_then_la1
// Teleport if we are in the magic positions
lda #1
cmp.z ghost1_xfine
beq __b132
jmp __b137
// game_logic::@137
__b137:
// [455] if(ghost1_xfine!=$61) goto game_logic::@return -- vbuz1_neq_vbuc1_then_la1
lda #$61
cmp.z ghost1_xfine
bne __breturn
jmp __b138
// game_logic::@138
__b138:
// [456] ghost1_xfine = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost1_xfine
jmp __breturn
// game_logic::@132
__b132:
// [457] ghost1_xfine = $61 -- vbuz1=vbuc1
lda #$61
sta.z ghost1_xfine
jmp __breturn
// game_logic::@126
__b126:
// [458] ghost1_xfine = -- ghost1_xfine -- vbuz1=_dec_vbuz1
dec.z ghost1_xfine
jmp __b127
// game_logic::@125
__b125:
// [459] ghost1_yfine = ++ ghost1_yfine -- vbuz1=_inc_vbuz1
inc.z ghost1_yfine
jmp __b127
// game_logic::@124
__b124:
// [460] ghost1_xfine = ++ ghost1_xfine -- vbuz1=_inc_vbuz1
inc.z ghost1_xfine
jmp __b127
// game_logic::@123
__b123:
// [461] ghost1_respawn = -- ghost1_respawn -- vbuz1=_dec_vbuz1
dec.z ghost1_respawn
// [462] if(ghost1_respawn!=0) goto game_logic::@return -- vbuz1_neq_0_then_la1
lda.z ghost1_respawn
bne __breturn
jmp __b139
// game_logic::@139
__b139:
// [463] ghost1_direction = DOWN -- vbuz1=vbuc1
// Spawn ghost 1
lda #DOWN
sta.z ghost1_direction
// [464] ghost1_xfine = $60 -- vbuz1=vbuc1
lda #$60
sta.z ghost1_xfine
// [465] ghost1_yfine = 2 -- vbuz1=vbuc1
lda #2
sta.z ghost1_yfine
// [466] ghost1_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost1_substep
jmp __breturn
// game_logic::@2
__b2:
// [467] if(pacman_direction==RIGHT) goto game_logic::@140 -- vbuz1_eq_vbuc1_then_la1
// Animate pacman
// Move pacman in the current direction (unless he is stopped)
lda #RIGHT
cmp.z pacman_direction
beq __b140
jmp __b40
// game_logic::@40
__b40:
// [468] if(pacman_direction==DOWN) goto game_logic::@141 -- vbuz1_eq_vbuc1_then_la1
lda #DOWN
cmp.z pacman_direction
beq __b141
jmp __b41
// game_logic::@41
__b41:
// [469] if(pacman_direction==LEFT) goto game_logic::@142 -- vbuz1_eq_vbuc1_then_la1
lda #LEFT
cmp.z pacman_direction
beq __b142
jmp __b42
// game_logic::@42
__b42:
// [470] if(pacman_direction!=UP) goto game_logic::@143 -- vbuz1_neq_vbuc1_then_la1
lda #UP
cmp.z pacman_direction
bne __b143
jmp __b43
// game_logic::@43
__b43:
// [471] pacman_yfine = -- pacman_yfine -- vbuz1=_dec_vbuz1
dec.z pacman_yfine
jmp __b143
// game_logic::@143
__b143:
// [472] game_logic::$232 = pacman_direction -- vbuxx=vbuz1
ldx.z pacman_direction
// [473] if(pacman_substep!=0) goto game_logic::@147 -- vbuz1_neq_0_then_la1
lda.z pacman_substep
bne __b147
jmp __b170
// game_logic::@170
__b170:
// [474] if(game_logic::$232!=STOP) goto game_logic::@144 -- vbuxx_neq_vbuc1_then_la1
cpx #STOP
bne __b144
jmp __b147
// game_logic::@147
__b147:
// [475] pacman_substep = 0 -- vbuz1=vbuc1
// Pacman is on a (new) tile
lda #0
sta.z pacman_substep
// [476] game_logic::pacman_xtile1#0 = pacman_xfine >> 1 -- vbuxx=vbuz1_ror_1
// Examine open directions from the new tile to determine next action
lda.z pacman_xfine
lsr
tax
// [477] game_logic::pacman_ytile1#0 = pacman_yfine >> 1 -- vbuaa=vbuz1_ror_1
lda.z pacman_yfine
lsr
// [478] level_tile_directions::xtile#4 = game_logic::pacman_xtile1#0
// [479] level_tile_directions::ytile#4 = game_logic::pacman_ytile1#0
// [480] call level_tile_directions
// [740] phi from game_logic::@147 to level_tile_directions [phi:game_logic::@147->level_tile_directions]
level_tile_directions_from___b147:
// [740] phi level_tile_directions::ytile#5 = level_tile_directions::ytile#4 [phi:game_logic::@147->level_tile_directions#0] -- register_copy
// [740] phi level_tile_directions::xtile#5 = level_tile_directions::xtile#4 [phi:game_logic::@147->level_tile_directions#1] -- register_copy
jsr level_tile_directions
// [481] level_tile_directions::return#13 = level_tile_directions::return#2
jmp __b160
// game_logic::@160
__b160:
// [482] game_logic::open_directions4#0 = level_tile_directions::return#13 -- vbuxx=vbuaa
tax
// [483] game_logic::$199 = *((char *)CIA1) & $f -- vbuaa=_deref_pbuc1_band_vbuc2
lda #$f
and CIA1
// [484] game_logic::$200 = game_logic::$199 ^ $f -- vbuaa=vbuaa_bxor_vbuc1
eor #$f
// [485] game_logic::joy_directions#0 = game_logic::$200 << 2 -- vbuaa=vbuaa_rol_2
// Read joystick#2 - arrange bits to match DIRECTION
asl
asl
// [486] if(game_logic::joy_directions#0==0) goto game_logic::@145 -- vbuaa_eq_0_then_la1
cmp #0
beq __b145
jmp __b148
// game_logic::@148
__b148:
// [487] game_logic::$204 = game_logic::joy_directions#0 & game_logic::open_directions4#0 -- vbuaa=vbuaa_band_vbuxx
stx.z $ff
and.z $ff
// [488] game_logic::new_direction#0 = DIRECTION_SINGLE[game_logic::$204] -- vbuaa=pbuc1_derefidx_vbuaa
tay
lda DIRECTION_SINGLE,y
// [489] if(game_logic::new_direction#0==0) goto game_logic::@145 -- vbuaa_eq_0_then_la1
cmp #0
beq __b145
jmp __b149
// game_logic::@149
__b149:
// [490] pacman_direction = game_logic::new_direction#0 -- vbuz1=vbuaa
sta.z pacman_direction
jmp __b145
// game_logic::@145
__b145:
// [491] pacman_direction = pacman_direction & game_logic::open_directions4#0 -- vbuz1=vbuz1_band_vbuxx
// Stop pacman if the current direction is no longer open
lda.z pacman_direction
sax.z pacman_direction
jmp __breturn
// game_logic::@144
__b144:
// [492] pacman_substep = 1 -- vbuz1=vbuc1
// Pacman was on a tile and is moving, so he is now between tiles
lda #1
sta.z pacman_substep
// [493] pacman_ch1_enabled = 1 -- vbuz1=vbuc1
// Enable the eating sound whenever pacman is moving
lda #1
sta.z pacman_ch1_enabled
// [494] if(pacman_xfine==1) goto game_logic::@146 -- vbuz1_eq_vbuc1_then_la1
// Teleport if we are in the magic positions
lda #1
cmp.z pacman_xfine
beq __b146
jmp __b150
// game_logic::@150
__b150:
// [495] if(pacman_xfine!=$61) goto game_logic::@return -- vbuz1_neq_vbuc1_then_la1
lda #$61
cmp.z pacman_xfine
bne __breturn
jmp __b151
// game_logic::@151
__b151:
// [496] pacman_xfine = 1 -- vbuz1=vbuc1
lda #1
sta.z pacman_xfine
jmp __breturn
// game_logic::@146
__b146:
// [497] pacman_xfine = $61 -- vbuz1=vbuc1
lda #$61
sta.z pacman_xfine
jmp __breturn
// game_logic::@142
__b142:
// [498] pacman_xfine = -- pacman_xfine -- vbuz1=_dec_vbuz1
dec.z pacman_xfine
jmp __b143
// game_logic::@141
__b141:
// [499] pacman_yfine = ++ pacman_yfine -- vbuz1=_inc_vbuz1
inc.z pacman_yfine
jmp __b143
// game_logic::@140
__b140:
// [500] pacman_xfine = ++ pacman_xfine -- vbuz1=_inc_vbuz1
inc.z pacman_xfine
jmp __b143
}
// pacman_sound_play
pacman_sound_play: {
// [501] if(0==pacman_ch1_enabled) goto pacman_sound_play::@return -- 0_eq_vbuz1_then_la1
lda.z pacman_ch1_enabled
beq __breturn
jmp __b1
// pacman_sound_play::@1
__b1:
// [502] *SID_CH1_FREQ_HI = PACMAN_CH1_FREQ_HI[pacman_ch1_idx] -- _deref_pbuc1=pbuc2_derefidx_vbuz1
// Play the entire sound - and then reset and disable it
ldy.z pacman_ch1_idx
lda PACMAN_CH1_FREQ_HI,y
sta SID_CH1_FREQ_HI
// [503] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = PACMAN_CH1_CONTROL[pacman_ch1_idx] -- _deref_pbuc1=pbuc2_derefidx_vbuz1
ldy.z pacman_ch1_idx
lda PACMAN_CH1_CONTROL,y
sta SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL
// [504] pacman_ch1_idx = ++ pacman_ch1_idx -- vbuz1=_inc_vbuz1
inc.z pacman_ch1_idx
// [505] if(pacman_ch1_idx!=$16*SIZEOF_CHAR) goto pacman_sound_play::@return -- vbuz1_neq_vbuc1_then_la1
lda #$16*SIZEOF_CHAR
cmp.z pacman_ch1_idx
bne __breturn
jmp __b2
// pacman_sound_play::@2
__b2:
// [506] pacman_ch1_idx = 0 -- vbuz1=vbuc1
lda #0
sta.z pacman_ch1_idx
// [507] pacman_ch1_enabled = 0 -- vbuz1=vbuc1
lda #0
sta.z pacman_ch1_enabled
jmp __breturn
// pacman_sound_play::@return
__breturn:
// [508] return
rts
}
// splash_run
// Initializes all data for the splash and shows the splash.
// Returns when the splash is complete and the user clicks the joystidk #2 button
splash_run: {
.const toDd001_return = 3^(>SCREENS_1)/$40
.const toD0181_return = 0
.label xpos = 5
.label i = $14
jmp SEI1
// splash_run::SEI1
SEI1:
// asm { sei }
sei
jmp __b18
// splash_run::@18
__b18:
// [511] *((char *)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
// [512] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2
// Disable kernal & basic & IO
lda #PROCPORT_DDR_MEMORY_MASK
sta.z PROCPORT_DDR
// [513] *PROCPORT = PROCPORT_RAM_ALL -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_ALL
sta.z PROCPORT
// [514] call memset
// Reset memory to avoid crashes
// [778] phi from splash_run::@18 to memset [phi:splash_run::@18->memset]
memset_from___b18:
// [778] phi memset::str#6 = (void *)(char *) 16384 [phi:splash_run::@18->memset#0] -- pvoz1=pvoc1
lda #<$4000
sta.z memset.str
lda #>$4000
sta.z memset.str+1
// [778] phi memset::num#5 = $c00 [phi:splash_run::@18->memset#1] -- vwuz1=vwuc1
lda #<$c00
sta.z memset.num
lda #>$c00
sta.z memset.num+1
jsr memset
jmp __b22
// splash_run::@22
__b22:
// [515] byteboozer_decrunch::crunched = RASTER_CODE_CRUNCHED -- pbuz1=pbuc1
lda #<RASTER_CODE_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>RASTER_CODE_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [516] call byteboozer_decrunch
// Decrunch raster code
jsr byteboozer_decrunch
jmp __b23
// splash_run::@23
__b23:
// [517] byteboozer_decrunch::crunched = LOGIC_CODE_CRUNCHED -- pbuz1=pbuc1
lda #<LOGIC_CODE_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>LOGIC_CODE_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [518] call byteboozer_decrunch
// Decrunch logic code
jsr byteboozer_decrunch
// [519] phi from splash_run::@23 to splash_run::@24 [phi:splash_run::@23->splash_run::@24]
__b24_from___b23:
jmp __b24
// splash_run::@24
__b24:
// [520] call merge_code
// Merge the raster with the logic-code
// [789] phi from splash_run::@24 to merge_code [phi:splash_run::@24->merge_code]
merge_code_from___b24:
jsr merge_code
// [521] phi from splash_run::@24 to splash_run::@25 [phi:splash_run::@24->splash_run::@25]
__b25_from___b24:
jmp __b25
// splash_run::@25
__b25:
// [522] call memset
// Clear the graphics banks
// [778] phi from splash_run::@25 to memset [phi:splash_run::@25->memset]
memset_from___b25:
// [778] phi memset::str#6 = (void *)BANK_1+$2000 [phi:splash_run::@25->memset#0] -- pvoz1=pvoc1
lda #<BANK_1+$2000
sta.z memset.str
lda #>BANK_1+$2000
sta.z memset.str+1
// [778] phi memset::num#5 = $1fff [phi:splash_run::@25->memset#1] -- vwuz1=vwuc1
lda #<$1fff
sta.z memset.num
lda #>$1fff
sta.z memset.num+1
jsr memset
// [523] phi from splash_run::@25 to splash_run::@26 [phi:splash_run::@25->splash_run::@26]
__b26_from___b25:
jmp __b26
// splash_run::@26
__b26:
// [524] call memset
// [778] phi from splash_run::@26 to memset [phi:splash_run::@26->memset]
memset_from___b26:
// [778] phi memset::str#6 = (void *)BANK_2 [phi:splash_run::@26->memset#0] -- pvoz1=pvoc1
lda #<BANK_2
sta.z memset.str
lda #>BANK_2
sta.z memset.str+1
// [778] phi memset::num#5 = $3fff [phi:splash_run::@26->memset#1] -- vwuz1=vwuc1
lda #<$3fff
sta.z memset.num
lda #>$3fff
sta.z memset.num+1
jsr memset
// [525] phi from splash_run::@26 to splash_run::@27 [phi:splash_run::@26->splash_run::@27]
__b27_from___b26:
jmp __b27
// splash_run::@27
__b27:
// [526] call init_render_index
// Initialize the renderer tables
// [836] phi from splash_run::@27 to init_render_index [phi:splash_run::@27->init_render_index]
init_render_index_from___b27:
jsr init_render_index
jmp __b28
// splash_run::@28
__b28:
// [527] byteboozer_decrunch::crunched = SPLASH_CRUNCHED -- pbuz1=pbuc1
lda #<SPLASH_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>SPLASH_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [528] call byteboozer_decrunch
// decrunch splash screen
jsr byteboozer_decrunch
// [529] phi from splash_run::@28 to splash_run::@29 [phi:splash_run::@28->splash_run::@29]
__b29_from___b28:
jmp __b29
// splash_run::@29
__b29:
// [530] call splash_show
// Show the splash screen
// [867] phi from splash_run::@29 to splash_show [phi:splash_run::@29->splash_show]
splash_show_from___b29:
jsr splash_show
// [531] phi from splash_run::@29 to splash_run::@30 [phi:splash_run::@29->splash_run::@30]
__b30_from___b29:
jmp __b30
// splash_run::@30
__b30:
// [532] call memset
// Clear the graphics bank
// [778] phi from splash_run::@30 to memset [phi:splash_run::@30->memset]
memset_from___b30:
// [778] phi memset::str#6 = (void *)BANK_1 [phi:splash_run::@30->memset#0] -- pvoz1=pvoc1
lda #<BANK_1
sta.z memset.str
lda #>BANK_1
sta.z memset.str+1
// [778] phi memset::num#5 = $1fff [phi:splash_run::@30->memset#1] -- vwuz1=vwuc1
lda #<$1fff
sta.z memset.num
lda #>$1fff
sta.z memset.num+1
jsr memset
// [533] phi from splash_run::@30 to splash_run::@31 [phi:splash_run::@30->splash_run::@31]
__b31_from___b30:
jmp __b31
// splash_run::@31
__b31:
// [534] call init_bobs_restore
// Initialize bobs_restore to "safe" values
// [881] phi from splash_run::@31 to init_bobs_restore [phi:splash_run::@31->init_bobs_restore]
init_bobs_restore_from___b31:
jsr init_bobs_restore
jmp __b32
// splash_run::@32
__b32:
// [535] byteboozer_decrunch::crunched = BOB_GRAPHICS_CRUNCHED -- pbuz1=pbuc1
lda #<BOB_GRAPHICS_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>BOB_GRAPHICS_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [536] call byteboozer_decrunch
// decrunch bobs graphics tables
jsr byteboozer_decrunch
// [537] phi from splash_run::@32 to splash_run::@33 [phi:splash_run::@32->splash_run::@33]
__b33_from___b32:
jmp __b33
// splash_run::@33
__b33:
// [538] call init_sprite_pointers
// Set sprite pointers on all screens (in both graphics banks)
// [898] phi from splash_run::@33 to init_sprite_pointers [phi:splash_run::@33->init_sprite_pointers]
init_sprite_pointers_from___b33:
jsr init_sprite_pointers
// [539] phi from splash_run::@33 to splash_run::@34 [phi:splash_run::@33->splash_run::@34]
__b34_from___b33:
jmp __b34
// splash_run::@34
__b34:
// [540] call memcpy
// Move the crunched music to upper memory before decrunching it
// [912] phi from splash_run::@34 to memcpy [phi:splash_run::@34->memcpy]
memcpy_from___b34:
jsr memcpy
jmp __b35
// splash_run::@35
__b35:
// [541] byteboozer_decrunch::crunched = INTRO_MUSIC_CRUNCHED_UPPER -- pbuz1=pbuc1
lda #<INTRO_MUSIC_CRUNCHED_UPPER
sta.z byteboozer_decrunch.crunched
lda #>INTRO_MUSIC_CRUNCHED_UPPER
sta.z byteboozer_decrunch.crunched+1
// [542] call byteboozer_decrunch
// zero-fill the entire Init segment
//memset(LEVEL_TILES_CRUNCHED, 0, INTRO_MUSIC_CRUNCHED+INTRO_MUSIC_CRUNCHED_SIZE-LEVEL_TILES_CRUNCHED);
// decrunch intro music
jsr byteboozer_decrunch
// [543] phi from splash_run::@35 to splash_run::@36 [phi:splash_run::@35->splash_run::@36]
__b36_from___b35:
jmp __b36
// splash_run::@36
__b36:
// [544] call memset
// Zero-fill the upper memory
// [778] phi from splash_run::@36 to memset [phi:splash_run::@36->memset]
memset_from___b36:
// [778] phi memset::str#6 = (void *)INTRO_MUSIC_CRUNCHED_UPPER [phi:splash_run::@36->memset#0] -- pvoz1=pvoc1
lda #<INTRO_MUSIC_CRUNCHED_UPPER
sta.z memset.str
lda #>INTRO_MUSIC_CRUNCHED_UPPER
sta.z memset.str+1
// [778] phi memset::num#5 = INTRO_MUSIC_CRUNCHED_SIZE [phi:splash_run::@36->memset#1] -- vwuz1=vwuc1
lda #<INTRO_MUSIC_CRUNCHED_SIZE
sta.z memset.num
lda #>INTRO_MUSIC_CRUNCHED_SIZE
sta.z memset.num+1
jsr memset
jmp __b37
// splash_run::@37
__b37:
// [545] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2
// Disable kernal & basic - enable IO
lda #PROCPORT_DDR_MEMORY_MASK
sta.z PROCPORT_DDR
// [546] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// [547] phi from splash_run::@37 to splash_run::@2 [phi:splash_run::@37->splash_run::@2]
__b2_from___b37:
// [547] phi splash_run::msb#10 = 0 [phi:splash_run::@37->splash_run::@2#0] -- vbuxx=vbuc1
ldx #0
// [547] phi splash_run::i#2 = 0 [phi:splash_run::@37->splash_run::@2#1] -- vbuz1=vbuc1
lda #0
sta.z i
jmp __b2
// splash_run::@2
__b2:
// [548] if(splash_run::i#2<8) goto splash_run::@3 -- vbuz1_lt_vbuc1_then_la1
lda.z i
cmp #8
bcc __b3
// [549] phi from splash_run::@2 to splash_run::toDd001 [phi:splash_run::@2->splash_run::toDd001]
toDd001_from___b2:
jmp toDd001
// splash_run::toDd001
toDd001:
jmp __b19
// splash_run::@19
__b19:
// [550] *((char *)CIA2) = splash_run::toDd001_return#0 -- _deref_pbuc1=vbuc2
// Set initial graphics bank
lda #toDd001_return
sta CIA2
// [551] canvas_base_hi = byte1 SPRITES_2 -- vbuz1=vbuc1
// Set initial render/restore buffer
lda #>SPRITES_2
sta.z canvas_base_hi
// [552] bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE -- vbuz1=vbuc1
lda #NUM_BOBS*SIZE_BOB_RESTORE
sta.z bobs_restore_base
// [553] phi from splash_run::@19 to splash_run::toD0181 [phi:splash_run::@19->splash_run::toD0181]
toD0181_from___b19:
jmp toD0181
// splash_run::toD0181
toD0181:
jmp __b20
// splash_run::@20
__b20:
// [554] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = splash_run::toD0181_return#0 -- _deref_pbuc1=vbuc2
// Select first screen
lda #toD0181_return
sta VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY
// [555] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB) = splash_run::msb#10 -- _deref_pbuc1=vbuxx
stx VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB
// [556] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $ff -- _deref_pbuc1=vbuc2
lda #$ff
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE
// [557] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $ff -- _deref_pbuc1=vbuc2
lda #$ff
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X
// [558] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = BLACK -- _deref_pbuc1=vbuc2
lda #BLACK
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR
// [559] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = BLACK -- _deref_pbuc1=vbuc2
lda #BLACK
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR
// [560] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLUE -- _deref_pbuc1=vbuc2
lda #BLUE
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1
// [561] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = RED -- _deref_pbuc1=vbuc2
lda #RED
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2
// [562] top_sprites_mc = 3 -- vbuz1=vbuc1
// On the splash screen sprites all sprites are SC - except sprite #0,1 on the top/bottom of the screen
lda #3
sta.z top_sprites_mc
// [563] side_sprites_mc = 0 -- vbuz1=vbuc1
lda #0
sta.z side_sprites_mc
// [564] bottom_sprites_mc = 3 -- vbuz1=vbuc1
lda #3
sta.z bottom_sprites_mc
// [565] top_sprites_color = YELLOW -- vbuz1=vbuc1
// On the splash top/bottom sc-sprites are yellow and side-sprites are blue
lda #YELLOW
sta.z top_sprites_color
// [566] side_sprites_color = BLUE -- vbuz1=vbuc1
lda #BLUE
sta.z side_sprites_color
// [567] bottom_sprites_color = YELLOW -- vbuz1=vbuc1
lda #YELLOW
sta.z bottom_sprites_color
// [568] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc -- _deref_pbuc1=vbuz1
// Set the initial top colors/MC
lda.z top_sprites_mc
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC
// [569] phi from splash_run::@20 to splash_run::@6 [phi:splash_run::@20->splash_run::@6]
__b6_from___b20:
// [569] phi splash_run::i1#2 = 0 [phi:splash_run::@20->splash_run::@6#0] -- vbuxx=vbuc1
ldx #0
jmp __b6
// Set initial Sprite Color
// splash_run::@6
__b6:
// [570] if(splash_run::i1#2<8) goto splash_run::@7 -- vbuxx_lt_vbuc1_then_la1
cpx #8
bcc __b7
jmp __b8
// splash_run::@8
__b8:
// [571] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = 8 -- _deref_pbuc1=vbuc2
// Set VICII CONTROL2 ($d016) to 8 to allow ASL, LSR to be used for opening the border
lda #8
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2
// [572] phi from splash_run::@8 to splash_run::@9 [phi:splash_run::@8->splash_run::@9]
__b9_from___b8:
// [572] phi splash_run::i2#2 = 0 [phi:splash_run::@8->splash_run::@9#0] -- vbuxx=vbuc1
ldx #0
jmp __b9
// Move the bobs to the center to avoid interference while rendering the level
// splash_run::@9
__b9:
// [573] if(splash_run::i2#2<4) goto splash_run::@10 -- vbuxx_lt_vbuc1_then_la1
cpx #4
bcc __b10
jmp __b11
// splash_run::@11
__b11:
// asm { lda#1 staINTRO_MUSIC+$69 }
// Disable SID CH#3
lda #1
sta INTRO_MUSIC+$69
// asm { lda#0 }
// Init music
lda #0
// [576] callexecute *musicInit -- call__deref_pprc1
jsr musicInit
jmp __b1
// splash_run::@1
__b1:
// [577] phase = 0 -- vbuz1=vbuc1
// Set phase to intro
lda #0
sta.z phase
// [578] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM -- _deref_pbuc1=vbuc2
// Start a hyperscreen with no badlines and open borders
// Set screen height to 25 lines (preparing for the hyperscreen), enable display
// Set an illegal mode to prevent any character graphics
lda #VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
jmp __b12
// Wait for line 0xfa (lower border)
// splash_run::@12
__b12:
// [579] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fa) goto splash_run::@12 -- _deref_pbuc1_neq_vbuc2_then_la1
lda #$fa
cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
bne __b12
jmp __b13
// splash_run::@13
__b13:
// [580] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & ~VICII_RST8|VICII_RSEL|VICII_DEN -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// Open lower/upper border using RSEL - and disable all graphics (except sprites)
// Set up RASTER IRQ to start at irq_screen_top() (RST8=0)
lda #(VICII_RST8|VICII_RSEL|VICII_DEN)^$ff
and VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
// [581] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE -- _deref_pbuc1=vbuc2
lda #IRQ_SCREEN_TOP_LINE
sta VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
// [582] *HARDWARE_IRQ = &irq_screen_top -- _deref_qprc1=pprc2
lda #<irq_screen_top
sta HARDWARE_IRQ
lda #>irq_screen_top
sta HARDWARE_IRQ+1
// [583] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER -- _deref_pbuc1=vbuc2
// Enable Raster Interrupt
lda #IRQ_RASTER
sta VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE
// asm { ldaCIA1_INTERRUPT }
// Acknowledge any timer IRQ
lda CIA1_INTERRUPT
// [585] *IRQ_STATUS = $f -- _deref_pbuc1=vbuc2
// Acknowledge any VIC IRQ
lda #$f
sta IRQ_STATUS
jmp CLI1
// splash_run::CLI1
CLI1:
// asm { cli }
cli
// [587] phi from splash_run::CLI1 to splash_run::@21 [phi:splash_run::CLI1->splash_run::@21]
__b21_from_CLI1:
jmp __b21
// splash_run::@21
__b21:
// [588] call joyinit
// Prepare for joystick control
jsr joyinit
jmp __b38
// splash_run::@38
__b38:
// [589] music_play_next = 0 -- vbuz1=vbuc1
// Wait for fire
lda #0
sta.z music_play_next
// [590] phi from splash_run::@15 splash_run::@16 splash_run::@38 to splash_run::@14 [phi:splash_run::@15/splash_run::@16/splash_run::@38->splash_run::@14]
__b14_from___b15:
__b14_from___b16:
__b14_from___b38:
jmp __b14
// splash_run::@14
__b14:
// [591] call joyfire
jsr joyfire
// [592] joyfire::return#1 = joyfire::return#4
jmp __b39
// splash_run::@39
__b39:
// [593] splash_run::$30 = joyfire::return#1
// [594] if(0==splash_run::$30) goto splash_run::@15 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b15
jmp __breturn
// splash_run::@return
__breturn:
// [595] return
rts
// splash_run::@15
__b15:
// [596] if(0==music_play_next) goto splash_run::@14 -- 0_eq_vbuz1_then_la1
lda.z music_play_next
beq __b14_from___b15
// [597] phi from splash_run::@15 to splash_run::@17 [phi:splash_run::@15->splash_run::@17]
__b17_from___b15:
jmp __b17
// splash_run::@17
__b17:
// [598] callexecute *musicPlay -- call__deref_pprc1
//VICII->BG_COLOR=1;
jsr musicPlay
jmp __b16
// splash_run::@16
__b16:
// [599] music_play_next = 0 -- vbuz1=vbuc1
//VICII->BG_COLOR=0;
lda #0
sta.z music_play_next
jmp __b14_from___b16
// splash_run::@10
__b10:
// [600] bobs_xcol[splash_run::i2#2] = $a -- pbuc1_derefidx_vbuxx=vbuc2
lda #$a
sta bobs_xcol,x
// [601] bobs_yfine[splash_run::i2#2] = $2d -- pbuc1_derefidx_vbuxx=vbuc2
lda #$2d
sta bobs_yfine,x
// [602] bobs_bob_id[splash_run::i2#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #0
sta bobs_bob_id,x
// [603] splash_run::i2#1 = ++ splash_run::i2#2 -- vbuxx=_inc_vbuxx
inx
// [572] phi from splash_run::@10 to splash_run::@9 [phi:splash_run::@10->splash_run::@9]
__b9_from___b10:
// [572] phi splash_run::i2#2 = splash_run::i2#1 [phi:splash_run::@10->splash_run::@9#0] -- register_copy
jmp __b9
// splash_run::@7
__b7:
// [604] SPRITES_COLOR[splash_run::i1#2] = top_sprites_color -- pbuc1_derefidx_vbuxx=vbuz1
lda.z top_sprites_color
sta SPRITES_COLOR,x
// [605] splash_run::i1#1 = ++ splash_run::i1#2 -- vbuxx=_inc_vbuxx
inx
// [569] phi from splash_run::@7 to splash_run::@6 [phi:splash_run::@7->splash_run::@6]
__b6_from___b7:
// [569] phi splash_run::i1#2 = splash_run::i1#1 [phi:splash_run::@7->splash_run::@6#0] -- register_copy
jmp __b6
// splash_run::@3
__b3:
// [606] splash_run::$34 = splash_run::i#2 << 1 -- vbuyy=vbuz1_rol_1
lda.z i
asl
tay
// [607] SPRITES_YPOS[splash_run::$34] = 7 -- pbuc1_derefidx_vbuyy=vbuc2
lda #7
sta SPRITES_YPOS,y
// [608] splash_run::xpos#0 = splash_run::sprites_xpos[splash_run::$34] -- vwuz1=pwuc1_derefidx_vbuyy
lda sprites_xpos,y
sta.z xpos
lda sprites_xpos+1,y
sta.z xpos+1
// [609] SPRITES_XPOS[splash_run::$34] = (char)splash_run::xpos#0 -- pbuc1_derefidx_vbuyy=_byte_vwuz1
lda.z xpos
sta SPRITES_XPOS,y
// [610] splash_run::msb#1 = splash_run::msb#10 >> 1 -- vbuxx=vbuxx_ror_1
txa
lsr
tax
// [611] splash_run::$25 = byte1 splash_run::xpos#0 -- vbuaa=_byte1_vwuz1
lda.z xpos+1
// [612] if(0==splash_run::$25) goto splash_run::@4 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b4_from___b3
jmp __b5
// splash_run::@5
__b5:
// [613] splash_run::msb#2 = splash_run::msb#1 | $80 -- vbuxx=vbuxx_bor_vbuc1
txa
ora #$80
tax
// [614] phi from splash_run::@3 splash_run::@5 to splash_run::@4 [phi:splash_run::@3/splash_run::@5->splash_run::@4]
__b4_from___b3:
__b4_from___b5:
// [614] phi splash_run::msb#8 = splash_run::msb#1 [phi:splash_run::@3/splash_run::@5->splash_run::@4#0] -- register_copy
jmp __b4
// splash_run::@4
__b4:
// [615] splash_run::i#1 = ++ splash_run::i#2 -- vbuz1=_inc_vbuz1
inc.z i
// [547] phi from splash_run::@4 to splash_run::@2 [phi:splash_run::@4->splash_run::@2]
__b2_from___b4:
// [547] phi splash_run::msb#10 = splash_run::msb#8 [phi:splash_run::@4->splash_run::@2#0] -- register_copy
// [547] phi splash_run::i#2 = splash_run::i#1 [phi:splash_run::@4->splash_run::@2#1] -- register_copy
jmp __b2
.segment Data
// Sprite positions
sprites_xpos: .word $1e7, $13f, $10f, $df, $af, $7f, $4f, $1f
}
.segment Code
// gameplay_run
// Initialize all data for gameplay and runs the game.
// Exits when the user has won or lost
gameplay_run: {
.label __4 = 9
jmp SEI1
// gameplay_run::SEI1
SEI1:
// asm { sei }
sei
// [618] phi from gameplay_run::SEI1 to gameplay_run::@1 [phi:gameplay_run::SEI1->gameplay_run::@1]
__b1_from_SEI1:
// [618] phi gameplay_run::i#2 = 0 [phi:gameplay_run::SEI1->gameplay_run::@1#0] -- vbuxx=vbuc1
ldx #0
jmp __b1
// Stop any sound
// gameplay_run::@1
__b1:
// [619] if(gameplay_run::i#2<$2f) goto gameplay_run::@2 -- vbuxx_lt_vbuc1_then_la1
cpx #$2f
bcc __b2
jmp __b3
// gameplay_run::@3
__b3:
// [620] pacman_wins = 0 -- vbuz1=vbuc1
// Pacman has not won yet
lda #0
sta.z pacman_wins
// [621] pacman_lives = 3 -- vbuz1=vbuc1
// Pacman has 3 lives
lda #3
sta.z pacman_lives
// [622] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLACK -- _deref_pbuc1=vbuc2
// During transition all sprites are black
lda #BLACK
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1
// [623] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = BLACK -- _deref_pbuc1=vbuc2
lda #BLACK
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2
// [624] phi from gameplay_run::@3 to gameplay_run::@4 [phi:gameplay_run::@3->gameplay_run::@4]
__b4_from___b3:
// [624] phi gameplay_run::i1#2 = 0 [phi:gameplay_run::@3->gameplay_run::@4#0] -- vbuxx=vbuc1
ldx #0
jmp __b4
// gameplay_run::@4
__b4:
// [625] if(gameplay_run::i1#2<8) goto gameplay_run::@5 -- vbuxx_lt_vbuc1_then_la1
cpx #8
bcc __b5
jmp __b6
// gameplay_run::@6
__b6:
// [626] byteboozer_decrunch::crunched = LEVEL_TILES_CRUNCHED -- pbuz1=pbuc1
lda #<LEVEL_TILES_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>LEVEL_TILES_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [627] call byteboozer_decrunch
// decrunch level tiles
jsr byteboozer_decrunch
// [628] phi from gameplay_run::@6 to gameplay_run::@14 [phi:gameplay_run::@6->gameplay_run::@14]
__b14_from___b6:
jmp __b14
// gameplay_run::@14
__b14:
// [629] call init_level_tile_directions
// Initialize tile directions
// [926] phi from gameplay_run::@14 to init_level_tile_directions [phi:gameplay_run::@14->init_level_tile_directions]
init_level_tile_directions_from___b14:
jsr init_level_tile_directions
// [630] phi from gameplay_run::@14 to gameplay_run::@15 [phi:gameplay_run::@14->gameplay_run::@15]
__b15_from___b14:
jmp __b15
// gameplay_run::@15
__b15:
// [631] call init_sprite_pointers
// Set sprite pointers on all screens (in both graphics banks)
// [898] phi from gameplay_run::@15 to init_sprite_pointers [phi:gameplay_run::@15->init_sprite_pointers]
init_sprite_pointers_from___b15:
jsr init_sprite_pointers
// [632] phi from gameplay_run::@15 to gameplay_run::@16 [phi:gameplay_run::@15->gameplay_run::@16]
__b16_from___b15:
jmp __b16
// gameplay_run::@16
__b16:
// [633] call level_show
// [968] phi from gameplay_run::@16 to level_show [phi:gameplay_run::@16->level_show]
level_show_from___b16:
jsr level_show
// [634] level_show::return#0 = level_show::count#12
jmp __b17
// gameplay_run::@17
__b17:
// [635] gameplay_run::$4 = level_show::return#0
// [636] pill_count = gameplay_run::$4 -- vwuz1=vwuz2
// Show the level
lda.z __4
sta.z pill_count
lda.z __4+1
sta.z pill_count+1
// [637] top_sprites_mc = $ff -- vbuz1=vbuc1
// During gameplay all sprites are MC.
lda #$ff
sta.z top_sprites_mc
// [638] side_sprites_mc = $ff -- vbuz1=vbuc1
lda #$ff
sta.z side_sprites_mc
// [639] bottom_sprites_mc = $ff -- vbuz1=vbuc1
lda #$ff
sta.z bottom_sprites_mc
// [640] top_sprites_color = YELLOW -- vbuz1=vbuc1
// During gameplay all sprites are yellow
lda #YELLOW
sta.z top_sprites_color
// [641] side_sprites_color = YELLOW -- vbuz1=vbuc1
lda #YELLOW
sta.z side_sprites_color
// [642] bottom_sprites_color = YELLOW -- vbuz1=vbuc1
lda #YELLOW
sta.z bottom_sprites_color
// [643] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc -- _deref_pbuc1=vbuz1
// Set the initial top colors/MC
lda.z top_sprites_mc
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC
// [644] phi from gameplay_run::@17 to gameplay_run::@7 [phi:gameplay_run::@17->gameplay_run::@7]
__b7_from___b17:
// [644] phi gameplay_run::i2#2 = 0 [phi:gameplay_run::@17->gameplay_run::@7#0] -- vbuxx=vbuc1
ldx #0
jmp __b7
// Set initial Sprite Color
// gameplay_run::@7
__b7:
// [645] if(gameplay_run::i2#2<8) goto gameplay_run::@8 -- vbuxx_lt_vbuc1_then_la1
cpx #8
bcc __b8
jmp __b9
// gameplay_run::@9
__b9:
// [646] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLUE -- _deref_pbuc1=vbuc2
// Set sprite MC-colors for the game
lda #BLUE
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1
// [647] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = RED -- _deref_pbuc1=vbuc2
lda #RED
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2
// [648] phase = 1 -- vbuz1=vbuc1
// Set phase to game
lda #1
sta.z phase
// [649] call spawn_all
// Spawn pacman and all ghosts
jsr spawn_all
// [650] phi from gameplay_run::@9 to gameplay_run::@18 [phi:gameplay_run::@9->gameplay_run::@18]
__b18_from___b9:
jmp __b18
// gameplay_run::@18
__b18:
// [651] call pacman_sound_init
// Initialize the game sound
jsr pacman_sound_init
jmp __b19
// gameplay_run::@19
__b19:
// [652] game_playable = 1 -- vbuz1=vbuc1
// Start the game play
lda #1
sta.z game_playable
// [653] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM -- _deref_pbuc1=vbuc2
// Turn on raster after transition
// Start a hyperscreen with no badlines and open borders
// Set screen height to 25 lines (preparing for the hyperscreen), enable display
lda #VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
jmp __b10
// Wait at least one frames for DEN to take effect
// gameplay_run::@10
__b10:
// [654] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fb) goto gameplay_run::@10 -- _deref_pbuc1_neq_vbuc2_then_la1
lda #$fb
cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
bne __b10
jmp __b11
// gameplay_run::@11
__b11:
// [655] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fa) goto gameplay_run::@11 -- _deref_pbuc1_neq_vbuc2_then_la1
lda #$fa
cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
bne __b11
jmp __b12
// gameplay_run::@12
__b12:
// [656] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & ~VICII_RST8|VICII_RSEL|VICII_DEN -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// Open lower/upper border using RSEL - and disable all graphics (except sprites)
// Set up RASTER IRQ to start at irq_screen_top() (RST8=0)
lda #(VICII_RST8|VICII_RSEL|VICII_DEN)^$ff
and VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
// [657] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE -- _deref_pbuc1=vbuc2
lda #IRQ_SCREEN_TOP_LINE
sta VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
// [658] *HARDWARE_IRQ = &irq_screen_top -- _deref_qprc1=pprc2
lda #<irq_screen_top
sta HARDWARE_IRQ
lda #>irq_screen_top
sta HARDWARE_IRQ+1
// [659] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER -- _deref_pbuc1=vbuc2
// Enable Raster Interrupt
lda #IRQ_RASTER
sta VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE
// asm { ldaCIA1_INTERRUPT }
// Acknowledge any timer IRQ
lda CIA1_INTERRUPT
// [661] *IRQ_STATUS = $f -- _deref_pbuc1=vbuc2
// Acknowledge any VIC IRQ
lda #$f
sta IRQ_STATUS
jmp CLI1
// gameplay_run::CLI1
CLI1:
// asm { cli }
cli
jmp __b13
// gameplay_run::@13
__b13:
// [663] if(0!=pacman_wins) goto gameplay_run::@return -- 0_neq_vbuz1_then_la1
lda.z pacman_wins
bne __breturn
jmp __b20
// gameplay_run::@20
__b20:
// [664] if(pacman_lives==0) goto gameplay_run::@return -- vbuz1_eq_0_then_la1
lda.z pacman_lives
beq __breturn
jmp __b13
// gameplay_run::@return
__breturn:
// [665] return
rts
// gameplay_run::@8
__b8:
// [666] SPRITES_COLOR[gameplay_run::i2#2] = top_sprites_color -- pbuc1_derefidx_vbuxx=vbuz1
lda.z top_sprites_color
sta SPRITES_COLOR,x
// [667] gameplay_run::i2#1 = ++ gameplay_run::i2#2 -- vbuxx=_inc_vbuxx
inx
// [644] phi from gameplay_run::@8 to gameplay_run::@7 [phi:gameplay_run::@8->gameplay_run::@7]
__b7_from___b8:
// [644] phi gameplay_run::i2#2 = gameplay_run::i2#1 [phi:gameplay_run::@8->gameplay_run::@7#0] -- register_copy
jmp __b7
// gameplay_run::@5
__b5:
// [668] SPRITES_COLOR[gameplay_run::i1#2] = BLACK -- pbuc1_derefidx_vbuxx=vbuc2
lda #BLACK
sta SPRITES_COLOR,x
// [669] gameplay_run::i1#1 = ++ gameplay_run::i1#2 -- vbuxx=_inc_vbuxx
inx
// [624] phi from gameplay_run::@5 to gameplay_run::@4 [phi:gameplay_run::@5->gameplay_run::@4]
__b4_from___b5:
// [624] phi gameplay_run::i1#2 = gameplay_run::i1#1 [phi:gameplay_run::@5->gameplay_run::@4#0] -- register_copy
jmp __b4
// gameplay_run::@2
__b2:
// [670] ((char *)SID)[gameplay_run::i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #0
sta SID,x
// [671] gameplay_run::i#1 = ++ gameplay_run::i#2 -- vbuxx=_inc_vbuxx
inx
// [618] phi from gameplay_run::@2 to gameplay_run::@1 [phi:gameplay_run::@2->gameplay_run::@1]
__b1_from___b2:
// [618] phi gameplay_run::i#2 = gameplay_run::i#1 [phi:gameplay_run::@2->gameplay_run::@1#0] -- register_copy
jmp __b1
}
// done_run
// Show Victory or Game Over Image
// Returns when the user clicks the joystick button
done_run: {
// Show the win graphics
.label gfx = 5
.label ypos = $10
.label xcol = $14
// [672] game_playable = 0 -- vbuz1=vbuc1
// Stop the game play
lda #0
sta.z game_playable
// [673] phase = 0 -- vbuz1=vbuc1
// Set phase to intro
lda #0
sta.z phase
// [674] phi from done_run to done_run::@4 [phi:done_run->done_run::@4]
__b4_from_done_run:
// [674] phi done_run::i#2 = 0 [phi:done_run->done_run::@4#0] -- vbuxx=vbuc1
ldx #0
jmp __b4
// Stop any sound
// done_run::@4
__b4:
// [675] if(done_run::i#2<$2f) goto done_run::@5 -- vbuxx_lt_vbuc1_then_la1
cpx #$2f
bcc __b5
// [676] phi from done_run::@4 to done_run::@6 [phi:done_run::@4->done_run::@6]
__b6_from___b4:
// [676] phi done_run::i1#2 = 0 [phi:done_run::@4->done_run::@6#0] -- vbuxx=vbuc1
ldx #0
jmp __b6
// Move the bobs to the center to avoid interference while rendering the level
// done_run::@6
__b6:
// [677] if(done_run::i1#2<4) goto done_run::@7 -- vbuxx_lt_vbuc1_then_la1
cpx #4
bcc __b7
jmp __b8
// done_run::@8
__b8:
// asm { lda#0 }
// Init music
lda #0
// [679] callexecute *musicInit -- call__deref_pprc1
jsr musicInit
jmp __b1
// done_run::@1
__b1:
// [680] if(0!=pacman_wins) goto done_run::@2 -- 0_neq_vbuz1_then_la1
lda.z pacman_wins
bne __b2
jmp __b3
// done_run::@3
__b3:
// [681] byteboozer_decrunch::crunched = GAMEOVER_GFX_CRUNCHED -- pbuz1=pbuc1
lda #<GAMEOVER_GFX_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>GAMEOVER_GFX_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [682] call byteboozer_decrunch
// decrunch game over graphics
jsr byteboozer_decrunch
// [683] phi from done_run::@2 done_run::@3 to done_run::@9 [phi:done_run::@2/done_run::@3->done_run::@9]
__b9_from___b2:
__b9_from___b3:
// [683] phi done_run::gfx#4 = WIN_GFX [phi:done_run::@2/done_run::@3->done_run::@9#0] -- pbuz1=pbuc1
lda #<WIN_GFX
sta.z gfx
lda #>WIN_GFX
sta.z gfx+1
// [683] phi done_run::xcol#2 = 0 [phi:done_run::@2/done_run::@3->done_run::@9#1] -- vbuz1=vbuc1
lda #0
sta.z xcol
jmp __b9
// done_run::@9
__b9:
// [684] if(done_run::xcol#2<$19) goto done_run::@11 -- vbuz1_lt_vbuc1_then_la1
lda.z xcol
cmp #$19
bcc __b11_from___b9
jmp __b10
// done_run::@10
__b10:
// [685] music_play_next = 0 -- vbuz1=vbuc1
// Wait for fire
lda #0
sta.z music_play_next
// [686] phi from done_run::@10 done_run::@15 done_run::@16 to done_run::@14 [phi:done_run::@10/done_run::@15/done_run::@16->done_run::@14]
__b14_from___b10:
__b14_from___b15:
__b14_from___b16:
jmp __b14
// done_run::@14
__b14:
// [687] call joyfire
jsr joyfire
// [688] joyfire::return#0 = joyfire::return#4
jmp __b19
// done_run::@19
__b19:
// [689] done_run::$8 = joyfire::return#0
// [690] if(0==done_run::$8) goto done_run::@15 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b15
jmp __breturn
// done_run::@return
__breturn:
// [691] return
rts
// done_run::@15
__b15:
// [692] if(0==music_play_next) goto done_run::@14 -- 0_eq_vbuz1_then_la1
lda.z music_play_next
beq __b14_from___b15
// [693] phi from done_run::@15 to done_run::@17 [phi:done_run::@15->done_run::@17]
__b17_from___b15:
jmp __b17
// done_run::@17
__b17:
// [694] callexecute *musicPlay -- call__deref_pprc1
//VICII->BG_COLOR=1;
jsr musicPlay
jmp __b16
// done_run::@16
__b16:
// [695] music_play_next = 0 -- vbuz1=vbuc1
//VICII->BG_COLOR=0;
lda #0
sta.z music_play_next
jmp __b14_from___b16
// [696] phi from done_run::@9 to done_run::@11 [phi:done_run::@9->done_run::@11]
__b11_from___b9:
// [696] phi done_run::gfx#2 = done_run::gfx#4 [phi:done_run::@9->done_run::@11#0] -- register_copy
// [696] phi done_run::ypos#2 = 0 [phi:done_run::@9->done_run::@11#1] -- vbuz1=vbuc1
lda #0
sta.z ypos
jmp __b11
// done_run::@11
__b11:
// [697] if(done_run::ypos#2<$19) goto done_run::@12 -- vbuz1_lt_vbuc1_then_la1
lda.z ypos
cmp #$19
bcc __b12
jmp __b13
// done_run::@13
__b13:
// [698] done_run::xcol#1 = ++ done_run::xcol#2 -- vbuz1=_inc_vbuz1
inc.z xcol
// [683] phi from done_run::@13 to done_run::@9 [phi:done_run::@13->done_run::@9]
__b9_from___b13:
// [683] phi done_run::gfx#4 = done_run::gfx#2 [phi:done_run::@13->done_run::@9#0] -- register_copy
// [683] phi done_run::xcol#2 = done_run::xcol#1 [phi:done_run::@13->done_run::@9#1] -- register_copy
jmp __b9
// done_run::@12
__b12:
// [699] done_run::pixels#0 = *done_run::gfx#2 -- vbuxx=_deref_pbuz1
// Render 8px x 1px
ldy #0
lda (gfx),y
tax
// [700] done_run::gfx#1 = ++ done_run::gfx#2 -- pbuz1=_inc_pbuz1
inc.z gfx
bne !+
inc.z gfx+1
!:
// [701] render::xcol#0 = done_run::xcol#2
// [702] render::ypos#0 = done_run::ypos#2
// [703] render::pixels#0 = done_run::pixels#0 -- vbuz1=vbuxx
stx.z render.pixels
// [704] call render
// [999] phi from done_run::@12 to render [phi:done_run::@12->render]
render_from___b12:
// [999] phi render::pixels#4 = render::pixels#0 [phi:done_run::@12->render#0] -- register_copy
// [999] phi render::xcol#2 = render::xcol#0 [phi:done_run::@12->render#1] -- register_copy
// [999] phi render::ypos#2 = render::ypos#0 [phi:done_run::@12->render#2] -- register_copy
jsr render
jmp __b18
// done_run::@18
__b18:
// [705] done_run::ypos#1 = ++ done_run::ypos#2 -- vbuz1=_inc_vbuz1
inc.z ypos
// [696] phi from done_run::@18 to done_run::@11 [phi:done_run::@18->done_run::@11]
__b11_from___b18:
// [696] phi done_run::gfx#2 = done_run::gfx#1 [phi:done_run::@18->done_run::@11#0] -- register_copy
// [696] phi done_run::ypos#2 = done_run::ypos#1 [phi:done_run::@18->done_run::@11#1] -- register_copy
jmp __b11
// done_run::@2
__b2:
// [706] byteboozer_decrunch::crunched = WIN_GFX_CRUNCHED -- pbuz1=pbuc1
lda #<WIN_GFX_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>WIN_GFX_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [707] call byteboozer_decrunch
// decrunch win graphics
jsr byteboozer_decrunch
jmp __b9_from___b2
// done_run::@7
__b7:
// [708] bobs_xcol[done_run::i1#2] = $a -- pbuc1_derefidx_vbuxx=vbuc2
lda #$a
sta bobs_xcol,x
// [709] bobs_yfine[done_run::i1#2] = $2d -- pbuc1_derefidx_vbuxx=vbuc2
lda #$2d
sta bobs_yfine,x
// [710] bobs_bob_id[done_run::i1#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #0
sta bobs_bob_id,x
// [711] done_run::i1#1 = ++ done_run::i1#2 -- vbuxx=_inc_vbuxx
inx
// [676] phi from done_run::@7 to done_run::@6 [phi:done_run::@7->done_run::@6]
__b6_from___b7:
// [676] phi done_run::i1#2 = done_run::i1#1 [phi:done_run::@7->done_run::@6#0] -- register_copy
jmp __b6
// done_run::@5
__b5:
// [712] ((char *)SID)[done_run::i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #0
sta SID,x
// [713] done_run::i#1 = ++ done_run::i#2 -- vbuxx=_inc_vbuxx
inx
// [674] phi from done_run::@5 to done_run::@4 [phi:done_run::@5->done_run::@4]
__b4_from___b5:
// [674] phi done_run::i#2 = done_run::i#1 [phi:done_run::@5->done_run::@4#0] -- register_copy
jmp __b4
}
// spawn_all
// Spawn pacman and all ghosts
spawn_all: {
// [714] ghosts_mode_count = 0 -- vbuz1=vbuc1
lda #0
sta.z ghosts_mode_count
// [715] pacman_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z pacman_substep
// [716] ghost1_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost1_substep
// [717] ghost2_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost2_substep
// [718] ghost3_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost3_substep
// [719] ghost4_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost4_substep
// [720] pacman_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z pacman_direction
// [721] ghost1_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost1_direction
// [722] ghost2_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost2_direction
// [723] ghost3_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost3_direction
// [724] ghost4_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost4_direction
// [725] pacman_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z pacman_xfine
// [726] ghost1_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost1_xfine
// [727] ghost2_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost2_xfine
// [728] ghost3_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost3_xfine
// [729] ghost4_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost4_xfine
// [730] ghost1_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost1_yfine
// [731] ghost2_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost2_yfine
// [732] ghost3_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost3_yfine
// [733] ghost4_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost4_yfine
// [734] pacman_yfine = $3e -- vbuz1=vbuc1
lda #$3e
sta.z pacman_yfine
// [735] ghost1_respawn = $a -- vbuz1=vbuc1
lda #$a
sta.z ghost1_respawn
// [736] ghost2_respawn = $14 -- vbuz1=vbuc1
lda #$14
sta.z ghost2_respawn
// [737] ghost3_respawn = $1e -- vbuz1=vbuc1
lda #$1e
sta.z ghost3_respawn
// [738] ghost4_respawn = $28 -- vbuz1=vbuc1
lda #$28
sta.z ghost4_respawn
jmp __breturn
// spawn_all::@return
__breturn:
// [739] return
rts
}
// level_tile_directions
// Get the open directions at a given (xtile, ytile) position
// Returns the open DIRECTIONs as bits
// If xtile of ytile is outside the legal range the empty tile (0) is returned
// __register(A) char level_tile_directions(__register(X) char xtile, __register(A) char ytile)
level_tile_directions: {
.label ytiles = $31
// [741] if(level_tile_directions::xtile#5>=$31+1) goto level_tile_directions::@return -- vbuxx_ge_vbuc1_then_la1
cpx #$31+1
bcs __breturn_from_level_tile_directions
jmp __b2
// level_tile_directions::@2
__b2:
// [742] if(level_tile_directions::ytile#5>=$24+1) goto level_tile_directions::@return -- vbuaa_ge_vbuc1_then_la1
cmp #$24+1
bcs __breturn_from___b2
jmp __b1
// level_tile_directions::@1
__b1:
// [743] level_tile_directions::$5 = level_tile_directions::ytile#5 << 1 -- vbuaa=vbuaa_rol_1
asl
// [744] level_tile_directions::ytiles#0 = LEVEL_TILES_DIRECTIONS + LEVEL_YTILE_OFFSET[level_tile_directions::$5] -- pbuz1=pbuc1_plus_pwuc2_derefidx_vbuaa
tay
clc
lda #<LEVEL_TILES_DIRECTIONS
adc LEVEL_YTILE_OFFSET,y
sta.z ytiles
lda #>LEVEL_TILES_DIRECTIONS
adc LEVEL_YTILE_OFFSET+1,y
sta.z ytiles+1
// [745] level_tile_directions::return#0 = level_tile_directions::ytiles#0[level_tile_directions::xtile#5] -- vbuaa=pbuz1_derefidx_vbuxx
txa
tay
lda (ytiles),y
// [746] phi from level_tile_directions::@1 to level_tile_directions::@return [phi:level_tile_directions::@1->level_tile_directions::@return]
__breturn_from___b1:
// [746] phi level_tile_directions::return#2 = level_tile_directions::return#0 [phi:level_tile_directions::@1->level_tile_directions::@return#0] -- register_copy
jmp __breturn
// [746] phi from level_tile_directions level_tile_directions::@2 to level_tile_directions::@return [phi:level_tile_directions/level_tile_directions::@2->level_tile_directions::@return]
__breturn_from_level_tile_directions:
__breturn_from___b2:
// [746] phi level_tile_directions::return#2 = 0 [phi:level_tile_directions/level_tile_directions::@2->level_tile_directions::@return#0] -- vbuaa=vbuc1
lda #0
jmp __breturn
// level_tile_directions::@return
__breturn:
// [747] return
rts
}
// choose_direction
// Choose the open direction that brings the ghost closest to the target
// Uses Manhattan distance calculation
// __zp($33) char choose_direction(__zp($49) char open_directions, __register(Y) char ghost_xtile, __zp($34) char ghost_ytile, __register(X) char target_xtile, __zp($27) char target_ytile)
choose_direction: {
.label open_directions = $49
.label ghost_ytile = $34
.label target_ytile = $27
.label xdiff = $4b
.label ydiff = $34
.label dist_left = $22
.label return = $33
.label direction = $33
.label dist_min = $22
// [749] choose_direction::xdiff#0 = choose_direction::ghost_xtile#4 - choose_direction::target_xtile#4 -- vbuz1=vbuyy_minus_vbuxx
tya
stx.z $ff
sec
sbc.z $ff
sta.z xdiff
// [750] choose_direction::ydiff#0 = choose_direction::ghost_ytile#4 - choose_direction::target_ytile#4 -- vbuz1=vbuz1_minus_vbuz2
lda.z ydiff
sec
sbc.z target_ytile
sta.z ydiff
// [751] choose_direction::$2 = choose_direction::open_directions#10 & UP -- vbuaa=vbuz1_band_vbuc1
lda #UP
and.z open_directions
// [752] if(0==choose_direction::$2) goto choose_direction::@1 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b1_from_choose_direction
jmp __b5
// choose_direction::@5
__b5:
// [753] choose_direction::dist_up#0 = ABS[choose_direction::xdiff#0] + (ABS+-1)[choose_direction::ydiff#0] -- vbuyy=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuz2
ldy.z xdiff
lda ABS,y
ldy.z ydiff
clc
adc ABS+-1,y
tay
// [754] if(choose_direction::dist_up#0>=$ff) goto choose_direction::@1 -- vbuyy_ge_vbuc1_then_la1
cpy #$ff
bcs __b1_from___b5
// [755] phi from choose_direction::@5 to choose_direction::@6 [phi:choose_direction::@5->choose_direction::@6]
__b6_from___b5:
jmp __b6
// choose_direction::@6
__b6:
// [756] phi from choose_direction::@6 to choose_direction::@1 [phi:choose_direction::@6->choose_direction::@1]
__b1_from___b6:
// [756] phi choose_direction::direction#10 = UP [phi:choose_direction::@6->choose_direction::@1#0] -- vbuz1=vbuc1
lda #UP
sta.z direction
// [756] phi choose_direction::dist_min#6 = choose_direction::dist_up#0 [phi:choose_direction::@6->choose_direction::@1#1] -- register_copy
jmp __b1
// [756] phi from choose_direction choose_direction::@5 to choose_direction::@1 [phi:choose_direction/choose_direction::@5->choose_direction::@1]
__b1_from_choose_direction:
__b1_from___b5:
// [756] phi choose_direction::direction#10 = STOP [phi:choose_direction/choose_direction::@5->choose_direction::@1#0] -- vbuz1=vbuc1
lda #STOP
sta.z direction
// [756] phi choose_direction::dist_min#6 = $ff [phi:choose_direction/choose_direction::@5->choose_direction::@1#1] -- vbuyy=vbuc1
ldy #$ff
jmp __b1
// choose_direction::@1
__b1:
// [757] choose_direction::$4 = choose_direction::open_directions#10 & DOWN -- vbuaa=vbuz1_band_vbuc1
lda #DOWN
and.z open_directions
// [758] if(0==choose_direction::$4) goto choose_direction::@10 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b10
jmp __b7
// choose_direction::@7
__b7:
// [759] choose_direction::dist_down#0 = ABS[choose_direction::xdiff#0] + (ABS+1)[choose_direction::ydiff#0] -- vbuxx=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuz2
ldx.z xdiff
lda ABS,x
ldx.z ydiff
clc
adc ABS+1,x
tax
// [760] if(choose_direction::dist_down#0>=choose_direction::dist_min#6) goto choose_direction::@11 -- vbuxx_ge_vbuyy_then_la1
sty.z $ff
cpx.z $ff
bcs __b11
// [762] phi from choose_direction::@7 to choose_direction::@2 [phi:choose_direction::@7->choose_direction::@2]
__b2_from___b7:
// [762] phi choose_direction::direction#8 = DOWN [phi:choose_direction::@7->choose_direction::@2#0] -- vbuz1=vbuc1
lda #DOWN
sta.z direction
// [762] phi choose_direction::dist_min#10 = choose_direction::dist_down#0 [phi:choose_direction::@7->choose_direction::@2#1] -- register_copy
jmp __b2
// choose_direction::@11
__b11:
// [761] choose_direction::dist_min#14 = choose_direction::dist_min#6 -- vbuxx=vbuyy
tya
tax
// [762] phi from choose_direction::@10 choose_direction::@11 to choose_direction::@2 [phi:choose_direction::@10/choose_direction::@11->choose_direction::@2]
__b2_from___b10:
__b2_from___b11:
// [762] phi choose_direction::direction#8 = choose_direction::direction#10 [phi:choose_direction::@10/choose_direction::@11->choose_direction::@2#0] -- register_copy
// [762] phi choose_direction::dist_min#10 = choose_direction::dist_min#13 [phi:choose_direction::@10/choose_direction::@11->choose_direction::@2#1] -- register_copy
jmp __b2
// choose_direction::@2
__b2:
// [763] choose_direction::$6 = choose_direction::open_directions#10 & LEFT -- vbuaa=vbuz1_band_vbuc1
lda #LEFT
and.z open_directions
// [764] if(0==choose_direction::$6) goto choose_direction::@12 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b12
jmp __b8
// choose_direction::@8
__b8:
// [765] choose_direction::dist_left#0 = (ABS+-1)[choose_direction::xdiff#0] + ABS[choose_direction::ydiff#0] -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuz3
ldy.z xdiff
lda ABS+-1,y
ldy.z ydiff
clc
adc ABS,y
sta.z dist_left
// [766] if(choose_direction::dist_left#0>=choose_direction::dist_min#10) goto choose_direction::@13 -- vbuz1_ge_vbuxx_then_la1
lda.z dist_left
stx.z $ff
cmp.z $ff
bcs __b13
// [768] phi from choose_direction::@8 to choose_direction::@3 [phi:choose_direction::@8->choose_direction::@3]
__b3_from___b8:
// [768] phi choose_direction::dist_min#11 = choose_direction::dist_left#0 [phi:choose_direction::@8->choose_direction::@3#0] -- register_copy
// [768] phi choose_direction::direction#6 = LEFT [phi:choose_direction::@8->choose_direction::@3#1] -- vbuz1=vbuc1
lda #LEFT
sta.z direction
jmp __b3
// choose_direction::@13
__b13:
// [767] choose_direction::dist_min#18 = choose_direction::dist_min#10 -- vbuz1=vbuxx
stx.z dist_min
// [768] phi from choose_direction::@12 choose_direction::@13 to choose_direction::@3 [phi:choose_direction::@12/choose_direction::@13->choose_direction::@3]
__b3_from___b12:
__b3_from___b13:
// [768] phi choose_direction::dist_min#11 = choose_direction::dist_min#17 [phi:choose_direction::@12/choose_direction::@13->choose_direction::@3#0] -- register_copy
// [768] phi choose_direction::direction#6 = choose_direction::direction#8 [phi:choose_direction::@12/choose_direction::@13->choose_direction::@3#1] -- register_copy
jmp __b3
// choose_direction::@3
__b3:
// [769] choose_direction::$8 = choose_direction::open_directions#10 & RIGHT -- vbuaa=vbuz1_band_vbuc1
lda #RIGHT
and.z open_directions
// [770] if(0==choose_direction::$8) goto choose_direction::@4 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b4_from___b3
jmp __b9
// choose_direction::@9
__b9:
// [771] choose_direction::dist_right#0 = (ABS+1)[choose_direction::xdiff#0] + ABS[choose_direction::ydiff#0] -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuz2
ldy.z xdiff
lda ABS+1,y
ldy.z ydiff
clc
adc ABS,y
// [772] if(choose_direction::dist_right#0>=choose_direction::dist_min#11) goto choose_direction::@14 -- vbuaa_ge_vbuz1_then_la1
cmp.z dist_min
bcs __b14_from___b9
// [774] phi from choose_direction::@9 to choose_direction::@4 [phi:choose_direction::@9->choose_direction::@4]
__b4_from___b9:
// [774] phi choose_direction::return#10 = RIGHT [phi:choose_direction::@9->choose_direction::@4#0] -- vbuz1=vbuc1
lda #RIGHT
sta.z return
jmp __b4
// [773] phi from choose_direction::@9 to choose_direction::@14 [phi:choose_direction::@9->choose_direction::@14]
__b14_from___b9:
jmp __b14
// choose_direction::@14
__b14:
// [774] phi from choose_direction::@14 choose_direction::@3 to choose_direction::@4 [phi:choose_direction::@14/choose_direction::@3->choose_direction::@4]
__b4_from___b14:
__b4_from___b3:
// [774] phi choose_direction::return#10 = choose_direction::direction#6 [phi:choose_direction::@14/choose_direction::@3->choose_direction::@4#0] -- register_copy
jmp __b4
// choose_direction::@4
__b4:
jmp __breturn
// choose_direction::@return
__breturn:
// [775] return
rts
// choose_direction::@12
__b12:
// [776] choose_direction::dist_min#17 = choose_direction::dist_min#10 -- vbuz1=vbuxx
stx.z dist_min
jmp __b3_from___b12
// choose_direction::@10
__b10:
// [777] choose_direction::dist_min#13 = choose_direction::dist_min#6 -- vbuxx=vbuyy
tya
tax
jmp __b2_from___b10
}
// memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// void * memset(__zp($b) void *str, char c, __zp(5) unsigned int num)
memset: {
.label end = 5
.label dst = $b
.label num = 5
.label str = $b
// [779] if(memset::num#5<=0) goto memset::@return -- vwuz1_le_0_then_la1
lda.z num
bne !+
lda.z num+1
beq __breturn
!:
jmp __b1
// memset::@1
__b1:
// [780] memset::end#0 = (char *)memset::str#6 + memset::num#5 -- pbuz1=pbuz2_plus_vwuz1
clc
lda.z end
adc.z str
sta.z end
lda.z end+1
adc.z str+1
sta.z end+1
// [781] memset::dst#4 = (char *)memset::str#6
// [782] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
__b2_from___b1:
__b2_from___b3:
// [782] phi memset::dst#2 = memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy
jmp __b2
// memset::@2
__b2:
// [783] if(memset::dst#2!=memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1
lda.z dst+1
cmp.z end+1
bne __b3
lda.z dst
cmp.z end
bne __b3
jmp __breturn
// memset::@return
__breturn:
// [784] return
rts
// memset::@3
__b3:
// [785] *memset::dst#2 = 0 -- _deref_pbuz1=vbuc1
lda #0
ldy #0
sta (dst),y
// [786] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1
inc.z dst
bne !+
inc.z dst+1
!:
jmp __b2_from___b3
}
// byteboozer_decrunch
// Decrunch crunched data using ByteBoozer
// - crunched: Pointer to the start of the crunched data
// void byteboozer_decrunch(__zp($24) char * volatile crunched)
byteboozer_decrunch: {
.label crunched = $24
// asm { ldycrunched ldxcrunched+1 jsrb2.Decrunch }
ldy crunched
ldx crunched+1
jsr b2.Decrunch
jmp __breturn
// byteboozer_decrunch::@return
__breturn:
// [788] return
rts
}
// merge_code
// Merge unrolled cycle-exact logic code into an unrolled cycle-exact raster code.
// The logic-code is merged into the raster code ensuring cycle-exact execution. If a logic-code block does not fit within the remaining cycle-budget of a raster-slot then NOPs/BIT $EA are used to reach the cycle-budget.
// If the logic-code runs out before the raster-code ends then the remaining raster-slots are filled with NOP/BIT$EA.
// If the raster-code runs out before the logic-code then the rest of the logic-code is added at the end.
// An RTS is added at the very end.
//
// Parameters:
// - dest_code: Address where the merged code is placed
// - raster_code: The unrolled raster code blocks with information about cycles to be filled. Format is decribed below.
// - logic_code: The unrolled logic code with information about cycles spent. Format is decribed below.
//
// Format of unrolled raster code.
// A number of blocks that have the following structure:
// <nn>* 0xff <cc>
// <nn>* : some bytes of code. any number of bytes are allowed.
// 0xff : signals the end of a block.
// <cc> : If <cc> is 00 then this is the last block of the unrolled raster code.
// If <cc> is non-zero it means that <cc> cycles must be spent here (the cycle budget of the slot). The merger merges logic code into the slot and fills with NOP's to match the number of cycles needed.
//
// Format of unrolled logic code.
// A number of blocks that has the following structure:
// <cc> <nn>* 0xff
// <cc> : If <cc> is 00 then this is the last block of the unrolled logic code. No more bytes are used.
// If <cc> is non-zero it holds the number of cycles used by the block of code.
// <nn>* : some bytes of code. any number of bytes are allowed. This code uses exactly the number of cycles specified by <cc>
// 0xff : signals the end of a block.
// void merge_code(__zp(9) char *dest_code, __zp($b) char *raster_code, __zp(5) char *logic_code)
merge_code: {
// Cycle-count signalling the last block of the logic-code
.const LOGIC_EXIT = 0
// Value signalling the end of a block of the logic-code
.const LOGIC_END = $ff
// Cycle-count signalling the last block of the raster-code
.const RASTER_EXIT = 0
// Value signalling the end of a block of the raster-code
.const RASTER_END = $ff
.label dest_code = 9
.label raster_code = $b
.label logic_cycles = 2
.label logic_code = 5
// [790] phi from merge_code to merge_code::@1 [phi:merge_code->merge_code::@1]
__b1_from_merge_code:
// [790] phi merge_code::logic_code#18 = LOGIC_CODE_UNMERGED [phi:merge_code->merge_code::@1#0] -- pbuz1=pbuc1
lda #<LOGIC_CODE_UNMERGED
sta.z logic_code
lda #>LOGIC_CODE_UNMERGED
sta.z logic_code+1
// [790] phi merge_code::dest_code#14 = RASTER_CODE [phi:merge_code->merge_code::@1#1] -- pbuz1=pbuc1
lda #<RASTER_CODE
sta.z dest_code
lda #>RASTER_CODE
sta.z dest_code+1
// [790] phi merge_code::raster_code#4 = RASTER_CODE_UNMERGED [phi:merge_code->merge_code::@1#2] -- pbuz1=pbuc1
lda #<RASTER_CODE_UNMERGED
sta.z raster_code
lda #>RASTER_CODE_UNMERGED
sta.z raster_code+1
jmp __b1
// Output raster code until meeting RASTER_END signalling the end of a block
// merge_code::@1
__b1:
// [791] if(*merge_code::raster_code#4!=merge_code::RASTER_END) goto merge_code::@2 -- _deref_pbuz1_neq_vbuc1_then_la1
ldy #0
lda (raster_code),y
cmp #RASTER_END
bne __b2
jmp __b3
// merge_code::@3
__b3:
// [792] merge_code::raster_code#1 = ++ merge_code::raster_code#4 -- pbuz1=_inc_pbuz1
inc.z raster_code
bne !+
inc.z raster_code+1
!:
// [793] merge_code::cycle_budget#0 = *merge_code::raster_code#1 -- vbuxx=_deref_pbuz1
// Find the number of cycles
ldy #0
lda (raster_code),y
tax
// [794] merge_code::raster_code#2 = ++ merge_code::raster_code#1 -- pbuz1=_inc_pbuz1
inc.z raster_code
bne !+
inc.z raster_code+1
!:
// [795] if(merge_code::cycle_budget#0!=merge_code::RASTER_EXIT) goto merge_code::@4 -- vbuxx_neq_vbuc1_then_la1
cpx #RASTER_EXIT
bne __b4_from___b3
// [796] phi from merge_code::@19 merge_code::@3 to merge_code::@14 [phi:merge_code::@19/merge_code::@3->merge_code::@14]
__b14_from___b19:
__b14_from___b3:
// [796] phi merge_code::dest_code#12 = merge_code::dest_code#13 [phi:merge_code::@19/merge_code::@3->merge_code::@14#0] -- register_copy
// [796] phi merge_code::logic_code#12 = merge_code::logic_code#5 [phi:merge_code::@19/merge_code::@3->merge_code::@14#1] -- register_copy
jmp __b14
// No more raster code - fill in the rest of the logic code
// merge_code::@14
__b14:
// [797] if(*merge_code::logic_code#12!=merge_code::LOGIC_EXIT) goto merge_code::@15 -- _deref_pbuz1_neq_vbuc1_then_la1
ldy #0
lda (logic_code),y
cmp #LOGIC_EXIT
bne __b15
jmp __b16
// merge_code::@16
__b16:
// [798] *merge_code::dest_code#12 = $60 -- _deref_pbuz1=vbuc1
// And add an RTS
lda #$60
ldy #0
sta (dest_code),y
jmp __breturn
// merge_code::@return
__breturn:
// [799] return
rts
// merge_code::@15
__b15:
// [800] merge_code::logic_code#3 = ++ merge_code::logic_code#12 -- pbuz1=_inc_pbuz1
inc.z logic_code
bne !+
inc.z logic_code+1
!:
// [801] phi from merge_code::@15 merge_code::@18 to merge_code::@17 [phi:merge_code::@15/merge_code::@18->merge_code::@17]
__b17_from___b15:
__b17_from___b18:
// [801] phi merge_code::dest_code#13 = merge_code::dest_code#12 [phi:merge_code::@15/merge_code::@18->merge_code::@17#0] -- register_copy
// [801] phi merge_code::logic_code#14 = merge_code::logic_code#3 [phi:merge_code::@15/merge_code::@18->merge_code::@17#1] -- register_copy
jmp __b17
// Fill in the logic-code
// merge_code::@17
__b17:
// [802] if(*merge_code::logic_code#14!=merge_code::LOGIC_END) goto merge_code::@18 -- _deref_pbuz1_neq_vbuc1_then_la1
ldy #0
lda (logic_code),y
cmp #LOGIC_END
bne __b18
jmp __b19
// merge_code::@19
__b19:
// [803] merge_code::logic_code#5 = ++ merge_code::logic_code#14 -- pbuz1=_inc_pbuz1
inc.z logic_code
bne !+
inc.z logic_code+1
!:
jmp __b14_from___b19
// merge_code::@18
__b18:
// [804] *merge_code::dest_code#13 = *merge_code::logic_code#14 -- _deref_pbuz1=_deref_pbuz2
ldy #0
lda (logic_code),y
ldy #0
sta (dest_code),y
// [805] merge_code::dest_code#6 = ++ merge_code::dest_code#13 -- pbuz1=_inc_pbuz1
inc.z dest_code
bne !+
inc.z dest_code+1
!:
// [806] merge_code::logic_code#4 = ++ merge_code::logic_code#14 -- pbuz1=_inc_pbuz1
inc.z logic_code
bne !+
inc.z logic_code+1
!:
jmp __b17_from___b18
// Fit the cycle budget with logic-code
// [807] phi from merge_code::@3 merge_code::@8 to merge_code::@4 [phi:merge_code::@3/merge_code::@8->merge_code::@4]
__b4_from___b3:
__b4_from___b8:
// [807] phi merge_code::dest_code#21 = merge_code::dest_code#14 [phi:merge_code::@3/merge_code::@8->merge_code::@4#0] -- register_copy
// [807] phi merge_code::logic_code#17 = merge_code::logic_code#18 [phi:merge_code::@3/merge_code::@8->merge_code::@4#1] -- register_copy
// [807] phi merge_code::cycle_budget#13 = merge_code::cycle_budget#0 [phi:merge_code::@3/merge_code::@8->merge_code::@4#2] -- register_copy
jmp __b4
// merge_code::@4
__b4:
// [808] if(merge_code::cycle_budget#13<=0) goto merge_code::@10 -- vbuxx_le_0_then_la1
cpx #0
beq __b10_from___b4
jmp __b5
// merge_code::@5
__b5:
// [809] merge_code::logic_cycles#0 = *merge_code::logic_code#17 -- vbuz1=_deref_pbuz2
// Find the number of logic code cycles
ldy #0
lda (logic_code),y
sta.z logic_cycles
// [810] merge_code::$5 = merge_code::cycle_budget#13 - 1 -- vbuyy=vbuxx_minus_1
txa
tay
dey
// [811] if(merge_code::logic_cycles#0!=merge_code::LOGIC_EXIT) goto merge_code::@20 -- vbuz1_neq_vbuc1_then_la1
lda #LOGIC_EXIT
cmp.z logic_cycles
bne __b20
// [812] phi from merge_code::@12 merge_code::@13 merge_code::@4 merge_code::@5 to merge_code::@10 [phi:merge_code::@12/merge_code::@13/merge_code::@4/merge_code::@5->merge_code::@10]
__b10_from___b12:
__b10_from___b13:
__b10_from___b4:
__b10_from___b5:
// [812] phi merge_code::dest_code#10 = merge_code::dest_code#3 [phi:merge_code::@12/merge_code::@13/merge_code::@4/merge_code::@5->merge_code::@10#0] -- register_copy
// [812] phi merge_code::cycle_budget#10 = merge_code::cycle_budget#2 [phi:merge_code::@12/merge_code::@13/merge_code::@4/merge_code::@5->merge_code::@10#1] -- register_copy
jmp __b10
// Fit the cycle budget with NOPs
// merge_code::@10
__b10:
// [813] if(merge_code::cycle_budget#10>0) goto merge_code::@11 -- vbuxx_gt_0_then_la1
cpx #0
bne __b11
// [790] phi from merge_code::@10 merge_code::@2 to merge_code::@1 [phi:merge_code::@10/merge_code::@2->merge_code::@1]
__b1_from___b10:
__b1_from___b2:
// [790] phi merge_code::logic_code#18 = merge_code::logic_code#17 [phi:merge_code::@10/merge_code::@2->merge_code::@1#0] -- register_copy
// [790] phi merge_code::dest_code#14 = merge_code::dest_code#10 [phi:merge_code::@10/merge_code::@2->merge_code::@1#1] -- register_copy
// [790] phi merge_code::raster_code#4 = merge_code::raster_code#2 [phi:merge_code::@10/merge_code::@2->merge_code::@1#2] -- register_copy
jmp __b1
// merge_code::@11
__b11:
// [814] if(merge_code::cycle_budget#10==3) goto merge_code::@12 -- vbuxx_eq_vbuc1_then_la1
cpx #3
beq __b12
jmp __b13
// merge_code::@13
__b13:
// [815] *merge_code::dest_code#10 = $ea -- _deref_pbuz1=vbuc1
lda #$ea
ldy #0
sta (dest_code),y
// [816] merge_code::dest_code#4 = ++ merge_code::dest_code#10 -- pbuz1=_inc_pbuz1
inc.z dest_code
bne !+
inc.z dest_code+1
!:
// [817] merge_code::cycle_budget#3 = merge_code::cycle_budget#10 - 2 -- vbuxx=vbuxx_minus_2
// NOP
dex
dex
jmp __b10_from___b13
// merge_code::@12
__b12:
// [818] *merge_code::dest_code#10 = $24 -- _deref_pbuz1=vbuc1
lda #$24
ldy #0
sta (dest_code),y
// [819] merge_code::dest_code#2 = ++ merge_code::dest_code#10 -- pbuz1=_inc_pbuz1
inc.z dest_code
bne !+
inc.z dest_code+1
!:
// [820] *merge_code::dest_code#2 = $ea -- _deref_pbuz1=vbuc1
// BIT $EA
lda #$ea
ldy #0
sta (dest_code),y
// [821] merge_code::dest_code#3 = ++ merge_code::dest_code#2 -- pbuz1=_inc_pbuz1
inc.z dest_code
bne !+
inc.z dest_code+1
!:
// [822] merge_code::cycle_budget#2 = merge_code::cycle_budget#10 - 3 -- vbuxx=vbuxx_minus_vbuc1
txa
axs #3
jmp __b10_from___b12
// merge_code::@20
__b20:
// [823] if(merge_code::logic_cycles#0<merge_code::$5) goto merge_code::@9 -- vbuz1_lt_vbuyy_then_la1
cpy.z logic_cycles
beq !+
bcs __b9
!:
jmp __b21
// merge_code::@21
__b21:
// [824] if(merge_code::logic_cycles#0==merge_code::cycle_budget#13) goto merge_code::@9 -- vbuz1_eq_vbuxx_then_la1
cpx.z logic_cycles
beq __b9
// [812] phi from merge_code::@21 to merge_code::@10 [phi:merge_code::@21->merge_code::@10]
__b10_from___b21:
jmp __b10
// merge_code::@9
__b9:
// [825] merge_code::logic_code#0 = ++ merge_code::logic_code#17 -- pbuz1=_inc_pbuz1
inc.z logic_code
bne !+
inc.z logic_code+1
!:
// [826] phi from merge_code::@7 merge_code::@9 to merge_code::@6 [phi:merge_code::@7/merge_code::@9->merge_code::@6]
__b6_from___b7:
__b6_from___b9:
// [826] phi merge_code::dest_code#15 = merge_code::dest_code#1 [phi:merge_code::@7/merge_code::@9->merge_code::@6#0] -- register_copy
// [826] phi merge_code::logic_code#10 = merge_code::logic_code#1 [phi:merge_code::@7/merge_code::@9->merge_code::@6#1] -- register_copy
jmp __b6
// Fill in the logic-code
// merge_code::@6
__b6:
// [827] if(*merge_code::logic_code#10!=merge_code::LOGIC_END) goto merge_code::@7 -- _deref_pbuz1_neq_vbuc1_then_la1
ldy #0
lda (logic_code),y
cmp #LOGIC_END
bne __b7
jmp __b8
// merge_code::@8
__b8:
// [828] merge_code::logic_code#2 = ++ merge_code::logic_code#10 -- pbuz1=_inc_pbuz1
inc.z logic_code
bne !+
inc.z logic_code+1
!:
// [829] merge_code::cycle_budget#1 = merge_code::cycle_budget#13 - merge_code::logic_cycles#0 -- vbuxx=vbuxx_minus_vbuz1
// Reduce the cycle budget
txa
sec
sbc.z logic_cycles
tax
jmp __b4_from___b8
// merge_code::@7
__b7:
// [830] *merge_code::dest_code#15 = *merge_code::logic_code#10 -- _deref_pbuz1=_deref_pbuz2
ldy #0
lda (logic_code),y
ldy #0
sta (dest_code),y
// [831] merge_code::dest_code#1 = ++ merge_code::dest_code#15 -- pbuz1=_inc_pbuz1
inc.z dest_code
bne !+
inc.z dest_code+1
!:
// [832] merge_code::logic_code#1 = ++ merge_code::logic_code#10 -- pbuz1=_inc_pbuz1
inc.z logic_code
bne !+
inc.z logic_code+1
!:
jmp __b6_from___b7
// merge_code::@2
__b2:
// [833] *merge_code::dest_code#14 = *merge_code::raster_code#4 -- _deref_pbuz1=_deref_pbuz2
ldy #0
lda (raster_code),y
ldy #0
sta (dest_code),y
// [834] merge_code::dest_code#0 = ++ merge_code::dest_code#14 -- pbuz1=_inc_pbuz1
inc.z dest_code
bne !+
inc.z dest_code+1
!:
// [835] merge_code::raster_code#0 = ++ merge_code::raster_code#4 -- pbuz1=_inc_pbuz1
inc.z raster_code
bne !+
inc.z raster_code+1
!:
jmp __b1_from___b2
}
// init_render_index
// Initialize the RENDER_INDEX table from sub-tables
init_render_index: {
.label __10 = $d
.label __11 = $d
.label render_index_xcol = 5
.label canvas_xcol = 3
.label canvas = $d
.label render_index = 5
.label x_col = $14
.label render_index_xcol_1 = $b
.label y_pos = $10
// Special column in sprite#9
.label render_ypos_table = 9
.label __12 = $d
// [837] phi from init_render_index to init_render_index::@1 [phi:init_render_index->init_render_index::@1]
__b1_from_init_render_index:
// [837] phi init_render_index::render_index_xcol#0 = RENDER_INDEX [phi:init_render_index->init_render_index::@1#0] -- pbuz1=pbuc1
lda #<RENDER_INDEX
sta.z render_index_xcol
lda #>RENDER_INDEX
sta.z render_index_xcol+1
// [837] phi init_render_index::x_col#2 = 0 [phi:init_render_index->init_render_index::@1#1] -- vbuz1=vbuc1
lda #0
sta.z x_col
jmp __b1
// init_render_index::@1
__b1:
// [838] if(init_render_index::x_col#2<$1a) goto init_render_index::@2 -- vbuz1_lt_vbuc1_then_la1
lda.z x_col
cmp #$1a
bcc __b2
jmp __b3
// init_render_index::@3
__b3:
// [839] *(RENDER_INDEX+$18*$100+RENDER_OFFSET_YPOS_INC) = 0 -- _deref_pbuc1=vbuc2
// Fix the first entry of the inc_offset in the last column (set it to point to 0,0,6,6...)
lda #0
sta RENDER_INDEX+$18*$100+RENDER_OFFSET_YPOS_INC
// [840] *(RENDER_INDEX+$19*$100+RENDER_OFFSET_YPOS_INC) = 0 -- _deref_pbuc1=vbuc2
lda #0
sta RENDER_INDEX+$19*$100+RENDER_OFFSET_YPOS_INC
jmp __breturn
// init_render_index::@return
__breturn:
// [841] return
rts
// init_render_index::@2
__b2:
// [842] if(init_render_index::x_col#2<$18) goto init_render_index::@4 -- vbuz1_lt_vbuc1_then_la1
lda.z x_col
cmp #$18
bcc __b4_from___b2
// [843] phi from init_render_index::@2 to init_render_index::@10 [phi:init_render_index::@2->init_render_index::@10]
__b10_from___b2:
jmp __b10
// init_render_index::@10
__b10:
// [844] phi from init_render_index::@10 to init_render_index::@4 [phi:init_render_index::@10->init_render_index::@4]
__b4_from___b10:
// [844] phi init_render_index::ypos_inc_offset#7 = $b [phi:init_render_index::@10->init_render_index::@4#0] -- vbuxx=vbuc1
ldx #$b
// [844] phi init_render_index::render_ypos_table#4 = RENDER_YPOS_9TH [phi:init_render_index::@10->init_render_index::@4#1] -- pwuz1=pwuc1
lda #<RENDER_YPOS_9TH
sta.z render_ypos_table
lda #>RENDER_YPOS_9TH
sta.z render_ypos_table+1
jmp __b4
// [844] phi from init_render_index::@2 to init_render_index::@4 [phi:init_render_index::@2->init_render_index::@4]
__b4_from___b2:
// [844] phi init_render_index::ypos_inc_offset#7 = 0 [phi:init_render_index::@2->init_render_index::@4#0] -- vbuxx=vbuc1
ldx #0
// [844] phi init_render_index::render_ypos_table#4 = RENDER_YPOS [phi:init_render_index::@2->init_render_index::@4#1] -- pwuz1=pwuc1
lda #<RENDER_YPOS
sta.z render_ypos_table
lda #>RENDER_YPOS
sta.z render_ypos_table+1
jmp __b4
// init_render_index::@4
__b4:
// [845] init_render_index::$9 = init_render_index::x_col#2 << 1 -- vbuaa=vbuz1_rol_1
lda.z x_col
asl
// [846] init_render_index::canvas_xcol#0 = RENDER_XCOLS[init_render_index::$9] -- pbuz1=qbuc1_derefidx_vbuaa
tay
lda RENDER_XCOLS,y
sta.z canvas_xcol
lda RENDER_XCOLS+1,y
sta.z canvas_xcol+1
// [847] init_render_index::render_index_xcol#7 = init_render_index::render_index_xcol#0 -- pbuz1=pbuz2
lda.z render_index_xcol
sta.z render_index_xcol_1
lda.z render_index_xcol+1
sta.z render_index_xcol_1+1
// [848] phi from init_render_index::@4 to init_render_index::@5 [phi:init_render_index::@4->init_render_index::@5]
__b5_from___b4:
// [848] phi init_render_index::ypos_inc_offset#4 = init_render_index::ypos_inc_offset#7 [phi:init_render_index::@4->init_render_index::@5#0] -- register_copy
// [848] phi init_render_index::render_index_xcol#2 = init_render_index::render_index_xcol#7 [phi:init_render_index::@4->init_render_index::@5#1] -- register_copy
// [848] phi init_render_index::y_pos#2 = 0 [phi:init_render_index::@4->init_render_index::@5#2] -- vbuz1=vbuc1
lda #0
sta.z y_pos
jmp __b5
// init_render_index::@5
__b5:
// [849] if(init_render_index::y_pos#2<$94) goto init_render_index::@6 -- vbuz1_lt_vbuc1_then_la1
lda.z y_pos
cmp #$94
bcc __b6
jmp __b7
// init_render_index::@7
__b7:
// [850] init_render_index::render_index#1 = init_render_index::render_index_xcol#0 + $100 -- pbuz1=pbuz1_plus_vwuc1
lda.z render_index
clc
adc #<$100
sta.z render_index
lda.z render_index+1
adc #>$100
sta.z render_index+1
// [851] init_render_index::x_col#1 = ++ init_render_index::x_col#2 -- vbuz1=_inc_vbuz1
inc.z x_col
// [837] phi from init_render_index::@7 to init_render_index::@1 [phi:init_render_index::@7->init_render_index::@1]
__b1_from___b7:
// [837] phi init_render_index::render_index_xcol#0 = init_render_index::render_index#1 [phi:init_render_index::@7->init_render_index::@1#0] -- register_copy
// [837] phi init_render_index::x_col#2 = init_render_index::x_col#1 [phi:init_render_index::@7->init_render_index::@1#1] -- register_copy
jmp __b1
// init_render_index::@6
__b6:
// [852] init_render_index::$11 = (unsigned int)init_render_index::y_pos#2 -- vwuz1=_word_vbuz2
lda.z y_pos
sta.z __11
lda #0
sta.z __11+1
// [853] init_render_index::$10 = init_render_index::$11 << 1 -- vwuz1=vwuz1_rol_1
asl.z __10
rol.z __10+1
// [854] init_render_index::$12 = init_render_index::render_ypos_table#4 + init_render_index::$10 -- pwuz1=pwuz2_plus_vwuz1
clc
lda.z __12
adc.z render_ypos_table
sta.z __12
lda.z __12+1
adc.z render_ypos_table+1
sta.z __12+1
// [855] init_render_index::canvas#0 = init_render_index::canvas_xcol#0 + *init_render_index::$12 -- pbuz1=pbuz2_plus__deref_pwuz1
ldy #0
clc
lda (canvas),y
adc.z canvas_xcol
pha
iny
lda (canvas),y
adc.z canvas_xcol+1
sta.z canvas+1
pla
sta.z canvas
// [856] init_render_index::$5 = byte0 init_render_index::canvas#0 -- vbuaa=_byte0_pbuz1
lda.z canvas
// [857] *init_render_index::render_index_xcol#2 = init_render_index::$5 -- _deref_pbuz1=vbuaa
ldy #0
sta (render_index_xcol_1),y
// [858] init_render_index::$6 = byte1 init_render_index::canvas#0 -- vbuaa=_byte1_pbuz1
lda.z canvas+1
// [859] init_render_index::render_index_xcol#2[RENDER_OFFSET_CANVAS_HI] = init_render_index::$6 -- pbuz1_derefidx_vbuc1=vbuaa
ldy #RENDER_OFFSET_CANVAS_HI
sta (render_index_xcol_1),y
// [860] init_render_index::render_index_xcol#2[RENDER_OFFSET_YPOS_INC] = init_render_index::ypos_inc_offset#4 -- pbuz1_derefidx_vbuc1=vbuxx
ldy #RENDER_OFFSET_YPOS_INC
txa
sta (render_index_xcol_1),y
// [861] init_render_index::ypos_inc_offset#2 = init_render_index::ypos_inc_offset#4 + 2 -- vbuxx=vbuxx_plus_2
inx
inx
// [862] if(init_render_index::ypos_inc_offset#2<$17) goto init_render_index::@8 -- vbuxx_lt_vbuc1_then_la1
cpx #$17
bcc __b8_from___b6
jmp __b9
// init_render_index::@9
__b9:
// [863] init_render_index::ypos_inc_offset#3 = init_render_index::ypos_inc_offset#2 - $15 -- vbuxx=vbuxx_minus_vbuc1
txa
axs #$15
// [864] phi from init_render_index::@6 init_render_index::@9 to init_render_index::@8 [phi:init_render_index::@6/init_render_index::@9->init_render_index::@8]
__b8_from___b6:
__b8_from___b9:
// [864] phi init_render_index::ypos_inc_offset#8 = init_render_index::ypos_inc_offset#2 [phi:init_render_index::@6/init_render_index::@9->init_render_index::@8#0] -- register_copy
jmp __b8
// init_render_index::@8
__b8:
// [865] init_render_index::render_index_xcol#1 = ++ init_render_index::render_index_xcol#2 -- pbuz1=_inc_pbuz1
inc.z render_index_xcol_1
bne !+
inc.z render_index_xcol_1+1
!:
// [866] init_render_index::y_pos#1 = init_render_index::y_pos#2 + 2 -- vbuz1=vbuz1_plus_2
lda.z y_pos
clc
adc #2
sta.z y_pos
// [848] phi from init_render_index::@8 to init_render_index::@5 [phi:init_render_index::@8->init_render_index::@5]
__b5_from___b8:
// [848] phi init_render_index::ypos_inc_offset#4 = init_render_index::ypos_inc_offset#8 [phi:init_render_index::@8->init_render_index::@5#0] -- register_copy
// [848] phi init_render_index::render_index_xcol#2 = init_render_index::render_index_xcol#1 [phi:init_render_index::@8->init_render_index::@5#1] -- register_copy
// [848] phi init_render_index::y_pos#2 = init_render_index::y_pos#1 [phi:init_render_index::@8->init_render_index::@5#2] -- register_copy
jmp __b5
}
// splash_show
// Show the splash screen
splash_show: {
// Show splash screen
.label splash = $b
.label ypos = $10
.label xcol = $14
// [868] phi from splash_show to splash_show::@1 [phi:splash_show->splash_show::@1]
__b1_from_splash_show:
// [868] phi splash_show::splash#4 = SPLASH [phi:splash_show->splash_show::@1#0] -- pbuz1=pbuc1
lda #<SPLASH
sta.z splash
lda #>SPLASH
sta.z splash+1
// [868] phi splash_show::xcol#2 = 0 [phi:splash_show->splash_show::@1#1] -- vbuz1=vbuc1
lda #0
sta.z xcol
jmp __b1
// splash_show::@1
__b1:
// [869] if(splash_show::xcol#2<$19) goto splash_show::@2 -- vbuz1_lt_vbuc1_then_la1
lda.z xcol
cmp #$19
bcc __b2_from___b1
jmp __breturn
// splash_show::@return
__breturn:
// [870] return
rts
// [871] phi from splash_show::@1 to splash_show::@2 [phi:splash_show::@1->splash_show::@2]
__b2_from___b1:
// [871] phi splash_show::splash#2 = splash_show::splash#4 [phi:splash_show::@1->splash_show::@2#0] -- register_copy
// [871] phi splash_show::ypos#2 = 0 [phi:splash_show::@1->splash_show::@2#1] -- vbuz1=vbuc1
lda #0
sta.z ypos
jmp __b2
// splash_show::@2
__b2:
// [872] if(splash_show::ypos#2<$93) goto splash_show::@3 -- vbuz1_lt_vbuc1_then_la1
lda.z ypos
cmp #$93
bcc __b3
jmp __b4
// splash_show::@4
__b4:
// [873] splash_show::xcol#1 = ++ splash_show::xcol#2 -- vbuz1=_inc_vbuz1
inc.z xcol
// [868] phi from splash_show::@4 to splash_show::@1 [phi:splash_show::@4->splash_show::@1]
__b1_from___b4:
// [868] phi splash_show::splash#4 = splash_show::splash#2 [phi:splash_show::@4->splash_show::@1#0] -- register_copy
// [868] phi splash_show::xcol#2 = splash_show::xcol#1 [phi:splash_show::@4->splash_show::@1#1] -- register_copy
jmp __b1
// splash_show::@3
__b3:
// [874] splash_show::pixels#0 = *splash_show::splash#2 -- vbuxx=_deref_pbuz1
// Render 8px x 1px
ldy #0
lda (splash),y
tax
// [875] splash_show::splash#1 = ++ splash_show::splash#2 -- pbuz1=_inc_pbuz1
inc.z splash
bne !+
inc.z splash+1
!:
// [876] render::xcol#1 = splash_show::xcol#2
// [877] render::ypos#1 = splash_show::ypos#2
// [878] render::pixels#1 = splash_show::pixels#0 -- vbuz1=vbuxx
stx.z render.pixels
// [879] call render
// [999] phi from splash_show::@3 to render [phi:splash_show::@3->render]
render_from___b3:
// [999] phi render::pixels#4 = render::pixels#1 [phi:splash_show::@3->render#0] -- register_copy
// [999] phi render::xcol#2 = render::xcol#1 [phi:splash_show::@3->render#1] -- register_copy
// [999] phi render::ypos#2 = render::ypos#1 [phi:splash_show::@3->render#2] -- register_copy
jsr render
jmp __b5
// splash_show::@5
__b5:
// [880] splash_show::ypos#1 = ++ splash_show::ypos#2 -- vbuz1=_inc_vbuz1
inc.z ypos
// [871] phi from splash_show::@5 to splash_show::@2 [phi:splash_show::@5->splash_show::@2]
__b2_from___b5:
// [871] phi splash_show::splash#2 = splash_show::splash#1 [phi:splash_show::@5->splash_show::@2#0] -- register_copy
// [871] phi splash_show::ypos#2 = splash_show::ypos#1 [phi:splash_show::@5->splash_show::@2#1] -- register_copy
jmp __b2
}
// init_bobs_restore
// Initialize bobs_restore with data to prevent crash on the first call
init_bobs_restore: {
.label CANVAS_HIDDEN = $ea00
.label bob_restore = 9
// [882] phi from init_bobs_restore to init_bobs_restore::@1 [phi:init_bobs_restore->init_bobs_restore::@1]
__b1_from_init_bobs_restore:
// [882] phi init_bobs_restore::bob_restore#5 = bobs_restore [phi:init_bobs_restore->init_bobs_restore::@1#0] -- pbuz1=pbuc1
lda #<bobs_restore
sta.z bob_restore
lda #>bobs_restore
sta.z bob_restore+1
// [882] phi init_bobs_restore::bob#2 = 0 [phi:init_bobs_restore->init_bobs_restore::@1#1] -- vbuxx=vbuc1
ldx #0
jmp __b1
// init_bobs_restore::@1
__b1:
// [883] if(init_bobs_restore::bob#2<NUM_BOBS*2) goto init_bobs_restore::@3 -- vbuxx_lt_vbuc1_then_la1
cpx #NUM_BOBS*2
bcc __b3_from___b1
jmp __b2
// init_bobs_restore::@2
__b2:
// [884] logic_tile_ptr = LEVEL_TILES+(unsigned int)$40*$12+$c -- pbuz1=pbuc1
// Also set the logic tile to something sane
lda #<LEVEL_TILES+$40*$12+$c
sta.z logic_tile_ptr
lda #>LEVEL_TILES+$40*$12+$c
sta.z logic_tile_ptr+1
// [885] logic_tile_xcol = $c -- vbuz1=vbuc1
lda #$c
sta.z logic_tile_xcol
// [886] logic_tile_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z logic_tile_yfine
jmp __breturn
// init_bobs_restore::@return
__breturn:
// [887] return
rts
// [888] phi from init_bobs_restore::@1 to init_bobs_restore::@3 [phi:init_bobs_restore::@1->init_bobs_restore::@3]
__b3_from___b1:
// [888] phi init_bobs_restore::i#2 = 0 [phi:init_bobs_restore::@1->init_bobs_restore::@3#0] -- vbuyy=vbuc1
ldy #0
jmp __b3
// init_bobs_restore::@3
__b3:
// [889] if(init_bobs_restore::i#2<SIZE_BOB_RESTORE) goto init_bobs_restore::@4 -- vbuyy_lt_vbuc1_then_la1
cpy #SIZE_BOB_RESTORE
bcc __b4
jmp __b5
// init_bobs_restore::@5
__b5:
// [890] *init_bobs_restore::bob_restore#5 = 0 -- _deref_pbuz1=vbuc1
lda #0
ldy #0
sta (bob_restore),y
// [891] init_bobs_restore::bob_restore#5[1] = byte1 init_bobs_restore::CANVAS_HIDDEN -- pbuz1_derefidx_vbuc1=vbuc2
lda #>CANVAS_HIDDEN
ldy #1
sta (bob_restore),y
// [892] init_bobs_restore::bob_restore#5[3] = 0 -- pbuz1_derefidx_vbuc1=vbuc2
lda #0
ldy #3
sta (bob_restore),y
// [893] init_bobs_restore::bob_restore#5[4] = byte1 init_bobs_restore::CANVAS_HIDDEN -- pbuz1_derefidx_vbuc1=vbuc2
lda #>CANVAS_HIDDEN
ldy #4
sta (bob_restore),y
// [894] init_bobs_restore::bob_restore#1 = init_bobs_restore::bob_restore#5 + SIZE_BOB_RESTORE -- pbuz1=pbuz1_plus_vbuc1
lda #SIZE_BOB_RESTORE
clc
adc.z bob_restore
sta.z bob_restore
bcc !+
inc.z bob_restore+1
!:
// [895] init_bobs_restore::bob#1 = ++ init_bobs_restore::bob#2 -- vbuxx=_inc_vbuxx
inx
// [882] phi from init_bobs_restore::@5 to init_bobs_restore::@1 [phi:init_bobs_restore::@5->init_bobs_restore::@1]
__b1_from___b5:
// [882] phi init_bobs_restore::bob_restore#5 = init_bobs_restore::bob_restore#1 [phi:init_bobs_restore::@5->init_bobs_restore::@1#0] -- register_copy
// [882] phi init_bobs_restore::bob#2 = init_bobs_restore::bob#1 [phi:init_bobs_restore::@5->init_bobs_restore::@1#1] -- register_copy
jmp __b1
// init_bobs_restore::@4
__b4:
// [896] init_bobs_restore::bob_restore#5[init_bobs_restore::i#2] = 0 -- pbuz1_derefidx_vbuyy=vbuc1
lda #0
sta (bob_restore),y
// [897] init_bobs_restore::i#1 = ++ init_bobs_restore::i#2 -- vbuyy=_inc_vbuyy
iny
// [888] phi from init_bobs_restore::@4 to init_bobs_restore::@3 [phi:init_bobs_restore::@4->init_bobs_restore::@3]
__b3_from___b4:
// [888] phi init_bobs_restore::i#2 = init_bobs_restore::i#1 [phi:init_bobs_restore::@4->init_bobs_restore::@3#0] -- register_copy
jmp __b3
}
// init_sprite_pointers
// Initialize sprite pointers on all screens (in both graphics banks)
init_sprite_pointers: {
.const SPRITE_ID_0 = $ff&(SPRITES_1&$3fff)/$40
.label sprites_ptr_1 = 9
.label sprites_ptr_2 = 7
// [899] phi from init_sprite_pointers to init_sprite_pointers::@1 [phi:init_sprite_pointers->init_sprite_pointers::@1]
__b1_from_init_sprite_pointers:
// [899] phi init_sprite_pointers::sprites_ptr_2#5 = SCREENS_2+OFFSET_SPRITE_PTRS [phi:init_sprite_pointers->init_sprite_pointers::@1#0] -- pbuz1=pbuc1
lda #<SCREENS_2+OFFSET_SPRITE_PTRS
sta.z sprites_ptr_2
lda #>SCREENS_2+OFFSET_SPRITE_PTRS
sta.z sprites_ptr_2+1
// [899] phi init_sprite_pointers::sprites_ptr_1#5 = SCREENS_1+OFFSET_SPRITE_PTRS [phi:init_sprite_pointers->init_sprite_pointers::@1#1] -- pbuz1=pbuc1
lda #<SCREENS_1+OFFSET_SPRITE_PTRS
sta.z sprites_ptr_1
lda #>SCREENS_1+OFFSET_SPRITE_PTRS
sta.z sprites_ptr_1+1
// [899] phi init_sprite_pointers::screen#2 = 0 [phi:init_sprite_pointers->init_sprite_pointers::@1#2] -- vbuxx=vbuc1
ldx #0
jmp __b1
// init_sprite_pointers::@1
__b1:
// [900] if(init_sprite_pointers::screen#2<$e) goto init_sprite_pointers::@2 -- vbuxx_lt_vbuc1_then_la1
cpx #$e
bcc __b2_from___b1
jmp __breturn
// init_sprite_pointers::@return
__breturn:
// [901] return
rts
// [902] phi from init_sprite_pointers::@1 to init_sprite_pointers::@2 [phi:init_sprite_pointers::@1->init_sprite_pointers::@2]
__b2_from___b1:
// [902] phi init_sprite_pointers::sprite#2 = 0 [phi:init_sprite_pointers::@1->init_sprite_pointers::@2#0] -- vbuyy=vbuc1
ldy #0
jmp __b2
// init_sprite_pointers::@2
__b2:
// [903] if(init_sprite_pointers::sprite#2<8) goto init_sprite_pointers::@3 -- vbuyy_lt_vbuc1_then_la1
cpy #8
bcc __b3
jmp __b4
// init_sprite_pointers::@4
__b4:
// [904] init_sprite_pointers::sprites_ptr_1#1 = init_sprite_pointers::sprites_ptr_1#5 + $400 -- pbuz1=pbuz1_plus_vwuc1
lda.z sprites_ptr_1
clc
adc #<$400
sta.z sprites_ptr_1
lda.z sprites_ptr_1+1
adc #>$400
sta.z sprites_ptr_1+1
// [905] init_sprite_pointers::sprites_ptr_2#1 = init_sprite_pointers::sprites_ptr_2#5 + $400 -- pbuz1=pbuz1_plus_vwuc1
lda.z sprites_ptr_2
clc
adc #<$400
sta.z sprites_ptr_2
lda.z sprites_ptr_2+1
adc #>$400
sta.z sprites_ptr_2+1
// [906] init_sprite_pointers::screen#1 = ++ init_sprite_pointers::screen#2 -- vbuxx=_inc_vbuxx
inx
// [899] phi from init_sprite_pointers::@4 to init_sprite_pointers::@1 [phi:init_sprite_pointers::@4->init_sprite_pointers::@1]
__b1_from___b4:
// [899] phi init_sprite_pointers::sprites_ptr_2#5 = init_sprite_pointers::sprites_ptr_2#1 [phi:init_sprite_pointers::@4->init_sprite_pointers::@1#0] -- register_copy
// [899] phi init_sprite_pointers::sprites_ptr_1#5 = init_sprite_pointers::sprites_ptr_1#1 [phi:init_sprite_pointers::@4->init_sprite_pointers::@1#1] -- register_copy
// [899] phi init_sprite_pointers::screen#2 = init_sprite_pointers::screen#1 [phi:init_sprite_pointers::@4->init_sprite_pointers::@1#2] -- register_copy
jmp __b1
// init_sprite_pointers::@3
__b3:
// [907] init_sprite_pointers::$2 = init_sprite_pointers::SPRITE_ID_0 + init_sprite_pointers::screen#2 -- vbuaa=vbuc1_plus_vbuxx
txa
clc
adc #SPRITE_ID_0
// [908] init_sprite_pointers::sprite_id#0 = init_sprite_pointers::$2 + init_sprite_pointers::sprites_id[init_sprite_pointers::sprite#2] -- vbuaa=vbuaa_plus_pbuc1_derefidx_vbuyy
clc
adc sprites_id,y
// [909] init_sprite_pointers::sprites_ptr_1#5[init_sprite_pointers::sprite#2] = init_sprite_pointers::sprite_id#0 -- pbuz1_derefidx_vbuyy=vbuaa
sta (sprites_ptr_1),y
// [910] init_sprite_pointers::sprites_ptr_2#5[init_sprite_pointers::sprite#2] = init_sprite_pointers::sprite_id#0 -- pbuz1_derefidx_vbuyy=vbuaa
sta (sprites_ptr_2),y
// [911] init_sprite_pointers::sprite#1 = ++ init_sprite_pointers::sprite#2 -- vbuyy=_inc_vbuyy
iny
// [902] phi from init_sprite_pointers::@3 to init_sprite_pointers::@2 [phi:init_sprite_pointers::@3->init_sprite_pointers::@2]
__b2_from___b3:
// [902] phi init_sprite_pointers::sprite#2 = init_sprite_pointers::sprite#1 [phi:init_sprite_pointers::@3->init_sprite_pointers::@2#0] -- register_copy
jmp __b2
.segment Data
sprites_id: .byte 0, $70, $60, $50, $40, $30, $20, $10
}
.segment Code
// memcpy
// Copy block of memory (forwards)
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
// void * memcpy(void *destination, void *source, unsigned int num)
memcpy: {
.label destination = INTRO_MUSIC_CRUNCHED_UPPER
.label source = INTRO_MUSIC_CRUNCHED
.label src_end = source+INTRO_MUSIC_CRUNCHED_SIZE
.label dst = 9
.label src = 7
// [913] phi from memcpy to memcpy::@1 [phi:memcpy->memcpy::@1]
__b1_from_memcpy:
// [913] phi memcpy::dst#2 = (char *)memcpy::destination#0 [phi:memcpy->memcpy::@1#0] -- pbuz1=pbuc1
lda #<destination
sta.z dst
lda #>destination
sta.z dst+1
// [913] phi memcpy::src#2 = (char *)memcpy::source#0 [phi:memcpy->memcpy::@1#1] -- pbuz1=pbuc1
lda #<source
sta.z src
lda #>source
sta.z src+1
jmp __b1
// memcpy::@1
__b1:
// [914] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuc1_then_la1
lda.z src+1
cmp #>src_end
bne __b2
lda.z src
cmp #<src_end
bne __b2
jmp __breturn
// memcpy::@return
__breturn:
// [915] return
rts
// memcpy::@2
__b2:
// [916] *memcpy::dst#2 = *memcpy::src#2 -- _deref_pbuz1=_deref_pbuz2
ldy #0
lda (src),y
ldy #0
sta (dst),y
// [917] memcpy::dst#1 = ++ memcpy::dst#2 -- pbuz1=_inc_pbuz1
inc.z dst
bne !+
inc.z dst+1
!:
// [918] memcpy::src#1 = ++ memcpy::src#2 -- pbuz1=_inc_pbuz1
inc.z src
bne !+
inc.z src+1
!:
// [913] phi from memcpy::@2 to memcpy::@1 [phi:memcpy::@2->memcpy::@1]
__b1_from___b2:
// [913] phi memcpy::dst#2 = memcpy::dst#1 [phi:memcpy::@2->memcpy::@1#0] -- register_copy
// [913] phi memcpy::src#2 = memcpy::src#1 [phi:memcpy::@2->memcpy::@1#1] -- register_copy
jmp __b1
}
// joyinit
// Prepare for joystick control
joyinit: {
// [919] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 0 -- _deref_pbuc1=vbuc2
// Joystick Read Mode
lda #0
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR
jmp __breturn
// joyinit::@return
__breturn:
// [920] return
rts
}
// joyfire
// Return 1 if joy #2 fire is pressed
joyfire: {
// [921] joyfire::$0 = *((char *)CIA1) & $10 -- vbuaa=_deref_pbuc1_band_vbuc2
lda #$10
and CIA1
// [922] if(joyfire::$0==0) goto joyfire::@1 -- vbuaa_eq_0_then_la1
cmp #0
beq __b1_from_joyfire
// [924] phi from joyfire to joyfire::@return [phi:joyfire->joyfire::@return]
__breturn_from_joyfire:
// [924] phi joyfire::return#4 = 0 [phi:joyfire->joyfire::@return#0] -- vbuaa=vbuc1
lda #0
jmp __breturn
// [923] phi from joyfire to joyfire::@1 [phi:joyfire->joyfire::@1]
__b1_from_joyfire:
jmp __b1
// joyfire::@1
__b1:
// [924] phi from joyfire::@1 to joyfire::@return [phi:joyfire::@1->joyfire::@return]
__breturn_from___b1:
// [924] phi joyfire::return#4 = 1 [phi:joyfire::@1->joyfire::@return#0] -- vbuaa=vbuc1
lda #1
jmp __breturn
// joyfire::@return
__breturn:
// [925] return
rts
}
// init_level_tile_directions
// Initialize the LEVEL_TILES_DIRECTIONS table with bits representing all open (non-blocked) movement directions from a tile
init_level_tile_directions: {
.label directions = 9
.label ytile = $14
.label open_directions = $f
.label xtile = $10
// [927] phi from init_level_tile_directions to init_level_tile_directions::@1 [phi:init_level_tile_directions->init_level_tile_directions::@1]
__b1_from_init_level_tile_directions:
// [927] phi init_level_tile_directions::directions#7 = LEVEL_TILES_DIRECTIONS [phi:init_level_tile_directions->init_level_tile_directions::@1#0] -- pbuz1=pbuc1
lda #<LEVEL_TILES_DIRECTIONS
sta.z directions
lda #>LEVEL_TILES_DIRECTIONS
sta.z directions+1
// [927] phi init_level_tile_directions::ytile#15 = 0 [phi:init_level_tile_directions->init_level_tile_directions::@1#1] -- vbuz1=vbuc1
lda #0
sta.z ytile
jmp __b1
// init_level_tile_directions::@1
__b1:
// [928] if(init_level_tile_directions::ytile#15<$25) goto init_level_tile_directions::@2 -- vbuz1_lt_vbuc1_then_la1
lda.z ytile
cmp #$25
bcc __b2_from___b1
jmp __breturn
// init_level_tile_directions::@return
__breturn:
// [929] return
rts
// [930] phi from init_level_tile_directions::@1 to init_level_tile_directions::@2 [phi:init_level_tile_directions::@1->init_level_tile_directions::@2]
__b2_from___b1:
// [930] phi init_level_tile_directions::xtile#10 = 0 [phi:init_level_tile_directions::@1->init_level_tile_directions::@2#0] -- vbuz1=vbuc1
lda #0
sta.z xtile
jmp __b2
// init_level_tile_directions::@2
__b2:
// [931] if(init_level_tile_directions::xtile#10<$32) goto init_level_tile_directions::@3 -- vbuz1_lt_vbuc1_then_la1
lda.z xtile
cmp #$32
bcc __b3
jmp __b4
// init_level_tile_directions::@4
__b4:
// [932] init_level_tile_directions::directions#1 = init_level_tile_directions::directions#7 + $40 -- pbuz1=pbuz1_plus_vbuc1
lda #$40
clc
adc.z directions
sta.z directions
bcc !+
inc.z directions+1
!:
// [933] init_level_tile_directions::ytile#1 = ++ init_level_tile_directions::ytile#15 -- vbuz1=_inc_vbuz1
inc.z ytile
// [927] phi from init_level_tile_directions::@4 to init_level_tile_directions::@1 [phi:init_level_tile_directions::@4->init_level_tile_directions::@1]
__b1_from___b4:
// [927] phi init_level_tile_directions::directions#7 = init_level_tile_directions::directions#1 [phi:init_level_tile_directions::@4->init_level_tile_directions::@1#0] -- register_copy
// [927] phi init_level_tile_directions::ytile#15 = init_level_tile_directions::ytile#1 [phi:init_level_tile_directions::@4->init_level_tile_directions::@1#1] -- register_copy
jmp __b1
// init_level_tile_directions::@3
__b3:
// [934] level_tile_get::xtile#0 = init_level_tile_directions::xtile#10 - 1 -- vbuxx=vbuz1_minus_1
ldx.z xtile
dex
// [935] level_tile_get::ytile#0 = init_level_tile_directions::ytile#15 -- vbuaa=vbuz1
lda.z ytile
// [936] call level_tile_get
// [1018] phi from init_level_tile_directions::@3 to level_tile_get [phi:init_level_tile_directions::@3->level_tile_get]
level_tile_get_from___b3:
// [1018] phi level_tile_get::ytile#4 = level_tile_get::ytile#0 [phi:init_level_tile_directions::@3->level_tile_get#0] -- register_copy
// [1018] phi level_tile_get::xtile#4 = level_tile_get::xtile#0 [phi:init_level_tile_directions::@3->level_tile_get#1] -- register_copy
jsr level_tile_get
// [937] level_tile_get::return#3 = level_tile_get::return#2
jmp __b13
// init_level_tile_directions::@13
__b13:
// [938] init_level_tile_directions::$3 = level_tile_get::return#3 -- vbuxx=vbuaa
tax
// [939] if(TILES_TYPE[init_level_tile_directions::$3]==WALL) goto init_level_tile_directions::@5 -- pbuc1_derefidx_vbuxx_eq_vbuc2_then_la1
lda TILES_TYPE,x
cmp #WALL
beq __b5_from___b13
// [940] phi from init_level_tile_directions::@13 to init_level_tile_directions::@9 [phi:init_level_tile_directions::@13->init_level_tile_directions::@9]
__b9_from___b13:
jmp __b9
// init_level_tile_directions::@9
__b9:
// [941] phi from init_level_tile_directions::@9 to init_level_tile_directions::@5 [phi:init_level_tile_directions::@9->init_level_tile_directions::@5]
__b5_from___b9:
// [941] phi init_level_tile_directions::open_directions#11 = LEFT [phi:init_level_tile_directions::@9->init_level_tile_directions::@5#0] -- vbuz1=vbuc1
lda #LEFT
sta.z open_directions
jmp __b5
// [941] phi from init_level_tile_directions::@13 to init_level_tile_directions::@5 [phi:init_level_tile_directions::@13->init_level_tile_directions::@5]
__b5_from___b13:
// [941] phi init_level_tile_directions::open_directions#11 = 0 [phi:init_level_tile_directions::@13->init_level_tile_directions::@5#0] -- vbuz1=vbuc1
lda #0
sta.z open_directions
jmp __b5
// init_level_tile_directions::@5
__b5:
// [942] level_tile_get::xtile#1 = init_level_tile_directions::xtile#10 + 1 -- vbuxx=vbuz1_plus_1
ldx.z xtile
inx
// [943] level_tile_get::ytile#1 = init_level_tile_directions::ytile#15 -- vbuaa=vbuz1
lda.z ytile
// [944] call level_tile_get
// [1018] phi from init_level_tile_directions::@5 to level_tile_get [phi:init_level_tile_directions::@5->level_tile_get]
level_tile_get_from___b5:
// [1018] phi level_tile_get::ytile#4 = level_tile_get::ytile#1 [phi:init_level_tile_directions::@5->level_tile_get#0] -- register_copy
// [1018] phi level_tile_get::xtile#4 = level_tile_get::xtile#1 [phi:init_level_tile_directions::@5->level_tile_get#1] -- register_copy
jsr level_tile_get
// [945] level_tile_get::return#4 = level_tile_get::return#2
jmp __b14
// init_level_tile_directions::@14
__b14:
// [946] init_level_tile_directions::$7 = level_tile_get::return#4 -- vbuxx=vbuaa
tax
// [947] if(TILES_TYPE[init_level_tile_directions::$7]==WALL) goto init_level_tile_directions::@6 -- pbuc1_derefidx_vbuxx_eq_vbuc2_then_la1
lda TILES_TYPE,x
cmp #WALL
beq __b6_from___b14
jmp __b10
// init_level_tile_directions::@10
__b10:
// [948] init_level_tile_directions::open_directions#2 = init_level_tile_directions::open_directions#11 | RIGHT -- vbuz1=vbuz1_bor_vbuc1
lda #RIGHT
ora.z open_directions
sta.z open_directions
// [949] phi from init_level_tile_directions::@10 init_level_tile_directions::@14 to init_level_tile_directions::@6 [phi:init_level_tile_directions::@10/init_level_tile_directions::@14->init_level_tile_directions::@6]
__b6_from___b10:
__b6_from___b14:
// [949] phi init_level_tile_directions::open_directions#12 = init_level_tile_directions::open_directions#2 [phi:init_level_tile_directions::@10/init_level_tile_directions::@14->init_level_tile_directions::@6#0] -- register_copy
jmp __b6
// init_level_tile_directions::@6
__b6:
// [950] level_tile_get::ytile#2 = init_level_tile_directions::ytile#15 - 1 -- vbuaa=vbuz1_minus_1
lda.z ytile
sec
sbc #1
// [951] level_tile_get::xtile#2 = init_level_tile_directions::xtile#10 -- vbuxx=vbuz1
ldx.z xtile
// [952] call level_tile_get
// [1018] phi from init_level_tile_directions::@6 to level_tile_get [phi:init_level_tile_directions::@6->level_tile_get]
level_tile_get_from___b6:
// [1018] phi level_tile_get::ytile#4 = level_tile_get::ytile#2 [phi:init_level_tile_directions::@6->level_tile_get#0] -- register_copy
// [1018] phi level_tile_get::xtile#4 = level_tile_get::xtile#2 [phi:init_level_tile_directions::@6->level_tile_get#1] -- register_copy
jsr level_tile_get
// [953] level_tile_get::return#10 = level_tile_get::return#2
jmp __b15
// init_level_tile_directions::@15
__b15:
// [954] init_level_tile_directions::$11 = level_tile_get::return#10
// [955] if(TILES_TYPE[init_level_tile_directions::$11]==WALL) goto init_level_tile_directions::@7 -- pbuc1_derefidx_vbuaa_eq_vbuc2_then_la1
tay
lda TILES_TYPE,y
cmp #WALL
beq __b7_from___b15
jmp __b11
// init_level_tile_directions::@11
__b11:
// [956] init_level_tile_directions::open_directions#3 = init_level_tile_directions::open_directions#12 | UP -- vbuz1=vbuz1_bor_vbuc1
lda #UP
ora.z open_directions
sta.z open_directions
// [957] phi from init_level_tile_directions::@11 init_level_tile_directions::@15 to init_level_tile_directions::@7 [phi:init_level_tile_directions::@11/init_level_tile_directions::@15->init_level_tile_directions::@7]
__b7_from___b11:
__b7_from___b15:
// [957] phi init_level_tile_directions::open_directions#13 = init_level_tile_directions::open_directions#3 [phi:init_level_tile_directions::@11/init_level_tile_directions::@15->init_level_tile_directions::@7#0] -- register_copy
jmp __b7
// init_level_tile_directions::@7
__b7:
// [958] level_tile_get::ytile#3 = init_level_tile_directions::ytile#15 + 1 -- vbuaa=vbuz1_plus_1
lda.z ytile
clc
adc #1
// [959] level_tile_get::xtile#3 = init_level_tile_directions::xtile#10 -- vbuxx=vbuz1
ldx.z xtile
// [960] call level_tile_get
// [1018] phi from init_level_tile_directions::@7 to level_tile_get [phi:init_level_tile_directions::@7->level_tile_get]
level_tile_get_from___b7:
// [1018] phi level_tile_get::ytile#4 = level_tile_get::ytile#3 [phi:init_level_tile_directions::@7->level_tile_get#0] -- register_copy
// [1018] phi level_tile_get::xtile#4 = level_tile_get::xtile#3 [phi:init_level_tile_directions::@7->level_tile_get#1] -- register_copy
jsr level_tile_get
// [961] level_tile_get::return#11 = level_tile_get::return#2
jmp __b16
// init_level_tile_directions::@16
__b16:
// [962] init_level_tile_directions::$15 = level_tile_get::return#11
// [963] if(TILES_TYPE[init_level_tile_directions::$15]==WALL) goto init_level_tile_directions::@8 -- pbuc1_derefidx_vbuaa_eq_vbuc2_then_la1
tay
lda TILES_TYPE,y
cmp #WALL
beq __b8_from___b16
jmp __b12
// init_level_tile_directions::@12
__b12:
// [964] init_level_tile_directions::open_directions#4 = init_level_tile_directions::open_directions#13 | DOWN -- vbuz1=vbuz1_bor_vbuc1
lda #DOWN
ora.z open_directions
sta.z open_directions
// [965] phi from init_level_tile_directions::@12 init_level_tile_directions::@16 to init_level_tile_directions::@8 [phi:init_level_tile_directions::@12/init_level_tile_directions::@16->init_level_tile_directions::@8]
__b8_from___b12:
__b8_from___b16:
// [965] phi init_level_tile_directions::open_directions#8 = init_level_tile_directions::open_directions#4 [phi:init_level_tile_directions::@12/init_level_tile_directions::@16->init_level_tile_directions::@8#0] -- register_copy
jmp __b8
// init_level_tile_directions::@8
__b8:
// [966] init_level_tile_directions::directions#7[init_level_tile_directions::xtile#10] = init_level_tile_directions::open_directions#8 -- pbuz1_derefidx_vbuz2=vbuz3
lda.z open_directions
ldy.z xtile
sta (directions),y
// [967] init_level_tile_directions::xtile#1 = ++ init_level_tile_directions::xtile#10 -- vbuz1=_inc_vbuz1
inc.z xtile
// [930] phi from init_level_tile_directions::@8 to init_level_tile_directions::@2 [phi:init_level_tile_directions::@8->init_level_tile_directions::@2]
__b2_from___b8:
// [930] phi init_level_tile_directions::xtile#10 = init_level_tile_directions::xtile#1 [phi:init_level_tile_directions::@8->init_level_tile_directions::@2#0] -- register_copy
jmp __b2
}
// level_show
// Show the level by rendering all tiles
// Returns the number of pills on the level
level_show: {
.label return = 9
.label level = 7
.label ytile = $10
.label tile_right = 2
.label xtile = $13
.label count = 9
.label xcol = $f
// [969] phi from level_show to level_show::@1 [phi:level_show->level_show::@1]
__b1_from_level_show:
// [969] phi level_show::level#8 = LEVEL_TILES [phi:level_show->level_show::@1#0] -- pbuz1=pbuc1
lda #<LEVEL_TILES
sta.z level
lda #>LEVEL_TILES
sta.z level+1
// [969] phi level_show::count#12 = 0 [phi:level_show->level_show::@1#1] -- vwuz1=vwuc1
lda #<0
sta.z count
lda #>0
sta.z count+1
// [969] phi level_show::ytile#2 = 0 [phi:level_show->level_show::@1#2] -- vbuz1=vbuc1
lda #0
sta.z ytile
jmp __b1
// level_show::@1
__b1:
// [970] if(level_show::ytile#2<$25) goto level_show::@2 -- vbuz1_lt_vbuc1_then_la1
lda.z ytile
cmp #$25
bcc __b2_from___b1
jmp __breturn
// level_show::@return
__breturn:
// [971] return
rts
// [972] phi from level_show::@1 to level_show::@2 [phi:level_show::@1->level_show::@2]
__b2_from___b1:
// [972] phi level_show::count#10 = level_show::count#12 [phi:level_show::@1->level_show::@2#0] -- register_copy
// [972] phi level_show::xtile#3 = 0 [phi:level_show::@1->level_show::@2#1] -- vbuz1=vbuc1
lda #0
sta.z xtile
// [972] phi level_show::xcol#2 = 0 [phi:level_show::@1->level_show::@2#2] -- vbuz1=vbuc1
lda #0
sta.z xcol
jmp __b2
// level_show::@2
__b2:
// [973] if(level_show::xcol#2<$19) goto level_show::@3 -- vbuz1_lt_vbuc1_then_la1
lda.z xcol
cmp #$19
bcc __b3
jmp __b4
// level_show::@4
__b4:
// [974] level_show::level#1 = level_show::level#8 + $40 -- pbuz1=pbuz1_plus_vbuc1
lda #$40
clc
adc.z level
sta.z level
bcc !+
inc.z level+1
!:
// [975] level_show::ytile#1 = ++ level_show::ytile#2 -- vbuz1=_inc_vbuz1
inc.z ytile
// [969] phi from level_show::@4 to level_show::@1 [phi:level_show::@4->level_show::@1]
__b1_from___b4:
// [969] phi level_show::level#8 = level_show::level#1 [phi:level_show::@4->level_show::@1#0] -- register_copy
// [969] phi level_show::count#12 = level_show::count#10 [phi:level_show::@4->level_show::@1#1] -- register_copy
// [969] phi level_show::ytile#2 = level_show::ytile#1 [phi:level_show::@4->level_show::@1#2] -- register_copy
jmp __b1
// level_show::@3
__b3:
// [976] level_show::tile_left#0 = level_show::level#8[level_show::xtile#3] -- vbuxx=pbuz1_derefidx_vbuz2
ldy.z xtile
lda (level),y
tax
// [977] level_show::xtile#1 = ++ level_show::xtile#3 -- vbuyy=_inc_vbuz1
ldy.z xtile
iny
// [978] if(TILES_TYPE[level_show::tile_left#0]!=PILL) goto level_show::@5 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1
lda TILES_TYPE,x
cmp #PILL
bne __b5_from___b3
jmp __b7
// level_show::@7
__b7:
// [979] level_show::count#1 = ++ level_show::count#10 -- vwuz1=_inc_vwuz1
inc.z count
bne !+
inc.z count+1
!:
// [980] phi from level_show::@3 level_show::@7 to level_show::@5 [phi:level_show::@3/level_show::@7->level_show::@5]
__b5_from___b3:
__b5_from___b7:
// [980] phi level_show::count#5 = level_show::count#10 [phi:level_show::@3/level_show::@7->level_show::@5#0] -- register_copy
jmp __b5
// level_show::@5
__b5:
// [981] level_show::tile_right#0 = level_show::level#8[level_show::xtile#1] -- vbuz1=pbuz2_derefidx_vbuyy
lda (level),y
sta.z tile_right
// [982] level_show::xtile#2 = ++ level_show::xtile#1 -- vbuz1=_inc_vbuyy
iny
sty.z xtile
// [983] if(TILES_TYPE[level_show::tile_right#0]!=PILL) goto level_show::@6 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
lda #PILL
ldy.z tile_right
cmp TILES_TYPE,y
bne __b6_from___b5
jmp __b8
// level_show::@8
__b8:
// [984] level_show::count#2 = ++ level_show::count#5 -- vwuz1=_inc_vwuz1
inc.z count
bne !+
inc.z count+1
!:
// [985] phi from level_show::@5 level_show::@8 to level_show::@6 [phi:level_show::@5/level_show::@8->level_show::@6]
__b6_from___b5:
__b6_from___b8:
// [985] phi level_show::count#11 = level_show::count#5 [phi:level_show::@5/level_show::@8->level_show::@6#0] -- register_copy
jmp __b6
// level_show::@6
__b6:
// [986] render_tiles::xcol#0 = level_show::xcol#2
// [987] render_tiles::ytile#0 = level_show::ytile#2
// [988] render_tiles::tile_left#0 = level_show::tile_left#0
// [989] render_tiles::tile_right#0 = level_show::tile_right#0 -- vbuyy=vbuz1
ldy.z tile_right
// [990] call render_tiles
jsr render_tiles
jmp __b9
// level_show::@9
__b9:
// [991] level_show::xcol#1 = ++ level_show::xcol#2 -- vbuz1=_inc_vbuz1
inc.z xcol
// [972] phi from level_show::@9 to level_show::@2 [phi:level_show::@9->level_show::@2]
__b2_from___b9:
// [972] phi level_show::count#10 = level_show::count#11 [phi:level_show::@9->level_show::@2#0] -- register_copy
// [972] phi level_show::xtile#3 = level_show::xtile#2 [phi:level_show::@9->level_show::@2#1] -- register_copy
// [972] phi level_show::xcol#2 = level_show::xcol#1 [phi:level_show::@9->level_show::@2#2] -- register_copy
jmp __b2
}
// pacman_sound_init
// Sound effects for pacman
pacman_sound_init: {
// [992] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE) = $f -- _deref_pbuc1=vbuc2
// Set master volume
lda #$f
sta SID+OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE
// [993] *((unsigned int *)SID) = 0 -- _deref_pwuc1=vbuc2
// Channel 1 is Pacman eating sound
lda #<0
sta SID
lda #>0
sta SID+1
// [994] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH) = 0 -- _deref_pwuc1=vbuc2
lda #<0
sta SID+OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH
lda #>0
sta SID+OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH+1
// [995] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = 0 -- _deref_pbuc1=vbuc2
lda #0
sta SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL
// [996] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY) = 0 -- _deref_pbuc1=vbuc2
lda #0
sta SID+OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY
// [997] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE) = $f0 -- _deref_pbuc1=vbuc2
lda #$f0
sta SID+OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE
jmp __breturn
// pacman_sound_init::@return
__breturn:
// [998] return
rts
}
// render
// Render graphic pixels into the 9 all-border sprites
// - xcol: x column (0-24). The x-column represents 8 bits of data, 4 mc pixels, 16 on-screen pixels (due to x-expanded sprites)
// - ypos: y position (0-145). The y-position is a line on the screen. Since every second line is black each ypos represents a 2 pixel distance.
// - pixels: The pixel data to set
// void render(__zp($14) char xcol, __zp($10) char ypos, __zp($13) char pixels)
render: {
.label render_index_xcol = $d
.label canvas_offset = 9
.label canvas1 = 7
.label canvas2 = 9
.label ypix = 2
.label xcol = $14
.label ypos = $10
.label pixels = $13
// [1000] render::ytile#0 = render::ypos#2 >> 2 -- vbuyy=vbuz1_ror_2
lda.z ypos
lsr
lsr
tay
// [1001] render::$1 = byte1 RENDER_INDEX + render::xcol#2 -- vbuxx=vbuc1_plus_vbuz1
lax.z xcol
axs #-[>RENDER_INDEX]
// [1002] render::$2 = render::ytile#0 << 1 -- vbuaa=vbuyy_rol_1
tya
asl
// [1003] render::render_index_xcol#0 = render::$1 w= render::$2 -- vwuz1=vbuxx_word_vbuaa
stx.z render_index_xcol+1
sta.z render_index_xcol
// [1004] render::canvas_offset#0 = ((char *)render::render_index_xcol#0)[RENDER_OFFSET_CANVAS_HI] w= *((char *)render::render_index_xcol#0) -- vwuz1=pbuz2_derefidx_vbuc1_word__deref_pbuz2
ldy #RENDER_OFFSET_CANVAS_HI
lda (render_index_xcol),y
sta.z canvas_offset+1
ldy #0
lda (render_index_xcol),y
sta.z canvas_offset
// [1005] render::canvas1#0 = SPRITES_1 + render::canvas_offset#0 -- pbuz1=pbuc1_plus_vwuz2
lda.z canvas_offset
clc
adc #<SPRITES_1
sta.z canvas1
lda.z canvas_offset+1
adc #>SPRITES_1
sta.z canvas1+1
// [1006] render::canvas2#0 = SPRITES_2 + render::canvas_offset#0 -- pbuz1=pbuc1_plus_vwuz1
lda.z canvas2
clc
adc #<SPRITES_2
sta.z canvas2
lda.z canvas2+1
adc #>SPRITES_2
sta.z canvas2+1
// [1007] render::ypos_inc_offset#0 = ((char *)render::render_index_xcol#0)[RENDER_OFFSET_YPOS_INC] -- vbuxx=pbuz1_derefidx_vbuc1
ldy #RENDER_OFFSET_YPOS_INC
lda (render_index_xcol),y
tax
// [1008] render::ypix#0 = render::ypos#2 & 3 -- vbuz1=vbuz2_band_vbuc1
// Move the last few y-pixels
lda #3
and.z ypos
sta.z ypix
// [1009] phi from render to render::@1 [phi:render->render::@1]
__b1_from_render:
// [1009] phi render::canvas2#2 = render::canvas2#0 [phi:render->render::@1#0] -- register_copy
// [1009] phi render::ypos_inc_offset#2 = render::ypos_inc_offset#0 [phi:render->render::@1#1] -- register_copy
// [1009] phi render::canvas1#2 = render::canvas1#0 [phi:render->render::@1#2] -- register_copy
// [1009] phi render::i#2 = 0 [phi:render->render::@1#3] -- vbuyy=vbuc1
ldy #0
jmp __b1
// render::@1
__b1:
// [1010] if(render::i#2<render::ypix#0) goto render::@2 -- vbuyy_lt_vbuz1_then_la1
cpy.z ypix
bcc __b2
jmp __b3
// render::@3
__b3:
// [1011] *render::canvas1#2 = render::pixels#4 -- _deref_pbuz1=vbuz2
// Render the pixels
lda.z pixels
ldy #0
sta (canvas1),y
// [1012] *render::canvas2#2 = render::pixels#4 -- _deref_pbuz1=vbuz2
lda.z pixels
ldy #0
sta (canvas2),y
jmp __breturn
// render::@return
__breturn:
// [1013] return
rts
// render::@2
__b2:
// [1014] render::canvas1#1 = render::canvas1#2 + RENDER_YPOS_INC[render::ypos_inc_offset#2] -- pbuz1=pbuz1_plus_pbuc1_derefidx_vbuxx
lda RENDER_YPOS_INC,x
clc
adc.z canvas1
sta.z canvas1
bcc !+
inc.z canvas1+1
!:
// [1015] render::canvas2#1 = render::canvas2#2 + RENDER_YPOS_INC[render::ypos_inc_offset#2] -- pbuz1=pbuz1_plus_pbuc1_derefidx_vbuxx
lda RENDER_YPOS_INC,x
clc
adc.z canvas2
sta.z canvas2
bcc !+
inc.z canvas2+1
!:
// [1016] render::ypos_inc_offset#1 = ++ render::ypos_inc_offset#2 -- vbuxx=_inc_vbuxx
inx
// [1017] render::i#1 = ++ render::i#2 -- vbuyy=_inc_vbuyy
iny
// [1009] phi from render::@2 to render::@1 [phi:render::@2->render::@1]
__b1_from___b2:
// [1009] phi render::canvas2#2 = render::canvas2#1 [phi:render::@2->render::@1#0] -- register_copy
// [1009] phi render::ypos_inc_offset#2 = render::ypos_inc_offset#1 [phi:render::@2->render::@1#1] -- register_copy
// [1009] phi render::canvas1#2 = render::canvas1#1 [phi:render::@2->render::@1#2] -- register_copy
// [1009] phi render::i#2 = render::i#1 [phi:render::@2->render::@1#3] -- register_copy
jmp __b1
}
// level_tile_get
// Get the level tile at a given (xtile, ytile) position
// Returns the TILE ID
// If xtile of ytile is outside the legal range the empty tile (0) is returned
// __register(A) char level_tile_get(__register(X) char xtile, __register(A) char ytile)
level_tile_get: {
.label ytiles = $d
// [1019] if(level_tile_get::xtile#4>=$31+1) goto level_tile_get::@return -- vbuxx_ge_vbuc1_then_la1
cpx #$31+1
bcs __breturn_from_level_tile_get
jmp __b2
// level_tile_get::@2
__b2:
// [1020] if(level_tile_get::ytile#4>=$24+1) goto level_tile_get::@return -- vbuaa_ge_vbuc1_then_la1
cmp #$24+1
bcs __breturn_from___b2
jmp __b1
// level_tile_get::@1
__b1:
// [1021] level_tile_get::$5 = level_tile_get::ytile#4 << 1 -- vbuaa=vbuaa_rol_1
asl
// [1022] level_tile_get::ytiles#0 = LEVEL_TILES + LEVEL_YTILE_OFFSET[level_tile_get::$5] -- pbuz1=pbuc1_plus_pwuc2_derefidx_vbuaa
tay
clc
lda #<LEVEL_TILES
adc LEVEL_YTILE_OFFSET,y
sta.z ytiles
lda #>LEVEL_TILES
adc LEVEL_YTILE_OFFSET+1,y
sta.z ytiles+1
// [1023] level_tile_get::return#0 = level_tile_get::ytiles#0[level_tile_get::xtile#4] -- vbuaa=pbuz1_derefidx_vbuxx
txa
tay
lda (ytiles),y
// [1024] phi from level_tile_get::@1 to level_tile_get::@return [phi:level_tile_get::@1->level_tile_get::@return]
__breturn_from___b1:
// [1024] phi level_tile_get::return#2 = level_tile_get::return#0 [phi:level_tile_get::@1->level_tile_get::@return#0] -- register_copy
jmp __breturn
// [1024] phi from level_tile_get level_tile_get::@2 to level_tile_get::@return [phi:level_tile_get/level_tile_get::@2->level_tile_get::@return]
__breturn_from_level_tile_get:
__breturn_from___b2:
// [1024] phi level_tile_get::return#2 = 0 [phi:level_tile_get/level_tile_get::@2->level_tile_get::@return#0] -- vbuaa=vbuc1
lda #0
jmp __breturn
// level_tile_get::@return
__breturn:
// [1025] return
rts
}
// render_tiles
// Renders 2x1 tiles on the canvas.
// Tiles are 4x4 px. This renders 8px x 4px.
// - xcol: The x column position (0-24) (a column is 8 pixels)
// - ytile: The y tile position (0-37). Tile y position 0 is a special half-tile at the top of the screen.
// - tile_left: The left tile ID.
// - tile_right: The right tile ID.
// void render_tiles(__zp($f) char xcol, __zp($10) char ytile, __register(X) char tile_left, __register(Y) char tile_right)
render_tiles: {
.label tile_left_pixels = $d
.label tile_right_pixels = $b
.label render_index_xcol = $11
.label canvas_offset = 3
.label canvas1 = 5
.label canvas2 = 3
.label y = 2
.label xcol = $f
.label ytile = $10
// [1026] render_tiles::$0 = render_tiles::tile_left#0 << 2 -- vbuaa=vbuxx_rol_2
txa
asl
asl
// [1027] render_tiles::tile_left_pixels#0 = TILES_LEFT + render_tiles::$0 -- pbuz1=pbuc1_plus_vbuaa
clc
adc #<TILES_LEFT
sta.z tile_left_pixels
lda #>TILES_LEFT
adc #0
sta.z tile_left_pixels+1
// [1028] render_tiles::$2 = render_tiles::tile_right#0 << 2 -- vbuaa=vbuyy_rol_2
tya
asl
asl
// [1029] render_tiles::tile_right_pixels#0 = TILES_RIGHT + render_tiles::$2 -- pbuz1=pbuc1_plus_vbuaa
clc
adc #<TILES_RIGHT
sta.z tile_right_pixels
lda #>TILES_RIGHT
adc #0
sta.z tile_right_pixels+1
// [1030] render_tiles::$4 = byte1 RENDER_INDEX + render_tiles::xcol#0 -- vbuxx=vbuc1_plus_vbuz1
lax.z xcol
axs #-[>RENDER_INDEX]
// [1031] render_tiles::$5 = render_tiles::ytile#0 << 1 -- vbuaa=vbuz1_rol_1
lda.z ytile
asl
// [1032] render_tiles::render_index_xcol#0 = render_tiles::$4 w= render_tiles::$5 -- vwuz1=vbuxx_word_vbuaa
stx.z render_index_xcol+1
sta.z render_index_xcol
// [1033] render_tiles::canvas_offset#0 = ((char *)render_tiles::render_index_xcol#0)[RENDER_OFFSET_CANVAS_HI] w= *((char *)render_tiles::render_index_xcol#0) -- vwuz1=pbuz2_derefidx_vbuc1_word__deref_pbuz2
ldy #RENDER_OFFSET_CANVAS_HI
lda (render_index_xcol),y
sta.z canvas_offset+1
ldy #0
lda (render_index_xcol),y
sta.z canvas_offset
// [1034] render_tiles::canvas1#0 = SPRITES_1 + render_tiles::canvas_offset#0 -- pbuz1=pbuc1_plus_vwuz2
lda.z canvas_offset
clc
adc #<SPRITES_1
sta.z canvas1
lda.z canvas_offset+1
adc #>SPRITES_1
sta.z canvas1+1
// [1035] render_tiles::canvas2#0 = SPRITES_2 + render_tiles::canvas_offset#0 -- pbuz1=pbuc1_plus_vwuz1
lda.z canvas2
clc
adc #<SPRITES_2
sta.z canvas2
lda.z canvas2+1
adc #>SPRITES_2
sta.z canvas2+1
// [1036] render_tiles::ypos_inc_offset#0 = ((char *)render_tiles::render_index_xcol#0)[RENDER_OFFSET_YPOS_INC] -- vbuxx=pbuz1_derefidx_vbuc1
ldy #RENDER_OFFSET_YPOS_INC
lda (render_index_xcol),y
tax
// [1037] phi from render_tiles to render_tiles::@1 [phi:render_tiles->render_tiles::@1]
__b1_from_render_tiles:
// [1037] phi render_tiles::ypos_inc_offset#2 = render_tiles::ypos_inc_offset#0 [phi:render_tiles->render_tiles::@1#0] -- register_copy
// [1037] phi render_tiles::canvas2#2 = render_tiles::canvas2#0 [phi:render_tiles->render_tiles::@1#1] -- register_copy
// [1037] phi render_tiles::canvas1#2 = render_tiles::canvas1#0 [phi:render_tiles->render_tiles::@1#2] -- register_copy
// [1037] phi render_tiles::y#2 = 0 [phi:render_tiles->render_tiles::@1#3] -- vbuz1=vbuc1
lda #0
sta.z y
jmp __b1
// render_tiles::@1
__b1:
// [1038] if(render_tiles::y#2<4) goto render_tiles::@2 -- vbuz1_lt_vbuc1_then_la1
lda.z y
cmp #4
bcc __b2
jmp __breturn
// render_tiles::@return
__breturn:
// [1039] return
rts
// render_tiles::@2
__b2:
// [1040] render_tiles::pixels#0 = render_tiles::tile_left_pixels#0[render_tiles::y#2] | render_tiles::tile_right_pixels#0[render_tiles::y#2] -- vbuaa=pbuz1_derefidx_vbuz2_bor_pbuz3_derefidx_vbuz2
ldy.z y
lda (tile_left_pixels),y
ora (tile_right_pixels),y
// [1041] *render_tiles::canvas1#2 = render_tiles::pixels#0 -- _deref_pbuz1=vbuaa
ldy #0
sta (canvas1),y
// [1042] *render_tiles::canvas2#2 = render_tiles::pixels#0 -- _deref_pbuz1=vbuaa
ldy #0
sta (canvas2),y
// [1043] render_tiles::canvas1#1 = render_tiles::canvas1#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2] -- pbuz1=pbuz1_plus_pbuc1_derefidx_vbuxx
lda RENDER_YPOS_INC,x
clc
adc.z canvas1
sta.z canvas1
bcc !+
inc.z canvas1+1
!:
// [1044] render_tiles::canvas2#1 = render_tiles::canvas2#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2] -- pbuz1=pbuz1_plus_pbuc1_derefidx_vbuxx
lda RENDER_YPOS_INC,x
clc
adc.z canvas2
sta.z canvas2
bcc !+
inc.z canvas2+1
!:
// [1045] render_tiles::ypos_inc_offset#1 = ++ render_tiles::ypos_inc_offset#2 -- vbuxx=_inc_vbuxx
inx
// [1046] render_tiles::y#1 = ++ render_tiles::y#2 -- vbuz1=_inc_vbuz1
inc.z y
// [1037] phi from render_tiles::@2 to render_tiles::@1 [phi:render_tiles::@2->render_tiles::@1]
__b1_from___b2:
// [1037] phi render_tiles::ypos_inc_offset#2 = render_tiles::ypos_inc_offset#1 [phi:render_tiles::@2->render_tiles::@1#0] -- register_copy
// [1037] phi render_tiles::canvas2#2 = render_tiles::canvas2#1 [phi:render_tiles::@2->render_tiles::@1#1] -- register_copy
// [1037] phi render_tiles::canvas1#2 = render_tiles::canvas1#1 [phi:render_tiles::@2->render_tiles::@1#2] -- register_copy
// [1037] phi render_tiles::y#2 = render_tiles::y#1 [phi:render_tiles::@2->render_tiles::@1#3] -- register_copy
jmp __b1
}
// File Data
.segment Data
// The byteboozer decruncher
BYTEBOOZER:
.const B2_ZP_BASE = $fc
#import "byteboozer_decrunch.asm"
// Pacman eating sound
PACMAN_CH1_FREQ_HI: .byte $23, $1d, $1a, $17, $15, $12, 0, 0, 0, 0, 0, $19, $1a, $1c, $1d, $20, $23, 0, 0, 0, 0, 0
PACMAN_CH1_CONTROL: .byte $21, $21, $21, $21, $21, $21, 0, 0, 0, 0, 0, $21, $21, $21, $21, $21, $21, 0, 0, 0, 0, 0
// Address of the first pixel each x column
RENDER_XCOLS: .word 0, 1, 2, $400, $401, $402, $800, $801, $802, $c00, $c01, $c02, $1000, $1001, $1002, $1400, $1401, $1402, $1800, $1801, $1802, $1c00, $1c01, $1c02, 0, 0
// Offset for each y-position from the first pixel of an X column
RENDER_YPOS: .word 0, 0, 0, 6, $c, $12, $18, $1e, $24, $2a, $30, $36, $3c, $40+3, $40+9, $40+$f, $40+$15, $40+$1b, $40+$21, $40+$27, $40+$2d, $40+$33, $40+$39, $80, $80+6, $80+$c, $80+$12, $80+$18, $80+$1e, $80+$24, $80+$2a, $80+$30, $80+$36, $80+$3c, $c0+3, $c0+9, $c0+$f, $c0+$15, $c0+$1b, $c0+$21, $c0+$27, $c0+$2d, $c0+$33, $c0+$39, $100, $100+6, $100+$c, $100+$12, $100+$18, $100+$1e, $100+$24, $100+$2a, $100+$30, $100+$36, $100+$3c, $140+3, $140+9, $140+$f, $140+$15, $140+$1b, $140+$21, $140+$27, $140+$2d, $140+$33, $140+$39, $180, $180+6, $180+$c, $180+$12, $180+$18, $180+$1e, $180+$24, $180+$2a, $180+$30, $180+$36, $180+$3c, $1c0+3, $1c0+9, $1c0+$f, $1c0+$15, $1c0+$1b, $1c0+$21, $1c0+$27, $1c0+$2d, $1c0+$33, $1c0+$39, $200, $200+6, $200+$c, $200+$12, $200+$18, $200+$1e, $200+$24, $200+$2a, $200+$30, $200+$36, $200+$3c, $240+3, $240+9, $240+$f, $240+$15, $240+$1b, $240+$21, $240+$27, $240+$2d, $240+$33, $240+$39, $280, $280+6, $280+$c, $280+$12, $280+$18, $280+$1e, $280+$24, $280+$2a, $280+$30, $280+$36, $280+$3c, $2c0+3, $2c0+9, $2c0+$f, $2c0+$15, $2c0+$1b, $2c0+$21, $2c0+$27, $2c0+$2d, $2c0+$33, $2c0+$39, $300, $300+6, $300+$c, $300+$12, $300+$18, $300+$1e, $300+$24, $300+$2a, $300+$30, $300+$36, $300+$3c, $340+3, $340+9, $340+$f, $340+$15, $340+$1b, $340+$21, $340+$27, $340+$2d, $340+$33, $340+$39
// Offset for each y-position from the first pixel of an X column in sprite#9
RENDER_YPOS_9TH: .word 3, 3, 3, 9, $f, $15, $1b, $21, $27, $2d, $33, $39, $40, $40+6, $40+$c, $40+$12, $40+$18, $40+$1e, $40+$24, $40+$2a, $40+$30, $40+$36, $40+$3c, $80+3, $80+9, $80+$f, $80+$15, $80+$1b, $80+$21, $80+$27, $80+$2d, $80+$33, $80+$39, $c0, $c0+6, $c0+$c, $c0+$12, $c0+$18, $c0+$1e, $c0+$24, $c0+$2a, $c0+$30, $c0+$36, $c0+$3c, $100+3, $100+9, $100+$f, $100+$15, $100+$1b, $100+$21, $100+$27, $100+$2d, $100+$33, $100+$39, $140, $140+6, $140+$c, $140+$12, $140+$18, $140+$1e, $140+$24, $140+$2a, $140+$30, $140+$36, $140+$3c, $180+3, $180+9, $180+$f, $180+$15, $180+$1b, $180+$21, $180+$27, $180+$2d, $180+$33, $180+$39, $1c0, $1c0+6, $1c0+$c, $1c0+$12, $1c0+$18, $1c0+$1e, $1c0+$24, $1c0+$2a, $1c0+$30, $1c0+$36, $1c0+$3c, $200+3, $200+9, $200+$f, $200+$15, $200+$1b, $200+$21, $200+$27, $200+$2d, $200+$33, $200+$39, $240, $240+6, $240+$c, $240+$12, $240+$18, $240+$1e, $240+$24, $240+$2a, $240+$30, $240+$36, $240+$3c, $280+3, $280+9, $280+$f, $280+$15, $280+$1b, $280+$21, $280+$27, $280+$2d, $280+$33, $280+$39, $2c0, $2c0+6, $2c0+$c, $2c0+$12, $2c0+$18, $2c0+$1e, $2c0+$24, $2c0+$2a, $2c0+$30, $2c0+$36, $2c0+$3c, $300+3, $300+9, $300+$f, $300+$15, $300+$1b, $300+$21, $300+$27, $300+$2d, $300+$33, $300+$39, $340, $340+6, $340+$c, $340+$12, $340+$18, $340+$1e, $340+$24, $340+$2a, $340+$30, $340+$36, $340+$3c
// Increment for each y-position from the first pixel of an X column
.align $20
RENDER_YPOS_INC: .byte 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7
// The BOB x column position (0-24) (a column is 8 pixels)
bobs_xcol: .byte $a, $a, $a, $a, $a
// The BOB y fine position (0-99). The y-position is a line on the screen. Since every second line is black each ypos represents a 2 pixel distance.
bobs_yfine: .byte $2d, $2d, $2d, $2d, $2d
// The BOB ID in the BOB data tables
bobs_bob_id: .byte 0, 0, 0, 0, 0
// The BOB restore data: 18 bytes per BOB. Doubled for double-buffering.
// char * left_canvas;
// char left_ypos_inc_offset;
// char * right_canvas;
// char right_ypos_inc_offset;
// char[12] restore_pixels;
.align $100
bobs_restore: .fill NUM_BOBS*SIZE_BOB_RESTORE*2, 0
.segment Init
// The level represented as 4x4 px tiles. Each byte is the ID of a tile from the tile set.
// The level is 50 tiles * 37 tiles. The first tile line are special half-tiles (where only the last 2 pixel rows are shown).
// The level data is organized as 37 rows of 50 tile IDs.
LEVEL_TILES_CRUNCHED:
.modify B2() {
.pc = LEVEL_TILES "LEVEL TILE GRAPHICS"
.var pic_level = LoadPicture("pacman-tiled.png", List().add($000000, $352879, $bfce72, $883932))
// Maps the tile pixels (a 16 bit number) to the tile ID
.var TILESET = Hashtable()
// Maps the tile ID to the pixels (a 16 bit number)
.var TILESET_BY_ID = Hashtable()
// Tile ID 0 is empty
.eval TILESET.put(0, 0)
.eval TILESET_BY_ID.put(0, 0)
.align $100
// TABLE LEVEL_TILES[64*37]
// The level is 50 tiles * 37 tiles. The first tile line are special half-tiles (where only the last 2 pixel rows are shown).
// The level data is organized as 37 rows of 64 bytes containing tile IDs. (the last 14 are unused to achieve 64-byte alignment)
.for(var ytile=0; ytile<37; ytile++) {
.for(var xtile=0; xtile<50; xtile++) {
// Find the tile pixels (4x4 px - 16 bits)
.var pixels = 0;
.for(var i=0; i<4; i++) {
.var pix = pic_level.getMulticolorByte(xtile/2,ytile*4+i)
.if((xtile&1)==0) {
// left nibble
.eval pix = floor(pix / $10)
} else {
// right nibble
.eval pix = pix & $0f
}
.eval pixels = pixels*$10 + pix
}
.var tile_id = 0
.if(TILESET.containsKey(pixels)) {
.eval tile_id = TILESET.get(pixels)
} else {
.eval tile_id = TILESET.keys().size()
.eval TILESET.put(pixels, tile_id)
.eval TILESET_BY_ID.put(tile_id, pixels)
// .print "tile "+tile_id+" : "+toHexString(pixels,4)
}
// Output the tile ID
.byte tile_id
}
.fill 14, 0
}
.align $100
// TABLE char TILES_LEFT[0x80]
// The left tile graphics. A tile is 4x4 px. The left tiles contain tile graphics for the 4 left bits of a char. Each tile is 4 bytes.
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
.byte pix<<4
.eval pixels = pixels << 4
}
}
.align $80
// TABLE char TILES_RIGHT[0x80]
// The right tile graphics. A tile is 4x4 px. The right tiles contain tile graphics for the 4 right bits of a char. Each tile is 4 bytes.
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
.byte pix
.eval pixels = pixels << 4
}
}
.align $80
// TABLE char TILES_TYPE[0x20]
// 0: empty (all black), 1:pill, 2:powerup, 4: wall (contains blue pixels)
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.var tile_type = 0
.if(pixels==$0220) .eval tile_type=1 // 1:pill
.if(pixels==$aaaa) .eval tile_type=2 // 2:powerup
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
// Detect wall - any blue pixels (%01)
.if( (pix&%0100)==%0100) .eval tile_type = 4; // 4:wall
.if( (pix&%0001)==%0001) .eval tile_type = 4; // 4:wall
.eval pixels = pixels << 4
}
.byte tile_type
//.print "tile "+tile_id+" gfx "+toHexString(TILESET_BY_ID.get(tile_id),4) + " type "+tile_type
}
}
// BOB data: One table per bob byte (left/right, mask/pixels = 4 tables). The index into the table is the bob_id + row*BOB_ROW_SIZE.
BOB_GRAPHICS_CRUNCHED:
.modify B2() {
.pc = BOB_MASK_LEFT "BOB GRAPHICS TABLES"
.var bobs_pic = LoadPicture("pacman-bobs.png", List().add($000000, $352879, $bfce72, $883932))
// TABLE char BOB_MASK_LEFT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,48+scroll*6+row)
}
// TABLE char BOB_MASK_RIGT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,24+scroll*6+row)
.for(var blue=0; blue<8;blue++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,48+scroll*6+row)
}
// TABLE char BOB_PIXEL_LEFT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+pac*2,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+ghost*2,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+ghost*2,48+scroll*6+row)
}
// TABLE char BOB_PIXEL_RIGT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+pac*2,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+ghost*2,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+ghost*2,48+scroll*6+row)
}
}
// Splash screen 25 xcol * 147 ypos bytes
SPLASH_CRUNCHED:
.modify B2() {
.pc = SPLASH "SPLASH SCREEN" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_splash_mc = LoadPicture("pacman-splash.png", List().add($000000, $352879, $bfce72, $883932))
// 0:BLACK, 1:YELLOW
.var pic_splash_yellow = LoadPicture("pacman-splash.png", List().add($000000, $bfce72))
// 0:BLACK, 1:BLUE
.var pic_splash_blue = LoadPicture("pacman-splash.png", List().add($000000, $352879))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<147; ypos++) {
.if(ypos>25 && ypos<123) {
// Sprites in the sides are in single color blue on splash screen
.byte pic_splash_blue.getSinglecolorByte(xcol,ypos)
} else .if(xcol>2 && xcol<21) {
// Sprites 2-7 are in single color yellow on splash screen
.byte pic_splash_yellow.getSinglecolorByte(xcol,ypos)
} else {
// Sprites 0&1 are in multi color on splash screen
.byte pic_splash_mc.getMulticolorByte(xcol,ypos)
}
}
}
}
// Victory graphics 25 xcol * 25 ypos bytes
WIN_GFX_CRUNCHED:
.modify B2() {
.pc = WIN_GFX "WIN GRAPHICS" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_win = LoadPicture("pacman-win.png", List().add($000000, $352879, $bfce72, $883932))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<25; ypos++) {
.byte pic_win.getMulticolorByte(xcol,ypos)
}
}
}
// Game Over graphics 25 xcol * 25 ypos bytes
GAMEOVER_GFX_CRUNCHED:
.modify B2() {
.pc = GAMEOVER_GFX "GAMEOVER GRAPHICS" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_gameover = LoadPicture("pacman-gameover.png", List().add($000000, $352879, $bfce72, $883932))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<25; ypos++) {
.byte pic_gameover.getMulticolorByte(xcol,ypos)
}
}
}
// Renders the BOBs at the given positions
// The bob logic code will be merged with raster code using code-merger.c
// First restores the canvas from previously rendered bobs, and then renders the bobs at the given positions.
// BOBs are 16px*6px graphics (2 x-columns * 6px) with masks and pixels
// Uses the bobs_xcol, bobs_yfine, bobs_bob_id and bob_restore for data about the bobs
// Implemented in inline kick assembler
LOGIC_CODE_CRUNCHED:
.macro LOGIC_BEGIN(cycles) {
.byte cycles
}
.macro LOGIC_END() {
.byte $ff
}
.modify B2() {
.pc = LOGIC_CODE_UNMERGED "LOGIC CODE UNMERGED"
LOGIC_BEGIN(2)
clc
LOGIC_END()
// ******************************************
// Restores the canvas under the rendered bobs
// ******************************************
.for(var bob=NUM_BOBS-1;bob>=0; bob--) {
//LOGIC_BEGIN(6)
//inc $d021
//LOGIC_END()
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
// char * volatile left_canvas = *((char**)&bob_restore[0]);
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+0,x
sta.z left_canvas
LOGIC_END()
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+1,x
sta.z left_canvas+1
LOGIC_END()
// char left_ypos_inc_offset = bob_restore[2];
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+2,x
sta.z left_ypos_inc_offset
LOGIC_END()
// char * volatile rigt_canvas = *((char**)&bob_restore[3]);
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+3,x
sta.z rigt_canvas
LOGIC_END()
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+4,x
sta.z rigt_canvas+1
LOGIC_END()
// char rigt_ypos_inc_offset = bob_restore[5];
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+5,x
sta.z rigt_ypos_inc_offset
LOGIC_END()
// Restore Bob Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<6;row++) {
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
//rigt_canvas += RENDER_YPOS_INC[rigt_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(5)
inc.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z rigt_canvas
sta.z rigt_canvas
lda.z rigt_canvas+1
adc #0
sta.z rigt_canvas+1
LOGIC_END()
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
// *left_canvas = bob_restore[6] ;
LOGIC_BEGIN(10)
lda bobs_restore+SIZE_BOB_RESTORE*bob+6+row,x
sta (left_canvas),y
LOGIC_END()
// *rigt_canvas = bob_restore[7];
LOGIC_BEGIN(10)
lda bobs_restore+SIZE_BOB_RESTORE*bob+12+row,x
sta (rigt_canvas),y
LOGIC_END()
}
}
// ******************************************
// Render two tiles on the canvas
// ******************************************
// y==0 from bob restore
LOGIC_BEGIN(12)
// char tile_left_idx = 4 * logic_tile_ptr[0];
lda (logic_tile_ptr),y
asl
asl
sta logic_tile_left_idx
LOGIC_END()
// char logic_tile_right_idx = 4 * logic_tile_ptr[1];
LOGIC_BEGIN(2)
iny
LOGIC_END()
LOGIC_BEGIN(12)
lda (logic_tile_ptr),y
asl
asl
sta logic_tile_right_idx
LOGIC_END()
// char * render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, ytile*2 };
LOGIC_BEGIN(8)
lda #>RENDER_INDEX
adc logic_tile_xcol
sta.z left_render_index_xcol+1
LOGIC_END()
LOGIC_BEGIN(6)
lda logic_tile_yfine
sta.z left_render_index_xcol
LOGIC_END()
// unsigned int canvas_offset = {render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] };
// char * left_canvas = canvas_base_hi*$100 + canvas_offset;
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_LO
LOGIC_END()
LOGIC_BEGIN(8)
lda (left_render_index_xcol),y
sta.z left_canvas
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_HI
LOGIC_END()
LOGIC_BEGIN(11)
lda (left_render_index_xcol),y
adc canvas_base_hi
sta.z left_canvas+1
LOGIC_END()
// char left_ypos_inc_offset = render_index_xcol[RENDER_OFFSET_YPOS_INC];
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_YPOS_INC
LOGIC_END()
LOGIC_BEGIN(8)
lda (left_render_index_xcol),y
sta.z left_ypos_inc_offset
LOGIC_END()
// Render Tile Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<4;row++) {
// *left_canvas = tile_left_pixels[y] | tile_right_pixels[y];
LOGIC_BEGIN(3)
ldx logic_tile_left_idx
LOGIC_END()
LOGIC_BEGIN(17)
lda TILES_LEFT+row,x
ldx logic_tile_right_idx
ora TILES_RIGHT+row,x
sta (left_canvas),y
LOGIC_END()
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
}
// ******************************************
// Renders the BOBs at the given positions
// ******************************************
.for(var bob=0;bob<NUM_BOBS; bob++) {
// char * left_render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, yfine };
// char * rigt_render_index_xcol = (char*){ (>RENDER_INDEX) + xcol+1, yfine };
//LOGIC_BEGIN(6)
//inc $d021
//LOGIC_END()
LOGIC_BEGIN(14)
lda #>RENDER_INDEX
adc bobs_xcol+bob
sta.z left_render_index_xcol+1
adc #1
sta.z rigt_render_index_xcol+1
LOGIC_END()
LOGIC_BEGIN(10)
lda bobs_yfine+bob
sta.z left_render_index_xcol
sta.z rigt_render_index_xcol
LOGIC_END()
// char * left_canvas = (char*){ left_render_index_xcol[85], left_render_index_xcol[0] };
// bob_restore[0] = <left_canvas; bob_restore[1] = >left_canvas;
// char * rigt_canvas = (char*){ rigt_render_index_xcol[85], rigt_render_index_xcol[0] };
// bob_restore[3] = <rigt_canvas; bob_restore[4] = >rigt_canvas;
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_LO
LOGIC_END()
LOGIC_BEGIN(13)
lda (left_render_index_xcol),y
sta.z left_canvas
sta bobs_restore+SIZE_BOB_RESTORE*bob+0,x
LOGIC_END()
LOGIC_BEGIN(13)
lda (rigt_render_index_xcol),y
sta.z rigt_canvas
sta bobs_restore+SIZE_BOB_RESTORE*bob+3,x
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_HI
LOGIC_END()
LOGIC_BEGIN(16)
lda (left_render_index_xcol),y
adc canvas_base_hi
sta.z left_canvas+1
sta bobs_restore+SIZE_BOB_RESTORE*bob+1,x
LOGIC_END()
LOGIC_BEGIN(16)
lda (rigt_render_index_xcol),y
adc canvas_base_hi
sta.z rigt_canvas+1
sta bobs_restore+SIZE_BOB_RESTORE*bob+4,x
LOGIC_END()
// char left_ypos_inc_offset = left_render_index_xcol[170];
// bob_restore[2] = left_ypos_inc_offset;
// char rigt_ypos_inc_offset = rigt_render_index_xcol[170];
// bob_restore[5] = rigt_ypos_inc_offset;
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_YPOS_INC
LOGIC_END()
LOGIC_BEGIN(13)
lda (left_render_index_xcol),y
sta.z left_ypos_inc_offset
sta bobs_restore+SIZE_BOB_RESTORE*bob+2,x
LOGIC_END()
LOGIC_BEGIN(13)
lda (rigt_render_index_xcol),y
sta.z rigt_ypos_inc_offset
sta bobs_restore+SIZE_BOB_RESTORE*bob+5,x
LOGIC_END()
// Render Bob Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<6;row++) {
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
//rigt_canvas += RENDER_YPOS_INC[rigt_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z rigt_canvas
sta.z rigt_canvas
lda.z rigt_canvas+1
adc #0
sta.z rigt_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z rigt_ypos_inc_offset
LOGIC_END()
// bob_restore[6] = *left_canvas;
// *left_canvas = *left_canvas & BOB_MASK_LEFT_0[bob_id] | BOB_PIXEL_LEFT_0[bob_id];
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
LOGIC_BEGIN(10)
lda (left_canvas),y
sta bobs_restore+SIZE_BOB_RESTORE*bob+6+row,x
LOGIC_END()
LOGIC_BEGIN(10)
lda (rigt_canvas),y
sta bobs_restore+SIZE_BOB_RESTORE*bob+12+row,x
LOGIC_END()
LOGIC_BEGIN(4)
ldx bobs_bob_id+bob
LOGIC_END()
LOGIC_BEGIN(19)
lda (left_canvas),y
and BOB_MASK_LEFT+row*BOB_ROW_SIZE,x
ora BOB_PIXEL_LEFT+row*BOB_ROW_SIZE,x
sta (left_canvas),y
LOGIC_END()
// bob_restore[7] = *rigt_canvas;
// *rigt_canvas = *rigt_canvas & BOB_MASK_RIGT_0[bob_id] | BOB_PIXEL_RIGT_0[bob_id];
LOGIC_BEGIN(19)
lda (rigt_canvas),y
and BOB_MASK_RIGT+row*BOB_ROW_SIZE,x
ora BOB_PIXEL_RIGT+row*BOB_ROW_SIZE,x
sta (rigt_canvas),y
LOGIC_END()
}
}
//LOGIC_BEGIN(6)
//lda #0
//sta $d021
//LOGIC_END()
LOGIC_BEGIN(0) // end of logic code
}
// Raster-code for displaying 9 sprites on the entire screen - with open side borders
// The uncrunched code will be merged with logic code using code-merger.c
// The unmerged raster-code is identical for both buffers!
RASTER_CODE_CRUNCHED:
.macro RASTER_CYCLES(cycles) {
.byte $ff, cycles
}
.modify B2() {
.pc = RASTER_CODE_UNMERGED "RASTER CODE UNMERGED"
RASTER_CYCLES(29)
// Line 7 cycle 44
// Raster Line
.var raster_line = 7
// Line in the sprite
.var sprite_line = 20
// Current sprite ypos
.var sprite_ypos = 7
// Current sprite screen (graphics bank not important since sprite layout in the banks is identical)
.var sprite_screen = SCREENS_1
.var available_cycles = 0;
.for(var i=0;i<293;i++) {
// Line cycle count
.var line_cycles = 46
.if(raster_line>=70 && raster_line<238) {
// Only 2 sprites on these lines - so more cycles available
.eval line_cycles = 58
}
// Create 9th sprite by moving sprite 0
.if(mod(raster_line,2)==0) {
lda #$6f
sta $d000
} else {
lda #$e7
sta $d000
}
.eval line_cycles -= 6;
lda #$8
// Cycle 50. LSR abs is a 6 cycle RWM instruction.
lsr VICII_CONTROL2
sta VICII_CONTROL2
.eval line_cycles -= 12;
.eval raster_line++
.eval sprite_line++
.if(sprite_line==21) {
.eval sprite_line = 0
.eval sprite_ypos += 21
}
// Set sprite single-color mode on splash
.if(raster_line==53) {
lda side_sprites_mc
sta $d01c
lda side_sprites_color
sta $d027
sta $d028
.eval line_cycles -= 18
}
// Set sprite multi-color mode on splash
.if(raster_line==248) {
lda bottom_sprites_mc
sta $d01c
lda bottom_sprites_color
sta $d027
sta $d028
.eval line_cycles -= 18
//.print "raster:"+raster_line+" multi-color"
}
// Open top border
.if(raster_line==55) {
lda #VICII_RSEL|VICII_ECM|VICII_BMM|7
sta VICII_CONTROL1
.eval line_cycles -= 6
//.print "raster:"+raster_line+" top border rsel=1"
}
// Open bottom border
.if(raster_line==250) {
lda #VICII_ECM|VICII_BMM|7 // DEN=0, RSEL=0
sta VICII_CONTROL1
.eval line_cycles -= 6
//.print "raster:"+raster_line+" bottom border rsel=0"
}
// Move sprites down
.if(sprite_line>=2 && sprite_line<=9) {
.if(sprite_ypos<300) {
.var sprite_id = sprite_line-2
.if(sprite_id==0 || sprite_id==1 || sprite_ypos<=55 || sprite_ypos>=(246-21)) {
lda #sprite_ypos
sta SPRITES_YPOS+2*sprite_id
.eval line_cycles -= 6;
//.print "raster:"+raster_line+" sprite:"+sprite_id+" ypos:"+sprite_ypos
}
}
}
// Change sprite data
.if(sprite_line==20) {
.eval sprite_screen += $400
lda #sprite_screen/$40
sta VICII_MEMORY
.eval line_cycles -= 6
//.print "raster:"+raster_line+" sprite data $"+toHexString(sprite_screen)
}
// Spend the rest of the cycles on NOPS
.if(line_cycles<0 || line_cycles==1) .error "Too many cycles spent on line "+raster_line
.if(line_cycles>0) {
//.print "raster:"+raster_line+" cycles $"+toHexString(line_cycles)
RASTER_CYCLES(line_cycles)
.eval line_cycles -= line_cycles
.eval available_cycles += line_cycles
}
}
//.print "Available cycles: "+available_cycles
lda #$6f
sta $d000
lda #$8
// Cycle 50. LSR abs is a 6 cycle RWM instruction.
lsr VICII_CONTROL2
sta VICII_CONTROL2
RASTER_CYCLES(00) // End of raster code
}
// SID tune
// Pacman 2 channel music by Metal/Camelot
INTRO_MUSIC_CRUNCHED:
.modify B2() {
.pc = INTRO_MUSIC "INTRO MUSIC"
.const music = LoadBinary("pacman-2chn-simpler.prg", BF_C64FILE)
.fill music.getSize(), music.get(i)
}
.segment Data
// Offset of the LEVEL_TILE data within the LEVEL_TILE data (each row is 64 bytes of data)
LEVEL_YTILE_OFFSET: .word 0, $40, $80, $c0, $100, $140, $180, $1c0, $200, $240, $280, $2c0, $300, $340, $380, $3c0, $400, $440, $480, $4c0, $500, $540, $580, $5c0, $600, $640, $680, $6c0, $700, $740, $780, $7c0, $800, $840, $880, $8c0, $900
// Used to choose a single direction when presented with multiple potential directions.
// Used to eliminate diagonal joy directions and convert them to a single direction
// Priority: (4)up, (8)down, (16)left, (32)right
.align $40
DIRECTION_SINGLE: .byte 0, 0, 0, 0, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $10, $10, $10, $10, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $20, $20, $20, $20, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $10, $10, $10, $10, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4
// Used to eliminate a single direction (the one that the ghost came from)
// The value DIRECTION_ELIMINATE[current_direction] is ANDed onto the open directions to remove the current direction
.align $40
DIRECTION_ELIMINATE: .byte $ff, 0, 0, 0, $f7, 0, 0, 0, $fb, 0, 0, 0, 0, 0, 0, 0, $df, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, $ef
// Used to reverse direction direction (when a ghost changes between chase and scatter)
.align $40
DIRECTION_REVERSE: .byte 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, $20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, $10
// The animation frames for pacman. The index into this is DIRECTION + anim_frame_idx.
.align $40
pacman_frames: .byte 8, 8, 8, 8, 8, $18, $14, $18, 8, $20, $1c, $20, 0, 0, 0, 0, 8, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, $c, $10, $c
// The animation frames for ghost. The index into thos is DIRECTION + anim_frame_idx.
.align $80
ghost_frames: .byte 0, 0, 0, 0, $3c, $40, $3c, $40, $34, $38, $34, $38, 0, 0, 0, 0, $2c, $30, $2c, $30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $24, $28, $24, $28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $5c, $60, $5c, $60, $54, $58, $54, $58, 0, 0, 0, 0, $4c, $50, $4c, $50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $44, $48, $44, $48
// Lookup the absolute value of a signed number
// PRE_ and POST_ are used to ensure lookup of ABS-1,y works for y=0 and ABS+1,y works for y=0xff
.align $100
ABS_PRE: .byte 1
ABS:
.for(var i=0;i<$100;i++) {
.var x = (i<$80)?i:($100-i);
.byte abs(x)
}
ABS_POST: .byte 0
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __init1
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp toD0181
Removing instruction jmp __b5
Removing instruction jmp toDd002
Removing instruction jmp __b7
Removing instruction jmp __b1
Removing instruction jmp __b4
Removing instruction jmp __b8
Removing instruction jmp __b3
Removing instruction jmp __breturn
Removing instruction jmp toDd001
Removing instruction jmp __b6
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
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 __b161
Removing instruction jmp __b15
Removing instruction jmp __b44
Removing instruction jmp __b16
Removing instruction jmp __b17
Removing instruction jmp __b18
Removing instruction jmp __b19
Removing instruction jmp __b47
Removing instruction jmp __b60
Removing instruction jmp __b48
Removing instruction jmp __b61
Removing instruction jmp __b62
Removing instruction jmp __b50
Removing instruction jmp __b162
Removing instruction jmp __b64
Removing instruction jmp __b163
Removing instruction jmp __b65
Removing instruction jmp __b164
Removing instruction jmp __b66
Removing instruction jmp __b165
Removing instruction jmp __b68
Removing instruction jmp __b69
Removing instruction jmp __b70
Removing instruction jmp __b71
Removing instruction jmp __b63
Removing instruction jmp __b58
Removing instruction jmp __b59
Removing instruction jmp __b20
Removing instruction jmp __b21
Removing instruction jmp __b22
Removing instruction jmp __b23
Removing instruction jmp __b24
Removing instruction jmp __b76
Removing instruction jmp __b166
Removing instruction jmp __b82
Removing instruction jmp __b83
Removing instruction jmp __b152
Removing instruction jmp __b84
Removing instruction jmp __b85
Removing instruction jmp __b80
Removing instruction jmp __b153
Removing instruction jmp __b86
Removing instruction jmp __b87
Removing instruction jmp __b88
Removing instruction jmp __b25
Removing instruction jmp __b26
Removing instruction jmp __b27
Removing instruction jmp __b28
Removing instruction jmp __b29
Removing instruction jmp __b93
Removing instruction jmp __b167
Removing instruction jmp __b99
Removing instruction jmp __b100
Removing instruction jmp __b154
Removing instruction jmp __b101
Removing instruction jmp __b102
Removing instruction jmp __b97
Removing instruction jmp __b155
Removing instruction jmp __b103
Removing instruction jmp __b104
Removing instruction jmp __b105
Removing instruction jmp __b30
Removing instruction jmp __b31
Removing instruction jmp __b32
Removing instruction jmp __b33
Removing instruction jmp __b34
Removing instruction jmp __b110
Removing instruction jmp __b168
Removing instruction jmp __b116
Removing instruction jmp __b117
Removing instruction jmp __b156
Removing instruction jmp __b118
Removing instruction jmp __b119
Removing instruction jmp __b114
Removing instruction jmp __b157
Removing instruction jmp __b120
Removing instruction jmp __b121
Removing instruction jmp __b122
Removing instruction jmp __b35
Removing instruction jmp __b36
Removing instruction jmp __b37
Removing instruction jmp __b38
Removing instruction jmp __b39
Removing instruction jmp __b127
Removing instruction jmp __b169
Removing instruction jmp __b133
Removing instruction jmp __b134
Removing instruction jmp __b158
Removing instruction jmp __b135
Removing instruction jmp __b136
Removing instruction jmp __b131
Removing instruction jmp __b159
Removing instruction jmp __b137
Removing instruction jmp __b138
Removing instruction jmp __b139
Removing instruction jmp __b40
Removing instruction jmp __b41
Removing instruction jmp __b42
Removing instruction jmp __b43
Removing instruction jmp __b143
Removing instruction jmp __b170
Removing instruction jmp __b147
Removing instruction jmp __b160
Removing instruction jmp __b148
Removing instruction jmp __b149
Removing instruction jmp __b145
Removing instruction jmp __b150
Removing instruction jmp __b151
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp SEI1
Removing instruction jmp __b18
Removing instruction jmp __b22
Removing instruction jmp __b23
Removing instruction jmp __b24
Removing instruction jmp __b25
Removing instruction jmp __b26
Removing instruction jmp __b27
Removing instruction jmp __b28
Removing instruction jmp __b29
Removing instruction jmp __b30
Removing instruction jmp __b31
Removing instruction jmp __b32
Removing instruction jmp __b33
Removing instruction jmp __b34
Removing instruction jmp __b35
Removing instruction jmp __b36
Removing instruction jmp __b37
Removing instruction jmp __b2
Removing instruction jmp toDd001
Removing instruction jmp __b19
Removing instruction jmp toD0181
Removing instruction jmp __b20
Removing instruction jmp __b6
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b11
Removing instruction jmp __b1
Removing instruction jmp __b12
Removing instruction jmp __b13
Removing instruction jmp CLI1
Removing instruction jmp __b21
Removing instruction jmp __b38
Removing instruction jmp __b14
Removing instruction jmp __b39
Removing instruction jmp __breturn
Removing instruction jmp __b17
Removing instruction jmp __b16
Removing instruction jmp __b5
Removing instruction jmp __b4
Removing instruction jmp SEI1
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b6
Removing instruction jmp __b14
Removing instruction jmp __b15
Removing instruction jmp __b16
Removing instruction jmp __b17
Removing instruction jmp __b7
Removing instruction jmp __b9
Removing instruction jmp __b18
Removing instruction jmp __b19
Removing instruction jmp __b10
Removing instruction jmp __b11
Removing instruction jmp __b12
Removing instruction jmp CLI1
Removing instruction jmp __b13
Removing instruction jmp __b20
Removing instruction jmp __b4
Removing instruction jmp __b6
Removing instruction jmp __b8
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __b14
Removing instruction jmp __b19
Removing instruction jmp __breturn
Removing instruction jmp __b17
Removing instruction jmp __b16
Removing instruction jmp __b11
Removing instruction jmp __b13
Removing instruction jmp __b18
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b1
Removing instruction jmp __b7
Removing instruction jmp __b2
Removing instruction jmp __b8
Removing instruction jmp __b3
Removing instruction jmp __b9
Removing instruction jmp __b14
Removing instruction jmp __b4
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b14
Removing instruction jmp __b16
Removing instruction jmp __breturn
Removing instruction jmp __b17
Removing instruction jmp __b19
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b10
Removing instruction jmp __b13
Removing instruction jmp __b21
Removing instruction jmp __b6
Removing instruction jmp __b8
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __breturn
Removing instruction jmp __b10
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b7
Removing instruction jmp __b9
Removing instruction jmp __b8
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b2
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 __b5
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b4
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b4
Removing instruction jmp __b13
Removing instruction jmp __b9
Removing instruction jmp __b5
Removing instruction jmp __b14
Removing instruction jmp __b10
Removing instruction jmp __b6
Removing instruction jmp __b15
Removing instruction jmp __b11
Removing instruction jmp __b7
Removing instruction jmp __b16
Removing instruction jmp __b12
Removing instruction jmp __b8
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b4
Removing instruction jmp __b7
Removing instruction jmp __b5
Removing instruction jmp __b8
Removing instruction jmp __b6
Removing instruction jmp __b9
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
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 #0
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 #>0
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 #0
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 #0
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 #0
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 #7
Removing instruction lda #7
Removing instruction lda #7
Removing instruction lda #7
Removing instruction lda #7
Removing instruction lda #7
Removing instruction lda #7
Removing instruction lda.z frame
Removing instruction lda.z game_logic_substep
Removing instruction lda #1
Removing instruction lda #1
Removing instruction lda #1
Replacing instruction ldy.z __210 with TAY
Replacing instruction lda.z pacman_xtile with TYA
Replacing instruction lda.z pacman_xtile with TYA
Removing instruction lda.z ghost4_ytile
Replacing instruction ldx #2 with TAX
Removing instruction lda #1
Removing instruction lda #2
Removing instruction lda.z ghost3_ytile
Replacing instruction ldx #2 with TAX
Removing instruction lda #1
Removing instruction lda.z ghost2_ytile
Replacing instruction ldx #2 with TAX
Removing instruction lda #1
Removing instruction lda.z ghost1_ytile
Replacing instruction ldx #2 with TAX
Removing instruction lda #1
Removing instruction lda #1
Removing instruction lda #1
Removing instruction ldy.z pacman_ch1_idx
Removing instruction lda #0
Replacing instruction lda #0 with TXA
Removing instruction lda #$ff
Removing instruction lda #BLACK
Removing instruction lda #BLACK
Removing instruction lda #$ff
Removing instruction lda #$ff
Removing instruction lda #YELLOW
Removing instruction lda #YELLOW
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 #STOP
Removing instruction lda #STOP
Removing instruction lda #STOP
Removing instruction lda #STOP
Removing instruction lda #$32
Removing instruction lda #$32
Removing instruction lda #$32
Removing instruction lda #$32
Removing instruction lda #$23
Removing instruction lda #$23
Removing instruction lda #$23
Removing instruction lda.z dist_left
Replacing instruction ldy #0 with TAY
Removing instruction ldy #0
Removing instruction ldy #0
Removing instruction ldy #0
Removing instruction lda #0
Removing instruction lda.z canvas
Replacing instruction ldy #0 with TAY
Removing instruction ldy #0
Removing instruction lda #>0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction ldy.z xtile
Removing instruction lda #>0
Removing instruction lda #<0
Removing instruction lda #>0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda.z canvas_offset
Removing instruction lda.z pixels
Removing instruction ldy #0
Removing instruction lda.z canvas_offset
Removing instruction ldy #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label toDd001_from___b5 with __b6
Replacing label __b1_from___b2 with __b1
Replacing label __b44_from___b14 with __b44
Replacing label __b47_from___b17 with __b47_from___b46
Replacing label __b47_from___b18 with __b47_from___b46
Replacing label __b47_from___b58 with __b47_from___b59
Replacing label __b47_from___b45 with __b47_from___b46
Replacing label __b14_from___b15 with __b14
Replacing label __b14_from___b16 with __b14
Replacing label __b4_from___b3 with __b4
Replacing label __b14_from___b15 with __b14
Replacing label __b14_from___b16 with __b14
Replacing label __b9_from___b2 with __b9_from___b3
Replacing label __breturn_from_level_tile_directions with __breturn_from___b2
Replacing label __b1_from_choose_direction with __b1_from___b5
Replacing label __b4_from___b3 with __b4
Replacing label __b14_from___b9 with __b4
Replacing label __b3_from___b12 with __b3
Replacing label __b2_from___b10 with __b2
Replacing label __b2_from___b3 with __b2
Replacing label __b4_from___b3 with __b4
Replacing label __b14_from___b19 with __b14_from___b3
Replacing label __b10_from___b4 with __b10_from___b5
Replacing label __b10_from___b13 with __b10_from___b5
Replacing label __b10_from___b12 with __b10_from___b5
Replacing label __b4_from___b8 with __b4
Replacing label __b6_from___b7 with __b6_from___b9
Replacing label __b8_from___b6 with __b8
Replacing label __b1_from_joyfire with __b1
Replacing label __b6_from___b14 with __b6
Replacing label __b7_from___b15 with __b7
Replacing label __b8_from___b16 with __b8
Replacing label __b5_from___b3 with __b5
Replacing label __b6_from___b5 with __b6
Replacing label __breturn_from_level_tile_get with __breturn_from___b2
Removing instruction __b1_from___init1:
Removing instruction main_from___b1:
Removing instruction toD0181_from_irq_screen_top:
Removing instruction toD0181:
Removing instruction toDd002_from___b5:
Removing instruction toDd002:
Removing instruction __b4_from___b1:
Removing instruction __b8_from___b4:
Removing instruction __breturn:
Removing instruction toDd001_from___b5:
Removing instruction toDd001:
Removing instruction __b1_from_main:
Removing instruction __b1_from___b2:
Removing instruction __b2_from___b1:
Removing instruction __b44_from___b14:
Removing instruction __b44_from___b15:
Removing instruction __b47_from___b19:
Removing instruction __b47_from___b58:
Removing instruction __b47_from___b17:
Removing instruction __b47_from___b18:
Removing instruction __b47_from___b45:
Removing instruction __b24_from___b23:
Removing instruction __b25_from___b24:
Removing instruction __b26_from___b25:
Removing instruction memset_from___b26:
Removing instruction __b27_from___b26:
Removing instruction __b29_from___b28:
Removing instruction __b30_from___b29:
Removing instruction __b31_from___b30:
Removing instruction __b33_from___b32:
Removing instruction __b34_from___b33:
Removing instruction __b36_from___b35:
Removing instruction toDd001_from___b2:
Removing instruction toDd001:
Removing instruction toD0181_from___b19:
Removing instruction toD0181:
Removing instruction __b21_from_CLI1:
Removing instruction __b14_from___b15:
Removing instruction __b14_from___b16:
Removing instruction __b14_from___b38:
Removing instruction __b17_from___b15:
Removing instruction __b4_from___b3:
Removing instruction __b4_from___b5:
Removing instruction __b14_from___b6:
Removing instruction __b15_from___b14:
Removing instruction __b16_from___b15:
Removing instruction level_show_from___b16:
Removing instruction __b18_from___b9:
Removing instruction __b9_from___b2:
Removing instruction __b14_from___b10:
Removing instruction __b14_from___b15:
Removing instruction __b14_from___b16:
Removing instruction __b17_from___b15:
Removing instruction __breturn_from_level_tile_directions:
Removing instruction __b6_from___b5:
Removing instruction __b1_from___b6:
Removing instruction __b1_from_choose_direction:
Removing instruction __b2_from___b10:
Removing instruction __b2_from___b11:
Removing instruction __b3_from___b12:
Removing instruction __b3_from___b13:
Removing instruction __b14_from___b9:
Removing instruction __b14:
Removing instruction __b4_from___b14:
Removing instruction __b4_from___b3:
Removing instruction __breturn:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b3:
Removing instruction __b14_from___b19:
Removing instruction __b17_from___b15:
Removing instruction __b4_from___b3:
Removing instruction __b4_from___b8:
Removing instruction __b10_from___b12:
Removing instruction __b10_from___b13:
Removing instruction __b10_from___b4:
Removing instruction __b1_from___b10:
Removing instruction __b6_from___b7:
Removing instruction __b10_from___b2:
Removing instruction __b4_from___b10:
Removing instruction __b8_from___b6:
Removing instruction __b8_from___b9:
Removing instruction __b1_from_joyfire:
Removing instruction __breturn_from___b1:
Removing instruction __b9_from___b13:
Removing instruction __b5_from___b9:
Removing instruction __b6_from___b10:
Removing instruction __b6_from___b14:
Removing instruction __b7_from___b11:
Removing instruction __b7_from___b15:
Removing instruction __b8_from___b12:
Removing instruction __b8_from___b16:
Removing instruction __b5_from___b3:
Removing instruction __b5_from___b7:
Removing instruction __b6_from___b5:
Removing instruction __b6_from___b8:
Removing instruction __breturn_from_level_tile_get:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __init1:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __b5:
Removing instruction __b7:
Removing instruction __b4:
Removing instruction __b8:
Removing instruction splash_run_from_main:
Removing instruction gameplay_run_from___b1:
Removing instruction __b2:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __b10:
Removing instruction __b11:
Removing instruction __b12:
Removing instruction __b13:
Removing instruction __b161:
Removing instruction __b15:
Removing instruction __b16:
Removing instruction __b17:
Removing instruction __b18:
Removing instruction __b19:
Removing instruction __b60:
Removing instruction __b61:
Removing instruction __b62:
Removing instruction __b162:
Removing instruction __b163:
Removing instruction __b164:
Removing instruction __b165:
Removing instruction __b68:
Removing instruction __b69:
Removing instruction __b70:
Removing instruction __b71:
Removing instruction __b63:
Removing instruction __b58:
Removing instruction __b59:
Removing instruction __b20:
Removing instruction __b21:
Removing instruction __b22:
Removing instruction __b23:
Removing instruction __b24:
Removing instruction __b166:
Removing instruction __b83:
Removing instruction level_tile_directions_from___b83:
Removing instruction __b152:
Removing instruction __b84:
Removing instruction __b85:
Removing instruction __b80_from___b85:
Removing instruction choose_direction_from___b80:
Removing instruction __b153:
Removing instruction __b86:
Removing instruction __b87:
Removing instruction __b88:
Removing instruction __b25:
Removing instruction __b26:
Removing instruction __b27:
Removing instruction __b28:
Removing instruction __b29:
Removing instruction __b167:
Removing instruction __b100:
Removing instruction level_tile_directions_from___b100:
Removing instruction __b154:
Removing instruction __b101:
Removing instruction __b102:
Removing instruction __b97_from___b102:
Removing instruction choose_direction_from___b97:
Removing instruction __b155:
Removing instruction __b103:
Removing instruction __b104:
Removing instruction __b105:
Removing instruction __b30:
Removing instruction __b31:
Removing instruction __b32:
Removing instruction __b33:
Removing instruction __b34:
Removing instruction __b168:
Removing instruction __b117:
Removing instruction level_tile_directions_from___b117:
Removing instruction __b156:
Removing instruction __b118:
Removing instruction __b119:
Removing instruction __b114_from___b119:
Removing instruction choose_direction_from___b114:
Removing instruction __b157:
Removing instruction __b120:
Removing instruction __b121:
Removing instruction __b122:
Removing instruction __b35:
Removing instruction __b36:
Removing instruction __b37:
Removing instruction __b38:
Removing instruction __b39:
Removing instruction __b169:
Removing instruction __b134:
Removing instruction level_tile_directions_from___b134:
Removing instruction __b158:
Removing instruction __b135:
Removing instruction __b136:
Removing instruction __b131_from___b136:
Removing instruction choose_direction_from___b131:
Removing instruction __b159:
Removing instruction __b137:
Removing instruction __b138:
Removing instruction __b139:
Removing instruction __b40:
Removing instruction __b41:
Removing instruction __b42:
Removing instruction __b43:
Removing instruction __b170:
Removing instruction level_tile_directions_from___b147:
Removing instruction __b160:
Removing instruction __b148:
Removing instruction __b149:
Removing instruction __b150:
Removing instruction __b151:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction SEI1:
Removing instruction __b18:
Removing instruction memset_from___b18:
Removing instruction __b22:
Removing instruction __b23:
Removing instruction __b24:
Removing instruction merge_code_from___b24:
Removing instruction __b25:
Removing instruction memset_from___b25:
Removing instruction __b26:
Removing instruction __b27:
Removing instruction init_render_index_from___b27:
Removing instruction __b28:
Removing instruction __b29:
Removing instruction splash_show_from___b29:
Removing instruction __b30:
Removing instruction memset_from___b30:
Removing instruction __b31:
Removing instruction init_bobs_restore_from___b31:
Removing instruction __b32:
Removing instruction __b33:
Removing instruction init_sprite_pointers_from___b33:
Removing instruction __b34:
Removing instruction memcpy_from___b34:
Removing instruction __b35:
Removing instruction __b36:
Removing instruction memset_from___b36:
Removing instruction __b37:
Removing instruction __b2_from___b37:
Removing instruction __b19:
Removing instruction __b20:
Removing instruction __b6_from___b20:
Removing instruction __b8:
Removing instruction __b9_from___b8:
Removing instruction __b11:
Removing instruction __b1:
Removing instruction __b13:
Removing instruction CLI1:
Removing instruction __b21:
Removing instruction __b38:
Removing instruction __b39:
Removing instruction __breturn:
Removing instruction __b17:
Removing instruction __b16:
Removing instruction __b9_from___b10:
Removing instruction __b6_from___b7:
Removing instruction __b5:
Removing instruction __b2_from___b4:
Removing instruction SEI1:
Removing instruction __b1_from_SEI1:
Removing instruction __b3:
Removing instruction __b4_from___b3:
Removing instruction __b6:
Removing instruction __b14:
Removing instruction init_level_tile_directions_from___b14:
Removing instruction __b15:
Removing instruction init_sprite_pointers_from___b15:
Removing instruction __b16:
Removing instruction __b17:
Removing instruction __b7_from___b17:
Removing instruction __b9:
Removing instruction __b18:
Removing instruction __b19:
Removing instruction __b12:
Removing instruction CLI1:
Removing instruction __b20:
Removing instruction __b7_from___b8:
Removing instruction __b4_from___b5:
Removing instruction __b1_from___b2:
Removing instruction __b4_from_done_run:
Removing instruction __b6_from___b4:
Removing instruction __b8:
Removing instruction __b1:
Removing instruction __b3:
Removing instruction __b10:
Removing instruction __b19:
Removing instruction __breturn:
Removing instruction __b17:
Removing instruction __b16:
Removing instruction __b13:
Removing instruction __b9_from___b13:
Removing instruction render_from___b12:
Removing instruction __b18:
Removing instruction __b11_from___b18:
Removing instruction __b6_from___b7:
Removing instruction __b4_from___b5:
Removing instruction __breturn:
Removing instruction __b2:
Removing instruction __b1:
Removing instruction __breturn_from___b1:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction __b2_from___b7:
Removing instruction __b8:
Removing instruction __b3_from___b8:
Removing instruction __b9:
Removing instruction __b4_from___b9:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __b1_from_merge_code:
Removing instruction __b3:
Removing instruction __b14:
Removing instruction __b16:
Removing instruction __breturn:
Removing instruction __b17:
Removing instruction __b19:
Removing instruction __b5:
Removing instruction __b13:
Removing instruction __b21:
Removing instruction __b10_from___b21:
Removing instruction __b6:
Removing instruction __b8:
Removing instruction __b1_from_init_render_index:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __b10:
Removing instruction __b5_from___b4:
Removing instruction __b7:
Removing instruction __b1_from___b7:
Removing instruction __b9:
Removing instruction __b5_from___b8:
Removing instruction __b1_from_splash_show:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction __b1_from___b4:
Removing instruction render_from___b3:
Removing instruction __b5:
Removing instruction __b2_from___b5:
Removing instruction __b1_from_init_bobs_restore:
Removing instruction __b2:
Removing instruction __breturn:
Removing instruction __b5:
Removing instruction __b1_from___b5:
Removing instruction __b3_from___b4:
Removing instruction __b1_from_init_sprite_pointers:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction __b1_from___b4:
Removing instruction __b2_from___b3:
Removing instruction __b1_from_memcpy:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Removing instruction __breturn:
Removing instruction __breturn_from_joyfire:
Removing instruction __b1_from_init_level_tile_directions:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction __b1_from___b4:
Removing instruction level_tile_get_from___b3:
Removing instruction __b13:
Removing instruction __b9:
Removing instruction level_tile_get_from___b5:
Removing instruction __b14:
Removing instruction __b10:
Removing instruction level_tile_get_from___b6:
Removing instruction __b15:
Removing instruction __b11:
Removing instruction level_tile_get_from___b7:
Removing instruction __b16:
Removing instruction __b12:
Removing instruction __b2_from___b8:
Removing instruction __b1_from_level_show:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction __b1_from___b4:
Removing instruction __b7:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __b2_from___b9:
Removing instruction __breturn:
Removing instruction __b1_from_render:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Removing instruction __b2:
Removing instruction __b1:
Removing instruction __breturn_from___b1:
Removing instruction __b1_from_render_tiles:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Succesful ASM optimization Pass5UnusedLabelElimination
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
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
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
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
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 __b4
Skipping double jump to __b1 in jmp __b1_from___b2
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 __b47_from___b59 to __b8
Relabelling long label __b47_from___b46 to __b9
Relabelling long label __b80_from___b84 to __b10
Relabelling long label __b97_from___b101 to __b11
Relabelling long label __b114_from___b118 to __b12
Relabelling long label __b131_from___b135 to __b13
Relabelling long label __b9_from___b3 to __b1
Relabelling long label __b11_from___b9 to __b3
Relabelling long label __breturn_from___b2 to __b1
Relabelling long label __b1_from___b5 to __b5
Relabelling long label __b14_from___b3 to __b3
Relabelling long label __b17_from___b18 to __b5
Relabelling long label __b10_from___b5 to __b6
Relabelling long label __b1_from___b2 to __b8
Relabelling long label __b6_from___b9 to __b13
Relabelling long label __b4_from___b2 to __b3
Relabelling long label __b2_from___b1 to __b4
Relabelling long label __b3_from___b1 to __b2
Relabelling long label __b2_from___b1 to __b4
Relabelling long label __b2_from___b1 to __b4
Relabelling long label __b5_from___b13 to __b9
Relabelling long label __b2_from___b1 to __b4
Relabelling long label __breturn_from___b2 to __b1
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction ldy.z pacman_xtile
Replacing instruction ldx #0 with TAX
Removing instruction ldy #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Removing instruction __breturn:
Removing instruction __b8:
Removing instruction __breturn:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Fixing long branch [850] bcs __breturn to bcc
Fixing long branch [964] bne __b50 to beq
Fixing long branch [973] bcc __b9 to bcs
Fixing long branch [984] bcc __b9 to bcs
Fixing long branch [1081] bne __breturn to beq
Fixing long branch [1103] bne __breturn to beq
Fixing long branch [1204] bne __breturn to beq
Fixing long branch [1226] bne __breturn to beq
Fixing long branch [1328] bne __breturn to beq
Fixing long branch [1350] bne __breturn to beq
Fixing long branch [1453] bne __breturn to beq
Fixing long branch [1475] bne __breturn to beq
Fixing long branch [1553] bne __breturn to beq
Fixing long branch [580] beq __b2 to bne
Fixing long branch [585] beq __b3 to bne
Fixing long branch [590] beq __b4 to bne
Fixing long branch [595] beq __b5 to bne
Fixing long branch [600] beq __b6 to bne
Fixing long branch [605] beq __b7 to bne
Fixing long branch [726] beq __b45 to bne
Fixing long branch [731] beq __b46 to bne
Fixing long branch [779] beq __b49 to bne
Fixing long branch [826] bcc __b51 to bcs
Fixing long branch [1015] bne __b72 to beq
Fixing long branch [1021] beq __b73 to bne
Fixing long branch [1026] beq __b74 to bne
Fixing long branch [1031] beq __b75 to bne
Fixing long branch [1146] bne __b89 to beq
Fixing long branch [1152] beq __b90 to bne
Fixing long branch [1157] beq __b91 to bne
Fixing long branch [1162] beq __b92 to bne
Fixing long branch [1278] bne __b106 to beq
Fixing long branch [1284] beq __b107 to bne
Fixing long branch [1289] beq __b108 to bne
Fixing long branch [1294] beq __b109 to bne
Fixing long branch [1410] bne __b123 to beq
Fixing long branch [1417] beq __b124 to bne
Fixing long branch [1422] beq __b125 to bne
Fixing long branch [1427] beq __b126 to bne
Fixing long branch [1764] bcc __b3 to bcs
Fixing long branch [1929] bcc __b2 to bcs
Fixing long branch [1945] bcc __b5 to bcs
Fixing long branch [2071] bcc __b5 to bcs
Fixing long branch [2438] bne __b2 to beq
FINAL SYMBOL TABLE
__constant char ABS[$100] = kickasm {{ .for(var i=0;i<$100;i++) {
.var x = (i<$80)?i:($100-i);
.byte abs(x)
}
}}
__constant char ABS_POST[1] = { 0 }
__constant char ABS_PRE[1] = { 1 }
__constant char * const BANK_1 = (char *) 16384
__constant char * const BANK_2 = (char *) 49152
__constant const char BLACK = 0
__constant const char BLUE = 6
__constant char BOB_GRAPHICS_CRUNCHED[] = kickasm( uses BOB_MASK_LEFT) {{ .modify B2() {
.pc = BOB_MASK_LEFT "BOB GRAPHICS TABLES"
.var bobs_pic = LoadPicture("pacman-bobs.png", List().add($000000, $352879, $bfce72, $883932))
// TABLE char BOB_MASK_LEFT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,48+scroll*6+row)
}
// TABLE char BOB_MASK_RIGT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,24+scroll*6+row)
.for(var blue=0; blue<8;blue++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,48+scroll*6+row)
}
// TABLE char BOB_PIXEL_LEFT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+pac*2,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+ghost*2,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+ghost*2,48+scroll*6+row)
}
// TABLE char BOB_PIXEL_RIGT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+pac*2,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+ghost*2,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+ghost*2,48+scroll*6+row)
}
}
}}
__constant char * const BOB_MASK_LEFT = (char *) 21504
__constant char * const BOB_MASK_RIGT = BOB_MASK_LEFT+BOB_ROW_SIZE*6
__constant char * const BOB_PIXEL_LEFT = BOB_MASK_LEFT+BOB_ROW_SIZE*$c
__constant char * const BOB_PIXEL_RIGT = BOB_MASK_LEFT+BOB_ROW_SIZE*$12
__constant const char BOB_ROW_SIZE = $80
__constant char * const BORDER_COLOR = (char *) 53280
__constant char BYTEBOOZER[] = kickasm {{ .const B2_ZP_BASE = $fc
#import "byteboozer_decrunch.asm"
}}
__constant char CHASE = 0
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant struct MOS6526_CIA * const CIA2 = (struct MOS6526_CIA *) 56576
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant char DIRECTION::DOWN = 8
__constant char DIRECTION::LEFT = $10
__constant char DIRECTION::RIGHT = $20
__constant char DIRECTION::STOP = 0
__constant char DIRECTION::UP = 4
__constant char DIRECTION_ELIMINATE[$21] = { $ff, 0, 0, 0, $f7, 0, 0, 0, $fb, 0, 0, 0, 0, 0, 0, 0, $df, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, $ef }
__constant char DIRECTION_REVERSE[$21] = { 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, $20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, $10 }
__constant char DIRECTION_SINGLE[$40] = { 0, 0, 0, 0, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $10, $10, $10, $10, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $20, $20, $20, $20, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $10, $10, $10, $10, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4 }
__constant char DOWN = 8
__constant char EMPTY = 0
__constant char FRIGHTENED = 2
__constant char * const GAMEOVER_GFX = (char *) 42752
__constant char GAMEOVER_GFX_CRUNCHED[] = kickasm( uses GAMEOVER_GFX) {{ .modify B2() {
.pc = GAMEOVER_GFX "GAMEOVER GRAPHICS" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_gameover = LoadPicture("pacman-gameover.png", List().add($000000, $352879, $bfce72, $883932))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<25; ypos++) {
.byte pic_gameover.getMulticolorByte(xcol,ypos)
}
}
}
}}
__constant char GHOSTS_MODE::CHASE = 0
__constant char GHOSTS_MODE::FRIGHTENED = 2
__constant char GHOSTS_MODE::SCATTER = 1
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
__constant char * const INTRO_MUSIC = (char *) 12288
__constant char INTRO_MUSIC_CRUNCHED[] = kickasm( uses INTRO_MUSIC) {{ .modify B2() {
.pc = INTRO_MUSIC "INTRO MUSIC"
.const music = LoadBinary("pacman-2chn-simpler.prg", BF_C64FILE)
.fill music.getSize(), music.get(i)
}
}}
__constant const unsigned int INTRO_MUSIC_CRUNCHED_SIZE = $600
__constant char * const INTRO_MUSIC_CRUNCHED_UPPER = (char *) 42752
__constant const char IRQ_RASTER = 1
__constant const char IRQ_SCREEN_TOP_LINE = 5
__constant char * const IRQ_STATUS = (char *) 53273
__constant char LEFT = $10
__constant char * const LEVEL_TILES = (char *) 18432
__constant char LEVEL_TILES_CRUNCHED[] = kickasm( uses LEVEL_TILES) {{ .modify B2() {
.pc = LEVEL_TILES "LEVEL TILE GRAPHICS"
.var pic_level = LoadPicture("pacman-tiled.png", List().add($000000, $352879, $bfce72, $883932))
// Maps the tile pixels (a 16 bit number) to the tile ID
.var TILESET = Hashtable()
// Maps the tile ID to the pixels (a 16 bit number)
.var TILESET_BY_ID = Hashtable()
// Tile ID 0 is empty
.eval TILESET.put(0, 0)
.eval TILESET_BY_ID.put(0, 0)
.align $100
// TABLE LEVEL_TILES[64*37]
// The level is 50 tiles * 37 tiles. The first tile line are special half-tiles (where only the last 2 pixel rows are shown).
// The level data is organized as 37 rows of 64 bytes containing tile IDs. (the last 14 are unused to achieve 64-byte alignment)
.for(var ytile=0; ytile<37; ytile++) {
.for(var xtile=0; xtile<50; xtile++) {
// Find the tile pixels (4x4 px - 16 bits)
.var pixels = 0;
.for(var i=0; i<4; i++) {
.var pix = pic_level.getMulticolorByte(xtile/2,ytile*4+i)
.if((xtile&1)==0) {
// left nibble
.eval pix = floor(pix / $10)
} else {
// right nibble
.eval pix = pix & $0f
}
.eval pixels = pixels*$10 + pix
}
.var tile_id = 0
.if(TILESET.containsKey(pixels)) {
.eval tile_id = TILESET.get(pixels)
} else {
.eval tile_id = TILESET.keys().size()
.eval TILESET.put(pixels, tile_id)
.eval TILESET_BY_ID.put(tile_id, pixels)
// .print "tile "+tile_id+" : "+toHexString(pixels,4)
}
// Output the tile ID
.byte tile_id
}
.fill 14, 0
}
.align $100
// TABLE char TILES_LEFT[0x80]
// The left tile graphics. A tile is 4x4 px. The left tiles contain tile graphics for the 4 left bits of a char. Each tile is 4 bytes.
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
.byte pix<<4
.eval pixels = pixels << 4
}
}
.align $80
// TABLE char TILES_RIGHT[0x80]
// The right tile graphics. A tile is 4x4 px. The right tiles contain tile graphics for the 4 right bits of a char. Each tile is 4 bytes.
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
.byte pix
.eval pixels = pixels << 4
}
}
.align $80
// TABLE char TILES_TYPE[0x20]
// 0: empty (all black), 1:pill, 2:powerup, 4: wall (contains blue pixels)
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.var tile_type = 0
.if(pixels==$0220) .eval tile_type=1 // 1:pill
.if(pixels==$aaaa) .eval tile_type=2 // 2:powerup
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
// Detect wall - any blue pixels (%01)
.if( (pix&%0100)==%0100) .eval tile_type = 4; // 4:wall
.if( (pix&%0001)==%0001) .eval tile_type = 4; // 4:wall
.eval pixels = pixels << 4
}
.byte tile_type
//.print "tile "+tile_id+" gfx "+toHexString(TILESET_BY_ID.get(tile_id),4) + " type "+tile_type
}
}
}}
__constant char * const LEVEL_TILES_DIRECTIONS = (char *) 15872
__constant unsigned int LEVEL_YTILE_OFFSET[$25] = { 0, $40, $80, $c0, $100, $140, $180, $1c0, $200, $240, $280, $2c0, $300, $340, $380, $3c0, $400, $440, $480, $4c0, $500, $540, $580, $5c0, $600, $640, $680, $6c0, $700, $740, $780, $7c0, $800, $840, $880, $8c0, $900 }
__constant char LOGIC_CODE_CRUNCHED[] = kickasm( uses bobs_xcol uses bobs_yfine uses bobs_bob_id uses bobs_restore uses RENDER_INDEX uses RENDER_OFFSET_CANVAS_LO uses RENDER_OFFSET_CANVAS_HI uses RENDER_OFFSET_YPOS_INC uses SIZE_BOB_RESTORE uses BOB_ROW_SIZE uses NUM_BOBS uses left_render_index_xcol uses left_canvas uses left_ypos_inc_offset uses rigt_render_index_xcol uses rigt_canvas uses rigt_ypos_inc_offset uses BOB_MASK_LEFT uses BOB_PIXEL_LEFT uses BOB_MASK_RIGT uses BOB_PIXEL_RIGT uses canvas_base_hi uses bobs_restore_base uses RENDER_YPOS_INC uses logic_tile_ptr uses logic_tile_xcol uses logic_tile_yfine uses logic_tile_left_idx uses logic_tile_right_idx) {{ .macro LOGIC_BEGIN(cycles) {
.byte cycles
}
.macro LOGIC_END() {
.byte $ff
}
.modify B2() {
.pc = LOGIC_CODE_UNMERGED "LOGIC CODE UNMERGED"
LOGIC_BEGIN(2)
clc
LOGIC_END()
// ******************************************
// Restores the canvas under the rendered bobs
// ******************************************
.for(var bob=NUM_BOBS-1;bob>=0; bob--) {
//LOGIC_BEGIN(6)
//inc $d021
//LOGIC_END()
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
// char * volatile left_canvas = *((char**)&bob_restore[0]);
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+0,x
sta.z left_canvas
LOGIC_END()
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+1,x
sta.z left_canvas+1
LOGIC_END()
// char left_ypos_inc_offset = bob_restore[2];
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+2,x
sta.z left_ypos_inc_offset
LOGIC_END()
// char * volatile rigt_canvas = *((char**)&bob_restore[3]);
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+3,x
sta.z rigt_canvas
LOGIC_END()
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+4,x
sta.z rigt_canvas+1
LOGIC_END()
// char rigt_ypos_inc_offset = bob_restore[5];
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+5,x
sta.z rigt_ypos_inc_offset
LOGIC_END()
// Restore Bob Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<6;row++) {
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
//rigt_canvas += RENDER_YPOS_INC[rigt_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(5)
inc.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z rigt_canvas
sta.z rigt_canvas
lda.z rigt_canvas+1
adc #0
sta.z rigt_canvas+1
LOGIC_END()
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
// *left_canvas = bob_restore[6] ;
LOGIC_BEGIN(10)
lda bobs_restore+SIZE_BOB_RESTORE*bob+6+row,x
sta (left_canvas),y
LOGIC_END()
// *rigt_canvas = bob_restore[7];
LOGIC_BEGIN(10)
lda bobs_restore+SIZE_BOB_RESTORE*bob+12+row,x
sta (rigt_canvas),y
LOGIC_END()
}
}
// ******************************************
// Render two tiles on the canvas
// ******************************************
// y==0 from bob restore
LOGIC_BEGIN(12)
// char tile_left_idx = 4 * logic_tile_ptr[0];
lda (logic_tile_ptr),y
asl
asl
sta logic_tile_left_idx
LOGIC_END()
// char logic_tile_right_idx = 4 * logic_tile_ptr[1];
LOGIC_BEGIN(2)
iny
LOGIC_END()
LOGIC_BEGIN(12)
lda (logic_tile_ptr),y
asl
asl
sta logic_tile_right_idx
LOGIC_END()
// char * render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, ytile*2 };
LOGIC_BEGIN(8)
lda #>RENDER_INDEX
adc logic_tile_xcol
sta.z left_render_index_xcol+1
LOGIC_END()
LOGIC_BEGIN(6)
lda logic_tile_yfine
sta.z left_render_index_xcol
LOGIC_END()
// unsigned int canvas_offset = {render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] };
// char * left_canvas = canvas_base_hi*$100 + canvas_offset;
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_LO
LOGIC_END()
LOGIC_BEGIN(8)
lda (left_render_index_xcol),y
sta.z left_canvas
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_HI
LOGIC_END()
LOGIC_BEGIN(11)
lda (left_render_index_xcol),y
adc canvas_base_hi
sta.z left_canvas+1
LOGIC_END()
// char left_ypos_inc_offset = render_index_xcol[RENDER_OFFSET_YPOS_INC];
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_YPOS_INC
LOGIC_END()
LOGIC_BEGIN(8)
lda (left_render_index_xcol),y
sta.z left_ypos_inc_offset
LOGIC_END()
// Render Tile Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<4;row++) {
// *left_canvas = tile_left_pixels[y] | tile_right_pixels[y];
LOGIC_BEGIN(3)
ldx logic_tile_left_idx
LOGIC_END()
LOGIC_BEGIN(17)
lda TILES_LEFT+row,x
ldx logic_tile_right_idx
ora TILES_RIGHT+row,x
sta (left_canvas),y
LOGIC_END()
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
}
// ******************************************
// Renders the BOBs at the given positions
// ******************************************
.for(var bob=0;bob<NUM_BOBS; bob++) {
// char * left_render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, yfine };
// char * rigt_render_index_xcol = (char*){ (>RENDER_INDEX) + xcol+1, yfine };
//LOGIC_BEGIN(6)
//inc $d021
//LOGIC_END()
LOGIC_BEGIN(14)
lda #>RENDER_INDEX
adc bobs_xcol+bob
sta.z left_render_index_xcol+1
adc #1
sta.z rigt_render_index_xcol+1
LOGIC_END()
LOGIC_BEGIN(10)
lda bobs_yfine+bob
sta.z left_render_index_xcol
sta.z rigt_render_index_xcol
LOGIC_END()
// char * left_canvas = (char*){ left_render_index_xcol[85], left_render_index_xcol[0] };
// bob_restore[0] = <left_canvas; bob_restore[1] = >left_canvas;
// char * rigt_canvas = (char*){ rigt_render_index_xcol[85], rigt_render_index_xcol[0] };
// bob_restore[3] = <rigt_canvas; bob_restore[4] = >rigt_canvas;
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_LO
LOGIC_END()
LOGIC_BEGIN(13)
lda (left_render_index_xcol),y
sta.z left_canvas
sta bobs_restore+SIZE_BOB_RESTORE*bob+0,x
LOGIC_END()
LOGIC_BEGIN(13)
lda (rigt_render_index_xcol),y
sta.z rigt_canvas
sta bobs_restore+SIZE_BOB_RESTORE*bob+3,x
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_HI
LOGIC_END()
LOGIC_BEGIN(16)
lda (left_render_index_xcol),y
adc canvas_base_hi
sta.z left_canvas+1
sta bobs_restore+SIZE_BOB_RESTORE*bob+1,x
LOGIC_END()
LOGIC_BEGIN(16)
lda (rigt_render_index_xcol),y
adc canvas_base_hi
sta.z rigt_canvas+1
sta bobs_restore+SIZE_BOB_RESTORE*bob+4,x
LOGIC_END()
// char left_ypos_inc_offset = left_render_index_xcol[170];
// bob_restore[2] = left_ypos_inc_offset;
// char rigt_ypos_inc_offset = rigt_render_index_xcol[170];
// bob_restore[5] = rigt_ypos_inc_offset;
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_YPOS_INC
LOGIC_END()
LOGIC_BEGIN(13)
lda (left_render_index_xcol),y
sta.z left_ypos_inc_offset
sta bobs_restore+SIZE_BOB_RESTORE*bob+2,x
LOGIC_END()
LOGIC_BEGIN(13)
lda (rigt_render_index_xcol),y
sta.z rigt_ypos_inc_offset
sta bobs_restore+SIZE_BOB_RESTORE*bob+5,x
LOGIC_END()
// Render Bob Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<6;row++) {
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
//rigt_canvas += RENDER_YPOS_INC[rigt_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z rigt_canvas
sta.z rigt_canvas
lda.z rigt_canvas+1
adc #0
sta.z rigt_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z rigt_ypos_inc_offset
LOGIC_END()
// bob_restore[6] = *left_canvas;
// *left_canvas = *left_canvas & BOB_MASK_LEFT_0[bob_id] | BOB_PIXEL_LEFT_0[bob_id];
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
LOGIC_BEGIN(10)
lda (left_canvas),y
sta bobs_restore+SIZE_BOB_RESTORE*bob+6+row,x
LOGIC_END()
LOGIC_BEGIN(10)
lda (rigt_canvas),y
sta bobs_restore+SIZE_BOB_RESTORE*bob+12+row,x
LOGIC_END()
LOGIC_BEGIN(4)
ldx bobs_bob_id+bob
LOGIC_END()
LOGIC_BEGIN(19)
lda (left_canvas),y
and BOB_MASK_LEFT+row*BOB_ROW_SIZE,x
ora BOB_PIXEL_LEFT+row*BOB_ROW_SIZE,x
sta (left_canvas),y
LOGIC_END()
// bob_restore[7] = *rigt_canvas;
// *rigt_canvas = *rigt_canvas & BOB_MASK_RIGT_0[bob_id] | BOB_PIXEL_RIGT_0[bob_id];
LOGIC_BEGIN(19)
lda (rigt_canvas),y
and BOB_MASK_RIGT+row*BOB_ROW_SIZE,x
ora BOB_PIXEL_RIGT+row*BOB_ROW_SIZE,x
sta (rigt_canvas),y
LOGIC_END()
}
}
//LOGIC_BEGIN(6)
//lda #0
//sta $d021
//LOGIC_END()
LOGIC_BEGIN(0) // end of logic code
}
}}
__constant char * const LOGIC_CODE_UNMERGED = (char *) 57344
__constant const char NUM_BOBS = 5
__constant const unsigned int OFFSET_SPRITE_PTRS = $3f8
__constant char OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
__constant char OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
__constant char OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
__constant char OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
__constant char OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
__constant char OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
__constant char OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE = $1a
__constant char OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS = $19
__constant char OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
__constant char OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR = $27
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y = 1
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR = $28
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y = 3
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y = 5
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y = 7
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y = 9
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y = $b
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y = $d
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y = $f
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE = $15
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X = $1d
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC = $1c
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1 = $25
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2 = $26
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB = $10
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY = 5
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL = 4
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH = 2
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE = 6
__constant char OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE = $18
__constant char PACMAN_CH1_CONTROL[] = { $21, $21, $21, $21, $21, $21, 0, 0, 0, 0, 0, $21, $21, $21, $21, $21, $21, 0, 0, 0, 0, 0 }
__constant char PACMAN_CH1_FREQ_HI[] = { $23, $1d, $1a, $17, $15, $12, 0, 0, 0, 0, 0, $19, $1a, $1c, $1d, $20, $23, 0, 0, 0, 0, 0 }
__constant char PILL = 1
__constant char POWERUP = 2
__constant char * const PROCPORT = (char *) 1
__constant char * const PROCPORT_DDR = (char *) 0
__constant const char PROCPORT_DDR_MEMORY_MASK = 7
__constant const char PROCPORT_RAM_ALL = 0
__constant const char PROCPORT_RAM_IO = 5
__constant char * const RASTER = (char *) 53266
__constant char * const RASTER_CODE = (char *) 32768
__constant char RASTER_CODE_CRUNCHED[] = kickasm( uses VICII_CONTROL2 uses BORDER_COLOR uses RASTER_CODE_UNMERGED uses side_sprites_color uses side_sprites_mc uses bottom_sprites_color uses bottom_sprites_mc) {{ .macro RASTER_CYCLES(cycles) {
.byte $ff, cycles
}
.modify B2() {
.pc = RASTER_CODE_UNMERGED "RASTER CODE UNMERGED"
RASTER_CYCLES(29)
// Line 7 cycle 44
// Raster Line
.var raster_line = 7
// Line in the sprite
.var sprite_line = 20
// Current sprite ypos
.var sprite_ypos = 7
// Current sprite screen (graphics bank not important since sprite layout in the banks is identical)
.var sprite_screen = SCREENS_1
.var available_cycles = 0;
.for(var i=0;i<293;i++) {
// Line cycle count
.var line_cycles = 46
.if(raster_line>=70 && raster_line<238) {
// Only 2 sprites on these lines - so more cycles available
.eval line_cycles = 58
}
// Create 9th sprite by moving sprite 0
.if(mod(raster_line,2)==0) {
lda #$6f
sta $d000
} else {
lda #$e7
sta $d000
}
.eval line_cycles -= 6;
lda #$8
// Cycle 50. LSR abs is a 6 cycle RWM instruction.
lsr VICII_CONTROL2
sta VICII_CONTROL2
.eval line_cycles -= 12;
.eval raster_line++
.eval sprite_line++
.if(sprite_line==21) {
.eval sprite_line = 0
.eval sprite_ypos += 21
}
// Set sprite single-color mode on splash
.if(raster_line==53) {
lda side_sprites_mc
sta $d01c
lda side_sprites_color
sta $d027
sta $d028
.eval line_cycles -= 18
}
// Set sprite multi-color mode on splash
.if(raster_line==248) {
lda bottom_sprites_mc
sta $d01c
lda bottom_sprites_color
sta $d027
sta $d028
.eval line_cycles -= 18
//.print "raster:"+raster_line+" multi-color"
}
// Open top border
.if(raster_line==55) {
lda #VICII_RSEL|VICII_ECM|VICII_BMM|7
sta VICII_CONTROL1
.eval line_cycles -= 6
//.print "raster:"+raster_line+" top border rsel=1"
}
// Open bottom border
.if(raster_line==250) {
lda #VICII_ECM|VICII_BMM|7 // DEN=0, RSEL=0
sta VICII_CONTROL1
.eval line_cycles -= 6
//.print "raster:"+raster_line+" bottom border rsel=0"
}
// Move sprites down
.if(sprite_line>=2 && sprite_line<=9) {
.if(sprite_ypos<300) {
.var sprite_id = sprite_line-2
.if(sprite_id==0 || sprite_id==1 || sprite_ypos<=55 || sprite_ypos>=(246-21)) {
lda #sprite_ypos
sta SPRITES_YPOS+2*sprite_id
.eval line_cycles -= 6;
//.print "raster:"+raster_line+" sprite:"+sprite_id+" ypos:"+sprite_ypos
}
}
}
// Change sprite data
.if(sprite_line==20) {
.eval sprite_screen += $400
lda #sprite_screen/$40
sta VICII_MEMORY
.eval line_cycles -= 6
//.print "raster:"+raster_line+" sprite data $"+toHexString(sprite_screen)
}
// Spend the rest of the cycles on NOPS
.if(line_cycles<0 || line_cycles==1) .error "Too many cycles spent on line "+raster_line
.if(line_cycles>0) {
//.print "raster:"+raster_line+" cycles $"+toHexString(line_cycles)
RASTER_CYCLES(line_cycles)
.eval line_cycles -= line_cycles
.eval available_cycles += line_cycles
}
}
//.print "Available cycles: "+available_cycles
lda #$6f
sta $d000
lda #$8
// Cycle 50. LSR abs is a 6 cycle RWM instruction.
lsr VICII_CONTROL2
sta VICII_CONTROL2
RASTER_CYCLES(00) // End of raster code
}
}}
__constant char * const RASTER_CODE_UNMERGED = (char *) 24576
__constant const char RED = 2
__constant char * const RENDER_INDEX = (char *) 46592
__constant const char RENDER_OFFSET_CANVAS_HI = $50
__constant const char RENDER_OFFSET_CANVAS_LO = 0
__constant const char RENDER_OFFSET_YPOS_INC = $a0
__constant char *RENDER_XCOLS[$1a] = { 0, 1, 2, $400, $401, $402, $800, $801, $802, $c00, $c01, $c02, $1000, $1001, $1002, $1400, $1401, $1402, $1800, $1801, $1802, $1c00, $1c01, $1c02, 0, 0 }
__constant unsigned int RENDER_YPOS[$95] = { 0, 0, 0, 6, $c, $12, $18, $1e, $24, $2a, $30, $36, $3c, (unsigned int)$40+3, (unsigned int)$40+9, (unsigned int)$40+$f, (unsigned int)$40+$15, (unsigned int)$40+$1b, (unsigned int)$40+$21, (unsigned int)$40+$27, (unsigned int)$40+$2d, (unsigned int)$40+$33, (unsigned int)$40+$39, $80, (unsigned int)$80+6, (unsigned int)$80+$c, (unsigned int)$80+$12, (unsigned int)$80+$18, (unsigned int)$80+$1e, (unsigned int)$80+$24, (unsigned int)$80+$2a, (unsigned int)$80+$30, (unsigned int)$80+$36, (unsigned int)$80+$3c, (unsigned int)$c0+3, (unsigned int)$c0+9, (unsigned int)$c0+$f, (unsigned int)$c0+$15, (unsigned int)$c0+$1b, (unsigned int)$c0+$21, (unsigned int)$c0+$27, (unsigned int)$c0+$2d, (unsigned int)$c0+$33, (unsigned int)$c0+$39, $100, $100+6, $100+$c, $100+$12, $100+$18, $100+$1e, $100+$24, $100+$2a, $100+$30, $100+$36, $100+$3c, $140+3, $140+9, $140+$f, $140+$15, $140+$1b, $140+$21, $140+$27, $140+$2d, $140+$33, $140+$39, $180, $180+6, $180+$c, $180+$12, $180+$18, $180+$1e, $180+$24, $180+$2a, $180+$30, $180+$36, $180+$3c, $1c0+3, $1c0+9, $1c0+$f, $1c0+$15, $1c0+$1b, $1c0+$21, $1c0+$27, $1c0+$2d, $1c0+$33, $1c0+$39, $200, $200+6, $200+$c, $200+$12, $200+$18, $200+$1e, $200+$24, $200+$2a, $200+$30, $200+$36, $200+$3c, $240+3, $240+9, $240+$f, $240+$15, $240+$1b, $240+$21, $240+$27, $240+$2d, $240+$33, $240+$39, $280, $280+6, $280+$c, $280+$12, $280+$18, $280+$1e, $280+$24, $280+$2a, $280+$30, $280+$36, $280+$3c, $2c0+3, $2c0+9, $2c0+$f, $2c0+$15, $2c0+$1b, $2c0+$21, $2c0+$27, $2c0+$2d, $2c0+$33, $2c0+$39, $300, $300+6, $300+$c, $300+$12, $300+$18, $300+$1e, $300+$24, $300+$2a, $300+$30, $300+$36, $300+$3c, $340+3, $340+9, $340+$f, $340+$15, $340+$1b, $340+$21, $340+$27, $340+$2d, $340+$33, $340+$39 }
__constant unsigned int RENDER_YPOS_9TH[$95] = { 3, 3, 3, 9, $f, $15, $1b, $21, $27, $2d, $33, $39, $40, (unsigned int)$40+6, (unsigned int)$40+$c, (unsigned int)$40+$12, (unsigned int)$40+$18, (unsigned int)$40+$1e, (unsigned int)$40+$24, (unsigned int)$40+$2a, (unsigned int)$40+$30, (unsigned int)$40+$36, (unsigned int)$40+$3c, (unsigned int)$80+3, (unsigned int)$80+9, (unsigned int)$80+$f, (unsigned int)$80+$15, (unsigned int)$80+$1b, (unsigned int)$80+$21, (unsigned int)$80+$27, (unsigned int)$80+$2d, (unsigned int)$80+$33, (unsigned int)$80+$39, $c0, (unsigned int)$c0+6, (unsigned int)$c0+$c, (unsigned int)$c0+$12, (unsigned int)$c0+$18, (unsigned int)$c0+$1e, (unsigned int)$c0+$24, (unsigned int)$c0+$2a, (unsigned int)$c0+$30, (unsigned int)$c0+$36, (unsigned int)$c0+$3c, $100+3, $100+9, $100+$f, $100+$15, $100+$1b, $100+$21, $100+$27, $100+$2d, $100+$33, $100+$39, $140, $140+6, $140+$c, $140+$12, $140+$18, $140+$1e, $140+$24, $140+$2a, $140+$30, $140+$36, $140+$3c, $180+3, $180+9, $180+$f, $180+$15, $180+$1b, $180+$21, $180+$27, $180+$2d, $180+$33, $180+$39, $1c0, $1c0+6, $1c0+$c, $1c0+$12, $1c0+$18, $1c0+$1e, $1c0+$24, $1c0+$2a, $1c0+$30, $1c0+$36, $1c0+$3c, $200+3, $200+9, $200+$f, $200+$15, $200+$1b, $200+$21, $200+$27, $200+$2d, $200+$33, $200+$39, $240, $240+6, $240+$c, $240+$12, $240+$18, $240+$1e, $240+$24, $240+$2a, $240+$30, $240+$36, $240+$3c, $280+3, $280+9, $280+$f, $280+$15, $280+$1b, $280+$21, $280+$27, $280+$2d, $280+$33, $280+$39, $2c0, $2c0+6, $2c0+$c, $2c0+$12, $2c0+$18, $2c0+$1e, $2c0+$24, $2c0+$2a, $2c0+$30, $2c0+$36, $2c0+$3c, $300+3, $300+9, $300+$f, $300+$15, $300+$1b, $300+$21, $300+$27, $300+$2d, $300+$33, $300+$39, $340, $340+6, $340+$c, $340+$12, $340+$18, $340+$1e, $340+$24, $340+$2a, $340+$30, $340+$36, $340+$3c }
__constant char RENDER_YPOS_INC[$a0] = { 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7 }
__constant char RIGHT = $20
__constant char SCATTER = 1
__constant char * const SCREENS_1 = (char *) 16384
__constant char * const SCREENS_2 = (char *) 49152
__constant struct MOS6581_SID * const SID = (struct MOS6581_SID *) 54272
__constant char * const SID_CH1_FREQ_HI = (char *) 54273
__constant char SIZEOF_CHAR = 1
__constant const char SIZE_BOB_RESTORE = $12
__constant char * const SPLASH = (char *) 16384
__constant char SPLASH_CRUNCHED[] = kickasm( uses SPLASH) {{ .modify B2() {
.pc = SPLASH "SPLASH SCREEN" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_splash_mc = LoadPicture("pacman-splash.png", List().add($000000, $352879, $bfce72, $883932))
// 0:BLACK, 1:YELLOW
.var pic_splash_yellow = LoadPicture("pacman-splash.png", List().add($000000, $bfce72))
// 0:BLACK, 1:BLUE
.var pic_splash_blue = LoadPicture("pacman-splash.png", List().add($000000, $352879))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<147; ypos++) {
.if(ypos>25 && ypos<123) {
// Sprites in the sides are in single color blue on splash screen
.byte pic_splash_blue.getSinglecolorByte(xcol,ypos)
} else .if(xcol>2 && xcol<21) {
// Sprites 2-7 are in single color yellow on splash screen
.byte pic_splash_yellow.getSinglecolorByte(xcol,ypos)
} else {
// Sprites 0&1 are in multi color on splash screen
.byte pic_splash_mc.getMulticolorByte(xcol,ypos)
}
}
}
}
}}
__constant char * const SPRITES_1 = (char *) 24576
__constant char * const SPRITES_2 = (char *) 57344
__constant char * const SPRITES_COLOR = (char *) 53287
__constant char * const SPRITES_XPOS = (char *) 53248
__constant char * const SPRITES_YPOS = (char *) 53249
__constant char STOP = 0
__constant char * const TILES_LEFT = LEVEL_TILES+$a00
__constant char * const TILES_RIGHT = LEVEL_TILES+$a80
__constant char * const TILES_TYPE = LEVEL_TILES+$b00
__constant char TILE_TYPE::EMPTY = 0
__constant char TILE_TYPE::PILL = 1
__constant char TILE_TYPE::POWERUP = 2
__constant char TILE_TYPE::WALL = 4
__constant char UP = 4
__constant struct MOS6569_VICII * const VICII = (struct MOS6569_VICII *) 53248
__constant const char VICII_BMM = $20
__constant char * const VICII_CONTROL1 = (char *) 53265
__constant char * const VICII_CONTROL2 = (char *) 53270
__constant const char VICII_DEN = $10
__constant const char VICII_ECM = $40
__constant char * const VICII_MEMORY = (char *) 53272
__constant const char VICII_RSEL = 8
__constant const char VICII_RST8 = $80
__constant char WALL = 4
__constant char * const WIN_GFX = (char *) 42752
__constant char WIN_GFX_CRUNCHED[] = kickasm( uses WIN_GFX) {{ .modify B2() {
.pc = WIN_GFX "WIN GRAPHICS" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_win = LoadPicture("pacman-win.png", List().add($000000, $352879, $bfce72, $883932))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<25; ypos++) {
.byte pic_win.getMulticolorByte(xcol,ypos)
}
}
}
}}
__constant const char YELLOW = 7
void __start()
__loadstore volatile char anim_frame_idx // zp[1]:96 0.9019607843137255
__constant char bobs_bob_id[NUM_BOBS] = { 0, 0, 0, 0, 0 }
__constant char bobs_restore[NUM_BOBS*SIZE_BOB_RESTORE*2] = { fill( NUM_BOBS*SIZE_BOB_RESTORE*2, 0) }
__loadstore volatile char bobs_restore_base // zp[1]:33 1070.0
__constant char bobs_xcol[NUM_BOBS] = { $a, $a, $a, $a, $a }
__constant char bobs_yfine[NUM_BOBS] = { $2d, $2d, $2d, $2d, $2d }
__loadstore volatile char bottom_sprites_color // zp[1]:24 11040.0
__loadstore volatile char bottom_sprites_mc // zp[1]:25 11040.0
void byteboozer_decrunch(char * volatile crunched)
__loadstore char * volatile byteboozer_decrunch::crunched // zp[2]:36 438.5
__loadstore volatile char canvas_base_hi // zp[1]:32 1070.0
char choose_direction(char open_directions , char ghost_xtile , char ghost_ytile , char target_xtile , char target_ytile)
char choose_direction::$2 // reg byte a 202.0
char choose_direction::$4 // reg byte a 202.0
char choose_direction::$6 // reg byte a 202.0
char choose_direction::$8 // reg byte a 202.0
char choose_direction::direction
char choose_direction::direction#10 // direction zp[1]:51 28.857142857142858
char choose_direction::direction#6 // direction zp[1]:51 67.33333333333333
char choose_direction::direction#8 // direction zp[1]:51 57.714285714285715
char choose_direction::dist_down
char choose_direction::dist_down#0 // reg byte x 151.5
char choose_direction::dist_left
char choose_direction::dist_left#0 // dist_left zp[1]:34 151.5
char choose_direction::dist_min
char choose_direction::dist_min#10 // reg byte x 121.2
char choose_direction::dist_min#11 // dist_min zp[1]:34 101.0
char choose_direction::dist_min#13 // reg byte x 202.0
char choose_direction::dist_min#14 // reg byte x 202.0
char choose_direction::dist_min#17 // dist_min zp[1]:34 202.0
char choose_direction::dist_min#18 // dist_min zp[1]:34 202.0
char choose_direction::dist_min#6 // reg byte y 80.8
char choose_direction::dist_right
char choose_direction::dist_right#0 // reg byte a 202.0
char choose_direction::dist_up
char choose_direction::dist_up#0 // reg byte y 101.0
char choose_direction::ghost_xtile
char choose_direction::ghost_xtile#0 // reg byte y 5.5
char choose_direction::ghost_xtile#1 // reg byte y 5.5
char choose_direction::ghost_xtile#2 // reg byte y 5.5
char choose_direction::ghost_xtile#3 // reg byte y 5.5
char choose_direction::ghost_xtile#4 // reg byte y 145.0
char choose_direction::ghost_ytile
char choose_direction::ghost_ytile#0 // ghost_ytile zp[1]:52 7.333333333333333
char choose_direction::ghost_ytile#1 // ghost_ytile zp[1]:52 7.333333333333333
char choose_direction::ghost_ytile#2 // ghost_ytile zp[1]:52 7.333333333333333
char choose_direction::ghost_ytile#3 // ghost_ytile zp[1]:52 7.333333333333333
char choose_direction::ghost_ytile#4 // ghost_ytile zp[1]:52 72.5
char choose_direction::open_directions
char choose_direction::open_directions#0 // open_directions zp[1]:73 4.4
char choose_direction::open_directions#1 // open_directions zp[1]:73 4.4
char choose_direction::open_directions#10 // open_directions zp[1]:73 19.478260869565215
char choose_direction::open_directions#2 // open_directions zp[1]:73 4.4
char choose_direction::open_directions#3 // open_directions zp[1]:73 4.4
char choose_direction::return
char choose_direction::return#0 // reg byte a 22.0
char choose_direction::return#1 // reg byte a 22.0
char choose_direction::return#10 // return zp[1]:51 41.0
char choose_direction::return#2 // reg byte a 22.0
char choose_direction::return#3 // reg byte a 22.0
char choose_direction::target_xtile
char choose_direction::target_xtile#0 // reg byte x 11.0
char choose_direction::target_xtile#1 // reg byte x 11.0
char choose_direction::target_xtile#2 // reg byte x 11.0
char choose_direction::target_xtile#3 // reg byte x 11.0
char choose_direction::target_xtile#4 // reg byte x 145.0
char choose_direction::target_ytile
char choose_direction::target_ytile#0 // target_ytile zp[1]:39 22.0
char choose_direction::target_ytile#1 // target_ytile zp[1]:39 22.0
char choose_direction::target_ytile#2 // target_ytile zp[1]:39 22.0
char choose_direction::target_ytile#3 // target_ytile zp[1]:39 22.0
char choose_direction::target_ytile#4 // target_ytile zp[1]:39 72.5
char choose_direction::xdiff
char choose_direction::xdiff#0 // xdiff zp[1]:75 21.041666666666664
char choose_direction::ydiff
char choose_direction::ydiff#0 // ydiff zp[1]:52 21.956521739130434
void done_run()
char done_run::$8 // reg byte a 2000002.0
char *done_run::gfx
char *done_run::gfx#1 // gfx zp[2]:5 333333.6666666667
char *done_run::gfx#2 // gfx zp[2]:5 800001.25
char *done_run::gfx#4 // gfx zp[2]:5 100001.0
char done_run::i
char done_run::i#1 // reg byte x 200002.0
char done_run::i#2 // reg byte x 133334.66666666666
char done_run::i1
char done_run::i1#1 // reg byte x 200002.0
char done_run::i1#2 // reg byte x 120001.2
char done_run::pixels
char done_run::pixels#0 // reg byte x 500000.5
char done_run::xcol
char done_run::xcol#1 // xcol zp[1]:20 200002.0
char done_run::xcol#2 // xcol zp[1]:20 118182.18181818182
char done_run::ypos
char done_run::ypos#1 // ypos zp[1]:16 2000002.0
char done_run::ypos#2 // ypos zp[1]:16 500000.5
__loadstore volatile char frame // zp[1]:101 0.5
void game_logic()
char game_logic::$119 // reg byte a 22.0
char game_logic::$14 // reg byte x 22.0
char game_logic::$140 // reg byte a 22.0
char game_logic::$15 // reg byte a 22.0
char game_logic::$161 // reg byte a 22.0
char game_logic::$17 // reg byte a 22.0
char game_logic::$18 // reg byte x 22.0
char game_logic::$182 // reg byte a 22.0
char game_logic::$19 // reg byte x 11.0
char game_logic::$199 // reg byte a 22.0
char game_logic::$2 // reg byte x 22.0
char game_logic::$20 // reg byte a 22.0
char game_logic::$200 // reg byte a 22.0
char game_logic::$204 // reg byte a 22.0
char game_logic::$21 // reg byte a 22.0
char game_logic::$210 // zp[1]:34 2.588235294117647
char game_logic::$220 // reg byte x 11.0
char game_logic::$223 // reg byte x 11.0
char game_logic::$226 // reg byte x 11.0
char game_logic::$229 // reg byte x 11.0
char game_logic::$232 // reg byte x 11.0
char game_logic::$25 // reg byte a 22.0
char game_logic::$26 // reg byte x 22.0
char game_logic::$27 // reg byte x 11.0
char game_logic::$28 // reg byte a 22.0
char game_logic::$29 // reg byte a 22.0
char game_logic::$3 // reg byte a 22.0
char game_logic::$31 // reg byte a 22.0
char game_logic::$32 // reg byte x 22.0
char game_logic::$33 // reg byte x 11.0
char game_logic::$34 // reg byte a 22.0
char game_logic::$35 // reg byte a 22.0
char game_logic::$37 // reg byte a 22.0
char game_logic::$38 // reg byte x 22.0
char game_logic::$39 // reg byte x 11.0
char game_logic::$40 // reg byte a 22.0
char game_logic::$41 // reg byte a 22.0
char game_logic::$43 // reg byte a 22.0
char game_logic::$44 // reg byte x 22.0
char game_logic::$45 // reg byte x 11.0
char game_logic::$46 // reg byte a 22.0
char game_logic::$47 // reg byte a 22.0
char game_logic::$65 // reg byte a 22.0
char game_logic::$66 // reg byte a 22.0
char *game_logic::$67 // zp[2]:69 22.0
char game_logic::$68 // reg byte a 22.0
char game_logic::$69 // reg byte a 22.0
char game_logic::$70 // reg byte a 22.0
char *game_logic::$71 // zp[2]:69 22.0
char game_logic::$72 // reg byte a 22.0
char game_logic::$75 // reg byte x 11.0
char game_logic::$77 // reg byte y 11.0
char game_logic::$80 // reg byte x 11.0
char game_logic::$82 // reg byte y 11.0
char game_logic::$85 // reg byte x 11.0
char game_logic::$87 // reg byte y 11.0
char game_logic::$90 // reg byte x 11.0
char game_logic::$92 // reg byte y 11.0
char game_logic::do_reverse
char game_logic::do_reverse#4 // reg byte a 11.0
char game_logic::ghost1_bob_xfine
char game_logic::ghost1_bob_xfine#0 // reg byte y 5.5
char game_logic::ghost1_xtile
char game_logic::ghost1_xtile#0 // ghost1_xtile zp[1]:93 2.357142857142857
char game_logic::ghost1_ytile
char game_logic::ghost1_ytile#0 // ghost1_ytile zp[1]:52 2.357142857142857
char game_logic::ghost2_bob_xfine
char game_logic::ghost2_bob_xfine#0 // reg byte y 5.5
char game_logic::ghost2_xtile
char game_logic::ghost2_xtile#0 // ghost2_xtile zp[1]:92 2.357142857142857
char game_logic::ghost2_ytile
char game_logic::ghost2_ytile#0 // ghost2_ytile zp[1]:52 2.357142857142857
char game_logic::ghost3_bob_xfine
char game_logic::ghost3_bob_xfine#0 // reg byte y 5.5
char game_logic::ghost3_xtile
char game_logic::ghost3_xtile#0 // ghost3_xtile zp[1]:91 2.357142857142857
char game_logic::ghost3_ytile
char game_logic::ghost3_ytile#0 // ghost3_ytile zp[1]:52 2.357142857142857
char game_logic::ghost4_bob_xfine
char game_logic::ghost4_bob_xfine#0 // reg byte y 5.5
char game_logic::ghost4_xtile
char game_logic::ghost4_xtile#0 // ghost4_xtile zp[1]:51 2.357142857142857
char game_logic::ghost4_ytile
char game_logic::ghost4_ytile#0 // ghost4_ytile zp[1]:52 2.357142857142857
char game_logic::ghost_frame_idx
char game_logic::ghost_frame_idx#0 // ghost_frame_idx zp[1]:74 16.5
char game_logic::ghost_frame_idx#1 // ghost_frame_idx zp[1]:74 22.0
char game_logic::ghost_frame_idx#2 // ghost_frame_idx zp[1]:74 1.9999999999999998
char game_logic::joy_directions
char game_logic::joy_directions#0 // reg byte a 16.5
char game_logic::new_direction
char game_logic::new_direction#0 // reg byte a 16.5
char game_logic::open_directions
char game_logic::open_directions#0 // reg byte a 22.0
char game_logic::open_directions#1 // reg byte y 5.5
char game_logic::open_directions1
char game_logic::open_directions1#0 // reg byte a 22.0
char game_logic::open_directions1#1 // reg byte y 5.5
char game_logic::open_directions2
char game_logic::open_directions2#0 // reg byte a 22.0
char game_logic::open_directions2#1 // reg byte y 5.5
char game_logic::open_directions3
char game_logic::open_directions3#0 // reg byte a 22.0
char game_logic::open_directions3#1 // reg byte y 5.5
char game_logic::open_directions4
char game_logic::open_directions4#0 // reg byte x 3.666666666666667
char game_logic::pacman_bob_xfine
char game_logic::pacman_bob_xfine#0 // reg byte y 5.5
char game_logic::pacman_xtile
char game_logic::pacman_xtile#0 // pacman_xtile zp[1]:73 6.769230769230768
char game_logic::pacman_xtile1
char game_logic::pacman_xtile1#0 // reg byte x 11.0
char game_logic::pacman_ytile
char game_logic::pacman_ytile#0 // reg byte a 22.0
char game_logic::pacman_ytile1
char game_logic::pacman_ytile1#0 // reg byte a 11.0
char game_logic::target_xtile
char game_logic::target_xtile#2 // reg byte x 11.0
char game_logic::target_xtile#3 // reg byte x 5.5
char game_logic::target_xtile1
char game_logic::target_xtile1#2 // reg byte x 11.0
char game_logic::target_xtile1#3 // reg byte x 5.5
char game_logic::target_xtile2
char game_logic::target_xtile2#2 // reg byte x 11.0
char game_logic::target_xtile2#3 // reg byte x 5.5
char game_logic::target_xtile3
char game_logic::target_xtile3#2 // reg byte x 11.0
char game_logic::target_xtile3#3 // reg byte x 5.5
char game_logic::target_ytile
char game_logic::target_ytile#2 // target_ytile zp[1]:39 22.0
char game_logic::target_ytile#3 // target_ytile zp[1]:39 4.4
char game_logic::target_ytile1
char game_logic::target_ytile1#2 // target_ytile1 zp[1]:39 22.0
char game_logic::target_ytile1#3 // target_ytile1 zp[1]:39 4.4
char game_logic::target_ytile2
char game_logic::target_ytile2#2 // target_ytile2 zp[1]:39 22.0
char game_logic::target_ytile2#3 // target_ytile2 zp[1]:39 4.4
char game_logic::target_ytile3
char game_logic::target_ytile3#2 // target_ytile3 zp[1]:39 22.0
char game_logic::target_ytile3#3 // target_ytile3 zp[1]:39 4.4
char game_logic::tile_id
char game_logic::tile_id#0 // reg byte x 16.5
char *game_logic::ytiles
char *game_logic::ytiles#0 // ytiles zp[2]:69 5.5
__loadstore volatile char game_logic_substep // zp[1]:90 2.947368421052632
__loadstore volatile char game_playable // zp[1]:65 69.48275862068965
void gameplay_run()
unsigned int gameplay_run::$4 // zp[2]:9 2002.0
char gameplay_run::i
char gameplay_run::i#1 // reg byte x 200002.0
char gameplay_run::i#2 // reg byte x 133334.66666666666
char gameplay_run::i1
char gameplay_run::i1#1 // reg byte x 200002.0
char gameplay_run::i1#2 // reg byte x 133334.66666666666
char gameplay_run::i2
char gameplay_run::i2#1 // reg byte x 200002.0
char gameplay_run::i2#2 // reg byte x 133334.66666666666
__loadstore volatile char ghost1_direction // zp[1]:54 122.24096385542168
__loadstore volatile char ghost1_respawn // zp[1]:38 271.8378378378378
__loadstore volatile char ghost1_reverse // zp[1]:97 0.7291666666666666
__loadstore volatile char ghost1_substep // zp[1]:45 223.51111111111112
__loadstore volatile char ghost1_xfine // zp[1]:59 84.55
__loadstore volatile char ghost1_yfine // zp[1]:60 82.13008130081302
__loadstore volatile char ghost2_direction // zp[1]:55 110.28260869565217
__loadstore volatile char ghost2_respawn // zp[1]:40 264.6842105263158
__loadstore volatile char ghost2_reverse // zp[1]:98 0.7142857142857143
__loadstore volatile char ghost2_substep // zp[1]:46 218.65217391304347
__loadstore volatile char ghost2_xfine // zp[1]:62 76.28571428571428
__loadstore volatile char ghost2_yfine // zp[1]:63 74.27941176470588
__loadstore volatile char ghost3_direction // zp[1]:56 100.45544554455446
__loadstore volatile char ghost3_respawn // zp[1]:41 257.8974358974359
__loadstore volatile char ghost3_reverse // zp[1]:99 0.7
__loadstore volatile char ghost3_substep // zp[1]:47 214.0
__loadstore volatile char ghost3_xfine // zp[1]:64 69.4931506849315
__loadstore volatile char ghost3_yfine // zp[1]:66 67.7986577181208
__loadstore volatile char ghost4_direction // zp[1]:57 92.23636363636363
__loadstore volatile char ghost4_respawn // zp[1]:42 251.45000000000002
__loadstore volatile char ghost4_reverse // zp[1]:100 0.6862745098039216
__loadstore volatile char ghost4_substep // zp[1]:48 209.54166666666666
__loadstore volatile char ghost4_xfine // zp[1]:67 63.81132075471698
__loadstore volatile char ghost4_yfine // zp[1]:68 62.358024691358025
__constant char ghost_frames[] = { 0, 0, 0, 0, $3c, $40, $3c, $40, $34, $38, $34, $38, 0, 0, 0, 0, $2c, $30, $2c, $30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $24, $28, $24, $28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $5c, $60, $5c, $60, $54, $58, $54, $58, 0, 0, 0, 0, $4c, $50, $4c, $50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $44, $48, $44, $48 }
__loadstore volatile char ghosts_mode // zp[1]:95 1.1044776119402984
__loadstore volatile char ghosts_mode_count // zp[1]:43 234.93023255813955
void init_bobs_restore()
__constant char *init_bobs_restore::CANVAS_HIDDEN = (char *) 59904
char init_bobs_restore::bob
char init_bobs_restore::bob#1 // reg byte x 20002.0
char init_bobs_restore::bob#2 // reg byte x 2727.5454545454545
char *init_bobs_restore::bob_restore
char *init_bobs_restore::bob_restore#1 // bob_restore zp[2]:9 10001.0
char *init_bobs_restore::bob_restore#5 // bob_restore zp[2]:9 16000.7
char init_bobs_restore::i
char init_bobs_restore::i#1 // reg byte y 200002.0
char init_bobs_restore::i#2 // reg byte y 133334.66666666666
void init_level_tile_directions()
char init_level_tile_directions::$11 // reg byte a 2.0000002E7
char init_level_tile_directions::$15 // reg byte a 2.0000002E7
char init_level_tile_directions::$3 // reg byte x 2.0000002E7
char init_level_tile_directions::$7 // reg byte x 2.0000002E7
char *init_level_tile_directions::directions
char *init_level_tile_directions::directions#1 // directions zp[2]:9 1000001.0
char *init_level_tile_directions::directions#7 // directions zp[2]:9 315789.55263157893
char init_level_tile_directions::open_directions
char init_level_tile_directions::open_directions#11 // open_directions zp[1]:15 2857143.1428571427
char init_level_tile_directions::open_directions#12 // open_directions zp[1]:15 5714286.285714285
char init_level_tile_directions::open_directions#13 // open_directions zp[1]:15 5714286.285714285
char init_level_tile_directions::open_directions#2 // open_directions zp[1]:15 2.0000002E7
char init_level_tile_directions::open_directions#3 // open_directions zp[1]:15 2.0000002E7
char init_level_tile_directions::open_directions#4 // open_directions zp[1]:15 2.0000002E7
char init_level_tile_directions::open_directions#8 // open_directions zp[1]:15 3.0000003E7
char init_level_tile_directions::xtile
char init_level_tile_directions::xtile#1 // xtile zp[1]:16 2.0000002E7
char init_level_tile_directions::xtile#10 // xtile zp[1]:16 2285714.514285714
char init_level_tile_directions::ytile
char init_level_tile_directions::ytile#1 // ytile zp[1]:20 2000002.0
char init_level_tile_directions::ytile#15 // ytile zp[1]:20 1102564.282051282
void init_render_index()
unsigned int init_render_index::$10 // zp[2]:13 200002.0
unsigned int init_render_index::$11 // zp[2]:13 200002.0
unsigned int *init_render_index::$12 // zp[2]:13 200002.0
char init_render_index::$5 // reg byte a 200002.0
char init_render_index::$6 // reg byte a 200002.0
char init_render_index::$9 // reg byte a 20002.0
char *init_render_index::canvas
char *init_render_index::canvas#0 // canvas zp[2]:13 100001.0
char *init_render_index::canvas_xcol
char *init_render_index::canvas_xcol#0 // canvas_xcol zp[2]:3 5789.578947368421
char *init_render_index::render_index
char *init_render_index::render_index#1 // render_index zp[2]:5 10001.0
char *init_render_index::render_index_xcol
char *init_render_index::render_index_xcol#0 // render_index_xcol zp[2]:5 1200.1200000000001
char *init_render_index::render_index_xcol#1 // render_index_xcol_1 zp[2]:11 100001.0
char *init_render_index::render_index_xcol#2 // render_index_xcol_1 zp[2]:11 34000.4
char *init_render_index::render_index_xcol#7 // render_index_xcol_1 zp[2]:11 20002.0
unsigned int *init_render_index::render_ypos_table
unsigned int *init_render_index::render_ypos_table#4 // render_ypos_table zp[2]:9 4761.952380952381
char init_render_index::x_col
char init_render_index::x_col#1 // x_col zp[1]:20 20002.0
char init_render_index::x_col#2 // x_col zp[1]:20 1923.2692307692307
char init_render_index::y_pos
char init_render_index::y_pos#1 // y_pos zp[1]:16 200002.0
char init_render_index::y_pos#2 // y_pos zp[1]:16 18750.1875
char init_render_index::ypos_inc_offset
char init_render_index::ypos_inc_offset#2 // reg byte x 200002.0
char init_render_index::ypos_inc_offset#3 // reg byte x 200002.0
char init_render_index::ypos_inc_offset#4 // reg byte x 28182.181818181816
char init_render_index::ypos_inc_offset#7 // reg byte x 2500.25
char init_render_index::ypos_inc_offset#8 // reg byte x 100001.0
void init_sprite_pointers()
char init_sprite_pointers::$2 // reg byte a 2.0000002E7
__constant const char init_sprite_pointers::SPRITE_ID_0 = (char)SPRITES_1&$3fff/$40
char init_sprite_pointers::screen
char init_sprite_pointers::screen#1 // reg byte x 2000002.0
char init_sprite_pointers::screen#2 // reg byte x 1181818.5454545454
char init_sprite_pointers::sprite
char init_sprite_pointers::sprite#1 // reg byte y 2.0000002E7
char init_sprite_pointers::sprite#2 // reg byte y 1.0000001E7
char init_sprite_pointers::sprite_id
char init_sprite_pointers::sprite_id#0 // reg byte a 1.50000015E7
__constant char init_sprite_pointers::sprites_id[] = { 0, $70, $60, $50, $40, $30, $20, $10 }
char *init_sprite_pointers::sprites_ptr_1
char *init_sprite_pointers::sprites_ptr_1#1 // sprites_ptr_1 zp[2]:9 666667.3333333334
char *init_sprite_pointers::sprites_ptr_1#5 // sprites_ptr_1 zp[2]:9 1333333.6666666667
char *init_sprite_pointers::sprites_ptr_2
char *init_sprite_pointers::sprites_ptr_2#1 // sprites_ptr_2 zp[2]:7 1000001.0
char *init_sprite_pointers::sprites_ptr_2#5 // sprites_ptr_2 zp[2]:7 1200000.3
__interrupt(hardware_clobber) void irq_screen_top()
char irq_screen_top::$1 // reg byte a 4.0
char irq_screen_top::$2 // reg byte a 4.0
char *irq_screen_top::toD0181_gfx
char irq_screen_top::toD0181_return
__constant char irq_screen_top::toD0181_return#0 = 0 // toD0181_return
char *irq_screen_top::toD0181_screen
char *irq_screen_top::toDd001_gfx
char irq_screen_top::toDd001_return
__constant char irq_screen_top::toDd001_return#0 = 0 // toDd001_return
char *irq_screen_top::toDd002_gfx
char irq_screen_top::toDd002_return
__constant char irq_screen_top::toDd002_return#0 = 3^byte1 (unsigned int)SCREENS_1/$40 // toDd002_return
char joyfire()
char joyfire::$0 // reg byte a 2.0000002E7
char joyfire::return
char joyfire::return#0 // reg byte a 2000002.0
char joyfire::return#1 // reg byte a 20002.0
char joyfire::return#4 // reg byte a 252500.5
void joyinit()
__loadstore char * volatile left_canvas // zp[2]:80 20.0
__loadstore char * volatile left_render_index_xcol // zp[2]:78 20.0
__loadstore volatile char left_ypos_inc_offset // zp[1]:82 20.0
unsigned int level_show()
unsigned int level_show::count
unsigned int level_show::count#1 // count zp[2]:9 2.0000002E7
unsigned int level_show::count#10 // count zp[2]:9 4571429.285714285
unsigned int level_show::count#11 // count zp[2]:9 4285714.714285715
unsigned int level_show::count#12 // count zp[2]:9 500250.75
unsigned int level_show::count#2 // count zp[2]:9 2.0000002E7
unsigned int level_show::count#5 // count zp[2]:9 1.0000001E7
char *level_show::level
char *level_show::level#1 // level zp[2]:7 1000001.0
char *level_show::level#8 // level zp[2]:7 1100000.2
unsigned int level_show::return
unsigned int level_show::return#0 // return zp[2]:9 2002.0
char level_show::tile_left
char level_show::tile_left#0 // reg byte x 2500000.25
char level_show::tile_right
char level_show::tile_right#0 // tile_right zp[1]:2 3750000.375
char level_show::xcol
char level_show::xcol#1 // xcol zp[1]:15 2.0000002E7
char level_show::xcol#2 // xcol zp[1]:15 2352941.411764706
char level_show::xtile
char level_show::xtile#1 // reg byte y 6000000.6
char level_show::xtile#2 // xtile zp[1]:19 2000000.2
char level_show::xtile#3 // xtile zp[1]:19 1.0000001E7
char level_show::ytile
char level_show::ytile#1 // ytile zp[1]:16 2000002.0
char level_show::ytile#2 // ytile zp[1]:16 619047.8095238095
char level_tile_directions(char xtile , char ytile)
char level_tile_directions::$5 // reg byte a 202.0
char level_tile_directions::return
char level_tile_directions::return#0 // reg byte a 202.0
char level_tile_directions::return#10 // reg byte a 22.0
char level_tile_directions::return#11 // reg byte a 22.0
char level_tile_directions::return#12 // reg byte a 22.0
char level_tile_directions::return#13 // reg byte a 22.0
char level_tile_directions::return#2 // reg byte a 22.285714285714285
char level_tile_directions::return#3 // reg byte a 22.0
char level_tile_directions::xtile
char level_tile_directions::xtile#0 // reg byte x 11.0
char level_tile_directions::xtile#1 // reg byte x 11.0
char level_tile_directions::xtile#2 // reg byte x 11.0
char level_tile_directions::xtile#3 // reg byte x 11.0
char level_tile_directions::xtile#4 // reg byte x 11.0
char level_tile_directions::xtile#5 // reg byte x 51.4
char level_tile_directions::ytile
char level_tile_directions::ytile#0 // reg byte a 22.0
char level_tile_directions::ytile#1 // reg byte a 22.0
char level_tile_directions::ytile#2 // reg byte a 22.0
char level_tile_directions::ytile#3 // reg byte a 22.0
char level_tile_directions::ytile#4 // reg byte a 22.0
char level_tile_directions::ytile#5 // reg byte a 85.66666666666666
char *level_tile_directions::ytiles
char *level_tile_directions::ytiles#0 // ytiles zp[2]:49 202.0
char level_tile_get(char xtile , char ytile)
char level_tile_get::$5 // reg byte a 2.00000002E8
char level_tile_get::return
char level_tile_get::return#0 // reg byte a 2.00000002E8
char level_tile_get::return#10 // reg byte a 2.0000002E7
char level_tile_get::return#11 // reg byte a 2.0000002E7
char level_tile_get::return#2 // reg byte a 2.3333334166666668E7
char level_tile_get::return#3 // reg byte a 2.0000002E7
char level_tile_get::return#4 // reg byte a 2.0000002E7
char level_tile_get::xtile
char level_tile_get::xtile#0 // reg byte x 1.0000001E7
char level_tile_get::xtile#1 // reg byte x 1.0000001E7
char level_tile_get::xtile#2 // reg byte x 2.0000002E7
char level_tile_get::xtile#3 // reg byte x 2.0000002E7
char level_tile_get::xtile#4 // reg byte x 4.80000012E7
char level_tile_get::ytile
char level_tile_get::ytile#0 // reg byte a 2.0000002E7
char level_tile_get::ytile#1 // reg byte a 2.0000002E7
char level_tile_get::ytile#2 // reg byte a 1.0000001E7
char level_tile_get::ytile#3 // reg byte a 1.0000001E7
char level_tile_get::ytile#4 // reg byte a 8.0000002E7
char *level_tile_get::ytiles
char *level_tile_get::ytiles#0 // ytiles zp[2]:13 2.00000002E8
__loadstore volatile char logic_tile_left_idx // zp[1]:76 20.0
__loadstore volatile char * volatile logic_tile_ptr // zp[2]:26 10250.0
__loadstore volatile char logic_tile_right_idx // zp[1]:77 20.0
__loadstore volatile char logic_tile_xcol // zp[1]:28 10250.0
__loadstore volatile char logic_tile_yfine // zp[1]:29 10250.0
void main()
void * memcpy(void *destination , void *source , unsigned int num)
void *memcpy::destination
__constant void *memcpy::destination#0 = (void *)INTRO_MUSIC_CRUNCHED_UPPER // destination
char *memcpy::dst
char *memcpy::dst#1 // dst zp[2]:9 10001.0
char *memcpy::dst#2 // dst zp[2]:9 10001.0
unsigned int memcpy::num
void *memcpy::return
void *memcpy::source
__constant void *memcpy::source#0 = (void *)INTRO_MUSIC_CRUNCHED // source
char *memcpy::src
char *memcpy::src#1 // src zp[2]:7 20002.0
char *memcpy::src#2 // src zp[2]:7 10001.0
char *memcpy::src_end
__constant char *memcpy::src_end#0 = (char *)memcpy::source#0+INTRO_MUSIC_CRUNCHED_SIZE // src_end
void * memset(void *str , char c , unsigned int num)
char memset::c
char *memset::dst
char *memset::dst#1 // dst zp[2]:11 20002.0
char *memset::dst#2 // dst zp[2]:11 13668.333333333332
char *memset::dst#4 // dst zp[2]:11 2002.0
char *memset::end
char *memset::end#0 // end zp[2]:5 1833.6666666666665
unsigned int memset::num
unsigned int memset::num#5 // num zp[2]:5 1001.0
void *memset::return
void *memset::str
void *memset::str#6 // str zp[2]:11
void merge_code(char *dest_code , char *raster_code , char *logic_code)
char merge_code::$5 // reg byte y 100001.0
__constant const char merge_code::LOGIC_END = $ff
__constant const char merge_code::LOGIC_EXIT = 0
__constant const char merge_code::RASTER_END = $ff
__constant const char merge_code::RASTER_EXIT = 0
char merge_code::cycle_budget
char merge_code::cycle_budget#0 // reg byte x 10001.0
char merge_code::cycle_budget#1 // reg byte x 200002.0
char merge_code::cycle_budget#10 // reg byte x 88889.77777777777
char merge_code::cycle_budget#13 // reg byte x 50714.857142857145
char merge_code::cycle_budget#2 // reg byte x 200002.0
char merge_code::cycle_budget#3 // reg byte x 200002.0
char *merge_code::dest_code
char *merge_code::dest_code#0 // dest_code zp[2]:9 10001.0
char *merge_code::dest_code#1 // dest_code zp[2]:9 1000001.0
char *merge_code::dest_code#10 // dest_code zp[2]:9 180001.80000000002
char *merge_code::dest_code#12 // dest_code zp[2]:9 10334.666666666666
char *merge_code::dest_code#13 // dest_code zp[2]:9 80001.25
char *merge_code::dest_code#14 // dest_code zp[2]:9 21429.428571428572
char *merge_code::dest_code#15 // dest_code zp[2]:9 640001.0
char *merge_code::dest_code#2 // dest_code zp[2]:9 150001.5
char *merge_code::dest_code#21 // dest_code zp[2]:9 51250.625
char *merge_code::dest_code#3 // dest_code zp[2]:9 100001.0
char *merge_code::dest_code#4 // dest_code zp[2]:9 100001.0
char *merge_code::dest_code#6 // dest_code zp[2]:9 100001.0
char *merge_code::logic_code
char *merge_code::logic_code#0 // logic_code zp[2]:5 200002.0
char *merge_code::logic_code#1 // logic_code zp[2]:5 2000002.0
char *merge_code::logic_code#10 // logic_code zp[2]:5 1050001.5
char *merge_code::logic_code#12 // logic_code zp[2]:5 20002.0
char *merge_code::logic_code#14 // logic_code zp[2]:5 105001.5
char *merge_code::logic_code#17 // logic_code zp[2]:5 22778.055555555555
char *merge_code::logic_code#18 // logic_code zp[2]:5 15556.111111111113
char *merge_code::logic_code#2 // logic_code zp[2]:5 100001.0
char *merge_code::logic_code#3 // logic_code zp[2]:5 20002.0
char *merge_code::logic_code#4 // logic_code zp[2]:5 200002.0
char *merge_code::logic_code#5 // logic_code zp[2]:5 20002.0
char merge_code::logic_cycles
char merge_code::logic_cycles#0 // logic_cycles zp[1]:2 41667.08333333333
char *merge_code::raster_code
char *merge_code::raster_code#0 // raster_code zp[2]:11 20002.0
char *merge_code::raster_code#1 // raster_code zp[2]:11 15001.5
char *merge_code::raster_code#2 // raster_code zp[2]:11 3928.6428571428573
char *merge_code::raster_code#4 // raster_code zp[2]:11 37501.5
__constant void (* const musicInit)() = (void (*)())INTRO_MUSIC
__constant void (* const musicPlay)() = (void (*)())INTRO_MUSIC+6
__loadstore volatile char music_play_next // zp[1]:21 69506.875
__loadstore volatile char pacman_ch1_enabled // zp[1]:102 0.08254716981132076
__loadstore volatile char pacman_ch1_idx // zp[1]:94 1.9428571428571428
__loadstore volatile char pacman_direction // zp[1]:53 132.92105263157893
__constant char pacman_frames[] = { 8, 8, 8, 8, 8, $18, $14, $18, 8, $20, $1c, $20, 0, 0, 0, 0, 8, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, $c, $10, $c }
__loadstore volatile char pacman_lives // zp[1]:35 656.4415584415585
void pacman_sound_init()
void pacman_sound_play()
__loadstore volatile char pacman_substep // zp[1]:44 233.39534883720933
__loadstore volatile char pacman_wins // zp[1]:31 2040.32
__loadstore volatile char pacman_xfine // zp[1]:71 47.719626168224295
__loadstore volatile char pacman_yfine // zp[1]:72 46.21818181818182
__loadstore volatile char phase // zp[1]:61 78.03703703703704
__loadstore volatile unsigned int pill_count // zp[2]:88 14.191780821917808
void render(char xcol , char ypos , char pixels)
char render::$1 // reg byte x 1.0000001E7
char render::$2 // reg byte a 2.0000002E7
char *render::canvas1
char *render::canvas1#0 // canvas1 zp[2]:7 5000000.5
char *render::canvas1#1 // canvas1 zp[2]:7 5.00000000005E10
char *render::canvas1#2 // canvas1 zp[2]:7 1.00010000002E11
char *render::canvas2
char *render::canvas2#0 // canvas2 zp[2]:9 6666667.333333333
char *render::canvas2#1 // canvas2 zp[2]:9 6.6666666667333336E10
char *render::canvas2#2 // canvas2 zp[2]:9 5.0005000001E10
unsigned int render::canvas_offset
unsigned int render::canvas_offset#0 // canvas_offset zp[2]:9 1.50000015E7
char render::i
char render::i#1 // reg byte y 2.00000000002E11
char render::i#2 // reg byte y 6.0000000000600006E10
char render::pixels
char render::pixels#0 // pixels zp[1]:19 2000002.0
char render::pixels#1 // pixels zp[1]:19 200002.0
char render::pixels#4 // pixels zp[1]:19 1241176.705882353
char *render::render_index_xcol
unsigned int render::render_index_xcol#0 // render_index_xcol zp[2]:13 2500000.25
char render::xcol
char render::xcol#0 // xcol zp[1]:20 666667.3333333334
char render::xcol#1 // xcol zp[1]:20 66667.33333333333
char render::xcol#2 // xcol zp[1]:20 5550001.5
char render::ypix
char render::ypix#0 // ypix zp[1]:2 1.4287142857428572E10
char render::ypos
char render::ypos#0 // ypos zp[1]:16 1000001.0
char render::ypos#1 // ypos zp[1]:16 100001.0
char render::ypos#2 // ypos zp[1]:16 2344444.888888889
char render::ypos_inc_offset
char render::ypos_inc_offset#0 // reg byte x 1.0000001E7
char render::ypos_inc_offset#1 // reg byte x 1.00000000001E11
char render::ypos_inc_offset#2 // reg byte x 1.0000250000125E11
char render::ytile
char render::ytile#0 // reg byte y 1.0000001E7
void render_tiles(char xcol , char ytile , char tile_left , char tile_right)
char render_tiles::$0 // reg byte a 2.00000002E8
char render_tiles::$2 // reg byte a 2.00000002E8
char render_tiles::$4 // reg byte x 1.00000001E8
char render_tiles::$5 // reg byte a 2.00000002E8
char *render_tiles::canvas1
char *render_tiles::canvas1#0 // canvas1 zp[2]:5 6.6666667333333336E7
char *render_tiles::canvas1#1 // canvas1 zp[2]:5 5.000000000005E11
char *render_tiles::canvas1#2 // canvas1 zp[2]:5 6.000200000008E11
char *render_tiles::canvas2
char *render_tiles::canvas2#0 // canvas2 zp[2]:3 1.00000001E8
char *render_tiles::canvas2#1 // canvas2 zp[2]:3 6.666666666673334E11
char *render_tiles::canvas2#2 // canvas2 zp[2]:3 5.000166666673334E11
unsigned int render_tiles::canvas_offset
unsigned int render_tiles::canvas_offset#0 // canvas_offset zp[2]:3 1.500000015E8
char render_tiles::pixels
char render_tiles::pixels#0 // reg byte a 1.5000000000015E12
char *render_tiles::render_index_xcol
unsigned int render_tiles::render_index_xcol#0 // render_index_xcol zp[2]:17 2.500000025E7
char render_tiles::tile_left
char render_tiles::tile_left#0 // reg byte x 5.5000001E7
char *render_tiles::tile_left_pixels
char *render_tiles::tile_left_pixels#0 // tile_left_pixels zp[2]:13 5.2636842105368416E10
char render_tiles::tile_right
char render_tiles::tile_right#0 // reg byte y 3.6666667333333336E7
char *render_tiles::tile_right_pixels
char *render_tiles::tile_right_pixels#0 // tile_right_pixels zp[2]:11 5.882941176482353E10
char render_tiles::xcol
char render_tiles::xcol#0 // xcol zp[1]:15 1.375000025E7
char render_tiles::y
char render_tiles::y#1 // y zp[1]:2 2.000000000002E12
char render_tiles::y#2 // y zp[1]:2 6.25000000000625E11
char render_tiles::ypos_inc_offset
char render_tiles::ypos_inc_offset#0 // reg byte x 2.00000002E8
char render_tiles::ypos_inc_offset#1 // reg byte x 1.000000000001E12
char render_tiles::ypos_inc_offset#2 // reg byte x 5.714428571435714E11
char render_tiles::ytile
char render_tiles::ytile#0 // ytile zp[1]:16 1.375000025E7
__loadstore char * volatile rigt_canvas // zp[2]:85 20.0
__loadstore char * volatile rigt_render_index_xcol // zp[2]:83 20.0
__loadstore volatile char rigt_ypos_inc_offset // zp[1]:87 20.0
__loadstore volatile char side_sprites_color // zp[1]:22 11040.0
__loadstore volatile char side_sprites_mc // zp[1]:23 11040.0
void spawn_all()
void splash_run()
char splash_run::$25 // reg byte a 2002.0
char splash_run::$30 // reg byte a 20002.0
char splash_run::$34 // reg byte y 1334.6666666666667
char splash_run::i
char splash_run::i#1 // i zp[1]:20 2002.0
char splash_run::i#2 // i zp[1]:20 364.0
char splash_run::i1
char splash_run::i1#1 // reg byte x 2002.0
char splash_run::i1#2 // reg byte x 1334.6666666666667
char splash_run::i2
char splash_run::i2#1 // reg byte x 2002.0
char splash_run::i2#2 // reg byte x 1201.2
char splash_run::msb
char splash_run::msb#1 // reg byte x 1001.0
char splash_run::msb#10 // reg byte x 175.25
char splash_run::msb#2 // reg byte x 2002.0
char splash_run::msb#8 // reg byte x 1501.5
__constant unsigned int splash_run::sprites_xpos[] = { $1e7, $13f, $10f, $df, $af, $7f, $4f, $1f }
char *splash_run::toD0181_gfx
char splash_run::toD0181_return
__constant char splash_run::toD0181_return#0 = 0 // toD0181_return
char *splash_run::toD0181_screen
char *splash_run::toDd001_gfx
char splash_run::toDd001_return
__constant char splash_run::toDd001_return#0 = 3^byte1 (unsigned int)SCREENS_1/$40 // toDd001_return
unsigned int splash_run::xpos
unsigned int splash_run::xpos#0 // xpos zp[2]:5 667.3333333333334
void splash_show()
char splash_show::pixels
char splash_show::pixels#0 // reg byte x 50000.5
char *splash_show::splash
char *splash_show::splash#1 // splash zp[2]:11 33333.666666666664
char *splash_show::splash#2 // splash zp[2]:11 80001.25
char *splash_show::splash#4 // splash zp[2]:11 10001.0
char splash_show::xcol
char splash_show::xcol#1 // xcol zp[1]:20 20002.0
char splash_show::xcol#2 // xcol zp[1]:20 11818.545454545454
char splash_show::ypos
char splash_show::ypos#1 // ypos zp[1]:16 200002.0
char splash_show::ypos#2 // ypos zp[1]:16 50000.5
__loadstore volatile char top_sprites_color // zp[1]:30 3403.666666666667
__loadstore volatile char top_sprites_mc // zp[1]:58 92.0
zp[1]:74 [ game_logic::ghost_frame_idx#2 game_logic::ghost_frame_idx#0 game_logic::ghost_frame_idx#1 ]
reg byte a [ game_logic::do_reverse#4 ]
reg byte x [ game_logic::target_xtile#3 game_logic::target_xtile#2 ]
zp[1]:39 [ game_logic::target_ytile#3 game_logic::target_ytile#2 choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 game_logic::target_ytile1#3 game_logic::target_ytile1#2 game_logic::target_ytile2#3 game_logic::target_ytile2#2 game_logic::target_ytile3#3 game_logic::target_ytile3#2 ]
reg byte x [ game_logic::target_xtile1#3 game_logic::target_xtile1#2 ]
reg byte x [ game_logic::target_xtile2#3 game_logic::target_xtile2#2 ]
reg byte x [ game_logic::target_xtile3#3 game_logic::target_xtile3#2 ]
reg byte x [ splash_run::msb#10 splash_run::msb#8 splash_run::msb#1 splash_run::msb#2 ]
reg byte x [ splash_run::i1#2 splash_run::i1#1 ]
reg byte x [ splash_run::i2#2 splash_run::i2#1 ]
reg byte x [ gameplay_run::i#2 gameplay_run::i#1 ]
reg byte x [ gameplay_run::i1#2 gameplay_run::i1#1 ]
reg byte x [ gameplay_run::i2#2 gameplay_run::i2#1 ]
reg byte x [ done_run::i#2 done_run::i#1 ]
reg byte x [ done_run::i1#2 done_run::i1#1 ]
reg byte x [ level_tile_directions::xtile#5 level_tile_directions::xtile#1 level_tile_directions::xtile#2 level_tile_directions::xtile#3 level_tile_directions::xtile#4 level_tile_directions::xtile#0 ]
reg byte a [ level_tile_directions::ytile#5 level_tile_directions::ytile#1 level_tile_directions::ytile#2 level_tile_directions::ytile#3 level_tile_directions::ytile#4 level_tile_directions::ytile#0 ]
reg byte a [ level_tile_directions::return#2 level_tile_directions::return#0 ]
reg byte y [ choose_direction::ghost_xtile#4 choose_direction::ghost_xtile#2 choose_direction::ghost_xtile#3 choose_direction::ghost_xtile#0 choose_direction::ghost_xtile#1 ]
reg byte x [ choose_direction::target_xtile#4 choose_direction::target_xtile#2 choose_direction::target_xtile#3 choose_direction::target_xtile#0 choose_direction::target_xtile#1 ]
zp[1]:52 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 game_logic::ghost4_ytile#0 game_logic::ghost3_ytile#0 game_logic::ghost2_ytile#0 game_logic::ghost1_ytile#0 choose_direction::ydiff#0 ]
reg byte y [ choose_direction::dist_min#6 choose_direction::dist_up#0 ]
reg byte x [ choose_direction::dist_min#10 choose_direction::dist_min#13 choose_direction::dist_min#14 choose_direction::dist_down#0 ]
reg byte x [ merge_code::cycle_budget#10 merge_code::cycle_budget#2 merge_code::cycle_budget#3 merge_code::cycle_budget#13 merge_code::cycle_budget#0 merge_code::cycle_budget#1 ]
reg byte x [ init_render_index::ypos_inc_offset#4 init_render_index::ypos_inc_offset#7 init_render_index::ypos_inc_offset#8 init_render_index::ypos_inc_offset#2 init_render_index::ypos_inc_offset#3 ]
reg byte x [ init_bobs_restore::bob#2 init_bobs_restore::bob#1 ]
reg byte y [ init_bobs_restore::i#2 init_bobs_restore::i#1 ]
reg byte x [ init_sprite_pointers::screen#2 init_sprite_pointers::screen#1 ]
reg byte y [ init_sprite_pointers::sprite#2 init_sprite_pointers::sprite#1 ]
reg byte a [ joyfire::return#4 ]
zp[1]:20 [ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 splash_run::i#2 splash_run::i#1 init_render_index::x_col#2 init_render_index::x_col#1 done_run::xcol#2 done_run::xcol#1 render::xcol#2 render::xcol#0 render::xcol#1 splash_show::xcol#2 splash_show::xcol#1 ]
zp[1]:16 [ level_show::ytile#2 level_show::ytile#1 render_tiles::ytile#0 init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 init_render_index::y_pos#2 init_render_index::y_pos#1 done_run::ypos#2 done_run::ypos#1 render::ypos#2 render::ypos#0 render::ypos#1 splash_show::ypos#2 splash_show::ypos#1 ]
zp[1]:15 [ level_show::xcol#2 level_show::xcol#1 render_tiles::xcol#0 init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ]
zp[1]:19 [ render::pixels#4 render::pixels#0 render::pixels#1 level_show::xtile#3 level_show::xtile#2 ]
reg byte y [ render::i#2 render::i#1 ]
zp[2]:7 [ render::canvas1#2 render::canvas1#0 render::canvas1#1 level_show::level#8 level_show::level#1 memcpy::src#2 memcpy::src#1 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_2#1 ]
reg byte x [ render::ypos_inc_offset#2 render::ypos_inc_offset#0 render::ypos_inc_offset#1 ]
zp[2]:9 [ render::canvas2#2 render::canvas2#0 render::canvas2#1 render::canvas_offset#0 level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 level_show::return#0 gameplay_run::$4 init_level_tile_directions::directions#7 init_level_tile_directions::directions#1 memcpy::dst#2 memcpy::dst#1 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_1#1 init_bobs_restore::bob_restore#5 init_bobs_restore::bob_restore#1 init_render_index::render_ypos_table#4 merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 merge_code::dest_code#2 ]
reg byte x [ level_tile_get::xtile#4 level_tile_get::xtile#0 level_tile_get::xtile#1 level_tile_get::xtile#2 level_tile_get::xtile#3 ]
reg byte a [ level_tile_get::ytile#4 level_tile_get::ytile#0 level_tile_get::ytile#1 level_tile_get::ytile#2 level_tile_get::ytile#3 ]
reg byte a [ level_tile_get::return#2 level_tile_get::return#0 ]
reg byte x [ render_tiles::ypos_inc_offset#2 render_tiles::ypos_inc_offset#0 render_tiles::ypos_inc_offset#1 ]
zp[1]:102 [ pacman_ch1_enabled ]
zp[1]:94 [ pacman_ch1_idx ]
zp[2]:26 [ logic_tile_ptr ]
zp[1]:28 [ logic_tile_xcol ]
zp[1]:29 [ logic_tile_yfine ]
zp[1]:76 [ logic_tile_left_idx ]
zp[1]:77 [ logic_tile_right_idx ]
zp[2]:78 [ left_render_index_xcol ]
zp[2]:80 [ left_canvas ]
zp[1]:82 [ left_ypos_inc_offset ]
zp[2]:83 [ rigt_render_index_xcol ]
zp[2]:85 [ rigt_canvas ]
zp[1]:87 [ rigt_ypos_inc_offset ]
zp[1]:32 [ canvas_base_hi ]
zp[1]:33 [ bobs_restore_base ]
zp[1]:30 [ top_sprites_color ]
zp[1]:58 [ top_sprites_mc ]
zp[1]:22 [ side_sprites_color ]
zp[1]:23 [ side_sprites_mc ]
zp[1]:24 [ bottom_sprites_color ]
zp[1]:25 [ bottom_sprites_mc ]
zp[2]:88 [ pill_count ]
zp[1]:31 [ pacman_wins ]
zp[1]:35 [ pacman_lives ]
zp[1]:21 [ music_play_next ]
zp[1]:61 [ phase ]
zp[1]:101 [ frame ]
zp[1]:96 [ anim_frame_idx ]
zp[1]:71 [ pacman_xfine ]
zp[1]:72 [ pacman_yfine ]
zp[1]:53 [ pacman_direction ]
zp[1]:44 [ pacman_substep ]
zp[1]:95 [ ghosts_mode ]
zp[1]:43 [ ghosts_mode_count ]
zp[1]:59 [ ghost1_xfine ]
zp[1]:60 [ ghost1_yfine ]
zp[1]:54 [ ghost1_direction ]
zp[1]:45 [ ghost1_substep ]
zp[1]:97 [ ghost1_reverse ]
zp[1]:38 [ ghost1_respawn ]
zp[1]:62 [ ghost2_xfine ]
zp[1]:63 [ ghost2_yfine ]
zp[1]:55 [ ghost2_direction ]
zp[1]:46 [ ghost2_substep ]
zp[1]:98 [ ghost2_reverse ]
zp[1]:40 [ ghost2_respawn ]
zp[1]:64 [ ghost3_xfine ]
zp[1]:66 [ ghost3_yfine ]
zp[1]:56 [ ghost3_direction ]
zp[1]:47 [ ghost3_substep ]
zp[1]:99 [ ghost3_reverse ]
zp[1]:41 [ ghost3_respawn ]
zp[1]:67 [ ghost4_xfine ]
zp[1]:68 [ ghost4_yfine ]
zp[1]:57 [ ghost4_direction ]
zp[1]:48 [ ghost4_substep ]
zp[1]:100 [ ghost4_reverse ]
zp[1]:42 [ ghost4_respawn ]
zp[1]:90 [ game_logic_substep ]
zp[1]:65 [ game_playable ]
reg byte a [ irq_screen_top::$1 ]
reg byte a [ irq_screen_top::$2 ]
reg byte x [ game_logic::$2 ]
reg byte a [ game_logic::$3 ]
reg byte x [ game_logic::$14 ]
reg byte a [ game_logic::$15 ]
reg byte y [ game_logic::pacman_bob_xfine#0 ]
reg byte a [ game_logic::$17 ]
reg byte x [ game_logic::$18 ]
reg byte x [ game_logic::$19 ]
reg byte a [ game_logic::$20 ]
reg byte a [ game_logic::$21 ]
reg byte y [ game_logic::ghost1_bob_xfine#0 ]
reg byte a [ game_logic::$25 ]
reg byte x [ game_logic::$26 ]
reg byte x [ game_logic::$27 ]
reg byte a [ game_logic::$28 ]
reg byte a [ game_logic::$29 ]
reg byte y [ game_logic::ghost2_bob_xfine#0 ]
reg byte a [ game_logic::$31 ]
reg byte x [ game_logic::$32 ]
reg byte x [ game_logic::$33 ]
reg byte a [ game_logic::$34 ]
reg byte a [ game_logic::$35 ]
reg byte y [ game_logic::ghost3_bob_xfine#0 ]
reg byte a [ game_logic::$37 ]
reg byte x [ game_logic::$38 ]
reg byte x [ game_logic::$39 ]
reg byte a [ game_logic::$40 ]
reg byte a [ game_logic::$41 ]
reg byte y [ game_logic::ghost4_bob_xfine#0 ]
reg byte a [ game_logic::$43 ]
reg byte x [ game_logic::$44 ]
reg byte x [ game_logic::$45 ]
reg byte a [ game_logic::$46 ]
reg byte a [ game_logic::$47 ]
zp[1]:73 [ game_logic::pacman_xtile#0 choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ]
reg byte a [ game_logic::pacman_ytile#0 ]
zp[1]:34 [ game_logic::$210 choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ]
zp[2]:69 [ game_logic::ytiles#0 game_logic::$67 game_logic::$71 ]
reg byte x [ game_logic::tile_id#0 ]
reg byte a [ game_logic::$65 ]
reg byte a [ game_logic::$66 ]
reg byte a [ game_logic::$68 ]
reg byte x [ game_logic::$75 ]
reg byte y [ game_logic::$77 ]
reg byte x [ game_logic::$80 ]
reg byte y [ game_logic::$82 ]
reg byte x [ game_logic::$85 ]
reg byte y [ game_logic::$87 ]
reg byte x [ game_logic::$90 ]
reg byte y [ game_logic::$92 ]
reg byte a [ game_logic::$69 ]
reg byte a [ game_logic::$70 ]
reg byte a [ game_logic::$72 ]
reg byte x [ game_logic::$220 ]
zp[1]:51 [ game_logic::ghost4_xtile#0 choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ]
reg byte a [ level_tile_directions::return#3 ]
reg byte a [ game_logic::open_directions#0 ]
reg byte y [ game_logic::open_directions#1 ]
reg byte a [ choose_direction::return#0 ]
reg byte a [ game_logic::$119 ]
reg byte x [ game_logic::$223 ]
zp[1]:91 [ game_logic::ghost3_xtile#0 ]
reg byte a [ level_tile_directions::return#10 ]
reg byte a [ game_logic::open_directions1#0 ]
reg byte y [ game_logic::open_directions1#1 ]
reg byte a [ choose_direction::return#1 ]
reg byte a [ game_logic::$140 ]
reg byte x [ game_logic::$226 ]
zp[1]:92 [ game_logic::ghost2_xtile#0 ]
reg byte a [ level_tile_directions::return#11 ]
reg byte a [ game_logic::open_directions2#0 ]
reg byte y [ game_logic::open_directions2#1 ]
reg byte a [ choose_direction::return#2 ]
reg byte a [ game_logic::$161 ]
reg byte x [ game_logic::$229 ]
zp[1]:93 [ game_logic::ghost1_xtile#0 ]
reg byte a [ level_tile_directions::return#12 ]
reg byte a [ game_logic::open_directions3#0 ]
reg byte y [ game_logic::open_directions3#1 ]
reg byte a [ choose_direction::return#3 ]
reg byte a [ game_logic::$182 ]
reg byte x [ game_logic::$232 ]
reg byte x [ game_logic::pacman_xtile1#0 ]
reg byte a [ game_logic::pacman_ytile1#0 ]
reg byte a [ level_tile_directions::return#13 ]
reg byte x [ game_logic::open_directions4#0 ]
reg byte a [ game_logic::$199 ]
reg byte a [ game_logic::$200 ]
reg byte a [ game_logic::joy_directions#0 ]
reg byte a [ game_logic::$204 ]
reg byte a [ game_logic::new_direction#0 ]
zp[2]:36 [ byteboozer_decrunch::crunched ]
reg byte a [ joyfire::return#1 ]
reg byte a [ splash_run::$30 ]
reg byte y [ splash_run::$34 ]
zp[2]:5 [ splash_run::xpos#0 render_tiles::canvas1#2 render_tiles::canvas1#0 render_tiles::canvas1#1 init_render_index::render_index_xcol#0 init_render_index::render_index#1 merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 memset::num#5 memset::end#0 done_run::gfx#4 done_run::gfx#2 done_run::gfx#1 ]
reg byte a [ splash_run::$25 ]
reg byte a [ joyfire::return#0 ]
reg byte a [ done_run::$8 ]
reg byte x [ done_run::pixels#0 ]
reg byte a [ level_tile_directions::$5 ]
zp[2]:49 [ level_tile_directions::ytiles#0 ]
zp[1]:75 [ choose_direction::xdiff#0 ]
reg byte a [ choose_direction::$2 ]
reg byte a [ choose_direction::$4 ]
reg byte a [ choose_direction::$6 ]
reg byte a [ choose_direction::$8 ]
reg byte a [ choose_direction::dist_right#0 ]
reg byte y [ merge_code::$5 ]
reg byte a [ init_render_index::$9 ]
zp[2]:3 [ init_render_index::canvas_xcol#0 render_tiles::canvas2#2 render_tiles::canvas2#0 render_tiles::canvas2#1 render_tiles::canvas_offset#0 ]
reg byte a [ init_render_index::$5 ]
reg byte a [ init_render_index::$6 ]
reg byte x [ splash_show::pixels#0 ]
reg byte a [ init_sprite_pointers::$2 ]
reg byte a [ init_sprite_pointers::sprite_id#0 ]
reg byte a [ joyfire::$0 ]
reg byte a [ level_tile_get::return#3 ]
reg byte x [ init_level_tile_directions::$3 ]
reg byte a [ level_tile_get::return#4 ]
reg byte x [ init_level_tile_directions::$7 ]
reg byte a [ level_tile_get::return#10 ]
reg byte a [ init_level_tile_directions::$11 ]
reg byte a [ level_tile_get::return#11 ]
reg byte a [ init_level_tile_directions::$15 ]
reg byte x [ level_show::tile_left#0 ]
reg byte y [ level_show::xtile#1 ]
reg byte x [ render_tiles::tile_left#0 ]
reg byte y [ render_tiles::tile_right#0 ]
reg byte y [ render::ytile#0 ]
reg byte x [ render::$1 ]
reg byte a [ render::$2 ]
zp[1]:2 [ render::ypix#0 level_show::tile_right#0 merge_code::logic_cycles#0 render_tiles::y#2 render_tiles::y#1 ]
reg byte a [ level_tile_get::$5 ]
reg byte a [ render_tiles::$0 ]
zp[2]:13 [ render_tiles::tile_left_pixels#0 level_tile_get::ytiles#0 render::render_index_xcol#0 init_render_index::$11 init_render_index::$10 init_render_index::$12 init_render_index::canvas#0 ]
reg byte a [ render_tiles::$2 ]
zp[2]:11 [ render_tiles::tile_right_pixels#0 splash_show::splash#4 splash_show::splash#2 splash_show::splash#1 init_render_index::render_index_xcol#2 init_render_index::render_index_xcol#7 init_render_index::render_index_xcol#1 merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 merge_code::raster_code#1 memset::str#6 memset::dst#2 memset::dst#4 memset::dst#1 ]
reg byte x [ render_tiles::$4 ]
reg byte a [ render_tiles::$5 ]
zp[2]:17 [ render_tiles::render_index_xcol#0 ]
reg byte a [ render_tiles::pixels#0 ]
FINAL ASSEMBLER
Score: 1949462
// File Comments
// Camelot Borderline Entry
// Pacman made with 9 sprites in in the borders
// Upstart
// Commodore 64 PRG executable file
.plugin "se.triad.kickass.CruncherPlugins"
.file [name="pacman.prg", type="prg", segments="Program", modify="B2exe", _jmpAdress=__start]
.segmentdef Program [segments="Code, Data, Init"]
.segmentdef Code [start=$810]
.segmentdef Data [startAfter="Code"]
.segmentdef Init [startAfter="Data"]
// 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
/// $D011 Control Register #1 Bit#7: RST8 9th Bit for $D012 Rasterline counter
.const VICII_RST8 = $80
/// $D011 Control Register #1 Bit#6: ECM Turn Extended Color Mode on/off
.const VICII_ECM = $40
/// $D011 Control Register #1 Bit#5: BMM Turn Bitmap Mode on/off
.const VICII_BMM = $20
/// $D011 Control Register #1 Bit#4: DEN Switch VIC-II output on/off
.const VICII_DEN = $10
/// $D011 Control Register #1 Bit#3: RSEL Switch betweem 25 or 24 visible rows
/// RSEL| Display window height | First line | Last line
/// ----+--------------------------+-------------+----------
/// 0 | 24 text lines/192 pixels | 55 ($37) | 246 ($f6)
/// 1 | 25 text lines/200 pixels | 51 ($33) | 250 ($fa)
.const VICII_RSEL = 8
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
/// | | to register 0xd012 and bit 7 of $d011 and internally stored by
/// | | the VIC for the raster compare. The test for reaching the
/// | | interrupt raster line is done in cycle 0 of every line (for line
/// | | 0, in cycle 1).
.const IRQ_RASTER = 1
/// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
/// RAM in all three areas 0xA000, 0xD000, 0xE000
.const PROCPORT_RAM_ALL = 0
/// 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 BLUE = 6
.const YELLOW = 7
.const EMPTY = 0
.const PILL = 1
.const POWERUP = 2
.const WALL = 4
// Address of the (decrunched) splash screen
.const BOB_ROW_SIZE = $80
.const RENDER_OFFSET_CANVAS_LO = 0
.const RENDER_OFFSET_CANVAS_HI = $50
.const RENDER_OFFSET_YPOS_INC = $a0
// The number of bobs rendered
.const NUM_BOBS = 5
// The size of the BOB restore structure
.const SIZE_BOB_RESTORE = $12
// Size of the crunched music
.const INTRO_MUSIC_CRUNCHED_SIZE = $600
// The raster line for irq_screen_top()
.const IRQ_SCREEN_TOP_LINE = 5
.const STOP = 0
.const UP = 4
.const DOWN = 8
.const LEFT = $10
.const RIGHT = $20
.const CHASE = 0
.const SCATTER = 1
.const FRIGHTENED = 2
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
.const OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE = $18
.const OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH = 2
.const OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL = 4
.const OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY = 5
.const OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE = 6
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
.const OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB = $10
.const OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE = $15
.const OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X = $1d
.const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
.const OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1 = $25
.const OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2 = $26
.const OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC = $1c
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
.const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
.const OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE = $1a
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y = 1
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y = 3
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y = 5
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y = 7
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y = 9
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y = $b
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y = $d
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y = $f
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR = $27
.const OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR = $28
.const OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS = $19
.const SIZEOF_CHAR = 1
/// Sprite X position register for sprite #0
.label SPRITES_XPOS = $d000
/// Sprite Y position register for sprite #0
.label SPRITES_YPOS = $d001
/// Sprite colors register for sprite #0
.label SPRITES_COLOR = $d027
/// $D012 RASTER Raster counter
.label RASTER = $d012
/// $D020 Border Color
.label BORDER_COLOR = $d020
/// $D011 Control Register #1
/// - Bit#0-#2: YSCROLL Screen Soft Scroll Vertical
/// - Bit#3: RSEL Switch betweem 25 or 24 visible rows
/// RSEL| Display window height | First line | Last line
/// ----+--------------------------+-------------+----------
/// 0 | 24 text lines/192 pixels | 55 ($37) | 246 ($f6)
/// 1 | 25 text lines/200 pixels | 51 ($33) | 250 ($fa)
/// - Bit#4: DEN Switch VIC-II output on/off
/// - Bit#5: BMM Turn Bitmap Mode on/off
/// - Bit#6: ECM Turn Extended Color Mode on/off
/// - Bit#7: RST8 9th Bit for $D012 Rasterline counter
/// Initial Value: %10011011
.label VICII_CONTROL1 = $d011
/// $D016 Control register 2
/// - Bit#0-#2: XSCROLL Screen Soft Scroll Horizontal
/// - Bit#3: CSEL Switch betweem 40 or 38 visible columns
/// CSEL| Display window width | First X coo. | Last X coo.
/// ----+--------------------------+--------------+------------
/// 0 | 38 characters/304 pixels | 31 ($1f) | 334 ($14e)
/// 1 | 40 characters/320 pixels | 24 ($18) | 343 ($157)
/// - Bit#4: MCM Turn Multicolor Mode on/off
/// - Bit#5-#7: not used
/// Initial Value: %00001000
.label VICII_CONTROL2 = $d016
/// $D018 VIC-II base addresses
/// - Bit#0: not used
/// - Bit#1-#3: CB Address Bits 11-13 of the Character Set (*2048)
/// - Bit#4-#7: VM Address Bits 10-13 of the Screen RAM (*1024)
/// Initial Value: %00010100
.label VICII_MEMORY = $d018
/// VIC II IRQ Status Register
.label IRQ_STATUS = $d019
/// Channel 1 Frequency High byte
.label SID_CH1_FREQ_HI = $d401
/// 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
/// The VIC-II MOS 6567/6569
.label VICII = $d000
/// 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
// Graphics Bank 1
// Address of the sprites
.label BANK_1 = $4000
// Address of the sprites
.label SPRITES_1 = $6000
// Use sprite pointers on all screens (0x43f8, 0x47f8, ...)
.label SCREENS_1 = $4000
// Graphics Bank 2
// Address of the sprites
.label BANK_2 = $c000
// Address of the sprites
.label SPRITES_2 = $e000
// Use sprite pointers on all screens (0x43f8, 0x47f8, ...)
.label SCREENS_2 = $c000
// The location where the logic code will be located before merging
.label LOGIC_CODE_UNMERGED = $e000
// The location where the screen raster code will be located before merging
.label RASTER_CODE_UNMERGED = $6000
// The location where the screen raster code will be located when running
.label RASTER_CODE = $8000
// Address of the (decrunched) splash screen
.label SPLASH = $4000
// Address for the victory graphics
.label WIN_GFX = $a700
// Address for the gameover graphics
.label GAMEOVER_GFX = $a700
// Address used by (decrunched) tiles
.label LEVEL_TILES = $4800
.label TILES_LEFT = LEVEL_TILES+$a00
.label TILES_RIGHT = LEVEL_TILES+$a80
.label TILES_TYPE = LEVEL_TILES+$b00
// Address used for table containing available directions for all tiles
// TABLE LEVEL_TILES_DIRECTIONS[64*37]
// The level data is organized as 37 rows of 64 bytes. Each row is 50 bytes containing DIRECTION bits plus 14 unused bytes to achieve 64-byte alignment.
.label LEVEL_TILES_DIRECTIONS = $3e00
.label BOB_MASK_LEFT = $5400
.label BOB_MASK_RIGT = BOB_MASK_LEFT+BOB_ROW_SIZE*6
.label BOB_PIXEL_LEFT = BOB_MASK_LEFT+BOB_ROW_SIZE*$c
.label BOB_PIXEL_RIGT = BOB_MASK_LEFT+BOB_ROW_SIZE*$12
// Tables pointing to the graphics.
// Each page represents one X column (1 byte wide, 4 MC pixels)
// On each page:
// - 0xNN00-0xNN4A : low-byte of the graphics for (X-column, Y-fine)
// - 0xNN50-0xNN9A : high-byte of the graphics for (X-column, Y-fine)
// - 0xNNA0-0xNNEA : index into RENDER_YPOS_INC for incrementing the y-pos.
.label RENDER_INDEX = $b600
// Upper memory location used during decrunching
.label INTRO_MUSIC_CRUNCHED_UPPER = $a700
// Address of the music during run-time
.label INTRO_MUSIC = $3000
// Pointer to the music init routine
.label musicInit = INTRO_MUSIC
// Pointer to the music play routine
.label musicPlay = INTRO_MUSIC+6
// Is the pacman eating sound enabled
.label pacman_ch1_enabled = $66
// Index into the eating sound
.label pacman_ch1_idx = $5e
// Pointer to the tile to render in the logic code
.label logic_tile_ptr = $1a
// The x-column of the tile to render
.label logic_tile_xcol = $1c
// The y-fine of the tile to render
.label logic_tile_yfine = $1d
// The ID*4 of the left tile to render
.label logic_tile_left_idx = $4c
// The ID*4 of the right tile to render
.label logic_tile_right_idx = $4d
// Variables used by the logic-code renderer and restorer
.label left_render_index_xcol = $4e
.label left_canvas = $50
.label left_ypos_inc_offset = $52
.label rigt_render_index_xcol = $53
.label rigt_canvas = $55
.label rigt_ypos_inc_offset = $57
// The high-byte of the start-address of the canvas currently being rendered to
.label canvas_base_hi = $20
// The offset used for bobs_restore - used to achieve double buffering
.label bobs_restore_base = $21
// Sprite settings used for the top/side/bottom sprites.
// Used for achieving single-color sprites on the splash and multi-color sprites in the game
.label top_sprites_color = $1e
.label top_sprites_mc = $3a
.label side_sprites_color = $16
.label side_sprites_mc = $17
.label bottom_sprites_color = $18
.label bottom_sprites_mc = $19
// The number of pills left
.label pill_count = $58
// 1 When pacman wins
.label pacman_wins = $1f
// The number of pacman lives left
.label pacman_lives = $23
// Signal for playing th next music frame during the intro
.label music_play_next = $15
// 0: intro, 1: game
.label phase = $3d
// The double buffer frame (0=BANK_1, 1=BANK_2)
.label frame = $65
// The animation frame IDX (within the current direction) [0-3]
.label anim_frame_idx = $60
// Pacman x fine position (0-99).
.label pacman_xfine = $47
// Pacman y fine position (0-70).
.label pacman_yfine = $48
// The pacman movement current direction
.label pacman_direction = $35
// Pacman movement substep (0: on tile, 1: between tiles).
.label pacman_substep = $2c
// Mode determining ghost target mode. 0: chase, 1: scatter
.label ghosts_mode = $5f
// Counts frames to change ghost mode (7 seconds scatter, 20 seconds chase )
.label ghosts_mode_count = $2b
// Ghost 1 x fine position (0-99).
.label ghost1_xfine = $3b
// Ghost 1 y fine position (0-70).
.label ghost1_yfine = $3c
// Ghost 1 movement current direction
.label ghost1_direction = $36
// Ghost 1 movement substep (0: on tile, 1: between tiles).
.label ghost1_substep = $2d
// Ghost 1 movement should be reversed (0: normal, 1: reverse direction)
.label ghost1_reverse = $61
// Ghost 1 respawn timer
.label ghost1_respawn = $26
// Ghost 2 x fine position (0-99).
.label ghost2_xfine = $3e
// Ghost 2 y fine position (0-70).
.label ghost2_yfine = $3f
// Ghost 2 movement current direction
.label ghost2_direction = $37
// Ghost 2 movement substep (0: on tile, 1: between tiles).
.label ghost2_substep = $2e
// Ghost 2 movement should be reversed (0: normal, 1: reverse direction)
.label ghost2_reverse = $62
// Ghost 2 respawn timer
.label ghost2_respawn = $28
// Ghost 3 x fine position (0-99).
.label ghost3_xfine = $40
// Ghost 3 y fine position (0-70).
.label ghost3_yfine = $42
// Ghost 3 movement current direction
.label ghost3_direction = $38
// Ghost 3 movement substep (0: on tile, 1: between tiles).
.label ghost3_substep = $2f
// Ghost 3 movement should be reversed (0: normal, 1: reverse direction)
.label ghost3_reverse = $63
// Ghost 3 respawn timer
.label ghost3_respawn = $29
// Ghost 4 x fine position (0-99).
.label ghost4_xfine = $43
// Ghost 4 y fine position (0-70).
.label ghost4_yfine = $44
// Ghost 4 movement current direction
.label ghost4_direction = $39
// Ghost 4 movement substep (0: on tile, 1: between tiles).
.label ghost4_substep = $30
// Ghost 4 movement should be reversed (0: normal, 1: reverse direction)
.label ghost4_reverse = $64
// Ghost 4 respawn timer
.label ghost4_respawn = $2a
// Game logic sub-step [0-7]. Each frame a different sub-step is animated
.label game_logic_substep = $5a
// 1 when the game is playable and characters should move around
.label game_playable = $41
.segment Code
// __start
__start: {
// __start::__init1
// volatile char pacman_ch1_enabled = 0
// [1] pacman_ch1_enabled = 0 -- vbuz1=vbuc1
lda #0
sta.z pacman_ch1_enabled
// volatile char pacman_ch1_idx = 0
// [2] pacman_ch1_idx = 0 -- vbuz1=vbuc1
sta.z pacman_ch1_idx
// volatile char* logic_tile_ptr
// [3] logic_tile_ptr = (volatile char *) 0 -- pbuz1=pbuc1
sta.z logic_tile_ptr
sta.z logic_tile_ptr+1
// volatile char logic_tile_xcol
// [4] logic_tile_xcol = 0 -- vbuz1=vbuc1
sta.z logic_tile_xcol
// volatile char logic_tile_yfine
// [5] logic_tile_yfine = 0 -- vbuz1=vbuc1
sta.z logic_tile_yfine
// volatile char logic_tile_left_idx
// [6] logic_tile_left_idx = 0 -- vbuz1=vbuc1
sta.z logic_tile_left_idx
// volatile char logic_tile_right_idx
// [7] logic_tile_right_idx = 0 -- vbuz1=vbuc1
sta.z logic_tile_right_idx
// char * volatile left_render_index_xcol
// [8] left_render_index_xcol = (char *) 0 -- pbuz1=pbuc1
sta.z left_render_index_xcol
sta.z left_render_index_xcol+1
// char * volatile left_canvas
// [9] left_canvas = (char *) 0 -- pbuz1=pbuc1
sta.z left_canvas
sta.z left_canvas+1
// volatile char left_ypos_inc_offset
// [10] left_ypos_inc_offset = 0 -- vbuz1=vbuc1
sta.z left_ypos_inc_offset
// char * volatile rigt_render_index_xcol
// [11] rigt_render_index_xcol = (char *) 0 -- pbuz1=pbuc1
sta.z rigt_render_index_xcol
sta.z rigt_render_index_xcol+1
// char * volatile rigt_canvas
// [12] rigt_canvas = (char *) 0 -- pbuz1=pbuc1
sta.z rigt_canvas
sta.z rigt_canvas+1
// volatile char rigt_ypos_inc_offset
// [13] rigt_ypos_inc_offset = 0 -- vbuz1=vbuc1
sta.z rigt_ypos_inc_offset
// volatile char canvas_base_hi
// [14] canvas_base_hi = 0 -- vbuz1=vbuc1
sta.z canvas_base_hi
// volatile char bobs_restore_base
// [15] bobs_restore_base = 0 -- vbuz1=vbuc1
sta.z bobs_restore_base
// volatile char top_sprites_color
// [16] top_sprites_color = 0 -- vbuz1=vbuc1
sta.z top_sprites_color
// volatile char top_sprites_mc
// [17] top_sprites_mc = 0 -- vbuz1=vbuc1
sta.z top_sprites_mc
// volatile char side_sprites_color
// [18] side_sprites_color = 0 -- vbuz1=vbuc1
sta.z side_sprites_color
// volatile char side_sprites_mc
// [19] side_sprites_mc = 0 -- vbuz1=vbuc1
sta.z side_sprites_mc
// volatile char bottom_sprites_color
// [20] bottom_sprites_color = 0 -- vbuz1=vbuc1
sta.z bottom_sprites_color
// volatile char bottom_sprites_mc
// [21] bottom_sprites_mc = 0 -- vbuz1=vbuc1
sta.z bottom_sprites_mc
// volatile unsigned int pill_count
// [22] pill_count = 0 -- vwuz1=vwuc1
sta.z pill_count
sta.z pill_count+1
// volatile char pacman_wins = 0
// [23] pacman_wins = 0 -- vbuz1=vbuc1
sta.z pacman_wins
// volatile char pacman_lives = 3
// [24] pacman_lives = 3 -- vbuz1=vbuc1
lda #3
sta.z pacman_lives
// volatile char music_play_next = 0
// [25] music_play_next = 0 -- vbuz1=vbuc1
lda #0
sta.z music_play_next
// volatile char phase = 0
// [26] phase = 0 -- vbuz1=vbuc1
sta.z phase
// volatile char frame = 0
// [27] frame = 0 -- vbuz1=vbuc1
sta.z frame
// volatile char anim_frame_idx = 0
// [28] anim_frame_idx = 0 -- vbuz1=vbuc1
sta.z anim_frame_idx
// volatile char pacman_xfine = 45
// [29] pacman_xfine = $2d -- vbuz1=vbuc1
lda #$2d
sta.z pacman_xfine
// volatile char pacman_yfine = 35
// [30] pacman_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z pacman_yfine
// volatile enum DIRECTION pacman_direction = STOP
// [31] pacman_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z pacman_direction
// volatile char pacman_substep = 0
// [32] pacman_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z pacman_substep
// volatile enum GHOSTS_MODE ghosts_mode = 1
// [33] ghosts_mode = 1 -- vbuz1=vbuc1
lda #1
sta.z ghosts_mode
// volatile char ghosts_mode_count = 0
// [34] ghosts_mode_count = 0 -- vbuz1=vbuc1
lda #0
sta.z ghosts_mode_count
// volatile char ghost1_xfine = 45
// [35] ghost1_xfine = $2d -- vbuz1=vbuc1
lda #$2d
sta.z ghost1_xfine
// volatile char ghost1_yfine = 35
// [36] ghost1_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost1_yfine
// volatile enum DIRECTION ghost1_direction = STOP
// [37] ghost1_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost1_direction
// volatile char ghost1_substep = 0
// [38] ghost1_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost1_substep
// volatile char ghost1_reverse = 0
// [39] ghost1_reverse = 0 -- vbuz1=vbuc1
sta.z ghost1_reverse
// volatile char ghost1_respawn = 0
// [40] ghost1_respawn = 0 -- vbuz1=vbuc1
sta.z ghost1_respawn
// volatile char ghost2_xfine = 45
// [41] ghost2_xfine = $2d -- vbuz1=vbuc1
lda #$2d
sta.z ghost2_xfine
// volatile char ghost2_yfine = 35
// [42] ghost2_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost2_yfine
// volatile enum DIRECTION ghost2_direction = STOP
// [43] ghost2_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost2_direction
// volatile char ghost2_substep = 0
// [44] ghost2_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost2_substep
// volatile char ghost2_reverse = 0
// [45] ghost2_reverse = 0 -- vbuz1=vbuc1
sta.z ghost2_reverse
// volatile char ghost2_respawn = 0
// [46] ghost2_respawn = 0 -- vbuz1=vbuc1
sta.z ghost2_respawn
// volatile char ghost3_xfine = 45
// [47] ghost3_xfine = $2d -- vbuz1=vbuc1
lda #$2d
sta.z ghost3_xfine
// volatile char ghost3_yfine = 35
// [48] ghost3_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost3_yfine
// volatile enum DIRECTION ghost3_direction = STOP
// [49] ghost3_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost3_direction
// volatile char ghost3_substep = 0
// [50] ghost3_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost3_substep
// volatile char ghost3_reverse = 0
// [51] ghost3_reverse = 0 -- vbuz1=vbuc1
sta.z ghost3_reverse
// volatile char ghost3_respawn = 0
// [52] ghost3_respawn = 0 -- vbuz1=vbuc1
sta.z ghost3_respawn
// volatile char ghost4_xfine = 45
// [53] ghost4_xfine = $2d -- vbuz1=vbuc1
lda #$2d
sta.z ghost4_xfine
// volatile char ghost4_yfine = 35
// [54] ghost4_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost4_yfine
// volatile enum DIRECTION ghost4_direction = STOP
// [55] ghost4_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost4_direction
// volatile char ghost4_substep = 0
// [56] ghost4_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost4_substep
// volatile char ghost4_reverse = 0
// [57] ghost4_reverse = 0 -- vbuz1=vbuc1
sta.z ghost4_reverse
// volatile char ghost4_respawn = 0
// [58] ghost4_respawn = 0 -- vbuz1=vbuc1
sta.z ghost4_respawn
// volatile char game_logic_substep = 0
// [59] game_logic_substep = 0 -- vbuz1=vbuc1
sta.z game_logic_substep
// volatile char game_playable = 0
// [60] game_playable = 0 -- vbuz1=vbuc1
sta.z game_playable
// [61] phi from __start::__init1 to __start::@1 [phi:__start::__init1->__start::@1]
// __start::@1
// [62] call main
// [101] phi from __start::@1 to main [phi:__start::@1->main]
jsr main
// __start::@return
// [63] return
rts
}
// irq_screen_top
// Interrupt Routine at Screen Top
irq_screen_top: {
.const toDd001_return = 0
.const toDd002_return = 3^(>SCREENS_1)/$40
.const toD0181_return = 0
// interrupt(isr_hardware_clobber_entry) -- isr_hardware_all_entry
sta rega+1
stx regx+1
sty regy+1
// kickasm
// kickasm( uses HARDWARE_IRQ uses RASTER uses IRQ_STATUS uses IRQ_RASTER uses VICII_CONTROL1 uses VICII_RSEL uses VICII_MEMORY) {{ // Stabilize the raster by using the double IRQ method // Acknowledge the IRQ lda #IRQ_RASTER sta IRQ_STATUS // Set-up IRQ for the next line inc RASTER // Point IRQ to almost stable code lda #<stable sta HARDWARE_IRQ lda #>stable sta HARDWARE_IRQ+1 tsx // Save stack pointer cli // Reenable interrupts // Wait for new IRQ using NOP's to ensure minimal jitter when it hits .fill 15, NOP .align $20 stable: txs // Restore stack pointer ldx #9 // Wait till the raster has almost crossed to the next line (48 cycles) !: dex bne !- nop lda RASTER cmp RASTER bne !+ // And correct the last cycle of potential jitter !: // Raster is now completely stable! (Line 0x007 cycle 7) }}
// Stabilize the raster by using the double IRQ method
// Acknowledge the IRQ
lda #IRQ_RASTER
sta IRQ_STATUS
// Set-up IRQ for the next line
inc RASTER
// Point IRQ to almost stable code
lda #<stable
sta HARDWARE_IRQ
lda #>stable
sta HARDWARE_IRQ+1
tsx // Save stack pointer
cli // Reenable interrupts
// Wait for new IRQ using NOP's to ensure minimal jitter when it hits
.fill 15, NOP
.align $20
stable:
txs // Restore stack pointer
ldx #9 // Wait till the raster has almost crossed to the next line (48 cycles)
!: dex
bne !-
nop
lda RASTER
cmp RASTER
bne !+ // And correct the last cycle of potential jitter
!:
// Raster is now completely stable! (Line 0x007 cycle 7)
// asm
// asm { jsrRASTER_CODE }
jsr RASTER_CODE
// VICII->SPRITE0_Y =7
// [66] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y) = 7 -- _deref_pbuc1=vbuc2
// Move sprites back to the top
lda #7
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y
// VICII->SPRITE1_Y =7
// [67] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y) = 7 -- _deref_pbuc1=vbuc2
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y
// VICII->SPRITE2_Y =7
// [68] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y) = 7 -- _deref_pbuc1=vbuc2
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y
// VICII->SPRITE3_Y =7
// [69] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y) = 7 -- _deref_pbuc1=vbuc2
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y
// VICII->SPRITE4_Y =7
// [70] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y) = 7 -- _deref_pbuc1=vbuc2
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y
// VICII->SPRITE5_Y =7
// [71] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y) = 7 -- _deref_pbuc1=vbuc2
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y
// VICII->SPRITE6_Y =7
// [72] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y) = 7 -- _deref_pbuc1=vbuc2
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y
// VICII->SPRITE7_Y =7
// [73] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y) = 7 -- _deref_pbuc1=vbuc2
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y
// [74] phi from irq_screen_top to irq_screen_top::toD0181 [phi:irq_screen_top->irq_screen_top::toD0181]
// irq_screen_top::toD0181
// irq_screen_top::@5
// VICII->MEMORY = toD018(SCREENS_1, SCREENS_1)
// [75] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = irq_screen_top::toD0181_return#0 -- _deref_pbuc1=vbuc2
// Select first screen (graphics bank not important since layout in the banks is identical)
lda #toD0181_return
sta VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY
// VICII->SPRITES_MC = top_sprites_mc
// [76] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc -- _deref_pbuc1=vbuz1
// Set the top sprites color/MC
lda.z top_sprites_mc
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC
// VICII->SPRITE0_COLOR = top_sprites_color
// [77] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR) = top_sprites_color -- _deref_pbuc1=vbuz1
lda.z top_sprites_color
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR
// VICII->SPRITE1_COLOR = top_sprites_color
// [78] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR) = top_sprites_color -- _deref_pbuc1=vbuz1
lda.z top_sprites_color
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR
// frame+1
// [79] irq_screen_top::$1 = frame + 1 -- vbuaa=vbuz1_plus_1
lda.z frame
clc
adc #1
// (frame+1) & 1
// [80] irq_screen_top::$2 = irq_screen_top::$1 & 1 -- vbuaa=vbuaa_band_vbuc1
and #1
// frame = (frame+1) & 1
// [81] frame = irq_screen_top::$2 -- vbuz1=vbuaa
// Move to next frame
sta.z frame
// if(frame)
// [82] if(0!=frame) goto irq_screen_top::toDd001 -- 0_neq_vbuz1_then_la1
bne __b6
// [83] phi from irq_screen_top::@5 to irq_screen_top::toDd002 [phi:irq_screen_top::@5->irq_screen_top::toDd002]
// irq_screen_top::toDd002
// irq_screen_top::@7
// CIA2->PORT_A = toDd00(SCREENS_1)
// [84] *((char *)CIA2) = irq_screen_top::toDd002_return#0 -- _deref_pbuc1=vbuc2
// Change graphics bank
lda #toDd002_return
sta CIA2
// canvas_base_hi = BYTE1(SPRITES_2)
// [85] canvas_base_hi = byte1 SPRITES_2 -- vbuz1=vbuc1
// Set the next canvas base address
lda #>SPRITES_2
sta.z canvas_base_hi
// bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE
// [86] bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE -- vbuz1=vbuc1
lda #NUM_BOBS*SIZE_BOB_RESTORE
sta.z bobs_restore_base
// irq_screen_top::@1
__b1:
// if(phase==0)
// [87] if(phase==0) goto irq_screen_top::@2 -- vbuz1_eq_0_then_la1
lda.z phase
beq __b2
// [88] phi from irq_screen_top::@1 to irq_screen_top::@4 [phi:irq_screen_top::@1->irq_screen_top::@4]
// irq_screen_top::@4
// game_logic()
// [89] call game_logic
// Game phase
// Perform game logic
jsr game_logic
// [90] phi from irq_screen_top::@4 to irq_screen_top::@8 [phi:irq_screen_top::@4->irq_screen_top::@8]
// irq_screen_top::@8
// pacman_sound_play()
// [91] call pacman_sound_play
// Play sounds
jsr pacman_sound_play
// irq_screen_top::@3
__b3:
// VICII->IRQ_STATUS = IRQ_RASTER
// [92] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) = IRQ_RASTER -- _deref_pbuc1=vbuc2
// Acknowledge the IRQ
lda #IRQ_RASTER
sta VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS
// VICII->RASTER = IRQ_SCREEN_TOP_LINE
// [93] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE -- _deref_pbuc1=vbuc2
// Trigger IRQ at screen top again
lda #IRQ_SCREEN_TOP_LINE
sta VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
// *HARDWARE_IRQ = &irq_screen_top
// [94] *HARDWARE_IRQ = &irq_screen_top -- _deref_qprc1=pprc2
lda #<irq_screen_top
sta HARDWARE_IRQ
lda #>irq_screen_top
sta HARDWARE_IRQ+1
// irq_screen_top::@return
// }
// [95] return
// interrupt(isr_hardware_clobber_exit) -- isr_hardware_all_exit
rega:
lda #0
regx:
ldx #0
regy:
ldy #0
rti
// irq_screen_top::@2
__b2:
// music_play_next = 1
// [96] music_play_next = 1 -- vbuz1=vbuc1
// intro phase
// Play intro music
lda #1
sta.z music_play_next
jmp __b3
// [97] phi from irq_screen_top::@5 to irq_screen_top::toDd001 [phi:irq_screen_top::@5->irq_screen_top::toDd001]
// irq_screen_top::toDd001
// irq_screen_top::@6
__b6:
// CIA2->PORT_A = toDd00(SCREENS_2)
// [98] *((char *)CIA2) = irq_screen_top::toDd001_return#0 -- _deref_pbuc1=vbuc2
// Change graphics bank
lda #toDd001_return
sta CIA2
// canvas_base_hi = BYTE1(SPRITES_1)
// [99] canvas_base_hi = byte1 SPRITES_1 -- vbuz1=vbuc1
// Set the next canvas base address
lda #>SPRITES_1
sta.z canvas_base_hi
// bobs_restore_base = 0
// [100] bobs_restore_base = 0 -- vbuz1=vbuc1
lda #0
sta.z bobs_restore_base
jmp __b1
}
// main
main: {
// splash_run()
// [102] call splash_run
// Show the splash screen
// [509] phi from main to splash_run [phi:main->splash_run]
jsr splash_run
// [103] phi from main main::@2 to main::@1 [phi:main/main::@2->main::@1]
// main::@1
__b1:
// gameplay_run()
// [104] call gameplay_run
// Run the gameplay
// [616] phi from main::@1 to gameplay_run [phi:main::@1->gameplay_run]
jsr gameplay_run
// [105] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
// main::@2
// done_run()
// [106] call done_run
// Show victory or game over image
jsr done_run
jmp __b1
}
// game_logic
// Perform game logic such as moving pacman and ghosts
game_logic: {
.label __67 = $45
.label __71 = $45
.label __210 = $22
.label ghost_frame_idx = $4a
.label pacman_xtile = $49
.label ytiles = $45
.label ghost4_xtile = $33
.label ghost4_ytile = $34
.label target_ytile = $27
.label ghost3_xtile = $5b
.label ghost3_ytile = $34
.label target_ytile1 = $27
.label ghost2_xtile = $5c
.label ghost2_ytile = $34
.label target_ytile2 = $27
.label ghost1_xtile = $5d
.label ghost1_ytile = $34
.label target_ytile3 = $27
// if(game_playable==0)
// [107] if(game_playable!=0) goto game_logic::@1 -- vbuz1_neq_0_then_la1
lda.z game_playable
bne __b1
// game_logic::@return
__breturn:
// }
// [108] return
rts
// game_logic::@1
__b1:
// game_logic_substep+1
// [109] game_logic::$2 = game_logic_substep + 1 -- vbuxx=vbuz1_plus_1
ldx.z game_logic_substep
inx
// (game_logic_substep+1)&7
// [110] game_logic::$3 = game_logic::$2 & 7 -- vbuaa=vbuxx_band_vbuc1
txa
and #7
// game_logic_substep = (game_logic_substep+1)&7
// [111] game_logic_substep = game_logic::$3 -- vbuz1=vbuaa
// Move to next sub-step
sta.z game_logic_substep
// if(game_logic_substep==0)
// [112] if(game_logic_substep==0) goto game_logic::@2 -- vbuz1_eq_0_then_la1
bne !__b2+
jmp __b2
!__b2:
// game_logic::@8
// if(game_logic_substep==1)
// [113] if(game_logic_substep==1) goto game_logic::@3 -- vbuz1_eq_vbuc1_then_la1
lda #1
cmp.z game_logic_substep
bne !__b3+
jmp __b3
!__b3:
// game_logic::@9
// if(game_logic_substep==2)
// [114] if(game_logic_substep==2) goto game_logic::@4 -- vbuz1_eq_vbuc1_then_la1
lda #2
cmp.z game_logic_substep
bne !__b4+
jmp __b4
!__b4:
// game_logic::@10
// if(game_logic_substep==4)
// [115] if(game_logic_substep==4) goto game_logic::@5 -- vbuz1_eq_vbuc1_then_la1
lda #4
cmp.z game_logic_substep
bne !__b5+
jmp __b5
!__b5:
// game_logic::@11
// if(game_logic_substep==5)
// [116] if(game_logic_substep==5) goto game_logic::@6 -- vbuz1_eq_vbuc1_then_la1
lda #5
cmp.z game_logic_substep
bne !__b6+
jmp __b6
!__b6:
// game_logic::@12
// if(game_logic_substep==6)
// [117] if(game_logic_substep==6) goto game_logic::@7 -- vbuz1_eq_vbuc1_then_la1
lda #6
cmp.z game_logic_substep
bne !__b7+
jmp __b7
!__b7:
// game_logic::@13
// if(game_logic_substep==3 || game_logic_substep==7)
// [118] if(game_logic_substep==3) goto game_logic::@14 -- vbuz1_eq_vbuc1_then_la1
lda #3
cmp.z game_logic_substep
beq __b14
// game_logic::@161
// [119] if(game_logic_substep==7) goto game_logic::@14 -- vbuz1_eq_vbuc1_then_la1
lda #7
cmp.z game_logic_substep
beq __b14
rts
// game_logic::@14
__b14:
// anim_frame_idx+1
// [120] game_logic::$14 = anim_frame_idx + 1 -- vbuxx=vbuz1_plus_1
ldx.z anim_frame_idx
inx
// (anim_frame_idx+1) & 3
// [121] game_logic::$15 = game_logic::$14 & 3 -- vbuaa=vbuxx_band_vbuc1
txa
and #3
// anim_frame_idx = (anim_frame_idx+1) & 3
// [122] anim_frame_idx = game_logic::$15 -- vbuz1=vbuaa
// Update animation and bobs
sta.z anim_frame_idx
// char pacman_bob_xfine = pacman_xfine-1
// [123] game_logic::pacman_bob_xfine#0 = pacman_xfine - 1 -- vbuyy=vbuz1_minus_1
lda.z pacman_xfine
tay
dey
// pacman_bob_xfine/4
// [124] game_logic::$17 = game_logic::pacman_bob_xfine#0 >> 2 -- vbuaa=vbuyy_ror_2
tya
lsr
lsr
// bobs_xcol[0] = pacman_bob_xfine/4
// [125] *bobs_xcol = game_logic::$17 -- _deref_pbuc1=vbuaa
sta bobs_xcol
// pacman_yfine-1
// [126] game_logic::$18 = pacman_yfine - 1 -- vbuxx=vbuz1_minus_1
ldx.z pacman_yfine
dex
// bobs_yfine[0] = pacman_yfine-1
// [127] *bobs_yfine = game_logic::$18 -- _deref_pbuc1=vbuxx
stx bobs_yfine
// pacman_direction|anim_frame_idx
// [128] game_logic::$19 = pacman_direction | anim_frame_idx -- vbuxx=vbuz1_bor_vbuz2
lda.z pacman_direction
ora.z anim_frame_idx
tax
// pacman_bob_xfine&3
// [129] game_logic::$20 = game_logic::pacman_bob_xfine#0 & 3 -- vbuaa=vbuyy_band_vbuc1
tya
and #3
// pacman_frames[pacman_direction|anim_frame_idx] + (pacman_bob_xfine&3)
// [130] game_logic::$21 = pacman_frames[game_logic::$19] + game_logic::$20 -- vbuaa=pbuc1_derefidx_vbuxx_plus_vbuaa
clc
adc pacman_frames,x
// bobs_bob_id[0] = pacman_frames[pacman_direction|anim_frame_idx] + (pacman_bob_xfine&3)
// [131] *bobs_bob_id = game_logic::$21 -- _deref_pbuc1=vbuaa
sta bobs_bob_id
// char ghost_frame_idx = anim_frame_idx
// [132] game_logic::ghost_frame_idx#0 = anim_frame_idx -- vbuz1=vbuz2
lda.z anim_frame_idx
sta.z ghost_frame_idx
// if(ghosts_mode==FRIGHTENED)
// [133] if(ghosts_mode!=FRIGHTENED) goto game_logic::@44 -- vbuz1_neq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
bne __b44
// game_logic::@15
// ghost_frame_idx |= 0x40
// [134] game_logic::ghost_frame_idx#1 = game_logic::ghost_frame_idx#0 | $40 -- vbuz1=vbuz1_bor_vbuc1
lda #$40
ora.z ghost_frame_idx
sta.z ghost_frame_idx
// [135] phi from game_logic::@14 game_logic::@15 to game_logic::@44 [phi:game_logic::@14/game_logic::@15->game_logic::@44]
// [135] phi game_logic::ghost_frame_idx#2 = game_logic::ghost_frame_idx#0 [phi:game_logic::@14/game_logic::@15->game_logic::@44#0] -- register_copy
// game_logic::@44
__b44:
// char ghost1_bob_xfine = ghost1_xfine-1
// [136] game_logic::ghost1_bob_xfine#0 = ghost1_xfine - 1 -- vbuyy=vbuz1_minus_1
lda.z ghost1_xfine
tay
dey
// ghost1_bob_xfine/4
// [137] game_logic::$25 = game_logic::ghost1_bob_xfine#0 >> 2 -- vbuaa=vbuyy_ror_2
tya
lsr
lsr
// bobs_xcol[1] = ghost1_bob_xfine/4
// [138] *(bobs_xcol+1) = game_logic::$25 -- _deref_pbuc1=vbuaa
sta bobs_xcol+1
// ghost1_yfine-1
// [139] game_logic::$26 = ghost1_yfine - 1 -- vbuxx=vbuz1_minus_1
ldx.z ghost1_yfine
dex
// bobs_yfine[1] = ghost1_yfine-1
// [140] *(bobs_yfine+1) = game_logic::$26 -- _deref_pbuc1=vbuxx
stx bobs_yfine+1
// ghost1_direction|ghost_frame_idx
// [141] game_logic::$27 = ghost1_direction | game_logic::ghost_frame_idx#2 -- vbuxx=vbuz1_bor_vbuz2
lda.z ghost1_direction
ora.z ghost_frame_idx
tax
// ghost1_bob_xfine&3
// [142] game_logic::$28 = game_logic::ghost1_bob_xfine#0 & 3 -- vbuaa=vbuyy_band_vbuc1
tya
and #3
// ghost_frames[ghost1_direction|ghost_frame_idx] + (ghost1_bob_xfine&3)
// [143] game_logic::$29 = ghost_frames[game_logic::$27] + game_logic::$28 -- vbuaa=pbuc1_derefidx_vbuxx_plus_vbuaa
clc
adc ghost_frames,x
// bobs_bob_id[1] = ghost_frames[ghost1_direction|ghost_frame_idx] + (ghost1_bob_xfine&3)
// [144] *(bobs_bob_id+1) = game_logic::$29 -- _deref_pbuc1=vbuaa
sta bobs_bob_id+1
// char ghost2_bob_xfine = ghost2_xfine-1
// [145] game_logic::ghost2_bob_xfine#0 = ghost2_xfine - 1 -- vbuyy=vbuz1_minus_1
lda.z ghost2_xfine
tay
dey
// ghost2_bob_xfine/4
// [146] game_logic::$31 = game_logic::ghost2_bob_xfine#0 >> 2 -- vbuaa=vbuyy_ror_2
tya
lsr
lsr
// bobs_xcol[2] = ghost2_bob_xfine/4
// [147] *(bobs_xcol+2) = game_logic::$31 -- _deref_pbuc1=vbuaa
sta bobs_xcol+2
// ghost2_yfine-1
// [148] game_logic::$32 = ghost2_yfine - 1 -- vbuxx=vbuz1_minus_1
ldx.z ghost2_yfine
dex
// bobs_yfine[2] = ghost2_yfine-1
// [149] *(bobs_yfine+2) = game_logic::$32 -- _deref_pbuc1=vbuxx
stx bobs_yfine+2
// ghost2_direction|ghost_frame_idx
// [150] game_logic::$33 = ghost2_direction | game_logic::ghost_frame_idx#2 -- vbuxx=vbuz1_bor_vbuz2
lda.z ghost2_direction
ora.z ghost_frame_idx
tax
// ghost2_bob_xfine&3
// [151] game_logic::$34 = game_logic::ghost2_bob_xfine#0 & 3 -- vbuaa=vbuyy_band_vbuc1
tya
and #3
// ghost_frames[ghost2_direction|ghost_frame_idx] + (ghost2_bob_xfine&3)
// [152] game_logic::$35 = ghost_frames[game_logic::$33] + game_logic::$34 -- vbuaa=pbuc1_derefidx_vbuxx_plus_vbuaa
clc
adc ghost_frames,x
// bobs_bob_id[2] = ghost_frames[ghost2_direction|ghost_frame_idx] + (ghost2_bob_xfine&3)
// [153] *(bobs_bob_id+2) = game_logic::$35 -- _deref_pbuc1=vbuaa
sta bobs_bob_id+2
// char ghost3_bob_xfine = ghost3_xfine-1
// [154] game_logic::ghost3_bob_xfine#0 = ghost3_xfine - 1 -- vbuyy=vbuz1_minus_1
lda.z ghost3_xfine
tay
dey
// ghost3_bob_xfine/4
// [155] game_logic::$37 = game_logic::ghost3_bob_xfine#0 >> 2 -- vbuaa=vbuyy_ror_2
tya
lsr
lsr
// bobs_xcol[3] = ghost3_bob_xfine/4
// [156] *(bobs_xcol+3) = game_logic::$37 -- _deref_pbuc1=vbuaa
sta bobs_xcol+3
// ghost3_yfine-1
// [157] game_logic::$38 = ghost3_yfine - 1 -- vbuxx=vbuz1_minus_1
ldx.z ghost3_yfine
dex
// bobs_yfine[3] = ghost3_yfine-1
// [158] *(bobs_yfine+3) = game_logic::$38 -- _deref_pbuc1=vbuxx
stx bobs_yfine+3
// ghost3_direction|ghost_frame_idx
// [159] game_logic::$39 = ghost3_direction | game_logic::ghost_frame_idx#2 -- vbuxx=vbuz1_bor_vbuz2
lda.z ghost3_direction
ora.z ghost_frame_idx
tax
// ghost3_bob_xfine&3
// [160] game_logic::$40 = game_logic::ghost3_bob_xfine#0 & 3 -- vbuaa=vbuyy_band_vbuc1
tya
and #3
// ghost_frames[ghost3_direction|ghost_frame_idx] + (ghost3_bob_xfine&3)
// [161] game_logic::$41 = ghost_frames[game_logic::$39] + game_logic::$40 -- vbuaa=pbuc1_derefidx_vbuxx_plus_vbuaa
clc
adc ghost_frames,x
// bobs_bob_id[3] = ghost_frames[ghost3_direction|ghost_frame_idx] + (ghost3_bob_xfine&3)
// [162] *(bobs_bob_id+3) = game_logic::$41 -- _deref_pbuc1=vbuaa
sta bobs_bob_id+3
// char ghost4_bob_xfine = ghost4_xfine-1
// [163] game_logic::ghost4_bob_xfine#0 = ghost4_xfine - 1 -- vbuyy=vbuz1_minus_1
lda.z ghost4_xfine
tay
dey
// ghost4_bob_xfine/4
// [164] game_logic::$43 = game_logic::ghost4_bob_xfine#0 >> 2 -- vbuaa=vbuyy_ror_2
tya
lsr
lsr
// bobs_xcol[4] = ghost4_bob_xfine/4
// [165] *(bobs_xcol+4) = game_logic::$43 -- _deref_pbuc1=vbuaa
sta bobs_xcol+4
// ghost4_yfine-1
// [166] game_logic::$44 = ghost4_yfine - 1 -- vbuxx=vbuz1_minus_1
ldx.z ghost4_yfine
dex
// bobs_yfine[4] = ghost4_yfine-1
// [167] *(bobs_yfine+4) = game_logic::$44 -- _deref_pbuc1=vbuxx
stx bobs_yfine+4
// ghost4_direction|ghost_frame_idx
// [168] game_logic::$45 = ghost4_direction | game_logic::ghost_frame_idx#2 -- vbuxx=vbuz1_bor_vbuz2
lda.z ghost4_direction
ora.z ghost_frame_idx
tax
// ghost4_bob_xfine&3
// [169] game_logic::$46 = game_logic::ghost4_bob_xfine#0 & 3 -- vbuaa=vbuyy_band_vbuc1
tya
and #3
// ghost_frames[ghost4_direction|ghost_frame_idx] + (ghost4_bob_xfine&3)
// [170] game_logic::$47 = ghost_frames[game_logic::$45] + game_logic::$46 -- vbuaa=pbuc1_derefidx_vbuxx_plus_vbuaa
clc
adc ghost_frames,x
// bobs_bob_id[4] = ghost_frames[ghost4_direction|ghost_frame_idx] + (ghost4_bob_xfine&3)
// [171] *(bobs_bob_id+4) = game_logic::$47 -- _deref_pbuc1=vbuaa
sta bobs_bob_id+4
rts
// game_logic::@7
__b7:
// ghosts_mode_count++;
// [172] ghosts_mode_count = ++ ghosts_mode_count -- vbuz1=_inc_vbuz1
inc.z ghosts_mode_count
// if(ghosts_mode==SCATTER)
// [173] if(ghosts_mode==SCATTER) goto game_logic::@45 -- vbuz1_eq_vbuc1_then_la1
lda #SCATTER
cmp.z ghosts_mode
bne !__b45+
jmp __b45
!__b45:
// game_logic::@16
// if(ghosts_mode==CHASE)
// [174] if(ghosts_mode==CHASE) goto game_logic::@46 -- vbuz1_eq_vbuc1_then_la1
lda #CHASE
cmp.z ghosts_mode
bne !__b46+
jmp __b46
!__b46:
// game_logic::@17
// if(ghosts_mode==FRIGHTENED)
// [175] if(ghosts_mode!=FRIGHTENED) goto game_logic::@47 -- vbuz1_neq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
bne __b9
// game_logic::@18
// if(ghosts_mode_count>50)
// [176] if(ghosts_mode_count<$32+1) goto game_logic::@47 -- vbuz1_lt_vbuc1_then_la1
lda.z ghosts_mode_count
cmp #$32+1
bcc __b9
// game_logic::@19
// ghosts_mode = CHASE
// [177] ghosts_mode = CHASE -- vbuz1=vbuc1
lda #CHASE
sta.z ghosts_mode
// ghosts_mode_count = 0
// [178] ghosts_mode_count = 0 -- vbuz1=vbuc1
lda #0
sta.z ghosts_mode_count
// [179] phi from game_logic::@19 game_logic::@58 game_logic::@59 to game_logic::@47 [phi:game_logic::@19/game_logic::@58/game_logic::@59->game_logic::@47]
__b8:
// [179] phi game_logic::do_reverse#4 = 1 [phi:game_logic::@19/game_logic::@58/game_logic::@59->game_logic::@47#0] -- vbuaa=vbuc1
lda #1
jmp __b47
// [179] phi from game_logic::@17 game_logic::@18 game_logic::@45 game_logic::@46 to game_logic::@47 [phi:game_logic::@17/game_logic::@18/game_logic::@45/game_logic::@46->game_logic::@47]
__b9:
// [179] phi game_logic::do_reverse#4 = 0 [phi:game_logic::@17/game_logic::@18/game_logic::@45/game_logic::@46->game_logic::@47#0] -- vbuaa=vbuc1
lda #0
// game_logic::@47
__b47:
// if(do_reverse)
// [180] if(0==game_logic::do_reverse#4) goto game_logic::@48 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b48
// game_logic::@60
// ghost1_reverse = 1
// [181] ghost1_reverse = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost1_reverse
// ghost2_reverse = 1
// [182] ghost2_reverse = 1 -- vbuz1=vbuc1
sta.z ghost2_reverse
// ghost3_reverse = 1
// [183] ghost3_reverse = 1 -- vbuz1=vbuc1
sta.z ghost3_reverse
// ghost4_reverse = 1
// [184] ghost4_reverse = 1 -- vbuz1=vbuc1
sta.z ghost4_reverse
// game_logic::@48
__b48:
// char pacman_xtile = pacman_xfine/2
// [185] game_logic::pacman_xtile#0 = pacman_xfine >> 1 -- vbuz1=vbuz2_ror_1
// Examine if pacman is on a pill tile - and handle it
lda.z pacman_xfine
lsr
sta.z pacman_xtile
// char pacman_ytile = pacman_yfine/2
// [186] game_logic::pacman_ytile#0 = pacman_yfine >> 1 -- vbuaa=vbuz1_ror_1
lda.z pacman_yfine
lsr
// char* ytiles = LEVEL_TILES + LEVEL_YTILE_OFFSET[pacman_ytile]
// [187] game_logic::$210 = game_logic::pacman_ytile#0 << 1 -- vbuz1=vbuaa_rol_1
asl
sta.z __210
// [188] game_logic::ytiles#0 = LEVEL_TILES + LEVEL_YTILE_OFFSET[game_logic::$210] -- pbuz1=pbuc1_plus_pwuc2_derefidx_vbuz2
tay
clc
lda #<LEVEL_TILES
adc LEVEL_YTILE_OFFSET,y
sta.z ytiles
lda #>LEVEL_TILES
adc LEVEL_YTILE_OFFSET+1,y
sta.z ytiles+1
// char tile_id = ytiles[pacman_xtile]
// [189] game_logic::tile_id#0 = game_logic::ytiles#0[game_logic::pacman_xtile#0] -- vbuxx=pbuz1_derefidx_vbuz2
ldy.z pacman_xtile
lda (ytiles),y
tax
// if(TILES_TYPE[tile_id]==PILL)
// [190] if(TILES_TYPE[game_logic::tile_id#0]==PILL) goto game_logic::@49 -- pbuc1_derefidx_vbuxx_eq_vbuc2_then_la1
lda TILES_TYPE,x
cmp #PILL
bne !__b49+
jmp __b49
!__b49:
// game_logic::@61
// if(TILES_TYPE[tile_id]==POWERUP)
// [191] if(TILES_TYPE[game_logic::tile_id#0]!=POWERUP) goto game_logic::@50 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1
lda TILES_TYPE,x
cmp #POWERUP
bne __b50
// game_logic::@62
// ytiles[pacman_xtile] = EMPTY
// [192] game_logic::ytiles#0[game_logic::pacman_xtile#0] = EMPTY -- pbuz1_derefidx_vbuz2=vbuc1
// Empty the tile
lda #EMPTY
sta (ytiles),y
// pacman_xtile/2
// [193] game_logic::$65 = game_logic::pacman_xtile#0 >> 1 -- vbuaa=vbuz1_ror_1
tya
lsr
// logic_tile_xcol = pacman_xtile/2
// [194] logic_tile_xcol = game_logic::$65 -- vbuz1=vbuaa
// Ask the logic code renderer to update the tile
sta.z logic_tile_xcol
// pacman_xtile & 0xfe
// [195] game_logic::$66 = game_logic::pacman_xtile#0 & $fe -- vbuaa=vbuz1_band_vbuc1
lda #$fe
and.z pacman_xtile
// ytiles + (pacman_xtile & 0xfe)
// [196] game_logic::$67 = game_logic::ytiles#0 + game_logic::$66 -- pbuz1=pbuz1_plus_vbuaa
clc
adc.z __67
sta.z __67
bcc !+
inc.z __67+1
!:
// logic_tile_ptr = ytiles + (pacman_xtile & 0xfe)
// [197] logic_tile_ptr = game_logic::$67 -- pbuz1=pbuz2
lda.z __67
sta.z logic_tile_ptr
lda.z __67+1
sta.z logic_tile_ptr+1
// pacman_ytile*2
// [198] game_logic::$68 = game_logic::$210 -- vbuaa=vbuz1
lda.z __210
// logic_tile_yfine = pacman_ytile*2
// [199] logic_tile_yfine = game_logic::$68 -- vbuz1=vbuaa
sta.z logic_tile_yfine
// ghosts_mode = FRIGHTENED
// [200] ghosts_mode = FRIGHTENED -- vbuz1=vbuc1
// Start power-up mode
lda #FRIGHTENED
sta.z ghosts_mode
// ghosts_mode_count = 0
// [201] ghosts_mode_count = 0 -- vbuz1=vbuc1
lda #0
sta.z ghosts_mode_count
// game_logic::@50
__b50:
// pacman_xfine-ghost1_xfine
// [202] game_logic::$75 = pacman_xfine - ghost1_xfine -- vbuxx=vbuz1_minus_vbuz2
lda.z pacman_xfine
sec
sbc.z ghost1_xfine
tax
// pacman_yfine-ghost1_yfine
// [203] game_logic::$77 = pacman_yfine - ghost1_yfine -- vbuyy=vbuz1_minus_vbuz2
lda.z pacman_yfine
sec
sbc.z ghost1_yfine
tay
// if(ABS[pacman_xfine-ghost1_xfine]<2 && ABS[pacman_yfine-ghost1_yfine]<2)
// [204] if(ABS[game_logic::$75]>=2) goto game_logic::@64 -- pbuc1_derefidx_vbuxx_ge_vbuc2_then_la1
// Check if anyone dies
lda ABS,x
cmp #2
bcs __b64
// game_logic::@162
// [205] if(ABS[game_logic::$77]<2) goto game_logic::@51 -- pbuc1_derefidx_vbuyy_lt_vbuc2_then_la1
lda ABS,y
cmp #2
bcs !__b51+
jmp __b51
!__b51:
// game_logic::@64
__b64:
// pacman_xfine-ghost2_xfine
// [206] game_logic::$80 = pacman_xfine - ghost2_xfine -- vbuxx=vbuz1_minus_vbuz2
lda.z pacman_xfine
sec
sbc.z ghost2_xfine
tax
// pacman_yfine-ghost2_yfine
// [207] game_logic::$82 = pacman_yfine - ghost2_yfine -- vbuyy=vbuz1_minus_vbuz2
lda.z pacman_yfine
sec
sbc.z ghost2_yfine
tay
// if(ABS[pacman_xfine-ghost2_xfine]<2 && ABS[pacman_yfine-ghost2_yfine]<2)
// [208] if(ABS[game_logic::$80]>=2) goto game_logic::@65 -- pbuc1_derefidx_vbuxx_ge_vbuc2_then_la1
lda ABS,x
cmp #2
bcs __b65
// game_logic::@163
// [209] if(ABS[game_logic::$82]<2) goto game_logic::@52 -- pbuc1_derefidx_vbuyy_lt_vbuc2_then_la1
lda ABS,y
cmp #2
bcc __b52
// game_logic::@65
__b65:
// pacman_xfine-ghost3_xfine
// [210] game_logic::$85 = pacman_xfine - ghost3_xfine -- vbuxx=vbuz1_minus_vbuz2
lda.z pacman_xfine
sec
sbc.z ghost3_xfine
tax
// pacman_yfine-ghost3_yfine
// [211] game_logic::$87 = pacman_yfine - ghost3_yfine -- vbuyy=vbuz1_minus_vbuz2
lda.z pacman_yfine
sec
sbc.z ghost3_yfine
tay
// if(ABS[pacman_xfine-ghost3_xfine]<2 && ABS[pacman_yfine-ghost3_yfine]<2)
// [212] if(ABS[game_logic::$85]>=2) goto game_logic::@66 -- pbuc1_derefidx_vbuxx_ge_vbuc2_then_la1
lda ABS,x
cmp #2
bcs __b66
// game_logic::@164
// [213] if(ABS[game_logic::$87]<2) goto game_logic::@53 -- pbuc1_derefidx_vbuyy_lt_vbuc2_then_la1
lda ABS,y
cmp #2
bcc __b53
// game_logic::@66
__b66:
// pacman_xfine-ghost4_xfine
// [214] game_logic::$90 = pacman_xfine - ghost4_xfine -- vbuxx=vbuz1_minus_vbuz2
lda.z pacman_xfine
sec
sbc.z ghost4_xfine
tax
// pacman_yfine-ghost4_yfine
// [215] game_logic::$92 = pacman_yfine - ghost4_yfine -- vbuyy=vbuz1_minus_vbuz2
lda.z pacman_yfine
sec
sbc.z ghost4_yfine
tay
// if(ABS[pacman_xfine-ghost4_xfine]<2 && ABS[pacman_yfine-ghost4_yfine]<2)
// [216] if(ABS[game_logic::$90]>=2) goto game_logic::@return -- pbuc1_derefidx_vbuxx_ge_vbuc2_then_la1
lda ABS,x
cmp #2
bcc !__breturn+
jmp __breturn
!__breturn:
// game_logic::@165
// [217] if(ABS[game_logic::$92]<2) goto game_logic::@67 -- pbuc1_derefidx_vbuyy_lt_vbuc2_then_la1
lda ABS,y
cmp #2
bcc __b67
rts
// game_logic::@67
__b67:
// if(ghosts_mode==FRIGHTENED)
// [218] if(ghosts_mode==FRIGHTENED) goto game_logic::@54 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b54
// game_logic::@68
// pacman_lives--;
// [219] pacman_lives = -- pacman_lives -- vbuz1=_dec_vbuz1
dec.z pacman_lives
// spawn_all()
// [220] call spawn_all
jsr spawn_all
rts
// game_logic::@54
__b54:
// ghost4_direction = STOP
// [221] ghost4_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost4_direction
// ghost4_xfine = 50
// [222] ghost4_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost4_xfine
// ghost4_yfine = 35
// [223] ghost4_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost4_yfine
// ghost4_substep = 0
// [224] ghost4_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost4_substep
// ghost4_respawn = 50
// [225] ghost4_respawn = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost4_respawn
rts
// game_logic::@53
__b53:
// if(ghosts_mode==FRIGHTENED)
// [226] if(ghosts_mode==FRIGHTENED) goto game_logic::@55 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b55
// game_logic::@69
// pacman_lives--;
// [227] pacman_lives = -- pacman_lives -- vbuz1=_dec_vbuz1
dec.z pacman_lives
// spawn_all()
// [228] call spawn_all
jsr spawn_all
rts
// game_logic::@55
__b55:
// ghost3_direction = STOP
// [229] ghost3_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost3_direction
// ghost3_xfine = 50
// [230] ghost3_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost3_xfine
// ghost3_yfine = 35
// [231] ghost3_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost3_yfine
// ghost3_substep = 0
// [232] ghost3_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost3_substep
// ghost3_respawn = 50
// [233] ghost3_respawn = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost3_respawn
rts
// game_logic::@52
__b52:
// if(ghosts_mode==FRIGHTENED)
// [234] if(ghosts_mode==FRIGHTENED) goto game_logic::@56 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b56
// game_logic::@70
// pacman_lives--;
// [235] pacman_lives = -- pacman_lives -- vbuz1=_dec_vbuz1
dec.z pacman_lives
// spawn_all()
// [236] call spawn_all
jsr spawn_all
rts
// game_logic::@56
__b56:
// ghost2_direction = STOP
// [237] ghost2_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z ghost2_direction
// ghost2_xfine = 50
// [238] ghost2_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost2_xfine
// ghost2_yfine = 35
// [239] ghost2_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost2_yfine
// ghost2_substep = 0
// [240] ghost2_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost2_substep
// ghost2_respawn = 50
// [241] ghost2_respawn = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost2_respawn
rts
// game_logic::@51
__b51:
// if(ghosts_mode==FRIGHTENED)
// [242] if(ghosts_mode==FRIGHTENED) goto game_logic::@57 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b57
// game_logic::@71
// pacman_lives--;
// [243] pacman_lives = -- pacman_lives -- vbuz1=_dec_vbuz1
dec.z pacman_lives
// spawn_all()
// [244] call spawn_all
jsr spawn_all
rts
// game_logic::@57
__b57:
// ghost1_direction = STOP
// [245] ghost1_direction = STOP -- vbuz1=vbuc1
// ghost dies
lda #STOP
sta.z ghost1_direction
// ghost1_xfine = 50
// [246] ghost1_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost1_xfine
// ghost1_yfine = 35
// [247] ghost1_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost1_yfine
// ghost1_substep = 0
// [248] ghost1_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost1_substep
// ghost1_respawn = 50
// [249] ghost1_respawn = $32 -- vbuz1=vbuc1
lda #$32
sta.z ghost1_respawn
rts
// game_logic::@49
__b49:
// ytiles[pacman_xtile] = EMPTY
// [250] game_logic::ytiles#0[game_logic::pacman_xtile#0] = EMPTY -- pbuz1_derefidx_vbuz2=vbuc1
// Empty the tile
lda #EMPTY
ldy.z pacman_xtile
sta (ytiles),y
// pacman_xtile/2
// [251] game_logic::$69 = game_logic::pacman_xtile#0 >> 1 -- vbuaa=vbuz1_ror_1
tya
lsr
// logic_tile_xcol = pacman_xtile/2
// [252] logic_tile_xcol = game_logic::$69 -- vbuz1=vbuaa
// Ask the logic code renderer to update the tile
sta.z logic_tile_xcol
// pacman_xtile & 0xfe
// [253] game_logic::$70 = game_logic::pacman_xtile#0 & $fe -- vbuaa=vbuz1_band_vbuc1
lda #$fe
and.z pacman_xtile
// ytiles + (pacman_xtile & 0xfe)
// [254] game_logic::$71 = game_logic::ytiles#0 + game_logic::$70 -- pbuz1=pbuz1_plus_vbuaa
clc
adc.z __71
sta.z __71
bcc !+
inc.z __71+1
!:
// logic_tile_ptr = ytiles + (pacman_xtile & 0xfe)
// [255] logic_tile_ptr = game_logic::$71 -- pbuz1=pbuz2
lda.z __71
sta.z logic_tile_ptr
lda.z __71+1
sta.z logic_tile_ptr+1
// pacman_ytile*2
// [256] game_logic::$72 = game_logic::$210 -- vbuaa=vbuz1
lda.z __210
// logic_tile_yfine = pacman_ytile*2
// [257] logic_tile_yfine = game_logic::$72 -- vbuz1=vbuaa
sta.z logic_tile_yfine
// if(--pill_count==0)
// [258] pill_count = -- pill_count -- vwuz1=_dec_vwuz1
lda.z pill_count
bne !+
dec.z pill_count+1
!:
dec.z pill_count
// [259] if(pill_count!=0) goto game_logic::@50 -- vwuz1_neq_0_then_la1
lda.z pill_count
ora.z pill_count+1
beq !__b50+
jmp __b50
!__b50:
// game_logic::@63
// pacman_wins = 1
// [260] pacman_wins = 1 -- vbuz1=vbuc1
lda #1
sta.z pacman_wins
jmp __b50
// game_logic::@46
__b46:
// if(ghosts_mode_count>150)
// [261] if(ghosts_mode_count<$96+1) goto game_logic::@47 -- vbuz1_lt_vbuc1_then_la1
lda.z ghosts_mode_count
cmp #$96+1
bcs !__b9+
jmp __b9
!__b9:
// game_logic::@58
// ghosts_mode = SCATTER
// [262] ghosts_mode = SCATTER -- vbuz1=vbuc1
lda #SCATTER
sta.z ghosts_mode
// ghosts_mode_count = 0
// [263] ghosts_mode_count = 0 -- vbuz1=vbuc1
lda #0
sta.z ghosts_mode_count
jmp __b8
// game_logic::@45
__b45:
// if(ghosts_mode_count>50)
// [264] if(ghosts_mode_count<$32+1) goto game_logic::@47 -- vbuz1_lt_vbuc1_then_la1
lda.z ghosts_mode_count
cmp #$32+1
bcs !__b9+
jmp __b9
!__b9:
// game_logic::@59
// ghosts_mode = CHASE
// [265] ghosts_mode = CHASE -- vbuz1=vbuc1
lda #CHASE
sta.z ghosts_mode
// ghosts_mode_count = 0
// [266] ghosts_mode_count = 0 -- vbuz1=vbuc1
lda #0
sta.z ghosts_mode_count
jmp __b8
// game_logic::@6
__b6:
// if(ghost4_respawn)
// [267] if(0!=ghost4_respawn) goto game_logic::@72 -- 0_neq_vbuz1_then_la1
// Ghost spawn timer
lda.z ghost4_respawn
beq !__b72+
jmp __b72
!__b72:
// game_logic::@20
// if(ghost4_direction==RIGHT)
// [268] if(ghost4_direction==RIGHT) goto game_logic::@73 -- vbuz1_eq_vbuc1_then_la1
// Move in the current direction (unless he is stopped)
lda #RIGHT
cmp.z ghost4_direction
bne !__b73+
jmp __b73
!__b73:
// game_logic::@21
// if(ghost4_direction==DOWN)
// [269] if(ghost4_direction==DOWN) goto game_logic::@74 -- vbuz1_eq_vbuc1_then_la1
lda #DOWN
cmp.z ghost4_direction
bne !__b74+
jmp __b74
!__b74:
// game_logic::@22
// if(ghost4_direction==LEFT)
// [270] if(ghost4_direction==LEFT) goto game_logic::@75 -- vbuz1_eq_vbuc1_then_la1
lda #LEFT
cmp.z ghost4_direction
bne !__b75+
jmp __b75
!__b75:
// game_logic::@23
// if(ghost4_direction==UP)
// [271] if(ghost4_direction!=UP) goto game_logic::@76 -- vbuz1_neq_vbuc1_then_la1
lda #UP
cmp.z ghost4_direction
bne __b76
// game_logic::@24
// --ghost4_yfine;
// [272] ghost4_yfine = -- ghost4_yfine -- vbuz1=_dec_vbuz1
dec.z ghost4_yfine
// game_logic::@76
__b76:
// ghost4_direction!=STOP
// [273] game_logic::$220 = ghost4_direction -- vbuxx=vbuz1
ldx.z ghost4_direction
// if(ghost4_substep==0 && ghost4_direction!=STOP)
// [274] if(ghost4_substep!=0) goto game_logic::@82 -- vbuz1_neq_0_then_la1
lda.z ghost4_substep
bne __b82
// game_logic::@166
// [275] if(game_logic::$220!=STOP) goto game_logic::@77 -- vbuxx_neq_vbuc1_then_la1
cpx #STOP
bne __b77
// game_logic::@82
__b82:
// ghost4_substep = 0
// [276] ghost4_substep = 0 -- vbuz1=vbuc1
// Ghost is on a tile
lda #0
sta.z ghost4_substep
// if(ghost4_reverse)
// [277] if(0!=ghost4_reverse) goto game_logic::@78 -- 0_neq_vbuz1_then_la1
lda.z ghost4_reverse
bne __b78
// game_logic::@83
// char ghost4_xtile = ghost4_xfine/2
// [278] game_logic::ghost4_xtile#0 = ghost4_xfine >> 1 -- vbuz1=vbuz2_ror_1
// Examine open directions from the new tile to determine next action
lda.z ghost4_xfine
lsr
sta.z ghost4_xtile
// char ghost4_ytile = ghost4_yfine/2
// [279] game_logic::ghost4_ytile#0 = ghost4_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z ghost4_yfine
lsr
sta.z ghost4_ytile
// char open_directions = level_tile_directions(ghost4_xtile, ghost4_ytile)
// [280] level_tile_directions::xtile#0 = game_logic::ghost4_xtile#0 -- vbuxx=vbuz1
ldx.z ghost4_xtile
// [281] level_tile_directions::ytile#0 = game_logic::ghost4_ytile#0 -- vbuaa=vbuz1
// [282] call level_tile_directions
// [740] phi from game_logic::@83 to level_tile_directions [phi:game_logic::@83->level_tile_directions]
// [740] phi level_tile_directions::ytile#5 = level_tile_directions::ytile#0 [phi:game_logic::@83->level_tile_directions#0] -- register_copy
// [740] phi level_tile_directions::xtile#5 = level_tile_directions::xtile#0 [phi:game_logic::@83->level_tile_directions#1] -- register_copy
jsr level_tile_directions
// char open_directions = level_tile_directions(ghost4_xtile, ghost4_ytile)
// [283] level_tile_directions::return#3 = level_tile_directions::return#2
// game_logic::@152
// [284] game_logic::open_directions#0 = level_tile_directions::return#3
// open_directions &= DIRECTION_ELIMINATE[ghost4_direction]
// [285] game_logic::open_directions#1 = game_logic::open_directions#0 & DIRECTION_ELIMINATE[ghost4_direction] -- vbuyy=vbuaa_band_pbuc1_derefidx_vbuz1
// Eliminate the direction ghost came from
ldy.z ghost4_direction
and DIRECTION_ELIMINATE,y
tay
// if(ghosts_mode==FRIGHTENED)
// [286] if(ghosts_mode==FRIGHTENED) goto game_logic::@79 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b79
// game_logic::@84
// if(ghosts_mode==SCATTER)
// [287] if(ghosts_mode==SCATTER) goto game_logic::@80 -- vbuz1_eq_vbuc1_then_la1
lda #SCATTER
cmp.z ghosts_mode
beq __b10
// game_logic::@85
// target_xtile = pacman_xfine/2
// [288] game_logic::target_xtile#2 = pacman_xfine >> 1 -- vbuxx=vbuz1_ror_1
lda.z pacman_xfine
lsr
tax
// target_ytile = pacman_yfine/2
// [289] game_logic::target_ytile#2 = pacman_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z pacman_yfine
lsr
sta.z target_ytile
// [290] phi from game_logic::@85 to game_logic::@80 [phi:game_logic::@85->game_logic::@80]
// [290] phi game_logic::target_ytile#3 = game_logic::target_ytile#2 [phi:game_logic::@85->game_logic::@80#0] -- register_copy
// [290] phi game_logic::target_xtile#3 = game_logic::target_xtile#2 [phi:game_logic::@85->game_logic::@80#1] -- register_copy
jmp __b80
// [290] phi from game_logic::@84 to game_logic::@80 [phi:game_logic::@84->game_logic::@80]
__b10:
// [290] phi game_logic::target_ytile#3 = 2 [phi:game_logic::@84->game_logic::@80#0] -- vbuz1=vbuc1
lda #2
sta.z target_ytile
// [290] phi game_logic::target_xtile#3 = 2 [phi:game_logic::@84->game_logic::@80#1] -- vbuxx=vbuc1
tax
// game_logic::@80
__b80:
// choose_direction( open_directions, ghost4_xtile, ghost4_ytile, target_xtile, target_ytile )
// [291] choose_direction::open_directions#0 = game_logic::open_directions#1 -- vbuz1=vbuyy
sty.z choose_direction.open_directions
// [292] choose_direction::ghost_xtile#0 = game_logic::ghost4_xtile#0 -- vbuyy=vbuz1
ldy.z ghost4_xtile
// [293] choose_direction::ghost_ytile#0 = game_logic::ghost4_ytile#0
// [294] choose_direction::target_xtile#0 = game_logic::target_xtile#3
// [295] choose_direction::target_ytile#0 = game_logic::target_ytile#3
// [296] call choose_direction
// [748] phi from game_logic::@80 to choose_direction [phi:game_logic::@80->choose_direction]
// [748] phi choose_direction::open_directions#10 = choose_direction::open_directions#0 [phi:game_logic::@80->choose_direction#0] -- register_copy
// [748] phi choose_direction::target_ytile#4 = choose_direction::target_ytile#0 [phi:game_logic::@80->choose_direction#1] -- register_copy
// [748] phi choose_direction::ghost_ytile#4 = choose_direction::ghost_ytile#0 [phi:game_logic::@80->choose_direction#2] -- register_copy
// [748] phi choose_direction::target_xtile#4 = choose_direction::target_xtile#0 [phi:game_logic::@80->choose_direction#3] -- register_copy
// [748] phi choose_direction::ghost_xtile#4 = choose_direction::ghost_xtile#0 [phi:game_logic::@80->choose_direction#4] -- register_copy
jsr choose_direction
// choose_direction( open_directions, ghost4_xtile, ghost4_ytile, target_xtile, target_ytile )
// [297] choose_direction::return#0 = choose_direction::return#10 -- vbuaa=vbuz1
lda.z choose_direction.return
// game_logic::@153
// [298] game_logic::$119 = choose_direction::return#0
// ghost4_direction = choose_direction( open_directions, ghost4_xtile, ghost4_ytile, target_xtile, target_ytile )
// [299] ghost4_direction = game_logic::$119 -- vbuz1=vbuaa
sta.z ghost4_direction
rts
// game_logic::@79
__b79:
// ghost4_direction = DIRECTION_SINGLE[open_directions]
// [300] ghost4_direction = DIRECTION_SINGLE[game_logic::open_directions#1] -- vbuz1=pbuc1_derefidx_vbuyy
// Choose a random direction between the open directions
lda DIRECTION_SINGLE,y
sta.z ghost4_direction
rts
// game_logic::@78
__b78:
// ghost4_direction = DIRECTION_REVERSE[ghost4_direction]
// [301] ghost4_direction = DIRECTION_REVERSE[ghost4_direction] -- vbuz1=pbuc1_derefidx_vbuz1
// If we are changing between scatter & chase then reverse the direction
ldy.z ghost4_direction
lda DIRECTION_REVERSE,y
sta.z ghost4_direction
// ghost4_reverse = 0
// [302] ghost4_reverse = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost4_reverse
rts
// game_logic::@77
__b77:
// ghost4_substep = 1
// [303] ghost4_substep = 1 -- vbuz1=vbuc1
// Ghost was on a tile and is moving, so he is now between tiles
lda #1
sta.z ghost4_substep
// if(ghost4_xfine==1)
// [304] if(ghost4_xfine==1) goto game_logic::@81 -- vbuz1_eq_vbuc1_then_la1
// Teleport if we are in the magic positions
cmp.z ghost4_xfine
beq __b81
// game_logic::@86
// if(ghost4_xfine==97)
// [305] if(ghost4_xfine!=$61) goto game_logic::@return -- vbuz1_neq_vbuc1_then_la1
lda #$61
cmp.z ghost4_xfine
beq !__breturn+
jmp __breturn
!__breturn:
// game_logic::@87
// ghost4_xfine = 1
// [306] ghost4_xfine = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost4_xfine
rts
// game_logic::@81
__b81:
// ghost4_xfine = 97
// [307] ghost4_xfine = $61 -- vbuz1=vbuc1
lda #$61
sta.z ghost4_xfine
rts
// game_logic::@75
__b75:
// --ghost4_xfine;
// [308] ghost4_xfine = -- ghost4_xfine -- vbuz1=_dec_vbuz1
dec.z ghost4_xfine
jmp __b76
// game_logic::@74
__b74:
// ++ghost4_yfine;
// [309] ghost4_yfine = ++ ghost4_yfine -- vbuz1=_inc_vbuz1
inc.z ghost4_yfine
jmp __b76
// game_logic::@73
__b73:
// ++ghost4_xfine;
// [310] ghost4_xfine = ++ ghost4_xfine -- vbuz1=_inc_vbuz1
inc.z ghost4_xfine
jmp __b76
// game_logic::@72
__b72:
// if(--ghost4_respawn==0)
// [311] ghost4_respawn = -- ghost4_respawn -- vbuz1=_dec_vbuz1
dec.z ghost4_respawn
// [312] if(ghost4_respawn!=0) goto game_logic::@return -- vbuz1_neq_0_then_la1
lda.z ghost4_respawn
beq !__breturn+
jmp __breturn
!__breturn:
// game_logic::@88
// ghost4_direction = RIGHT
// [313] ghost4_direction = RIGHT -- vbuz1=vbuc1
// Spawn ghost
lda #RIGHT
sta.z ghost4_direction
// ghost4_xfine = 2
// [314] ghost4_xfine = 2 -- vbuz1=vbuc1
lda #2
sta.z ghost4_xfine
// ghost4_yfine = 2
// [315] ghost4_yfine = 2 -- vbuz1=vbuc1
sta.z ghost4_yfine
// ghost4_substep = 0
// [316] ghost4_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost4_substep
rts
// game_logic::@5
__b5:
// if(ghost3_respawn)
// [317] if(0!=ghost3_respawn) goto game_logic::@89 -- 0_neq_vbuz1_then_la1
// Ghost spawn timer
lda.z ghost3_respawn
beq !__b89+
jmp __b89
!__b89:
// game_logic::@25
// if(ghost3_direction==RIGHT)
// [318] if(ghost3_direction==RIGHT) goto game_logic::@90 -- vbuz1_eq_vbuc1_then_la1
// Move in the current direction (unless he is stopped)
lda #RIGHT
cmp.z ghost3_direction
bne !__b90+
jmp __b90
!__b90:
// game_logic::@26
// if(ghost3_direction==DOWN)
// [319] if(ghost3_direction==DOWN) goto game_logic::@91 -- vbuz1_eq_vbuc1_then_la1
lda #DOWN
cmp.z ghost3_direction
bne !__b91+
jmp __b91
!__b91:
// game_logic::@27
// if(ghost3_direction==LEFT)
// [320] if(ghost3_direction==LEFT) goto game_logic::@92 -- vbuz1_eq_vbuc1_then_la1
lda #LEFT
cmp.z ghost3_direction
bne !__b92+
jmp __b92
!__b92:
// game_logic::@28
// if(ghost3_direction==UP)
// [321] if(ghost3_direction!=UP) goto game_logic::@93 -- vbuz1_neq_vbuc1_then_la1
lda #UP
cmp.z ghost3_direction
bne __b93
// game_logic::@29
// --ghost3_yfine;
// [322] ghost3_yfine = -- ghost3_yfine -- vbuz1=_dec_vbuz1
dec.z ghost3_yfine
// game_logic::@93
__b93:
// ghost3_direction!=STOP
// [323] game_logic::$223 = ghost3_direction -- vbuxx=vbuz1
ldx.z ghost3_direction
// if(ghost3_substep==0 && ghost3_direction!=STOP)
// [324] if(ghost3_substep!=0) goto game_logic::@99 -- vbuz1_neq_0_then_la1
lda.z ghost3_substep
bne __b99
// game_logic::@167
// [325] if(game_logic::$223!=STOP) goto game_logic::@94 -- vbuxx_neq_vbuc1_then_la1
cpx #STOP
bne __b94
// game_logic::@99
__b99:
// ghost3_substep = 0
// [326] ghost3_substep = 0 -- vbuz1=vbuc1
// Ghost is on a tile
lda #0
sta.z ghost3_substep
// if(ghost3_reverse)
// [327] if(0!=ghost3_reverse) goto game_logic::@95 -- 0_neq_vbuz1_then_la1
lda.z ghost3_reverse
bne __b95
// game_logic::@100
// char ghost3_xtile = ghost3_xfine/2
// [328] game_logic::ghost3_xtile#0 = ghost3_xfine >> 1 -- vbuz1=vbuz2_ror_1
// Examine open directions from the new tile to determine next action
lda.z ghost3_xfine
lsr
sta.z ghost3_xtile
// char ghost3_ytile = ghost3_yfine/2
// [329] game_logic::ghost3_ytile#0 = ghost3_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z ghost3_yfine
lsr
sta.z ghost3_ytile
// char open_directions = level_tile_directions(ghost3_xtile, ghost3_ytile)
// [330] level_tile_directions::xtile#1 = game_logic::ghost3_xtile#0 -- vbuxx=vbuz1
ldx.z ghost3_xtile
// [331] level_tile_directions::ytile#1 = game_logic::ghost3_ytile#0 -- vbuaa=vbuz1
// [332] call level_tile_directions
// [740] phi from game_logic::@100 to level_tile_directions [phi:game_logic::@100->level_tile_directions]
// [740] phi level_tile_directions::ytile#5 = level_tile_directions::ytile#1 [phi:game_logic::@100->level_tile_directions#0] -- register_copy
// [740] phi level_tile_directions::xtile#5 = level_tile_directions::xtile#1 [phi:game_logic::@100->level_tile_directions#1] -- register_copy
jsr level_tile_directions
// char open_directions = level_tile_directions(ghost3_xtile, ghost3_ytile)
// [333] level_tile_directions::return#10 = level_tile_directions::return#2
// game_logic::@154
// [334] game_logic::open_directions1#0 = level_tile_directions::return#10
// open_directions &= DIRECTION_ELIMINATE[ghost3_direction]
// [335] game_logic::open_directions1#1 = game_logic::open_directions1#0 & DIRECTION_ELIMINATE[ghost3_direction] -- vbuyy=vbuaa_band_pbuc1_derefidx_vbuz1
// Eliminate the direction ghost came from
ldy.z ghost3_direction
and DIRECTION_ELIMINATE,y
tay
// if(ghosts_mode==FRIGHTENED)
// [336] if(ghosts_mode==FRIGHTENED) goto game_logic::@96 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b96
// game_logic::@101
// if(ghosts_mode==SCATTER)
// [337] if(ghosts_mode==SCATTER) goto game_logic::@97 -- vbuz1_eq_vbuc1_then_la1
lda #SCATTER
cmp.z ghosts_mode
beq __b11
// game_logic::@102
// target_xtile = pacman_xfine/2
// [338] game_logic::target_xtile1#2 = pacman_xfine >> 1 -- vbuxx=vbuz1_ror_1
lda.z pacman_xfine
lsr
tax
// target_ytile = pacman_yfine/2
// [339] game_logic::target_ytile1#2 = pacman_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z pacman_yfine
lsr
sta.z target_ytile1
// [340] phi from game_logic::@102 to game_logic::@97 [phi:game_logic::@102->game_logic::@97]
// [340] phi game_logic::target_ytile1#3 = game_logic::target_ytile1#2 [phi:game_logic::@102->game_logic::@97#0] -- register_copy
// [340] phi game_logic::target_xtile1#3 = game_logic::target_xtile1#2 [phi:game_logic::@102->game_logic::@97#1] -- register_copy
jmp __b97
// [340] phi from game_logic::@101 to game_logic::@97 [phi:game_logic::@101->game_logic::@97]
__b11:
// [340] phi game_logic::target_ytile1#3 = 2 [phi:game_logic::@101->game_logic::@97#0] -- vbuz1=vbuc1
lda #2
sta.z target_ytile1
// [340] phi game_logic::target_xtile1#3 = 2 [phi:game_logic::@101->game_logic::@97#1] -- vbuxx=vbuc1
tax
// game_logic::@97
__b97:
// choose_direction( open_directions, ghost3_xtile, ghost3_ytile, target_xtile, target_ytile )
// [341] choose_direction::open_directions#1 = game_logic::open_directions1#1 -- vbuz1=vbuyy
sty.z choose_direction.open_directions
// [342] choose_direction::ghost_xtile#1 = game_logic::ghost3_xtile#0 -- vbuyy=vbuz1
ldy.z ghost3_xtile
// [343] choose_direction::ghost_ytile#1 = game_logic::ghost3_ytile#0
// [344] choose_direction::target_xtile#1 = game_logic::target_xtile1#3
// [345] choose_direction::target_ytile#1 = game_logic::target_ytile1#3
// [346] call choose_direction
// [748] phi from game_logic::@97 to choose_direction [phi:game_logic::@97->choose_direction]
// [748] phi choose_direction::open_directions#10 = choose_direction::open_directions#1 [phi:game_logic::@97->choose_direction#0] -- register_copy
// [748] phi choose_direction::target_ytile#4 = choose_direction::target_ytile#1 [phi:game_logic::@97->choose_direction#1] -- register_copy
// [748] phi choose_direction::ghost_ytile#4 = choose_direction::ghost_ytile#1 [phi:game_logic::@97->choose_direction#2] -- register_copy
// [748] phi choose_direction::target_xtile#4 = choose_direction::target_xtile#1 [phi:game_logic::@97->choose_direction#3] -- register_copy
// [748] phi choose_direction::ghost_xtile#4 = choose_direction::ghost_xtile#1 [phi:game_logic::@97->choose_direction#4] -- register_copy
jsr choose_direction
// choose_direction( open_directions, ghost3_xtile, ghost3_ytile, target_xtile, target_ytile )
// [347] choose_direction::return#1 = choose_direction::return#10 -- vbuaa=vbuz1
lda.z choose_direction.return
// game_logic::@155
// [348] game_logic::$140 = choose_direction::return#1
// ghost3_direction = choose_direction( open_directions, ghost3_xtile, ghost3_ytile, target_xtile, target_ytile )
// [349] ghost3_direction = game_logic::$140 -- vbuz1=vbuaa
sta.z ghost3_direction
rts
// game_logic::@96
__b96:
// ghost3_direction = DIRECTION_SINGLE[open_directions]
// [350] ghost3_direction = DIRECTION_SINGLE[game_logic::open_directions1#1] -- vbuz1=pbuc1_derefidx_vbuyy
// Choose a random direction between the open directions
lda DIRECTION_SINGLE,y
sta.z ghost3_direction
rts
// game_logic::@95
__b95:
// ghost3_direction = DIRECTION_REVERSE[ghost3_direction]
// [351] ghost3_direction = DIRECTION_REVERSE[ghost3_direction] -- vbuz1=pbuc1_derefidx_vbuz1
// If we are changing between scatter & chase then reverse the direction
ldy.z ghost3_direction
lda DIRECTION_REVERSE,y
sta.z ghost3_direction
// ghost3_reverse = 0
// [352] ghost3_reverse = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost3_reverse
rts
// game_logic::@94
__b94:
// ghost3_substep = 1
// [353] ghost3_substep = 1 -- vbuz1=vbuc1
// Ghost was on a tile and is moving, so he is now between tiles
lda #1
sta.z ghost3_substep
// if(ghost3_xfine==1)
// [354] if(ghost3_xfine==1) goto game_logic::@98 -- vbuz1_eq_vbuc1_then_la1
// Teleport if we are in the magic positions
cmp.z ghost3_xfine
beq __b98
// game_logic::@103
// if(ghost3_xfine==97)
// [355] if(ghost3_xfine!=$61) goto game_logic::@return -- vbuz1_neq_vbuc1_then_la1
lda #$61
cmp.z ghost3_xfine
beq !__breturn+
jmp __breturn
!__breturn:
// game_logic::@104
// ghost3_xfine = 1
// [356] ghost3_xfine = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost3_xfine
rts
// game_logic::@98
__b98:
// ghost3_xfine = 97
// [357] ghost3_xfine = $61 -- vbuz1=vbuc1
lda #$61
sta.z ghost3_xfine
rts
// game_logic::@92
__b92:
// --ghost3_xfine;
// [358] ghost3_xfine = -- ghost3_xfine -- vbuz1=_dec_vbuz1
dec.z ghost3_xfine
jmp __b93
// game_logic::@91
__b91:
// ++ghost3_yfine;
// [359] ghost3_yfine = ++ ghost3_yfine -- vbuz1=_inc_vbuz1
inc.z ghost3_yfine
jmp __b93
// game_logic::@90
__b90:
// ++ghost3_xfine;
// [360] ghost3_xfine = ++ ghost3_xfine -- vbuz1=_inc_vbuz1
inc.z ghost3_xfine
jmp __b93
// game_logic::@89
__b89:
// if(--ghost3_respawn==0)
// [361] ghost3_respawn = -- ghost3_respawn -- vbuz1=_dec_vbuz1
dec.z ghost3_respawn
// [362] if(ghost3_respawn!=0) goto game_logic::@return -- vbuz1_neq_0_then_la1
lda.z ghost3_respawn
beq !__breturn+
jmp __breturn
!__breturn:
// game_logic::@105
// ghost3_direction = UP
// [363] ghost3_direction = UP -- vbuz1=vbuc1
// Spawn ghost
lda #UP
sta.z ghost3_direction
// ghost3_xfine = 2
// [364] ghost3_xfine = 2 -- vbuz1=vbuc1
lda #2
sta.z ghost3_xfine
// ghost3_yfine = 70
// [365] ghost3_yfine = $46 -- vbuz1=vbuc1
lda #$46
sta.z ghost3_yfine
// ghost3_substep = 0
// [366] ghost3_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost3_substep
rts
// game_logic::@4
__b4:
// if(ghost2_respawn)
// [367] if(0!=ghost2_respawn) goto game_logic::@106 -- 0_neq_vbuz1_then_la1
// Ghost spawn timer
lda.z ghost2_respawn
beq !__b106+
jmp __b106
!__b106:
// game_logic::@30
// if(ghost2_direction==RIGHT)
// [368] if(ghost2_direction==RIGHT) goto game_logic::@107 -- vbuz1_eq_vbuc1_then_la1
// Move in the current direction (unless he is stopped)
lda #RIGHT
cmp.z ghost2_direction
bne !__b107+
jmp __b107
!__b107:
// game_logic::@31
// if(ghost2_direction==DOWN)
// [369] if(ghost2_direction==DOWN) goto game_logic::@108 -- vbuz1_eq_vbuc1_then_la1
lda #DOWN
cmp.z ghost2_direction
bne !__b108+
jmp __b108
!__b108:
// game_logic::@32
// if(ghost2_direction==LEFT)
// [370] if(ghost2_direction==LEFT) goto game_logic::@109 -- vbuz1_eq_vbuc1_then_la1
lda #LEFT
cmp.z ghost2_direction
bne !__b109+
jmp __b109
!__b109:
// game_logic::@33
// if(ghost2_direction==UP)
// [371] if(ghost2_direction!=UP) goto game_logic::@110 -- vbuz1_neq_vbuc1_then_la1
lda #UP
cmp.z ghost2_direction
bne __b110
// game_logic::@34
// --ghost2_yfine;
// [372] ghost2_yfine = -- ghost2_yfine -- vbuz1=_dec_vbuz1
dec.z ghost2_yfine
// game_logic::@110
__b110:
// ghost2_direction!=STOP
// [373] game_logic::$226 = ghost2_direction -- vbuxx=vbuz1
ldx.z ghost2_direction
// if(ghost2_substep==0 && ghost2_direction!=STOP)
// [374] if(ghost2_substep!=0) goto game_logic::@116 -- vbuz1_neq_0_then_la1
lda.z ghost2_substep
bne __b116
// game_logic::@168
// [375] if(game_logic::$226!=STOP) goto game_logic::@111 -- vbuxx_neq_vbuc1_then_la1
cpx #STOP
bne __b111
// game_logic::@116
__b116:
// ghost2_substep = 0
// [376] ghost2_substep = 0 -- vbuz1=vbuc1
// Ghost is on a tile
lda #0
sta.z ghost2_substep
// if(ghost2_reverse)
// [377] if(0!=ghost2_reverse) goto game_logic::@112 -- 0_neq_vbuz1_then_la1
lda.z ghost2_reverse
bne __b112
// game_logic::@117
// char ghost2_xtile = ghost2_xfine/2
// [378] game_logic::ghost2_xtile#0 = ghost2_xfine >> 1 -- vbuz1=vbuz2_ror_1
// Examine open directions from the new tile to determine next action
lda.z ghost2_xfine
lsr
sta.z ghost2_xtile
// char ghost2_ytile = ghost2_yfine/2
// [379] game_logic::ghost2_ytile#0 = ghost2_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z ghost2_yfine
lsr
sta.z ghost2_ytile
// char open_directions = level_tile_directions(ghost2_xtile, ghost2_ytile)
// [380] level_tile_directions::xtile#2 = game_logic::ghost2_xtile#0 -- vbuxx=vbuz1
ldx.z ghost2_xtile
// [381] level_tile_directions::ytile#2 = game_logic::ghost2_ytile#0 -- vbuaa=vbuz1
// [382] call level_tile_directions
// [740] phi from game_logic::@117 to level_tile_directions [phi:game_logic::@117->level_tile_directions]
// [740] phi level_tile_directions::ytile#5 = level_tile_directions::ytile#2 [phi:game_logic::@117->level_tile_directions#0] -- register_copy
// [740] phi level_tile_directions::xtile#5 = level_tile_directions::xtile#2 [phi:game_logic::@117->level_tile_directions#1] -- register_copy
jsr level_tile_directions
// char open_directions = level_tile_directions(ghost2_xtile, ghost2_ytile)
// [383] level_tile_directions::return#11 = level_tile_directions::return#2
// game_logic::@156
// [384] game_logic::open_directions2#0 = level_tile_directions::return#11
// open_directions &= DIRECTION_ELIMINATE[ghost2_direction]
// [385] game_logic::open_directions2#1 = game_logic::open_directions2#0 & DIRECTION_ELIMINATE[ghost2_direction] -- vbuyy=vbuaa_band_pbuc1_derefidx_vbuz1
// Eliminate the direction ghost came from
ldy.z ghost2_direction
and DIRECTION_ELIMINATE,y
tay
// if(ghosts_mode==FRIGHTENED)
// [386] if(ghosts_mode==FRIGHTENED) goto game_logic::@113 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b113
// game_logic::@118
// if(ghosts_mode==SCATTER)
// [387] if(ghosts_mode==SCATTER) goto game_logic::@114 -- vbuz1_eq_vbuc1_then_la1
lda #SCATTER
cmp.z ghosts_mode
beq __b12
// game_logic::@119
// target_xtile = pacman_xfine/2
// [388] game_logic::target_xtile2#2 = pacman_xfine >> 1 -- vbuxx=vbuz1_ror_1
lda.z pacman_xfine
lsr
tax
// target_ytile = pacman_yfine/2
// [389] game_logic::target_ytile2#2 = pacman_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z pacman_yfine
lsr
sta.z target_ytile2
// [390] phi from game_logic::@119 to game_logic::@114 [phi:game_logic::@119->game_logic::@114]
// [390] phi game_logic::target_ytile2#3 = game_logic::target_ytile2#2 [phi:game_logic::@119->game_logic::@114#0] -- register_copy
// [390] phi game_logic::target_xtile2#3 = game_logic::target_xtile2#2 [phi:game_logic::@119->game_logic::@114#1] -- register_copy
jmp __b114
// [390] phi from game_logic::@118 to game_logic::@114 [phi:game_logic::@118->game_logic::@114]
__b12:
// [390] phi game_logic::target_ytile2#3 = 2 [phi:game_logic::@118->game_logic::@114#0] -- vbuz1=vbuc1
lda #2
sta.z target_ytile2
// [390] phi game_logic::target_xtile2#3 = 2 [phi:game_logic::@118->game_logic::@114#1] -- vbuxx=vbuc1
tax
// game_logic::@114
__b114:
// choose_direction( open_directions, ghost2_xtile, ghost2_ytile, target_xtile, target_ytile )
// [391] choose_direction::open_directions#2 = game_logic::open_directions2#1 -- vbuz1=vbuyy
sty.z choose_direction.open_directions
// [392] choose_direction::ghost_xtile#2 = game_logic::ghost2_xtile#0 -- vbuyy=vbuz1
ldy.z ghost2_xtile
// [393] choose_direction::ghost_ytile#2 = game_logic::ghost2_ytile#0
// [394] choose_direction::target_xtile#2 = game_logic::target_xtile2#3
// [395] choose_direction::target_ytile#2 = game_logic::target_ytile2#3
// [396] call choose_direction
// [748] phi from game_logic::@114 to choose_direction [phi:game_logic::@114->choose_direction]
// [748] phi choose_direction::open_directions#10 = choose_direction::open_directions#2 [phi:game_logic::@114->choose_direction#0] -- register_copy
// [748] phi choose_direction::target_ytile#4 = choose_direction::target_ytile#2 [phi:game_logic::@114->choose_direction#1] -- register_copy
// [748] phi choose_direction::ghost_ytile#4 = choose_direction::ghost_ytile#2 [phi:game_logic::@114->choose_direction#2] -- register_copy
// [748] phi choose_direction::target_xtile#4 = choose_direction::target_xtile#2 [phi:game_logic::@114->choose_direction#3] -- register_copy
// [748] phi choose_direction::ghost_xtile#4 = choose_direction::ghost_xtile#2 [phi:game_logic::@114->choose_direction#4] -- register_copy
jsr choose_direction
// choose_direction( open_directions, ghost2_xtile, ghost2_ytile, target_xtile, target_ytile )
// [397] choose_direction::return#2 = choose_direction::return#10 -- vbuaa=vbuz1
lda.z choose_direction.return
// game_logic::@157
// [398] game_logic::$161 = choose_direction::return#2
// ghost2_direction = choose_direction( open_directions, ghost2_xtile, ghost2_ytile, target_xtile, target_ytile )
// [399] ghost2_direction = game_logic::$161 -- vbuz1=vbuaa
sta.z ghost2_direction
rts
// game_logic::@113
__b113:
// ghost2_direction = DIRECTION_SINGLE[open_directions]
// [400] ghost2_direction = DIRECTION_SINGLE[game_logic::open_directions2#1] -- vbuz1=pbuc1_derefidx_vbuyy
// Choose a random direction between the open directions
lda DIRECTION_SINGLE,y
sta.z ghost2_direction
rts
// game_logic::@112
__b112:
// ghost2_direction = DIRECTION_REVERSE[ghost2_direction]
// [401] ghost2_direction = DIRECTION_REVERSE[ghost2_direction] -- vbuz1=pbuc1_derefidx_vbuz1
// If we are changing between scatter & chase then reverse the direction
ldy.z ghost2_direction
lda DIRECTION_REVERSE,y
sta.z ghost2_direction
// ghost2_reverse = 0
// [402] ghost2_reverse = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost2_reverse
rts
// game_logic::@111
__b111:
// ghost2_substep = 1
// [403] ghost2_substep = 1 -- vbuz1=vbuc1
// Ghost was on a tile and is moving, so he is now between tiles
lda #1
sta.z ghost2_substep
// if(ghost2_xfine==1)
// [404] if(ghost2_xfine==1) goto game_logic::@115 -- vbuz1_eq_vbuc1_then_la1
// Teleport if we are in the magic positions
cmp.z ghost2_xfine
beq __b115
// game_logic::@120
// if(ghost2_xfine==97)
// [405] if(ghost2_xfine!=$61) goto game_logic::@return -- vbuz1_neq_vbuc1_then_la1
lda #$61
cmp.z ghost2_xfine
beq !__breturn+
jmp __breturn
!__breturn:
// game_logic::@121
// ghost2_xfine = 1
// [406] ghost2_xfine = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost2_xfine
rts
// game_logic::@115
__b115:
// ghost2_xfine = 97
// [407] ghost2_xfine = $61 -- vbuz1=vbuc1
lda #$61
sta.z ghost2_xfine
rts
// game_logic::@109
__b109:
// --ghost2_xfine;
// [408] ghost2_xfine = -- ghost2_xfine -- vbuz1=_dec_vbuz1
dec.z ghost2_xfine
jmp __b110
// game_logic::@108
__b108:
// ++ghost2_yfine;
// [409] ghost2_yfine = ++ ghost2_yfine -- vbuz1=_inc_vbuz1
inc.z ghost2_yfine
jmp __b110
// game_logic::@107
__b107:
// ++ghost2_xfine;
// [410] ghost2_xfine = ++ ghost2_xfine -- vbuz1=_inc_vbuz1
inc.z ghost2_xfine
jmp __b110
// game_logic::@106
__b106:
// if(--ghost2_respawn==0)
// [411] ghost2_respawn = -- ghost2_respawn -- vbuz1=_dec_vbuz1
dec.z ghost2_respawn
// [412] if(ghost2_respawn!=0) goto game_logic::@return -- vbuz1_neq_0_then_la1
lda.z ghost2_respawn
beq !__breturn+
jmp __breturn
!__breturn:
// game_logic::@122
// ghost2_direction = LEFT
// [413] ghost2_direction = LEFT -- vbuz1=vbuc1
// Spawn ghost
lda #LEFT
sta.z ghost2_direction
// ghost2_xfine = 96
// [414] ghost2_xfine = $60 -- vbuz1=vbuc1
lda #$60
sta.z ghost2_xfine
// ghost2_yfine = 70
// [415] ghost2_yfine = $46 -- vbuz1=vbuc1
lda #$46
sta.z ghost2_yfine
// ghost2_substep = 0
// [416] ghost2_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost2_substep
rts
// game_logic::@3
__b3:
// if(ghost1_respawn)
// [417] if(0!=ghost1_respawn) goto game_logic::@123 -- 0_neq_vbuz1_then_la1
// Ghost spawn timer
lda.z ghost1_respawn
beq !__b123+
jmp __b123
!__b123:
// game_logic::@35
// if(ghost1_direction==RIGHT)
// [418] if(ghost1_direction==RIGHT) goto game_logic::@124 -- vbuz1_eq_vbuc1_then_la1
// Ghost 1 animation
// Move in the current direction (unless he is stopped)
lda #RIGHT
cmp.z ghost1_direction
bne !__b124+
jmp __b124
!__b124:
// game_logic::@36
// if(ghost1_direction==DOWN)
// [419] if(ghost1_direction==DOWN) goto game_logic::@125 -- vbuz1_eq_vbuc1_then_la1
lda #DOWN
cmp.z ghost1_direction
bne !__b125+
jmp __b125
!__b125:
// game_logic::@37
// if(ghost1_direction==LEFT)
// [420] if(ghost1_direction==LEFT) goto game_logic::@126 -- vbuz1_eq_vbuc1_then_la1
lda #LEFT
cmp.z ghost1_direction
bne !__b126+
jmp __b126
!__b126:
// game_logic::@38
// if(ghost1_direction==UP)
// [421] if(ghost1_direction!=UP) goto game_logic::@127 -- vbuz1_neq_vbuc1_then_la1
lda #UP
cmp.z ghost1_direction
bne __b127
// game_logic::@39
// --ghost1_yfine;
// [422] ghost1_yfine = -- ghost1_yfine -- vbuz1=_dec_vbuz1
dec.z ghost1_yfine
// game_logic::@127
__b127:
// ghost1_direction!=STOP
// [423] game_logic::$229 = ghost1_direction -- vbuxx=vbuz1
ldx.z ghost1_direction
// if(ghost1_substep==0 && ghost1_direction!=STOP)
// [424] if(ghost1_substep!=0) goto game_logic::@133 -- vbuz1_neq_0_then_la1
lda.z ghost1_substep
bne __b133
// game_logic::@169
// [425] if(game_logic::$229!=STOP) goto game_logic::@128 -- vbuxx_neq_vbuc1_then_la1
cpx #STOP
bne __b128
// game_logic::@133
__b133:
// ghost1_substep = 0
// [426] ghost1_substep = 0 -- vbuz1=vbuc1
// Ghost is on a tile
lda #0
sta.z ghost1_substep
// if(ghost1_reverse)
// [427] if(0!=ghost1_reverse) goto game_logic::@129 -- 0_neq_vbuz1_then_la1
lda.z ghost1_reverse
bne __b129
// game_logic::@134
// char ghost1_xtile = ghost1_xfine/2
// [428] game_logic::ghost1_xtile#0 = ghost1_xfine >> 1 -- vbuz1=vbuz2_ror_1
// Examine open directions from the new tile to determine next action
lda.z ghost1_xfine
lsr
sta.z ghost1_xtile
// char ghost1_ytile = ghost1_yfine/2
// [429] game_logic::ghost1_ytile#0 = ghost1_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z ghost1_yfine
lsr
sta.z ghost1_ytile
// char open_directions = level_tile_directions(ghost1_xtile, ghost1_ytile)
// [430] level_tile_directions::xtile#3 = game_logic::ghost1_xtile#0 -- vbuxx=vbuz1
ldx.z ghost1_xtile
// [431] level_tile_directions::ytile#3 = game_logic::ghost1_ytile#0 -- vbuaa=vbuz1
// [432] call level_tile_directions
// [740] phi from game_logic::@134 to level_tile_directions [phi:game_logic::@134->level_tile_directions]
// [740] phi level_tile_directions::ytile#5 = level_tile_directions::ytile#3 [phi:game_logic::@134->level_tile_directions#0] -- register_copy
// [740] phi level_tile_directions::xtile#5 = level_tile_directions::xtile#3 [phi:game_logic::@134->level_tile_directions#1] -- register_copy
jsr level_tile_directions
// char open_directions = level_tile_directions(ghost1_xtile, ghost1_ytile)
// [433] level_tile_directions::return#12 = level_tile_directions::return#2
// game_logic::@158
// [434] game_logic::open_directions3#0 = level_tile_directions::return#12
// open_directions &= DIRECTION_ELIMINATE[ghost1_direction]
// [435] game_logic::open_directions3#1 = game_logic::open_directions3#0 & DIRECTION_ELIMINATE[ghost1_direction] -- vbuyy=vbuaa_band_pbuc1_derefidx_vbuz1
// Eliminate the direction ghost came from
ldy.z ghost1_direction
and DIRECTION_ELIMINATE,y
tay
// if(ghosts_mode==FRIGHTENED)
// [436] if(ghosts_mode==FRIGHTENED) goto game_logic::@130 -- vbuz1_eq_vbuc1_then_la1
lda #FRIGHTENED
cmp.z ghosts_mode
beq __b130
// game_logic::@135
// if(ghosts_mode==SCATTER)
// [437] if(ghosts_mode==SCATTER) goto game_logic::@131 -- vbuz1_eq_vbuc1_then_la1
lda #SCATTER
cmp.z ghosts_mode
beq __b13
// game_logic::@136
// target_xtile = pacman_xfine/2
// [438] game_logic::target_xtile3#2 = pacman_xfine >> 1 -- vbuxx=vbuz1_ror_1
lda.z pacman_xfine
lsr
tax
// target_ytile = pacman_yfine/2
// [439] game_logic::target_ytile3#2 = pacman_yfine >> 1 -- vbuz1=vbuz2_ror_1
lda.z pacman_yfine
lsr
sta.z target_ytile3
// [440] phi from game_logic::@136 to game_logic::@131 [phi:game_logic::@136->game_logic::@131]
// [440] phi game_logic::target_ytile3#3 = game_logic::target_ytile3#2 [phi:game_logic::@136->game_logic::@131#0] -- register_copy
// [440] phi game_logic::target_xtile3#3 = game_logic::target_xtile3#2 [phi:game_logic::@136->game_logic::@131#1] -- register_copy
jmp __b131
// [440] phi from game_logic::@135 to game_logic::@131 [phi:game_logic::@135->game_logic::@131]
__b13:
// [440] phi game_logic::target_ytile3#3 = 2 [phi:game_logic::@135->game_logic::@131#0] -- vbuz1=vbuc1
lda #2
sta.z target_ytile3
// [440] phi game_logic::target_xtile3#3 = 2 [phi:game_logic::@135->game_logic::@131#1] -- vbuxx=vbuc1
tax
// game_logic::@131
__b131:
// choose_direction( open_directions, ghost1_xtile, ghost1_ytile, target_xtile, target_ytile )
// [441] choose_direction::open_directions#3 = game_logic::open_directions3#1 -- vbuz1=vbuyy
sty.z choose_direction.open_directions
// [442] choose_direction::ghost_xtile#3 = game_logic::ghost1_xtile#0 -- vbuyy=vbuz1
ldy.z ghost1_xtile
// [443] choose_direction::ghost_ytile#3 = game_logic::ghost1_ytile#0
// [444] choose_direction::target_xtile#3 = game_logic::target_xtile3#3
// [445] choose_direction::target_ytile#3 = game_logic::target_ytile3#3
// [446] call choose_direction
// [748] phi from game_logic::@131 to choose_direction [phi:game_logic::@131->choose_direction]
// [748] phi choose_direction::open_directions#10 = choose_direction::open_directions#3 [phi:game_logic::@131->choose_direction#0] -- register_copy
// [748] phi choose_direction::target_ytile#4 = choose_direction::target_ytile#3 [phi:game_logic::@131->choose_direction#1] -- register_copy
// [748] phi choose_direction::ghost_ytile#4 = choose_direction::ghost_ytile#3 [phi:game_logic::@131->choose_direction#2] -- register_copy
// [748] phi choose_direction::target_xtile#4 = choose_direction::target_xtile#3 [phi:game_logic::@131->choose_direction#3] -- register_copy
// [748] phi choose_direction::ghost_xtile#4 = choose_direction::ghost_xtile#3 [phi:game_logic::@131->choose_direction#4] -- register_copy
jsr choose_direction
// choose_direction( open_directions, ghost1_xtile, ghost1_ytile, target_xtile, target_ytile )
// [447] choose_direction::return#3 = choose_direction::return#10 -- vbuaa=vbuz1
lda.z choose_direction.return
// game_logic::@159
// [448] game_logic::$182 = choose_direction::return#3
// ghost1_direction = choose_direction( open_directions, ghost1_xtile, ghost1_ytile, target_xtile, target_ytile )
// [449] ghost1_direction = game_logic::$182 -- vbuz1=vbuaa
sta.z ghost1_direction
rts
// game_logic::@130
__b130:
// ghost1_direction = DIRECTION_SINGLE[open_directions]
// [450] ghost1_direction = DIRECTION_SINGLE[game_logic::open_directions3#1] -- vbuz1=pbuc1_derefidx_vbuyy
// Choose a random direction between the open directions
lda DIRECTION_SINGLE,y
sta.z ghost1_direction
rts
// game_logic::@129
__b129:
// ghost1_direction = DIRECTION_REVERSE[ghost1_direction]
// [451] ghost1_direction = DIRECTION_REVERSE[ghost1_direction] -- vbuz1=pbuc1_derefidx_vbuz1
// If we are changing between scatter & chase then reverse the direction
ldy.z ghost1_direction
lda DIRECTION_REVERSE,y
sta.z ghost1_direction
// ghost1_reverse = 0
// [452] ghost1_reverse = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost1_reverse
rts
// game_logic::@128
__b128:
// ghost1_substep = 1
// [453] ghost1_substep = 1 -- vbuz1=vbuc1
// Ghost was on a tile and is moving, so he is now between tiles
lda #1
sta.z ghost1_substep
// if(ghost1_xfine==1)
// [454] if(ghost1_xfine==1) goto game_logic::@132 -- vbuz1_eq_vbuc1_then_la1
// Teleport if we are in the magic positions
cmp.z ghost1_xfine
beq __b132
// game_logic::@137
// if(ghost1_xfine==97)
// [455] if(ghost1_xfine!=$61) goto game_logic::@return -- vbuz1_neq_vbuc1_then_la1
lda #$61
cmp.z ghost1_xfine
beq !__breturn+
jmp __breturn
!__breturn:
// game_logic::@138
// ghost1_xfine = 1
// [456] ghost1_xfine = 1 -- vbuz1=vbuc1
lda #1
sta.z ghost1_xfine
rts
// game_logic::@132
__b132:
// ghost1_xfine = 97
// [457] ghost1_xfine = $61 -- vbuz1=vbuc1
lda #$61
sta.z ghost1_xfine
rts
// game_logic::@126
__b126:
// --ghost1_xfine;
// [458] ghost1_xfine = -- ghost1_xfine -- vbuz1=_dec_vbuz1
dec.z ghost1_xfine
jmp __b127
// game_logic::@125
__b125:
// ++ghost1_yfine;
// [459] ghost1_yfine = ++ ghost1_yfine -- vbuz1=_inc_vbuz1
inc.z ghost1_yfine
jmp __b127
// game_logic::@124
__b124:
// ++ghost1_xfine;
// [460] ghost1_xfine = ++ ghost1_xfine -- vbuz1=_inc_vbuz1
inc.z ghost1_xfine
jmp __b127
// game_logic::@123
__b123:
// if(--ghost1_respawn==0)
// [461] ghost1_respawn = -- ghost1_respawn -- vbuz1=_dec_vbuz1
dec.z ghost1_respawn
// [462] if(ghost1_respawn!=0) goto game_logic::@return -- vbuz1_neq_0_then_la1
lda.z ghost1_respawn
beq !__breturn+
jmp __breturn
!__breturn:
// game_logic::@139
// ghost1_direction = DOWN
// [463] ghost1_direction = DOWN -- vbuz1=vbuc1
// Spawn ghost 1
lda #DOWN
sta.z ghost1_direction
// ghost1_xfine = 96
// [464] ghost1_xfine = $60 -- vbuz1=vbuc1
lda #$60
sta.z ghost1_xfine
// ghost1_yfine = 2
// [465] ghost1_yfine = 2 -- vbuz1=vbuc1
lda #2
sta.z ghost1_yfine
// ghost1_substep = 0
// [466] ghost1_substep = 0 -- vbuz1=vbuc1
lda #0
sta.z ghost1_substep
rts
// game_logic::@2
__b2:
// if(pacman_direction==RIGHT)
// [467] if(pacman_direction==RIGHT) goto game_logic::@140 -- vbuz1_eq_vbuc1_then_la1
// Animate pacman
// Move pacman in the current direction (unless he is stopped)
lda #RIGHT
cmp.z pacman_direction
beq __b140
// game_logic::@40
// if(pacman_direction==DOWN)
// [468] if(pacman_direction==DOWN) goto game_logic::@141 -- vbuz1_eq_vbuc1_then_la1
lda #DOWN
cmp.z pacman_direction
beq __b141
// game_logic::@41
// if(pacman_direction==LEFT)
// [469] if(pacman_direction==LEFT) goto game_logic::@142 -- vbuz1_eq_vbuc1_then_la1
lda #LEFT
cmp.z pacman_direction
beq __b142
// game_logic::@42
// if(pacman_direction==UP)
// [470] if(pacman_direction!=UP) goto game_logic::@143 -- vbuz1_neq_vbuc1_then_la1
lda #UP
cmp.z pacman_direction
bne __b143
// game_logic::@43
// --pacman_yfine;
// [471] pacman_yfine = -- pacman_yfine -- vbuz1=_dec_vbuz1
dec.z pacman_yfine
// game_logic::@143
__b143:
// pacman_direction!=STOP
// [472] game_logic::$232 = pacman_direction -- vbuxx=vbuz1
ldx.z pacman_direction
// if(pacman_substep==0 && pacman_direction!=STOP)
// [473] if(pacman_substep!=0) goto game_logic::@147 -- vbuz1_neq_0_then_la1
lda.z pacman_substep
bne __b147
// game_logic::@170
// [474] if(game_logic::$232!=STOP) goto game_logic::@144 -- vbuxx_neq_vbuc1_then_la1
cpx #STOP
bne __b144
// game_logic::@147
__b147:
// pacman_substep = 0
// [475] pacman_substep = 0 -- vbuz1=vbuc1
// Pacman is on a (new) tile
lda #0
sta.z pacman_substep
// char pacman_xtile = pacman_xfine/2
// [476] game_logic::pacman_xtile1#0 = pacman_xfine >> 1 -- vbuxx=vbuz1_ror_1
// Examine open directions from the new tile to determine next action
lda.z pacman_xfine
lsr
tax
// char pacman_ytile = pacman_yfine/2
// [477] game_logic::pacman_ytile1#0 = pacman_yfine >> 1 -- vbuaa=vbuz1_ror_1
lda.z pacman_yfine
lsr
// char open_directions = level_tile_directions(pacman_xtile, pacman_ytile)
// [478] level_tile_directions::xtile#4 = game_logic::pacman_xtile1#0
// [479] level_tile_directions::ytile#4 = game_logic::pacman_ytile1#0
// [480] call level_tile_directions
// [740] phi from game_logic::@147 to level_tile_directions [phi:game_logic::@147->level_tile_directions]
// [740] phi level_tile_directions::ytile#5 = level_tile_directions::ytile#4 [phi:game_logic::@147->level_tile_directions#0] -- register_copy
// [740] phi level_tile_directions::xtile#5 = level_tile_directions::xtile#4 [phi:game_logic::@147->level_tile_directions#1] -- register_copy
jsr level_tile_directions
// char open_directions = level_tile_directions(pacman_xtile, pacman_ytile)
// [481] level_tile_directions::return#13 = level_tile_directions::return#2
// game_logic::@160
// [482] game_logic::open_directions4#0 = level_tile_directions::return#13 -- vbuxx=vbuaa
tax
// CIA1->PORT_A & 0x0f
// [483] game_logic::$199 = *((char *)CIA1) & $f -- vbuaa=_deref_pbuc1_band_vbuc2
lda #$f
and CIA1
// (CIA1->PORT_A & 0x0f)^0x0f
// [484] game_logic::$200 = game_logic::$199 ^ $f -- vbuaa=vbuaa_bxor_vbuc1
eor #$f
// char joy_directions = ((CIA1->PORT_A & 0x0f)^0x0f)*4
// [485] game_logic::joy_directions#0 = game_logic::$200 << 2 -- vbuaa=vbuaa_rol_2
// Read joystick#2 - arrange bits to match DIRECTION
asl
asl
// if(joy_directions!=0)
// [486] if(game_logic::joy_directions#0==0) goto game_logic::@145 -- vbuaa_eq_0_then_la1
cmp #0
beq __b145
// game_logic::@148
// joy_directions&open_directions
// [487] game_logic::$204 = game_logic::joy_directions#0 & game_logic::open_directions4#0 -- vbuaa=vbuaa_band_vbuxx
stx.z $ff
and.z $ff
// char new_direction = DIRECTION_SINGLE[joy_directions&open_directions]
// [488] game_logic::new_direction#0 = DIRECTION_SINGLE[game_logic::$204] -- vbuaa=pbuc1_derefidx_vbuaa
tay
lda DIRECTION_SINGLE,y
// if(new_direction!=0)
// [489] if(game_logic::new_direction#0==0) goto game_logic::@145 -- vbuaa_eq_0_then_la1
cmp #0
beq __b145
// game_logic::@149
// pacman_direction = new_direction
// [490] pacman_direction = game_logic::new_direction#0 -- vbuz1=vbuaa
sta.z pacman_direction
// game_logic::@145
__b145:
// pacman_direction &= open_directions
// [491] pacman_direction = pacman_direction & game_logic::open_directions4#0 -- vbuz1=vbuz1_band_vbuxx
// Stop pacman if the current direction is no longer open
lda.z pacman_direction
sax.z pacman_direction
rts
// game_logic::@144
__b144:
// pacman_substep = 1
// [492] pacman_substep = 1 -- vbuz1=vbuc1
// Pacman was on a tile and is moving, so he is now between tiles
lda #1
sta.z pacman_substep
// pacman_ch1_enabled = 1
// [493] pacman_ch1_enabled = 1 -- vbuz1=vbuc1
// Enable the eating sound whenever pacman is moving
sta.z pacman_ch1_enabled
// if(pacman_xfine==1)
// [494] if(pacman_xfine==1) goto game_logic::@146 -- vbuz1_eq_vbuc1_then_la1
// Teleport if we are in the magic positions
cmp.z pacman_xfine
beq __b146
// game_logic::@150
// if(pacman_xfine==97)
// [495] if(pacman_xfine!=$61) goto game_logic::@return -- vbuz1_neq_vbuc1_then_la1
lda #$61
cmp.z pacman_xfine
beq !__breturn+
jmp __breturn
!__breturn:
// game_logic::@151
// pacman_xfine = 1
// [496] pacman_xfine = 1 -- vbuz1=vbuc1
lda #1
sta.z pacman_xfine
rts
// game_logic::@146
__b146:
// pacman_xfine = 97
// [497] pacman_xfine = $61 -- vbuz1=vbuc1
lda #$61
sta.z pacman_xfine
rts
// game_logic::@142
__b142:
// --pacman_xfine;
// [498] pacman_xfine = -- pacman_xfine -- vbuz1=_dec_vbuz1
dec.z pacman_xfine
jmp __b143
// game_logic::@141
__b141:
// ++pacman_yfine;
// [499] pacman_yfine = ++ pacman_yfine -- vbuz1=_inc_vbuz1
inc.z pacman_yfine
jmp __b143
// game_logic::@140
__b140:
// ++pacman_xfine;
// [500] pacman_xfine = ++ pacman_xfine -- vbuz1=_inc_vbuz1
inc.z pacman_xfine
jmp __b143
}
// pacman_sound_play
pacman_sound_play: {
// if(pacman_ch1_enabled)
// [501] if(0==pacman_ch1_enabled) goto pacman_sound_play::@return -- 0_eq_vbuz1_then_la1
lda.z pacman_ch1_enabled
beq __breturn
// pacman_sound_play::@1
// *SID_CH1_FREQ_HI = PACMAN_CH1_FREQ_HI[pacman_ch1_idx]
// [502] *SID_CH1_FREQ_HI = PACMAN_CH1_FREQ_HI[pacman_ch1_idx] -- _deref_pbuc1=pbuc2_derefidx_vbuz1
// Play the entire sound - and then reset and disable it
ldy.z pacman_ch1_idx
lda PACMAN_CH1_FREQ_HI,y
sta SID_CH1_FREQ_HI
// SID->CH1_CONTROL = PACMAN_CH1_CONTROL[pacman_ch1_idx]
// [503] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = PACMAN_CH1_CONTROL[pacman_ch1_idx] -- _deref_pbuc1=pbuc2_derefidx_vbuz1
lda PACMAN_CH1_CONTROL,y
sta SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL
// if(++pacman_ch1_idx==sizeof(PACMAN_CH1_FREQ_HI))
// [504] pacman_ch1_idx = ++ pacman_ch1_idx -- vbuz1=_inc_vbuz1
inc.z pacman_ch1_idx
// [505] if(pacman_ch1_idx!=$16*SIZEOF_CHAR) goto pacman_sound_play::@return -- vbuz1_neq_vbuc1_then_la1
lda #$16*SIZEOF_CHAR
cmp.z pacman_ch1_idx
bne __breturn
// pacman_sound_play::@2
// pacman_ch1_idx = 0
// [506] pacman_ch1_idx = 0 -- vbuz1=vbuc1
lda #0
sta.z pacman_ch1_idx
// pacman_ch1_enabled = 0
// [507] pacman_ch1_enabled = 0 -- vbuz1=vbuc1
sta.z pacman_ch1_enabled
// pacman_sound_play::@return
__breturn:
// }
// [508] return
rts
}
// splash_run
// Initializes all data for the splash and shows the splash.
// Returns when the splash is complete and the user clicks the joystidk #2 button
splash_run: {
.const toDd001_return = 3^(>SCREENS_1)/$40
.const toD0181_return = 0
.label xpos = 5
.label i = $14
// splash_run::SEI1
// asm
// asm { sei }
sei
// splash_run::@18
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// [511] *((char *)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
// *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
// [512] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2
// Disable kernal & basic & IO
lda #PROCPORT_DDR_MEMORY_MASK
sta.z PROCPORT_DDR
// *PROCPORT = PROCPORT_RAM_ALL
// [513] *PROCPORT = PROCPORT_RAM_ALL -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_ALL
sta.z PROCPORT
// memset((char*)0x4000, 0, 0xc00)
// [514] call memset
// Reset memory to avoid crashes
// [778] phi from splash_run::@18 to memset [phi:splash_run::@18->memset]
// [778] phi memset::str#6 = (void *)(char *) 16384 [phi:splash_run::@18->memset#0] -- pvoz1=pvoc1
lda #<$4000
sta.z memset.str
lda #>$4000
sta.z memset.str+1
// [778] phi memset::num#5 = $c00 [phi:splash_run::@18->memset#1] -- vwuz1=vwuc1
lda #<$c00
sta.z memset.num
lda #>$c00
sta.z memset.num+1
jsr memset
// splash_run::@22
// byteboozer_decrunch(RASTER_CODE_CRUNCHED)
// [515] byteboozer_decrunch::crunched = RASTER_CODE_CRUNCHED -- pbuz1=pbuc1
lda #<RASTER_CODE_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>RASTER_CODE_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [516] call byteboozer_decrunch
// Decrunch raster code
jsr byteboozer_decrunch
// splash_run::@23
// byteboozer_decrunch(LOGIC_CODE_CRUNCHED)
// [517] byteboozer_decrunch::crunched = LOGIC_CODE_CRUNCHED -- pbuz1=pbuc1
lda #<LOGIC_CODE_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>LOGIC_CODE_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [518] call byteboozer_decrunch
// Decrunch logic code
jsr byteboozer_decrunch
// [519] phi from splash_run::@23 to splash_run::@24 [phi:splash_run::@23->splash_run::@24]
// splash_run::@24
// merge_code(RASTER_CODE, RASTER_CODE_UNMERGED, LOGIC_CODE_UNMERGED)
// [520] call merge_code
// Merge the raster with the logic-code
// [789] phi from splash_run::@24 to merge_code [phi:splash_run::@24->merge_code]
jsr merge_code
// [521] phi from splash_run::@24 to splash_run::@25 [phi:splash_run::@24->splash_run::@25]
// splash_run::@25
// memset(BANK_1+0x2000, 0x00, 0x1fff)
// [522] call memset
// Clear the graphics banks
// [778] phi from splash_run::@25 to memset [phi:splash_run::@25->memset]
// [778] phi memset::str#6 = (void *)BANK_1+$2000 [phi:splash_run::@25->memset#0] -- pvoz1=pvoc1
lda #<BANK_1+$2000
sta.z memset.str
lda #>BANK_1+$2000
sta.z memset.str+1
// [778] phi memset::num#5 = $1fff [phi:splash_run::@25->memset#1] -- vwuz1=vwuc1
lda #<$1fff
sta.z memset.num
lda #>$1fff
sta.z memset.num+1
jsr memset
// [523] phi from splash_run::@25 to splash_run::@26 [phi:splash_run::@25->splash_run::@26]
// splash_run::@26
// memset(BANK_2, 0x00, 0x3fff)
// [524] call memset
// [778] phi from splash_run::@26 to memset [phi:splash_run::@26->memset]
// [778] phi memset::str#6 = (void *)BANK_2 [phi:splash_run::@26->memset#0] -- pvoz1=pvoc1
lda #<BANK_2
sta.z memset.str
lda #>BANK_2
sta.z memset.str+1
// [778] phi memset::num#5 = $3fff [phi:splash_run::@26->memset#1] -- vwuz1=vwuc1
lda #<$3fff
sta.z memset.num
lda #>$3fff
sta.z memset.num+1
jsr memset
// [525] phi from splash_run::@26 to splash_run::@27 [phi:splash_run::@26->splash_run::@27]
// splash_run::@27
// init_render_index()
// [526] call init_render_index
// Initialize the renderer tables
// [836] phi from splash_run::@27 to init_render_index [phi:splash_run::@27->init_render_index]
jsr init_render_index
// splash_run::@28
// byteboozer_decrunch(SPLASH_CRUNCHED)
// [527] byteboozer_decrunch::crunched = SPLASH_CRUNCHED -- pbuz1=pbuc1
lda #<SPLASH_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>SPLASH_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [528] call byteboozer_decrunch
// decrunch splash screen
jsr byteboozer_decrunch
// [529] phi from splash_run::@28 to splash_run::@29 [phi:splash_run::@28->splash_run::@29]
// splash_run::@29
// splash_show()
// [530] call splash_show
// Show the splash screen
// [867] phi from splash_run::@29 to splash_show [phi:splash_run::@29->splash_show]
jsr splash_show
// [531] phi from splash_run::@29 to splash_run::@30 [phi:splash_run::@29->splash_run::@30]
// splash_run::@30
// memset(BANK_1, 0x00, 0x1fff)
// [532] call memset
// Clear the graphics bank
// [778] phi from splash_run::@30 to memset [phi:splash_run::@30->memset]
// [778] phi memset::str#6 = (void *)BANK_1 [phi:splash_run::@30->memset#0] -- pvoz1=pvoc1
lda #<BANK_1
sta.z memset.str
lda #>BANK_1
sta.z memset.str+1
// [778] phi memset::num#5 = $1fff [phi:splash_run::@30->memset#1] -- vwuz1=vwuc1
lda #<$1fff
sta.z memset.num
lda #>$1fff
sta.z memset.num+1
jsr memset
// [533] phi from splash_run::@30 to splash_run::@31 [phi:splash_run::@30->splash_run::@31]
// splash_run::@31
// init_bobs_restore()
// [534] call init_bobs_restore
// Initialize bobs_restore to "safe" values
// [881] phi from splash_run::@31 to init_bobs_restore [phi:splash_run::@31->init_bobs_restore]
jsr init_bobs_restore
// splash_run::@32
// byteboozer_decrunch(BOB_GRAPHICS_CRUNCHED)
// [535] byteboozer_decrunch::crunched = BOB_GRAPHICS_CRUNCHED -- pbuz1=pbuc1
lda #<BOB_GRAPHICS_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>BOB_GRAPHICS_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [536] call byteboozer_decrunch
// decrunch bobs graphics tables
jsr byteboozer_decrunch
// [537] phi from splash_run::@32 to splash_run::@33 [phi:splash_run::@32->splash_run::@33]
// splash_run::@33
// init_sprite_pointers()
// [538] call init_sprite_pointers
// Set sprite pointers on all screens (in both graphics banks)
// [898] phi from splash_run::@33 to init_sprite_pointers [phi:splash_run::@33->init_sprite_pointers]
jsr init_sprite_pointers
// [539] phi from splash_run::@33 to splash_run::@34 [phi:splash_run::@33->splash_run::@34]
// splash_run::@34
// memcpy(INTRO_MUSIC_CRUNCHED_UPPER, INTRO_MUSIC_CRUNCHED, INTRO_MUSIC_CRUNCHED_SIZE)
// [540] call memcpy
// Move the crunched music to upper memory before decrunching it
// [912] phi from splash_run::@34 to memcpy [phi:splash_run::@34->memcpy]
jsr memcpy
// splash_run::@35
// byteboozer_decrunch(INTRO_MUSIC_CRUNCHED_UPPER)
// [541] byteboozer_decrunch::crunched = INTRO_MUSIC_CRUNCHED_UPPER -- pbuz1=pbuc1
lda #<INTRO_MUSIC_CRUNCHED_UPPER
sta.z byteboozer_decrunch.crunched
lda #>INTRO_MUSIC_CRUNCHED_UPPER
sta.z byteboozer_decrunch.crunched+1
// [542] call byteboozer_decrunch
// zero-fill the entire Init segment
//memset(LEVEL_TILES_CRUNCHED, 0, INTRO_MUSIC_CRUNCHED+INTRO_MUSIC_CRUNCHED_SIZE-LEVEL_TILES_CRUNCHED);
// decrunch intro music
jsr byteboozer_decrunch
// [543] phi from splash_run::@35 to splash_run::@36 [phi:splash_run::@35->splash_run::@36]
// splash_run::@36
// memset(INTRO_MUSIC_CRUNCHED_UPPER, 0, INTRO_MUSIC_CRUNCHED_SIZE)
// [544] call memset
// Zero-fill the upper memory
// [778] phi from splash_run::@36 to memset [phi:splash_run::@36->memset]
// [778] phi memset::str#6 = (void *)INTRO_MUSIC_CRUNCHED_UPPER [phi:splash_run::@36->memset#0] -- pvoz1=pvoc1
lda #<INTRO_MUSIC_CRUNCHED_UPPER
sta.z memset.str
lda #>INTRO_MUSIC_CRUNCHED_UPPER
sta.z memset.str+1
// [778] phi memset::num#5 = INTRO_MUSIC_CRUNCHED_SIZE [phi:splash_run::@36->memset#1] -- vwuz1=vwuc1
lda #<INTRO_MUSIC_CRUNCHED_SIZE
sta.z memset.num
lda #>INTRO_MUSIC_CRUNCHED_SIZE
sta.z memset.num+1
jsr memset
// splash_run::@37
// *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
// [545] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2
// Disable kernal & basic - enable IO
lda #PROCPORT_DDR_MEMORY_MASK
sta.z PROCPORT_DDR
// *PROCPORT = PROCPORT_RAM_IO
// [546] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// [547] phi from splash_run::@37 to splash_run::@2 [phi:splash_run::@37->splash_run::@2]
// [547] phi splash_run::msb#10 = 0 [phi:splash_run::@37->splash_run::@2#0] -- vbuxx=vbuc1
ldx #0
// [547] phi splash_run::i#2 = 0 [phi:splash_run::@37->splash_run::@2#1] -- vbuz1=vbuc1
txa
sta.z i
// splash_run::@2
__b2:
// for(char i=0;i<8;i++)
// [548] if(splash_run::i#2<8) goto splash_run::@3 -- vbuz1_lt_vbuc1_then_la1
lda.z i
cmp #8
bcs !__b3+
jmp __b3
!__b3:
// [549] phi from splash_run::@2 to splash_run::toDd001 [phi:splash_run::@2->splash_run::toDd001]
// splash_run::toDd001
// splash_run::@19
// CIA2->PORT_A = toDd00(SCREENS_1)
// [550] *((char *)CIA2) = splash_run::toDd001_return#0 -- _deref_pbuc1=vbuc2
// Set initial graphics bank
lda #toDd001_return
sta CIA2
// canvas_base_hi = BYTE1(SPRITES_2)
// [551] canvas_base_hi = byte1 SPRITES_2 -- vbuz1=vbuc1
// Set initial render/restore buffer
lda #>SPRITES_2
sta.z canvas_base_hi
// bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE
// [552] bobs_restore_base = NUM_BOBS*SIZE_BOB_RESTORE -- vbuz1=vbuc1
lda #NUM_BOBS*SIZE_BOB_RESTORE
sta.z bobs_restore_base
// [553] phi from splash_run::@19 to splash_run::toD0181 [phi:splash_run::@19->splash_run::toD0181]
// splash_run::toD0181
// splash_run::@20
// VICII->MEMORY = toD018(SCREENS_1, SCREENS_1)
// [554] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = splash_run::toD0181_return#0 -- _deref_pbuc1=vbuc2
// Select first screen
lda #toD0181_return
sta VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY
// VICII->SPRITES_XMSB = msb
// [555] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB) = splash_run::msb#10 -- _deref_pbuc1=vbuxx
stx VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB
// VICII->SPRITES_ENABLE = 0xff
// [556] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $ff -- _deref_pbuc1=vbuc2
lda #$ff
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE
// VICII->SPRITES_EXPAND_X = 0xff
// [557] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $ff -- _deref_pbuc1=vbuc2
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X
// VICII->BORDER_COLOR = BLACK
// [558] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = BLACK -- _deref_pbuc1=vbuc2
lda #BLACK
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR
// VICII->BG_COLOR = BLACK
// [559] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = BLACK -- _deref_pbuc1=vbuc2
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR
// VICII->SPRITES_MCOLOR1 = BLUE
// [560] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLUE -- _deref_pbuc1=vbuc2
lda #BLUE
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1
// VICII->SPRITES_MCOLOR2 = RED
// [561] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = RED -- _deref_pbuc1=vbuc2
lda #RED
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2
// top_sprites_mc = 0x03
// [562] top_sprites_mc = 3 -- vbuz1=vbuc1
// On the splash screen sprites all sprites are SC - except sprite #0,1 on the top/bottom of the screen
lda #3
sta.z top_sprites_mc
// side_sprites_mc = 0x00
// [563] side_sprites_mc = 0 -- vbuz1=vbuc1
lda #0
sta.z side_sprites_mc
// bottom_sprites_mc = 0x03
// [564] bottom_sprites_mc = 3 -- vbuz1=vbuc1
lda #3
sta.z bottom_sprites_mc
// top_sprites_color = YELLOW
// [565] top_sprites_color = YELLOW -- vbuz1=vbuc1
// On the splash top/bottom sc-sprites are yellow and side-sprites are blue
lda #YELLOW
sta.z top_sprites_color
// side_sprites_color = BLUE
// [566] side_sprites_color = BLUE -- vbuz1=vbuc1
lda #BLUE
sta.z side_sprites_color
// bottom_sprites_color = YELLOW
// [567] bottom_sprites_color = YELLOW -- vbuz1=vbuc1
lda #YELLOW
sta.z bottom_sprites_color
// VICII->SPRITES_MC = top_sprites_mc
// [568] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc -- _deref_pbuc1=vbuz1
// Set the initial top colors/MC
lda.z top_sprites_mc
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC
// [569] phi from splash_run::@20 to splash_run::@6 [phi:splash_run::@20->splash_run::@6]
// [569] phi splash_run::i1#2 = 0 [phi:splash_run::@20->splash_run::@6#0] -- vbuxx=vbuc1
ldx #0
// Set initial Sprite Color
// splash_run::@6
__b6:
// for(char i=0;i<8;i++)
// [570] if(splash_run::i1#2<8) goto splash_run::@7 -- vbuxx_lt_vbuc1_then_la1
cpx #8
bcc __b7
// splash_run::@8
// VICII->CONTROL2 = 0x08
// [571] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = 8 -- _deref_pbuc1=vbuc2
// Set VICII CONTROL2 ($d016) to 8 to allow ASL, LSR to be used for opening the border
lda #8
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2
// [572] phi from splash_run::@8 to splash_run::@9 [phi:splash_run::@8->splash_run::@9]
// [572] phi splash_run::i2#2 = 0 [phi:splash_run::@8->splash_run::@9#0] -- vbuxx=vbuc1
ldx #0
// Move the bobs to the center to avoid interference while rendering the level
// splash_run::@9
__b9:
// for(char i=0;i<4;i++)
// [573] if(splash_run::i2#2<4) goto splash_run::@10 -- vbuxx_lt_vbuc1_then_la1
cpx #4
bcc __b10
// splash_run::@11
// asm
// asm { lda#1 staINTRO_MUSIC+$69 }
// Disable SID CH#3
lda #1
sta INTRO_MUSIC+$69
// asm { lda#0 }
// Init music
lda #0
// (*musicInit)()
// [576] callexecute *musicInit -- call__deref_pprc1
jsr musicInit
// splash_run::@1
// phase = 0
// [577] phase = 0 -- vbuz1=vbuc1
// Set phase to intro
lda #0
sta.z phase
// VICII->CONTROL1 = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM
// [578] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM -- _deref_pbuc1=vbuc2
// Start a hyperscreen with no badlines and open borders
// Set screen height to 25 lines (preparing for the hyperscreen), enable display
// Set an illegal mode to prevent any character graphics
lda #VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
// Wait for line 0xfa (lower border)
// splash_run::@12
__b12:
// while(VICII->RASTER!=0xfa)
// [579] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fa) goto splash_run::@12 -- _deref_pbuc1_neq_vbuc2_then_la1
lda #$fa
cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
bne __b12
// splash_run::@13
// VICII->CONTROL1 &= ~(VICII_RST8|VICII_RSEL|VICII_DEN)
// [580] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & ~VICII_RST8|VICII_RSEL|VICII_DEN -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// Open lower/upper border using RSEL - and disable all graphics (except sprites)
// Set up RASTER IRQ to start at irq_screen_top() (RST8=0)
lda #(VICII_RST8|VICII_RSEL|VICII_DEN)^$ff
and VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
// VICII->RASTER = IRQ_SCREEN_TOP_LINE
// [581] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE -- _deref_pbuc1=vbuc2
lda #IRQ_SCREEN_TOP_LINE
sta VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
// *HARDWARE_IRQ = &irq_screen_top
// [582] *HARDWARE_IRQ = &irq_screen_top -- _deref_qprc1=pprc2
lda #<irq_screen_top
sta HARDWARE_IRQ
lda #>irq_screen_top
sta HARDWARE_IRQ+1
// VICII->IRQ_ENABLE = IRQ_RASTER
// [583] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER -- _deref_pbuc1=vbuc2
// Enable Raster Interrupt
lda #IRQ_RASTER
sta VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE
// asm
// asm { ldaCIA1_INTERRUPT }
// Acknowledge any timer IRQ
lda CIA1_INTERRUPT
// *IRQ_STATUS = 0x0f
// [585] *IRQ_STATUS = $f -- _deref_pbuc1=vbuc2
// Acknowledge any VIC IRQ
lda #$f
sta IRQ_STATUS
// splash_run::CLI1
// asm
// asm { cli }
cli
// [587] phi from splash_run::CLI1 to splash_run::@21 [phi:splash_run::CLI1->splash_run::@21]
// splash_run::@21
// joyinit()
// [588] call joyinit
// Prepare for joystick control
jsr joyinit
// splash_run::@38
// music_play_next = 0
// [589] music_play_next = 0 -- vbuz1=vbuc1
// Wait for fire
lda #0
sta.z music_play_next
// [590] phi from splash_run::@15 splash_run::@16 splash_run::@38 to splash_run::@14 [phi:splash_run::@15/splash_run::@16/splash_run::@38->splash_run::@14]
// splash_run::@14
__b14:
// joyfire()
// [591] call joyfire
jsr joyfire
// [592] joyfire::return#1 = joyfire::return#4
// splash_run::@39
// [593] splash_run::$30 = joyfire::return#1
// while(!joyfire())
// [594] if(0==splash_run::$30) goto splash_run::@15 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b15
// splash_run::@return
// }
// [595] return
rts
// splash_run::@15
__b15:
// if(music_play_next)
// [596] if(0==music_play_next) goto splash_run::@14 -- 0_eq_vbuz1_then_la1
lda.z music_play_next
beq __b14
// [597] phi from splash_run::@15 to splash_run::@17 [phi:splash_run::@15->splash_run::@17]
// splash_run::@17
// (*musicPlay)()
// [598] callexecute *musicPlay -- call__deref_pprc1
//VICII->BG_COLOR=1;
jsr musicPlay
// splash_run::@16
// music_play_next = 0
// [599] music_play_next = 0 -- vbuz1=vbuc1
//VICII->BG_COLOR=0;
lda #0
sta.z music_play_next
jmp __b14
// splash_run::@10
__b10:
// bobs_xcol[i] = 10
// [600] bobs_xcol[splash_run::i2#2] = $a -- pbuc1_derefidx_vbuxx=vbuc2
lda #$a
sta bobs_xcol,x
// bobs_yfine[i] = 45
// [601] bobs_yfine[splash_run::i2#2] = $2d -- pbuc1_derefidx_vbuxx=vbuc2
lda #$2d
sta bobs_yfine,x
// bobs_bob_id[i] = 0
// [602] bobs_bob_id[splash_run::i2#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #0
sta bobs_bob_id,x
// for(char i=0;i<4;i++)
// [603] splash_run::i2#1 = ++ splash_run::i2#2 -- vbuxx=_inc_vbuxx
inx
// [572] phi from splash_run::@10 to splash_run::@9 [phi:splash_run::@10->splash_run::@9]
// [572] phi splash_run::i2#2 = splash_run::i2#1 [phi:splash_run::@10->splash_run::@9#0] -- register_copy
jmp __b9
// splash_run::@7
__b7:
// SPRITES_COLOR[i] = top_sprites_color
// [604] SPRITES_COLOR[splash_run::i1#2] = top_sprites_color -- pbuc1_derefidx_vbuxx=vbuz1
lda.z top_sprites_color
sta SPRITES_COLOR,x
// for(char i=0;i<8;i++)
// [605] splash_run::i1#1 = ++ splash_run::i1#2 -- vbuxx=_inc_vbuxx
inx
// [569] phi from splash_run::@7 to splash_run::@6 [phi:splash_run::@7->splash_run::@6]
// [569] phi splash_run::i1#2 = splash_run::i1#1 [phi:splash_run::@7->splash_run::@6#0] -- register_copy
jmp __b6
// splash_run::@3
__b3:
// i*2
// [606] splash_run::$34 = splash_run::i#2 << 1 -- vbuyy=vbuz1_rol_1
lda.z i
asl
tay
// SPRITES_YPOS[i*2] = 7
// [607] SPRITES_YPOS[splash_run::$34] = 7 -- pbuc1_derefidx_vbuyy=vbuc2
lda #7
sta SPRITES_YPOS,y
// unsigned int xpos = sprites_xpos[i]
// [608] splash_run::xpos#0 = splash_run::sprites_xpos[splash_run::$34] -- vwuz1=pwuc1_derefidx_vbuyy
lda sprites_xpos,y
sta.z xpos
lda sprites_xpos+1,y
sta.z xpos+1
// SPRITES_XPOS[i*2] = (char)xpos
// [609] SPRITES_XPOS[splash_run::$34] = (char)splash_run::xpos#0 -- pbuc1_derefidx_vbuyy=_byte_vwuz1
lda.z xpos
sta SPRITES_XPOS,y
// msb /= 2
// [610] splash_run::msb#1 = splash_run::msb#10 >> 1 -- vbuxx=vbuxx_ror_1
txa
lsr
tax
// BYTE1(xpos)
// [611] splash_run::$25 = byte1 splash_run::xpos#0 -- vbuaa=_byte1_vwuz1
lda.z xpos+1
// if(BYTE1(xpos))
// [612] if(0==splash_run::$25) goto splash_run::@4 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b4
// splash_run::@5
// msb |=0x80
// [613] splash_run::msb#2 = splash_run::msb#1 | $80 -- vbuxx=vbuxx_bor_vbuc1
txa
ora #$80
tax
// [614] phi from splash_run::@3 splash_run::@5 to splash_run::@4 [phi:splash_run::@3/splash_run::@5->splash_run::@4]
// [614] phi splash_run::msb#8 = splash_run::msb#1 [phi:splash_run::@3/splash_run::@5->splash_run::@4#0] -- register_copy
// splash_run::@4
__b4:
// for(char i=0;i<8;i++)
// [615] splash_run::i#1 = ++ splash_run::i#2 -- vbuz1=_inc_vbuz1
inc.z i
// [547] phi from splash_run::@4 to splash_run::@2 [phi:splash_run::@4->splash_run::@2]
// [547] phi splash_run::msb#10 = splash_run::msb#8 [phi:splash_run::@4->splash_run::@2#0] -- register_copy
// [547] phi splash_run::i#2 = splash_run::i#1 [phi:splash_run::@4->splash_run::@2#1] -- register_copy
jmp __b2
.segment Data
// Sprite positions
sprites_xpos: .word $1e7, $13f, $10f, $df, $af, $7f, $4f, $1f
}
.segment Code
// gameplay_run
// Initialize all data for gameplay and runs the game.
// Exits when the user has won or lost
gameplay_run: {
.label __4 = 9
// gameplay_run::SEI1
// asm
// asm { sei }
sei
// [618] phi from gameplay_run::SEI1 to gameplay_run::@1 [phi:gameplay_run::SEI1->gameplay_run::@1]
// [618] phi gameplay_run::i#2 = 0 [phi:gameplay_run::SEI1->gameplay_run::@1#0] -- vbuxx=vbuc1
ldx #0
// Stop any sound
// gameplay_run::@1
__b1:
// for(char i=0;i<0x2f;i++)
// [619] if(gameplay_run::i#2<$2f) goto gameplay_run::@2 -- vbuxx_lt_vbuc1_then_la1
cpx #$2f
bcs !__b2+
jmp __b2
!__b2:
// gameplay_run::@3
// pacman_wins = 0
// [620] pacman_wins = 0 -- vbuz1=vbuc1
// Pacman has not won yet
lda #0
sta.z pacman_wins
// pacman_lives = 3
// [621] pacman_lives = 3 -- vbuz1=vbuc1
// Pacman has 3 lives
lda #3
sta.z pacman_lives
// VICII->SPRITES_MCOLOR1 = BLACK
// [622] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLACK -- _deref_pbuc1=vbuc2
// During transition all sprites are black
lda #BLACK
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1
// VICII->SPRITES_MCOLOR2 = BLACK
// [623] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = BLACK -- _deref_pbuc1=vbuc2
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2
// [624] phi from gameplay_run::@3 to gameplay_run::@4 [phi:gameplay_run::@3->gameplay_run::@4]
// [624] phi gameplay_run::i1#2 = 0 [phi:gameplay_run::@3->gameplay_run::@4#0] -- vbuxx=vbuc1
ldx #0
// gameplay_run::@4
__b4:
// for(char i=0;i<8;i++)
// [625] if(gameplay_run::i1#2<8) goto gameplay_run::@5 -- vbuxx_lt_vbuc1_then_la1
cpx #8
bcs !__b5+
jmp __b5
!__b5:
// gameplay_run::@6
// byteboozer_decrunch(LEVEL_TILES_CRUNCHED)
// [626] byteboozer_decrunch::crunched = LEVEL_TILES_CRUNCHED -- pbuz1=pbuc1
lda #<LEVEL_TILES_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>LEVEL_TILES_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [627] call byteboozer_decrunch
// decrunch level tiles
jsr byteboozer_decrunch
// [628] phi from gameplay_run::@6 to gameplay_run::@14 [phi:gameplay_run::@6->gameplay_run::@14]
// gameplay_run::@14
// init_level_tile_directions()
// [629] call init_level_tile_directions
// Initialize tile directions
// [926] phi from gameplay_run::@14 to init_level_tile_directions [phi:gameplay_run::@14->init_level_tile_directions]
jsr init_level_tile_directions
// [630] phi from gameplay_run::@14 to gameplay_run::@15 [phi:gameplay_run::@14->gameplay_run::@15]
// gameplay_run::@15
// init_sprite_pointers()
// [631] call init_sprite_pointers
// Set sprite pointers on all screens (in both graphics banks)
// [898] phi from gameplay_run::@15 to init_sprite_pointers [phi:gameplay_run::@15->init_sprite_pointers]
jsr init_sprite_pointers
// [632] phi from gameplay_run::@15 to gameplay_run::@16 [phi:gameplay_run::@15->gameplay_run::@16]
// gameplay_run::@16
// level_show()
// [633] call level_show
// [968] phi from gameplay_run::@16 to level_show [phi:gameplay_run::@16->level_show]
jsr level_show
// level_show()
// [634] level_show::return#0 = level_show::count#12
// gameplay_run::@17
// [635] gameplay_run::$4 = level_show::return#0
// pill_count = level_show()
// [636] pill_count = gameplay_run::$4 -- vwuz1=vwuz2
// Show the level
lda.z __4
sta.z pill_count
lda.z __4+1
sta.z pill_count+1
// top_sprites_mc = 0xff
// [637] top_sprites_mc = $ff -- vbuz1=vbuc1
// During gameplay all sprites are MC.
lda #$ff
sta.z top_sprites_mc
// side_sprites_mc = 0xff
// [638] side_sprites_mc = $ff -- vbuz1=vbuc1
sta.z side_sprites_mc
// bottom_sprites_mc = 0xff
// [639] bottom_sprites_mc = $ff -- vbuz1=vbuc1
sta.z bottom_sprites_mc
// top_sprites_color = YELLOW
// [640] top_sprites_color = YELLOW -- vbuz1=vbuc1
// During gameplay all sprites are yellow
lda #YELLOW
sta.z top_sprites_color
// side_sprites_color = YELLOW
// [641] side_sprites_color = YELLOW -- vbuz1=vbuc1
sta.z side_sprites_color
// bottom_sprites_color = YELLOW
// [642] bottom_sprites_color = YELLOW -- vbuz1=vbuc1
sta.z bottom_sprites_color
// VICII->SPRITES_MC = top_sprites_mc
// [643] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC) = top_sprites_mc -- _deref_pbuc1=vbuz1
// Set the initial top colors/MC
lda.z top_sprites_mc
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC
// [644] phi from gameplay_run::@17 to gameplay_run::@7 [phi:gameplay_run::@17->gameplay_run::@7]
// [644] phi gameplay_run::i2#2 = 0 [phi:gameplay_run::@17->gameplay_run::@7#0] -- vbuxx=vbuc1
ldx #0
// Set initial Sprite Color
// gameplay_run::@7
__b7:
// for(char i=0;i<8;i++)
// [645] if(gameplay_run::i2#2<8) goto gameplay_run::@8 -- vbuxx_lt_vbuc1_then_la1
cpx #8
bcc __b8
// gameplay_run::@9
// VICII->SPRITES_MCOLOR1 = BLUE
// [646] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1) = BLUE -- _deref_pbuc1=vbuc2
// Set sprite MC-colors for the game
lda #BLUE
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1
// VICII->SPRITES_MCOLOR2 = RED
// [647] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2) = RED -- _deref_pbuc1=vbuc2
lda #RED
sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2
// phase = 1
// [648] phase = 1 -- vbuz1=vbuc1
// Set phase to game
lda #1
sta.z phase
// spawn_all()
// [649] call spawn_all
// Spawn pacman and all ghosts
jsr spawn_all
// [650] phi from gameplay_run::@9 to gameplay_run::@18 [phi:gameplay_run::@9->gameplay_run::@18]
// gameplay_run::@18
// pacman_sound_init()
// [651] call pacman_sound_init
// Initialize the game sound
jsr pacman_sound_init
// gameplay_run::@19
// game_playable = 1
// [652] game_playable = 1 -- vbuz1=vbuc1
// Start the game play
lda #1
sta.z game_playable
// VICII->CONTROL1 = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM
// [653] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM -- _deref_pbuc1=vbuc2
// Turn on raster after transition
// Start a hyperscreen with no badlines and open borders
// Set screen height to 25 lines (preparing for the hyperscreen), enable display
lda #VICII_RSEL|VICII_DEN|VICII_ECM|VICII_BMM
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
// Wait at least one frames for DEN to take effect
// gameplay_run::@10
__b10:
// while(VICII->RASTER!=0xfb)
// [654] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fb) goto gameplay_run::@10 -- _deref_pbuc1_neq_vbuc2_then_la1
lda #$fb
cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
bne __b10
// gameplay_run::@11
__b11:
// while(VICII->RASTER!=0xfa)
// [655] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fa) goto gameplay_run::@11 -- _deref_pbuc1_neq_vbuc2_then_la1
lda #$fa
cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
bne __b11
// gameplay_run::@12
// VICII->CONTROL1 &= ~(VICII_RST8|VICII_RSEL|VICII_DEN)
// [656] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & ~VICII_RST8|VICII_RSEL|VICII_DEN -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// Open lower/upper border using RSEL - and disable all graphics (except sprites)
// Set up RASTER IRQ to start at irq_screen_top() (RST8=0)
lda #(VICII_RST8|VICII_RSEL|VICII_DEN)^$ff
and VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
// VICII->RASTER = IRQ_SCREEN_TOP_LINE
// [657] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_SCREEN_TOP_LINE -- _deref_pbuc1=vbuc2
lda #IRQ_SCREEN_TOP_LINE
sta VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
// *HARDWARE_IRQ = &irq_screen_top
// [658] *HARDWARE_IRQ = &irq_screen_top -- _deref_qprc1=pprc2
lda #<irq_screen_top
sta HARDWARE_IRQ
lda #>irq_screen_top
sta HARDWARE_IRQ+1
// VICII->IRQ_ENABLE = IRQ_RASTER
// [659] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER -- _deref_pbuc1=vbuc2
// Enable Raster Interrupt
lda #IRQ_RASTER
sta VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE
// asm
// asm { ldaCIA1_INTERRUPT }
// Acknowledge any timer IRQ
lda CIA1_INTERRUPT
// *IRQ_STATUS = 0x0f
// [661] *IRQ_STATUS = $f -- _deref_pbuc1=vbuc2
// Acknowledge any VIC IRQ
lda #$f
sta IRQ_STATUS
// gameplay_run::CLI1
// asm
// asm { cli }
cli
// gameplay_run::@13
__b13:
// if(pacman_wins || pacman_lives==0)
// [663] if(0!=pacman_wins) goto gameplay_run::@return -- 0_neq_vbuz1_then_la1
lda.z pacman_wins
bne __breturn
// gameplay_run::@20
// [664] if(pacman_lives==0) goto gameplay_run::@return -- vbuz1_eq_0_then_la1
lda.z pacman_lives
beq __breturn
jmp __b13
// gameplay_run::@return
__breturn:
// }
// [665] return
rts
// gameplay_run::@8
__b8:
// SPRITES_COLOR[i] = top_sprites_color
// [666] SPRITES_COLOR[gameplay_run::i2#2] = top_sprites_color -- pbuc1_derefidx_vbuxx=vbuz1
lda.z top_sprites_color
sta SPRITES_COLOR,x
// for(char i=0;i<8;i++)
// [667] gameplay_run::i2#1 = ++ gameplay_run::i2#2 -- vbuxx=_inc_vbuxx
inx
// [644] phi from gameplay_run::@8 to gameplay_run::@7 [phi:gameplay_run::@8->gameplay_run::@7]
// [644] phi gameplay_run::i2#2 = gameplay_run::i2#1 [phi:gameplay_run::@8->gameplay_run::@7#0] -- register_copy
jmp __b7
// gameplay_run::@5
__b5:
// SPRITES_COLOR[i] = BLACK
// [668] SPRITES_COLOR[gameplay_run::i1#2] = BLACK -- pbuc1_derefidx_vbuxx=vbuc2
lda #BLACK
sta SPRITES_COLOR,x
// for(char i=0;i<8;i++)
// [669] gameplay_run::i1#1 = ++ gameplay_run::i1#2 -- vbuxx=_inc_vbuxx
inx
// [624] phi from gameplay_run::@5 to gameplay_run::@4 [phi:gameplay_run::@5->gameplay_run::@4]
// [624] phi gameplay_run::i1#2 = gameplay_run::i1#1 [phi:gameplay_run::@5->gameplay_run::@4#0] -- register_copy
jmp __b4
// gameplay_run::@2
__b2:
// ((char*)SID)[i] = 0
// [670] ((char *)SID)[gameplay_run::i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #0
sta SID,x
// for(char i=0;i<0x2f;i++)
// [671] gameplay_run::i#1 = ++ gameplay_run::i#2 -- vbuxx=_inc_vbuxx
inx
// [618] phi from gameplay_run::@2 to gameplay_run::@1 [phi:gameplay_run::@2->gameplay_run::@1]
// [618] phi gameplay_run::i#2 = gameplay_run::i#1 [phi:gameplay_run::@2->gameplay_run::@1#0] -- register_copy
jmp __b1
}
// done_run
// Show Victory or Game Over Image
// Returns when the user clicks the joystick button
done_run: {
// Show the win graphics
.label gfx = 5
.label ypos = $10
.label xcol = $14
// game_playable = 0
// [672] game_playable = 0 -- vbuz1=vbuc1
// Stop the game play
lda #0
sta.z game_playable
// phase = 0
// [673] phase = 0 -- vbuz1=vbuc1
// Set phase to intro
sta.z phase
// [674] phi from done_run to done_run::@4 [phi:done_run->done_run::@4]
// [674] phi done_run::i#2 = 0 [phi:done_run->done_run::@4#0] -- vbuxx=vbuc1
tax
// Stop any sound
// done_run::@4
__b4:
// for(char i=0;i<0x2f;i++)
// [675] if(done_run::i#2<$2f) goto done_run::@5 -- vbuxx_lt_vbuc1_then_la1
cpx #$2f
bcs !__b5+
jmp __b5
!__b5:
// [676] phi from done_run::@4 to done_run::@6 [phi:done_run::@4->done_run::@6]
// [676] phi done_run::i1#2 = 0 [phi:done_run::@4->done_run::@6#0] -- vbuxx=vbuc1
ldx #0
// Move the bobs to the center to avoid interference while rendering the level
// done_run::@6
__b6:
// for(char i=0;i<4;i++)
// [677] if(done_run::i1#2<4) goto done_run::@7 -- vbuxx_lt_vbuc1_then_la1
cpx #4
bcc __b7
// done_run::@8
// asm
// asm { lda#0 }
// Init music
lda #0
// (*musicInit)()
// [679] callexecute *musicInit -- call__deref_pprc1
jsr musicInit
// done_run::@1
// if(pacman_wins)
// [680] if(0!=pacman_wins) goto done_run::@2 -- 0_neq_vbuz1_then_la1
lda.z pacman_wins
bne __b2
// done_run::@3
// byteboozer_decrunch(GAMEOVER_GFX_CRUNCHED)
// [681] byteboozer_decrunch::crunched = GAMEOVER_GFX_CRUNCHED -- pbuz1=pbuc1
lda #<GAMEOVER_GFX_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>GAMEOVER_GFX_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [682] call byteboozer_decrunch
// decrunch game over graphics
jsr byteboozer_decrunch
// [683] phi from done_run::@2 done_run::@3 to done_run::@9 [phi:done_run::@2/done_run::@3->done_run::@9]
__b1:
// [683] phi done_run::gfx#4 = WIN_GFX [phi:done_run::@2/done_run::@3->done_run::@9#0] -- pbuz1=pbuc1
lda #<WIN_GFX
sta.z gfx
lda #>WIN_GFX
sta.z gfx+1
// [683] phi done_run::xcol#2 = 0 [phi:done_run::@2/done_run::@3->done_run::@9#1] -- vbuz1=vbuc1
lda #0
sta.z xcol
// done_run::@9
__b9:
// for(char xcol=0;xcol<25;xcol++)
// [684] if(done_run::xcol#2<$19) goto done_run::@11 -- vbuz1_lt_vbuc1_then_la1
lda.z xcol
cmp #$19
bcc __b3
// done_run::@10
// music_play_next = 0
// [685] music_play_next = 0 -- vbuz1=vbuc1
// Wait for fire
lda #0
sta.z music_play_next
// [686] phi from done_run::@10 done_run::@15 done_run::@16 to done_run::@14 [phi:done_run::@10/done_run::@15/done_run::@16->done_run::@14]
// done_run::@14
__b14:
// joyfire()
// [687] call joyfire
jsr joyfire
// [688] joyfire::return#0 = joyfire::return#4
// done_run::@19
// [689] done_run::$8 = joyfire::return#0
// while(!joyfire())
// [690] if(0==done_run::$8) goto done_run::@15 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b15
// done_run::@return
// }
// [691] return
rts
// done_run::@15
__b15:
// if(music_play_next)
// [692] if(0==music_play_next) goto done_run::@14 -- 0_eq_vbuz1_then_la1
lda.z music_play_next
beq __b14
// [693] phi from done_run::@15 to done_run::@17 [phi:done_run::@15->done_run::@17]
// done_run::@17
// (*musicPlay)()
// [694] callexecute *musicPlay -- call__deref_pprc1
//VICII->BG_COLOR=1;
jsr musicPlay
// done_run::@16
// music_play_next = 0
// [695] music_play_next = 0 -- vbuz1=vbuc1
//VICII->BG_COLOR=0;
lda #0
sta.z music_play_next
jmp __b14
// [696] phi from done_run::@9 to done_run::@11 [phi:done_run::@9->done_run::@11]
__b3:
// [696] phi done_run::gfx#2 = done_run::gfx#4 [phi:done_run::@9->done_run::@11#0] -- register_copy
// [696] phi done_run::ypos#2 = 0 [phi:done_run::@9->done_run::@11#1] -- vbuz1=vbuc1
lda #0
sta.z ypos
// done_run::@11
__b11:
// for(char ypos=0;ypos<25;ypos++)
// [697] if(done_run::ypos#2<$19) goto done_run::@12 -- vbuz1_lt_vbuc1_then_la1
lda.z ypos
cmp #$19
bcc __b12
// done_run::@13
// for(char xcol=0;xcol<25;xcol++)
// [698] done_run::xcol#1 = ++ done_run::xcol#2 -- vbuz1=_inc_vbuz1
inc.z xcol
// [683] phi from done_run::@13 to done_run::@9 [phi:done_run::@13->done_run::@9]
// [683] phi done_run::gfx#4 = done_run::gfx#2 [phi:done_run::@13->done_run::@9#0] -- register_copy
// [683] phi done_run::xcol#2 = done_run::xcol#1 [phi:done_run::@13->done_run::@9#1] -- register_copy
jmp __b9
// done_run::@12
__b12:
// char pixels = *gfx++
// [699] done_run::pixels#0 = *done_run::gfx#2 -- vbuxx=_deref_pbuz1
// Render 8px x 1px
ldy #0
lda (gfx),y
tax
// [700] done_run::gfx#1 = ++ done_run::gfx#2 -- pbuz1=_inc_pbuz1
inc.z gfx
bne !+
inc.z gfx+1
!:
// render(xcol, ypos, pixels)
// [701] render::xcol#0 = done_run::xcol#2
// [702] render::ypos#0 = done_run::ypos#2
// [703] render::pixels#0 = done_run::pixels#0 -- vbuz1=vbuxx
stx.z render.pixels
// [704] call render
// [999] phi from done_run::@12 to render [phi:done_run::@12->render]
// [999] phi render::pixels#4 = render::pixels#0 [phi:done_run::@12->render#0] -- register_copy
// [999] phi render::xcol#2 = render::xcol#0 [phi:done_run::@12->render#1] -- register_copy
// [999] phi render::ypos#2 = render::ypos#0 [phi:done_run::@12->render#2] -- register_copy
jsr render
// done_run::@18
// for(char ypos=0;ypos<25;ypos++)
// [705] done_run::ypos#1 = ++ done_run::ypos#2 -- vbuz1=_inc_vbuz1
inc.z ypos
// [696] phi from done_run::@18 to done_run::@11 [phi:done_run::@18->done_run::@11]
// [696] phi done_run::gfx#2 = done_run::gfx#1 [phi:done_run::@18->done_run::@11#0] -- register_copy
// [696] phi done_run::ypos#2 = done_run::ypos#1 [phi:done_run::@18->done_run::@11#1] -- register_copy
jmp __b11
// done_run::@2
__b2:
// byteboozer_decrunch(WIN_GFX_CRUNCHED)
// [706] byteboozer_decrunch::crunched = WIN_GFX_CRUNCHED -- pbuz1=pbuc1
lda #<WIN_GFX_CRUNCHED
sta.z byteboozer_decrunch.crunched
lda #>WIN_GFX_CRUNCHED
sta.z byteboozer_decrunch.crunched+1
// [707] call byteboozer_decrunch
// decrunch win graphics
jsr byteboozer_decrunch
jmp __b1
// done_run::@7
__b7:
// bobs_xcol[i] = 10
// [708] bobs_xcol[done_run::i1#2] = $a -- pbuc1_derefidx_vbuxx=vbuc2
lda #$a
sta bobs_xcol,x
// bobs_yfine[i] = 45
// [709] bobs_yfine[done_run::i1#2] = $2d -- pbuc1_derefidx_vbuxx=vbuc2
lda #$2d
sta bobs_yfine,x
// bobs_bob_id[i] = 0
// [710] bobs_bob_id[done_run::i1#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #0
sta bobs_bob_id,x
// for(char i=0;i<4;i++)
// [711] done_run::i1#1 = ++ done_run::i1#2 -- vbuxx=_inc_vbuxx
inx
// [676] phi from done_run::@7 to done_run::@6 [phi:done_run::@7->done_run::@6]
// [676] phi done_run::i1#2 = done_run::i1#1 [phi:done_run::@7->done_run::@6#0] -- register_copy
jmp __b6
// done_run::@5
__b5:
// ((char*)SID)[i] = 0
// [712] ((char *)SID)[done_run::i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #0
sta SID,x
// for(char i=0;i<0x2f;i++)
// [713] done_run::i#1 = ++ done_run::i#2 -- vbuxx=_inc_vbuxx
inx
// [674] phi from done_run::@5 to done_run::@4 [phi:done_run::@5->done_run::@4]
// [674] phi done_run::i#2 = done_run::i#1 [phi:done_run::@5->done_run::@4#0] -- register_copy
jmp __b4
}
// spawn_all
// Spawn pacman and all ghosts
spawn_all: {
// ghosts_mode_count = 0
// [714] ghosts_mode_count = 0 -- vbuz1=vbuc1
lda #0
sta.z ghosts_mode_count
// pacman_substep = 0
// [715] pacman_substep = 0 -- vbuz1=vbuc1
sta.z pacman_substep
// ghost1_substep = 0
// [716] ghost1_substep = 0 -- vbuz1=vbuc1
sta.z ghost1_substep
// ghost2_substep = 0
// [717] ghost2_substep = 0 -- vbuz1=vbuc1
sta.z ghost2_substep
// ghost3_substep = 0
// [718] ghost3_substep = 0 -- vbuz1=vbuc1
sta.z ghost3_substep
// ghost4_substep = 0
// [719] ghost4_substep = 0 -- vbuz1=vbuc1
sta.z ghost4_substep
// pacman_direction = STOP
// [720] pacman_direction = STOP -- vbuz1=vbuc1
lda #STOP
sta.z pacman_direction
// ghost1_direction = STOP
// [721] ghost1_direction = STOP -- vbuz1=vbuc1
sta.z ghost1_direction
// ghost2_direction = STOP
// [722] ghost2_direction = STOP -- vbuz1=vbuc1
sta.z ghost2_direction
// ghost3_direction = STOP
// [723] ghost3_direction = STOP -- vbuz1=vbuc1
sta.z ghost3_direction
// ghost4_direction = STOP
// [724] ghost4_direction = STOP -- vbuz1=vbuc1
sta.z ghost4_direction
// pacman_xfine = 50
// [725] pacman_xfine = $32 -- vbuz1=vbuc1
lda #$32
sta.z pacman_xfine
// ghost1_xfine = 50
// [726] ghost1_xfine = $32 -- vbuz1=vbuc1
sta.z ghost1_xfine
// ghost2_xfine = 50
// [727] ghost2_xfine = $32 -- vbuz1=vbuc1
sta.z ghost2_xfine
// ghost3_xfine = 50
// [728] ghost3_xfine = $32 -- vbuz1=vbuc1
sta.z ghost3_xfine
// ghost4_xfine = 50
// [729] ghost4_xfine = $32 -- vbuz1=vbuc1
sta.z ghost4_xfine
// ghost1_yfine = 35
// [730] ghost1_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z ghost1_yfine
// ghost2_yfine = 35
// [731] ghost2_yfine = $23 -- vbuz1=vbuc1
sta.z ghost2_yfine
// ghost3_yfine = 35
// [732] ghost3_yfine = $23 -- vbuz1=vbuc1
sta.z ghost3_yfine
// ghost4_yfine = 35
// [733] ghost4_yfine = $23 -- vbuz1=vbuc1
sta.z ghost4_yfine
// pacman_yfine = 62
// [734] pacman_yfine = $3e -- vbuz1=vbuc1
lda #$3e
sta.z pacman_yfine
// ghost1_respawn = 10
// [735] ghost1_respawn = $a -- vbuz1=vbuc1
lda #$a
sta.z ghost1_respawn
// ghost2_respawn = 20
// [736] ghost2_respawn = $14 -- vbuz1=vbuc1
lda #$14
sta.z ghost2_respawn
// ghost3_respawn = 30
// [737] ghost3_respawn = $1e -- vbuz1=vbuc1
lda #$1e
sta.z ghost3_respawn
// ghost4_respawn = 40
// [738] ghost4_respawn = $28 -- vbuz1=vbuc1
lda #$28
sta.z ghost4_respawn
// spawn_all::@return
// }
// [739] return
rts
}
// level_tile_directions
// Get the open directions at a given (xtile, ytile) position
// Returns the open DIRECTIONs as bits
// If xtile of ytile is outside the legal range the empty tile (0) is returned
// __register(A) char level_tile_directions(__register(X) char xtile, __register(A) char ytile)
level_tile_directions: {
.label ytiles = $31
// if(xtile>49 || ytile>36)
// [741] if(level_tile_directions::xtile#5>=$31+1) goto level_tile_directions::@return -- vbuxx_ge_vbuc1_then_la1
cpx #$31+1
bcs __b1
// level_tile_directions::@2
// [742] if(level_tile_directions::ytile#5>=$24+1) goto level_tile_directions::@return -- vbuaa_ge_vbuc1_then_la1
cmp #$24+1
bcs __b1
// level_tile_directions::@1
// char* ytiles = LEVEL_TILES_DIRECTIONS + LEVEL_YTILE_OFFSET[ytile]
// [743] level_tile_directions::$5 = level_tile_directions::ytile#5 << 1 -- vbuaa=vbuaa_rol_1
asl
// [744] level_tile_directions::ytiles#0 = LEVEL_TILES_DIRECTIONS + LEVEL_YTILE_OFFSET[level_tile_directions::$5] -- pbuz1=pbuc1_plus_pwuc2_derefidx_vbuaa
tay
clc
lda #<LEVEL_TILES_DIRECTIONS
adc LEVEL_YTILE_OFFSET,y
sta.z ytiles
lda #>LEVEL_TILES_DIRECTIONS
adc LEVEL_YTILE_OFFSET+1,y
sta.z ytiles+1
// return ytiles[xtile];
// [745] level_tile_directions::return#0 = level_tile_directions::ytiles#0[level_tile_directions::xtile#5] -- vbuaa=pbuz1_derefidx_vbuxx
txa
tay
lda (ytiles),y
// [746] phi from level_tile_directions::@1 to level_tile_directions::@return [phi:level_tile_directions::@1->level_tile_directions::@return]
// [746] phi level_tile_directions::return#2 = level_tile_directions::return#0 [phi:level_tile_directions::@1->level_tile_directions::@return#0] -- register_copy
rts
// [746] phi from level_tile_directions level_tile_directions::@2 to level_tile_directions::@return [phi:level_tile_directions/level_tile_directions::@2->level_tile_directions::@return]
__b1:
// [746] phi level_tile_directions::return#2 = 0 [phi:level_tile_directions/level_tile_directions::@2->level_tile_directions::@return#0] -- vbuaa=vbuc1
lda #0
// level_tile_directions::@return
// }
// [747] return
rts
}
// choose_direction
// Choose the open direction that brings the ghost closest to the target
// Uses Manhattan distance calculation
// __zp($33) char choose_direction(__zp($49) char open_directions, __register(Y) char ghost_xtile, __zp($34) char ghost_ytile, __register(X) char target_xtile, __zp($27) char target_ytile)
choose_direction: {
.label open_directions = $49
.label ghost_ytile = $34
.label target_ytile = $27
.label xdiff = $4b
.label ydiff = $34
.label dist_left = $22
.label return = $33
.label direction = $33
.label dist_min = $22
// char xdiff = ghost_xtile-target_xtile
// [749] choose_direction::xdiff#0 = choose_direction::ghost_xtile#4 - choose_direction::target_xtile#4 -- vbuz1=vbuyy_minus_vbuxx
tya
stx.z $ff
sec
sbc.z $ff
sta.z xdiff
// char ydiff = ghost_ytile-target_ytile
// [750] choose_direction::ydiff#0 = choose_direction::ghost_ytile#4 - choose_direction::target_ytile#4 -- vbuz1=vbuz1_minus_vbuz2
lda.z ydiff
sec
sbc.z target_ytile
sta.z ydiff
// open_directions&UP
// [751] choose_direction::$2 = choose_direction::open_directions#10 & UP -- vbuaa=vbuz1_band_vbuc1
lda #UP
and.z open_directions
// if(open_directions&UP)
// [752] if(0==choose_direction::$2) goto choose_direction::@1 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b5
// choose_direction::@5
// char dist_up = ABS[xdiff] + ABS[ydiff-1]
// [753] choose_direction::dist_up#0 = ABS[choose_direction::xdiff#0] + (ABS+-1)[choose_direction::ydiff#0] -- vbuyy=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuz2
ldy.z xdiff
lda ABS,y
ldy.z ydiff
clc
adc ABS+-1,y
tay
// if(dist_up<dist_min)
// [754] if(choose_direction::dist_up#0>=$ff) goto choose_direction::@1 -- vbuyy_ge_vbuc1_then_la1
cpy #$ff
bcs __b5
// [755] phi from choose_direction::@5 to choose_direction::@6 [phi:choose_direction::@5->choose_direction::@6]
// choose_direction::@6
// [756] phi from choose_direction::@6 to choose_direction::@1 [phi:choose_direction::@6->choose_direction::@1]
// [756] phi choose_direction::direction#10 = UP [phi:choose_direction::@6->choose_direction::@1#0] -- vbuz1=vbuc1
lda #UP
sta.z direction
// [756] phi choose_direction::dist_min#6 = choose_direction::dist_up#0 [phi:choose_direction::@6->choose_direction::@1#1] -- register_copy
jmp __b1
// [756] phi from choose_direction choose_direction::@5 to choose_direction::@1 [phi:choose_direction/choose_direction::@5->choose_direction::@1]
__b5:
// [756] phi choose_direction::direction#10 = STOP [phi:choose_direction/choose_direction::@5->choose_direction::@1#0] -- vbuz1=vbuc1
lda #STOP
sta.z direction
// [756] phi choose_direction::dist_min#6 = $ff [phi:choose_direction/choose_direction::@5->choose_direction::@1#1] -- vbuyy=vbuc1
ldy #$ff
// choose_direction::@1
__b1:
// open_directions&DOWN
// [757] choose_direction::$4 = choose_direction::open_directions#10 & DOWN -- vbuaa=vbuz1_band_vbuc1
lda #DOWN
and.z open_directions
// if(open_directions&DOWN)
// [758] if(0==choose_direction::$4) goto choose_direction::@10 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b10
// choose_direction::@7
// char dist_down = ABS[xdiff] + ABS[ydiff+1]
// [759] choose_direction::dist_down#0 = ABS[choose_direction::xdiff#0] + (ABS+1)[choose_direction::ydiff#0] -- vbuxx=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuz2
ldx.z xdiff
lda ABS,x
ldx.z ydiff
clc
adc ABS+1,x
tax
// if(dist_down<dist_min)
// [760] if(choose_direction::dist_down#0>=choose_direction::dist_min#6) goto choose_direction::@11 -- vbuxx_ge_vbuyy_then_la1
sty.z $ff
cpx.z $ff
bcs __b11
// [762] phi from choose_direction::@7 to choose_direction::@2 [phi:choose_direction::@7->choose_direction::@2]
// [762] phi choose_direction::direction#8 = DOWN [phi:choose_direction::@7->choose_direction::@2#0] -- vbuz1=vbuc1
lda #DOWN
sta.z direction
// [762] phi choose_direction::dist_min#10 = choose_direction::dist_down#0 [phi:choose_direction::@7->choose_direction::@2#1] -- register_copy
jmp __b2
// choose_direction::@11
__b11:
// [761] choose_direction::dist_min#14 = choose_direction::dist_min#6 -- vbuxx=vbuyy
tya
tax
// [762] phi from choose_direction::@10 choose_direction::@11 to choose_direction::@2 [phi:choose_direction::@10/choose_direction::@11->choose_direction::@2]
// [762] phi choose_direction::direction#8 = choose_direction::direction#10 [phi:choose_direction::@10/choose_direction::@11->choose_direction::@2#0] -- register_copy
// [762] phi choose_direction::dist_min#10 = choose_direction::dist_min#13 [phi:choose_direction::@10/choose_direction::@11->choose_direction::@2#1] -- register_copy
// choose_direction::@2
__b2:
// open_directions&LEFT
// [763] choose_direction::$6 = choose_direction::open_directions#10 & LEFT -- vbuaa=vbuz1_band_vbuc1
lda #LEFT
and.z open_directions
// if(open_directions&LEFT)
// [764] if(0==choose_direction::$6) goto choose_direction::@12 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b12
// choose_direction::@8
// char dist_left = ABS[xdiff-1] + ABS[ydiff]
// [765] choose_direction::dist_left#0 = (ABS+-1)[choose_direction::xdiff#0] + ABS[choose_direction::ydiff#0] -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuz3
ldy.z xdiff
lda ABS+-1,y
ldy.z ydiff
clc
adc ABS,y
sta.z dist_left
// if(dist_left<dist_min)
// [766] if(choose_direction::dist_left#0>=choose_direction::dist_min#10) goto choose_direction::@13 -- vbuz1_ge_vbuxx_then_la1
stx.z $ff
cmp.z $ff
bcs __b13
// [768] phi from choose_direction::@8 to choose_direction::@3 [phi:choose_direction::@8->choose_direction::@3]
// [768] phi choose_direction::dist_min#11 = choose_direction::dist_left#0 [phi:choose_direction::@8->choose_direction::@3#0] -- register_copy
// [768] phi choose_direction::direction#6 = LEFT [phi:choose_direction::@8->choose_direction::@3#1] -- vbuz1=vbuc1
lda #LEFT
sta.z direction
jmp __b3
// choose_direction::@13
__b13:
// [767] choose_direction::dist_min#18 = choose_direction::dist_min#10 -- vbuz1=vbuxx
stx.z dist_min
// [768] phi from choose_direction::@12 choose_direction::@13 to choose_direction::@3 [phi:choose_direction::@12/choose_direction::@13->choose_direction::@3]
// [768] phi choose_direction::dist_min#11 = choose_direction::dist_min#17 [phi:choose_direction::@12/choose_direction::@13->choose_direction::@3#0] -- register_copy
// [768] phi choose_direction::direction#6 = choose_direction::direction#8 [phi:choose_direction::@12/choose_direction::@13->choose_direction::@3#1] -- register_copy
// choose_direction::@3
__b3:
// open_directions&RIGHT
// [769] choose_direction::$8 = choose_direction::open_directions#10 & RIGHT -- vbuaa=vbuz1_band_vbuc1
lda #RIGHT
and.z open_directions
// if(open_directions&RIGHT)
// [770] if(0==choose_direction::$8) goto choose_direction::@4 -- 0_eq_vbuaa_then_la1
cmp #0
beq __b4
// choose_direction::@9
// char dist_right = ABS[xdiff+1] + ABS[ydiff]
// [771] choose_direction::dist_right#0 = (ABS+1)[choose_direction::xdiff#0] + ABS[choose_direction::ydiff#0] -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuz2
ldy.z xdiff
lda ABS+1,y
ldy.z ydiff
clc
adc ABS,y
// if(dist_right<dist_min)
// [772] if(choose_direction::dist_right#0>=choose_direction::dist_min#11) goto choose_direction::@14 -- vbuaa_ge_vbuz1_then_la1
cmp.z dist_min
bcs __b4
// [774] phi from choose_direction::@9 to choose_direction::@4 [phi:choose_direction::@9->choose_direction::@4]
// [774] phi choose_direction::return#10 = RIGHT [phi:choose_direction::@9->choose_direction::@4#0] -- vbuz1=vbuc1
lda #RIGHT
sta.z return
rts
// [773] phi from choose_direction::@9 to choose_direction::@14 [phi:choose_direction::@9->choose_direction::@14]
// choose_direction::@14
// [774] phi from choose_direction::@14 choose_direction::@3 to choose_direction::@4 [phi:choose_direction::@14/choose_direction::@3->choose_direction::@4]
// [774] phi choose_direction::return#10 = choose_direction::direction#6 [phi:choose_direction::@14/choose_direction::@3->choose_direction::@4#0] -- register_copy
// choose_direction::@4
__b4:
// choose_direction::@return
// }
// [775] return
rts
// choose_direction::@12
__b12:
// [776] choose_direction::dist_min#17 = choose_direction::dist_min#10 -- vbuz1=vbuxx
stx.z dist_min
jmp __b3
// choose_direction::@10
__b10:
// [777] choose_direction::dist_min#13 = choose_direction::dist_min#6 -- vbuxx=vbuyy
tya
tax
jmp __b2
}
// memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// void * memset(__zp($b) void *str, char c, __zp(5) unsigned int num)
memset: {
.label end = 5
.label dst = $b
.label num = 5
.label str = $b
// if(num>0)
// [779] if(memset::num#5<=0) goto memset::@return -- vwuz1_le_0_then_la1
lda.z num
bne !+
lda.z num+1
beq __breturn
!:
// memset::@1
// char* end = (char*)str + num
// [780] memset::end#0 = (char *)memset::str#6 + memset::num#5 -- pbuz1=pbuz2_plus_vwuz1
clc
lda.z end
adc.z str
sta.z end
lda.z end+1
adc.z str+1
sta.z end+1
// [781] memset::dst#4 = (char *)memset::str#6
// [782] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
// [782] phi memset::dst#2 = memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy
// memset::@2
__b2:
// for(char* dst = str; dst!=end; dst++)
// [783] if(memset::dst#2!=memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1
lda.z dst+1
cmp.z end+1
bne __b3
lda.z dst
cmp.z end
bne __b3
// memset::@return
__breturn:
// }
// [784] return
rts
// memset::@3
__b3:
// *dst = c
// [785] *memset::dst#2 = 0 -- _deref_pbuz1=vbuc1
lda #0
tay
sta (dst),y
// for(char* dst = str; dst!=end; dst++)
// [786] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1
inc.z dst
bne !+
inc.z dst+1
!:
jmp __b2
}
// byteboozer_decrunch
// Decrunch crunched data using ByteBoozer
// - crunched: Pointer to the start of the crunched data
// void byteboozer_decrunch(__zp($24) char * volatile crunched)
byteboozer_decrunch: {
.label crunched = $24
// asm
// asm { ldycrunched ldxcrunched+1 jsrb2.Decrunch }
ldy crunched
ldx crunched+1
jsr b2.Decrunch
// byteboozer_decrunch::@return
// }
// [788] return
rts
}
// merge_code
// Merge unrolled cycle-exact logic code into an unrolled cycle-exact raster code.
// The logic-code is merged into the raster code ensuring cycle-exact execution. If a logic-code block does not fit within the remaining cycle-budget of a raster-slot then NOPs/BIT $EA are used to reach the cycle-budget.
// If the logic-code runs out before the raster-code ends then the remaining raster-slots are filled with NOP/BIT$EA.
// If the raster-code runs out before the logic-code then the rest of the logic-code is added at the end.
// An RTS is added at the very end.
//
// Parameters:
// - dest_code: Address where the merged code is placed
// - raster_code: The unrolled raster code blocks with information about cycles to be filled. Format is decribed below.
// - logic_code: The unrolled logic code with information about cycles spent. Format is decribed below.
//
// Format of unrolled raster code.
// A number of blocks that have the following structure:
// <nn>* 0xff <cc>
// <nn>* : some bytes of code. any number of bytes are allowed.
// 0xff : signals the end of a block.
// <cc> : If <cc> is 00 then this is the last block of the unrolled raster code.
// If <cc> is non-zero it means that <cc> cycles must be spent here (the cycle budget of the slot). The merger merges logic code into the slot and fills with NOP's to match the number of cycles needed.
//
// Format of unrolled logic code.
// A number of blocks that has the following structure:
// <cc> <nn>* 0xff
// <cc> : If <cc> is 00 then this is the last block of the unrolled logic code. No more bytes are used.
// If <cc> is non-zero it holds the number of cycles used by the block of code.
// <nn>* : some bytes of code. any number of bytes are allowed. This code uses exactly the number of cycles specified by <cc>
// 0xff : signals the end of a block.
// void merge_code(__zp(9) char *dest_code, __zp($b) char *raster_code, __zp(5) char *logic_code)
merge_code: {
// Cycle-count signalling the last block of the logic-code
.const LOGIC_EXIT = 0
// Value signalling the end of a block of the logic-code
.const LOGIC_END = $ff
// Cycle-count signalling the last block of the raster-code
.const RASTER_EXIT = 0
// Value signalling the end of a block of the raster-code
.const RASTER_END = $ff
.label dest_code = 9
.label raster_code = $b
.label logic_cycles = 2
.label logic_code = 5
// [790] phi from merge_code to merge_code::@1 [phi:merge_code->merge_code::@1]
// [790] phi merge_code::logic_code#18 = LOGIC_CODE_UNMERGED [phi:merge_code->merge_code::@1#0] -- pbuz1=pbuc1
lda #<LOGIC_CODE_UNMERGED
sta.z logic_code
lda #>LOGIC_CODE_UNMERGED
sta.z logic_code+1
// [790] phi merge_code::dest_code#14 = RASTER_CODE [phi:merge_code->merge_code::@1#1] -- pbuz1=pbuc1
lda #<RASTER_CODE
sta.z dest_code
lda #>RASTER_CODE
sta.z dest_code+1
// [790] phi merge_code::raster_code#4 = RASTER_CODE_UNMERGED [phi:merge_code->merge_code::@1#2] -- pbuz1=pbuc1
lda #<RASTER_CODE_UNMERGED
sta.z raster_code
lda #>RASTER_CODE_UNMERGED
sta.z raster_code+1
// Output raster code until meeting RASTER_END signalling the end of a block
// merge_code::@1
__b1:
// while(*raster_code!=RASTER_END)
// [791] if(*merge_code::raster_code#4!=merge_code::RASTER_END) goto merge_code::@2 -- _deref_pbuz1_neq_vbuc1_then_la1
ldy #0
lda (raster_code),y
cmp #RASTER_END
beq !__b2+
jmp __b2
!__b2:
// merge_code::@3
// raster_code++;
// [792] merge_code::raster_code#1 = ++ merge_code::raster_code#4 -- pbuz1=_inc_pbuz1
inc.z raster_code
bne !+
inc.z raster_code+1
!:
// char cycle_budget = *raster_code++
// [793] merge_code::cycle_budget#0 = *merge_code::raster_code#1 -- vbuxx=_deref_pbuz1
// Find the number of cycles
ldy #0
lda (raster_code),y
tax
// [794] merge_code::raster_code#2 = ++ merge_code::raster_code#1 -- pbuz1=_inc_pbuz1
inc.z raster_code
bne !+
inc.z raster_code+1
!:
// if(cycle_budget==RASTER_EXIT)
// [795] if(merge_code::cycle_budget#0!=merge_code::RASTER_EXIT) goto merge_code::@4 -- vbuxx_neq_vbuc1_then_la1
cpx #RASTER_EXIT
bne __b4
// [796] phi from merge_code::@19 merge_code::@3 to merge_code::@14 [phi:merge_code::@19/merge_code::@3->merge_code::@14]
__b3:
// [796] phi merge_code::dest_code#12 = merge_code::dest_code#13 [phi:merge_code::@19/merge_code::@3->merge_code::@14#0] -- register_copy
// [796] phi merge_code::logic_code#12 = merge_code::logic_code#5 [phi:merge_code::@19/merge_code::@3->merge_code::@14#1] -- register_copy
// No more raster code - fill in the rest of the logic code
// merge_code::@14
// while(*logic_code!=LOGIC_EXIT)
// [797] if(*merge_code::logic_code#12!=merge_code::LOGIC_EXIT) goto merge_code::@15 -- _deref_pbuz1_neq_vbuc1_then_la1
ldy #0
lda (logic_code),y
cmp #LOGIC_EXIT
bne __b15
// merge_code::@16
// *dest_code++ = 0x60
// [798] *merge_code::dest_code#12 = $60 -- _deref_pbuz1=vbuc1
// And add an RTS
lda #$60
sta (dest_code),y
// merge_code::@return
// }
// [799] return
rts
// merge_code::@15
__b15:
// logic_code++;
// [800] merge_code::logic_code#3 = ++ merge_code::logic_code#12 -- pbuz1=_inc_pbuz1
inc.z logic_code
bne !+
inc.z logic_code+1
!:
// [801] phi from merge_code::@15 merge_code::@18 to merge_code::@17 [phi:merge_code::@15/merge_code::@18->merge_code::@17]
__b5:
// [801] phi merge_code::dest_code#13 = merge_code::dest_code#12 [phi:merge_code::@15/merge_code::@18->merge_code::@17#0] -- register_copy
// [801] phi merge_code::logic_code#14 = merge_code::logic_code#3 [phi:merge_code::@15/merge_code::@18->merge_code::@17#1] -- register_copy
// Fill in the logic-code
// merge_code::@17
// while(*logic_code!=LOGIC_END)
// [802] if(*merge_code::logic_code#14!=merge_code::LOGIC_END) goto merge_code::@18 -- _deref_pbuz1_neq_vbuc1_then_la1
ldy #0
lda (logic_code),y
cmp #LOGIC_END
bne __b18
// merge_code::@19
// logic_code++;
// [803] merge_code::logic_code#5 = ++ merge_code::logic_code#14 -- pbuz1=_inc_pbuz1
inc.z logic_code
bne !+
inc.z logic_code+1
!:
jmp __b3
// merge_code::@18
__b18:
// *dest_code++ = *logic_code++
// [804] *merge_code::dest_code#13 = *merge_code::logic_code#14 -- _deref_pbuz1=_deref_pbuz2
ldy #0
lda (logic_code),y
sta (dest_code),y
// *dest_code++ = *logic_code++;
// [805] merge_code::dest_code#6 = ++ merge_code::dest_code#13 -- pbuz1=_inc_pbuz1
inc.z dest_code
bne !+
inc.z dest_code+1
!:
// [806] merge_code::logic_code#4 = ++ merge_code::logic_code#14 -- pbuz1=_inc_pbuz1
inc.z logic_code
bne !+
inc.z logic_code+1
!:
jmp __b5
// Fit the cycle budget with logic-code
// [807] phi from merge_code::@3 merge_code::@8 to merge_code::@4 [phi:merge_code::@3/merge_code::@8->merge_code::@4]
// [807] phi merge_code::dest_code#21 = merge_code::dest_code#14 [phi:merge_code::@3/merge_code::@8->merge_code::@4#0] -- register_copy
// [807] phi merge_code::logic_code#17 = merge_code::logic_code#18 [phi:merge_code::@3/merge_code::@8->merge_code::@4#1] -- register_copy
// [807] phi merge_code::cycle_budget#13 = merge_code::cycle_budget#0 [phi:merge_code::@3/merge_code::@8->merge_code::@4#2] -- register_copy
// merge_code::@4
__b4:
// while(cycle_budget>0)
// [808] if(merge_code::cycle_budget#13<=0) goto merge_code::@10 -- vbuxx_le_0_then_la1
cpx #0
beq __b6
// merge_code::@5
// char logic_cycles = *logic_code
// [809] merge_code::logic_cycles#0 = *merge_code::logic_code#17 -- vbuz1=_deref_pbuz2
// Find the number of logic code cycles
ldy #0
lda (logic_code),y
sta.z logic_cycles
// cycle_budget-1
// [810] merge_code::$5 = merge_code::cycle_budget#13 - 1 -- vbuyy=vbuxx_minus_1
txa
tay
dey
// if(logic_cycles!=LOGIC_EXIT && (logic_cycles < cycle_budget-1 || logic_cycles==cycle_budget))
// [811] if(merge_code::logic_cycles#0!=merge_code::LOGIC_EXIT) goto merge_code::@20 -- vbuz1_neq_vbuc1_then_la1
lda #LOGIC_EXIT
cmp.z logic_cycles
bne __b20
// [812] phi from merge_code::@12 merge_code::@13 merge_code::@4 merge_code::@5 to merge_code::@10 [phi:merge_code::@12/merge_code::@13/merge_code::@4/merge_code::@5->merge_code::@10]
__b6:
// [812] phi merge_code::dest_code#10 = merge_code::dest_code#3 [phi:merge_code::@12/merge_code::@13/merge_code::@4/merge_code::@5->merge_code::@10#0] -- register_copy
// [812] phi merge_code::cycle_budget#10 = merge_code::cycle_budget#2 [phi:merge_code::@12/merge_code::@13/merge_code::@4/merge_code::@5->merge_code::@10#1] -- register_copy
// Fit the cycle budget with NOPs
// merge_code::@10
__b10:
// while(cycle_budget>0)
// [813] if(merge_code::cycle_budget#10>0) goto merge_code::@11 -- vbuxx_gt_0_then_la1
cpx #0
bne __b11
// [790] phi from merge_code::@10 merge_code::@2 to merge_code::@1 [phi:merge_code::@10/merge_code::@2->merge_code::@1]
// [790] phi merge_code::logic_code#18 = merge_code::logic_code#17 [phi:merge_code::@10/merge_code::@2->merge_code::@1#0] -- register_copy
// [790] phi merge_code::dest_code#14 = merge_code::dest_code#10 [phi:merge_code::@10/merge_code::@2->merge_code::@1#1] -- register_copy
// [790] phi merge_code::raster_code#4 = merge_code::raster_code#2 [phi:merge_code::@10/merge_code::@2->merge_code::@1#2] -- register_copy
jmp __b1
// merge_code::@11
__b11:
// if(cycle_budget==3)
// [814] if(merge_code::cycle_budget#10==3) goto merge_code::@12 -- vbuxx_eq_vbuc1_then_la1
cpx #3
beq __b12
// merge_code::@13
// *dest_code++ = 0xEA
// [815] *merge_code::dest_code#10 = $ea -- _deref_pbuz1=vbuc1
lda #$ea
ldy #0
sta (dest_code),y
// *dest_code++ = 0xEA;
// [816] merge_code::dest_code#4 = ++ merge_code::dest_code#10 -- pbuz1=_inc_pbuz1
inc.z dest_code
bne !+
inc.z dest_code+1
!:
// cycle_budget -= 2
// [817] merge_code::cycle_budget#3 = merge_code::cycle_budget#10 - 2 -- vbuxx=vbuxx_minus_2
// NOP
dex
dex
jmp __b6
// merge_code::@12
__b12:
// *dest_code++ = 0x24
// [818] *merge_code::dest_code#10 = $24 -- _deref_pbuz1=vbuc1
lda #$24
ldy #0
sta (dest_code),y
// *dest_code++ = 0x24;
// [819] merge_code::dest_code#2 = ++ merge_code::dest_code#10 -- pbuz1=_inc_pbuz1
inc.z dest_code
bne !+
inc.z dest_code+1
!:
// *dest_code++ = 0xEA
// [820] *merge_code::dest_code#2 = $ea -- _deref_pbuz1=vbuc1
// BIT $EA
lda #$ea
ldy #0
sta (dest_code),y
// *dest_code++ = 0xEA;
// [821] merge_code::dest_code#3 = ++ merge_code::dest_code#2 -- pbuz1=_inc_pbuz1
inc.z dest_code
bne !+
inc.z dest_code+1
!:
// cycle_budget -= 3
// [822] merge_code::cycle_budget#2 = merge_code::cycle_budget#10 - 3 -- vbuxx=vbuxx_minus_vbuc1
txa
axs #3
jmp __b6
// merge_code::@20
__b20:
// if(logic_cycles!=LOGIC_EXIT && (logic_cycles < cycle_budget-1 || logic_cycles==cycle_budget))
// [823] if(merge_code::logic_cycles#0<merge_code::$5) goto merge_code::@9 -- vbuz1_lt_vbuyy_then_la1
cpy.z logic_cycles
beq !+
bcs __b9
!:
// merge_code::@21
// [824] if(merge_code::logic_cycles#0==merge_code::cycle_budget#13) goto merge_code::@9 -- vbuz1_eq_vbuxx_then_la1
cpx.z logic_cycles
beq __b9
// [812] phi from merge_code::@21 to merge_code::@10 [phi:merge_code::@21->merge_code::@10]
jmp __b10
// merge_code::@9
__b9:
// logic_code++;
// [825] merge_code::logic_code#0 = ++ merge_code::logic_code#17 -- pbuz1=_inc_pbuz1
inc.z logic_code
bne !+
inc.z logic_code+1
!:
// [826] phi from merge_code::@7 merge_code::@9 to merge_code::@6 [phi:merge_code::@7/merge_code::@9->merge_code::@6]
__b13:
// [826] phi merge_code::dest_code#15 = merge_code::dest_code#1 [phi:merge_code::@7/merge_code::@9->merge_code::@6#0] -- register_copy
// [826] phi merge_code::logic_code#10 = merge_code::logic_code#1 [phi:merge_code::@7/merge_code::@9->merge_code::@6#1] -- register_copy
// Fill in the logic-code
// merge_code::@6
// while(*logic_code!=LOGIC_END)
// [827] if(*merge_code::logic_code#10!=merge_code::LOGIC_END) goto merge_code::@7 -- _deref_pbuz1_neq_vbuc1_then_la1
ldy #0
lda (logic_code),y
cmp #LOGIC_END
bne __b7
// merge_code::@8
// logic_code++;
// [828] merge_code::logic_code#2 = ++ merge_code::logic_code#10 -- pbuz1=_inc_pbuz1
inc.z logic_code
bne !+
inc.z logic_code+1
!:
// cycle_budget -= logic_cycles
// [829] merge_code::cycle_budget#1 = merge_code::cycle_budget#13 - merge_code::logic_cycles#0 -- vbuxx=vbuxx_minus_vbuz1
// Reduce the cycle budget
txa
sec
sbc.z logic_cycles
tax
jmp __b4
// merge_code::@7
__b7:
// *dest_code++ = *logic_code++
// [830] *merge_code::dest_code#15 = *merge_code::logic_code#10 -- _deref_pbuz1=_deref_pbuz2
ldy #0
lda (logic_code),y
sta (dest_code),y
// *dest_code++ = *logic_code++;
// [831] merge_code::dest_code#1 = ++ merge_code::dest_code#15 -- pbuz1=_inc_pbuz1
inc.z dest_code
bne !+
inc.z dest_code+1
!:
// [832] merge_code::logic_code#1 = ++ merge_code::logic_code#10 -- pbuz1=_inc_pbuz1
inc.z logic_code
bne !+
inc.z logic_code+1
!:
jmp __b13
// merge_code::@2
__b2:
// *dest_code++ = *raster_code++
// [833] *merge_code::dest_code#14 = *merge_code::raster_code#4 -- _deref_pbuz1=_deref_pbuz2
ldy #0
lda (raster_code),y
sta (dest_code),y
// *dest_code++ = *raster_code++;
// [834] merge_code::dest_code#0 = ++ merge_code::dest_code#14 -- pbuz1=_inc_pbuz1
inc.z dest_code
bne !+
inc.z dest_code+1
!:
// [835] merge_code::raster_code#0 = ++ merge_code::raster_code#4 -- pbuz1=_inc_pbuz1
inc.z raster_code
bne !+
inc.z raster_code+1
!:
jmp __b1
}
// init_render_index
// Initialize the RENDER_INDEX table from sub-tables
init_render_index: {
.label __10 = $d
.label __11 = $d
.label render_index_xcol = 5
.label canvas_xcol = 3
.label canvas = $d
.label render_index = 5
.label x_col = $14
.label render_index_xcol_1 = $b
.label y_pos = $10
// Special column in sprite#9
.label render_ypos_table = 9
.label __12 = $d
// [837] phi from init_render_index to init_render_index::@1 [phi:init_render_index->init_render_index::@1]
// [837] phi init_render_index::render_index_xcol#0 = RENDER_INDEX [phi:init_render_index->init_render_index::@1#0] -- pbuz1=pbuc1
lda #<RENDER_INDEX
sta.z render_index_xcol
lda #>RENDER_INDEX
sta.z render_index_xcol+1
// [837] phi init_render_index::x_col#2 = 0 [phi:init_render_index->init_render_index::@1#1] -- vbuz1=vbuc1
lda #0
sta.z x_col
// init_render_index::@1
__b1:
// for(char x_col=0;x_col<26;x_col++)
// [838] if(init_render_index::x_col#2<$1a) goto init_render_index::@2 -- vbuz1_lt_vbuc1_then_la1
lda.z x_col
cmp #$1a
bcc __b2
// init_render_index::@3
// (RENDER_INDEX+24*0x100)[RENDER_OFFSET_YPOS_INC] = 0
// [839] *(RENDER_INDEX+$18*$100+RENDER_OFFSET_YPOS_INC) = 0 -- _deref_pbuc1=vbuc2
// Fix the first entry of the inc_offset in the last column (set it to point to 0,0,6,6...)
lda #0
sta RENDER_INDEX+$18*$100+RENDER_OFFSET_YPOS_INC
// (RENDER_INDEX+25*0x100)[RENDER_OFFSET_YPOS_INC] = 0
// [840] *(RENDER_INDEX+$19*$100+RENDER_OFFSET_YPOS_INC) = 0 -- _deref_pbuc1=vbuc2
sta RENDER_INDEX+$19*$100+RENDER_OFFSET_YPOS_INC
// init_render_index::@return
// }
// [841] return
rts
// init_render_index::@2
__b2:
// if(x_col>=24)
// [842] if(init_render_index::x_col#2<$18) goto init_render_index::@4 -- vbuz1_lt_vbuc1_then_la1
lda.z x_col
cmp #$18
bcc __b3
// [843] phi from init_render_index::@2 to init_render_index::@10 [phi:init_render_index::@2->init_render_index::@10]
// init_render_index::@10
// [844] phi from init_render_index::@10 to init_render_index::@4 [phi:init_render_index::@10->init_render_index::@4]
// [844] phi init_render_index::ypos_inc_offset#7 = $b [phi:init_render_index::@10->init_render_index::@4#0] -- vbuxx=vbuc1
ldx #$b
// [844] phi init_render_index::render_ypos_table#4 = RENDER_YPOS_9TH [phi:init_render_index::@10->init_render_index::@4#1] -- pwuz1=pwuc1
lda #<RENDER_YPOS_9TH
sta.z render_ypos_table
lda #>RENDER_YPOS_9TH
sta.z render_ypos_table+1
jmp __b4
// [844] phi from init_render_index::@2 to init_render_index::@4 [phi:init_render_index::@2->init_render_index::@4]
__b3:
// [844] phi init_render_index::ypos_inc_offset#7 = 0 [phi:init_render_index::@2->init_render_index::@4#0] -- vbuxx=vbuc1
ldx #0
// [844] phi init_render_index::render_ypos_table#4 = RENDER_YPOS [phi:init_render_index::@2->init_render_index::@4#1] -- pwuz1=pwuc1
lda #<RENDER_YPOS
sta.z render_ypos_table
lda #>RENDER_YPOS
sta.z render_ypos_table+1
// init_render_index::@4
__b4:
// char * canvas_xcol = RENDER_XCOLS[x_col]
// [845] init_render_index::$9 = init_render_index::x_col#2 << 1 -- vbuaa=vbuz1_rol_1
lda.z x_col
asl
// [846] init_render_index::canvas_xcol#0 = RENDER_XCOLS[init_render_index::$9] -- pbuz1=qbuc1_derefidx_vbuaa
tay
lda RENDER_XCOLS,y
sta.z canvas_xcol
lda RENDER_XCOLS+1,y
sta.z canvas_xcol+1
// [847] init_render_index::render_index_xcol#7 = init_render_index::render_index_xcol#0 -- pbuz1=pbuz2
lda.z render_index_xcol
sta.z render_index_xcol_1
lda.z render_index_xcol+1
sta.z render_index_xcol_1+1
// [848] phi from init_render_index::@4 to init_render_index::@5 [phi:init_render_index::@4->init_render_index::@5]
// [848] phi init_render_index::ypos_inc_offset#4 = init_render_index::ypos_inc_offset#7 [phi:init_render_index::@4->init_render_index::@5#0] -- register_copy
// [848] phi init_render_index::render_index_xcol#2 = init_render_index::render_index_xcol#7 [phi:init_render_index::@4->init_render_index::@5#1] -- register_copy
// [848] phi init_render_index::y_pos#2 = 0 [phi:init_render_index::@4->init_render_index::@5#2] -- vbuz1=vbuc1
lda #0
sta.z y_pos
// init_render_index::@5
__b5:
// for(char y_pos=0;y_pos<148;y_pos+=2)
// [849] if(init_render_index::y_pos#2<$94) goto init_render_index::@6 -- vbuz1_lt_vbuc1_then_la1
lda.z y_pos
cmp #$94
bcc __b6
// init_render_index::@7
// render_index += 0x100
// [850] init_render_index::render_index#1 = init_render_index::render_index_xcol#0 + $100 -- pbuz1=pbuz1_plus_vwuc1
lda.z render_index
clc
adc #<$100
sta.z render_index
lda.z render_index+1
adc #>$100
sta.z render_index+1
// for(char x_col=0;x_col<26;x_col++)
// [851] init_render_index::x_col#1 = ++ init_render_index::x_col#2 -- vbuz1=_inc_vbuz1
inc.z x_col
// [837] phi from init_render_index::@7 to init_render_index::@1 [phi:init_render_index::@7->init_render_index::@1]
// [837] phi init_render_index::render_index_xcol#0 = init_render_index::render_index#1 [phi:init_render_index::@7->init_render_index::@1#0] -- register_copy
// [837] phi init_render_index::x_col#2 = init_render_index::x_col#1 [phi:init_render_index::@7->init_render_index::@1#1] -- register_copy
jmp __b1
// init_render_index::@6
__b6:
// char * canvas = canvas_xcol + render_ypos_table[(unsigned int)y_pos]
// [852] init_render_index::$11 = (unsigned int)init_render_index::y_pos#2 -- vwuz1=_word_vbuz2
lda.z y_pos
sta.z __11
lda #0
sta.z __11+1
// [853] init_render_index::$10 = init_render_index::$11 << 1 -- vwuz1=vwuz1_rol_1
asl.z __10
rol.z __10+1
// [854] init_render_index::$12 = init_render_index::render_ypos_table#4 + init_render_index::$10 -- pwuz1=pwuz2_plus_vwuz1
clc
lda.z __12
adc.z render_ypos_table
sta.z __12
lda.z __12+1
adc.z render_ypos_table+1
sta.z __12+1
// [855] init_render_index::canvas#0 = init_render_index::canvas_xcol#0 + *init_render_index::$12 -- pbuz1=pbuz2_plus__deref_pwuz1
ldy #0
clc
lda (canvas),y
adc.z canvas_xcol
pha
iny
lda (canvas),y
adc.z canvas_xcol+1
sta.z canvas+1
pla
sta.z canvas
// BYTE0(canvas)
// [856] init_render_index::$5 = byte0 init_render_index::canvas#0 -- vbuaa=_byte0_pbuz1
// render_index_xcol[RENDER_OFFSET_CANVAS_LO] = BYTE0(canvas)
// [857] *init_render_index::render_index_xcol#2 = init_render_index::$5 -- _deref_pbuz1=vbuaa
ldy #0
sta (render_index_xcol_1),y
// BYTE1(canvas)
// [858] init_render_index::$6 = byte1 init_render_index::canvas#0 -- vbuaa=_byte1_pbuz1
lda.z canvas+1
// render_index_xcol[RENDER_OFFSET_CANVAS_HI] = BYTE1(canvas)
// [859] init_render_index::render_index_xcol#2[RENDER_OFFSET_CANVAS_HI] = init_render_index::$6 -- pbuz1_derefidx_vbuc1=vbuaa
ldy #RENDER_OFFSET_CANVAS_HI
sta (render_index_xcol_1),y
// render_index_xcol[RENDER_OFFSET_YPOS_INC] = ypos_inc_offset
// [860] init_render_index::render_index_xcol#2[RENDER_OFFSET_YPOS_INC] = init_render_index::ypos_inc_offset#4 -- pbuz1_derefidx_vbuc1=vbuxx
ldy #RENDER_OFFSET_YPOS_INC
txa
sta (render_index_xcol_1),y
// ypos_inc_offset += 2
// [861] init_render_index::ypos_inc_offset#2 = init_render_index::ypos_inc_offset#4 + 2 -- vbuxx=vbuxx_plus_2
inx
inx
// if(ypos_inc_offset>=23)
// [862] if(init_render_index::ypos_inc_offset#2<$17) goto init_render_index::@8 -- vbuxx_lt_vbuc1_then_la1
cpx #$17
bcc __b8
// init_render_index::@9
// ypos_inc_offset-=21
// [863] init_render_index::ypos_inc_offset#3 = init_render_index::ypos_inc_offset#2 - $15 -- vbuxx=vbuxx_minus_vbuc1
txa
axs #$15
// [864] phi from init_render_index::@6 init_render_index::@9 to init_render_index::@8 [phi:init_render_index::@6/init_render_index::@9->init_render_index::@8]
// [864] phi init_render_index::ypos_inc_offset#8 = init_render_index::ypos_inc_offset#2 [phi:init_render_index::@6/init_render_index::@9->init_render_index::@8#0] -- register_copy
// init_render_index::@8
__b8:
// render_index_xcol++;
// [865] init_render_index::render_index_xcol#1 = ++ init_render_index::render_index_xcol#2 -- pbuz1=_inc_pbuz1
inc.z render_index_xcol_1
bne !+
inc.z render_index_xcol_1+1
!:
// y_pos+=2
// [866] init_render_index::y_pos#1 = init_render_index::y_pos#2 + 2 -- vbuz1=vbuz1_plus_2
lda.z y_pos
clc
adc #2
sta.z y_pos
// [848] phi from init_render_index::@8 to init_render_index::@5 [phi:init_render_index::@8->init_render_index::@5]
// [848] phi init_render_index::ypos_inc_offset#4 = init_render_index::ypos_inc_offset#8 [phi:init_render_index::@8->init_render_index::@5#0] -- register_copy
// [848] phi init_render_index::render_index_xcol#2 = init_render_index::render_index_xcol#1 [phi:init_render_index::@8->init_render_index::@5#1] -- register_copy
// [848] phi init_render_index::y_pos#2 = init_render_index::y_pos#1 [phi:init_render_index::@8->init_render_index::@5#2] -- register_copy
jmp __b5
}
// splash_show
// Show the splash screen
splash_show: {
// Show splash screen
.label splash = $b
.label ypos = $10
.label xcol = $14
// [868] phi from splash_show to splash_show::@1 [phi:splash_show->splash_show::@1]
// [868] phi splash_show::splash#4 = SPLASH [phi:splash_show->splash_show::@1#0] -- pbuz1=pbuc1
lda #<SPLASH
sta.z splash
lda #>SPLASH
sta.z splash+1
// [868] phi splash_show::xcol#2 = 0 [phi:splash_show->splash_show::@1#1] -- vbuz1=vbuc1
lda #0
sta.z xcol
// splash_show::@1
__b1:
// for(char xcol=0;xcol<25;xcol++)
// [869] if(splash_show::xcol#2<$19) goto splash_show::@2 -- vbuz1_lt_vbuc1_then_la1
lda.z xcol
cmp #$19
bcc __b4
// splash_show::@return
// }
// [870] return
rts
// [871] phi from splash_show::@1 to splash_show::@2 [phi:splash_show::@1->splash_show::@2]
__b4:
// [871] phi splash_show::splash#2 = splash_show::splash#4 [phi:splash_show::@1->splash_show::@2#0] -- register_copy
// [871] phi splash_show::ypos#2 = 0 [phi:splash_show::@1->splash_show::@2#1] -- vbuz1=vbuc1
lda #0
sta.z ypos
// splash_show::@2
__b2:
// for(char ypos=0;ypos<147;ypos++)
// [872] if(splash_show::ypos#2<$93) goto splash_show::@3 -- vbuz1_lt_vbuc1_then_la1
lda.z ypos
cmp #$93
bcc __b3
// splash_show::@4
// for(char xcol=0;xcol<25;xcol++)
// [873] splash_show::xcol#1 = ++ splash_show::xcol#2 -- vbuz1=_inc_vbuz1
inc.z xcol
// [868] phi from splash_show::@4 to splash_show::@1 [phi:splash_show::@4->splash_show::@1]
// [868] phi splash_show::splash#4 = splash_show::splash#2 [phi:splash_show::@4->splash_show::@1#0] -- register_copy
// [868] phi splash_show::xcol#2 = splash_show::xcol#1 [phi:splash_show::@4->splash_show::@1#1] -- register_copy
jmp __b1
// splash_show::@3
__b3:
// char pixels = *splash++
// [874] splash_show::pixels#0 = *splash_show::splash#2 -- vbuxx=_deref_pbuz1
// Render 8px x 1px
ldy #0
lda (splash),y
tax
// [875] splash_show::splash#1 = ++ splash_show::splash#2 -- pbuz1=_inc_pbuz1
inc.z splash
bne !+
inc.z splash+1
!:
// render(xcol, ypos, pixels)
// [876] render::xcol#1 = splash_show::xcol#2
// [877] render::ypos#1 = splash_show::ypos#2
// [878] render::pixels#1 = splash_show::pixels#0 -- vbuz1=vbuxx
stx.z render.pixels
// [879] call render
// [999] phi from splash_show::@3 to render [phi:splash_show::@3->render]
// [999] phi render::pixels#4 = render::pixels#1 [phi:splash_show::@3->render#0] -- register_copy
// [999] phi render::xcol#2 = render::xcol#1 [phi:splash_show::@3->render#1] -- register_copy
// [999] phi render::ypos#2 = render::ypos#1 [phi:splash_show::@3->render#2] -- register_copy
jsr render
// splash_show::@5
// for(char ypos=0;ypos<147;ypos++)
// [880] splash_show::ypos#1 = ++ splash_show::ypos#2 -- vbuz1=_inc_vbuz1
inc.z ypos
// [871] phi from splash_show::@5 to splash_show::@2 [phi:splash_show::@5->splash_show::@2]
// [871] phi splash_show::splash#2 = splash_show::splash#1 [phi:splash_show::@5->splash_show::@2#0] -- register_copy
// [871] phi splash_show::ypos#2 = splash_show::ypos#1 [phi:splash_show::@5->splash_show::@2#1] -- register_copy
jmp __b2
}
// init_bobs_restore
// Initialize bobs_restore with data to prevent crash on the first call
init_bobs_restore: {
.label CANVAS_HIDDEN = $ea00
.label bob_restore = 9
// [882] phi from init_bobs_restore to init_bobs_restore::@1 [phi:init_bobs_restore->init_bobs_restore::@1]
// [882] phi init_bobs_restore::bob_restore#5 = bobs_restore [phi:init_bobs_restore->init_bobs_restore::@1#0] -- pbuz1=pbuc1
lda #<bobs_restore
sta.z bob_restore
lda #>bobs_restore
sta.z bob_restore+1
// [882] phi init_bobs_restore::bob#2 = 0 [phi:init_bobs_restore->init_bobs_restore::@1#1] -- vbuxx=vbuc1
ldx #0
// init_bobs_restore::@1
__b1:
// for(char bob=0;bob<NUM_BOBS*2;bob++)
// [883] if(init_bobs_restore::bob#2<NUM_BOBS*2) goto init_bobs_restore::@3 -- vbuxx_lt_vbuc1_then_la1
cpx #NUM_BOBS*2
bcc __b2
// init_bobs_restore::@2
// logic_tile_ptr = LEVEL_TILES + 64*18 + 12
// [884] logic_tile_ptr = LEVEL_TILES+(unsigned int)$40*$12+$c -- pbuz1=pbuc1
// Also set the logic tile to something sane
lda #<LEVEL_TILES+$40*$12+$c
sta.z logic_tile_ptr
lda #>LEVEL_TILES+$40*$12+$c
sta.z logic_tile_ptr+1
// logic_tile_xcol = 12
// [885] logic_tile_xcol = $c -- vbuz1=vbuc1
lda #$c
sta.z logic_tile_xcol
// logic_tile_yfine = 35
// [886] logic_tile_yfine = $23 -- vbuz1=vbuc1
lda #$23
sta.z logic_tile_yfine
// init_bobs_restore::@return
// }
// [887] return
rts
// [888] phi from init_bobs_restore::@1 to init_bobs_restore::@3 [phi:init_bobs_restore::@1->init_bobs_restore::@3]
__b2:
// [888] phi init_bobs_restore::i#2 = 0 [phi:init_bobs_restore::@1->init_bobs_restore::@3#0] -- vbuyy=vbuc1
ldy #0
// init_bobs_restore::@3
__b3:
// for(char i=0;i<SIZE_BOB_RESTORE;i++)
// [889] if(init_bobs_restore::i#2<SIZE_BOB_RESTORE) goto init_bobs_restore::@4 -- vbuyy_lt_vbuc1_then_la1
cpy #SIZE_BOB_RESTORE
bcc __b4
// init_bobs_restore::@5
// bob_restore[0] = BYTE0(CANVAS_HIDDEN)
// [890] *init_bobs_restore::bob_restore#5 = 0 -- _deref_pbuz1=vbuc1
lda #0
tay
sta (bob_restore),y
// bob_restore[1] = BYTE1(CANVAS_HIDDEN)
// [891] init_bobs_restore::bob_restore#5[1] = byte1 init_bobs_restore::CANVAS_HIDDEN -- pbuz1_derefidx_vbuc1=vbuc2
lda #>CANVAS_HIDDEN
ldy #1
sta (bob_restore),y
// bob_restore[3] = BYTE0(CANVAS_HIDDEN)
// [892] init_bobs_restore::bob_restore#5[3] = 0 -- pbuz1_derefidx_vbuc1=vbuc2
lda #0
ldy #3
sta (bob_restore),y
// bob_restore[4] = BYTE1(CANVAS_HIDDEN)
// [893] init_bobs_restore::bob_restore#5[4] = byte1 init_bobs_restore::CANVAS_HIDDEN -- pbuz1_derefidx_vbuc1=vbuc2
lda #>CANVAS_HIDDEN
ldy #4
sta (bob_restore),y
// bob_restore += SIZE_BOB_RESTORE
// [894] init_bobs_restore::bob_restore#1 = init_bobs_restore::bob_restore#5 + SIZE_BOB_RESTORE -- pbuz1=pbuz1_plus_vbuc1
lda #SIZE_BOB_RESTORE
clc
adc.z bob_restore
sta.z bob_restore
bcc !+
inc.z bob_restore+1
!:
// for(char bob=0;bob<NUM_BOBS*2;bob++)
// [895] init_bobs_restore::bob#1 = ++ init_bobs_restore::bob#2 -- vbuxx=_inc_vbuxx
inx
// [882] phi from init_bobs_restore::@5 to init_bobs_restore::@1 [phi:init_bobs_restore::@5->init_bobs_restore::@1]
// [882] phi init_bobs_restore::bob_restore#5 = init_bobs_restore::bob_restore#1 [phi:init_bobs_restore::@5->init_bobs_restore::@1#0] -- register_copy
// [882] phi init_bobs_restore::bob#2 = init_bobs_restore::bob#1 [phi:init_bobs_restore::@5->init_bobs_restore::@1#1] -- register_copy
jmp __b1
// init_bobs_restore::@4
__b4:
// bob_restore[i] = 0
// [896] init_bobs_restore::bob_restore#5[init_bobs_restore::i#2] = 0 -- pbuz1_derefidx_vbuyy=vbuc1
lda #0
sta (bob_restore),y
// for(char i=0;i<SIZE_BOB_RESTORE;i++)
// [897] init_bobs_restore::i#1 = ++ init_bobs_restore::i#2 -- vbuyy=_inc_vbuyy
iny
// [888] phi from init_bobs_restore::@4 to init_bobs_restore::@3 [phi:init_bobs_restore::@4->init_bobs_restore::@3]
// [888] phi init_bobs_restore::i#2 = init_bobs_restore::i#1 [phi:init_bobs_restore::@4->init_bobs_restore::@3#0] -- register_copy
jmp __b3
}
// init_sprite_pointers
// Initialize sprite pointers on all screens (in both graphics banks)
init_sprite_pointers: {
.const SPRITE_ID_0 = $ff&(SPRITES_1&$3fff)/$40
.label sprites_ptr_1 = 9
.label sprites_ptr_2 = 7
// [899] phi from init_sprite_pointers to init_sprite_pointers::@1 [phi:init_sprite_pointers->init_sprite_pointers::@1]
// [899] phi init_sprite_pointers::sprites_ptr_2#5 = SCREENS_2+OFFSET_SPRITE_PTRS [phi:init_sprite_pointers->init_sprite_pointers::@1#0] -- pbuz1=pbuc1
lda #<SCREENS_2+OFFSET_SPRITE_PTRS
sta.z sprites_ptr_2
lda #>SCREENS_2+OFFSET_SPRITE_PTRS
sta.z sprites_ptr_2+1
// [899] phi init_sprite_pointers::sprites_ptr_1#5 = SCREENS_1+OFFSET_SPRITE_PTRS [phi:init_sprite_pointers->init_sprite_pointers::@1#1] -- pbuz1=pbuc1
lda #<SCREENS_1+OFFSET_SPRITE_PTRS
sta.z sprites_ptr_1
lda #>SCREENS_1+OFFSET_SPRITE_PTRS
sta.z sprites_ptr_1+1
// [899] phi init_sprite_pointers::screen#2 = 0 [phi:init_sprite_pointers->init_sprite_pointers::@1#2] -- vbuxx=vbuc1
ldx #0
// init_sprite_pointers::@1
__b1:
// for(char screen=0;screen<14;screen++)
// [900] if(init_sprite_pointers::screen#2<$e) goto init_sprite_pointers::@2 -- vbuxx_lt_vbuc1_then_la1
cpx #$e
bcc __b4
// init_sprite_pointers::@return
// }
// [901] return
rts
// [902] phi from init_sprite_pointers::@1 to init_sprite_pointers::@2 [phi:init_sprite_pointers::@1->init_sprite_pointers::@2]
__b4:
// [902] phi init_sprite_pointers::sprite#2 = 0 [phi:init_sprite_pointers::@1->init_sprite_pointers::@2#0] -- vbuyy=vbuc1
ldy #0
// init_sprite_pointers::@2
__b2:
// for(char sprite=0; sprite<8; sprite++)
// [903] if(init_sprite_pointers::sprite#2<8) goto init_sprite_pointers::@3 -- vbuyy_lt_vbuc1_then_la1
cpy #8
bcc __b3
// init_sprite_pointers::@4
// sprites_ptr_1 += 0x400
// [904] init_sprite_pointers::sprites_ptr_1#1 = init_sprite_pointers::sprites_ptr_1#5 + $400 -- pbuz1=pbuz1_plus_vwuc1
lda.z sprites_ptr_1
clc
adc #<$400
sta.z sprites_ptr_1
lda.z sprites_ptr_1+1
adc #>$400
sta.z sprites_ptr_1+1
// sprites_ptr_2 += 0x400
// [905] init_sprite_pointers::sprites_ptr_2#1 = init_sprite_pointers::sprites_ptr_2#5 + $400 -- pbuz1=pbuz1_plus_vwuc1
lda.z sprites_ptr_2
clc
adc #<$400
sta.z sprites_ptr_2
lda.z sprites_ptr_2+1
adc #>$400
sta.z sprites_ptr_2+1
// for(char screen=0;screen<14;screen++)
// [906] init_sprite_pointers::screen#1 = ++ init_sprite_pointers::screen#2 -- vbuxx=_inc_vbuxx
inx
// [899] phi from init_sprite_pointers::@4 to init_sprite_pointers::@1 [phi:init_sprite_pointers::@4->init_sprite_pointers::@1]
// [899] phi init_sprite_pointers::sprites_ptr_2#5 = init_sprite_pointers::sprites_ptr_2#1 [phi:init_sprite_pointers::@4->init_sprite_pointers::@1#0] -- register_copy
// [899] phi init_sprite_pointers::sprites_ptr_1#5 = init_sprite_pointers::sprites_ptr_1#1 [phi:init_sprite_pointers::@4->init_sprite_pointers::@1#1] -- register_copy
// [899] phi init_sprite_pointers::screen#2 = init_sprite_pointers::screen#1 [phi:init_sprite_pointers::@4->init_sprite_pointers::@1#2] -- register_copy
jmp __b1
// init_sprite_pointers::@3
__b3:
// SPRITE_ID_0 + screen
// [907] init_sprite_pointers::$2 = init_sprite_pointers::SPRITE_ID_0 + init_sprite_pointers::screen#2 -- vbuaa=vbuc1_plus_vbuxx
txa
clc
adc #SPRITE_ID_0
// char sprite_id = SPRITE_ID_0 + screen + sprites_id[sprite]
// [908] init_sprite_pointers::sprite_id#0 = init_sprite_pointers::$2 + init_sprite_pointers::sprites_id[init_sprite_pointers::sprite#2] -- vbuaa=vbuaa_plus_pbuc1_derefidx_vbuyy
clc
adc sprites_id,y
// sprites_ptr_1[sprite] = sprite_id
// [909] init_sprite_pointers::sprites_ptr_1#5[init_sprite_pointers::sprite#2] = init_sprite_pointers::sprite_id#0 -- pbuz1_derefidx_vbuyy=vbuaa
sta (sprites_ptr_1),y
// sprites_ptr_2[sprite] = sprite_id
// [910] init_sprite_pointers::sprites_ptr_2#5[init_sprite_pointers::sprite#2] = init_sprite_pointers::sprite_id#0 -- pbuz1_derefidx_vbuyy=vbuaa
sta (sprites_ptr_2),y
// for(char sprite=0; sprite<8; sprite++)
// [911] init_sprite_pointers::sprite#1 = ++ init_sprite_pointers::sprite#2 -- vbuyy=_inc_vbuyy
iny
// [902] phi from init_sprite_pointers::@3 to init_sprite_pointers::@2 [phi:init_sprite_pointers::@3->init_sprite_pointers::@2]
// [902] phi init_sprite_pointers::sprite#2 = init_sprite_pointers::sprite#1 [phi:init_sprite_pointers::@3->init_sprite_pointers::@2#0] -- register_copy
jmp __b2
.segment Data
sprites_id: .byte 0, $70, $60, $50, $40, $30, $20, $10
}
.segment Code
// memcpy
// Copy block of memory (forwards)
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
// void * memcpy(void *destination, void *source, unsigned int num)
memcpy: {
.label destination = INTRO_MUSIC_CRUNCHED_UPPER
.label source = INTRO_MUSIC_CRUNCHED
.label src_end = source+INTRO_MUSIC_CRUNCHED_SIZE
.label dst = 9
.label src = 7
// [913] phi from memcpy to memcpy::@1 [phi:memcpy->memcpy::@1]
// [913] phi memcpy::dst#2 = (char *)memcpy::destination#0 [phi:memcpy->memcpy::@1#0] -- pbuz1=pbuc1
lda #<destination
sta.z dst
lda #>destination
sta.z dst+1
// [913] phi memcpy::src#2 = (char *)memcpy::source#0 [phi:memcpy->memcpy::@1#1] -- pbuz1=pbuc1
lda #<source
sta.z src
lda #>source
sta.z src+1
// memcpy::@1
__b1:
// while(src!=src_end)
// [914] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuc1_then_la1
lda.z src+1
cmp #>src_end
bne __b2
lda.z src
cmp #<src_end
bne __b2
// memcpy::@return
// }
// [915] return
rts
// memcpy::@2
__b2:
// *dst++ = *src++
// [916] *memcpy::dst#2 = *memcpy::src#2 -- _deref_pbuz1=_deref_pbuz2
ldy #0
lda (src),y
sta (dst),y
// *dst++ = *src++;
// [917] memcpy::dst#1 = ++ memcpy::dst#2 -- pbuz1=_inc_pbuz1
inc.z dst
bne !+
inc.z dst+1
!:
// [918] memcpy::src#1 = ++ memcpy::src#2 -- pbuz1=_inc_pbuz1
inc.z src
bne !+
inc.z src+1
!:
// [913] phi from memcpy::@2 to memcpy::@1 [phi:memcpy::@2->memcpy::@1]
// [913] phi memcpy::dst#2 = memcpy::dst#1 [phi:memcpy::@2->memcpy::@1#0] -- register_copy
// [913] phi memcpy::src#2 = memcpy::src#1 [phi:memcpy::@2->memcpy::@1#1] -- register_copy
jmp __b1
}
// joyinit
// Prepare for joystick control
joyinit: {
// CIA1->PORT_A_DDR = 0x00
// [919] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 0 -- _deref_pbuc1=vbuc2
// Joystick Read Mode
lda #0
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR
// joyinit::@return
// }
// [920] return
rts
}
// joyfire
// Return 1 if joy #2 fire is pressed
joyfire: {
// CIA1->PORT_A & 0x10
// [921] joyfire::$0 = *((char *)CIA1) & $10 -- vbuaa=_deref_pbuc1_band_vbuc2
lda #$10
and CIA1
// if( (CIA1->PORT_A & 0x10) == 0 )
// [922] if(joyfire::$0==0) goto joyfire::@1 -- vbuaa_eq_0_then_la1
cmp #0
beq __b1
// [924] phi from joyfire to joyfire::@return [phi:joyfire->joyfire::@return]
// [924] phi joyfire::return#4 = 0 [phi:joyfire->joyfire::@return#0] -- vbuaa=vbuc1
lda #0
rts
// [923] phi from joyfire to joyfire::@1 [phi:joyfire->joyfire::@1]
// joyfire::@1
__b1:
// [924] phi from joyfire::@1 to joyfire::@return [phi:joyfire::@1->joyfire::@return]
// [924] phi joyfire::return#4 = 1 [phi:joyfire::@1->joyfire::@return#0] -- vbuaa=vbuc1
lda #1
// joyfire::@return
// }
// [925] return
rts
}
// init_level_tile_directions
// Initialize the LEVEL_TILES_DIRECTIONS table with bits representing all open (non-blocked) movement directions from a tile
init_level_tile_directions: {
.label directions = 9
.label ytile = $14
.label open_directions = $f
.label xtile = $10
// [927] phi from init_level_tile_directions to init_level_tile_directions::@1 [phi:init_level_tile_directions->init_level_tile_directions::@1]
// [927] phi init_level_tile_directions::directions#7 = LEVEL_TILES_DIRECTIONS [phi:init_level_tile_directions->init_level_tile_directions::@1#0] -- pbuz1=pbuc1
lda #<LEVEL_TILES_DIRECTIONS
sta.z directions
lda #>LEVEL_TILES_DIRECTIONS
sta.z directions+1
// [927] phi init_level_tile_directions::ytile#15 = 0 [phi:init_level_tile_directions->init_level_tile_directions::@1#1] -- vbuz1=vbuc1
lda #0
sta.z ytile
// init_level_tile_directions::@1
__b1:
// for(char ytile=0;ytile<37;ytile++)
// [928] if(init_level_tile_directions::ytile#15<$25) goto init_level_tile_directions::@2 -- vbuz1_lt_vbuc1_then_la1
lda.z ytile
cmp #$25
bcc __b4
// init_level_tile_directions::@return
// }
// [929] return
rts
// [930] phi from init_level_tile_directions::@1 to init_level_tile_directions::@2 [phi:init_level_tile_directions::@1->init_level_tile_directions::@2]
__b4:
// [930] phi init_level_tile_directions::xtile#10 = 0 [phi:init_level_tile_directions::@1->init_level_tile_directions::@2#0] -- vbuz1=vbuc1
lda #0
sta.z xtile
// init_level_tile_directions::@2
__b2:
// for(char xtile=0; xtile<50; xtile++)
// [931] if(init_level_tile_directions::xtile#10<$32) goto init_level_tile_directions::@3 -- vbuz1_lt_vbuc1_then_la1
lda.z xtile
cmp #$32
bcc __b3
// init_level_tile_directions::@4
// directions += 0x40
// [932] init_level_tile_directions::directions#1 = init_level_tile_directions::directions#7 + $40 -- pbuz1=pbuz1_plus_vbuc1
lda #$40
clc
adc.z directions
sta.z directions
bcc !+
inc.z directions+1
!:
// for(char ytile=0;ytile<37;ytile++)
// [933] init_level_tile_directions::ytile#1 = ++ init_level_tile_directions::ytile#15 -- vbuz1=_inc_vbuz1
inc.z ytile
// [927] phi from init_level_tile_directions::@4 to init_level_tile_directions::@1 [phi:init_level_tile_directions::@4->init_level_tile_directions::@1]
// [927] phi init_level_tile_directions::directions#7 = init_level_tile_directions::directions#1 [phi:init_level_tile_directions::@4->init_level_tile_directions::@1#0] -- register_copy
// [927] phi init_level_tile_directions::ytile#15 = init_level_tile_directions::ytile#1 [phi:init_level_tile_directions::@4->init_level_tile_directions::@1#1] -- register_copy
jmp __b1
// init_level_tile_directions::@3
__b3:
// level_tile_get(xtile-1, ytile)
// [934] level_tile_get::xtile#0 = init_level_tile_directions::xtile#10 - 1 -- vbuxx=vbuz1_minus_1
ldx.z xtile
dex
// [935] level_tile_get::ytile#0 = init_level_tile_directions::ytile#15 -- vbuaa=vbuz1
lda.z ytile
// [936] call level_tile_get
// [1018] phi from init_level_tile_directions::@3 to level_tile_get [phi:init_level_tile_directions::@3->level_tile_get]
// [1018] phi level_tile_get::ytile#4 = level_tile_get::ytile#0 [phi:init_level_tile_directions::@3->level_tile_get#0] -- register_copy
// [1018] phi level_tile_get::xtile#4 = level_tile_get::xtile#0 [phi:init_level_tile_directions::@3->level_tile_get#1] -- register_copy
jsr level_tile_get
// level_tile_get(xtile-1, ytile)
// [937] level_tile_get::return#3 = level_tile_get::return#2
// init_level_tile_directions::@13
// [938] init_level_tile_directions::$3 = level_tile_get::return#3 -- vbuxx=vbuaa
tax
// if(TILES_TYPE[level_tile_get(xtile-1, ytile)]!=WALL)
// [939] if(TILES_TYPE[init_level_tile_directions::$3]==WALL) goto init_level_tile_directions::@5 -- pbuc1_derefidx_vbuxx_eq_vbuc2_then_la1
lda TILES_TYPE,x
cmp #WALL
beq __b9
// [940] phi from init_level_tile_directions::@13 to init_level_tile_directions::@9 [phi:init_level_tile_directions::@13->init_level_tile_directions::@9]
// init_level_tile_directions::@9
// [941] phi from init_level_tile_directions::@9 to init_level_tile_directions::@5 [phi:init_level_tile_directions::@9->init_level_tile_directions::@5]
// [941] phi init_level_tile_directions::open_directions#11 = LEFT [phi:init_level_tile_directions::@9->init_level_tile_directions::@5#0] -- vbuz1=vbuc1
lda #LEFT
sta.z open_directions
jmp __b5
// [941] phi from init_level_tile_directions::@13 to init_level_tile_directions::@5 [phi:init_level_tile_directions::@13->init_level_tile_directions::@5]
__b9:
// [941] phi init_level_tile_directions::open_directions#11 = 0 [phi:init_level_tile_directions::@13->init_level_tile_directions::@5#0] -- vbuz1=vbuc1
lda #0
sta.z open_directions
// init_level_tile_directions::@5
__b5:
// level_tile_get(xtile+1, ytile)
// [942] level_tile_get::xtile#1 = init_level_tile_directions::xtile#10 + 1 -- vbuxx=vbuz1_plus_1
ldx.z xtile
inx
// [943] level_tile_get::ytile#1 = init_level_tile_directions::ytile#15 -- vbuaa=vbuz1
lda.z ytile
// [944] call level_tile_get
// [1018] phi from init_level_tile_directions::@5 to level_tile_get [phi:init_level_tile_directions::@5->level_tile_get]
// [1018] phi level_tile_get::ytile#4 = level_tile_get::ytile#1 [phi:init_level_tile_directions::@5->level_tile_get#0] -- register_copy
// [1018] phi level_tile_get::xtile#4 = level_tile_get::xtile#1 [phi:init_level_tile_directions::@5->level_tile_get#1] -- register_copy
jsr level_tile_get
// level_tile_get(xtile+1, ytile)
// [945] level_tile_get::return#4 = level_tile_get::return#2
// init_level_tile_directions::@14
// [946] init_level_tile_directions::$7 = level_tile_get::return#4 -- vbuxx=vbuaa
tax
// if(TILES_TYPE[level_tile_get(xtile+1, ytile)]!=WALL)
// [947] if(TILES_TYPE[init_level_tile_directions::$7]==WALL) goto init_level_tile_directions::@6 -- pbuc1_derefidx_vbuxx_eq_vbuc2_then_la1
lda TILES_TYPE,x
cmp #WALL
beq __b6
// init_level_tile_directions::@10
// open_directions |= RIGHT
// [948] init_level_tile_directions::open_directions#2 = init_level_tile_directions::open_directions#11 | RIGHT -- vbuz1=vbuz1_bor_vbuc1
lda #RIGHT
ora.z open_directions
sta.z open_directions
// [949] phi from init_level_tile_directions::@10 init_level_tile_directions::@14 to init_level_tile_directions::@6 [phi:init_level_tile_directions::@10/init_level_tile_directions::@14->init_level_tile_directions::@6]
// [949] phi init_level_tile_directions::open_directions#12 = init_level_tile_directions::open_directions#2 [phi:init_level_tile_directions::@10/init_level_tile_directions::@14->init_level_tile_directions::@6#0] -- register_copy
// init_level_tile_directions::@6
__b6:
// level_tile_get(xtile, ytile-1)
// [950] level_tile_get::ytile#2 = init_level_tile_directions::ytile#15 - 1 -- vbuaa=vbuz1_minus_1
lda.z ytile
sec
sbc #1
// [951] level_tile_get::xtile#2 = init_level_tile_directions::xtile#10 -- vbuxx=vbuz1
ldx.z xtile
// [952] call level_tile_get
// [1018] phi from init_level_tile_directions::@6 to level_tile_get [phi:init_level_tile_directions::@6->level_tile_get]
// [1018] phi level_tile_get::ytile#4 = level_tile_get::ytile#2 [phi:init_level_tile_directions::@6->level_tile_get#0] -- register_copy
// [1018] phi level_tile_get::xtile#4 = level_tile_get::xtile#2 [phi:init_level_tile_directions::@6->level_tile_get#1] -- register_copy
jsr level_tile_get
// level_tile_get(xtile, ytile-1)
// [953] level_tile_get::return#10 = level_tile_get::return#2
// init_level_tile_directions::@15
// [954] init_level_tile_directions::$11 = level_tile_get::return#10
// if(TILES_TYPE[level_tile_get(xtile, ytile-1)]!=WALL)
// [955] if(TILES_TYPE[init_level_tile_directions::$11]==WALL) goto init_level_tile_directions::@7 -- pbuc1_derefidx_vbuaa_eq_vbuc2_then_la1
tay
lda TILES_TYPE,y
cmp #WALL
beq __b7
// init_level_tile_directions::@11
// open_directions |= UP
// [956] init_level_tile_directions::open_directions#3 = init_level_tile_directions::open_directions#12 | UP -- vbuz1=vbuz1_bor_vbuc1
lda #UP
ora.z open_directions
sta.z open_directions
// [957] phi from init_level_tile_directions::@11 init_level_tile_directions::@15 to init_level_tile_directions::@7 [phi:init_level_tile_directions::@11/init_level_tile_directions::@15->init_level_tile_directions::@7]
// [957] phi init_level_tile_directions::open_directions#13 = init_level_tile_directions::open_directions#3 [phi:init_level_tile_directions::@11/init_level_tile_directions::@15->init_level_tile_directions::@7#0] -- register_copy
// init_level_tile_directions::@7
__b7:
// level_tile_get(xtile, ytile+1)
// [958] level_tile_get::ytile#3 = init_level_tile_directions::ytile#15 + 1 -- vbuaa=vbuz1_plus_1
lda.z ytile
clc
adc #1
// [959] level_tile_get::xtile#3 = init_level_tile_directions::xtile#10 -- vbuxx=vbuz1
ldx.z xtile
// [960] call level_tile_get
// [1018] phi from init_level_tile_directions::@7 to level_tile_get [phi:init_level_tile_directions::@7->level_tile_get]
// [1018] phi level_tile_get::ytile#4 = level_tile_get::ytile#3 [phi:init_level_tile_directions::@7->level_tile_get#0] -- register_copy
// [1018] phi level_tile_get::xtile#4 = level_tile_get::xtile#3 [phi:init_level_tile_directions::@7->level_tile_get#1] -- register_copy
jsr level_tile_get
// level_tile_get(xtile, ytile+1)
// [961] level_tile_get::return#11 = level_tile_get::return#2
// init_level_tile_directions::@16
// [962] init_level_tile_directions::$15 = level_tile_get::return#11
// if(TILES_TYPE[level_tile_get(xtile, ytile+1)]!=WALL)
// [963] if(TILES_TYPE[init_level_tile_directions::$15]==WALL) goto init_level_tile_directions::@8 -- pbuc1_derefidx_vbuaa_eq_vbuc2_then_la1
tay
lda TILES_TYPE,y
cmp #WALL
beq __b8
// init_level_tile_directions::@12
// open_directions |= DOWN
// [964] init_level_tile_directions::open_directions#4 = init_level_tile_directions::open_directions#13 | DOWN -- vbuz1=vbuz1_bor_vbuc1
lda #DOWN
ora.z open_directions
sta.z open_directions
// [965] phi from init_level_tile_directions::@12 init_level_tile_directions::@16 to init_level_tile_directions::@8 [phi:init_level_tile_directions::@12/init_level_tile_directions::@16->init_level_tile_directions::@8]
// [965] phi init_level_tile_directions::open_directions#8 = init_level_tile_directions::open_directions#4 [phi:init_level_tile_directions::@12/init_level_tile_directions::@16->init_level_tile_directions::@8#0] -- register_copy
// init_level_tile_directions::@8
__b8:
// directions[xtile] = open_directions
// [966] init_level_tile_directions::directions#7[init_level_tile_directions::xtile#10] = init_level_tile_directions::open_directions#8 -- pbuz1_derefidx_vbuz2=vbuz3
lda.z open_directions
ldy.z xtile
sta (directions),y
// for(char xtile=0; xtile<50; xtile++)
// [967] init_level_tile_directions::xtile#1 = ++ init_level_tile_directions::xtile#10 -- vbuz1=_inc_vbuz1
inc.z xtile
// [930] phi from init_level_tile_directions::@8 to init_level_tile_directions::@2 [phi:init_level_tile_directions::@8->init_level_tile_directions::@2]
// [930] phi init_level_tile_directions::xtile#10 = init_level_tile_directions::xtile#1 [phi:init_level_tile_directions::@8->init_level_tile_directions::@2#0] -- register_copy
jmp __b2
}
// level_show
// Show the level by rendering all tiles
// Returns the number of pills on the level
level_show: {
.label return = 9
.label level = 7
.label ytile = $10
.label tile_right = 2
.label xtile = $13
.label count = 9
.label xcol = $f
// [969] phi from level_show to level_show::@1 [phi:level_show->level_show::@1]
// [969] phi level_show::level#8 = LEVEL_TILES [phi:level_show->level_show::@1#0] -- pbuz1=pbuc1
lda #<LEVEL_TILES
sta.z level
lda #>LEVEL_TILES
sta.z level+1
// [969] phi level_show::count#12 = 0 [phi:level_show->level_show::@1#1] -- vwuz1=vwuc1
lda #<0
sta.z count
sta.z count+1
// [969] phi level_show::ytile#2 = 0 [phi:level_show->level_show::@1#2] -- vbuz1=vbuc1
sta.z ytile
// level_show::@1
__b1:
// for(char ytile=0;ytile<37;ytile++)
// [970] if(level_show::ytile#2<$25) goto level_show::@2 -- vbuz1_lt_vbuc1_then_la1
lda.z ytile
cmp #$25
bcc __b4
// level_show::@return
// }
// [971] return
rts
// [972] phi from level_show::@1 to level_show::@2 [phi:level_show::@1->level_show::@2]
__b4:
// [972] phi level_show::count#10 = level_show::count#12 [phi:level_show::@1->level_show::@2#0] -- register_copy
// [972] phi level_show::xtile#3 = 0 [phi:level_show::@1->level_show::@2#1] -- vbuz1=vbuc1
lda #0
sta.z xtile
// [972] phi level_show::xcol#2 = 0 [phi:level_show::@1->level_show::@2#2] -- vbuz1=vbuc1
sta.z xcol
// level_show::@2
__b2:
// for(char xcol=0, xtile=0; xcol<25; xcol++)
// [973] if(level_show::xcol#2<$19) goto level_show::@3 -- vbuz1_lt_vbuc1_then_la1
lda.z xcol
cmp #$19
bcc __b3
// level_show::@4
// level += 0x40
// [974] level_show::level#1 = level_show::level#8 + $40 -- pbuz1=pbuz1_plus_vbuc1
lda #$40
clc
adc.z level
sta.z level
bcc !+
inc.z level+1
!:
// for(char ytile=0;ytile<37;ytile++)
// [975] level_show::ytile#1 = ++ level_show::ytile#2 -- vbuz1=_inc_vbuz1
inc.z ytile
// [969] phi from level_show::@4 to level_show::@1 [phi:level_show::@4->level_show::@1]
// [969] phi level_show::level#8 = level_show::level#1 [phi:level_show::@4->level_show::@1#0] -- register_copy
// [969] phi level_show::count#12 = level_show::count#10 [phi:level_show::@4->level_show::@1#1] -- register_copy
// [969] phi level_show::ytile#2 = level_show::ytile#1 [phi:level_show::@4->level_show::@1#2] -- register_copy
jmp __b1
// level_show::@3
__b3:
// char tile_left = level[xtile++]
// [976] level_show::tile_left#0 = level_show::level#8[level_show::xtile#3] -- vbuxx=pbuz1_derefidx_vbuz2
ldy.z xtile
lda (level),y
tax
// [977] level_show::xtile#1 = ++ level_show::xtile#3 -- vbuyy=_inc_vbuz1
iny
// if(TILES_TYPE[tile_left]==PILL)
// [978] if(TILES_TYPE[level_show::tile_left#0]!=PILL) goto level_show::@5 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1
lda TILES_TYPE,x
cmp #PILL
bne __b5
// level_show::@7
// count++;
// [979] level_show::count#1 = ++ level_show::count#10 -- vwuz1=_inc_vwuz1
inc.z count
bne !+
inc.z count+1
!:
// [980] phi from level_show::@3 level_show::@7 to level_show::@5 [phi:level_show::@3/level_show::@7->level_show::@5]
// [980] phi level_show::count#5 = level_show::count#10 [phi:level_show::@3/level_show::@7->level_show::@5#0] -- register_copy
// level_show::@5
__b5:
// char tile_right = level[xtile++]
// [981] level_show::tile_right#0 = level_show::level#8[level_show::xtile#1] -- vbuz1=pbuz2_derefidx_vbuyy
lda (level),y
sta.z tile_right
// [982] level_show::xtile#2 = ++ level_show::xtile#1 -- vbuz1=_inc_vbuyy
iny
sty.z xtile
// if(TILES_TYPE[tile_right]==PILL)
// [983] if(TILES_TYPE[level_show::tile_right#0]!=PILL) goto level_show::@6 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
lda #PILL
ldy.z tile_right
cmp TILES_TYPE,y
bne __b6
// level_show::@8
// count++;
// [984] level_show::count#2 = ++ level_show::count#5 -- vwuz1=_inc_vwuz1
inc.z count
bne !+
inc.z count+1
!:
// [985] phi from level_show::@5 level_show::@8 to level_show::@6 [phi:level_show::@5/level_show::@8->level_show::@6]
// [985] phi level_show::count#11 = level_show::count#5 [phi:level_show::@5/level_show::@8->level_show::@6#0] -- register_copy
// level_show::@6
__b6:
// render_tiles(xcol, ytile, tile_left, tile_right)
// [986] render_tiles::xcol#0 = level_show::xcol#2
// [987] render_tiles::ytile#0 = level_show::ytile#2
// [988] render_tiles::tile_left#0 = level_show::tile_left#0
// [989] render_tiles::tile_right#0 = level_show::tile_right#0 -- vbuyy=vbuz1
ldy.z tile_right
// [990] call render_tiles
jsr render_tiles
// level_show::@9
// for(char xcol=0, xtile=0; xcol<25; xcol++)
// [991] level_show::xcol#1 = ++ level_show::xcol#2 -- vbuz1=_inc_vbuz1
inc.z xcol
// [972] phi from level_show::@9 to level_show::@2 [phi:level_show::@9->level_show::@2]
// [972] phi level_show::count#10 = level_show::count#11 [phi:level_show::@9->level_show::@2#0] -- register_copy
// [972] phi level_show::xtile#3 = level_show::xtile#2 [phi:level_show::@9->level_show::@2#1] -- register_copy
// [972] phi level_show::xcol#2 = level_show::xcol#1 [phi:level_show::@9->level_show::@2#2] -- register_copy
jmp __b2
}
// pacman_sound_init
// Sound effects for pacman
pacman_sound_init: {
// SID->VOLUME_FILTER_MODE = 0x0f
// [992] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE) = $f -- _deref_pbuc1=vbuc2
// Set master volume
lda #$f
sta SID+OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE
// SID->CH1_FREQ = 0
// [993] *((unsigned int *)SID) = 0 -- _deref_pwuc1=vbuc2
// Channel 1 is Pacman eating sound
lda #<0
sta SID
sta SID+1
// SID->CH1_PULSE_WIDTH = 0
// [994] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH) = 0 -- _deref_pwuc1=vbuc2
sta SID+OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH
sta SID+OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH+1
// SID->CH1_CONTROL = 0
// [995] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL) = 0 -- _deref_pbuc1=vbuc2
sta SID+OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL
// SID->CH1_ATTACK_DECAY = 0
// [996] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY) = 0 -- _deref_pbuc1=vbuc2
sta SID+OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY
// SID->CH1_SUSTAIN_RELEASE = 0xf0
// [997] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE) = $f0 -- _deref_pbuc1=vbuc2
lda #$f0
sta SID+OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE
// pacman_sound_init::@return
// }
// [998] return
rts
}
// render
// Render graphic pixels into the 9 all-border sprites
// - xcol: x column (0-24). The x-column represents 8 bits of data, 4 mc pixels, 16 on-screen pixels (due to x-expanded sprites)
// - ypos: y position (0-145). The y-position is a line on the screen. Since every second line is black each ypos represents a 2 pixel distance.
// - pixels: The pixel data to set
// void render(__zp($14) char xcol, __zp($10) char ypos, __zp($13) char pixels)
render: {
.label render_index_xcol = $d
.label canvas_offset = 9
.label canvas1 = 7
.label canvas2 = 9
.label ypix = 2
.label xcol = $14
.label ypos = $10
.label pixels = $13
// char ytile = ypos/4
// [1000] render::ytile#0 = render::ypos#2 >> 2 -- vbuyy=vbuz1_ror_2
lda.z ypos
lsr
lsr
tay
// BYTE1(RENDER_INDEX) + xcol
// [1001] render::$1 = byte1 RENDER_INDEX + render::xcol#2 -- vbuxx=vbuc1_plus_vbuz1
lax.z xcol
axs #-[>RENDER_INDEX]
// ytile*2
// [1002] render::$2 = render::ytile#0 << 1 -- vbuaa=vbuyy_rol_1
tya
asl
// MAKEWORD( BYTE1(RENDER_INDEX) + xcol, ytile*2 )
// [1003] render::render_index_xcol#0 = render::$1 w= render::$2 -- vwuz1=vbuxx_word_vbuaa
stx.z render_index_xcol+1
sta.z render_index_xcol
// unsigned int canvas_offset = MAKEWORD( render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] )
// [1004] render::canvas_offset#0 = ((char *)render::render_index_xcol#0)[RENDER_OFFSET_CANVAS_HI] w= *((char *)render::render_index_xcol#0) -- vwuz1=pbuz2_derefidx_vbuc1_word__deref_pbuz2
ldy #RENDER_OFFSET_CANVAS_HI
lda (render_index_xcol),y
sta.z canvas_offset+1
ldy #0
lda (render_index_xcol),y
sta.z canvas_offset
// char * canvas1 = SPRITES_1 + canvas_offset
// [1005] render::canvas1#0 = SPRITES_1 + render::canvas_offset#0 -- pbuz1=pbuc1_plus_vwuz2
clc
adc #<SPRITES_1
sta.z canvas1
lda.z canvas_offset+1
adc #>SPRITES_1
sta.z canvas1+1
// char * canvas2 = SPRITES_2 + canvas_offset
// [1006] render::canvas2#0 = SPRITES_2 + render::canvas_offset#0 -- pbuz1=pbuc1_plus_vwuz1
lda.z canvas2
clc
adc #<SPRITES_2
sta.z canvas2
lda.z canvas2+1
adc #>SPRITES_2
sta.z canvas2+1
// char ypos_inc_offset = render_index_xcol[RENDER_OFFSET_YPOS_INC]
// [1007] render::ypos_inc_offset#0 = ((char *)render::render_index_xcol#0)[RENDER_OFFSET_YPOS_INC] -- vbuxx=pbuz1_derefidx_vbuc1
ldy #RENDER_OFFSET_YPOS_INC
lda (render_index_xcol),y
tax
// char ypix = ypos&3
// [1008] render::ypix#0 = render::ypos#2 & 3 -- vbuz1=vbuz2_band_vbuc1
// Move the last few y-pixels
lda #3
and.z ypos
sta.z ypix
// [1009] phi from render to render::@1 [phi:render->render::@1]
// [1009] phi render::canvas2#2 = render::canvas2#0 [phi:render->render::@1#0] -- register_copy
// [1009] phi render::ypos_inc_offset#2 = render::ypos_inc_offset#0 [phi:render->render::@1#1] -- register_copy
// [1009] phi render::canvas1#2 = render::canvas1#0 [phi:render->render::@1#2] -- register_copy
// [1009] phi render::i#2 = 0 [phi:render->render::@1#3] -- vbuyy=vbuc1
ldy #0
// render::@1
__b1:
// for(char i=0;i<ypix;i++)
// [1010] if(render::i#2<render::ypix#0) goto render::@2 -- vbuyy_lt_vbuz1_then_la1
cpy.z ypix
bcc __b2
// render::@3
// *canvas1 = pixels
// [1011] *render::canvas1#2 = render::pixels#4 -- _deref_pbuz1=vbuz2
// Render the pixels
lda.z pixels
ldy #0
sta (canvas1),y
// *canvas2 = pixels
// [1012] *render::canvas2#2 = render::pixels#4 -- _deref_pbuz1=vbuz2
sta (canvas2),y
// render::@return
// }
// [1013] return
rts
// render::@2
__b2:
// canvas1 += RENDER_YPOS_INC[ypos_inc_offset]
// [1014] render::canvas1#1 = render::canvas1#2 + RENDER_YPOS_INC[render::ypos_inc_offset#2] -- pbuz1=pbuz1_plus_pbuc1_derefidx_vbuxx
lda RENDER_YPOS_INC,x
clc
adc.z canvas1
sta.z canvas1
bcc !+
inc.z canvas1+1
!:
// canvas2 += RENDER_YPOS_INC[ypos_inc_offset]
// [1015] render::canvas2#1 = render::canvas2#2 + RENDER_YPOS_INC[render::ypos_inc_offset#2] -- pbuz1=pbuz1_plus_pbuc1_derefidx_vbuxx
lda RENDER_YPOS_INC,x
clc
adc.z canvas2
sta.z canvas2
bcc !+
inc.z canvas2+1
!:
// ypos_inc_offset++;
// [1016] render::ypos_inc_offset#1 = ++ render::ypos_inc_offset#2 -- vbuxx=_inc_vbuxx
inx
// for(char i=0;i<ypix;i++)
// [1017] render::i#1 = ++ render::i#2 -- vbuyy=_inc_vbuyy
iny
// [1009] phi from render::@2 to render::@1 [phi:render::@2->render::@1]
// [1009] phi render::canvas2#2 = render::canvas2#1 [phi:render::@2->render::@1#0] -- register_copy
// [1009] phi render::ypos_inc_offset#2 = render::ypos_inc_offset#1 [phi:render::@2->render::@1#1] -- register_copy
// [1009] phi render::canvas1#2 = render::canvas1#1 [phi:render::@2->render::@1#2] -- register_copy
// [1009] phi render::i#2 = render::i#1 [phi:render::@2->render::@1#3] -- register_copy
jmp __b1
}
// level_tile_get
// Get the level tile at a given (xtile, ytile) position
// Returns the TILE ID
// If xtile of ytile is outside the legal range the empty tile (0) is returned
// __register(A) char level_tile_get(__register(X) char xtile, __register(A) char ytile)
level_tile_get: {
.label ytiles = $d
// if(xtile>49 || ytile>36)
// [1019] if(level_tile_get::xtile#4>=$31+1) goto level_tile_get::@return -- vbuxx_ge_vbuc1_then_la1
cpx #$31+1
bcs __b1
// level_tile_get::@2
// [1020] if(level_tile_get::ytile#4>=$24+1) goto level_tile_get::@return -- vbuaa_ge_vbuc1_then_la1
cmp #$24+1
bcs __b1
// level_tile_get::@1
// char* ytiles = LEVEL_TILES + LEVEL_YTILE_OFFSET[ytile]
// [1021] level_tile_get::$5 = level_tile_get::ytile#4 << 1 -- vbuaa=vbuaa_rol_1
asl
// [1022] level_tile_get::ytiles#0 = LEVEL_TILES + LEVEL_YTILE_OFFSET[level_tile_get::$5] -- pbuz1=pbuc1_plus_pwuc2_derefidx_vbuaa
tay
clc
lda #<LEVEL_TILES
adc LEVEL_YTILE_OFFSET,y
sta.z ytiles
lda #>LEVEL_TILES
adc LEVEL_YTILE_OFFSET+1,y
sta.z ytiles+1
// return ytiles[xtile];
// [1023] level_tile_get::return#0 = level_tile_get::ytiles#0[level_tile_get::xtile#4] -- vbuaa=pbuz1_derefidx_vbuxx
txa
tay
lda (ytiles),y
// [1024] phi from level_tile_get::@1 to level_tile_get::@return [phi:level_tile_get::@1->level_tile_get::@return]
// [1024] phi level_tile_get::return#2 = level_tile_get::return#0 [phi:level_tile_get::@1->level_tile_get::@return#0] -- register_copy
rts
// [1024] phi from level_tile_get level_tile_get::@2 to level_tile_get::@return [phi:level_tile_get/level_tile_get::@2->level_tile_get::@return]
__b1:
// [1024] phi level_tile_get::return#2 = 0 [phi:level_tile_get/level_tile_get::@2->level_tile_get::@return#0] -- vbuaa=vbuc1
lda #0
// level_tile_get::@return
// }
// [1025] return
rts
}
// render_tiles
// Renders 2x1 tiles on the canvas.
// Tiles are 4x4 px. This renders 8px x 4px.
// - xcol: The x column position (0-24) (a column is 8 pixels)
// - ytile: The y tile position (0-37). Tile y position 0 is a special half-tile at the top of the screen.
// - tile_left: The left tile ID.
// - tile_right: The right tile ID.
// void render_tiles(__zp($f) char xcol, __zp($10) char ytile, __register(X) char tile_left, __register(Y) char tile_right)
render_tiles: {
.label tile_left_pixels = $d
.label tile_right_pixels = $b
.label render_index_xcol = $11
.label canvas_offset = 3
.label canvas1 = 5
.label canvas2 = 3
.label y = 2
.label xcol = $f
.label ytile = $10
// tile_left*4
// [1026] render_tiles::$0 = render_tiles::tile_left#0 << 2 -- vbuaa=vbuxx_rol_2
txa
asl
asl
// char * tile_left_pixels = TILES_LEFT + tile_left*4
// [1027] render_tiles::tile_left_pixels#0 = TILES_LEFT + render_tiles::$0 -- pbuz1=pbuc1_plus_vbuaa
clc
adc #<TILES_LEFT
sta.z tile_left_pixels
lda #>TILES_LEFT
adc #0
sta.z tile_left_pixels+1
// tile_right*4
// [1028] render_tiles::$2 = render_tiles::tile_right#0 << 2 -- vbuaa=vbuyy_rol_2
tya
asl
asl
// char * tile_right_pixels = TILES_RIGHT + tile_right*4
// [1029] render_tiles::tile_right_pixels#0 = TILES_RIGHT + render_tiles::$2 -- pbuz1=pbuc1_plus_vbuaa
clc
adc #<TILES_RIGHT
sta.z tile_right_pixels
lda #>TILES_RIGHT
adc #0
sta.z tile_right_pixels+1
// BYTE1(RENDER_INDEX) + xcol
// [1030] render_tiles::$4 = byte1 RENDER_INDEX + render_tiles::xcol#0 -- vbuxx=vbuc1_plus_vbuz1
lax.z xcol
axs #-[>RENDER_INDEX]
// ytile*2
// [1031] render_tiles::$5 = render_tiles::ytile#0 << 1 -- vbuaa=vbuz1_rol_1
lda.z ytile
asl
// MAKEWORD( BYTE1(RENDER_INDEX) + xcol, ytile*2 )
// [1032] render_tiles::render_index_xcol#0 = render_tiles::$4 w= render_tiles::$5 -- vwuz1=vbuxx_word_vbuaa
stx.z render_index_xcol+1
sta.z render_index_xcol
// unsigned int canvas_offset = MAKEWORD( render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] )
// [1033] render_tiles::canvas_offset#0 = ((char *)render_tiles::render_index_xcol#0)[RENDER_OFFSET_CANVAS_HI] w= *((char *)render_tiles::render_index_xcol#0) -- vwuz1=pbuz2_derefidx_vbuc1_word__deref_pbuz2
ldy #RENDER_OFFSET_CANVAS_HI
lda (render_index_xcol),y
sta.z canvas_offset+1
ldy #0
lda (render_index_xcol),y
sta.z canvas_offset
// char * canvas1 = SPRITES_1 + canvas_offset
// [1034] render_tiles::canvas1#0 = SPRITES_1 + render_tiles::canvas_offset#0 -- pbuz1=pbuc1_plus_vwuz2
clc
adc #<SPRITES_1
sta.z canvas1
lda.z canvas_offset+1
adc #>SPRITES_1
sta.z canvas1+1
// char * canvas2 = SPRITES_2 + canvas_offset
// [1035] render_tiles::canvas2#0 = SPRITES_2 + render_tiles::canvas_offset#0 -- pbuz1=pbuc1_plus_vwuz1
lda.z canvas2
clc
adc #<SPRITES_2
sta.z canvas2
lda.z canvas2+1
adc #>SPRITES_2
sta.z canvas2+1
// char ypos_inc_offset = render_index_xcol[RENDER_OFFSET_YPOS_INC]
// [1036] render_tiles::ypos_inc_offset#0 = ((char *)render_tiles::render_index_xcol#0)[RENDER_OFFSET_YPOS_INC] -- vbuxx=pbuz1_derefidx_vbuc1
ldy #RENDER_OFFSET_YPOS_INC
lda (render_index_xcol),y
tax
// [1037] phi from render_tiles to render_tiles::@1 [phi:render_tiles->render_tiles::@1]
// [1037] phi render_tiles::ypos_inc_offset#2 = render_tiles::ypos_inc_offset#0 [phi:render_tiles->render_tiles::@1#0] -- register_copy
// [1037] phi render_tiles::canvas2#2 = render_tiles::canvas2#0 [phi:render_tiles->render_tiles::@1#1] -- register_copy
// [1037] phi render_tiles::canvas1#2 = render_tiles::canvas1#0 [phi:render_tiles->render_tiles::@1#2] -- register_copy
// [1037] phi render_tiles::y#2 = 0 [phi:render_tiles->render_tiles::@1#3] -- vbuz1=vbuc1
lda #0
sta.z y
// render_tiles::@1
__b1:
// for(char y=0;y<4;y++)
// [1038] if(render_tiles::y#2<4) goto render_tiles::@2 -- vbuz1_lt_vbuc1_then_la1
lda.z y
cmp #4
bcc __b2
// render_tiles::@return
// }
// [1039] return
rts
// render_tiles::@2
__b2:
// char pixels = tile_left_pixels[y] | tile_right_pixels[y]
// [1040] render_tiles::pixels#0 = render_tiles::tile_left_pixels#0[render_tiles::y#2] | render_tiles::tile_right_pixels#0[render_tiles::y#2] -- vbuaa=pbuz1_derefidx_vbuz2_bor_pbuz3_derefidx_vbuz2
ldy.z y
lda (tile_left_pixels),y
ora (tile_right_pixels),y
// *canvas1 = pixels
// [1041] *render_tiles::canvas1#2 = render_tiles::pixels#0 -- _deref_pbuz1=vbuaa
ldy #0
sta (canvas1),y
// *canvas2 = pixels
// [1042] *render_tiles::canvas2#2 = render_tiles::pixels#0 -- _deref_pbuz1=vbuaa
sta (canvas2),y
// canvas1 += RENDER_YPOS_INC[ypos_inc_offset]
// [1043] render_tiles::canvas1#1 = render_tiles::canvas1#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2] -- pbuz1=pbuz1_plus_pbuc1_derefidx_vbuxx
lda RENDER_YPOS_INC,x
clc
adc.z canvas1
sta.z canvas1
bcc !+
inc.z canvas1+1
!:
// canvas2 += RENDER_YPOS_INC[ypos_inc_offset]
// [1044] render_tiles::canvas2#1 = render_tiles::canvas2#2 + RENDER_YPOS_INC[render_tiles::ypos_inc_offset#2] -- pbuz1=pbuz1_plus_pbuc1_derefidx_vbuxx
lda RENDER_YPOS_INC,x
clc
adc.z canvas2
sta.z canvas2
bcc !+
inc.z canvas2+1
!:
// ypos_inc_offset++;
// [1045] render_tiles::ypos_inc_offset#1 = ++ render_tiles::ypos_inc_offset#2 -- vbuxx=_inc_vbuxx
inx
// for(char y=0;y<4;y++)
// [1046] render_tiles::y#1 = ++ render_tiles::y#2 -- vbuz1=_inc_vbuz1
inc.z y
// [1037] phi from render_tiles::@2 to render_tiles::@1 [phi:render_tiles::@2->render_tiles::@1]
// [1037] phi render_tiles::ypos_inc_offset#2 = render_tiles::ypos_inc_offset#1 [phi:render_tiles::@2->render_tiles::@1#0] -- register_copy
// [1037] phi render_tiles::canvas2#2 = render_tiles::canvas2#1 [phi:render_tiles::@2->render_tiles::@1#1] -- register_copy
// [1037] phi render_tiles::canvas1#2 = render_tiles::canvas1#1 [phi:render_tiles::@2->render_tiles::@1#2] -- register_copy
// [1037] phi render_tiles::y#2 = render_tiles::y#1 [phi:render_tiles::@2->render_tiles::@1#3] -- register_copy
jmp __b1
}
// File Data
.segment Data
// The byteboozer decruncher
BYTEBOOZER:
.const B2_ZP_BASE = $fc
#import "byteboozer_decrunch.asm"
// Pacman eating sound
PACMAN_CH1_FREQ_HI: .byte $23, $1d, $1a, $17, $15, $12, 0, 0, 0, 0, 0, $19, $1a, $1c, $1d, $20, $23, 0, 0, 0, 0, 0
PACMAN_CH1_CONTROL: .byte $21, $21, $21, $21, $21, $21, 0, 0, 0, 0, 0, $21, $21, $21, $21, $21, $21, 0, 0, 0, 0, 0
// Address of the first pixel each x column
RENDER_XCOLS: .word 0, 1, 2, $400, $401, $402, $800, $801, $802, $c00, $c01, $c02, $1000, $1001, $1002, $1400, $1401, $1402, $1800, $1801, $1802, $1c00, $1c01, $1c02, 0, 0
// Offset for each y-position from the first pixel of an X column
RENDER_YPOS: .word 0, 0, 0, 6, $c, $12, $18, $1e, $24, $2a, $30, $36, $3c, $40+3, $40+9, $40+$f, $40+$15, $40+$1b, $40+$21, $40+$27, $40+$2d, $40+$33, $40+$39, $80, $80+6, $80+$c, $80+$12, $80+$18, $80+$1e, $80+$24, $80+$2a, $80+$30, $80+$36, $80+$3c, $c0+3, $c0+9, $c0+$f, $c0+$15, $c0+$1b, $c0+$21, $c0+$27, $c0+$2d, $c0+$33, $c0+$39, $100, $100+6, $100+$c, $100+$12, $100+$18, $100+$1e, $100+$24, $100+$2a, $100+$30, $100+$36, $100+$3c, $140+3, $140+9, $140+$f, $140+$15, $140+$1b, $140+$21, $140+$27, $140+$2d, $140+$33, $140+$39, $180, $180+6, $180+$c, $180+$12, $180+$18, $180+$1e, $180+$24, $180+$2a, $180+$30, $180+$36, $180+$3c, $1c0+3, $1c0+9, $1c0+$f, $1c0+$15, $1c0+$1b, $1c0+$21, $1c0+$27, $1c0+$2d, $1c0+$33, $1c0+$39, $200, $200+6, $200+$c, $200+$12, $200+$18, $200+$1e, $200+$24, $200+$2a, $200+$30, $200+$36, $200+$3c, $240+3, $240+9, $240+$f, $240+$15, $240+$1b, $240+$21, $240+$27, $240+$2d, $240+$33, $240+$39, $280, $280+6, $280+$c, $280+$12, $280+$18, $280+$1e, $280+$24, $280+$2a, $280+$30, $280+$36, $280+$3c, $2c0+3, $2c0+9, $2c0+$f, $2c0+$15, $2c0+$1b, $2c0+$21, $2c0+$27, $2c0+$2d, $2c0+$33, $2c0+$39, $300, $300+6, $300+$c, $300+$12, $300+$18, $300+$1e, $300+$24, $300+$2a, $300+$30, $300+$36, $300+$3c, $340+3, $340+9, $340+$f, $340+$15, $340+$1b, $340+$21, $340+$27, $340+$2d, $340+$33, $340+$39
// Offset for each y-position from the first pixel of an X column in sprite#9
RENDER_YPOS_9TH: .word 3, 3, 3, 9, $f, $15, $1b, $21, $27, $2d, $33, $39, $40, $40+6, $40+$c, $40+$12, $40+$18, $40+$1e, $40+$24, $40+$2a, $40+$30, $40+$36, $40+$3c, $80+3, $80+9, $80+$f, $80+$15, $80+$1b, $80+$21, $80+$27, $80+$2d, $80+$33, $80+$39, $c0, $c0+6, $c0+$c, $c0+$12, $c0+$18, $c0+$1e, $c0+$24, $c0+$2a, $c0+$30, $c0+$36, $c0+$3c, $100+3, $100+9, $100+$f, $100+$15, $100+$1b, $100+$21, $100+$27, $100+$2d, $100+$33, $100+$39, $140, $140+6, $140+$c, $140+$12, $140+$18, $140+$1e, $140+$24, $140+$2a, $140+$30, $140+$36, $140+$3c, $180+3, $180+9, $180+$f, $180+$15, $180+$1b, $180+$21, $180+$27, $180+$2d, $180+$33, $180+$39, $1c0, $1c0+6, $1c0+$c, $1c0+$12, $1c0+$18, $1c0+$1e, $1c0+$24, $1c0+$2a, $1c0+$30, $1c0+$36, $1c0+$3c, $200+3, $200+9, $200+$f, $200+$15, $200+$1b, $200+$21, $200+$27, $200+$2d, $200+$33, $200+$39, $240, $240+6, $240+$c, $240+$12, $240+$18, $240+$1e, $240+$24, $240+$2a, $240+$30, $240+$36, $240+$3c, $280+3, $280+9, $280+$f, $280+$15, $280+$1b, $280+$21, $280+$27, $280+$2d, $280+$33, $280+$39, $2c0, $2c0+6, $2c0+$c, $2c0+$12, $2c0+$18, $2c0+$1e, $2c0+$24, $2c0+$2a, $2c0+$30, $2c0+$36, $2c0+$3c, $300+3, $300+9, $300+$f, $300+$15, $300+$1b, $300+$21, $300+$27, $300+$2d, $300+$33, $300+$39, $340, $340+6, $340+$c, $340+$12, $340+$18, $340+$1e, $340+$24, $340+$2a, $340+$30, $340+$36, $340+$3c
// Increment for each y-position from the first pixel of an X column
.align $20
RENDER_YPOS_INC: .byte 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7
// The BOB x column position (0-24) (a column is 8 pixels)
bobs_xcol: .byte $a, $a, $a, $a, $a
// The BOB y fine position (0-99). The y-position is a line on the screen. Since every second line is black each ypos represents a 2 pixel distance.
bobs_yfine: .byte $2d, $2d, $2d, $2d, $2d
// The BOB ID in the BOB data tables
bobs_bob_id: .byte 0, 0, 0, 0, 0
// The BOB restore data: 18 bytes per BOB. Doubled for double-buffering.
// char * left_canvas;
// char left_ypos_inc_offset;
// char * right_canvas;
// char right_ypos_inc_offset;
// char[12] restore_pixels;
.align $100
bobs_restore: .fill NUM_BOBS*SIZE_BOB_RESTORE*2, 0
.segment Init
// The level represented as 4x4 px tiles. Each byte is the ID of a tile from the tile set.
// The level is 50 tiles * 37 tiles. The first tile line are special half-tiles (where only the last 2 pixel rows are shown).
// The level data is organized as 37 rows of 50 tile IDs.
LEVEL_TILES_CRUNCHED:
.modify B2() {
.pc = LEVEL_TILES "LEVEL TILE GRAPHICS"
.var pic_level = LoadPicture("pacman-tiled.png", List().add($000000, $352879, $bfce72, $883932))
// Maps the tile pixels (a 16 bit number) to the tile ID
.var TILESET = Hashtable()
// Maps the tile ID to the pixels (a 16 bit number)
.var TILESET_BY_ID = Hashtable()
// Tile ID 0 is empty
.eval TILESET.put(0, 0)
.eval TILESET_BY_ID.put(0, 0)
.align $100
// TABLE LEVEL_TILES[64*37]
// The level is 50 tiles * 37 tiles. The first tile line are special half-tiles (where only the last 2 pixel rows are shown).
// The level data is organized as 37 rows of 64 bytes containing tile IDs. (the last 14 are unused to achieve 64-byte alignment)
.for(var ytile=0; ytile<37; ytile++) {
.for(var xtile=0; xtile<50; xtile++) {
// Find the tile pixels (4x4 px - 16 bits)
.var pixels = 0;
.for(var i=0; i<4; i++) {
.var pix = pic_level.getMulticolorByte(xtile/2,ytile*4+i)
.if((xtile&1)==0) {
// left nibble
.eval pix = floor(pix / $10)
} else {
// right nibble
.eval pix = pix & $0f
}
.eval pixels = pixels*$10 + pix
}
.var tile_id = 0
.if(TILESET.containsKey(pixels)) {
.eval tile_id = TILESET.get(pixels)
} else {
.eval tile_id = TILESET.keys().size()
.eval TILESET.put(pixels, tile_id)
.eval TILESET_BY_ID.put(tile_id, pixels)
// .print "tile "+tile_id+" : "+toHexString(pixels,4)
}
// Output the tile ID
.byte tile_id
}
.fill 14, 0
}
.align $100
// TABLE char TILES_LEFT[0x80]
// The left tile graphics. A tile is 4x4 px. The left tiles contain tile graphics for the 4 left bits of a char. Each tile is 4 bytes.
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
.byte pix<<4
.eval pixels = pixels << 4
}
}
.align $80
// TABLE char TILES_RIGHT[0x80]
// The right tile graphics. A tile is 4x4 px. The right tiles contain tile graphics for the 4 right bits of a char. Each tile is 4 bytes.
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
.byte pix
.eval pixels = pixels << 4
}
}
.align $80
// TABLE char TILES_TYPE[0x20]
// 0: empty (all black), 1:pill, 2:powerup, 4: wall (contains blue pixels)
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.var tile_type = 0
.if(pixels==$0220) .eval tile_type=1 // 1:pill
.if(pixels==$aaaa) .eval tile_type=2 // 2:powerup
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
// Detect wall - any blue pixels (%01)
.if( (pix&%0100)==%0100) .eval tile_type = 4; // 4:wall
.if( (pix&%0001)==%0001) .eval tile_type = 4; // 4:wall
.eval pixels = pixels << 4
}
.byte tile_type
//.print "tile "+tile_id+" gfx "+toHexString(TILESET_BY_ID.get(tile_id),4) + " type "+tile_type
}
}
// BOB data: One table per bob byte (left/right, mask/pixels = 4 tables). The index into the table is the bob_id + row*BOB_ROW_SIZE.
BOB_GRAPHICS_CRUNCHED:
.modify B2() {
.pc = BOB_MASK_LEFT "BOB GRAPHICS TABLES"
.var bobs_pic = LoadPicture("pacman-bobs.png", List().add($000000, $352879, $bfce72, $883932))
// TABLE char BOB_MASK_LEFT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,48+scroll*6+row)
}
// TABLE char BOB_MASK_RIGT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,24+scroll*6+row)
.for(var blue=0; blue<8;blue++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,48+scroll*6+row)
}
// TABLE char BOB_PIXEL_LEFT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+pac*2,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+ghost*2,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+ghost*2,48+scroll*6+row)
}
// TABLE char BOB_PIXEL_RIGT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+pac*2,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+ghost*2,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+ghost*2,48+scroll*6+row)
}
}
// Splash screen 25 xcol * 147 ypos bytes
SPLASH_CRUNCHED:
.modify B2() {
.pc = SPLASH "SPLASH SCREEN" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_splash_mc = LoadPicture("pacman-splash.png", List().add($000000, $352879, $bfce72, $883932))
// 0:BLACK, 1:YELLOW
.var pic_splash_yellow = LoadPicture("pacman-splash.png", List().add($000000, $bfce72))
// 0:BLACK, 1:BLUE
.var pic_splash_blue = LoadPicture("pacman-splash.png", List().add($000000, $352879))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<147; ypos++) {
.if(ypos>25 && ypos<123) {
// Sprites in the sides are in single color blue on splash screen
.byte pic_splash_blue.getSinglecolorByte(xcol,ypos)
} else .if(xcol>2 && xcol<21) {
// Sprites 2-7 are in single color yellow on splash screen
.byte pic_splash_yellow.getSinglecolorByte(xcol,ypos)
} else {
// Sprites 0&1 are in multi color on splash screen
.byte pic_splash_mc.getMulticolorByte(xcol,ypos)
}
}
}
}
// Victory graphics 25 xcol * 25 ypos bytes
WIN_GFX_CRUNCHED:
.modify B2() {
.pc = WIN_GFX "WIN GRAPHICS" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_win = LoadPicture("pacman-win.png", List().add($000000, $352879, $bfce72, $883932))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<25; ypos++) {
.byte pic_win.getMulticolorByte(xcol,ypos)
}
}
}
// Game Over graphics 25 xcol * 25 ypos bytes
GAMEOVER_GFX_CRUNCHED:
.modify B2() {
.pc = GAMEOVER_GFX "GAMEOVER GRAPHICS" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_gameover = LoadPicture("pacman-gameover.png", List().add($000000, $352879, $bfce72, $883932))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<25; ypos++) {
.byte pic_gameover.getMulticolorByte(xcol,ypos)
}
}
}
// Renders the BOBs at the given positions
// The bob logic code will be merged with raster code using code-merger.c
// First restores the canvas from previously rendered bobs, and then renders the bobs at the given positions.
// BOBs are 16px*6px graphics (2 x-columns * 6px) with masks and pixels
// Uses the bobs_xcol, bobs_yfine, bobs_bob_id and bob_restore for data about the bobs
// Implemented in inline kick assembler
LOGIC_CODE_CRUNCHED:
.macro LOGIC_BEGIN(cycles) {
.byte cycles
}
.macro LOGIC_END() {
.byte $ff
}
.modify B2() {
.pc = LOGIC_CODE_UNMERGED "LOGIC CODE UNMERGED"
LOGIC_BEGIN(2)
clc
LOGIC_END()
// ******************************************
// Restores the canvas under the rendered bobs
// ******************************************
.for(var bob=NUM_BOBS-1;bob>=0; bob--) {
//LOGIC_BEGIN(6)
//inc $d021
//LOGIC_END()
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
// char * volatile left_canvas = *((char**)&bob_restore[0]);
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+0,x
sta.z left_canvas
LOGIC_END()
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+1,x
sta.z left_canvas+1
LOGIC_END()
// char left_ypos_inc_offset = bob_restore[2];
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+2,x
sta.z left_ypos_inc_offset
LOGIC_END()
// char * volatile rigt_canvas = *((char**)&bob_restore[3]);
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+3,x
sta.z rigt_canvas
LOGIC_END()
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+4,x
sta.z rigt_canvas+1
LOGIC_END()
// char rigt_ypos_inc_offset = bob_restore[5];
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+5,x
sta.z rigt_ypos_inc_offset
LOGIC_END()
// Restore Bob Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<6;row++) {
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
//rigt_canvas += RENDER_YPOS_INC[rigt_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(5)
inc.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z rigt_canvas
sta.z rigt_canvas
lda.z rigt_canvas+1
adc #0
sta.z rigt_canvas+1
LOGIC_END()
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
// *left_canvas = bob_restore[6] ;
LOGIC_BEGIN(10)
lda bobs_restore+SIZE_BOB_RESTORE*bob+6+row,x
sta (left_canvas),y
LOGIC_END()
// *rigt_canvas = bob_restore[7];
LOGIC_BEGIN(10)
lda bobs_restore+SIZE_BOB_RESTORE*bob+12+row,x
sta (rigt_canvas),y
LOGIC_END()
}
}
// ******************************************
// Render two tiles on the canvas
// ******************************************
// y==0 from bob restore
LOGIC_BEGIN(12)
// char tile_left_idx = 4 * logic_tile_ptr[0];
lda (logic_tile_ptr),y
asl
asl
sta logic_tile_left_idx
LOGIC_END()
// char logic_tile_right_idx = 4 * logic_tile_ptr[1];
LOGIC_BEGIN(2)
iny
LOGIC_END()
LOGIC_BEGIN(12)
lda (logic_tile_ptr),y
asl
asl
sta logic_tile_right_idx
LOGIC_END()
// char * render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, ytile*2 };
LOGIC_BEGIN(8)
lda #>RENDER_INDEX
adc logic_tile_xcol
sta.z left_render_index_xcol+1
LOGIC_END()
LOGIC_BEGIN(6)
lda logic_tile_yfine
sta.z left_render_index_xcol
LOGIC_END()
// unsigned int canvas_offset = {render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] };
// char * left_canvas = canvas_base_hi*$100 + canvas_offset;
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_LO
LOGIC_END()
LOGIC_BEGIN(8)
lda (left_render_index_xcol),y
sta.z left_canvas
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_HI
LOGIC_END()
LOGIC_BEGIN(11)
lda (left_render_index_xcol),y
adc canvas_base_hi
sta.z left_canvas+1
LOGIC_END()
// char left_ypos_inc_offset = render_index_xcol[RENDER_OFFSET_YPOS_INC];
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_YPOS_INC
LOGIC_END()
LOGIC_BEGIN(8)
lda (left_render_index_xcol),y
sta.z left_ypos_inc_offset
LOGIC_END()
// Render Tile Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<4;row++) {
// *left_canvas = tile_left_pixels[y] | tile_right_pixels[y];
LOGIC_BEGIN(3)
ldx logic_tile_left_idx
LOGIC_END()
LOGIC_BEGIN(17)
lda TILES_LEFT+row,x
ldx logic_tile_right_idx
ora TILES_RIGHT+row,x
sta (left_canvas),y
LOGIC_END()
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
}
// ******************************************
// Renders the BOBs at the given positions
// ******************************************
.for(var bob=0;bob<NUM_BOBS; bob++) {
// char * left_render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, yfine };
// char * rigt_render_index_xcol = (char*){ (>RENDER_INDEX) + xcol+1, yfine };
//LOGIC_BEGIN(6)
//inc $d021
//LOGIC_END()
LOGIC_BEGIN(14)
lda #>RENDER_INDEX
adc bobs_xcol+bob
sta.z left_render_index_xcol+1
adc #1
sta.z rigt_render_index_xcol+1
LOGIC_END()
LOGIC_BEGIN(10)
lda bobs_yfine+bob
sta.z left_render_index_xcol
sta.z rigt_render_index_xcol
LOGIC_END()
// char * left_canvas = (char*){ left_render_index_xcol[85], left_render_index_xcol[0] };
// bob_restore[0] = <left_canvas; bob_restore[1] = >left_canvas;
// char * rigt_canvas = (char*){ rigt_render_index_xcol[85], rigt_render_index_xcol[0] };
// bob_restore[3] = <rigt_canvas; bob_restore[4] = >rigt_canvas;
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_LO
LOGIC_END()
LOGIC_BEGIN(13)
lda (left_render_index_xcol),y
sta.z left_canvas
sta bobs_restore+SIZE_BOB_RESTORE*bob+0,x
LOGIC_END()
LOGIC_BEGIN(13)
lda (rigt_render_index_xcol),y
sta.z rigt_canvas
sta bobs_restore+SIZE_BOB_RESTORE*bob+3,x
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_HI
LOGIC_END()
LOGIC_BEGIN(16)
lda (left_render_index_xcol),y
adc canvas_base_hi
sta.z left_canvas+1
sta bobs_restore+SIZE_BOB_RESTORE*bob+1,x
LOGIC_END()
LOGIC_BEGIN(16)
lda (rigt_render_index_xcol),y
adc canvas_base_hi
sta.z rigt_canvas+1
sta bobs_restore+SIZE_BOB_RESTORE*bob+4,x
LOGIC_END()
// char left_ypos_inc_offset = left_render_index_xcol[170];
// bob_restore[2] = left_ypos_inc_offset;
// char rigt_ypos_inc_offset = rigt_render_index_xcol[170];
// bob_restore[5] = rigt_ypos_inc_offset;
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_YPOS_INC
LOGIC_END()
LOGIC_BEGIN(13)
lda (left_render_index_xcol),y
sta.z left_ypos_inc_offset
sta bobs_restore+SIZE_BOB_RESTORE*bob+2,x
LOGIC_END()
LOGIC_BEGIN(13)
lda (rigt_render_index_xcol),y
sta.z rigt_ypos_inc_offset
sta bobs_restore+SIZE_BOB_RESTORE*bob+5,x
LOGIC_END()
// Render Bob Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<6;row++) {
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
//rigt_canvas += RENDER_YPOS_INC[rigt_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z rigt_canvas
sta.z rigt_canvas
lda.z rigt_canvas+1
adc #0
sta.z rigt_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z rigt_ypos_inc_offset
LOGIC_END()
// bob_restore[6] = *left_canvas;
// *left_canvas = *left_canvas & BOB_MASK_LEFT_0[bob_id] | BOB_PIXEL_LEFT_0[bob_id];
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
LOGIC_BEGIN(10)
lda (left_canvas),y
sta bobs_restore+SIZE_BOB_RESTORE*bob+6+row,x
LOGIC_END()
LOGIC_BEGIN(10)
lda (rigt_canvas),y
sta bobs_restore+SIZE_BOB_RESTORE*bob+12+row,x
LOGIC_END()
LOGIC_BEGIN(4)
ldx bobs_bob_id+bob
LOGIC_END()
LOGIC_BEGIN(19)
lda (left_canvas),y
and BOB_MASK_LEFT+row*BOB_ROW_SIZE,x
ora BOB_PIXEL_LEFT+row*BOB_ROW_SIZE,x
sta (left_canvas),y
LOGIC_END()
// bob_restore[7] = *rigt_canvas;
// *rigt_canvas = *rigt_canvas & BOB_MASK_RIGT_0[bob_id] | BOB_PIXEL_RIGT_0[bob_id];
LOGIC_BEGIN(19)
lda (rigt_canvas),y
and BOB_MASK_RIGT+row*BOB_ROW_SIZE,x
ora BOB_PIXEL_RIGT+row*BOB_ROW_SIZE,x
sta (rigt_canvas),y
LOGIC_END()
}
}
//LOGIC_BEGIN(6)
//lda #0
//sta $d021
//LOGIC_END()
LOGIC_BEGIN(0) // end of logic code
}
// Raster-code for displaying 9 sprites on the entire screen - with open side borders
// The uncrunched code will be merged with logic code using code-merger.c
// The unmerged raster-code is identical for both buffers!
RASTER_CODE_CRUNCHED:
.macro RASTER_CYCLES(cycles) {
.byte $ff, cycles
}
.modify B2() {
.pc = RASTER_CODE_UNMERGED "RASTER CODE UNMERGED"
RASTER_CYCLES(29)
// Line 7 cycle 44
// Raster Line
.var raster_line = 7
// Line in the sprite
.var sprite_line = 20
// Current sprite ypos
.var sprite_ypos = 7
// Current sprite screen (graphics bank not important since sprite layout in the banks is identical)
.var sprite_screen = SCREENS_1
.var available_cycles = 0;
.for(var i=0;i<293;i++) {
// Line cycle count
.var line_cycles = 46
.if(raster_line>=70 && raster_line<238) {
// Only 2 sprites on these lines - so more cycles available
.eval line_cycles = 58
}
// Create 9th sprite by moving sprite 0
.if(mod(raster_line,2)==0) {
lda #$6f
sta $d000
} else {
lda #$e7
sta $d000
}
.eval line_cycles -= 6;
lda #$8
// Cycle 50. LSR abs is a 6 cycle RWM instruction.
lsr VICII_CONTROL2
sta VICII_CONTROL2
.eval line_cycles -= 12;
.eval raster_line++
.eval sprite_line++
.if(sprite_line==21) {
.eval sprite_line = 0
.eval sprite_ypos += 21
}
// Set sprite single-color mode on splash
.if(raster_line==53) {
lda side_sprites_mc
sta $d01c
lda side_sprites_color
sta $d027
sta $d028
.eval line_cycles -= 18
}
// Set sprite multi-color mode on splash
.if(raster_line==248) {
lda bottom_sprites_mc
sta $d01c
lda bottom_sprites_color
sta $d027
sta $d028
.eval line_cycles -= 18
//.print "raster:"+raster_line+" multi-color"
}
// Open top border
.if(raster_line==55) {
lda #VICII_RSEL|VICII_ECM|VICII_BMM|7
sta VICII_CONTROL1
.eval line_cycles -= 6
//.print "raster:"+raster_line+" top border rsel=1"
}
// Open bottom border
.if(raster_line==250) {
lda #VICII_ECM|VICII_BMM|7 // DEN=0, RSEL=0
sta VICII_CONTROL1
.eval line_cycles -= 6
//.print "raster:"+raster_line+" bottom border rsel=0"
}
// Move sprites down
.if(sprite_line>=2 && sprite_line<=9) {
.if(sprite_ypos<300) {
.var sprite_id = sprite_line-2
.if(sprite_id==0 || sprite_id==1 || sprite_ypos<=55 || sprite_ypos>=(246-21)) {
lda #sprite_ypos
sta SPRITES_YPOS+2*sprite_id
.eval line_cycles -= 6;
//.print "raster:"+raster_line+" sprite:"+sprite_id+" ypos:"+sprite_ypos
}
}
}
// Change sprite data
.if(sprite_line==20) {
.eval sprite_screen += $400
lda #sprite_screen/$40
sta VICII_MEMORY
.eval line_cycles -= 6
//.print "raster:"+raster_line+" sprite data $"+toHexString(sprite_screen)
}
// Spend the rest of the cycles on NOPS
.if(line_cycles<0 || line_cycles==1) .error "Too many cycles spent on line "+raster_line
.if(line_cycles>0) {
//.print "raster:"+raster_line+" cycles $"+toHexString(line_cycles)
RASTER_CYCLES(line_cycles)
.eval line_cycles -= line_cycles
.eval available_cycles += line_cycles
}
}
//.print "Available cycles: "+available_cycles
lda #$6f
sta $d000
lda #$8
// Cycle 50. LSR abs is a 6 cycle RWM instruction.
lsr VICII_CONTROL2
sta VICII_CONTROL2
RASTER_CYCLES(00) // End of raster code
}
// SID tune
// Pacman 2 channel music by Metal/Camelot
INTRO_MUSIC_CRUNCHED:
.modify B2() {
.pc = INTRO_MUSIC "INTRO MUSIC"
.const music = LoadBinary("pacman-2chn-simpler.prg", BF_C64FILE)
.fill music.getSize(), music.get(i)
}
.segment Data
// Offset of the LEVEL_TILE data within the LEVEL_TILE data (each row is 64 bytes of data)
LEVEL_YTILE_OFFSET: .word 0, $40, $80, $c0, $100, $140, $180, $1c0, $200, $240, $280, $2c0, $300, $340, $380, $3c0, $400, $440, $480, $4c0, $500, $540, $580, $5c0, $600, $640, $680, $6c0, $700, $740, $780, $7c0, $800, $840, $880, $8c0, $900
// Used to choose a single direction when presented with multiple potential directions.
// Used to eliminate diagonal joy directions and convert them to a single direction
// Priority: (4)up, (8)down, (16)left, (32)right
.align $40
DIRECTION_SINGLE: .byte 0, 0, 0, 0, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $10, $10, $10, $10, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $20, $20, $20, $20, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $10, $10, $10, $10, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4
// Used to eliminate a single direction (the one that the ghost came from)
// The value DIRECTION_ELIMINATE[current_direction] is ANDed onto the open directions to remove the current direction
.align $40
DIRECTION_ELIMINATE: .byte $ff, 0, 0, 0, $f7, 0, 0, 0, $fb, 0, 0, 0, 0, 0, 0, 0, $df, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, $ef
// Used to reverse direction direction (when a ghost changes between chase and scatter)
.align $40
DIRECTION_REVERSE: .byte 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, $20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, $10
// The animation frames for pacman. The index into this is DIRECTION + anim_frame_idx.
.align $40
pacman_frames: .byte 8, 8, 8, 8, 8, $18, $14, $18, 8, $20, $1c, $20, 0, 0, 0, 0, 8, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, $c, $10, $c
// The animation frames for ghost. The index into thos is DIRECTION + anim_frame_idx.
.align $80
ghost_frames: .byte 0, 0, 0, 0, $3c, $40, $3c, $40, $34, $38, $34, $38, 0, 0, 0, 0, $2c, $30, $2c, $30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $24, $28, $24, $28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $5c, $60, $5c, $60, $54, $58, $54, $58, 0, 0, 0, 0, $4c, $50, $4c, $50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $44, $48, $44, $48
// Lookup the absolute value of a signed number
// PRE_ and POST_ are used to ensure lookup of ABS-1,y works for y=0 and ABS+1,y works for y=0xff
.align $100
ABS_PRE: .byte 1
ABS:
.for(var i=0;i<$100;i++) {
.var x = (i<$80)?i:($100-i);
.byte abs(x)
}
ABS_POST: .byte 0