mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-08-07 22:25:13 +00:00
6831 lines
405 KiB
Plaintext
6831 lines
405 KiB
Plaintext
Resolved forward reference plex_irq to __interrupt(rom_min_c64) void plex_irq()
|
|
Resolved forward reference frame_done to frame_done
|
|
Resolved forward reference frame_done to frame_done
|
|
Inlined call vicSelectGfxBank::$0 = call toDd00 vicSelectGfxBank::gfx
|
|
Inlined call __init::$0 = call toSpritePtr SPRITES
|
|
Inlined call call plexSetScreen plexInit::screen
|
|
Inlined call call plexFreePrepare
|
|
Inlined call call plexFreeAdd plexShowSprite::ypos
|
|
Inlined call main::$3 = call toD018 SCREEN CHARSET_DEFAULT
|
|
Inlined call plex_irq::$2 = call plexFreeNextYpos
|
|
Inlined call call __init
|
|
|
|
CONTROL FLOW GRAPH SSA
|
|
|
|
void plexInit(byte* plexInit::screen)
|
|
plexInit: scope:[plexInit] from main::@11
|
|
plexInit::screen#1 = phi( main::@11/plexInit::screen#0 )
|
|
plexInit::plexSetScreen1_screen#0 = plexInit::screen#1
|
|
to:plexInit::plexSetScreen1
|
|
plexInit::plexSetScreen1: scope:[plexInit] from plexInit
|
|
plexInit::plexSetScreen1_screen#1 = phi( plexInit/plexInit::plexSetScreen1_screen#0 )
|
|
plexInit::plexSetScreen1_$0 = plexInit::plexSetScreen1_screen#1 + $3f8
|
|
PLEX_SCREEN_PTR = plexInit::plexSetScreen1_$0
|
|
to:plexInit::@2
|
|
plexInit::@2: scope:[plexInit] from plexInit::plexSetScreen1
|
|
plexInit::i#0 = 0
|
|
to:plexInit::@1
|
|
plexInit::@1: scope:[plexInit] from plexInit::@1 plexInit::@2
|
|
plexInit::i#2 = phi( plexInit::@1/plexInit::i#1, plexInit::@2/plexInit::i#0 )
|
|
PLEX_SORTED_IDX[plexInit::i#2] = plexInit::i#2
|
|
plexInit::i#1 = plexInit::i#2 + rangenext(0,PLEX_COUNT-1)
|
|
plexInit::$1 = plexInit::i#1 != rangelast(0,PLEX_COUNT-1)
|
|
if(plexInit::$1) goto plexInit::@1
|
|
to:plexInit::@return
|
|
plexInit::@return: scope:[plexInit] from plexInit::@1
|
|
return
|
|
to:@return
|
|
|
|
void plexSort()
|
|
plexSort: scope:[plexSort] from main::@13 main::@15
|
|
plexSort::m#0 = 0
|
|
to:plexSort::@1
|
|
plexSort::@1: scope:[plexSort] from plexSort plexSort::@2
|
|
plexSort::m#2 = phi( plexSort/plexSort::m#0, plexSort::@2/plexSort::m#1 )
|
|
plexSort::$1 = plexSort::m#2 + 1
|
|
plexSort::nxt_idx#0 = PLEX_SORTED_IDX[plexSort::$1]
|
|
plexSort::nxt_y#0 = PLEX_YPOS[plexSort::nxt_idx#0]
|
|
plexSort::$2 = plexSort::nxt_y#0 < PLEX_YPOS[PLEX_SORTED_IDX[plexSort::m#2]]
|
|
plexSort::$3 = ! plexSort::$2
|
|
if(plexSort::$3) goto plexSort::@2
|
|
to:plexSort::@5
|
|
plexSort::@2: scope:[plexSort] from plexSort::@1 plexSort::@4
|
|
plexSort::m#3 = phi( plexSort::@1/plexSort::m#2, plexSort::@4/plexSort::m#5 )
|
|
plexSort::m#1 = plexSort::m#3 + rangenext(0,PLEX_COUNT-2)
|
|
plexSort::$8 = plexSort::m#1 != rangelast(0,PLEX_COUNT-2)
|
|
if(plexSort::$8) goto plexSort::@1
|
|
to:plexSort::@6
|
|
plexSort::@5: scope:[plexSort] from plexSort::@1
|
|
plexSort::nxt_idx#3 = phi( plexSort::@1/plexSort::nxt_idx#0 )
|
|
plexSort::nxt_y#2 = phi( plexSort::@1/plexSort::nxt_y#0 )
|
|
plexSort::m#4 = phi( plexSort::@1/plexSort::m#2 )
|
|
plexSort::s#0 = plexSort::m#4
|
|
to:plexSort::@3
|
|
plexSort::@3: scope:[plexSort] from plexSort::@3 plexSort::@5
|
|
plexSort::m#6 = phi( plexSort::@3/plexSort::m#6, plexSort::@5/plexSort::m#4 )
|
|
plexSort::nxt_idx#2 = phi( plexSort::@3/plexSort::nxt_idx#2, plexSort::@5/plexSort::nxt_idx#3 )
|
|
plexSort::nxt_y#1 = phi( plexSort::@3/plexSort::nxt_y#1, plexSort::@5/plexSort::nxt_y#2 )
|
|
plexSort::s#3 = phi( plexSort::@3/plexSort::s#1, plexSort::@5/plexSort::s#0 )
|
|
plexSort::$4 = plexSort::s#3 + 1
|
|
PLEX_SORTED_IDX[plexSort::$4] = PLEX_SORTED_IDX[plexSort::s#3]
|
|
plexSort::s#1 = -- plexSort::s#3
|
|
plexSort::$5 = plexSort::s#1 != $ff
|
|
plexSort::$6 = plexSort::nxt_y#1 < PLEX_YPOS[PLEX_SORTED_IDX[plexSort::s#1]]
|
|
plexSort::$7 = plexSort::$5 && plexSort::$6
|
|
if(plexSort::$7) goto plexSort::@3
|
|
to:plexSort::@4
|
|
plexSort::@4: scope:[plexSort] from plexSort::@3
|
|
plexSort::m#5 = phi( plexSort::@3/plexSort::m#6 )
|
|
plexSort::nxt_idx#1 = phi( plexSort::@3/plexSort::nxt_idx#2 )
|
|
plexSort::s#4 = phi( plexSort::@3/plexSort::s#1 )
|
|
plexSort::s#2 = ++ plexSort::s#4
|
|
PLEX_SORTED_IDX[plexSort::s#2] = plexSort::nxt_idx#1
|
|
to:plexSort::@2
|
|
plexSort::@6: scope:[plexSort] from plexSort::@2
|
|
plex_show_idx = 0
|
|
plex_sprite_idx = 0
|
|
plex_sprite_msb = 1
|
|
to:plexSort::plexFreePrepare1
|
|
plexSort::plexFreePrepare1: scope:[plexSort] from plexSort::@6
|
|
plexSort::plexFreePrepare1_s#0 = 0
|
|
to:plexSort::plexFreePrepare1_@1
|
|
plexSort::plexFreePrepare1_@1: scope:[plexSort] from plexSort::plexFreePrepare1 plexSort::plexFreePrepare1_@1
|
|
plexSort::plexFreePrepare1_s#2 = phi( plexSort::plexFreePrepare1/plexSort::plexFreePrepare1_s#0, plexSort::plexFreePrepare1_@1/plexSort::plexFreePrepare1_s#1 )
|
|
PLEX_FREE_YPOS[plexSort::plexFreePrepare1_s#2] = 0
|
|
plexSort::plexFreePrepare1_s#1 = plexSort::plexFreePrepare1_s#2 + rangenext(0,7)
|
|
plexSort::plexFreePrepare1_$0 = plexSort::plexFreePrepare1_s#1 != rangelast(0,7)
|
|
if(plexSort::plexFreePrepare1_$0) goto plexSort::plexFreePrepare1_@1
|
|
to:plexSort::plexFreePrepare1_@2
|
|
plexSort::plexFreePrepare1_@2: scope:[plexSort] from plexSort::plexFreePrepare1_@1
|
|
plex_free_next = 0
|
|
to:plexSort::@return
|
|
plexSort::@return: scope:[plexSort] from plexSort::plexFreePrepare1_@2
|
|
return
|
|
to:@return
|
|
|
|
void plexShowSprite()
|
|
plexShowSprite: scope:[plexShowSprite] from plex_irq::@3
|
|
plexShowSprite::$0 = plex_sprite_idx * 2
|
|
plexShowSprite::plex_sprite_idx2#0 = plexShowSprite::$0
|
|
plexShowSprite::ypos#0 = PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]]
|
|
SPRITES_YPOS[plexShowSprite::plex_sprite_idx2#0] = plexShowSprite::ypos#0
|
|
plexShowSprite::plexFreeAdd1_ypos#0 = plexShowSprite::ypos#0
|
|
to:plexShowSprite::plexFreeAdd1
|
|
plexShowSprite::plexFreeAdd1: scope:[plexShowSprite] from plexShowSprite
|
|
plexShowSprite::plex_sprite_idx2#2 = phi( plexShowSprite/plexShowSprite::plex_sprite_idx2#0 )
|
|
plexShowSprite::plexFreeAdd1_ypos#1 = phi( plexShowSprite/plexShowSprite::plexFreeAdd1_ypos#0 )
|
|
plexShowSprite::plexFreeAdd1_$0 = plexShowSprite::plexFreeAdd1_ypos#1 + $16
|
|
PLEX_FREE_YPOS[plex_free_next] = plexShowSprite::plexFreeAdd1_$0
|
|
plexShowSprite::plexFreeAdd1_$1 = plex_free_next + 1
|
|
plexShowSprite::plexFreeAdd1_$2 = plexShowSprite::plexFreeAdd1_$1 & 7
|
|
plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
to:plexShowSprite::@5
|
|
plexShowSprite::@5: scope:[plexShowSprite] from plexShowSprite::plexFreeAdd1
|
|
plexShowSprite::plex_sprite_idx2#1 = phi( plexShowSprite::plexFreeAdd1/plexShowSprite::plex_sprite_idx2#2 )
|
|
PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]]
|
|
plexShowSprite::xpos_idx#0 = PLEX_SORTED_IDX[plex_show_idx]
|
|
plexShowSprite::$10 = plexShowSprite::xpos_idx#0 * SIZEOF_WORD
|
|
plexShowSprite::$2 = < PLEX_XPOS[plexShowSprite::$10]
|
|
SPRITES_XPOS[plexShowSprite::plex_sprite_idx2#1] = plexShowSprite::$2
|
|
plexShowSprite::$11 = plexShowSprite::xpos_idx#0 * SIZEOF_WORD
|
|
plexShowSprite::$3 = > PLEX_XPOS[plexShowSprite::$11]
|
|
plexShowSprite::$4 = plexShowSprite::$3 != 0
|
|
if(plexShowSprite::$4) goto plexShowSprite::@1
|
|
to:plexShowSprite::@3
|
|
plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite::@5
|
|
*SPRITES_XMSB = *SPRITES_XMSB | plex_sprite_msb
|
|
to:plexShowSprite::@2
|
|
plexShowSprite::@3: scope:[plexShowSprite] from plexShowSprite::@5
|
|
plexShowSprite::$9 = $ff ^ plex_sprite_msb
|
|
*SPRITES_XMSB = *SPRITES_XMSB & plexShowSprite::$9
|
|
to:plexShowSprite::@2
|
|
plexShowSprite::@2: scope:[plexShowSprite] from plexShowSprite::@1 plexShowSprite::@3
|
|
plexShowSprite::$5 = plex_sprite_idx + 1
|
|
plexShowSprite::$6 = plexShowSprite::$5 & 7
|
|
plex_sprite_idx = plexShowSprite::$6
|
|
plex_show_idx = ++ plex_show_idx
|
|
plex_sprite_msb = plex_sprite_msb << 1
|
|
plexShowSprite::$7 = plex_sprite_msb == 0
|
|
plexShowSprite::$8 = ! plexShowSprite::$7
|
|
if(plexShowSprite::$8) goto plexShowSprite::@return
|
|
to:plexShowSprite::@4
|
|
plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite::@2
|
|
plex_sprite_msb = 1
|
|
to:plexShowSprite::@return
|
|
plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@2 plexShowSprite::@4
|
|
return
|
|
to:@return
|
|
|
|
void main()
|
|
main: scope:[main] from __start::@1
|
|
x_movement_idx#38 = phi( __start::@1/x_movement_idx#20 )
|
|
y_sin_idx#38 = phi( __start::@1/y_sin_idx#20 )
|
|
scroll_text_next#38 = phi( __start::@1/scroll_text_next#22 )
|
|
SPRITE_0#27 = phi( __start::@1/SPRITE_0#11 )
|
|
asm { sei }
|
|
*PROCPORT = PROCPORT_RAM_CHARROM
|
|
font_2x2::font_original#0 = CHARGEN
|
|
font_2x2::font_2x2#0 = FONT
|
|
call font_2x2
|
|
to:main::@10
|
|
main::@10: scope:[main] from main
|
|
x_movement_idx#37 = phi( main/x_movement_idx#38 )
|
|
y_sin_idx#37 = phi( main/y_sin_idx#38 )
|
|
scroll_text_next#37 = phi( main/scroll_text_next#38 )
|
|
SPRITE_0#24 = phi( main/SPRITE_0#27 )
|
|
*PROCPORT = PROCPORT_BASIC_KERNEL_IO
|
|
asm { cli }
|
|
font_2x2_to_sprites::font_2x2#0 = FONT
|
|
font_2x2_to_sprites::sprites#0 = SPRITES
|
|
font_2x2_to_sprites::num_chars#0 = $40
|
|
call font_2x2_to_sprites
|
|
to:main::@11
|
|
main::@11: scope:[main] from main::@10
|
|
x_movement_idx#36 = phi( main::@10/x_movement_idx#37 )
|
|
y_sin_idx#36 = phi( main::@10/y_sin_idx#37 )
|
|
scroll_text_next#36 = phi( main::@10/scroll_text_next#37 )
|
|
SPRITE_0#21 = phi( main::@10/SPRITE_0#24 )
|
|
plexInit::screen#0 = SCREEN
|
|
call plexInit
|
|
to:main::@12
|
|
main::@12: scope:[main] from main::@11
|
|
x_movement_idx#35 = phi( main::@11/x_movement_idx#36 )
|
|
y_sin_idx#35 = phi( main::@11/y_sin_idx#36 )
|
|
scroll_text_next#35 = phi( main::@11/scroll_text_next#36 )
|
|
SPRITE_0#18 = phi( main::@11/SPRITE_0#21 )
|
|
main::toD0181_screen#0 = SCREEN
|
|
main::toD0181_gfx#0 = CHARSET_DEFAULT
|
|
to:main::toD0181
|
|
main::toD0181: scope:[main] from main::@12
|
|
x_movement_idx#34 = phi( main::@12/x_movement_idx#35 )
|
|
y_sin_idx#34 = phi( main::@12/y_sin_idx#35 )
|
|
scroll_text_next#34 = phi( main::@12/scroll_text_next#35 )
|
|
SPRITE_0#15 = phi( main::@12/SPRITE_0#18 )
|
|
main::toD0181_gfx#1 = phi( main::@12/main::toD0181_gfx#0 )
|
|
main::toD0181_screen#1 = phi( main::@12/main::toD0181_screen#0 )
|
|
main::toD0181_$7 = (word)main::toD0181_screen#1
|
|
main::toD0181_$0 = main::toD0181_$7 & $3fff
|
|
main::toD0181_$1 = main::toD0181_$0 * 4
|
|
main::toD0181_$2 = > main::toD0181_$1
|
|
main::toD0181_$3 = > (word)main::toD0181_gfx#1
|
|
main::toD0181_$4 = main::toD0181_$3 / 4
|
|
main::toD0181_$5 = main::toD0181_$4 & $f
|
|
main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
|
|
main::toD0181_return#0 = main::toD0181_$6
|
|
to:main::toD0181_@return
|
|
main::toD0181_@return: scope:[main] from main::toD0181
|
|
x_movement_idx#33 = phi( main::toD0181/x_movement_idx#34 )
|
|
y_sin_idx#33 = phi( main::toD0181/y_sin_idx#34 )
|
|
scroll_text_next#33 = phi( main::toD0181/scroll_text_next#34 )
|
|
SPRITE_0#12 = phi( main::toD0181/SPRITE_0#15 )
|
|
main::toD0181_return#2 = phi( main::toD0181/main::toD0181_return#0 )
|
|
main::toD0181_return#1 = main::toD0181_return#2
|
|
to:main::@9
|
|
main::@9: scope:[main] from main::toD0181_@return
|
|
x_movement_idx#32 = phi( main::toD0181_@return/x_movement_idx#33 )
|
|
y_sin_idx#32 = phi( main::toD0181_@return/y_sin_idx#33 )
|
|
scroll_text_next#32 = phi( main::toD0181_@return/scroll_text_next#33 )
|
|
SPRITE_0#9 = phi( main::toD0181_@return/SPRITE_0#12 )
|
|
main::toD0181_return#3 = phi( main::toD0181_@return/main::toD0181_return#1 )
|
|
main::$3 = main::toD0181_return#3
|
|
*D018 = main::$3
|
|
main::s#0 = 0
|
|
main::x#0 = 0
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@2 main::@9
|
|
x_movement_idx#30 = phi( main::@2/x_movement_idx#31, main::@9/x_movement_idx#32 )
|
|
y_sin_idx#30 = phi( main::@2/y_sin_idx#31, main::@9/y_sin_idx#32 )
|
|
scroll_text_next#30 = phi( main::@2/scroll_text_next#31, main::@9/scroll_text_next#32 )
|
|
main::x#3 = phi( main::@2/main::x#1, main::@9/main::x#0 )
|
|
SPRITE_0#5 = phi( main::@2/SPRITE_0#2, main::@9/SPRITE_0#9 )
|
|
main::s#2 = phi( main::@2/main::s#1, main::@9/main::s#0 )
|
|
main::$6 = main::s#2 < PLEX_COUNT
|
|
if(main::$6) goto main::@2
|
|
to:main::@3
|
|
main::@2: scope:[main] from main::@1
|
|
x_movement_idx#31 = phi( main::@1/x_movement_idx#30 )
|
|
y_sin_idx#31 = phi( main::@1/y_sin_idx#30 )
|
|
scroll_text_next#31 = phi( main::@1/scroll_text_next#30 )
|
|
main::x#2 = phi( main::@1/main::x#3 )
|
|
main::s#3 = phi( main::@1/main::s#2 )
|
|
SPRITE_0#2 = phi( main::@1/SPRITE_0#5 )
|
|
main::$7 = SPRITE_0#2 + ' '
|
|
PLEX_PTR[main::s#3] = main::$7
|
|
main::$12 = main::s#3 * SIZEOF_WORD
|
|
PLEX_XPOS[main::$12] = ((word)) { XMOVEMENT_HI[main::x#2], XMOVEMENT[main::x#2] }
|
|
main::x#1 = main::x#2 + 8
|
|
main::s#1 = ++ main::s#3
|
|
to:main::@1
|
|
main::@3: scope:[main] from main::@1
|
|
SPRITE_0#22 = phi( main::@1/SPRITE_0#5 )
|
|
x_movement_idx#27 = phi( main::@1/x_movement_idx#30 )
|
|
y_sin_idx#27 = phi( main::@1/y_sin_idx#30 )
|
|
scroll_text_next#29 = phi( main::@1/scroll_text_next#30 )
|
|
*SPRITES_ENABLE = $ff
|
|
main::s1#0 = 0
|
|
to:main::@4
|
|
main::@4: scope:[main] from main::@3 main::@4
|
|
SPRITE_0#19 = phi( main::@3/SPRITE_0#22, main::@4/SPRITE_0#19 )
|
|
x_movement_idx#21 = phi( main::@3/x_movement_idx#27, main::@4/x_movement_idx#21 )
|
|
y_sin_idx#21 = phi( main::@3/y_sin_idx#27, main::@4/y_sin_idx#21 )
|
|
scroll_text_next#23 = phi( main::@3/scroll_text_next#29, main::@4/scroll_text_next#23 )
|
|
main::s1#2 = phi( main::@3/main::s1#0, main::@4/main::s1#1 )
|
|
SPRITES_COLOR[main::s1#2] = WHITE
|
|
main::s1#1 = main::s1#2 + rangenext(0,7)
|
|
main::$8 = main::s1#1 != rangelast(0,7)
|
|
if(main::$8) goto main::@4
|
|
to:main::@5
|
|
main::@5: scope:[main] from main::@4
|
|
SPRITE_0#16 = phi( main::@4/SPRITE_0#19 )
|
|
x_movement_idx#16 = phi( main::@4/x_movement_idx#21 )
|
|
y_sin_idx#16 = phi( main::@4/y_sin_idx#21 )
|
|
scroll_text_next#17 = phi( main::@4/scroll_text_next#23 )
|
|
call plex_move
|
|
to:main::@13
|
|
main::@13: scope:[main] from main::@5
|
|
SPRITE_0#28 = phi( main::@5/SPRITE_0#16 )
|
|
x_movement_idx#8 = phi( main::@5/x_movement_idx#4 )
|
|
y_sin_idx#8 = phi( main::@5/y_sin_idx#4 )
|
|
scroll_text_next#9 = phi( main::@5/scroll_text_next#5 )
|
|
scroll_text_next#0 = scroll_text_next#9
|
|
y_sin_idx#0 = y_sin_idx#8
|
|
x_movement_idx#0 = x_movement_idx#8
|
|
call plexSort
|
|
to:main::@14
|
|
main::@14: scope:[main] from main::@13
|
|
SPRITE_0#25 = phi( main::@13/SPRITE_0#28 )
|
|
x_movement_idx#22 = phi( main::@13/x_movement_idx#0 )
|
|
y_sin_idx#22 = phi( main::@13/y_sin_idx#0 )
|
|
scroll_text_next#24 = phi( main::@13/scroll_text_next#0 )
|
|
asm { sei }
|
|
*((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
|
|
*VIC_CONTROL = *VIC_CONTROL & $7f
|
|
*RASTER = $28
|
|
*IRQ_ENABLE = IRQ_RASTER
|
|
*IRQ_STATUS = IRQ_RASTER
|
|
*KERNEL_IRQ = &plex_irq
|
|
asm { cli }
|
|
to:main::@6
|
|
main::@6: scope:[main] from main::@14 main::@16
|
|
SPRITE_0#23 = phi( main::@14/SPRITE_0#25, main::@16/SPRITE_0#26 )
|
|
x_movement_idx#18 = phi( main::@14/x_movement_idx#22, main::@16/x_movement_idx#23 )
|
|
y_sin_idx#18 = phi( main::@14/y_sin_idx#22, main::@16/y_sin_idx#23 )
|
|
scroll_text_next#19 = phi( main::@14/scroll_text_next#24, main::@16/scroll_text_next#25 )
|
|
if(true) goto main::@7
|
|
to:main::@return
|
|
main::@7: scope:[main] from main::@6 main::@7
|
|
SPRITE_0#20 = phi( main::@6/SPRITE_0#23, main::@7/SPRITE_0#20 )
|
|
x_movement_idx#24 = phi( main::@6/x_movement_idx#18, main::@7/x_movement_idx#24 )
|
|
y_sin_idx#24 = phi( main::@6/y_sin_idx#18, main::@7/y_sin_idx#24 )
|
|
scroll_text_next#26 = phi( main::@6/scroll_text_next#19, main::@7/scroll_text_next#26 )
|
|
main::$9 = ! frame_done
|
|
if(main::$9) goto main::@7
|
|
to:main::@8
|
|
main::@8: scope:[main] from main::@7
|
|
SPRITE_0#17 = phi( main::@7/SPRITE_0#20 )
|
|
x_movement_idx#17 = phi( main::@7/x_movement_idx#24 )
|
|
y_sin_idx#17 = phi( main::@7/y_sin_idx#24 )
|
|
scroll_text_next#18 = phi( main::@7/scroll_text_next#26 )
|
|
frame_done = false
|
|
call plex_move
|
|
to:main::@15
|
|
main::@15: scope:[main] from main::@8
|
|
SPRITE_0#29 = phi( main::@8/SPRITE_0#17 )
|
|
x_movement_idx#9 = phi( main::@8/x_movement_idx#4 )
|
|
y_sin_idx#9 = phi( main::@8/y_sin_idx#4 )
|
|
scroll_text_next#10 = phi( main::@8/scroll_text_next#5 )
|
|
scroll_text_next#1 = scroll_text_next#10
|
|
y_sin_idx#1 = y_sin_idx#9
|
|
x_movement_idx#1 = x_movement_idx#9
|
|
call plexSort
|
|
to:main::@16
|
|
main::@16: scope:[main] from main::@15
|
|
SPRITE_0#26 = phi( main::@15/SPRITE_0#29 )
|
|
x_movement_idx#23 = phi( main::@15/x_movement_idx#1 )
|
|
y_sin_idx#23 = phi( main::@15/y_sin_idx#1 )
|
|
scroll_text_next#25 = phi( main::@15/scroll_text_next#1 )
|
|
to:main::@6
|
|
main::@return: scope:[main] from main::@6
|
|
x_movement_idx#10 = phi( main::@6/x_movement_idx#18 )
|
|
y_sin_idx#10 = phi( main::@6/y_sin_idx#18 )
|
|
scroll_text_next#11 = phi( main::@6/scroll_text_next#19 )
|
|
scroll_text_next#2 = scroll_text_next#11
|
|
y_sin_idx#2 = y_sin_idx#10
|
|
x_movement_idx#2 = x_movement_idx#10
|
|
return
|
|
to:@return
|
|
|
|
void plex_move()
|
|
plex_move: scope:[plex_move] from main::@5 main::@8
|
|
SPRITE_0#13 = phi( main::@5/SPRITE_0#16, main::@8/SPRITE_0#17 )
|
|
scroll_text_next#27 = phi( main::@5/scroll_text_next#17, main::@8/scroll_text_next#18 )
|
|
x_movement_idx#11 = phi( main::@5/x_movement_idx#16, main::@8/x_movement_idx#17 )
|
|
y_sin_idx#11 = phi( main::@5/y_sin_idx#16, main::@8/y_sin_idx#17 )
|
|
plex_move::y_idx#0 = y_sin_idx#11
|
|
plex_move::x_idx#0 = x_movement_idx#11
|
|
plex_move::s#0 = 0
|
|
to:plex_move::@1
|
|
plex_move::@1: scope:[plex_move] from plex_move plex_move::@2
|
|
SPRITE_0#10 = phi( plex_move/SPRITE_0#13, plex_move::@2/SPRITE_0#14 )
|
|
x_movement_idx#25 = phi( plex_move/x_movement_idx#11, plex_move::@2/x_movement_idx#19 )
|
|
y_sin_idx#25 = phi( plex_move/y_sin_idx#11, plex_move::@2/y_sin_idx#19 )
|
|
scroll_text_next#20 = phi( plex_move/scroll_text_next#27, plex_move::@2/scroll_text_next#28 )
|
|
plex_move::x_idx#2 = phi( plex_move/plex_move::x_idx#0, plex_move::@2/plex_move::x_idx#1 )
|
|
plex_move::s#2 = phi( plex_move/plex_move::s#0, plex_move::@2/plex_move::s#1 )
|
|
plex_move::y_idx#2 = phi( plex_move/plex_move::y_idx#0, plex_move::@2/plex_move::y_idx#3 )
|
|
PLEX_YPOS[plex_move::s#2] = YSIN[plex_move::y_idx#2]
|
|
plex_move::y_idx#1 = plex_move::y_idx#2 + 8
|
|
plex_move::$6 = plex_move::s#2 * SIZEOF_WORD
|
|
PLEX_XPOS[plex_move::$6] = ((word)) { XMOVEMENT_HI[plex_move::x_idx#2], XMOVEMENT[plex_move::x_idx#2] }
|
|
plex_move::$0 = plex_move::x_idx#2 == 0
|
|
plex_move::$1 = ! plex_move::$0
|
|
if(plex_move::$1) goto plex_move::@2
|
|
to:plex_move::@4
|
|
plex_move::@2: scope:[plex_move] from plex_move::@1 plex_move::@3
|
|
SPRITE_0#14 = phi( plex_move::@1/SPRITE_0#10, plex_move::@3/SPRITE_0#3 )
|
|
scroll_text_next#28 = phi( plex_move::@1/scroll_text_next#20, plex_move::@3/scroll_text_next#3 )
|
|
x_movement_idx#19 = phi( plex_move::@1/x_movement_idx#25, plex_move::@3/x_movement_idx#26 )
|
|
y_sin_idx#19 = phi( plex_move::@1/y_sin_idx#25, plex_move::@3/y_sin_idx#26 )
|
|
plex_move::y_idx#3 = phi( plex_move::@1/plex_move::y_idx#1, plex_move::@3/plex_move::y_idx#4 )
|
|
plex_move::s#3 = phi( plex_move::@1/plex_move::s#2, plex_move::@3/plex_move::s#4 )
|
|
plex_move::x_idx#3 = phi( plex_move::@1/plex_move::x_idx#2, plex_move::@3/plex_move::x_idx#4 )
|
|
plex_move::x_idx#1 = plex_move::x_idx#3 + 8
|
|
plex_move::s#1 = plex_move::s#3 + rangenext(0,PLEX_COUNT-1)
|
|
plex_move::$5 = plex_move::s#1 != rangelast(0,PLEX_COUNT-1)
|
|
if(plex_move::$5) goto plex_move::@1
|
|
to:plex_move::@6
|
|
plex_move::@4: scope:[plex_move] from plex_move::@1
|
|
x_movement_idx#28 = phi( plex_move::@1/x_movement_idx#25 )
|
|
y_sin_idx#28 = phi( plex_move::@1/y_sin_idx#25 )
|
|
plex_move::y_idx#5 = phi( plex_move::@1/plex_move::y_idx#1 )
|
|
plex_move::x_idx#5 = phi( plex_move::@1/plex_move::x_idx#2 )
|
|
plex_move::s#5 = phi( plex_move::@1/plex_move::s#2 )
|
|
SPRITE_0#6 = phi( plex_move::@1/SPRITE_0#10 )
|
|
scroll_text_next#12 = phi( plex_move::@1/scroll_text_next#20 )
|
|
plex_move::$2 = *scroll_text_next#12 == 0
|
|
plex_move::$3 = ! plex_move::$2
|
|
if(plex_move::$3) goto plex_move::@3
|
|
to:plex_move::@5
|
|
plex_move::@3: scope:[plex_move] from plex_move::@4 plex_move::@5
|
|
x_movement_idx#26 = phi( plex_move::@4/x_movement_idx#28, plex_move::@5/x_movement_idx#29 )
|
|
y_sin_idx#26 = phi( plex_move::@4/y_sin_idx#28, plex_move::@5/y_sin_idx#29 )
|
|
plex_move::y_idx#4 = phi( plex_move::@4/plex_move::y_idx#5, plex_move::@5/plex_move::y_idx#6 )
|
|
plex_move::x_idx#4 = phi( plex_move::@4/plex_move::x_idx#5, plex_move::@5/plex_move::x_idx#6 )
|
|
plex_move::s#4 = phi( plex_move::@4/plex_move::s#5, plex_move::@5/plex_move::s#6 )
|
|
scroll_text_next#13 = phi( plex_move::@4/scroll_text_next#12, plex_move::@5/scroll_text_next#4 )
|
|
SPRITE_0#3 = phi( plex_move::@4/SPRITE_0#6, plex_move::@5/SPRITE_0#7 )
|
|
plex_move::$4 = SPRITE_0#3 + *scroll_text_next#13
|
|
PLEX_PTR[plex_move::s#4] = plex_move::$4
|
|
scroll_text_next#3 = ++ scroll_text_next#13
|
|
to:plex_move::@2
|
|
plex_move::@5: scope:[plex_move] from plex_move::@4
|
|
x_movement_idx#29 = phi( plex_move::@4/x_movement_idx#28 )
|
|
y_sin_idx#29 = phi( plex_move::@4/y_sin_idx#28 )
|
|
plex_move::y_idx#6 = phi( plex_move::@4/plex_move::y_idx#5 )
|
|
plex_move::x_idx#6 = phi( plex_move::@4/plex_move::x_idx#5 )
|
|
plex_move::s#6 = phi( plex_move::@4/plex_move::s#5 )
|
|
SPRITE_0#7 = phi( plex_move::@4/SPRITE_0#6 )
|
|
scroll_text_next#4 = SCROLL_TEXT
|
|
to:plex_move::@3
|
|
plex_move::@6: scope:[plex_move] from plex_move::@2
|
|
scroll_text_next#21 = phi( plex_move::@2/scroll_text_next#28 )
|
|
x_movement_idx#12 = phi( plex_move::@2/x_movement_idx#19 )
|
|
y_sin_idx#12 = phi( plex_move::@2/y_sin_idx#19 )
|
|
y_sin_idx#3 = y_sin_idx#12 + 3
|
|
x_movement_idx#3 = ++ x_movement_idx#12
|
|
to:plex_move::@return
|
|
plex_move::@return: scope:[plex_move] from plex_move::@6
|
|
x_movement_idx#13 = phi( plex_move::@6/x_movement_idx#3 )
|
|
y_sin_idx#13 = phi( plex_move::@6/y_sin_idx#3 )
|
|
scroll_text_next#14 = phi( plex_move::@6/scroll_text_next#21 )
|
|
scroll_text_next#5 = scroll_text_next#14
|
|
y_sin_idx#4 = y_sin_idx#13
|
|
x_movement_idx#4 = x_movement_idx#13
|
|
return
|
|
to:@return
|
|
|
|
__interrupt(rom_min_c64) void plex_irq()
|
|
plex_irq: scope:[plex_irq] from
|
|
asm { sei }
|
|
plex_irq::rasterY#0 = 0
|
|
to:plex_irq::@3
|
|
plex_irq::@3: scope:[plex_irq] from plex_irq plex_irq::@6
|
|
call plexShowSprite
|
|
to:plex_irq::@7
|
|
plex_irq::@7: scope:[plex_irq] from plex_irq::@3
|
|
to:plex_irq::plexFreeNextYpos1
|
|
plex_irq::plexFreeNextYpos1: scope:[plex_irq] from plex_irq::@7
|
|
plex_irq::plexFreeNextYpos1_return#0 = PLEX_FREE_YPOS[plex_free_next]
|
|
to:plex_irq::plexFreeNextYpos1_@return
|
|
plex_irq::plexFreeNextYpos1_@return: scope:[plex_irq] from plex_irq::plexFreeNextYpos1
|
|
plex_irq::plexFreeNextYpos1_return#2 = phi( plex_irq::plexFreeNextYpos1/plex_irq::plexFreeNextYpos1_return#0 )
|
|
plex_irq::plexFreeNextYpos1_return#1 = plex_irq::plexFreeNextYpos1_return#2
|
|
to:plex_irq::@6
|
|
plex_irq::@6: scope:[plex_irq] from plex_irq::plexFreeNextYpos1_@return
|
|
plex_irq::plexFreeNextYpos1_return#3 = phi( plex_irq::plexFreeNextYpos1_@return/plex_irq::plexFreeNextYpos1_return#1 )
|
|
plex_irq::$2 = plex_irq::plexFreeNextYpos1_return#3
|
|
plex_irq::rasterY#1 = plex_irq::$2
|
|
plex_irq::$3 = plex_show_idx < PLEX_COUNT
|
|
plex_irq::$4 = *RASTER + 3
|
|
plex_irq::$5 = plex_irq::rasterY#1 < plex_irq::$4
|
|
plex_irq::$6 = plex_irq::$3 && plex_irq::$5
|
|
if(plex_irq::$6) goto plex_irq::@3
|
|
to:plex_irq::@4
|
|
plex_irq::@4: scope:[plex_irq] from plex_irq::@6
|
|
plex_irq::rasterY#3 = phi( plex_irq::@6/plex_irq::rasterY#1 )
|
|
plex_irq::$0 = plex_show_idx < PLEX_COUNT
|
|
if(plex_irq::$0) goto plex_irq::@1
|
|
to:plex_irq::@5
|
|
plex_irq::@1: scope:[plex_irq] from plex_irq::@4
|
|
plex_irq::rasterY#2 = phi( plex_irq::@4/plex_irq::rasterY#3 )
|
|
*RASTER = plex_irq::rasterY#2
|
|
to:plex_irq::@2
|
|
plex_irq::@5: scope:[plex_irq] from plex_irq::@4
|
|
*RASTER = $28
|
|
frame_done = true
|
|
to:plex_irq::@2
|
|
plex_irq::@2: scope:[plex_irq] from plex_irq::@1 plex_irq::@5
|
|
*IRQ_STATUS = IRQ_RASTER
|
|
asm { cli }
|
|
to:plex_irq::@return
|
|
plex_irq::@return: scope:[plex_irq] from plex_irq::@2
|
|
return
|
|
to:@return
|
|
|
|
void font_2x2_to_sprites(byte* font_2x2_to_sprites::font_2x2 , byte* font_2x2_to_sprites::sprites , byte font_2x2_to_sprites::num_chars)
|
|
font_2x2_to_sprites: scope:[font_2x2_to_sprites] from main::@10
|
|
font_2x2_to_sprites::num_chars#2 = phi( main::@10/font_2x2_to_sprites::num_chars#0 )
|
|
font_2x2_to_sprites::sprites#1 = phi( main::@10/font_2x2_to_sprites::sprites#0 )
|
|
font_2x2_to_sprites::font_2x2#1 = phi( main::@10/font_2x2_to_sprites::font_2x2#0 )
|
|
font_2x2_to_sprites::char_current#0 = font_2x2_to_sprites::font_2x2#1
|
|
font_2x2_to_sprites::sprite#0 = font_2x2_to_sprites::sprites#1
|
|
font_2x2_to_sprites::c#0 = 0
|
|
to:font_2x2_to_sprites::@1
|
|
font_2x2_to_sprites::@1: scope:[font_2x2_to_sprites] from font_2x2_to_sprites font_2x2_to_sprites::@8
|
|
font_2x2_to_sprites::font_2x2#7 = phi( font_2x2_to_sprites/font_2x2_to_sprites::font_2x2#1, font_2x2_to_sprites::@8/font_2x2_to_sprites::font_2x2#9 )
|
|
font_2x2_to_sprites::sprite#6 = phi( font_2x2_to_sprites/font_2x2_to_sprites::sprite#0, font_2x2_to_sprites::@8/font_2x2_to_sprites::sprite#1 )
|
|
font_2x2_to_sprites::char_current#5 = phi( font_2x2_to_sprites/font_2x2_to_sprites::char_current#0, font_2x2_to_sprites::@8/font_2x2_to_sprites::char_current#1 )
|
|
font_2x2_to_sprites::num_chars#1 = phi( font_2x2_to_sprites/font_2x2_to_sprites::num_chars#2, font_2x2_to_sprites::@8/font_2x2_to_sprites::num_chars#3 )
|
|
font_2x2_to_sprites::c#2 = phi( font_2x2_to_sprites/font_2x2_to_sprites::c#0, font_2x2_to_sprites::@8/font_2x2_to_sprites::c#1 )
|
|
font_2x2_to_sprites::$0 = font_2x2_to_sprites::c#2 < font_2x2_to_sprites::num_chars#1
|
|
if(font_2x2_to_sprites::$0) goto font_2x2_to_sprites::@2
|
|
to:font_2x2_to_sprites::@return
|
|
font_2x2_to_sprites::@2: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@1
|
|
font_2x2_to_sprites::num_chars#9 = phi( font_2x2_to_sprites::@1/font_2x2_to_sprites::num_chars#1 )
|
|
font_2x2_to_sprites::c#9 = phi( font_2x2_to_sprites::@1/font_2x2_to_sprites::c#2 )
|
|
font_2x2_to_sprites::font_2x2#5 = phi( font_2x2_to_sprites::@1/font_2x2_to_sprites::font_2x2#7 )
|
|
font_2x2_to_sprites::sprite#4 = phi( font_2x2_to_sprites::@1/font_2x2_to_sprites::sprite#6 )
|
|
font_2x2_to_sprites::char_current#2 = phi( font_2x2_to_sprites::@1/font_2x2_to_sprites::char_current#5 )
|
|
font_2x2_to_sprites::char_left#0 = font_2x2_to_sprites::char_current#2
|
|
font_2x2_to_sprites::$1 = font_2x2_to_sprites::char_current#2 + $40*8
|
|
font_2x2_to_sprites::char_right#0 = font_2x2_to_sprites::$1
|
|
font_2x2_to_sprites::sprite_idx#0 = 0
|
|
font_2x2_to_sprites::i#0 = 0
|
|
to:font_2x2_to_sprites::@3
|
|
font_2x2_to_sprites::@3: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@2 font_2x2_to_sprites::@5
|
|
font_2x2_to_sprites::num_chars#8 = phi( font_2x2_to_sprites::@2/font_2x2_to_sprites::num_chars#9, font_2x2_to_sprites::@5/font_2x2_to_sprites::num_chars#4 )
|
|
font_2x2_to_sprites::c#8 = phi( font_2x2_to_sprites::@2/font_2x2_to_sprites::c#9, font_2x2_to_sprites::@5/font_2x2_to_sprites::c#4 )
|
|
font_2x2_to_sprites::font_2x2#4 = phi( font_2x2_to_sprites::@2/font_2x2_to_sprites::font_2x2#5, font_2x2_to_sprites::@5/font_2x2_to_sprites::font_2x2#6 )
|
|
font_2x2_to_sprites::char_current#6 = phi( font_2x2_to_sprites::@2/font_2x2_to_sprites::char_current#2, font_2x2_to_sprites::@5/font_2x2_to_sprites::char_current#7 )
|
|
font_2x2_to_sprites::char_right#3 = phi( font_2x2_to_sprites::@2/font_2x2_to_sprites::char_right#0, font_2x2_to_sprites::@5/font_2x2_to_sprites::char_right#4 )
|
|
font_2x2_to_sprites::sprite_idx#4 = phi( font_2x2_to_sprites::@2/font_2x2_to_sprites::sprite_idx#0, font_2x2_to_sprites::@5/font_2x2_to_sprites::sprite_idx#5 )
|
|
font_2x2_to_sprites::sprite#2 = phi( font_2x2_to_sprites::@2/font_2x2_to_sprites::sprite#4, font_2x2_to_sprites::@5/font_2x2_to_sprites::sprite#5 )
|
|
font_2x2_to_sprites::char_left#3 = phi( font_2x2_to_sprites::@2/font_2x2_to_sprites::char_left#0, font_2x2_to_sprites::@5/font_2x2_to_sprites::char_left#4 )
|
|
font_2x2_to_sprites::i#2 = phi( font_2x2_to_sprites::@2/font_2x2_to_sprites::i#0, font_2x2_to_sprites::@5/font_2x2_to_sprites::i#1 )
|
|
font_2x2_to_sprites::$2 = font_2x2_to_sprites::i#2 & 7
|
|
font_2x2_to_sprites::sprite#2[font_2x2_to_sprites::sprite_idx#4] = font_2x2_to_sprites::char_left#3[font_2x2_to_sprites::$2]
|
|
font_2x2_to_sprites::sprite_idx#1 = ++ font_2x2_to_sprites::sprite_idx#4
|
|
font_2x2_to_sprites::$3 = font_2x2_to_sprites::i#2 & 7
|
|
font_2x2_to_sprites::sprite#2[font_2x2_to_sprites::sprite_idx#1] = font_2x2_to_sprites::char_right#3[font_2x2_to_sprites::$3]
|
|
font_2x2_to_sprites::sprite_idx#2 = ++ font_2x2_to_sprites::sprite_idx#1
|
|
font_2x2_to_sprites::sprite#2[font_2x2_to_sprites::sprite_idx#2] = 0
|
|
font_2x2_to_sprites::sprite_idx#3 = ++ font_2x2_to_sprites::sprite_idx#2
|
|
font_2x2_to_sprites::$4 = font_2x2_to_sprites::i#2 == 7
|
|
if(font_2x2_to_sprites::$4) goto font_2x2_to_sprites::@4
|
|
to:font_2x2_to_sprites::@6
|
|
font_2x2_to_sprites::@4: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@3
|
|
font_2x2_to_sprites::font_2x2#8 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::font_2x2#4 )
|
|
font_2x2_to_sprites::num_chars#5 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::num_chars#8 )
|
|
font_2x2_to_sprites::c#5 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::c#8 )
|
|
font_2x2_to_sprites::sprite_idx#6 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::sprite_idx#3 )
|
|
font_2x2_to_sprites::sprite#7 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::sprite#2 )
|
|
font_2x2_to_sprites::i#5 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::i#2 )
|
|
font_2x2_to_sprites::char_current#3 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::char_current#6 )
|
|
font_2x2_to_sprites::$9 = font_2x2_to_sprites::char_current#3 + $80*8
|
|
font_2x2_to_sprites::char_left#1 = font_2x2_to_sprites::$9
|
|
font_2x2_to_sprites::$10 = font_2x2_to_sprites::char_current#3 + $c0*8
|
|
font_2x2_to_sprites::char_right#1 = font_2x2_to_sprites::$10
|
|
to:font_2x2_to_sprites::@5
|
|
font_2x2_to_sprites::@6: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@3
|
|
font_2x2_to_sprites::num_chars#6 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::num_chars#8 )
|
|
font_2x2_to_sprites::c#6 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::c#8 )
|
|
font_2x2_to_sprites::char_current#8 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::char_current#6 )
|
|
font_2x2_to_sprites::char_right#5 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::char_right#3 )
|
|
font_2x2_to_sprites::sprite_idx#7 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::sprite_idx#3 )
|
|
font_2x2_to_sprites::sprite#8 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::sprite#2 )
|
|
font_2x2_to_sprites::char_left#5 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::char_left#3 )
|
|
font_2x2_to_sprites::font_2x2#3 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::font_2x2#4 )
|
|
font_2x2_to_sprites::i#3 = phi( font_2x2_to_sprites::@3/font_2x2_to_sprites::i#2 )
|
|
font_2x2_to_sprites::$5 = font_2x2_to_sprites::i#3 == $f
|
|
font_2x2_to_sprites::$6 = ! font_2x2_to_sprites::$5
|
|
if(font_2x2_to_sprites::$6) goto font_2x2_to_sprites::@5
|
|
to:font_2x2_to_sprites::@7
|
|
font_2x2_to_sprites::@7: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@6
|
|
font_2x2_to_sprites::num_chars#7 = phi( font_2x2_to_sprites::@6/font_2x2_to_sprites::num_chars#6 )
|
|
font_2x2_to_sprites::c#7 = phi( font_2x2_to_sprites::@6/font_2x2_to_sprites::c#6 )
|
|
font_2x2_to_sprites::char_current#9 = phi( font_2x2_to_sprites::@6/font_2x2_to_sprites::char_current#8 )
|
|
font_2x2_to_sprites::sprite_idx#8 = phi( font_2x2_to_sprites::@6/font_2x2_to_sprites::sprite_idx#7 )
|
|
font_2x2_to_sprites::sprite#9 = phi( font_2x2_to_sprites::@6/font_2x2_to_sprites::sprite#8 )
|
|
font_2x2_to_sprites::i#6 = phi( font_2x2_to_sprites::@6/font_2x2_to_sprites::i#3 )
|
|
font_2x2_to_sprites::font_2x2#2 = phi( font_2x2_to_sprites::@6/font_2x2_to_sprites::font_2x2#3 )
|
|
font_2x2_to_sprites::$7 = font_2x2_to_sprites::font_2x2#2 + ' '*8
|
|
font_2x2_to_sprites::char_left#2 = font_2x2_to_sprites::$7
|
|
font_2x2_to_sprites::$8 = font_2x2_to_sprites::font_2x2#2 + ' '*8
|
|
font_2x2_to_sprites::char_right#2 = font_2x2_to_sprites::$8
|
|
to:font_2x2_to_sprites::@5
|
|
font_2x2_to_sprites::@5: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@4 font_2x2_to_sprites::@6 font_2x2_to_sprites::@7
|
|
font_2x2_to_sprites::font_2x2#6 = phi( font_2x2_to_sprites::@4/font_2x2_to_sprites::font_2x2#8, font_2x2_to_sprites::@6/font_2x2_to_sprites::font_2x2#3, font_2x2_to_sprites::@7/font_2x2_to_sprites::font_2x2#2 )
|
|
font_2x2_to_sprites::num_chars#4 = phi( font_2x2_to_sprites::@4/font_2x2_to_sprites::num_chars#5, font_2x2_to_sprites::@6/font_2x2_to_sprites::num_chars#6, font_2x2_to_sprites::@7/font_2x2_to_sprites::num_chars#7 )
|
|
font_2x2_to_sprites::c#4 = phi( font_2x2_to_sprites::@4/font_2x2_to_sprites::c#5, font_2x2_to_sprites::@6/font_2x2_to_sprites::c#6, font_2x2_to_sprites::@7/font_2x2_to_sprites::c#7 )
|
|
font_2x2_to_sprites::char_current#7 = phi( font_2x2_to_sprites::@4/font_2x2_to_sprites::char_current#3, font_2x2_to_sprites::@6/font_2x2_to_sprites::char_current#8, font_2x2_to_sprites::@7/font_2x2_to_sprites::char_current#9 )
|
|
font_2x2_to_sprites::char_right#4 = phi( font_2x2_to_sprites::@4/font_2x2_to_sprites::char_right#1, font_2x2_to_sprites::@6/font_2x2_to_sprites::char_right#5, font_2x2_to_sprites::@7/font_2x2_to_sprites::char_right#2 )
|
|
font_2x2_to_sprites::sprite_idx#5 = phi( font_2x2_to_sprites::@4/font_2x2_to_sprites::sprite_idx#6, font_2x2_to_sprites::@6/font_2x2_to_sprites::sprite_idx#7, font_2x2_to_sprites::@7/font_2x2_to_sprites::sprite_idx#8 )
|
|
font_2x2_to_sprites::sprite#5 = phi( font_2x2_to_sprites::@4/font_2x2_to_sprites::sprite#7, font_2x2_to_sprites::@6/font_2x2_to_sprites::sprite#8, font_2x2_to_sprites::@7/font_2x2_to_sprites::sprite#9 )
|
|
font_2x2_to_sprites::char_left#4 = phi( font_2x2_to_sprites::@4/font_2x2_to_sprites::char_left#1, font_2x2_to_sprites::@6/font_2x2_to_sprites::char_left#5, font_2x2_to_sprites::@7/font_2x2_to_sprites::char_left#2 )
|
|
font_2x2_to_sprites::i#4 = phi( font_2x2_to_sprites::@4/font_2x2_to_sprites::i#5, font_2x2_to_sprites::@6/font_2x2_to_sprites::i#3, font_2x2_to_sprites::@7/font_2x2_to_sprites::i#6 )
|
|
font_2x2_to_sprites::i#1 = font_2x2_to_sprites::i#4 + rangenext(0,$14)
|
|
font_2x2_to_sprites::$11 = font_2x2_to_sprites::i#1 != rangelast(0,$14)
|
|
if(font_2x2_to_sprites::$11) goto font_2x2_to_sprites::@3
|
|
to:font_2x2_to_sprites::@8
|
|
font_2x2_to_sprites::@8: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@5
|
|
font_2x2_to_sprites::font_2x2#9 = phi( font_2x2_to_sprites::@5/font_2x2_to_sprites::font_2x2#6 )
|
|
font_2x2_to_sprites::num_chars#3 = phi( font_2x2_to_sprites::@5/font_2x2_to_sprites::num_chars#4 )
|
|
font_2x2_to_sprites::c#3 = phi( font_2x2_to_sprites::@5/font_2x2_to_sprites::c#4 )
|
|
font_2x2_to_sprites::sprite#3 = phi( font_2x2_to_sprites::@5/font_2x2_to_sprites::sprite#5 )
|
|
font_2x2_to_sprites::char_current#4 = phi( font_2x2_to_sprites::@5/font_2x2_to_sprites::char_current#7 )
|
|
font_2x2_to_sprites::char_current#1 = font_2x2_to_sprites::char_current#4 + 8
|
|
font_2x2_to_sprites::sprite#1 = font_2x2_to_sprites::sprite#3 + $40
|
|
font_2x2_to_sprites::c#1 = ++ font_2x2_to_sprites::c#3
|
|
to:font_2x2_to_sprites::@1
|
|
font_2x2_to_sprites::@return: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@1
|
|
return
|
|
to:@return
|
|
|
|
void font_2x2(byte* font_2x2::font_original , byte* font_2x2::font_2x2)
|
|
font_2x2: scope:[font_2x2] from main
|
|
font_2x2::font_2x2#1 = phi( main/font_2x2::font_2x2#0 )
|
|
font_2x2::font_original#1 = phi( main/font_2x2::font_original#0 )
|
|
font_2x2::next_original#0 = font_2x2::font_original#1
|
|
font_2x2::next_2x2#0 = font_2x2::font_2x2#1
|
|
font_2x2::c#0 = 0
|
|
to:font_2x2::@1
|
|
font_2x2::@1: scope:[font_2x2] from font_2x2 font_2x2::@10
|
|
font_2x2::c#11 = phi( font_2x2/font_2x2::c#0, font_2x2::@10/font_2x2::c#1 )
|
|
font_2x2::next_original#4 = phi( font_2x2/font_2x2::next_original#0, font_2x2::@10/font_2x2::next_original#1 )
|
|
font_2x2::next_2x2#2 = phi( font_2x2/font_2x2::next_2x2#0, font_2x2::@10/font_2x2::next_2x2#1 )
|
|
font_2x2::next_2x2_left#0 = font_2x2::next_2x2#2
|
|
font_2x2::$0 = font_2x2::next_2x2#2 + $40*8
|
|
font_2x2::next_2x2_right#0 = font_2x2::$0
|
|
font_2x2::l2#0 = 0
|
|
font_2x2::l#0 = 0
|
|
to:font_2x2::@2
|
|
font_2x2::@2: scope:[font_2x2] from font_2x2::@1 font_2x2::@9
|
|
font_2x2::c#10 = phi( font_2x2::@1/font_2x2::c#11, font_2x2::@9/font_2x2::c#3 )
|
|
font_2x2::next_2x2#11 = phi( font_2x2::@1/font_2x2::next_2x2#2, font_2x2::@9/font_2x2::next_2x2#6 )
|
|
font_2x2::next_2x2_right#7 = phi( font_2x2::@1/font_2x2::next_2x2_right#0, font_2x2::@9/font_2x2::next_2x2_right#8 )
|
|
font_2x2::l2#8 = phi( font_2x2::@1/font_2x2::l2#0, font_2x2::@9/font_2x2::l2#9 )
|
|
font_2x2::next_2x2_left#7 = phi( font_2x2::@1/font_2x2::next_2x2_left#0, font_2x2::@9/font_2x2::next_2x2_left#8 )
|
|
font_2x2::l#2 = phi( font_2x2::@1/font_2x2::l#0, font_2x2::@9/font_2x2::l#1 )
|
|
font_2x2::next_original#2 = phi( font_2x2::@1/font_2x2::next_original#4, font_2x2::@9/font_2x2::next_original#5 )
|
|
font_2x2::glyph_bits#0 = font_2x2::next_original#2[font_2x2::l#2]
|
|
font_2x2::glyph_bits_2x2#0 = 0
|
|
font_2x2::b#0 = 0
|
|
to:font_2x2::@3
|
|
font_2x2::@3: scope:[font_2x2] from font_2x2::@2 font_2x2::@6
|
|
font_2x2::c#9 = phi( font_2x2::@2/font_2x2::c#10, font_2x2::@6/font_2x2::c#6 )
|
|
font_2x2::next_original#11 = phi( font_2x2::@2/font_2x2::next_original#2, font_2x2::@6/font_2x2::next_original#8 )
|
|
font_2x2::next_2x2#10 = phi( font_2x2::@2/font_2x2::next_2x2#11, font_2x2::@6/font_2x2::next_2x2#7 )
|
|
font_2x2::l#9 = phi( font_2x2::@2/font_2x2::l#2, font_2x2::@6/font_2x2::l#6 )
|
|
font_2x2::next_2x2_right#6 = phi( font_2x2::@2/font_2x2::next_2x2_right#7, font_2x2::@6/font_2x2::next_2x2_right#3 )
|
|
font_2x2::l2#7 = phi( font_2x2::@2/font_2x2::l2#8, font_2x2::@6/font_2x2::l2#4 )
|
|
font_2x2::next_2x2_left#6 = phi( font_2x2::@2/font_2x2::next_2x2_left#7, font_2x2::@6/font_2x2::next_2x2_left#3 )
|
|
font_2x2::b#5 = phi( font_2x2::@2/font_2x2::b#0, font_2x2::@6/font_2x2::b#1 )
|
|
font_2x2::glyph_bits_2x2#7 = phi( font_2x2::@2/font_2x2::glyph_bits_2x2#0, font_2x2::@6/font_2x2::glyph_bits_2x2#2 )
|
|
font_2x2::glyph_bits#2 = phi( font_2x2::@2/font_2x2::glyph_bits#0, font_2x2::@6/font_2x2::glyph_bits#1 )
|
|
font_2x2::$1 = font_2x2::glyph_bits#2 & $80
|
|
font_2x2::$22 = 0 != font_2x2::$1
|
|
if(font_2x2::$22) goto font_2x2::@4
|
|
to:font_2x2::@5
|
|
font_2x2::@4: scope:[font_2x2] from font_2x2::@3
|
|
font_2x2::c#7 = phi( font_2x2::@3/font_2x2::c#9 )
|
|
font_2x2::next_original#9 = phi( font_2x2::@3/font_2x2::next_original#11 )
|
|
font_2x2::next_2x2#8 = phi( font_2x2::@3/font_2x2::next_2x2#10 )
|
|
font_2x2::l#7 = phi( font_2x2::@3/font_2x2::l#9 )
|
|
font_2x2::next_2x2_right#4 = phi( font_2x2::@3/font_2x2::next_2x2_right#6 )
|
|
font_2x2::l2#5 = phi( font_2x2::@3/font_2x2::l2#7 )
|
|
font_2x2::next_2x2_left#4 = phi( font_2x2::@3/font_2x2::next_2x2_left#6 )
|
|
font_2x2::b#3 = phi( font_2x2::@3/font_2x2::b#5 )
|
|
font_2x2::glyph_bits#4 = phi( font_2x2::@3/font_2x2::glyph_bits#2 )
|
|
font_2x2::glyph_bits_2x2#5 = phi( font_2x2::@3/font_2x2::glyph_bits_2x2#7 )
|
|
font_2x2::$3 = 1
|
|
to:font_2x2::@6
|
|
font_2x2::@5: scope:[font_2x2] from font_2x2::@3
|
|
font_2x2::c#8 = phi( font_2x2::@3/font_2x2::c#9 )
|
|
font_2x2::next_original#10 = phi( font_2x2::@3/font_2x2::next_original#11 )
|
|
font_2x2::next_2x2#9 = phi( font_2x2::@3/font_2x2::next_2x2#10 )
|
|
font_2x2::l#8 = phi( font_2x2::@3/font_2x2::l#9 )
|
|
font_2x2::next_2x2_right#5 = phi( font_2x2::@3/font_2x2::next_2x2_right#6 )
|
|
font_2x2::l2#6 = phi( font_2x2::@3/font_2x2::l2#7 )
|
|
font_2x2::next_2x2_left#5 = phi( font_2x2::@3/font_2x2::next_2x2_left#6 )
|
|
font_2x2::b#4 = phi( font_2x2::@3/font_2x2::b#5 )
|
|
font_2x2::glyph_bits#5 = phi( font_2x2::@3/font_2x2::glyph_bits#2 )
|
|
font_2x2::glyph_bits_2x2#6 = phi( font_2x2::@3/font_2x2::glyph_bits_2x2#7 )
|
|
font_2x2::$2 = 0
|
|
to:font_2x2::@6
|
|
font_2x2::@6: scope:[font_2x2] from font_2x2::@4 font_2x2::@5
|
|
font_2x2::c#6 = phi( font_2x2::@4/font_2x2::c#7, font_2x2::@5/font_2x2::c#8 )
|
|
font_2x2::next_original#8 = phi( font_2x2::@4/font_2x2::next_original#9, font_2x2::@5/font_2x2::next_original#10 )
|
|
font_2x2::next_2x2#7 = phi( font_2x2::@4/font_2x2::next_2x2#8, font_2x2::@5/font_2x2::next_2x2#9 )
|
|
font_2x2::l#6 = phi( font_2x2::@4/font_2x2::l#7, font_2x2::@5/font_2x2::l#8 )
|
|
font_2x2::next_2x2_right#3 = phi( font_2x2::@4/font_2x2::next_2x2_right#4, font_2x2::@5/font_2x2::next_2x2_right#5 )
|
|
font_2x2::l2#4 = phi( font_2x2::@4/font_2x2::l2#5, font_2x2::@5/font_2x2::l2#6 )
|
|
font_2x2::next_2x2_left#3 = phi( font_2x2::@4/font_2x2::next_2x2_left#4, font_2x2::@5/font_2x2::next_2x2_left#5 )
|
|
font_2x2::b#2 = phi( font_2x2::@4/font_2x2::b#3, font_2x2::@5/font_2x2::b#4 )
|
|
font_2x2::glyph_bits#3 = phi( font_2x2::@4/font_2x2::glyph_bits#4, font_2x2::@5/font_2x2::glyph_bits#5 )
|
|
font_2x2::glyph_bits_2x2#3 = phi( font_2x2::@4/font_2x2::glyph_bits_2x2#5, font_2x2::@5/font_2x2::glyph_bits_2x2#6 )
|
|
font_2x2::$4 = phi( font_2x2::@4/font_2x2::$3, font_2x2::@5/font_2x2::$2 )
|
|
font_2x2::glyph_bit#0 = font_2x2::$4
|
|
font_2x2::$5 = font_2x2::glyph_bits_2x2#3 << 1
|
|
font_2x2::$6 = font_2x2::$5 | font_2x2::glyph_bit#0
|
|
font_2x2::glyph_bits_2x2#1 = font_2x2::$6
|
|
font_2x2::$7 = font_2x2::glyph_bits_2x2#1 << 1
|
|
font_2x2::$8 = font_2x2::$7 | font_2x2::glyph_bit#0
|
|
font_2x2::glyph_bits_2x2#2 = font_2x2::$8
|
|
font_2x2::glyph_bits#1 = font_2x2::glyph_bits#3 << 1
|
|
font_2x2::b#1 = font_2x2::b#2 + rangenext(0,7)
|
|
font_2x2::$9 = font_2x2::b#1 != rangelast(0,7)
|
|
if(font_2x2::$9) goto font_2x2::@3
|
|
to:font_2x2::@7
|
|
font_2x2::@7: scope:[font_2x2] from font_2x2::@6
|
|
font_2x2::c#4 = phi( font_2x2::@6/font_2x2::c#6 )
|
|
font_2x2::next_original#6 = phi( font_2x2::@6/font_2x2::next_original#8 )
|
|
font_2x2::next_2x2#5 = phi( font_2x2::@6/font_2x2::next_2x2#7 )
|
|
font_2x2::l#4 = phi( font_2x2::@6/font_2x2::l#6 )
|
|
font_2x2::next_2x2_right#2 = phi( font_2x2::@6/font_2x2::next_2x2_right#3 )
|
|
font_2x2::l2#3 = phi( font_2x2::@6/font_2x2::l2#4 )
|
|
font_2x2::next_2x2_left#2 = phi( font_2x2::@6/font_2x2::next_2x2_left#3 )
|
|
font_2x2::glyph_bits_2x2#4 = phi( font_2x2::@6/font_2x2::glyph_bits_2x2#2 )
|
|
font_2x2::$10 = > font_2x2::glyph_bits_2x2#4
|
|
font_2x2::next_2x2_left#2[font_2x2::l2#3] = font_2x2::$10
|
|
font_2x2::$11 = font_2x2::l2#3 + 1
|
|
font_2x2::$12 = > font_2x2::glyph_bits_2x2#4
|
|
font_2x2::next_2x2_left#2[font_2x2::$11] = font_2x2::$12
|
|
font_2x2::$13 = < font_2x2::glyph_bits_2x2#4
|
|
font_2x2::next_2x2_right#2[font_2x2::l2#3] = font_2x2::$13
|
|
font_2x2::$14 = font_2x2::l2#3 + 1
|
|
font_2x2::$15 = < font_2x2::glyph_bits_2x2#4
|
|
font_2x2::next_2x2_right#2[font_2x2::$14] = font_2x2::$15
|
|
font_2x2::l2#1 = font_2x2::l2#3 + 2
|
|
font_2x2::$16 = font_2x2::l2#1 == 8
|
|
font_2x2::$17 = ! font_2x2::$16
|
|
if(font_2x2::$17) goto font_2x2::@9
|
|
to:font_2x2::@8
|
|
font_2x2::@9: scope:[font_2x2] from font_2x2::@7 font_2x2::@8
|
|
font_2x2::next_2x2_right#8 = phi( font_2x2::@7/font_2x2::next_2x2_right#2, font_2x2::@8/font_2x2::next_2x2_right#1 )
|
|
font_2x2::l2#9 = phi( font_2x2::@7/font_2x2::l2#1, font_2x2::@8/font_2x2::l2#2 )
|
|
font_2x2::next_2x2_left#8 = phi( font_2x2::@7/font_2x2::next_2x2_left#2, font_2x2::@8/font_2x2::next_2x2_left#1 )
|
|
font_2x2::c#3 = phi( font_2x2::@7/font_2x2::c#4, font_2x2::@8/font_2x2::c#5 )
|
|
font_2x2::next_2x2#6 = phi( font_2x2::@7/font_2x2::next_2x2#5, font_2x2::@8/font_2x2::next_2x2#3 )
|
|
font_2x2::next_original#5 = phi( font_2x2::@7/font_2x2::next_original#6, font_2x2::@8/font_2x2::next_original#7 )
|
|
font_2x2::l#3 = phi( font_2x2::@7/font_2x2::l#4, font_2x2::@8/font_2x2::l#5 )
|
|
font_2x2::l#1 = font_2x2::l#3 + rangenext(0,7)
|
|
font_2x2::$20 = font_2x2::l#1 != rangelast(0,7)
|
|
if(font_2x2::$20) goto font_2x2::@2
|
|
to:font_2x2::@10
|
|
font_2x2::@8: scope:[font_2x2] from font_2x2::@7
|
|
font_2x2::c#5 = phi( font_2x2::@7/font_2x2::c#4 )
|
|
font_2x2::next_original#7 = phi( font_2x2::@7/font_2x2::next_original#6 )
|
|
font_2x2::l#5 = phi( font_2x2::@7/font_2x2::l#4 )
|
|
font_2x2::next_2x2#3 = phi( font_2x2::@7/font_2x2::next_2x2#5 )
|
|
font_2x2::$18 = font_2x2::next_2x2#3 + $80*8
|
|
font_2x2::next_2x2_left#1 = font_2x2::$18
|
|
font_2x2::$19 = font_2x2::next_2x2#3 + $c0*8
|
|
font_2x2::next_2x2_right#1 = font_2x2::$19
|
|
font_2x2::l2#2 = 0
|
|
to:font_2x2::@9
|
|
font_2x2::@10: scope:[font_2x2] from font_2x2::@9
|
|
font_2x2::c#2 = phi( font_2x2::@9/font_2x2::c#3 )
|
|
font_2x2::next_original#3 = phi( font_2x2::@9/font_2x2::next_original#5 )
|
|
font_2x2::next_2x2#4 = phi( font_2x2::@9/font_2x2::next_2x2#6 )
|
|
font_2x2::next_2x2#1 = font_2x2::next_2x2#4 + 8
|
|
font_2x2::next_original#1 = font_2x2::next_original#3 + 8
|
|
font_2x2::c#1 = font_2x2::c#2 + rangenext(0,$3f)
|
|
font_2x2::$21 = font_2x2::c#1 != rangelast(0,$3f)
|
|
if(font_2x2::$21) goto font_2x2::@1
|
|
to:font_2x2::@return
|
|
font_2x2::@return: scope:[font_2x2] from font_2x2::@10
|
|
return
|
|
to:@return
|
|
|
|
void __start()
|
|
__start: scope:[__start] from
|
|
to:__start::__init1
|
|
__start::__init1: scope:[__start] from __start
|
|
PLEX_SCREEN_PTR = (byte*)$400+$3f8
|
|
plex_show_idx = 0
|
|
plex_sprite_idx = 0
|
|
plex_sprite_msb = 1
|
|
plex_free_next = 0
|
|
__start::__init1_toSpritePtr1_sprite#0 = SPRITES
|
|
to:__start::__init1_toSpritePtr1
|
|
__start::__init1_toSpritePtr1: scope:[__start] from __start::__init1
|
|
__start::__init1_toSpritePtr1_sprite#1 = phi( __start::__init1/__start::__init1_toSpritePtr1_sprite#0 )
|
|
__start::__init1_toSpritePtr1_$1 = (word)__start::__init1_toSpritePtr1_sprite#1
|
|
__start::__init1_toSpritePtr1_$0 = __start::__init1_toSpritePtr1_$1 / $40
|
|
__start::__init1_toSpritePtr1_return#0 = (byte)__start::__init1_toSpritePtr1_$0
|
|
to:__start::__init1_toSpritePtr1_@return
|
|
__start::__init1_toSpritePtr1_@return: scope:[__start] from __start::__init1_toSpritePtr1
|
|
__start::__init1_toSpritePtr1_return#2 = phi( __start::__init1_toSpritePtr1/__start::__init1_toSpritePtr1_return#0 )
|
|
__start::__init1_toSpritePtr1_return#1 = __start::__init1_toSpritePtr1_return#2
|
|
to:__start::__init1_@1
|
|
__start::__init1_@1: scope:[__start] from __start::__init1_toSpritePtr1_@return
|
|
__start::__init1_toSpritePtr1_return#3 = phi( __start::__init1_toSpritePtr1_@return/__start::__init1_toSpritePtr1_return#1 )
|
|
__start::__init1_$0 = __start::__init1_toSpritePtr1_return#3
|
|
SPRITE_0#0 = __start::__init1_$0
|
|
scroll_text_next#6 = SCROLL_TEXT
|
|
y_sin_idx#5 = 0
|
|
x_movement_idx#5 = 0
|
|
frame_done = false
|
|
to:__start::@1
|
|
__start::@1: scope:[__start] from __start::__init1_@1
|
|
SPRITE_0#11 = phi( __start::__init1_@1/SPRITE_0#0 )
|
|
x_movement_idx#20 = phi( __start::__init1_@1/x_movement_idx#5 )
|
|
y_sin_idx#20 = phi( __start::__init1_@1/y_sin_idx#5 )
|
|
scroll_text_next#22 = phi( __start::__init1_@1/scroll_text_next#6 )
|
|
call main
|
|
to:__start::@2
|
|
__start::@2: scope:[__start] from __start::@1
|
|
SPRITE_0#8 = phi( __start::@1/SPRITE_0#11 )
|
|
x_movement_idx#14 = phi( __start::@1/x_movement_idx#2 )
|
|
y_sin_idx#14 = phi( __start::@1/y_sin_idx#2 )
|
|
scroll_text_next#15 = phi( __start::@1/scroll_text_next#2 )
|
|
scroll_text_next#7 = scroll_text_next#15
|
|
y_sin_idx#6 = y_sin_idx#14
|
|
x_movement_idx#6 = x_movement_idx#14
|
|
to:__start::@return
|
|
__start::@return: scope:[__start] from __start::@2
|
|
x_movement_idx#15 = phi( __start::@2/x_movement_idx#6 )
|
|
y_sin_idx#15 = phi( __start::@2/y_sin_idx#6 )
|
|
scroll_text_next#16 = phi( __start::@2/scroll_text_next#7 )
|
|
SPRITE_0#4 = phi( __start::@2/SPRITE_0#8 )
|
|
SPRITE_0#1 = SPRITE_0#4
|
|
scroll_text_next#8 = scroll_text_next#16
|
|
y_sin_idx#7 = y_sin_idx#15
|
|
x_movement_idx#7 = x_movement_idx#15
|
|
return
|
|
to:@return
|
|
|
|
SYMBOL TABLE SSA
|
|
const nomodify byte* CHARGEN = (byte*)$d000
|
|
const nomodify byte* CHARSET_DEFAULT = (byte*)$1000
|
|
const nomodify struct MOS6526_CIA* CIA1 = (struct MOS6526_CIA*)$dc00
|
|
const nomodify byte CIA_INTERRUPT_CLEAR = $7f
|
|
const nomodify byte* D018 = (byte*)$d018
|
|
const byte* FONT[$800] = { fill( $800, 0) }
|
|
const nomodify byte* IRQ_ENABLE = (byte*)$d01a
|
|
const nomodify byte IRQ_RASTER = 1
|
|
const nomodify byte* IRQ_STATUS = (byte*)$d019
|
|
const nomodify void()** KERNEL_IRQ = (void()**)$314
|
|
const byte OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
|
const nomodify byte PLEX_COUNT = $20
|
|
const byte* PLEX_FREE_YPOS[8] = { fill( 8, 0) }
|
|
const byte* PLEX_PTR[PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
|
|
volatile byte* PLEX_SCREEN_PTR loadstore
|
|
const byte* PLEX_SORTED_IDX[PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
|
|
const word* PLEX_XPOS[PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
|
|
const byte* PLEX_YPOS[PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
|
|
const nomodify byte* PROCPORT = (byte*)1
|
|
const nomodify byte PROCPORT_BASIC_KERNEL_IO = 7
|
|
const nomodify byte PROCPORT_RAM_CHARROM = 1
|
|
const nomodify byte* RASTER = (byte*)$d012
|
|
const nomodify byte* SCREEN = (byte*)$400
|
|
const byte* SCROLL_TEXT[] = "camelot presents a spanking new contribution to the always hungry c64 scene. in this time of the corona virus we have chosen to direct our efforts towards the safe haven of coding, pixeling and composing for our beloved old breadbin. "
|
|
const byte SIZEOF_WORD = 2
|
|
const nomodify byte* SPRITES = (byte*)$3000
|
|
const nomodify byte* SPRITES_COLOR = (byte*)$d027
|
|
const nomodify byte* SPRITES_ENABLE = (byte*)$d015
|
|
const nomodify byte* SPRITES_XMSB = (byte*)$d010
|
|
const nomodify byte* SPRITES_XPOS = (byte*)$d000
|
|
const nomodify byte* SPRITES_YPOS = (byte*)$d001
|
|
byte SPRITE_0
|
|
byte SPRITE_0#0
|
|
byte SPRITE_0#1
|
|
byte SPRITE_0#10
|
|
byte SPRITE_0#11
|
|
byte SPRITE_0#12
|
|
byte SPRITE_0#13
|
|
byte SPRITE_0#14
|
|
byte SPRITE_0#15
|
|
byte SPRITE_0#16
|
|
byte SPRITE_0#17
|
|
byte SPRITE_0#18
|
|
byte SPRITE_0#19
|
|
byte SPRITE_0#2
|
|
byte SPRITE_0#20
|
|
byte SPRITE_0#21
|
|
byte SPRITE_0#22
|
|
byte SPRITE_0#23
|
|
byte SPRITE_0#24
|
|
byte SPRITE_0#25
|
|
byte SPRITE_0#26
|
|
byte SPRITE_0#27
|
|
byte SPRITE_0#28
|
|
byte SPRITE_0#29
|
|
byte SPRITE_0#3
|
|
byte SPRITE_0#4
|
|
byte SPRITE_0#5
|
|
byte SPRITE_0#6
|
|
byte SPRITE_0#7
|
|
byte SPRITE_0#8
|
|
byte SPRITE_0#9
|
|
const nomodify byte* VIC_CONTROL = (byte*)$d011
|
|
const nomodify byte WHITE = 1
|
|
const byte* XMOVEMENT[$200] = kickasm {{ //.lohifill $100, round(344-i*344/$100-86*sin(toRadians(360*i/$100)))
|
|
//.lohifill $100, round(344-i*344/$100-129*sin(toRadians(360*i/$100)))
|
|
.lohifill $100, round(344-i*344/$100 -86*sin(toRadians(360*i/$100)) -43*sin(toRadians(360*i/$80)))
|
|
//.lohifill $100, round(344-i*344/$100-86*sin(toRadians(360*i/$80)))
|
|
}}
|
|
const nomodify byte* XMOVEMENT_HI = XMOVEMENT+$100
|
|
const byte* YSIN[$100] = kickasm {{ .fill $100, round(142+89.5*sin(toRadians(360*i/256)))
|
|
}}
|
|
void __start()
|
|
byte~ __start::__init1_$0
|
|
number~ __start::__init1_toSpritePtr1_$0
|
|
word~ __start::__init1_toSpritePtr1_$1
|
|
byte __start::__init1_toSpritePtr1_return
|
|
byte __start::__init1_toSpritePtr1_return#0
|
|
byte __start::__init1_toSpritePtr1_return#1
|
|
byte __start::__init1_toSpritePtr1_return#2
|
|
byte __start::__init1_toSpritePtr1_return#3
|
|
byte* __start::__init1_toSpritePtr1_sprite
|
|
byte* __start::__init1_toSpritePtr1_sprite#0
|
|
byte* __start::__init1_toSpritePtr1_sprite#1
|
|
void font_2x2(byte* font_2x2::font_original , byte* font_2x2::font_2x2)
|
|
byte*~ font_2x2::$0
|
|
number~ font_2x2::$1
|
|
byte~ font_2x2::$10
|
|
number~ font_2x2::$11
|
|
byte~ font_2x2::$12
|
|
byte~ font_2x2::$13
|
|
number~ font_2x2::$14
|
|
byte~ font_2x2::$15
|
|
bool~ font_2x2::$16
|
|
bool~ font_2x2::$17
|
|
byte*~ font_2x2::$18
|
|
byte*~ font_2x2::$19
|
|
byte~ font_2x2::$2
|
|
bool~ font_2x2::$20
|
|
bool~ font_2x2::$21
|
|
bool~ font_2x2::$22
|
|
byte~ font_2x2::$3
|
|
byte~ font_2x2::$4
|
|
word~ font_2x2::$5
|
|
word~ font_2x2::$6
|
|
word~ font_2x2::$7
|
|
word~ font_2x2::$8
|
|
bool~ font_2x2::$9
|
|
byte font_2x2::b
|
|
byte font_2x2::b#0
|
|
byte font_2x2::b#1
|
|
byte font_2x2::b#2
|
|
byte font_2x2::b#3
|
|
byte font_2x2::b#4
|
|
byte font_2x2::b#5
|
|
byte font_2x2::c
|
|
byte font_2x2::c#0
|
|
byte font_2x2::c#1
|
|
byte font_2x2::c#10
|
|
byte font_2x2::c#11
|
|
byte font_2x2::c#2
|
|
byte font_2x2::c#3
|
|
byte font_2x2::c#4
|
|
byte font_2x2::c#5
|
|
byte font_2x2::c#6
|
|
byte font_2x2::c#7
|
|
byte font_2x2::c#8
|
|
byte font_2x2::c#9
|
|
byte* font_2x2::font_2x2
|
|
byte* font_2x2::font_2x2#0
|
|
byte* font_2x2::font_2x2#1
|
|
byte* font_2x2::font_original
|
|
byte* font_2x2::font_original#0
|
|
byte* font_2x2::font_original#1
|
|
byte font_2x2::glyph_bit
|
|
byte font_2x2::glyph_bit#0
|
|
byte font_2x2::glyph_bits
|
|
byte font_2x2::glyph_bits#0
|
|
byte font_2x2::glyph_bits#1
|
|
byte font_2x2::glyph_bits#2
|
|
byte font_2x2::glyph_bits#3
|
|
byte font_2x2::glyph_bits#4
|
|
byte font_2x2::glyph_bits#5
|
|
word font_2x2::glyph_bits_2x2
|
|
word font_2x2::glyph_bits_2x2#0
|
|
word font_2x2::glyph_bits_2x2#1
|
|
word font_2x2::glyph_bits_2x2#2
|
|
word font_2x2::glyph_bits_2x2#3
|
|
word font_2x2::glyph_bits_2x2#4
|
|
word font_2x2::glyph_bits_2x2#5
|
|
word font_2x2::glyph_bits_2x2#6
|
|
word font_2x2::glyph_bits_2x2#7
|
|
byte font_2x2::l
|
|
byte font_2x2::l#0
|
|
byte font_2x2::l#1
|
|
byte font_2x2::l#2
|
|
byte font_2x2::l#3
|
|
byte font_2x2::l#4
|
|
byte font_2x2::l#5
|
|
byte font_2x2::l#6
|
|
byte font_2x2::l#7
|
|
byte font_2x2::l#8
|
|
byte font_2x2::l#9
|
|
byte font_2x2::l2
|
|
byte font_2x2::l2#0
|
|
byte font_2x2::l2#1
|
|
byte font_2x2::l2#2
|
|
byte font_2x2::l2#3
|
|
byte font_2x2::l2#4
|
|
byte font_2x2::l2#5
|
|
byte font_2x2::l2#6
|
|
byte font_2x2::l2#7
|
|
byte font_2x2::l2#8
|
|
byte font_2x2::l2#9
|
|
byte* font_2x2::next_2x2
|
|
byte* font_2x2::next_2x2#0
|
|
byte* font_2x2::next_2x2#1
|
|
byte* font_2x2::next_2x2#10
|
|
byte* font_2x2::next_2x2#11
|
|
byte* font_2x2::next_2x2#2
|
|
byte* font_2x2::next_2x2#3
|
|
byte* font_2x2::next_2x2#4
|
|
byte* font_2x2::next_2x2#5
|
|
byte* font_2x2::next_2x2#6
|
|
byte* font_2x2::next_2x2#7
|
|
byte* font_2x2::next_2x2#8
|
|
byte* font_2x2::next_2x2#9
|
|
byte* font_2x2::next_2x2_left
|
|
byte* font_2x2::next_2x2_left#0
|
|
byte* font_2x2::next_2x2_left#1
|
|
byte* font_2x2::next_2x2_left#2
|
|
byte* font_2x2::next_2x2_left#3
|
|
byte* font_2x2::next_2x2_left#4
|
|
byte* font_2x2::next_2x2_left#5
|
|
byte* font_2x2::next_2x2_left#6
|
|
byte* font_2x2::next_2x2_left#7
|
|
byte* font_2x2::next_2x2_left#8
|
|
byte* font_2x2::next_2x2_right
|
|
byte* font_2x2::next_2x2_right#0
|
|
byte* font_2x2::next_2x2_right#1
|
|
byte* font_2x2::next_2x2_right#2
|
|
byte* font_2x2::next_2x2_right#3
|
|
byte* font_2x2::next_2x2_right#4
|
|
byte* font_2x2::next_2x2_right#5
|
|
byte* font_2x2::next_2x2_right#6
|
|
byte* font_2x2::next_2x2_right#7
|
|
byte* font_2x2::next_2x2_right#8
|
|
byte* font_2x2::next_original
|
|
byte* font_2x2::next_original#0
|
|
byte* font_2x2::next_original#1
|
|
byte* font_2x2::next_original#10
|
|
byte* font_2x2::next_original#11
|
|
byte* font_2x2::next_original#2
|
|
byte* font_2x2::next_original#3
|
|
byte* font_2x2::next_original#4
|
|
byte* font_2x2::next_original#5
|
|
byte* font_2x2::next_original#6
|
|
byte* font_2x2::next_original#7
|
|
byte* font_2x2::next_original#8
|
|
byte* font_2x2::next_original#9
|
|
void font_2x2_to_sprites(byte* font_2x2_to_sprites::font_2x2 , byte* font_2x2_to_sprites::sprites , byte font_2x2_to_sprites::num_chars)
|
|
bool~ font_2x2_to_sprites::$0
|
|
byte*~ font_2x2_to_sprites::$1
|
|
byte*~ font_2x2_to_sprites::$10
|
|
bool~ font_2x2_to_sprites::$11
|
|
number~ font_2x2_to_sprites::$2
|
|
number~ font_2x2_to_sprites::$3
|
|
bool~ font_2x2_to_sprites::$4
|
|
bool~ font_2x2_to_sprites::$5
|
|
bool~ font_2x2_to_sprites::$6
|
|
byte*~ font_2x2_to_sprites::$7
|
|
byte*~ font_2x2_to_sprites::$8
|
|
byte*~ font_2x2_to_sprites::$9
|
|
byte font_2x2_to_sprites::c
|
|
byte font_2x2_to_sprites::c#0
|
|
byte font_2x2_to_sprites::c#1
|
|
byte font_2x2_to_sprites::c#2
|
|
byte font_2x2_to_sprites::c#3
|
|
byte font_2x2_to_sprites::c#4
|
|
byte font_2x2_to_sprites::c#5
|
|
byte font_2x2_to_sprites::c#6
|
|
byte font_2x2_to_sprites::c#7
|
|
byte font_2x2_to_sprites::c#8
|
|
byte font_2x2_to_sprites::c#9
|
|
byte* font_2x2_to_sprites::char_current
|
|
byte* font_2x2_to_sprites::char_current#0
|
|
byte* font_2x2_to_sprites::char_current#1
|
|
byte* font_2x2_to_sprites::char_current#2
|
|
byte* font_2x2_to_sprites::char_current#3
|
|
byte* font_2x2_to_sprites::char_current#4
|
|
byte* font_2x2_to_sprites::char_current#5
|
|
byte* font_2x2_to_sprites::char_current#6
|
|
byte* font_2x2_to_sprites::char_current#7
|
|
byte* font_2x2_to_sprites::char_current#8
|
|
byte* font_2x2_to_sprites::char_current#9
|
|
byte* font_2x2_to_sprites::char_left
|
|
byte* font_2x2_to_sprites::char_left#0
|
|
byte* font_2x2_to_sprites::char_left#1
|
|
byte* font_2x2_to_sprites::char_left#2
|
|
byte* font_2x2_to_sprites::char_left#3
|
|
byte* font_2x2_to_sprites::char_left#4
|
|
byte* font_2x2_to_sprites::char_left#5
|
|
byte* font_2x2_to_sprites::char_right
|
|
byte* font_2x2_to_sprites::char_right#0
|
|
byte* font_2x2_to_sprites::char_right#1
|
|
byte* font_2x2_to_sprites::char_right#2
|
|
byte* font_2x2_to_sprites::char_right#3
|
|
byte* font_2x2_to_sprites::char_right#4
|
|
byte* font_2x2_to_sprites::char_right#5
|
|
byte* font_2x2_to_sprites::font_2x2
|
|
byte* font_2x2_to_sprites::font_2x2#0
|
|
byte* font_2x2_to_sprites::font_2x2#1
|
|
byte* font_2x2_to_sprites::font_2x2#2
|
|
byte* font_2x2_to_sprites::font_2x2#3
|
|
byte* font_2x2_to_sprites::font_2x2#4
|
|
byte* font_2x2_to_sprites::font_2x2#5
|
|
byte* font_2x2_to_sprites::font_2x2#6
|
|
byte* font_2x2_to_sprites::font_2x2#7
|
|
byte* font_2x2_to_sprites::font_2x2#8
|
|
byte* font_2x2_to_sprites::font_2x2#9
|
|
byte font_2x2_to_sprites::i
|
|
byte font_2x2_to_sprites::i#0
|
|
byte font_2x2_to_sprites::i#1
|
|
byte font_2x2_to_sprites::i#2
|
|
byte font_2x2_to_sprites::i#3
|
|
byte font_2x2_to_sprites::i#4
|
|
byte font_2x2_to_sprites::i#5
|
|
byte font_2x2_to_sprites::i#6
|
|
byte font_2x2_to_sprites::num_chars
|
|
byte font_2x2_to_sprites::num_chars#0
|
|
byte font_2x2_to_sprites::num_chars#1
|
|
byte font_2x2_to_sprites::num_chars#2
|
|
byte font_2x2_to_sprites::num_chars#3
|
|
byte font_2x2_to_sprites::num_chars#4
|
|
byte font_2x2_to_sprites::num_chars#5
|
|
byte font_2x2_to_sprites::num_chars#6
|
|
byte font_2x2_to_sprites::num_chars#7
|
|
byte font_2x2_to_sprites::num_chars#8
|
|
byte font_2x2_to_sprites::num_chars#9
|
|
byte* font_2x2_to_sprites::sprite
|
|
byte* font_2x2_to_sprites::sprite#0
|
|
byte* font_2x2_to_sprites::sprite#1
|
|
byte* font_2x2_to_sprites::sprite#2
|
|
byte* font_2x2_to_sprites::sprite#3
|
|
byte* font_2x2_to_sprites::sprite#4
|
|
byte* font_2x2_to_sprites::sprite#5
|
|
byte* font_2x2_to_sprites::sprite#6
|
|
byte* font_2x2_to_sprites::sprite#7
|
|
byte* font_2x2_to_sprites::sprite#8
|
|
byte* font_2x2_to_sprites::sprite#9
|
|
byte font_2x2_to_sprites::sprite_idx
|
|
byte font_2x2_to_sprites::sprite_idx#0
|
|
byte font_2x2_to_sprites::sprite_idx#1
|
|
byte font_2x2_to_sprites::sprite_idx#2
|
|
byte font_2x2_to_sprites::sprite_idx#3
|
|
byte font_2x2_to_sprites::sprite_idx#4
|
|
byte font_2x2_to_sprites::sprite_idx#5
|
|
byte font_2x2_to_sprites::sprite_idx#6
|
|
byte font_2x2_to_sprites::sprite_idx#7
|
|
byte font_2x2_to_sprites::sprite_idx#8
|
|
byte* font_2x2_to_sprites::sprites
|
|
byte* font_2x2_to_sprites::sprites#0
|
|
byte* font_2x2_to_sprites::sprites#1
|
|
volatile bool frame_done loadstore
|
|
void main()
|
|
byte~ main::$12
|
|
byte~ main::$3
|
|
bool~ main::$6
|
|
byte~ main::$7
|
|
bool~ main::$8
|
|
bool~ main::$9
|
|
byte main::s
|
|
byte main::s#0
|
|
byte main::s#1
|
|
byte main::s#2
|
|
byte main::s#3
|
|
byte main::s1
|
|
byte main::s1#0
|
|
byte main::s1#1
|
|
byte main::s1#2
|
|
number~ main::toD0181_$0
|
|
number~ main::toD0181_$1
|
|
number~ main::toD0181_$2
|
|
byte~ main::toD0181_$3
|
|
number~ main::toD0181_$4
|
|
number~ main::toD0181_$5
|
|
number~ main::toD0181_$6
|
|
word~ main::toD0181_$7
|
|
byte* main::toD0181_gfx
|
|
byte* main::toD0181_gfx#0
|
|
byte* main::toD0181_gfx#1
|
|
byte main::toD0181_return
|
|
byte main::toD0181_return#0
|
|
byte main::toD0181_return#1
|
|
byte main::toD0181_return#2
|
|
byte main::toD0181_return#3
|
|
byte* main::toD0181_screen
|
|
byte* main::toD0181_screen#0
|
|
byte* main::toD0181_screen#1
|
|
byte main::x
|
|
byte main::x#0
|
|
byte main::x#1
|
|
byte main::x#2
|
|
byte main::x#3
|
|
void plexInit(byte* plexInit::screen)
|
|
bool~ plexInit::$1
|
|
byte plexInit::i
|
|
byte plexInit::i#0
|
|
byte plexInit::i#1
|
|
byte plexInit::i#2
|
|
byte*~ plexInit::plexSetScreen1_$0
|
|
byte* plexInit::plexSetScreen1_screen
|
|
byte* plexInit::plexSetScreen1_screen#0
|
|
byte* plexInit::plexSetScreen1_screen#1
|
|
byte* plexInit::screen
|
|
byte* plexInit::screen#0
|
|
byte* plexInit::screen#1
|
|
void plexShowSprite()
|
|
number~ plexShowSprite::$0
|
|
byte~ plexShowSprite::$10
|
|
byte~ plexShowSprite::$11
|
|
byte~ plexShowSprite::$2
|
|
byte~ plexShowSprite::$3
|
|
bool~ plexShowSprite::$4
|
|
number~ plexShowSprite::$5
|
|
number~ plexShowSprite::$6
|
|
bool~ plexShowSprite::$7
|
|
bool~ plexShowSprite::$8
|
|
number~ plexShowSprite::$9
|
|
number~ plexShowSprite::plexFreeAdd1_$0
|
|
number~ plexShowSprite::plexFreeAdd1_$1
|
|
number~ plexShowSprite::plexFreeAdd1_$2
|
|
byte plexShowSprite::plexFreeAdd1_ypos
|
|
byte plexShowSprite::plexFreeAdd1_ypos#0
|
|
byte plexShowSprite::plexFreeAdd1_ypos#1
|
|
byte plexShowSprite::plex_sprite_idx2
|
|
byte plexShowSprite::plex_sprite_idx2#0
|
|
byte plexShowSprite::plex_sprite_idx2#1
|
|
byte plexShowSprite::plex_sprite_idx2#2
|
|
byte plexShowSprite::xpos_idx
|
|
byte plexShowSprite::xpos_idx#0
|
|
byte plexShowSprite::ypos
|
|
byte plexShowSprite::ypos#0
|
|
void plexSort()
|
|
number~ plexSort::$1
|
|
bool~ plexSort::$2
|
|
bool~ plexSort::$3
|
|
number~ plexSort::$4
|
|
bool~ plexSort::$5
|
|
bool~ plexSort::$6
|
|
bool~ plexSort::$7
|
|
bool~ plexSort::$8
|
|
byte plexSort::m
|
|
byte plexSort::m#0
|
|
byte plexSort::m#1
|
|
byte plexSort::m#2
|
|
byte plexSort::m#3
|
|
byte plexSort::m#4
|
|
byte plexSort::m#5
|
|
byte plexSort::m#6
|
|
byte plexSort::nxt_idx
|
|
byte plexSort::nxt_idx#0
|
|
byte plexSort::nxt_idx#1
|
|
byte plexSort::nxt_idx#2
|
|
byte plexSort::nxt_idx#3
|
|
byte plexSort::nxt_y
|
|
byte plexSort::nxt_y#0
|
|
byte plexSort::nxt_y#1
|
|
byte plexSort::nxt_y#2
|
|
bool~ plexSort::plexFreePrepare1_$0
|
|
byte plexSort::plexFreePrepare1_s
|
|
byte plexSort::plexFreePrepare1_s#0
|
|
byte plexSort::plexFreePrepare1_s#1
|
|
byte plexSort::plexFreePrepare1_s#2
|
|
byte plexSort::s
|
|
byte plexSort::s#0
|
|
byte plexSort::s#1
|
|
byte plexSort::s#2
|
|
byte plexSort::s#3
|
|
byte plexSort::s#4
|
|
volatile byte plex_free_next loadstore
|
|
__interrupt(rom_min_c64) void plex_irq()
|
|
bool~ plex_irq::$0
|
|
byte~ plex_irq::$2
|
|
bool~ plex_irq::$3
|
|
number~ plex_irq::$4
|
|
bool~ plex_irq::$5
|
|
bool~ plex_irq::$6
|
|
byte plex_irq::plexFreeNextYpos1_return
|
|
byte plex_irq::plexFreeNextYpos1_return#0
|
|
byte plex_irq::plexFreeNextYpos1_return#1
|
|
byte plex_irq::plexFreeNextYpos1_return#2
|
|
byte plex_irq::plexFreeNextYpos1_return#3
|
|
byte plex_irq::rasterY
|
|
byte plex_irq::rasterY#0
|
|
byte plex_irq::rasterY#1
|
|
byte plex_irq::rasterY#2
|
|
byte plex_irq::rasterY#3
|
|
void plex_move()
|
|
bool~ plex_move::$0
|
|
bool~ plex_move::$1
|
|
bool~ plex_move::$2
|
|
bool~ plex_move::$3
|
|
byte~ plex_move::$4
|
|
bool~ plex_move::$5
|
|
byte~ plex_move::$6
|
|
byte plex_move::s
|
|
byte plex_move::s#0
|
|
byte plex_move::s#1
|
|
byte plex_move::s#2
|
|
byte plex_move::s#3
|
|
byte plex_move::s#4
|
|
byte plex_move::s#5
|
|
byte plex_move::s#6
|
|
byte plex_move::x_idx
|
|
byte plex_move::x_idx#0
|
|
byte plex_move::x_idx#1
|
|
byte plex_move::x_idx#2
|
|
byte plex_move::x_idx#3
|
|
byte plex_move::x_idx#4
|
|
byte plex_move::x_idx#5
|
|
byte plex_move::x_idx#6
|
|
byte plex_move::y_idx
|
|
byte plex_move::y_idx#0
|
|
byte plex_move::y_idx#1
|
|
byte plex_move::y_idx#2
|
|
byte plex_move::y_idx#3
|
|
byte plex_move::y_idx#4
|
|
byte plex_move::y_idx#5
|
|
byte plex_move::y_idx#6
|
|
volatile byte plex_show_idx loadstore
|
|
volatile byte plex_sprite_idx loadstore
|
|
volatile byte plex_sprite_msb loadstore
|
|
byte* scroll_text_next
|
|
byte* scroll_text_next#0
|
|
byte* scroll_text_next#1
|
|
byte* scroll_text_next#10
|
|
byte* scroll_text_next#11
|
|
byte* scroll_text_next#12
|
|
byte* scroll_text_next#13
|
|
byte* scroll_text_next#14
|
|
byte* scroll_text_next#15
|
|
byte* scroll_text_next#16
|
|
byte* scroll_text_next#17
|
|
byte* scroll_text_next#18
|
|
byte* scroll_text_next#19
|
|
byte* scroll_text_next#2
|
|
byte* scroll_text_next#20
|
|
byte* scroll_text_next#21
|
|
byte* scroll_text_next#22
|
|
byte* scroll_text_next#23
|
|
byte* scroll_text_next#24
|
|
byte* scroll_text_next#25
|
|
byte* scroll_text_next#26
|
|
byte* scroll_text_next#27
|
|
byte* scroll_text_next#28
|
|
byte* scroll_text_next#29
|
|
byte* scroll_text_next#3
|
|
byte* scroll_text_next#30
|
|
byte* scroll_text_next#31
|
|
byte* scroll_text_next#32
|
|
byte* scroll_text_next#33
|
|
byte* scroll_text_next#34
|
|
byte* scroll_text_next#35
|
|
byte* scroll_text_next#36
|
|
byte* scroll_text_next#37
|
|
byte* scroll_text_next#38
|
|
byte* scroll_text_next#4
|
|
byte* scroll_text_next#5
|
|
byte* scroll_text_next#6
|
|
byte* scroll_text_next#7
|
|
byte* scroll_text_next#8
|
|
byte* scroll_text_next#9
|
|
byte x_movement_idx
|
|
byte x_movement_idx#0
|
|
byte x_movement_idx#1
|
|
byte x_movement_idx#10
|
|
byte x_movement_idx#11
|
|
byte x_movement_idx#12
|
|
byte x_movement_idx#13
|
|
byte x_movement_idx#14
|
|
byte x_movement_idx#15
|
|
byte x_movement_idx#16
|
|
byte x_movement_idx#17
|
|
byte x_movement_idx#18
|
|
byte x_movement_idx#19
|
|
byte x_movement_idx#2
|
|
byte x_movement_idx#20
|
|
byte x_movement_idx#21
|
|
byte x_movement_idx#22
|
|
byte x_movement_idx#23
|
|
byte x_movement_idx#24
|
|
byte x_movement_idx#25
|
|
byte x_movement_idx#26
|
|
byte x_movement_idx#27
|
|
byte x_movement_idx#28
|
|
byte x_movement_idx#29
|
|
byte x_movement_idx#3
|
|
byte x_movement_idx#30
|
|
byte x_movement_idx#31
|
|
byte x_movement_idx#32
|
|
byte x_movement_idx#33
|
|
byte x_movement_idx#34
|
|
byte x_movement_idx#35
|
|
byte x_movement_idx#36
|
|
byte x_movement_idx#37
|
|
byte x_movement_idx#38
|
|
byte x_movement_idx#4
|
|
byte x_movement_idx#5
|
|
byte x_movement_idx#6
|
|
byte x_movement_idx#7
|
|
byte x_movement_idx#8
|
|
byte x_movement_idx#9
|
|
byte y_sin_idx
|
|
byte y_sin_idx#0
|
|
byte y_sin_idx#1
|
|
byte y_sin_idx#10
|
|
byte y_sin_idx#11
|
|
byte y_sin_idx#12
|
|
byte y_sin_idx#13
|
|
byte y_sin_idx#14
|
|
byte y_sin_idx#15
|
|
byte y_sin_idx#16
|
|
byte y_sin_idx#17
|
|
byte y_sin_idx#18
|
|
byte y_sin_idx#19
|
|
byte y_sin_idx#2
|
|
byte y_sin_idx#20
|
|
byte y_sin_idx#21
|
|
byte y_sin_idx#22
|
|
byte y_sin_idx#23
|
|
byte y_sin_idx#24
|
|
byte y_sin_idx#25
|
|
byte y_sin_idx#26
|
|
byte y_sin_idx#27
|
|
byte y_sin_idx#28
|
|
byte y_sin_idx#29
|
|
byte y_sin_idx#3
|
|
byte y_sin_idx#30
|
|
byte y_sin_idx#31
|
|
byte y_sin_idx#32
|
|
byte y_sin_idx#33
|
|
byte y_sin_idx#34
|
|
byte y_sin_idx#35
|
|
byte y_sin_idx#36
|
|
byte y_sin_idx#37
|
|
byte y_sin_idx#38
|
|
byte y_sin_idx#4
|
|
byte y_sin_idx#5
|
|
byte y_sin_idx#6
|
|
byte y_sin_idx#7
|
|
byte y_sin_idx#8
|
|
byte y_sin_idx#9
|
|
|
|
Fixing inline constructor with main::$13 = (byte)XMOVEMENT_HI[main::x#2] w= (byte)XMOVEMENT[main::x#2]
|
|
Fixing inline constructor with plex_move::$7 = (byte)XMOVEMENT_HI[plex_move::x_idx#2] w= (byte)XMOVEMENT[plex_move::x_idx#2]
|
|
Successful SSA optimization Pass2FixInlineConstructors
|
|
Adding number conversion cast (unumber) $100 in
|
|
Adding number conversion cast (unumber) $3f8 in plexInit::plexSetScreen1_$0 = plexInit::plexSetScreen1_screen#1 + $3f8
|
|
Adding number conversion cast (unumber) 1 in plexInit::i#1 = plexInit::i#2 + rangenext(0,PLEX_COUNT-1)
|
|
Adding number conversion cast (unumber) 1 in plexSort::$1 = plexSort::m#2 + 1
|
|
Adding number conversion cast (unumber) plexSort::$1 in plexSort::$1 = plexSort::m#2 + (unumber)1
|
|
Adding number conversion cast (unumber) 2 in plexSort::m#1 = plexSort::m#3 + rangenext(0,PLEX_COUNT-2)
|
|
Adding number conversion cast (unumber) 1 in plexSort::$4 = plexSort::s#3 + 1
|
|
Adding number conversion cast (unumber) plexSort::$4 in plexSort::$4 = plexSort::s#3 + (unumber)1
|
|
Adding number conversion cast (unumber) $ff in plexSort::$5 = plexSort::s#1 != $ff
|
|
Adding number conversion cast (unumber) 0 in plex_show_idx = 0
|
|
Adding number conversion cast (unumber) 0 in plex_sprite_idx = 0
|
|
Adding number conversion cast (unumber) 1 in plex_sprite_msb = 1
|
|
Adding number conversion cast (unumber) 0 in PLEX_FREE_YPOS[plexSort::plexFreePrepare1_s#2] = 0
|
|
Adding number conversion cast (unumber) 0 in plex_free_next = 0
|
|
Adding number conversion cast (unumber) 2 in plexShowSprite::$0 = plex_sprite_idx * 2
|
|
Adding number conversion cast (unumber) plexShowSprite::$0 in plexShowSprite::$0 = plex_sprite_idx * (unumber)2
|
|
Adding number conversion cast (unumber) $16 in plexShowSprite::plexFreeAdd1_$0 = plexShowSprite::plexFreeAdd1_ypos#1 + $16
|
|
Adding number conversion cast (unumber) plexShowSprite::plexFreeAdd1_$0 in plexShowSprite::plexFreeAdd1_$0 = plexShowSprite::plexFreeAdd1_ypos#1 + (unumber)$16
|
|
Adding number conversion cast (unumber) 1 in plexShowSprite::plexFreeAdd1_$1 = plex_free_next + 1
|
|
Adding number conversion cast (unumber) plexShowSprite::plexFreeAdd1_$1 in plexShowSprite::plexFreeAdd1_$1 = plex_free_next + (unumber)1
|
|
Adding number conversion cast (unumber) 7 in plexShowSprite::plexFreeAdd1_$2 = plexShowSprite::plexFreeAdd1_$1 & 7
|
|
Adding number conversion cast (unumber) plexShowSprite::plexFreeAdd1_$2 in plexShowSprite::plexFreeAdd1_$2 = plexShowSprite::plexFreeAdd1_$1 & (unumber)7
|
|
Adding number conversion cast (unumber) 0 in plexShowSprite::$4 = plexShowSprite::$3 != 0
|
|
Adding number conversion cast (unumber) $ff in plexShowSprite::$9 = $ff ^ plex_sprite_msb
|
|
Adding number conversion cast (unumber) plexShowSprite::$9 in plexShowSprite::$9 = (unumber)$ff ^ plex_sprite_msb
|
|
Adding number conversion cast (unumber) 1 in plexShowSprite::$5 = plex_sprite_idx + 1
|
|
Adding number conversion cast (unumber) plexShowSprite::$5 in plexShowSprite::$5 = plex_sprite_idx + (unumber)1
|
|
Adding number conversion cast (unumber) 7 in plexShowSprite::$6 = plexShowSprite::$5 & 7
|
|
Adding number conversion cast (unumber) plexShowSprite::$6 in plexShowSprite::$6 = plexShowSprite::$5 & (unumber)7
|
|
Adding number conversion cast (unumber) 1 in plex_sprite_msb = plex_sprite_msb << 1
|
|
Adding number conversion cast (unumber) 0 in plexShowSprite::$7 = plex_sprite_msb == 0
|
|
Adding number conversion cast (unumber) 1 in plex_sprite_msb = 1
|
|
Adding number conversion cast (unumber) $40 in font_2x2_to_sprites::num_chars#0 = $40
|
|
Adding number conversion cast (unumber) $3fff in main::toD0181_$0 = main::toD0181_$7 & $3fff
|
|
Adding number conversion cast (unumber) main::toD0181_$0 in main::toD0181_$0 = main::toD0181_$7 & (unumber)$3fff
|
|
Adding number conversion cast (unumber) 4 in main::toD0181_$1 = main::toD0181_$0 * 4
|
|
Adding number conversion cast (unumber) main::toD0181_$1 in main::toD0181_$1 = main::toD0181_$0 * (unumber)4
|
|
Adding number conversion cast (unumber) main::toD0181_$2 in main::toD0181_$2 = > main::toD0181_$1
|
|
Adding number conversion cast (unumber) 4 in main::toD0181_$4 = main::toD0181_$3 / 4
|
|
Adding number conversion cast (unumber) main::toD0181_$4 in main::toD0181_$4 = main::toD0181_$3 / (unumber)4
|
|
Adding number conversion cast (unumber) $f in main::toD0181_$5 = main::toD0181_$4 & $f
|
|
Adding number conversion cast (unumber) main::toD0181_$5 in main::toD0181_$5 = main::toD0181_$4 & (unumber)$f
|
|
Adding number conversion cast (unumber) main::toD0181_$6 in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
|
|
Adding number conversion cast (unumber) 8 in main::x#1 = main::x#2 + 8
|
|
Adding number conversion cast (unumber) $ff in *SPRITES_ENABLE = $ff
|
|
Adding number conversion cast (unumber) $7f in *VIC_CONTROL = *VIC_CONTROL & $7f
|
|
Adding number conversion cast (unumber) $28 in *RASTER = $28
|
|
Adding number conversion cast (unumber) 8 in plex_move::y_idx#1 = plex_move::y_idx#2 + 8
|
|
Adding number conversion cast (unumber) 0 in plex_move::$0 = plex_move::x_idx#2 == 0
|
|
Adding number conversion cast (unumber) 8 in plex_move::x_idx#1 = plex_move::x_idx#3 + 8
|
|
Adding number conversion cast (unumber) 1 in plex_move::s#1 = plex_move::s#3 + rangenext(0,PLEX_COUNT-1)
|
|
Adding number conversion cast (unumber) 0 in plex_move::$2 = *scroll_text_next#12 == 0
|
|
Adding number conversion cast (unumber) 3 in y_sin_idx#3 = y_sin_idx#12 + 3
|
|
Adding number conversion cast (unumber) 3 in plex_irq::$4 = *RASTER + 3
|
|
Adding number conversion cast (unumber) plex_irq::$4 in plex_irq::$4 = *RASTER + (unumber)3
|
|
Adding number conversion cast (unumber) $28 in *RASTER = $28
|
|
Adding number conversion cast (unumber) $40*8 in font_2x2_to_sprites::$1 = font_2x2_to_sprites::char_current#2 + $40*8
|
|
Adding number conversion cast (unumber) 7 in font_2x2_to_sprites::$2 = font_2x2_to_sprites::i#2 & 7
|
|
Adding number conversion cast (unumber) font_2x2_to_sprites::$2 in font_2x2_to_sprites::$2 = font_2x2_to_sprites::i#2 & (unumber)7
|
|
Adding number conversion cast (unumber) 7 in font_2x2_to_sprites::$3 = font_2x2_to_sprites::i#2 & 7
|
|
Adding number conversion cast (unumber) font_2x2_to_sprites::$3 in font_2x2_to_sprites::$3 = font_2x2_to_sprites::i#2 & (unumber)7
|
|
Adding number conversion cast (unumber) 0 in font_2x2_to_sprites::sprite#2[font_2x2_to_sprites::sprite_idx#2] = 0
|
|
Adding number conversion cast (unumber) 7 in font_2x2_to_sprites::$4 = font_2x2_to_sprites::i#2 == 7
|
|
Adding number conversion cast (unumber) $80*8 in font_2x2_to_sprites::$9 = font_2x2_to_sprites::char_current#3 + $80*8
|
|
Adding number conversion cast (unumber) $c0*8 in font_2x2_to_sprites::$10 = font_2x2_to_sprites::char_current#3 + $c0*8
|
|
Adding number conversion cast (unumber) $f in font_2x2_to_sprites::$5 = font_2x2_to_sprites::i#3 == $f
|
|
Adding number conversion cast (unumber) ' '*8 in font_2x2_to_sprites::$7 = font_2x2_to_sprites::font_2x2#2 + ' '*8
|
|
Adding number conversion cast (unumber) 8 in font_2x2_to_sprites::$7 = font_2x2_to_sprites::font_2x2#2 + (unumber)' '*8
|
|
Adding number conversion cast (unumber) ' '*8 in font_2x2_to_sprites::$8 = font_2x2_to_sprites::font_2x2#2 + ' '*8
|
|
Adding number conversion cast (unumber) 8 in font_2x2_to_sprites::$8 = font_2x2_to_sprites::font_2x2#2 + (unumber)' '*8
|
|
Adding number conversion cast (unumber) 8 in font_2x2_to_sprites::char_current#1 = font_2x2_to_sprites::char_current#4 + 8
|
|
Adding number conversion cast (unumber) $40 in font_2x2_to_sprites::sprite#1 = font_2x2_to_sprites::sprite#3 + $40
|
|
Adding number conversion cast (unumber) $40*8 in font_2x2::$0 = font_2x2::next_2x2#2 + $40*8
|
|
Adding number conversion cast (unumber) $80 in font_2x2::$1 = font_2x2::glyph_bits#2 & $80
|
|
Adding number conversion cast (unumber) font_2x2::$1 in font_2x2::$1 = font_2x2::glyph_bits#2 & (unumber)$80
|
|
Adding number conversion cast (unumber) 0 in font_2x2::$22 = 0 != font_2x2::$1
|
|
Adding number conversion cast (unumber) 1 in font_2x2::$5 = font_2x2::glyph_bits_2x2#3 << 1
|
|
Adding number conversion cast (unumber) 1 in font_2x2::$7 = font_2x2::glyph_bits_2x2#1 << 1
|
|
Adding number conversion cast (unumber) 1 in font_2x2::glyph_bits#1 = font_2x2::glyph_bits#3 << 1
|
|
Adding number conversion cast (unumber) 1 in font_2x2::$11 = font_2x2::l2#3 + 1
|
|
Adding number conversion cast (unumber) font_2x2::$11 in font_2x2::$11 = font_2x2::l2#3 + (unumber)1
|
|
Adding number conversion cast (unumber) 1 in font_2x2::$14 = font_2x2::l2#3 + 1
|
|
Adding number conversion cast (unumber) font_2x2::$14 in font_2x2::$14 = font_2x2::l2#3 + (unumber)1
|
|
Adding number conversion cast (unumber) 2 in font_2x2::l2#1 = font_2x2::l2#3 + 2
|
|
Adding number conversion cast (unumber) 8 in font_2x2::$16 = font_2x2::l2#1 == 8
|
|
Adding number conversion cast (unumber) $80*8 in font_2x2::$18 = font_2x2::next_2x2#3 + $80*8
|
|
Adding number conversion cast (unumber) $c0*8 in font_2x2::$19 = font_2x2::next_2x2#3 + $c0*8
|
|
Adding number conversion cast (unumber) 0 in font_2x2::l2#2 = 0
|
|
Adding number conversion cast (unumber) 8 in font_2x2::next_2x2#1 = font_2x2::next_2x2#4 + 8
|
|
Adding number conversion cast (unumber) 8 in font_2x2::next_original#1 = font_2x2::next_original#3 + 8
|
|
Adding number conversion cast (unumber) $40 in __start::__init1_toSpritePtr1_$0 = __start::__init1_toSpritePtr1_$1 / $40
|
|
Adding number conversion cast (unumber) __start::__init1_toSpritePtr1_$0 in __start::__init1_toSpritePtr1_$0 = __start::__init1_toSpritePtr1_$1 / (unumber)$40
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Inlining cast plex_show_idx = (unumber)0
|
|
Inlining cast plex_sprite_idx = (unumber)0
|
|
Inlining cast plex_sprite_msb = (unumber)1
|
|
Inlining cast PLEX_FREE_YPOS[plexSort::plexFreePrepare1_s#2] = (unumber)0
|
|
Inlining cast plex_free_next = (unumber)0
|
|
Inlining cast plex_sprite_msb = (unumber)1
|
|
Inlining cast font_2x2_to_sprites::num_chars#0 = (unumber)$40
|
|
Inlining cast *SPRITES_ENABLE = (unumber)$ff
|
|
Inlining cast *RASTER = (unumber)$28
|
|
Inlining cast *RASTER = (unumber)$28
|
|
Inlining cast font_2x2_to_sprites::sprite#2[font_2x2_to_sprites::sprite_idx#2] = (unumber)0
|
|
Inlining cast font_2x2::l2#2 = (unumber)0
|
|
Successful SSA optimization Pass2InlineCast
|
|
Simplifying constant pointer cast (byte*) 53248
|
|
Simplifying constant pointer cast (byte*) 53249
|
|
Simplifying constant pointer cast (byte*) 53264
|
|
Simplifying constant pointer cast (byte*) 53287
|
|
Simplifying constant pointer cast (byte*) 53269
|
|
Simplifying constant pointer cast (byte*) 53266
|
|
Simplifying constant pointer cast (byte*) 53265
|
|
Simplifying constant pointer cast (byte*) 53272
|
|
Simplifying constant pointer cast (byte*) 53273
|
|
Simplifying constant pointer cast (byte*) 53274
|
|
Simplifying constant pointer cast (byte*) 1
|
|
Simplifying constant pointer cast (byte*) 53248
|
|
Simplifying constant pointer cast (struct MOS6526_CIA*) 56320
|
|
Simplifying constant pointer cast (void()**) 788
|
|
Simplifying constant pointer cast (byte*) 4096
|
|
Simplifying constant pointer cast (byte*) 12288
|
|
Simplifying constant pointer cast (byte*) 1024
|
|
Simplifying constant integer cast $100
|
|
Simplifying constant integer cast $3f8
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast $ff
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast $16
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 7
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $ff
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 7
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast $40
|
|
Simplifying constant integer cast $3fff
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast $f
|
|
Simplifying constant integer cast XMOVEMENT_HI[main::x#2]
|
|
Simplifying constant integer cast XMOVEMENT[main::x#2]
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast $ff
|
|
Simplifying constant integer cast $7f
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast XMOVEMENT_HI[plex_move::x_idx#2]
|
|
Simplifying constant integer cast XMOVEMENT[plex_move::x_idx#2]
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 3
|
|
Simplifying constant integer cast 3
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast 7
|
|
Simplifying constant integer cast 7
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 7
|
|
Simplifying constant integer cast $f
|
|
Simplifying constant integer cast ' '*(unumber)8
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast ' '*(unumber)8
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast $40
|
|
Simplifying constant integer cast $80
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast $40
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (word) $100
|
|
Finalized unsigned number type (word) $3f8
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) $ff
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) $16
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 7
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) $ff
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 7
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) $40
|
|
Finalized unsigned number type (word) $3fff
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) $f
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $ff
|
|
Finalized unsigned number type (byte) $7f
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 3
|
|
Finalized unsigned number type (byte) 3
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) 7
|
|
Finalized unsigned number type (byte) 7
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 7
|
|
Finalized unsigned number type (byte) $f
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $40
|
|
Finalized unsigned number type (byte) $80
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $40
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Inferred type updated to byte in plexSort::$1 = plexSort::m#2 + 1
|
|
Inferred type updated to byte in plexSort::$4 = plexSort::s#3 + 1
|
|
Inferred type updated to byte in plexShowSprite::$0 = plex_sprite_idx * 2
|
|
Inferred type updated to byte in plexShowSprite::plexFreeAdd1_$0 = plexShowSprite::plexFreeAdd1_ypos#1 + $16
|
|
Inferred type updated to byte in plexShowSprite::plexFreeAdd1_$1 = plex_free_next + 1
|
|
Inferred type updated to byte in plexShowSprite::plexFreeAdd1_$2 = plexShowSprite::plexFreeAdd1_$1 & 7
|
|
Inferred type updated to byte in plexShowSprite::$9 = $ff ^ plex_sprite_msb
|
|
Inferred type updated to byte in plexShowSprite::$5 = plex_sprite_idx + 1
|
|
Inferred type updated to byte in plexShowSprite::$6 = plexShowSprite::$5 & 7
|
|
Inferred type updated to word in main::toD0181_$0 = main::toD0181_$7 & $3fff
|
|
Inferred type updated to word in main::toD0181_$1 = main::toD0181_$0 * 4
|
|
Inferred type updated to byte in main::toD0181_$2 = > main::toD0181_$1
|
|
Inferred type updated to byte in main::toD0181_$4 = main::toD0181_$3 / 4
|
|
Inferred type updated to byte in main::toD0181_$5 = main::toD0181_$4 & $f
|
|
Inferred type updated to byte in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
|
|
Inferred type updated to byte in plex_irq::$4 = *RASTER + 3
|
|
Inferred type updated to byte in font_2x2_to_sprites::$2 = font_2x2_to_sprites::i#2 & 7
|
|
Inferred type updated to byte in font_2x2_to_sprites::$3 = font_2x2_to_sprites::i#2 & 7
|
|
Inferred type updated to byte in font_2x2::$1 = font_2x2::glyph_bits#2 & $80
|
|
Inferred type updated to byte in font_2x2::$11 = font_2x2::l2#3 + 1
|
|
Inferred type updated to byte in font_2x2::$14 = font_2x2::l2#3 + 1
|
|
Inferred type updated to word in __start::__init1_toSpritePtr1_$0 = __start::__init1_toSpritePtr1_$1 / $40
|
|
Inversing boolean not [18] plexSort::$3 = plexSort::nxt_y#0 >= PLEX_YPOS[PLEX_SORTED_IDX[plexSort::m#2]] from [17] plexSort::$2 = plexSort::nxt_y#0 < PLEX_YPOS[PLEX_SORTED_IDX[plexSort::m#2]]
|
|
Inversing boolean not [78] plexShowSprite::$8 = plex_sprite_msb != 0 from [77] plexShowSprite::$7 = plex_sprite_msb == 0
|
|
Inversing boolean not [183] plex_move::$1 = plex_move::x_idx#2 != 0 from [182] plex_move::$0 = plex_move::x_idx#2 == 0
|
|
Inversing boolean not [192] plex_move::$3 = *scroll_text_next#12 != 0 from [191] plex_move::$2 = *scroll_text_next#12 == 0
|
|
Inversing boolean not [263] font_2x2_to_sprites::$6 = font_2x2_to_sprites::i#3 != $f from [262] font_2x2_to_sprites::$5 = font_2x2_to_sprites::i#3 == $f
|
|
Inversing boolean not [326] font_2x2::$17 = font_2x2::l2#1 != 8 from [325] font_2x2::$16 = font_2x2::l2#1 == 8
|
|
Successful SSA optimization Pass2UnaryNotSimplification
|
|
Alias candidate removed (volatile)PLEX_SCREEN_PTR = plexInit::plexSetScreen1_$0
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Alias plexInit::plexSetScreen1_screen#0 = plexInit::screen#1 plexInit::plexSetScreen1_screen#1
|
|
Alias plexSort::m#2 = plexSort::m#4 plexSort::s#0
|
|
Alias plexSort::nxt_y#0 = plexSort::nxt_y#2
|
|
Alias plexSort::nxt_idx#0 = plexSort::nxt_idx#3
|
|
Alias plexSort::s#1 = plexSort::s#4
|
|
Alias plexSort::nxt_idx#1 = plexSort::nxt_idx#2
|
|
Alias plexSort::m#5 = plexSort::m#6
|
|
Alias plexShowSprite::plex_sprite_idx2#0 = plexShowSprite::$0 plexShowSprite::plex_sprite_idx2#2 plexShowSprite::plex_sprite_idx2#1
|
|
Alias plexShowSprite::plexFreeAdd1_ypos#0 = plexShowSprite::ypos#0 plexShowSprite::plexFreeAdd1_ypos#1
|
|
Alias SPRITE_0#12 = SPRITE_0#24 SPRITE_0#27 SPRITE_0#21 SPRITE_0#18 SPRITE_0#15 SPRITE_0#9
|
|
Alias scroll_text_next#32 = scroll_text_next#37 scroll_text_next#38 scroll_text_next#36 scroll_text_next#35 scroll_text_next#34 scroll_text_next#33
|
|
Alias y_sin_idx#32 = y_sin_idx#37 y_sin_idx#38 y_sin_idx#36 y_sin_idx#35 y_sin_idx#34 y_sin_idx#33
|
|
Alias x_movement_idx#32 = x_movement_idx#37 x_movement_idx#38 x_movement_idx#36 x_movement_idx#35 x_movement_idx#34 x_movement_idx#33
|
|
Alias main::toD0181_screen#0 = main::toD0181_screen#1
|
|
Alias main::toD0181_gfx#0 = main::toD0181_gfx#1
|
|
Alias main::toD0181_return#0 = main::toD0181_$6 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$3
|
|
Alias SPRITE_0#2 = SPRITE_0#5 SPRITE_0#22
|
|
Alias main::s#2 = main::s#3
|
|
Alias main::x#2 = main::x#3
|
|
Alias scroll_text_next#29 = scroll_text_next#31 scroll_text_next#30
|
|
Alias y_sin_idx#27 = y_sin_idx#31 y_sin_idx#30
|
|
Alias x_movement_idx#27 = x_movement_idx#31 x_movement_idx#30
|
|
Alias scroll_text_next#17 = scroll_text_next#23
|
|
Alias y_sin_idx#16 = y_sin_idx#21
|
|
Alias x_movement_idx#16 = x_movement_idx#21
|
|
Alias SPRITE_0#16 = SPRITE_0#19 SPRITE_0#28 SPRITE_0#25
|
|
Alias scroll_text_next#0 = scroll_text_next#9 scroll_text_next#24
|
|
Alias y_sin_idx#0 = y_sin_idx#8 y_sin_idx#22
|
|
Alias x_movement_idx#0 = x_movement_idx#8 x_movement_idx#22
|
|
Alias scroll_text_next#18 = scroll_text_next#26
|
|
Alias y_sin_idx#17 = y_sin_idx#24
|
|
Alias x_movement_idx#17 = x_movement_idx#24
|
|
Alias SPRITE_0#17 = SPRITE_0#20 SPRITE_0#29 SPRITE_0#26
|
|
Alias scroll_text_next#1 = scroll_text_next#10 scroll_text_next#25
|
|
Alias y_sin_idx#1 = y_sin_idx#9 y_sin_idx#23
|
|
Alias x_movement_idx#1 = x_movement_idx#9 x_movement_idx#23
|
|
Alias scroll_text_next#11 = scroll_text_next#19 scroll_text_next#2
|
|
Alias y_sin_idx#10 = y_sin_idx#18 y_sin_idx#2
|
|
Alias x_movement_idx#10 = x_movement_idx#18 x_movement_idx#2
|
|
Alias scroll_text_next#12 = scroll_text_next#20
|
|
Alias SPRITE_0#10 = SPRITE_0#6 SPRITE_0#7
|
|
Alias plex_move::s#2 = plex_move::s#5 plex_move::s#6
|
|
Alias plex_move::x_idx#2 = plex_move::x_idx#5 plex_move::x_idx#6
|
|
Alias plex_move::y_idx#1 = plex_move::y_idx#5 plex_move::y_idx#6
|
|
Alias y_sin_idx#25 = y_sin_idx#28 y_sin_idx#29
|
|
Alias x_movement_idx#25 = x_movement_idx#28 x_movement_idx#29
|
|
Alias y_sin_idx#12 = y_sin_idx#19
|
|
Alias x_movement_idx#12 = x_movement_idx#19
|
|
Alias scroll_text_next#14 = scroll_text_next#21 scroll_text_next#28 scroll_text_next#5
|
|
Alias y_sin_idx#13 = y_sin_idx#3 y_sin_idx#4
|
|
Alias x_movement_idx#13 = x_movement_idx#3 x_movement_idx#4
|
|
Alias plex_irq::plexFreeNextYpos1_return#0 = plex_irq::plexFreeNextYpos1_return#2 plex_irq::plexFreeNextYpos1_return#1 plex_irq::plexFreeNextYpos1_return#3 plex_irq::$2 plex_irq::rasterY#1 plex_irq::rasterY#3 plex_irq::rasterY#2
|
|
Alias font_2x2_to_sprites::char_current#0 = font_2x2_to_sprites::font_2x2#1
|
|
Alias font_2x2_to_sprites::sprite#0 = font_2x2_to_sprites::sprites#1
|
|
Alias font_2x2_to_sprites::char_current#2 = font_2x2_to_sprites::char_current#5 font_2x2_to_sprites::char_left#0
|
|
Alias font_2x2_to_sprites::sprite#4 = font_2x2_to_sprites::sprite#6
|
|
Alias font_2x2_to_sprites::font_2x2#5 = font_2x2_to_sprites::font_2x2#7
|
|
Alias font_2x2_to_sprites::c#2 = font_2x2_to_sprites::c#9
|
|
Alias font_2x2_to_sprites::num_chars#1 = font_2x2_to_sprites::num_chars#9
|
|
Alias font_2x2_to_sprites::char_right#0 = font_2x2_to_sprites::$1
|
|
Alias font_2x2_to_sprites::char_current#3 = font_2x2_to_sprites::char_current#6 font_2x2_to_sprites::char_current#8 font_2x2_to_sprites::char_current#9
|
|
Alias font_2x2_to_sprites::i#2 = font_2x2_to_sprites::i#5 font_2x2_to_sprites::i#3 font_2x2_to_sprites::i#6
|
|
Alias font_2x2_to_sprites::sprite#2 = font_2x2_to_sprites::sprite#7 font_2x2_to_sprites::sprite#8 font_2x2_to_sprites::sprite#9
|
|
Alias font_2x2_to_sprites::sprite_idx#3 = font_2x2_to_sprites::sprite_idx#6 font_2x2_to_sprites::sprite_idx#7 font_2x2_to_sprites::sprite_idx#8
|
|
Alias font_2x2_to_sprites::c#5 = font_2x2_to_sprites::c#8 font_2x2_to_sprites::c#6 font_2x2_to_sprites::c#7
|
|
Alias font_2x2_to_sprites::num_chars#5 = font_2x2_to_sprites::num_chars#8 font_2x2_to_sprites::num_chars#6 font_2x2_to_sprites::num_chars#7
|
|
Alias font_2x2_to_sprites::font_2x2#2 = font_2x2_to_sprites::font_2x2#8 font_2x2_to_sprites::font_2x2#4 font_2x2_to_sprites::font_2x2#3
|
|
Alias font_2x2_to_sprites::char_left#1 = font_2x2_to_sprites::$9
|
|
Alias font_2x2_to_sprites::char_right#1 = font_2x2_to_sprites::$10
|
|
Alias font_2x2_to_sprites::char_left#3 = font_2x2_to_sprites::char_left#5
|
|
Alias font_2x2_to_sprites::char_right#3 = font_2x2_to_sprites::char_right#5
|
|
Alias font_2x2_to_sprites::char_left#2 = font_2x2_to_sprites::$7
|
|
Alias font_2x2_to_sprites::char_right#2 = font_2x2_to_sprites::$8
|
|
Alias font_2x2_to_sprites::char_current#4 = font_2x2_to_sprites::char_current#7
|
|
Alias font_2x2_to_sprites::sprite#3 = font_2x2_to_sprites::sprite#5
|
|
Alias font_2x2_to_sprites::c#3 = font_2x2_to_sprites::c#4
|
|
Alias font_2x2_to_sprites::num_chars#3 = font_2x2_to_sprites::num_chars#4
|
|
Alias font_2x2_to_sprites::font_2x2#6 = font_2x2_to_sprites::font_2x2#9
|
|
Alias font_2x2::next_original#0 = font_2x2::font_original#1
|
|
Alias font_2x2::next_2x2#0 = font_2x2::font_2x2#1
|
|
Alias font_2x2::next_2x2_left#0 = font_2x2::next_2x2#2
|
|
Alias font_2x2::next_2x2_right#0 = font_2x2::$0
|
|
Alias font_2x2::glyph_bits_2x2#5 = font_2x2::glyph_bits_2x2#7 font_2x2::glyph_bits_2x2#6
|
|
Alias font_2x2::glyph_bits#2 = font_2x2::glyph_bits#4 font_2x2::glyph_bits#5
|
|
Alias font_2x2::b#3 = font_2x2::b#5 font_2x2::b#4
|
|
Alias font_2x2::next_2x2_left#4 = font_2x2::next_2x2_left#6 font_2x2::next_2x2_left#5
|
|
Alias font_2x2::l2#5 = font_2x2::l2#7 font_2x2::l2#6
|
|
Alias font_2x2::next_2x2_right#4 = font_2x2::next_2x2_right#6 font_2x2::next_2x2_right#5
|
|
Alias font_2x2::l#7 = font_2x2::l#9 font_2x2::l#8
|
|
Alias font_2x2::next_2x2#10 = font_2x2::next_2x2#8 font_2x2::next_2x2#9
|
|
Alias font_2x2::next_original#10 = font_2x2::next_original#9 font_2x2::next_original#11
|
|
Alias font_2x2::c#7 = font_2x2::c#9 font_2x2::c#8
|
|
Alias font_2x2::glyph_bit#0 = font_2x2::$4
|
|
Alias font_2x2::glyph_bits_2x2#1 = font_2x2::$6
|
|
Alias font_2x2::glyph_bits_2x2#2 = font_2x2::$8 font_2x2::glyph_bits_2x2#4
|
|
Alias font_2x2::next_2x2_left#2 = font_2x2::next_2x2_left#3
|
|
Alias font_2x2::l2#3 = font_2x2::l2#4
|
|
Alias font_2x2::next_2x2_right#2 = font_2x2::next_2x2_right#3
|
|
Alias font_2x2::l#4 = font_2x2::l#6 font_2x2::l#5
|
|
Alias font_2x2::next_2x2#3 = font_2x2::next_2x2#5 font_2x2::next_2x2#7
|
|
Alias font_2x2::next_original#6 = font_2x2::next_original#8 font_2x2::next_original#7
|
|
Alias font_2x2::c#4 = font_2x2::c#6 font_2x2::c#5
|
|
Alias font_2x2::next_2x2_left#1 = font_2x2::$18
|
|
Alias font_2x2::next_2x2_right#1 = font_2x2::$19
|
|
Alias font_2x2::next_2x2#4 = font_2x2::next_2x2#6
|
|
Alias font_2x2::next_original#3 = font_2x2::next_original#5
|
|
Alias font_2x2::c#2 = font_2x2::c#3
|
|
Alias __start::__init1_toSpritePtr1_sprite#0 = __start::__init1_toSpritePtr1_sprite#1
|
|
Alias SPRITE_0#0 = __start::__init1_toSpritePtr1_return#2 __start::__init1_toSpritePtr1_return#0 __start::__init1_toSpritePtr1_return#1 __start::__init1_toSpritePtr1_return#3 __start::__init1_$0 SPRITE_0#11 SPRITE_0#8 SPRITE_0#4 SPRITE_0#1
|
|
Alias scroll_text_next#22 = scroll_text_next#6
|
|
Alias y_sin_idx#20 = y_sin_idx#5
|
|
Alias x_movement_idx#20 = x_movement_idx#5
|
|
Alias scroll_text_next#15 = scroll_text_next#7 scroll_text_next#16 scroll_text_next#8
|
|
Alias y_sin_idx#14 = y_sin_idx#6 y_sin_idx#15 y_sin_idx#7
|
|
Alias x_movement_idx#14 = x_movement_idx#6 x_movement_idx#15 x_movement_idx#7
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (volatile)PLEX_SCREEN_PTR = plexInit::plexSetScreen1_$0
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Alias SPRITE_0#10 = SPRITE_0#3
|
|
Alias plex_move::s#2 = plex_move::s#4
|
|
Alias plex_move::x_idx#2 = plex_move::x_idx#4
|
|
Alias plex_move::y_idx#1 = plex_move::y_idx#4
|
|
Alias y_sin_idx#25 = y_sin_idx#26
|
|
Alias x_movement_idx#25 = x_movement_idx#26
|
|
Alias font_2x2_to_sprites::i#2 = font_2x2_to_sprites::i#4
|
|
Alias font_2x2_to_sprites::sprite#2 = font_2x2_to_sprites::sprite#3
|
|
Alias font_2x2_to_sprites::sprite_idx#3 = font_2x2_to_sprites::sprite_idx#5
|
|
Alias font_2x2_to_sprites::char_current#3 = font_2x2_to_sprites::char_current#4
|
|
Alias font_2x2_to_sprites::c#3 = font_2x2_to_sprites::c#5
|
|
Alias font_2x2_to_sprites::num_chars#3 = font_2x2_to_sprites::num_chars#5
|
|
Alias font_2x2_to_sprites::font_2x2#2 = font_2x2_to_sprites::font_2x2#6
|
|
Alias font_2x2::glyph_bits_2x2#3 = font_2x2::glyph_bits_2x2#5
|
|
Alias font_2x2::glyph_bits#2 = font_2x2::glyph_bits#3
|
|
Alias font_2x2::b#2 = font_2x2::b#3
|
|
Alias font_2x2::next_2x2_left#2 = font_2x2::next_2x2_left#4
|
|
Alias font_2x2::l2#3 = font_2x2::l2#5
|
|
Alias font_2x2::next_2x2_right#2 = font_2x2::next_2x2_right#4
|
|
Alias font_2x2::l#3 = font_2x2::l#4 font_2x2::l#7
|
|
Alias font_2x2::next_2x2#10 = font_2x2::next_2x2#3 font_2x2::next_2x2#4
|
|
Alias font_2x2::next_original#10 = font_2x2::next_original#6 font_2x2::next_original#3
|
|
Alias font_2x2::c#2 = font_2x2::c#4 font_2x2::c#7
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (volatile)PLEX_SCREEN_PTR = plexInit::plexSetScreen1_$0
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Alias plex_move::x_idx#2 = plex_move::x_idx#3
|
|
Alias plex_move::s#2 = plex_move::s#3
|
|
Alias plex_move::y_idx#1 = plex_move::y_idx#3
|
|
Alias y_sin_idx#12 = y_sin_idx#25
|
|
Alias x_movement_idx#12 = x_movement_idx#25
|
|
Alias SPRITE_0#10 = SPRITE_0#14
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (volatile)PLEX_SCREEN_PTR = plexInit::plexSetScreen1_$0
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Identical Phi Values plexInit::plexSetScreen1_screen#0 plexInit::screen#0
|
|
Identical Phi Values plexSort::nxt_y#1 plexSort::nxt_y#0
|
|
Identical Phi Values plexSort::nxt_idx#1 plexSort::nxt_idx#0
|
|
Identical Phi Values plexSort::m#5 plexSort::m#2
|
|
Identical Phi Values SPRITE_0#12 SPRITE_0#0
|
|
Identical Phi Values scroll_text_next#32 scroll_text_next#22
|
|
Identical Phi Values y_sin_idx#32 y_sin_idx#20
|
|
Identical Phi Values x_movement_idx#32 x_movement_idx#20
|
|
Identical Phi Values SPRITE_0#2 SPRITE_0#12
|
|
Identical Phi Values scroll_text_next#29 scroll_text_next#32
|
|
Identical Phi Values y_sin_idx#27 y_sin_idx#32
|
|
Identical Phi Values x_movement_idx#27 x_movement_idx#32
|
|
Identical Phi Values scroll_text_next#17 scroll_text_next#29
|
|
Identical Phi Values y_sin_idx#16 y_sin_idx#27
|
|
Identical Phi Values x_movement_idx#16 x_movement_idx#27
|
|
Identical Phi Values SPRITE_0#16 SPRITE_0#2
|
|
Identical Phi Values scroll_text_next#0 scroll_text_next#14
|
|
Identical Phi Values y_sin_idx#0 y_sin_idx#13
|
|
Identical Phi Values x_movement_idx#0 x_movement_idx#13
|
|
Identical Phi Values scroll_text_next#18 scroll_text_next#11
|
|
Identical Phi Values y_sin_idx#17 y_sin_idx#10
|
|
Identical Phi Values x_movement_idx#17 x_movement_idx#10
|
|
Identical Phi Values SPRITE_0#17 SPRITE_0#23
|
|
Identical Phi Values scroll_text_next#1 scroll_text_next#14
|
|
Identical Phi Values y_sin_idx#1 y_sin_idx#13
|
|
Identical Phi Values x_movement_idx#1 x_movement_idx#13
|
|
Identical Phi Values y_sin_idx#12 y_sin_idx#11
|
|
Identical Phi Values x_movement_idx#12 x_movement_idx#11
|
|
Identical Phi Values SPRITE_0#10 SPRITE_0#13
|
|
Identical Phi Values font_2x2_to_sprites::char_current#0 font_2x2_to_sprites::font_2x2#0
|
|
Identical Phi Values font_2x2_to_sprites::sprite#0 font_2x2_to_sprites::sprites#0
|
|
Identical Phi Values font_2x2_to_sprites::num_chars#2 font_2x2_to_sprites::num_chars#0
|
|
Identical Phi Values font_2x2_to_sprites::sprite#2 font_2x2_to_sprites::sprite#4
|
|
Identical Phi Values font_2x2_to_sprites::char_current#3 font_2x2_to_sprites::char_current#2
|
|
Identical Phi Values font_2x2_to_sprites::font_2x2#2 font_2x2_to_sprites::font_2x2#5
|
|
Identical Phi Values font_2x2_to_sprites::c#3 font_2x2_to_sprites::c#2
|
|
Identical Phi Values font_2x2_to_sprites::num_chars#3 font_2x2_to_sprites::num_chars#1
|
|
Identical Phi Values font_2x2::next_original#0 font_2x2::font_original#0
|
|
Identical Phi Values font_2x2::next_2x2#0 font_2x2::font_2x2#0
|
|
Identical Phi Values font_2x2::next_2x2_left#2 font_2x2::next_2x2_left#7
|
|
Identical Phi Values font_2x2::l2#3 font_2x2::l2#8
|
|
Identical Phi Values font_2x2::next_2x2_right#2 font_2x2::next_2x2_right#7
|
|
Identical Phi Values font_2x2::l#3 font_2x2::l#2
|
|
Identical Phi Values font_2x2::next_2x2#10 font_2x2::next_2x2#11
|
|
Identical Phi Values font_2x2::next_original#10 font_2x2::next_original#2
|
|
Identical Phi Values font_2x2::c#2 font_2x2::c#10
|
|
Identical Phi Values scroll_text_next#15 scroll_text_next#11
|
|
Identical Phi Values y_sin_idx#14 y_sin_idx#10
|
|
Identical Phi Values x_movement_idx#14 x_movement_idx#10
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Identical Phi Values plexSort::m#3 plexSort::m#2
|
|
Identical Phi Values scroll_text_next#11 scroll_text_next#14
|
|
Identical Phi Values y_sin_idx#10 y_sin_idx#13
|
|
Identical Phi Values x_movement_idx#10 x_movement_idx#13
|
|
Identical Phi Values SPRITE_0#23 SPRITE_0#0
|
|
Identical Phi Values font_2x2_to_sprites::num_chars#1 font_2x2_to_sprites::num_chars#0
|
|
Identical Phi Values font_2x2_to_sprites::font_2x2#5 font_2x2_to_sprites::font_2x2#0
|
|
Identical Phi Values font_2x2::next_original#2 font_2x2::next_original#4
|
|
Identical Phi Values font_2x2::next_2x2#11 font_2x2::next_2x2_left#0
|
|
Identical Phi Values font_2x2::c#10 font_2x2::c#11
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Identical Phi Values SPRITE_0#13 SPRITE_0#0
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Identified duplicate assignment right side [65] plexShowSprite::$11 = plexShowSprite::xpos_idx#0 * SIZEOF_WORD
|
|
Identified duplicate assignment right side [249] font_2x2_to_sprites::$3 = font_2x2_to_sprites::i#2 & 7
|
|
Successful SSA optimization Pass2DuplicateRValueIdentification
|
|
Simple Condition plexInit::$1 [8] if(plexInit::i#1!=rangelast(0,PLEX_COUNT-1)) goto plexInit::@1
|
|
Simple Condition plexSort::$3 [16] if(plexSort::nxt_y#0>=PLEX_YPOS[PLEX_SORTED_IDX[plexSort::m#2]]) goto plexSort::@2
|
|
Simple Condition plexSort::$8 [20] if(plexSort::m#1!=rangelast(0,PLEX_COUNT-2)) goto plexSort::@1
|
|
Simple Condition plexSort::plexFreePrepare1_$0 [39] if(plexSort::plexFreePrepare1_s#1!=rangelast(0,7)) goto plexSort::plexFreePrepare1_@1
|
|
Simple Condition plexShowSprite::$4 [58] if(plexShowSprite::$3!=0) goto plexShowSprite::@1
|
|
Simple Condition plexShowSprite::$8 [68] if(plex_sprite_msb!=0) goto plexShowSprite::@return
|
|
Simple Condition main::$6 [100] if(main::s#2<PLEX_COUNT) goto main::@2
|
|
Simple Condition main::$8 [114] if(main::s1#1!=rangelast(0,7)) goto main::@4
|
|
Simple Condition plex_move::$1 [147] if(plex_move::x_idx#2!=0) goto plex_move::@2
|
|
Simple Condition plex_move::$5 [152] if(plex_move::s#1!=rangelast(0,PLEX_COUNT-1)) goto plex_move::@1
|
|
Simple Condition plex_move::$3 [154] if(*scroll_text_next#12!=0) goto plex_move::@3
|
|
Simple Condition plex_irq::$0 [173] if(plex_show_idx<PLEX_COUNT) goto plex_irq::@1
|
|
Simple Condition font_2x2_to_sprites::$0 [184] if(font_2x2_to_sprites::c#2<font_2x2_to_sprites::num_chars#0) goto font_2x2_to_sprites::@2
|
|
Simple Condition font_2x2_to_sprites::$4 [198] if(font_2x2_to_sprites::i#2==7) goto font_2x2_to_sprites::@4
|
|
Simple Condition font_2x2_to_sprites::$6 [202] if(font_2x2_to_sprites::i#2!=$f) goto font_2x2_to_sprites::@5
|
|
Simple Condition font_2x2_to_sprites::$11 [208] if(font_2x2_to_sprites::i#1!=rangelast(0,$14)) goto font_2x2_to_sprites::@3
|
|
Simple Condition font_2x2::$22 [226] if(0!=font_2x2::$1) goto font_2x2::@4
|
|
Simple Condition font_2x2::$9 [237] if(font_2x2::b#1!=rangelast(0,7)) goto font_2x2::@3
|
|
Simple Condition font_2x2::$17 [250] if(font_2x2::l2#1!=8) goto font_2x2::@9
|
|
Simple Condition font_2x2::$20 [254] if(font_2x2::l#1!=rangelast(0,7)) goto font_2x2::@2
|
|
Simple Condition font_2x2::$21 [262] if(font_2x2::c#1!=rangelast(0,$3f)) goto font_2x2::@1
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Rewriting && if()-condition to two if()s [27] plexSort::$7 = plexSort::$5 && plexSort::$6
|
|
Rewriting ! if()-condition to reversed if() [129] main::$9 = ! frame_done
|
|
Rewriting && if()-condition to two if()s [170] plex_irq::$6 = plex_irq::$3 && plex_irq::$5
|
|
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
|
Constant plexInit::i#0 = 0
|
|
Constant plexSort::m#0 = 0
|
|
Constant plexSort::plexFreePrepare1_s#0 = 0
|
|
Constant font_2x2::font_original#0 = CHARGEN
|
|
Constant font_2x2::font_2x2#0 = FONT
|
|
Constant font_2x2_to_sprites::font_2x2#0 = FONT
|
|
Constant font_2x2_to_sprites::sprites#0 = SPRITES
|
|
Constant font_2x2_to_sprites::num_chars#0 = $40
|
|
Constant plexInit::screen#0 = SCREEN
|
|
Constant main::toD0181_screen#0 = SCREEN
|
|
Constant main::toD0181_gfx#0 = CHARSET_DEFAULT
|
|
Constant main::s#0 = 0
|
|
Constant main::x#0 = 0
|
|
Constant main::s1#0 = 0
|
|
Constant plex_move::s#0 = 0
|
|
Constant scroll_text_next#4 = SCROLL_TEXT
|
|
Constant plex_irq::rasterY#0 = 0
|
|
Constant font_2x2_to_sprites::c#0 = 0
|
|
Constant font_2x2_to_sprites::sprite_idx#0 = 0
|
|
Constant font_2x2_to_sprites::i#0 = 0
|
|
Constant font_2x2::c#0 = 0
|
|
Constant font_2x2::l2#0 = 0
|
|
Constant font_2x2::l#0 = 0
|
|
Constant font_2x2::glyph_bits_2x2#0 = 0
|
|
Constant font_2x2::b#0 = 0
|
|
Constant font_2x2::$3 = 1
|
|
Constant font_2x2::$2 = 0
|
|
Constant font_2x2::l2#2 = 0
|
|
Constant __start::__init1_toSpritePtr1_sprite#0 = SPRITES
|
|
Constant scroll_text_next#22 = SCROLL_TEXT
|
|
Constant y_sin_idx#20 = 0
|
|
Constant x_movement_idx#20 = 0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant main::toD0181_$7 = (word)main::toD0181_screen#0
|
|
Constant __start::__init1_toSpritePtr1_$1 = (word)__start::__init1_toSpritePtr1_sprite#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant value identified (word)main::toD0181_gfx#0 in [91] main::toD0181_$3 = > (word)main::toD0181_gfx#0
|
|
Successful SSA optimization Pass2ConstantValues
|
|
if() condition always true - replacing block destination [127] if(true) goto main::@7
|
|
Successful SSA optimization Pass2ConstantIfs
|
|
Resolved ranged next value [6] plexInit::i#1 = ++ plexInit::i#2 to ++
|
|
Resolved ranged comparison value [8] if(plexInit::i#1!=rangelast(0,PLEX_COUNT-1)) goto plexInit::@1 to PLEX_COUNT-1+1
|
|
Resolved ranged next value [18] plexSort::m#1 = ++ plexSort::m#2 to ++
|
|
Resolved ranged comparison value [20] if(plexSort::m#1!=rangelast(0,PLEX_COUNT-2)) goto plexSort::@1 to PLEX_COUNT-2+1
|
|
Resolved ranged next value [37] plexSort::plexFreePrepare1_s#1 = ++ plexSort::plexFreePrepare1_s#2 to ++
|
|
Resolved ranged comparison value [39] if(plexSort::plexFreePrepare1_s#1!=rangelast(0,7)) goto plexSort::plexFreePrepare1_@1 to 8
|
|
Resolved ranged next value [112] main::s1#1 = ++ main::s1#2 to ++
|
|
Resolved ranged comparison value [114] if(main::s1#1!=rangelast(0,7)) goto main::@4 to 8
|
|
Resolved ranged next value [150] plex_move::s#1 = ++ plex_move::s#2 to ++
|
|
Resolved ranged comparison value [152] if(plex_move::s#1!=rangelast(0,PLEX_COUNT-1)) goto plex_move::@1 to PLEX_COUNT-1+1
|
|
Resolved ranged next value [206] font_2x2_to_sprites::i#1 = ++ font_2x2_to_sprites::i#2 to ++
|
|
Resolved ranged comparison value [208] if(font_2x2_to_sprites::i#1!=rangelast(0,$14)) goto font_2x2_to_sprites::@3 to $15
|
|
Resolved ranged next value [235] font_2x2::b#1 = ++ font_2x2::b#2 to ++
|
|
Resolved ranged comparison value [237] if(font_2x2::b#1!=rangelast(0,7)) goto font_2x2::@3 to 8
|
|
Resolved ranged next value [252] font_2x2::l#1 = ++ font_2x2::l#2 to ++
|
|
Resolved ranged comparison value [254] if(font_2x2::l#1!=rangelast(0,7)) goto font_2x2::@2 to 8
|
|
Resolved ranged next value [260] font_2x2::c#1 = ++ font_2x2::c#11 to ++
|
|
Resolved ranged comparison value [262] if(font_2x2::c#1!=rangelast(0,$3f)) goto font_2x2::@1 to $40
|
|
Eliminating unused constant plex_irq::rasterY#0
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Removing unused block main::@return
|
|
Successful SSA optimization Pass2EliminateUnusedBlocks
|
|
Adding number conversion cast (unumber) PLEX_COUNT-1+1 in if(plexInit::i#1!=PLEX_COUNT-1+1) goto plexInit::@1
|
|
Adding number conversion cast (unumber) 1 in if(plexInit::i#1!=(unumber)PLEX_COUNT-1+1) goto plexInit::@1
|
|
Adding number conversion cast (unumber) PLEX_COUNT-2+1 in if(plexSort::m#1!=PLEX_COUNT-2+1) goto plexSort::@1
|
|
Adding number conversion cast (unumber) 1 in if(plexSort::m#1!=(unumber)PLEX_COUNT-2+1) goto plexSort::@1
|
|
Adding number conversion cast (unumber) 8 in if(plexSort::plexFreePrepare1_s#1!=8) goto plexSort::plexFreePrepare1_@1
|
|
Adding number conversion cast (unumber) 8 in if(main::s1#1!=8) goto main::@4
|
|
Adding number conversion cast (unumber) PLEX_COUNT-1+1 in if(plex_move::s#1!=PLEX_COUNT-1+1) goto plex_move::@1
|
|
Adding number conversion cast (unumber) 1 in if(plex_move::s#1!=(unumber)PLEX_COUNT-1+1) goto plex_move::@1
|
|
Adding number conversion cast (unumber) $15 in if(font_2x2_to_sprites::i#1!=$15) goto font_2x2_to_sprites::@3
|
|
Adding number conversion cast (unumber) 8 in if(font_2x2::b#1!=8) goto font_2x2::@3
|
|
Adding number conversion cast (unumber) 8 in if(font_2x2::l#1!=8) goto font_2x2::@2
|
|
Adding number conversion cast (unumber) $40 in if(font_2x2::c#1!=$40) goto font_2x2::@1
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Simplifying constant integer cast PLEX_COUNT-1+(unumber)1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast PLEX_COUNT-2+(unumber)1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast PLEX_COUNT-1+(unumber)1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast $15
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast $40
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) $15
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $40
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Alias candidate removed (volatile)PLEX_SCREEN_PTR = plexInit::plexSetScreen1_$0
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Alias plexShowSprite::$11 = plexShowSprite::$10
|
|
Alias font_2x2_to_sprites::$3 = font_2x2_to_sprites::$2
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (volatile)PLEX_SCREEN_PTR = plexInit::plexSetScreen1_$0
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Simple Condition plexSort::$5 [20] if(plexSort::s#1!=$ff) goto plexSort::@7
|
|
Simple Condition plex_irq::$3 [129] if(plex_show_idx<PLEX_COUNT) goto plex_irq::@8
|
|
Simple Condition plexSort::$6 [208] if(plexSort::nxt_y#0<PLEX_YPOS[PLEX_SORTED_IDX[plexSort::s#1]]) goto plexSort::@3
|
|
Simple Condition plex_irq::$5 [209] if(plex_irq::plexFreeNextYpos1_return#0<plex_irq::$4) goto plex_irq::@3
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Negating conditional jump and destination [20] if(plexSort::s#1==$ff) goto plexSort::@4
|
|
Negating conditional jump and destination [129] if(plex_show_idx>=PLEX_COUNT) goto plex_irq::@4
|
|
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
|
|
Constant right-side identified [0] plexInit::plexSetScreen1_$0 = plexInit::screen#0 + $3f8
|
|
Constant right-side identified [65] main::toD0181_$0 = main::toD0181_$7 & $3fff
|
|
Constant right-side identified [68] main::toD0181_$3 = > (word)main::toD0181_gfx#0
|
|
Constant right-side identified [152] font_2x2_to_sprites::char_left#2 = font_2x2_to_sprites::font_2x2#0 + ' '*8
|
|
Constant right-side identified [153] font_2x2_to_sprites::char_right#2 = font_2x2_to_sprites::font_2x2#0 + ' '*8
|
|
Constant right-side identified [203] __start::__init1_toSpritePtr1_$0 = __start::__init1_toSpritePtr1_$1 / $40
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant plexInit::plexSetScreen1_$0 = plexInit::screen#0+$3f8
|
|
Constant main::toD0181_$0 = main::toD0181_$7&$3fff
|
|
Constant main::toD0181_$3 = >(word)main::toD0181_gfx#0
|
|
Constant font_2x2_to_sprites::char_left#2 = font_2x2_to_sprites::font_2x2#0+' '*8
|
|
Constant font_2x2_to_sprites::char_right#2 = font_2x2_to_sprites::font_2x2#0+' '*8
|
|
Constant __start::__init1_toSpritePtr1_$0 = __start::__init1_toSpritePtr1_$1/$40
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant SPRITE_0#0 = (byte)__start::__init1_toSpritePtr1_$0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Constant right-side identified [62] main::toD0181_$1 = main::toD0181_$0 * 4
|
|
Constant right-side identified [64] main::toD0181_$4 = main::toD0181_$3 / 4
|
|
Constant right-side identified [70] main::$7 = SPRITE_0#0 + ' '
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant main::toD0181_$1 = main::toD0181_$0*4
|
|
Constant main::toD0181_$4 = main::toD0181_$3/4
|
|
Constant main::$7 = SPRITE_0#0+' '
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Constant right-side identified [62] main::toD0181_$2 = > main::toD0181_$1
|
|
Constant right-side identified [63] main::toD0181_$5 = main::toD0181_$4 & $f
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant main::toD0181_$2 = >main::toD0181_$1
|
|
Constant main::toD0181_$5 = main::toD0181_$4&$f
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Constant right-side identified [62] main::toD0181_return#0 = main::toD0181_$2 | main::toD0181_$5
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant main::toD0181_return#0 = main::toD0181_$2|main::toD0181_$5
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Rewriting multiplication to use shift [29] plexShowSprite::plex_sprite_idx2#0 = plex_sprite_idx * 2
|
|
Rewriting multiplication to use shift [39] plexShowSprite::$11 = plexShowSprite::xpos_idx#0 * SIZEOF_WORD
|
|
Rewriting multiplication to use shift [66] main::$12 = main::s#2 * SIZEOF_WORD
|
|
Rewriting multiplication to use shift [96] plex_move::$6 = plex_move::s#2 * SIZEOF_WORD
|
|
Successful SSA optimization Pass2MultiplyToShiftRewriting
|
|
Inlining constant with var siblings plexInit::i#0
|
|
Inlining constant with var siblings plexSort::m#0
|
|
Inlining constant with var siblings plexSort::plexFreePrepare1_s#0
|
|
Inlining constant with var siblings main::s#0
|
|
Inlining constant with var siblings main::x#0
|
|
Inlining constant with var siblings main::s1#0
|
|
Inlining constant with var siblings plex_move::s#0
|
|
Inlining constant with var siblings font_2x2_to_sprites::c#0
|
|
Inlining constant with var siblings font_2x2_to_sprites::sprite_idx#0
|
|
Inlining constant with var siblings font_2x2_to_sprites::i#0
|
|
Inlining constant with var siblings font_2x2_to_sprites::char_left#2
|
|
Inlining constant with var siblings font_2x2_to_sprites::char_right#2
|
|
Inlining constant with var siblings font_2x2::c#0
|
|
Inlining constant with var siblings font_2x2::l2#0
|
|
Inlining constant with var siblings font_2x2::l#0
|
|
Inlining constant with var siblings font_2x2::glyph_bits_2x2#0
|
|
Inlining constant with var siblings font_2x2::b#0
|
|
Inlining constant with var siblings font_2x2::l2#2
|
|
Inlining constant with var siblings scroll_text_next#4
|
|
Inlining constant with var siblings scroll_text_next#22
|
|
Inlining constant with var siblings y_sin_idx#20
|
|
Inlining constant with var siblings x_movement_idx#20
|
|
Constant inlined main::toD0181_screen#0 = SCREEN
|
|
Constant inlined main::toD0181_gfx#0 = CHARSET_DEFAULT
|
|
Constant inlined plexSort::plexFreePrepare1_s#0 = 0
|
|
Constant inlined plexInit::i#0 = 0
|
|
Constant inlined plexSort::m#0 = 0
|
|
Constant inlined font_2x2::glyph_bits_2x2#0 = 0
|
|
Constant inlined font_2x2::l2#0 = 0
|
|
Constant inlined font_2x2::font_2x2#0 = FONT
|
|
Constant inlined font_2x2::l2#2 = 0
|
|
Constant inlined font_2x2_to_sprites::char_right#2 = FONT+' '*8
|
|
Constant inlined scroll_text_next#22 = SCROLL_TEXT
|
|
Constant inlined font_2x2_to_sprites::font_2x2#0 = FONT
|
|
Constant inlined __start::__init1_toSpritePtr1_sprite#0 = SPRITES
|
|
Constant inlined main::s1#0 = 0
|
|
Constant inlined font_2x2::$2 = 0
|
|
Constant inlined font_2x2::$3 = 1
|
|
Constant inlined main::s#0 = 0
|
|
Constant inlined font_2x2::b#0 = 0
|
|
Constant inlined font_2x2_to_sprites::i#0 = 0
|
|
Constant inlined plexInit::plexSetScreen1_$0 = SCREEN+$3f8
|
|
Constant inlined main::toD0181_$7 = (word)SCREEN
|
|
Constant inlined __start::__init1_toSpritePtr1_$0 = (word)SPRITES/$40
|
|
Constant inlined font_2x2::c#0 = 0
|
|
Constant inlined __start::__init1_toSpritePtr1_$1 = (word)SPRITES
|
|
Constant inlined main::toD0181_$2 = >(word)SCREEN&$3fff*4
|
|
Constant inlined font_2x2_to_sprites::c#0 = 0
|
|
Constant inlined main::toD0181_$1 = (word)SCREEN&$3fff*4
|
|
Constant inlined main::toD0181_$0 = (word)SCREEN&$3fff
|
|
Constant inlined main::x#0 = 0
|
|
Constant inlined y_sin_idx#20 = 0
|
|
Constant inlined main::toD0181_$5 = >(word)CHARSET_DEFAULT/4&$f
|
|
Constant inlined font_2x2_to_sprites::char_left#2 = FONT+' '*8
|
|
Constant inlined main::toD0181_$4 = >(word)CHARSET_DEFAULT/4
|
|
Constant inlined main::toD0181_$3 = >(word)CHARSET_DEFAULT
|
|
Constant inlined font_2x2::l#0 = 0
|
|
Constant inlined plexInit::screen#0 = SCREEN
|
|
Constant inlined font_2x2_to_sprites::sprites#0 = SPRITES
|
|
Constant inlined plex_move::s#0 = 0
|
|
Constant inlined font_2x2::font_original#0 = CHARGEN
|
|
Constant inlined scroll_text_next#4 = SCROLL_TEXT
|
|
Constant inlined main::$7 = SPRITE_0#0+' '
|
|
Constant inlined font_2x2_to_sprites::sprite_idx#0 = 0
|
|
Constant inlined x_movement_idx#20 = 0
|
|
Successful SSA optimization Pass2ConstantInlining
|
|
Consolidated array index constant in assignment (PLEX_SORTED_IDX+1)[plexSort::$1]
|
|
Consolidated array index constant in assignment (PLEX_SORTED_IDX+1)[plexSort::$4]
|
|
Successful SSA optimization Pass2ConstantAdditionElimination
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Alias plexSort::m#2 = plexSort::$1
|
|
Alias plexSort::s#3 = plexSort::$4
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Eliminating unused constant SIZEOF_WORD
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (word) $800
|
|
Finalized unsigned number type (word) $800
|
|
Finalized unsigned number type (word) $100
|
|
Finalized unsigned number type (word) $200
|
|
Finalized unsigned number type (byte) $40
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $80
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $c0
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $40
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $80
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $c0
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (word) $400
|
|
Finalized unsigned number type (word) $3f8
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6
|
|
Added new block during phi lifting plexInit::@3(between plexInit::@1 and plexInit::@1)
|
|
Added new block during phi lifting plexSort::@8(between plexSort::@2 and plexSort::@1)
|
|
Added new block during phi lifting plexSort::@9(between plexSort::@7 and plexSort::@3)
|
|
Added new block during phi lifting plexSort::@10(between plexSort::plexFreePrepare1_@1 and plexSort::plexFreePrepare1_@1)
|
|
Added new block during phi lifting main::@17(between main::@4 and main::@4)
|
|
Added new block during phi lifting plex_move::@7(between plex_move::@2 and plex_move::@1)
|
|
Added new block during phi lifting plex_move::@8(between plex_move::@1 and plex_move::@2)
|
|
Added new block during phi lifting plex_move::@9(between plex_move::@4 and plex_move::@3)
|
|
Added new block during phi lifting font_2x2_to_sprites::@9(between font_2x2_to_sprites::@5 and font_2x2_to_sprites::@3)
|
|
Added new block during phi lifting font_2x2_to_sprites::@10(between font_2x2_to_sprites::@6 and font_2x2_to_sprites::@5)
|
|
Added new block during phi lifting font_2x2::@11(between font_2x2::@10 and font_2x2::@1)
|
|
Added new block during phi lifting font_2x2::@12(between font_2x2::@9 and font_2x2::@2)
|
|
Added new block during phi lifting font_2x2::@13(between font_2x2::@6 and font_2x2::@3)
|
|
Added new block during phi lifting font_2x2::@14(between font_2x2::@7 and font_2x2::@9)
|
|
Adding NOP phi() at start of __start
|
|
Adding NOP phi() at start of __start::__init1_toSpritePtr1
|
|
Adding NOP phi() at start of __start::__init1_toSpritePtr1_@return
|
|
Adding NOP phi() at start of __start::@1
|
|
Adding NOP phi() at start of __start::@2
|
|
Adding NOP phi() at start of plex_irq::@3
|
|
Adding NOP phi() at start of plex_irq::@7
|
|
Adding NOP phi() at start of plex_irq::plexFreeNextYpos1_@return
|
|
Adding NOP phi() at start of main::@11
|
|
Adding NOP phi() at start of main::@12
|
|
Adding NOP phi() at start of main::toD0181
|
|
Adding NOP phi() at start of main::toD0181_@return
|
|
Adding NOP phi() at start of main::@5
|
|
Adding NOP phi() at start of main::@13
|
|
Adding NOP phi() at start of main::@6
|
|
Adding NOP phi() at start of main::@15
|
|
Adding NOP phi() at start of main::@16
|
|
Adding NOP phi() at start of font_2x2
|
|
Adding NOP phi() at start of font_2x2::@5
|
|
Adding NOP phi() at start of font_2x2::@4
|
|
Adding NOP phi() at start of font_2x2_to_sprites
|
|
Adding NOP phi() at start of font_2x2_to_sprites::@7
|
|
Adding NOP phi() at start of plexInit
|
|
Adding NOP phi() at start of plexInit::@2
|
|
Adding NOP phi() at start of plex_move::@5
|
|
Adding NOP phi() at start of plexSort
|
|
Adding NOP phi() at start of plexSort::plexFreePrepare1
|
|
CALL GRAPH
|
|
Calls in [__start] to main:10
|
|
Calls in [plex_irq] to plexShowSprite:15
|
|
Calls in [main] to font_2x2:31 font_2x2_to_sprites:34 plexInit:36 plex_move:49 plexSort:51 plex_move:66 plexSort:68
|
|
|
|
Created 39 initial phi equivalence classes
|
|
Coalesced [63] y_sin_idx#39 = y_sin_idx#13
|
|
Coalesced [64] x_movement_idx#39 = x_movement_idx#13
|
|
Coalesced [65] scroll_text_next#39 = scroll_text_next#14
|
|
Coalesced [70] main::s1#3 = main::s1#1
|
|
Coalesced [77] main::s#4 = main::s#1
|
|
Coalesced [78] main::x#4 = main::x#1
|
|
Not coalescing [108] font_2x2::next_2x2_left#10 = font_2x2::next_2x2_left#0
|
|
Coalesced [109] font_2x2::next_2x2_right#9 = font_2x2::next_2x2_right#0
|
|
Coalesced [112] font_2x2::glyph_bits#6 = font_2x2::glyph_bits#0
|
|
Coalesced [139] font_2x2::next_2x2_left#13 = font_2x2::next_2x2_left#1
|
|
Coalesced [140] font_2x2::next_2x2_right#12 = font_2x2::next_2x2_right#1
|
|
Coalesced [149] font_2x2::next_2x2_left#9 = font_2x2::next_2x2#1
|
|
Coalesced [150] font_2x2::next_original#12 = font_2x2::next_original#1
|
|
Coalesced [151] font_2x2::c#12 = font_2x2::c#1
|
|
Coalesced [152] font_2x2::l#10 = font_2x2::l#1
|
|
Coalesced [153] font_2x2::next_2x2_left#11 = font_2x2::next_2x2_left#8
|
|
Coalesced [154] font_2x2::l2#10 = font_2x2::l2#9
|
|
Coalesced [155] font_2x2::next_2x2_right#10 = font_2x2::next_2x2_right#8
|
|
Coalesced (already) [156] font_2x2::next_2x2_left#12 = font_2x2::next_2x2_left#7
|
|
Coalesced [157] font_2x2::l2#11 = font_2x2::l2#1
|
|
Coalesced (already) [158] font_2x2::next_2x2_right#11 = font_2x2::next_2x2_right#7
|
|
Coalesced [159] font_2x2::glyph_bits#7 = font_2x2::glyph_bits#1
|
|
Coalesced [160] font_2x2::glyph_bits_2x2#8 = font_2x2::glyph_bits_2x2#2
|
|
Coalesced [161] font_2x2::b#6 = font_2x2::b#1
|
|
Not coalescing [168] font_2x2_to_sprites::char_left#6 = font_2x2_to_sprites::char_current#2
|
|
Coalesced [169] font_2x2_to_sprites::char_right#6 = font_2x2_to_sprites::char_right#0
|
|
Coalesced [187] font_2x2_to_sprites::c#10 = font_2x2_to_sprites::c#1
|
|
Coalesced [188] font_2x2_to_sprites::char_current#10 = font_2x2_to_sprites::char_current#1
|
|
Coalesced [189] font_2x2_to_sprites::sprite#10 = font_2x2_to_sprites::sprite#1
|
|
Coalesced [190] font_2x2_to_sprites::i#7 = font_2x2_to_sprites::i#1
|
|
Coalesced [191] font_2x2_to_sprites::char_left#7 = font_2x2_to_sprites::char_left#4
|
|
Coalesced [192] font_2x2_to_sprites::sprite_idx#9 = font_2x2_to_sprites::sprite_idx#3
|
|
Coalesced [193] font_2x2_to_sprites::char_right#7 = font_2x2_to_sprites::char_right#4
|
|
Coalesced (already) [194] font_2x2_to_sprites::char_left#9 = font_2x2_to_sprites::char_left#3
|
|
Coalesced (already) [195] font_2x2_to_sprites::char_right#9 = font_2x2_to_sprites::char_right#3
|
|
Coalesced [198] font_2x2_to_sprites::char_left#8 = font_2x2_to_sprites::char_left#1
|
|
Coalesced [199] font_2x2_to_sprites::char_right#8 = font_2x2_to_sprites::char_right#1
|
|
Coalesced [208] plexInit::i#3 = plexInit::i#1
|
|
Coalesced [212] plex_move::y_idx#7 = plex_move::y_idx#0
|
|
Coalesced [213] plex_move::x_idx#7 = plex_move::x_idx#0
|
|
Coalesced [214] scroll_text_next#40 = scroll_text_next#27
|
|
Coalesced [228] scroll_text_next#43 = scroll_text_next#3
|
|
Coalesced [236] plex_move::y_idx#8 = plex_move::y_idx#1
|
|
Coalesced [237] plex_move::s#7 = plex_move::s#1
|
|
Coalesced [238] plex_move::x_idx#8 = plex_move::x_idx#1
|
|
Coalesced (already) [239] scroll_text_next#41 = scroll_text_next#14
|
|
Coalesced [240] scroll_text_next#44 = scroll_text_next#12
|
|
Coalesced (already) [241] scroll_text_next#42 = scroll_text_next#12
|
|
Not coalescing [247] plexSort::s#6 = plexSort::m#2
|
|
Coalesced [267] plexSort::plexFreePrepare1_s#3 = plexSort::plexFreePrepare1_s#1
|
|
Coalesced [268] plexSort::m#7 = plexSort::m#1
|
|
Coalesced [269] plexSort::s#5 = plexSort::s#1
|
|
Coalesced down to 31 phi equivalence classes
|
|
Culled Empty Block label __start::__init1_toSpritePtr1_@return
|
|
Culled Empty Block label __start::@2
|
|
Culled Empty Block label plex_irq::@7
|
|
Culled Empty Block label plex_irq::plexFreeNextYpos1_@return
|
|
Culled Empty Block label main::@12
|
|
Culled Empty Block label main::toD0181_@return
|
|
Culled Empty Block label main::@6
|
|
Culled Empty Block label main::@16
|
|
Culled Empty Block label main::@17
|
|
Culled Empty Block label font_2x2::@5
|
|
Culled Empty Block label font_2x2::@11
|
|
Culled Empty Block label font_2x2::@12
|
|
Culled Empty Block label font_2x2::@14
|
|
Culled Empty Block label font_2x2::@13
|
|
Culled Empty Block label font_2x2_to_sprites::@7
|
|
Culled Empty Block label font_2x2_to_sprites::@9
|
|
Culled Empty Block label plexInit::@2
|
|
Culled Empty Block label plexInit::@3
|
|
Culled Empty Block label plex_move::@5
|
|
Culled Empty Block label plex_move::@7
|
|
Culled Empty Block label plex_move::@8
|
|
Culled Empty Block label plexSort::@10
|
|
Culled Empty Block label plexSort::@8
|
|
Culled Empty Block label plexSort::@9
|
|
Renumbering block main::@7 to main::@6
|
|
Renumbering block main::@8 to main::@7
|
|
Renumbering block main::@9 to main::@8
|
|
Renumbering block main::@10 to main::@9
|
|
Renumbering block main::@11 to main::@10
|
|
Renumbering block main::@13 to main::@11
|
|
Renumbering block main::@14 to main::@12
|
|
Renumbering block main::@15 to main::@13
|
|
Renumbering block plex_move::@6 to plex_move::@5
|
|
Renumbering block plex_move::@9 to plex_move::@6
|
|
Renumbering block plex_irq::@8 to plex_irq::@7
|
|
Renumbering block font_2x2_to_sprites::@8 to font_2x2_to_sprites::@7
|
|
Renumbering block font_2x2_to_sprites::@10 to font_2x2_to_sprites::@8
|
|
Renumbering block font_2x2::@6 to font_2x2::@5
|
|
Renumbering block font_2x2::@7 to font_2x2::@6
|
|
Renumbering block font_2x2::@8 to font_2x2::@7
|
|
Renumbering block font_2x2::@9 to font_2x2::@8
|
|
Renumbering block font_2x2::@10 to font_2x2::@9
|
|
Adding NOP phi() at start of __start
|
|
Adding NOP phi() at start of __start::__init1_toSpritePtr1
|
|
Adding NOP phi() at start of __start::@1
|
|
Adding NOP phi() at start of plex_irq::@3
|
|
Adding NOP phi() at start of main::@10
|
|
Adding NOP phi() at start of main::toD0181
|
|
Adding NOP phi() at start of main::@5
|
|
Adding NOP phi() at start of main::@11
|
|
Adding NOP phi() at start of main::@13
|
|
Adding NOP phi() at start of font_2x2
|
|
Adding NOP phi() at start of font_2x2::@4
|
|
Adding NOP phi() at start of font_2x2_to_sprites
|
|
Adding NOP phi() at start of font_2x2_to_sprites::@8
|
|
Adding NOP phi() at start of plexInit
|
|
Adding NOP phi() at start of plex_move::@6
|
|
Adding NOP phi() at start of plexSort
|
|
Adding NOP phi() at start of plexSort::plexFreePrepare1
|
|
|
|
FINAL CONTROL FLOW GRAPH
|
|
|
|
void __start()
|
|
__start: scope:[__start] from
|
|
[0] phi()
|
|
to:__start::__init1
|
|
__start::__init1: scope:[__start] from __start
|
|
[1] PLEX_SCREEN_PTR = (byte*)$400+$3f8
|
|
[2] plex_show_idx = 0
|
|
[3] plex_sprite_idx = 0
|
|
[4] plex_sprite_msb = 1
|
|
[5] plex_free_next = 0
|
|
to:__start::__init1_toSpritePtr1
|
|
__start::__init1_toSpritePtr1: scope:[__start] from __start::__init1
|
|
[6] phi()
|
|
to:__start::__init1_@1
|
|
__start::__init1_@1: scope:[__start] from __start::__init1_toSpritePtr1
|
|
[7] frame_done = false
|
|
to:__start::@1
|
|
__start::@1: scope:[__start] from __start::__init1_@1
|
|
[8] phi()
|
|
[9] call main
|
|
to:__start::@return
|
|
__start::@return: scope:[__start] from __start::@1
|
|
[10] return
|
|
to:@return
|
|
|
|
__interrupt(rom_min_c64) void plex_irq()
|
|
plex_irq: scope:[plex_irq] from
|
|
asm { sei }
|
|
to:plex_irq::@3
|
|
plex_irq::@3: scope:[plex_irq] from plex_irq plex_irq::@7
|
|
[12] phi()
|
|
[13] call plexShowSprite
|
|
to:plex_irq::plexFreeNextYpos1
|
|
plex_irq::plexFreeNextYpos1: scope:[plex_irq] from plex_irq::@3
|
|
[14] plex_irq::plexFreeNextYpos1_return#0 = PLEX_FREE_YPOS[plex_free_next]
|
|
to:plex_irq::@6
|
|
plex_irq::@6: scope:[plex_irq] from plex_irq::plexFreeNextYpos1
|
|
[15] plex_irq::$4 = *RASTER + 3
|
|
[16] if(plex_show_idx>=PLEX_COUNT) goto plex_irq::@4
|
|
to:plex_irq::@7
|
|
plex_irq::@7: scope:[plex_irq] from plex_irq::@6
|
|
[17] if(plex_irq::plexFreeNextYpos1_return#0<plex_irq::$4) goto plex_irq::@3
|
|
to:plex_irq::@4
|
|
plex_irq::@4: scope:[plex_irq] from plex_irq::@6 plex_irq::@7
|
|
[18] if(plex_show_idx<PLEX_COUNT) goto plex_irq::@1
|
|
to:plex_irq::@5
|
|
plex_irq::@5: scope:[plex_irq] from plex_irq::@4
|
|
[19] *RASTER = $28
|
|
[20] frame_done = true
|
|
to:plex_irq::@2
|
|
plex_irq::@2: scope:[plex_irq] from plex_irq::@1 plex_irq::@5
|
|
[21] *IRQ_STATUS = IRQ_RASTER
|
|
asm { cli }
|
|
to:plex_irq::@return
|
|
plex_irq::@return: scope:[plex_irq] from plex_irq::@2
|
|
[23] return
|
|
to:@return
|
|
plex_irq::@1: scope:[plex_irq] from plex_irq::@4
|
|
[24] *RASTER = plex_irq::plexFreeNextYpos1_return#0
|
|
to:plex_irq::@2
|
|
|
|
void main()
|
|
main: scope:[main] from __start::@1
|
|
asm { sei }
|
|
[26] *PROCPORT = PROCPORT_RAM_CHARROM
|
|
[27] call font_2x2
|
|
to:main::@9
|
|
main::@9: scope:[main] from main
|
|
[28] *PROCPORT = PROCPORT_BASIC_KERNEL_IO
|
|
asm { cli }
|
|
[30] call font_2x2_to_sprites
|
|
to:main::@10
|
|
main::@10: scope:[main] from main::@9
|
|
[31] phi()
|
|
[32] call plexInit
|
|
to:main::toD0181
|
|
main::toD0181: scope:[main] from main::@10
|
|
[33] phi()
|
|
to:main::@8
|
|
main::@8: scope:[main] from main::toD0181
|
|
[34] *D018 = main::toD0181_return#0
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@2 main::@8
|
|
[35] main::x#2 = phi( main::@2/main::x#1, main::@8/0 )
|
|
[35] main::s#2 = phi( main::@2/main::s#1, main::@8/0 )
|
|
[36] if(main::s#2<PLEX_COUNT) goto main::@2
|
|
to:main::@3
|
|
main::@3: scope:[main] from main::@1
|
|
[37] *SPRITES_ENABLE = $ff
|
|
to:main::@4
|
|
main::@4: scope:[main] from main::@3 main::@4
|
|
[38] main::s1#2 = phi( main::@3/0, main::@4/main::s1#1 )
|
|
[39] SPRITES_COLOR[main::s1#2] = WHITE
|
|
[40] main::s1#1 = ++ main::s1#2
|
|
[41] if(main::s1#1!=8) goto main::@4
|
|
to:main::@5
|
|
main::@5: scope:[main] from main::@4
|
|
[42] phi()
|
|
[43] call plex_move
|
|
to:main::@11
|
|
main::@11: scope:[main] from main::@5
|
|
[44] phi()
|
|
[45] call plexSort
|
|
to:main::@12
|
|
main::@12: scope:[main] from main::@11
|
|
asm { sei }
|
|
[47] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
|
|
[48] *VIC_CONTROL = *VIC_CONTROL & $7f
|
|
[49] *RASTER = $28
|
|
[50] *IRQ_ENABLE = IRQ_RASTER
|
|
[51] *IRQ_STATUS = IRQ_RASTER
|
|
[52] *KERNEL_IRQ = &plex_irq
|
|
asm { cli }
|
|
to:main::@6
|
|
main::@6: scope:[main] from main::@12 main::@13 main::@6
|
|
[54] if(frame_done) goto main::@7
|
|
to:main::@6
|
|
main::@7: scope:[main] from main::@6
|
|
[55] frame_done = false
|
|
[56] call plex_move
|
|
to:main::@13
|
|
main::@13: scope:[main] from main::@7
|
|
[57] phi()
|
|
[58] call plexSort
|
|
to:main::@6
|
|
main::@2: scope:[main] from main::@1
|
|
[59] PLEX_PTR[main::s#2] = SPRITE_0#0+' '
|
|
[60] main::$12 = main::s#2 << 1
|
|
[61] main::$13 = XMOVEMENT_HI[main::x#2] w= XMOVEMENT[main::x#2]
|
|
[62] PLEX_XPOS[main::$12] = main::$13
|
|
[63] main::x#1 = main::x#2 + 8
|
|
[64] main::s#1 = ++ main::s#2
|
|
to:main::@1
|
|
|
|
void plexShowSprite()
|
|
plexShowSprite: scope:[plexShowSprite] from plex_irq::@3
|
|
[65] plexShowSprite::plex_sprite_idx2#0 = plex_sprite_idx << 1
|
|
[66] plexShowSprite::plexFreeAdd1_ypos#0 = PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]]
|
|
[67] SPRITES_YPOS[plexShowSprite::plex_sprite_idx2#0] = plexShowSprite::plexFreeAdd1_ypos#0
|
|
to:plexShowSprite::plexFreeAdd1
|
|
plexShowSprite::plexFreeAdd1: scope:[plexShowSprite] from plexShowSprite
|
|
[68] plexShowSprite::plexFreeAdd1_$0 = plexShowSprite::plexFreeAdd1_ypos#0 + $16
|
|
[69] PLEX_FREE_YPOS[plex_free_next] = plexShowSprite::plexFreeAdd1_$0
|
|
[70] plexShowSprite::plexFreeAdd1_$1 = plex_free_next + 1
|
|
[71] plexShowSprite::plexFreeAdd1_$2 = plexShowSprite::plexFreeAdd1_$1 & 7
|
|
[72] plex_free_next = plexShowSprite::plexFreeAdd1_$2
|
|
to:plexShowSprite::@5
|
|
plexShowSprite::@5: scope:[plexShowSprite] from plexShowSprite::plexFreeAdd1
|
|
[73] PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]]
|
|
[74] plexShowSprite::xpos_idx#0 = PLEX_SORTED_IDX[plex_show_idx]
|
|
[75] plexShowSprite::$11 = plexShowSprite::xpos_idx#0 << 1
|
|
[76] plexShowSprite::$2 = < PLEX_XPOS[plexShowSprite::$11]
|
|
[77] SPRITES_XPOS[plexShowSprite::plex_sprite_idx2#0] = plexShowSprite::$2
|
|
[78] plexShowSprite::$3 = > PLEX_XPOS[plexShowSprite::$11]
|
|
[79] if(plexShowSprite::$3!=0) goto plexShowSprite::@1
|
|
to:plexShowSprite::@3
|
|
plexShowSprite::@3: scope:[plexShowSprite] from plexShowSprite::@5
|
|
[80] plexShowSprite::$9 = $ff ^ plex_sprite_msb
|
|
[81] *SPRITES_XMSB = *SPRITES_XMSB & plexShowSprite::$9
|
|
to:plexShowSprite::@2
|
|
plexShowSprite::@2: scope:[plexShowSprite] from plexShowSprite::@1 plexShowSprite::@3
|
|
[82] plexShowSprite::$5 = plex_sprite_idx + 1
|
|
[83] plexShowSprite::$6 = plexShowSprite::$5 & 7
|
|
[84] plex_sprite_idx = plexShowSprite::$6
|
|
[85] plex_show_idx = ++ plex_show_idx
|
|
[86] plex_sprite_msb = plex_sprite_msb << 1
|
|
[87] if(plex_sprite_msb!=0) goto plexShowSprite::@return
|
|
to:plexShowSprite::@4
|
|
plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite::@2
|
|
[88] plex_sprite_msb = 1
|
|
to:plexShowSprite::@return
|
|
plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@2 plexShowSprite::@4
|
|
[89] return
|
|
to:@return
|
|
plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite::@5
|
|
[90] *SPRITES_XMSB = *SPRITES_XMSB | plex_sprite_msb
|
|
to:plexShowSprite::@2
|
|
|
|
void font_2x2(byte* font_2x2::font_original , byte* font_2x2::font_2x2)
|
|
font_2x2: scope:[font_2x2] from main
|
|
[91] phi()
|
|
to:font_2x2::@1
|
|
font_2x2::@1: scope:[font_2x2] from font_2x2 font_2x2::@9
|
|
[92] font_2x2::c#11 = phi( font_2x2/0, font_2x2::@9/font_2x2::c#1 )
|
|
[92] font_2x2::next_original#4 = phi( font_2x2/CHARGEN, font_2x2::@9/font_2x2::next_original#1 )
|
|
[92] font_2x2::next_2x2_left#0 = phi( font_2x2/FONT, font_2x2::@9/font_2x2::next_2x2#1 )
|
|
[93] font_2x2::next_2x2_right#0 = font_2x2::next_2x2_left#0 + (word)$40*8
|
|
[94] font_2x2::next_2x2_left#10 = font_2x2::next_2x2_left#0
|
|
to:font_2x2::@2
|
|
font_2x2::@2: scope:[font_2x2] from font_2x2::@1 font_2x2::@8
|
|
[95] font_2x2::next_2x2_right#7 = phi( font_2x2::@1/font_2x2::next_2x2_right#0, font_2x2::@8/font_2x2::next_2x2_right#8 )
|
|
[95] font_2x2::l2#8 = phi( font_2x2::@1/0, font_2x2::@8/font_2x2::l2#9 )
|
|
[95] font_2x2::next_2x2_left#7 = phi( font_2x2::@1/font_2x2::next_2x2_left#10, font_2x2::@8/font_2x2::next_2x2_left#8 )
|
|
[95] font_2x2::l#2 = phi( font_2x2::@1/0, font_2x2::@8/font_2x2::l#1 )
|
|
[96] font_2x2::glyph_bits#0 = font_2x2::next_original#4[font_2x2::l#2]
|
|
to:font_2x2::@3
|
|
font_2x2::@3: scope:[font_2x2] from font_2x2::@2 font_2x2::@5
|
|
[97] font_2x2::b#2 = phi( font_2x2::@2/0, font_2x2::@5/font_2x2::b#1 )
|
|
[97] font_2x2::glyph_bits_2x2#3 = phi( font_2x2::@2/0, font_2x2::@5/font_2x2::glyph_bits_2x2#2 )
|
|
[97] font_2x2::glyph_bits#2 = phi( font_2x2::@2/font_2x2::glyph_bits#0, font_2x2::@5/font_2x2::glyph_bits#1 )
|
|
[98] font_2x2::$1 = font_2x2::glyph_bits#2 & $80
|
|
[99] if(0!=font_2x2::$1) goto font_2x2::@4
|
|
to:font_2x2::@5
|
|
font_2x2::@4: scope:[font_2x2] from font_2x2::@3
|
|
[100] phi()
|
|
to:font_2x2::@5
|
|
font_2x2::@5: scope:[font_2x2] from font_2x2::@3 font_2x2::@4
|
|
[101] font_2x2::glyph_bit#0 = phi( font_2x2::@4/1, font_2x2::@3/0 )
|
|
[102] font_2x2::$5 = font_2x2::glyph_bits_2x2#3 << 1
|
|
[103] font_2x2::glyph_bits_2x2#1 = font_2x2::$5 | font_2x2::glyph_bit#0
|
|
[104] font_2x2::$7 = font_2x2::glyph_bits_2x2#1 << 1
|
|
[105] font_2x2::glyph_bits_2x2#2 = font_2x2::$7 | font_2x2::glyph_bit#0
|
|
[106] font_2x2::glyph_bits#1 = font_2x2::glyph_bits#2 << 1
|
|
[107] font_2x2::b#1 = ++ font_2x2::b#2
|
|
[108] if(font_2x2::b#1!=8) goto font_2x2::@3
|
|
to:font_2x2::@6
|
|
font_2x2::@6: scope:[font_2x2] from font_2x2::@5
|
|
[109] font_2x2::$10 = > font_2x2::glyph_bits_2x2#2
|
|
[110] font_2x2::next_2x2_left#7[font_2x2::l2#8] = font_2x2::$10
|
|
[111] font_2x2::$11 = font_2x2::l2#8 + 1
|
|
[112] font_2x2::$12 = > font_2x2::glyph_bits_2x2#2
|
|
[113] font_2x2::next_2x2_left#7[font_2x2::$11] = font_2x2::$12
|
|
[114] font_2x2::$13 = < font_2x2::glyph_bits_2x2#2
|
|
[115] font_2x2::next_2x2_right#7[font_2x2::l2#8] = font_2x2::$13
|
|
[116] font_2x2::$14 = font_2x2::l2#8 + 1
|
|
[117] font_2x2::$15 = < font_2x2::glyph_bits_2x2#2
|
|
[118] font_2x2::next_2x2_right#7[font_2x2::$14] = font_2x2::$15
|
|
[119] font_2x2::l2#1 = font_2x2::l2#8 + 2
|
|
[120] if(font_2x2::l2#1!=8) goto font_2x2::@8
|
|
to:font_2x2::@7
|
|
font_2x2::@7: scope:[font_2x2] from font_2x2::@6
|
|
[121] font_2x2::next_2x2_left#1 = font_2x2::next_2x2_left#0 + (word)$80*8
|
|
[122] font_2x2::next_2x2_right#1 = font_2x2::next_2x2_left#0 + (word)$c0*8
|
|
to:font_2x2::@8
|
|
font_2x2::@8: scope:[font_2x2] from font_2x2::@6 font_2x2::@7
|
|
[123] font_2x2::next_2x2_right#8 = phi( font_2x2::@6/font_2x2::next_2x2_right#7, font_2x2::@7/font_2x2::next_2x2_right#1 )
|
|
[123] font_2x2::l2#9 = phi( font_2x2::@6/font_2x2::l2#1, font_2x2::@7/0 )
|
|
[123] font_2x2::next_2x2_left#8 = phi( font_2x2::@6/font_2x2::next_2x2_left#7, font_2x2::@7/font_2x2::next_2x2_left#1 )
|
|
[124] font_2x2::l#1 = ++ font_2x2::l#2
|
|
[125] if(font_2x2::l#1!=8) goto font_2x2::@2
|
|
to:font_2x2::@9
|
|
font_2x2::@9: scope:[font_2x2] from font_2x2::@8
|
|
[126] font_2x2::next_2x2#1 = font_2x2::next_2x2_left#0 + 8
|
|
[127] font_2x2::next_original#1 = font_2x2::next_original#4 + 8
|
|
[128] font_2x2::c#1 = ++ font_2x2::c#11
|
|
[129] if(font_2x2::c#1!=$40) goto font_2x2::@1
|
|
to:font_2x2::@return
|
|
font_2x2::@return: scope:[font_2x2] from font_2x2::@9
|
|
[130] return
|
|
to:@return
|
|
|
|
void font_2x2_to_sprites(byte* font_2x2_to_sprites::font_2x2 , byte* font_2x2_to_sprites::sprites , byte font_2x2_to_sprites::num_chars)
|
|
font_2x2_to_sprites: scope:[font_2x2_to_sprites] from main::@9
|
|
[131] phi()
|
|
to:font_2x2_to_sprites::@1
|
|
font_2x2_to_sprites::@1: scope:[font_2x2_to_sprites] from font_2x2_to_sprites font_2x2_to_sprites::@7
|
|
[132] font_2x2_to_sprites::sprite#4 = phi( font_2x2_to_sprites/SPRITES, font_2x2_to_sprites::@7/font_2x2_to_sprites::sprite#1 )
|
|
[132] font_2x2_to_sprites::char_current#2 = phi( font_2x2_to_sprites/FONT, font_2x2_to_sprites::@7/font_2x2_to_sprites::char_current#1 )
|
|
[132] font_2x2_to_sprites::c#2 = phi( font_2x2_to_sprites/0, font_2x2_to_sprites::@7/font_2x2_to_sprites::c#1 )
|
|
[133] if(font_2x2_to_sprites::c#2<font_2x2_to_sprites::num_chars#0) goto font_2x2_to_sprites::@2
|
|
to:font_2x2_to_sprites::@return
|
|
font_2x2_to_sprites::@return: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@1
|
|
[134] return
|
|
to:@return
|
|
font_2x2_to_sprites::@2: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@1
|
|
[135] font_2x2_to_sprites::char_right#0 = font_2x2_to_sprites::char_current#2 + (word)$40*8
|
|
[136] font_2x2_to_sprites::char_left#6 = font_2x2_to_sprites::char_current#2
|
|
to:font_2x2_to_sprites::@3
|
|
font_2x2_to_sprites::@3: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@2 font_2x2_to_sprites::@5
|
|
[137] font_2x2_to_sprites::char_right#3 = phi( font_2x2_to_sprites::@2/font_2x2_to_sprites::char_right#0, font_2x2_to_sprites::@5/font_2x2_to_sprites::char_right#4 )
|
|
[137] font_2x2_to_sprites::sprite_idx#4 = phi( font_2x2_to_sprites::@2/0, font_2x2_to_sprites::@5/font_2x2_to_sprites::sprite_idx#3 )
|
|
[137] font_2x2_to_sprites::char_left#3 = phi( font_2x2_to_sprites::@2/font_2x2_to_sprites::char_left#6, font_2x2_to_sprites::@5/font_2x2_to_sprites::char_left#4 )
|
|
[137] font_2x2_to_sprites::i#2 = phi( font_2x2_to_sprites::@2/0, font_2x2_to_sprites::@5/font_2x2_to_sprites::i#1 )
|
|
[138] font_2x2_to_sprites::$3 = font_2x2_to_sprites::i#2 & 7
|
|
[139] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#4] = font_2x2_to_sprites::char_left#3[font_2x2_to_sprites::$3]
|
|
[140] font_2x2_to_sprites::sprite_idx#1 = ++ font_2x2_to_sprites::sprite_idx#4
|
|
[141] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#1] = font_2x2_to_sprites::char_right#3[font_2x2_to_sprites::$3]
|
|
[142] font_2x2_to_sprites::sprite_idx#2 = ++ font_2x2_to_sprites::sprite_idx#1
|
|
[143] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#2] = 0
|
|
[144] font_2x2_to_sprites::sprite_idx#3 = ++ font_2x2_to_sprites::sprite_idx#2
|
|
[145] if(font_2x2_to_sprites::i#2==7) goto font_2x2_to_sprites::@4
|
|
to:font_2x2_to_sprites::@6
|
|
font_2x2_to_sprites::@6: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@3
|
|
[146] if(font_2x2_to_sprites::i#2!=$f) goto font_2x2_to_sprites::@8
|
|
to:font_2x2_to_sprites::@5
|
|
font_2x2_to_sprites::@8: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@6
|
|
[147] phi()
|
|
to:font_2x2_to_sprites::@5
|
|
font_2x2_to_sprites::@5: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@4 font_2x2_to_sprites::@6 font_2x2_to_sprites::@8
|
|
[148] font_2x2_to_sprites::char_right#4 = phi( font_2x2_to_sprites::@4/font_2x2_to_sprites::char_right#1, font_2x2_to_sprites::@8/font_2x2_to_sprites::char_right#3, font_2x2_to_sprites::@6/FONT+' '*8 )
|
|
[148] font_2x2_to_sprites::char_left#4 = phi( font_2x2_to_sprites::@4/font_2x2_to_sprites::char_left#1, font_2x2_to_sprites::@8/font_2x2_to_sprites::char_left#3, font_2x2_to_sprites::@6/FONT+' '*8 )
|
|
[149] font_2x2_to_sprites::i#1 = ++ font_2x2_to_sprites::i#2
|
|
[150] if(font_2x2_to_sprites::i#1!=$15) goto font_2x2_to_sprites::@3
|
|
to:font_2x2_to_sprites::@7
|
|
font_2x2_to_sprites::@7: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@5
|
|
[151] font_2x2_to_sprites::char_current#1 = font_2x2_to_sprites::char_current#2 + 8
|
|
[152] font_2x2_to_sprites::sprite#1 = font_2x2_to_sprites::sprite#4 + $40
|
|
[153] font_2x2_to_sprites::c#1 = ++ font_2x2_to_sprites::c#2
|
|
to:font_2x2_to_sprites::@1
|
|
font_2x2_to_sprites::@4: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@3
|
|
[154] font_2x2_to_sprites::char_left#1 = font_2x2_to_sprites::char_current#2 + (word)$80*8
|
|
[155] font_2x2_to_sprites::char_right#1 = font_2x2_to_sprites::char_current#2 + (word)$c0*8
|
|
to:font_2x2_to_sprites::@5
|
|
|
|
void plexInit(byte* plexInit::screen)
|
|
plexInit: scope:[plexInit] from main::@10
|
|
[156] phi()
|
|
to:plexInit::plexSetScreen1
|
|
plexInit::plexSetScreen1: scope:[plexInit] from plexInit
|
|
[157] PLEX_SCREEN_PTR = SCREEN+$3f8
|
|
to:plexInit::@1
|
|
plexInit::@1: scope:[plexInit] from plexInit::@1 plexInit::plexSetScreen1
|
|
[158] plexInit::i#2 = phi( plexInit::@1/plexInit::i#1, plexInit::plexSetScreen1/0 )
|
|
[159] PLEX_SORTED_IDX[plexInit::i#2] = plexInit::i#2
|
|
[160] plexInit::i#1 = ++ plexInit::i#2
|
|
[161] if(plexInit::i#1!=PLEX_COUNT-1+1) goto plexInit::@1
|
|
to:plexInit::@return
|
|
plexInit::@return: scope:[plexInit] from plexInit::@1
|
|
[162] return
|
|
to:@return
|
|
|
|
void plex_move()
|
|
plex_move: scope:[plex_move] from main::@5 main::@7
|
|
[163] scroll_text_next#27 = phi( main::@5/SCROLL_TEXT, main::@7/scroll_text_next#14 )
|
|
[163] x_movement_idx#11 = phi( main::@5/0, main::@7/x_movement_idx#13 )
|
|
[163] y_sin_idx#11 = phi( main::@5/0, main::@7/y_sin_idx#13 )
|
|
[164] plex_move::y_idx#0 = y_sin_idx#11
|
|
[165] plex_move::x_idx#0 = x_movement_idx#11
|
|
to:plex_move::@1
|
|
plex_move::@1: scope:[plex_move] from plex_move plex_move::@2
|
|
[166] scroll_text_next#12 = phi( plex_move/scroll_text_next#27, plex_move::@2/scroll_text_next#14 )
|
|
[166] plex_move::x_idx#2 = phi( plex_move/plex_move::x_idx#0, plex_move::@2/plex_move::x_idx#1 )
|
|
[166] plex_move::s#2 = phi( plex_move/0, plex_move::@2/plex_move::s#1 )
|
|
[166] plex_move::y_idx#2 = phi( plex_move/plex_move::y_idx#0, plex_move::@2/plex_move::y_idx#1 )
|
|
[167] PLEX_YPOS[plex_move::s#2] = YSIN[plex_move::y_idx#2]
|
|
[168] plex_move::y_idx#1 = plex_move::y_idx#2 + 8
|
|
[169] plex_move::$6 = plex_move::s#2 << 1
|
|
[170] plex_move::$7 = XMOVEMENT_HI[plex_move::x_idx#2] w= XMOVEMENT[plex_move::x_idx#2]
|
|
[171] PLEX_XPOS[plex_move::$6] = plex_move::$7
|
|
[172] if(plex_move::x_idx#2!=0) goto plex_move::@2
|
|
to:plex_move::@4
|
|
plex_move::@4: scope:[plex_move] from plex_move::@1
|
|
[173] if(*scroll_text_next#12!=0) goto plex_move::@6
|
|
to:plex_move::@3
|
|
plex_move::@6: scope:[plex_move] from plex_move::@4
|
|
[174] phi()
|
|
to:plex_move::@3
|
|
plex_move::@3: scope:[plex_move] from plex_move::@4 plex_move::@6
|
|
[175] scroll_text_next#13 = phi( plex_move::@6/scroll_text_next#12, plex_move::@4/SCROLL_TEXT )
|
|
[176] plex_move::$4 = SPRITE_0#0 + *scroll_text_next#13
|
|
[177] PLEX_PTR[plex_move::s#2] = plex_move::$4
|
|
[178] scroll_text_next#3 = ++ scroll_text_next#13
|
|
to:plex_move::@2
|
|
plex_move::@2: scope:[plex_move] from plex_move::@1 plex_move::@3
|
|
[179] scroll_text_next#14 = phi( plex_move::@1/scroll_text_next#12, plex_move::@3/scroll_text_next#3 )
|
|
[180] plex_move::x_idx#1 = plex_move::x_idx#2 + 8
|
|
[181] plex_move::s#1 = ++ plex_move::s#2
|
|
[182] if(plex_move::s#1!=PLEX_COUNT-1+1) goto plex_move::@1
|
|
to:plex_move::@5
|
|
plex_move::@5: scope:[plex_move] from plex_move::@2
|
|
[183] y_sin_idx#13 = y_sin_idx#11 + 3
|
|
[184] x_movement_idx#13 = ++ x_movement_idx#11
|
|
to:plex_move::@return
|
|
plex_move::@return: scope:[plex_move] from plex_move::@5
|
|
[185] return
|
|
to:@return
|
|
|
|
void plexSort()
|
|
plexSort: scope:[plexSort] from main::@11 main::@13
|
|
[186] phi()
|
|
to:plexSort::@1
|
|
plexSort::@1: scope:[plexSort] from plexSort plexSort::@2
|
|
[187] plexSort::m#2 = phi( plexSort/0, plexSort::@2/plexSort::m#1 )
|
|
[188] plexSort::nxt_idx#0 = (PLEX_SORTED_IDX+1)[plexSort::m#2]
|
|
[189] plexSort::nxt_y#0 = PLEX_YPOS[plexSort::nxt_idx#0]
|
|
[190] if(plexSort::nxt_y#0>=PLEX_YPOS[PLEX_SORTED_IDX[plexSort::m#2]]) goto plexSort::@2
|
|
to:plexSort::@5
|
|
plexSort::@5: scope:[plexSort] from plexSort::@1
|
|
[191] plexSort::s#6 = plexSort::m#2
|
|
to:plexSort::@3
|
|
plexSort::@3: scope:[plexSort] from plexSort::@5 plexSort::@7
|
|
[192] plexSort::s#3 = phi( plexSort::@7/plexSort::s#1, plexSort::@5/plexSort::s#6 )
|
|
[193] (PLEX_SORTED_IDX+1)[plexSort::s#3] = PLEX_SORTED_IDX[plexSort::s#3]
|
|
[194] plexSort::s#1 = -- plexSort::s#3
|
|
[195] if(plexSort::s#1==$ff) goto plexSort::@4
|
|
to:plexSort::@7
|
|
plexSort::@7: scope:[plexSort] from plexSort::@3
|
|
[196] if(plexSort::nxt_y#0<PLEX_YPOS[PLEX_SORTED_IDX[plexSort::s#1]]) goto plexSort::@3
|
|
to:plexSort::@4
|
|
plexSort::@4: scope:[plexSort] from plexSort::@3 plexSort::@7
|
|
[197] plexSort::s#2 = ++ plexSort::s#1
|
|
[198] PLEX_SORTED_IDX[plexSort::s#2] = plexSort::nxt_idx#0
|
|
to:plexSort::@2
|
|
plexSort::@2: scope:[plexSort] from plexSort::@1 plexSort::@4
|
|
[199] plexSort::m#1 = ++ plexSort::m#2
|
|
[200] if(plexSort::m#1!=PLEX_COUNT-2+1) goto plexSort::@1
|
|
to:plexSort::@6
|
|
plexSort::@6: scope:[plexSort] from plexSort::@2
|
|
[201] plex_show_idx = 0
|
|
[202] plex_sprite_idx = 0
|
|
[203] plex_sprite_msb = 1
|
|
to:plexSort::plexFreePrepare1
|
|
plexSort::plexFreePrepare1: scope:[plexSort] from plexSort::@6
|
|
[204] phi()
|
|
to:plexSort::plexFreePrepare1_@1
|
|
plexSort::plexFreePrepare1_@1: scope:[plexSort] from plexSort::plexFreePrepare1 plexSort::plexFreePrepare1_@1
|
|
[205] plexSort::plexFreePrepare1_s#2 = phi( plexSort::plexFreePrepare1/0, plexSort::plexFreePrepare1_@1/plexSort::plexFreePrepare1_s#1 )
|
|
[206] PLEX_FREE_YPOS[plexSort::plexFreePrepare1_s#2] = 0
|
|
[207] plexSort::plexFreePrepare1_s#1 = ++ plexSort::plexFreePrepare1_s#2
|
|
[208] if(plexSort::plexFreePrepare1_s#1!=8) goto plexSort::plexFreePrepare1_@1
|
|
to:plexSort::plexFreePrepare1_@2
|
|
plexSort::plexFreePrepare1_@2: scope:[plexSort] from plexSort::plexFreePrepare1_@1
|
|
[209] plex_free_next = 0
|
|
to:plexSort::@return
|
|
plexSort::@return: scope:[plexSort] from plexSort::plexFreePrepare1_@2
|
|
[210] return
|
|
to:@return
|
|
|
|
|
|
VARIABLE REGISTER WEIGHTS
|
|
volatile byte* PLEX_SCREEN_PTR loadstore 6.181818181818182
|
|
byte SPRITE_0
|
|
void __start()
|
|
byte __start::__init1_toSpritePtr1_return
|
|
byte* __start::__init1_toSpritePtr1_sprite
|
|
void font_2x2(byte* font_2x2::font_original , byte* font_2x2::font_2x2)
|
|
byte~ font_2x2::$1 200002.0
|
|
byte~ font_2x2::$10 20002.0
|
|
byte~ font_2x2::$11 10001.0
|
|
byte~ font_2x2::$12 20002.0
|
|
byte~ font_2x2::$13 20002.0
|
|
byte~ font_2x2::$14 10001.0
|
|
byte~ font_2x2::$15 20002.0
|
|
word~ font_2x2::$5 200002.0
|
|
word~ font_2x2::$7 200002.0
|
|
byte font_2x2::b
|
|
byte font_2x2::b#1 150001.5
|
|
byte font_2x2::b#2 20000.2
|
|
byte font_2x2::c
|
|
byte font_2x2::c#1 1501.5
|
|
byte font_2x2::c#11 55.611111111111114
|
|
byte* font_2x2::font_2x2
|
|
byte* font_2x2::font_original
|
|
byte font_2x2::glyph_bit
|
|
byte font_2x2::glyph_bit#0 50000.5
|
|
byte font_2x2::glyph_bits
|
|
byte font_2x2::glyph_bits#0 20002.0
|
|
byte font_2x2::glyph_bits#1 66667.33333333333
|
|
byte font_2x2::glyph_bits#2 34444.88888888889
|
|
word font_2x2::glyph_bits_2x2
|
|
word font_2x2::glyph_bits_2x2#1 200002.0
|
|
word font_2x2::glyph_bits_2x2#2 20000.500000000004
|
|
word font_2x2::glyph_bits_2x2#3 40000.4
|
|
byte font_2x2::l
|
|
byte font_2x2::l#1 15001.5
|
|
byte font_2x2::l#2 1034.5862068965519
|
|
byte font_2x2::l2
|
|
byte font_2x2::l2#1 15001.5
|
|
byte font_2x2::l2#8 2500.25
|
|
byte font_2x2::l2#9 6667.333333333333
|
|
byte* font_2x2::next_2x2
|
|
byte* font_2x2::next_2x2#1 500.5
|
|
byte* font_2x2::next_2x2_left
|
|
byte* font_2x2::next_2x2_left#0 706.0588235294117
|
|
byte* font_2x2::next_2x2_left#1 10001.0
|
|
byte* font_2x2::next_2x2_left#10 2002.0
|
|
byte* font_2x2::next_2x2_left#7 1577.1153846153845
|
|
byte* font_2x2::next_2x2_left#8 10001.0
|
|
byte* font_2x2::next_2x2_right
|
|
byte* font_2x2::next_2x2_right#0 1001.0
|
|
byte* font_2x2::next_2x2_right#1 20002.0
|
|
byte* font_2x2::next_2x2_right#7 1577.1153846153845
|
|
byte* font_2x2::next_2x2_right#8 10001.0
|
|
byte* font_2x2::next_original
|
|
byte* font_2x2::next_original#1 667.3333333333334
|
|
byte* font_2x2::next_original#4 342.9428571428572
|
|
void font_2x2_to_sprites(byte* font_2x2_to_sprites::font_2x2 , byte* font_2x2_to_sprites::sprites , byte font_2x2_to_sprites::num_chars)
|
|
byte~ font_2x2_to_sprites::$3 10001.0
|
|
byte font_2x2_to_sprites::c
|
|
byte font_2x2_to_sprites::c#1 2002.0
|
|
byte font_2x2_to_sprites::c#2 136.5
|
|
byte* font_2x2_to_sprites::char_current
|
|
byte* font_2x2_to_sprites::char_current#1 667.3333333333334
|
|
byte* font_2x2_to_sprites::char_current#2 1200.3
|
|
byte* font_2x2_to_sprites::char_left
|
|
byte* font_2x2_to_sprites::char_left#1 10001.0
|
|
byte* font_2x2_to_sprites::char_left#3 2818.5454545454545
|
|
byte* font_2x2_to_sprites::char_left#4 10001.0
|
|
byte* font_2x2_to_sprites::char_left#6 2002.0
|
|
byte* font_2x2_to_sprites::char_right
|
|
byte* font_2x2_to_sprites::char_right#0 1001.0
|
|
byte* font_2x2_to_sprites::char_right#1 20002.0
|
|
byte* font_2x2_to_sprites::char_right#3 2818.5454545454545
|
|
byte* font_2x2_to_sprites::char_right#4 10001.0
|
|
byte* font_2x2_to_sprites::font_2x2
|
|
byte font_2x2_to_sprites::i
|
|
byte font_2x2_to_sprites::i#1 15001.5
|
|
byte font_2x2_to_sprites::i#2 3571.7857142857147
|
|
byte font_2x2_to_sprites::num_chars
|
|
byte* font_2x2_to_sprites::sprite
|
|
byte* font_2x2_to_sprites::sprite#1 1001.0
|
|
byte* font_2x2_to_sprites::sprite#4 1524.047619047619
|
|
byte font_2x2_to_sprites::sprite_idx
|
|
byte font_2x2_to_sprites::sprite_idx#1 15001.5
|
|
byte font_2x2_to_sprites::sprite_idx#2 15001.5
|
|
byte font_2x2_to_sprites::sprite_idx#3 2222.4444444444443
|
|
byte font_2x2_to_sprites::sprite_idx#4 10001.0
|
|
byte* font_2x2_to_sprites::sprites
|
|
volatile bool frame_done loadstore 26.333333333333332
|
|
void main()
|
|
byte~ main::$12 101.0
|
|
word~ main::$13 202.0
|
|
byte main::s
|
|
byte main::s#1 202.0
|
|
byte main::s#2 72.14285714285714
|
|
byte main::s1
|
|
byte main::s1#1 151.5
|
|
byte main::s1#2 151.5
|
|
byte* main::toD0181_gfx
|
|
byte main::toD0181_return
|
|
byte* main::toD0181_screen
|
|
byte main::x
|
|
byte main::x#1 101.0
|
|
byte main::x#2 67.33333333333333
|
|
void plexInit(byte* plexInit::screen)
|
|
byte plexInit::i
|
|
byte plexInit::i#1 1501.5
|
|
byte plexInit::i#2 2002.0
|
|
byte* plexInit::plexSetScreen1_screen
|
|
byte* plexInit::screen
|
|
void plexShowSprite()
|
|
byte~ plexShowSprite::$11 101.0
|
|
byte~ plexShowSprite::$2 202.0
|
|
byte~ plexShowSprite::$3 202.0
|
|
byte~ plexShowSprite::$5 202.0
|
|
byte~ plexShowSprite::$6 202.0
|
|
byte~ plexShowSprite::$9 202.0
|
|
byte~ plexShowSprite::plexFreeAdd1_$0 202.0
|
|
byte~ plexShowSprite::plexFreeAdd1_$1 202.0
|
|
byte~ plexShowSprite::plexFreeAdd1_$2 202.0
|
|
byte plexShowSprite::plexFreeAdd1_ypos
|
|
byte plexShowSprite::plexFreeAdd1_ypos#0 151.5
|
|
byte plexShowSprite::plex_sprite_idx2
|
|
byte plexShowSprite::plex_sprite_idx2#0 25.25
|
|
byte plexShowSprite::xpos_idx
|
|
byte plexShowSprite::xpos_idx#0 202.0
|
|
byte plexShowSprite::ypos
|
|
void plexSort()
|
|
byte plexSort::m
|
|
byte plexSort::m#1 150001.5
|
|
byte plexSort::m#2 41667.08333333333
|
|
byte plexSort::nxt_idx
|
|
byte plexSort::nxt_idx#0 30000.300000000003
|
|
byte plexSort::nxt_y
|
|
byte plexSort::nxt_y#0 150000.375
|
|
byte plexSort::plexFreePrepare1_s
|
|
byte plexSort::plexFreePrepare1_s#1 150001.5
|
|
byte plexSort::plexFreePrepare1_s#2 150001.5
|
|
byte plexSort::s
|
|
byte plexSort::s#1 1366668.3333333335
|
|
byte plexSort::s#2 200002.0
|
|
byte plexSort::s#3 2050002.5
|
|
byte plexSort::s#6 200002.0
|
|
volatile byte plex_free_next loadstore 42.483870967741936
|
|
__interrupt(rom_min_c64) void plex_irq()
|
|
byte~ plex_irq::$4 11.0
|
|
byte plex_irq::plexFreeNextYpos1_return
|
|
byte plex_irq::plexFreeNextYpos1_return#0 4.800000000000001
|
|
byte plex_irq::rasterY
|
|
void plex_move()
|
|
byte~ plex_move::$4 200002.0
|
|
byte~ plex_move::$6 100001.0
|
|
word~ plex_move::$7 200002.0
|
|
byte plex_move::s
|
|
byte plex_move::s#1 150001.5
|
|
byte plex_move::s#2 33333.66666666667
|
|
byte plex_move::x_idx
|
|
byte plex_move::x_idx#0 2002.0
|
|
byte plex_move::x_idx#1 66667.33333333333
|
|
byte plex_move::x_idx#2 35786.142857142855
|
|
byte plex_move::y_idx
|
|
byte plex_move::y_idx#0 1001.0
|
|
byte plex_move::y_idx#1 13333.466666666667
|
|
byte plex_move::y_idx#2 150502.0
|
|
volatile byte plex_show_idx loadstore 46.09090909090909
|
|
volatile byte plex_sprite_idx loadstore 45.38709677419355
|
|
volatile byte plex_sprite_msb loadstore 48.75757575757575
|
|
byte* scroll_text_next
|
|
byte* scroll_text_next#12 44556.11111111111
|
|
byte* scroll_text_next#13 100001.0
|
|
byte* scroll_text_next#14 13048.0
|
|
byte* scroll_text_next#27 367.33333333333337
|
|
byte* scroll_text_next#3 200002.0
|
|
byte x_movement_idx
|
|
byte x_movement_idx#11 100.14285714285714
|
|
byte x_movement_idx#13 61.22222222222223
|
|
byte y_sin_idx
|
|
byte y_sin_idx#11 105.14999999999999
|
|
byte y_sin_idx#13 58.0
|
|
|
|
Initial phi equivalence classes
|
|
[ main::s#2 main::s#1 ]
|
|
[ main::x#2 main::x#1 ]
|
|
[ main::s1#2 main::s1#1 ]
|
|
[ font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ]
|
|
[ font_2x2::next_original#4 font_2x2::next_original#1 ]
|
|
[ font_2x2::c#11 font_2x2::c#1 ]
|
|
[ font_2x2::l#2 font_2x2::l#1 ]
|
|
[ font_2x2::next_2x2_left#7 font_2x2::next_2x2_left#10 font_2x2::next_2x2_left#8 font_2x2::next_2x2_left#1 ]
|
|
[ font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ]
|
|
[ font_2x2::next_2x2_right#7 font_2x2::next_2x2_right#0 font_2x2::next_2x2_right#8 font_2x2::next_2x2_right#1 ]
|
|
[ font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ]
|
|
[ font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 ]
|
|
[ font_2x2::b#2 font_2x2::b#1 ]
|
|
[ font_2x2::glyph_bit#0 ]
|
|
[ font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 ]
|
|
[ font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 ]
|
|
[ font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::sprite#1 ]
|
|
[ font_2x2_to_sprites::i#2 font_2x2_to_sprites::i#1 ]
|
|
[ font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::char_left#4 font_2x2_to_sprites::char_left#1 ]
|
|
[ font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 ]
|
|
[ font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_right#4 font_2x2_to_sprites::char_right#1 ]
|
|
[ plexInit::i#2 plexInit::i#1 ]
|
|
[ y_sin_idx#11 y_sin_idx#13 ]
|
|
[ x_movement_idx#11 x_movement_idx#13 ]
|
|
[ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ]
|
|
[ plex_move::s#2 plex_move::s#1 ]
|
|
[ plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ]
|
|
[ scroll_text_next#13 scroll_text_next#12 scroll_text_next#27 scroll_text_next#14 scroll_text_next#3 ]
|
|
[ plexSort::m#2 plexSort::m#1 ]
|
|
[ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
|
|
[ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ]
|
|
Added variable PLEX_SCREEN_PTR to live range equivalence class [ PLEX_SCREEN_PTR ]
|
|
Added variable plex_show_idx to live range equivalence class [ plex_show_idx ]
|
|
Added variable plex_sprite_idx to live range equivalence class [ plex_sprite_idx ]
|
|
Added variable plex_sprite_msb to live range equivalence class [ plex_sprite_msb ]
|
|
Added variable plex_free_next to live range equivalence class [ plex_free_next ]
|
|
Added variable frame_done to live range equivalence class [ frame_done ]
|
|
Added variable plex_irq::plexFreeNextYpos1_return#0 to live range equivalence class [ plex_irq::plexFreeNextYpos1_return#0 ]
|
|
Added variable plex_irq::$4 to live range equivalence class [ plex_irq::$4 ]
|
|
Added variable main::$12 to live range equivalence class [ main::$12 ]
|
|
Added variable main::$13 to live range equivalence class [ main::$13 ]
|
|
Added variable plexShowSprite::plex_sprite_idx2#0 to live range equivalence class [ plexShowSprite::plex_sprite_idx2#0 ]
|
|
Added variable plexShowSprite::plexFreeAdd1_ypos#0 to live range equivalence class [ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
|
Added variable plexShowSprite::plexFreeAdd1_$0 to live range equivalence class [ plexShowSprite::plexFreeAdd1_$0 ]
|
|
Added variable plexShowSprite::plexFreeAdd1_$1 to live range equivalence class [ plexShowSprite::plexFreeAdd1_$1 ]
|
|
Added variable plexShowSprite::plexFreeAdd1_$2 to live range equivalence class [ plexShowSprite::plexFreeAdd1_$2 ]
|
|
Added variable plexShowSprite::xpos_idx#0 to live range equivalence class [ plexShowSprite::xpos_idx#0 ]
|
|
Added variable plexShowSprite::$11 to live range equivalence class [ plexShowSprite::$11 ]
|
|
Added variable plexShowSprite::$2 to live range equivalence class [ plexShowSprite::$2 ]
|
|
Added variable plexShowSprite::$3 to live range equivalence class [ plexShowSprite::$3 ]
|
|
Added variable plexShowSprite::$9 to live range equivalence class [ plexShowSprite::$9 ]
|
|
Added variable plexShowSprite::$5 to live range equivalence class [ plexShowSprite::$5 ]
|
|
Added variable plexShowSprite::$6 to live range equivalence class [ plexShowSprite::$6 ]
|
|
Added variable font_2x2::$1 to live range equivalence class [ font_2x2::$1 ]
|
|
Added variable font_2x2::$5 to live range equivalence class [ font_2x2::$5 ]
|
|
Added variable font_2x2::glyph_bits_2x2#1 to live range equivalence class [ font_2x2::glyph_bits_2x2#1 ]
|
|
Added variable font_2x2::$7 to live range equivalence class [ font_2x2::$7 ]
|
|
Added variable font_2x2::$10 to live range equivalence class [ font_2x2::$10 ]
|
|
Added variable font_2x2::$11 to live range equivalence class [ font_2x2::$11 ]
|
|
Added variable font_2x2::$12 to live range equivalence class [ font_2x2::$12 ]
|
|
Added variable font_2x2::$13 to live range equivalence class [ font_2x2::$13 ]
|
|
Added variable font_2x2::$14 to live range equivalence class [ font_2x2::$14 ]
|
|
Added variable font_2x2::$15 to live range equivalence class [ font_2x2::$15 ]
|
|
Added variable font_2x2_to_sprites::$3 to live range equivalence class [ font_2x2_to_sprites::$3 ]
|
|
Added variable font_2x2_to_sprites::sprite_idx#1 to live range equivalence class [ font_2x2_to_sprites::sprite_idx#1 ]
|
|
Added variable font_2x2_to_sprites::sprite_idx#2 to live range equivalence class [ font_2x2_to_sprites::sprite_idx#2 ]
|
|
Added variable plex_move::$6 to live range equivalence class [ plex_move::$6 ]
|
|
Added variable plex_move::$7 to live range equivalence class [ plex_move::$7 ]
|
|
Added variable plex_move::$4 to live range equivalence class [ plex_move::$4 ]
|
|
Added variable plexSort::nxt_idx#0 to live range equivalence class [ plexSort::nxt_idx#0 ]
|
|
Added variable plexSort::nxt_y#0 to live range equivalence class [ plexSort::nxt_y#0 ]
|
|
Added variable plexSort::s#2 to live range equivalence class [ plexSort::s#2 ]
|
|
Complete equivalence classes
|
|
[ main::s#2 main::s#1 ]
|
|
[ main::x#2 main::x#1 ]
|
|
[ main::s1#2 main::s1#1 ]
|
|
[ font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ]
|
|
[ font_2x2::next_original#4 font_2x2::next_original#1 ]
|
|
[ font_2x2::c#11 font_2x2::c#1 ]
|
|
[ font_2x2::l#2 font_2x2::l#1 ]
|
|
[ font_2x2::next_2x2_left#7 font_2x2::next_2x2_left#10 font_2x2::next_2x2_left#8 font_2x2::next_2x2_left#1 ]
|
|
[ font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ]
|
|
[ font_2x2::next_2x2_right#7 font_2x2::next_2x2_right#0 font_2x2::next_2x2_right#8 font_2x2::next_2x2_right#1 ]
|
|
[ font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ]
|
|
[ font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 ]
|
|
[ font_2x2::b#2 font_2x2::b#1 ]
|
|
[ font_2x2::glyph_bit#0 ]
|
|
[ font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 ]
|
|
[ font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 ]
|
|
[ font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::sprite#1 ]
|
|
[ font_2x2_to_sprites::i#2 font_2x2_to_sprites::i#1 ]
|
|
[ font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::char_left#4 font_2x2_to_sprites::char_left#1 ]
|
|
[ font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 ]
|
|
[ font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_right#4 font_2x2_to_sprites::char_right#1 ]
|
|
[ plexInit::i#2 plexInit::i#1 ]
|
|
[ y_sin_idx#11 y_sin_idx#13 ]
|
|
[ x_movement_idx#11 x_movement_idx#13 ]
|
|
[ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ]
|
|
[ plex_move::s#2 plex_move::s#1 ]
|
|
[ plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ]
|
|
[ scroll_text_next#13 scroll_text_next#12 scroll_text_next#27 scroll_text_next#14 scroll_text_next#3 ]
|
|
[ plexSort::m#2 plexSort::m#1 ]
|
|
[ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
|
|
[ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ]
|
|
[ PLEX_SCREEN_PTR ]
|
|
[ plex_show_idx ]
|
|
[ plex_sprite_idx ]
|
|
[ plex_sprite_msb ]
|
|
[ plex_free_next ]
|
|
[ frame_done ]
|
|
[ plex_irq::plexFreeNextYpos1_return#0 ]
|
|
[ plex_irq::$4 ]
|
|
[ main::$12 ]
|
|
[ main::$13 ]
|
|
[ plexShowSprite::plex_sprite_idx2#0 ]
|
|
[ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
|
[ plexShowSprite::plexFreeAdd1_$0 ]
|
|
[ plexShowSprite::plexFreeAdd1_$1 ]
|
|
[ plexShowSprite::plexFreeAdd1_$2 ]
|
|
[ plexShowSprite::xpos_idx#0 ]
|
|
[ plexShowSprite::$11 ]
|
|
[ plexShowSprite::$2 ]
|
|
[ plexShowSprite::$3 ]
|
|
[ plexShowSprite::$9 ]
|
|
[ plexShowSprite::$5 ]
|
|
[ plexShowSprite::$6 ]
|
|
[ font_2x2::$1 ]
|
|
[ font_2x2::$5 ]
|
|
[ font_2x2::glyph_bits_2x2#1 ]
|
|
[ font_2x2::$7 ]
|
|
[ font_2x2::$10 ]
|
|
[ font_2x2::$11 ]
|
|
[ font_2x2::$12 ]
|
|
[ font_2x2::$13 ]
|
|
[ font_2x2::$14 ]
|
|
[ font_2x2::$15 ]
|
|
[ font_2x2_to_sprites::$3 ]
|
|
[ font_2x2_to_sprites::sprite_idx#1 ]
|
|
[ font_2x2_to_sprites::sprite_idx#2 ]
|
|
[ plex_move::$6 ]
|
|
[ plex_move::$7 ]
|
|
[ plex_move::$4 ]
|
|
[ plexSort::nxt_idx#0 ]
|
|
[ plexSort::nxt_y#0 ]
|
|
[ plexSort::s#2 ]
|
|
Allocated zp[1]:2 [ main::s#2 main::s#1 ]
|
|
Allocated zp[1]:3 [ main::x#2 main::x#1 ]
|
|
Allocated zp[1]:4 [ main::s1#2 main::s1#1 ]
|
|
Allocated zp[2]:5 [ font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ]
|
|
Allocated zp[2]:7 [ font_2x2::next_original#4 font_2x2::next_original#1 ]
|
|
Allocated zp[1]:9 [ font_2x2::c#11 font_2x2::c#1 ]
|
|
Allocated zp[1]:10 [ font_2x2::l#2 font_2x2::l#1 ]
|
|
Allocated zp[2]:11 [ font_2x2::next_2x2_left#7 font_2x2::next_2x2_left#10 font_2x2::next_2x2_left#8 font_2x2::next_2x2_left#1 ]
|
|
Allocated zp[1]:13 [ font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ]
|
|
Allocated zp[2]:14 [ font_2x2::next_2x2_right#7 font_2x2::next_2x2_right#0 font_2x2::next_2x2_right#8 font_2x2::next_2x2_right#1 ]
|
|
Allocated zp[1]:16 [ font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ]
|
|
Allocated zp[2]:17 [ font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 ]
|
|
Allocated zp[1]:19 [ font_2x2::b#2 font_2x2::b#1 ]
|
|
Allocated zp[1]:20 [ font_2x2::glyph_bit#0 ]
|
|
Allocated zp[1]:21 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 ]
|
|
Allocated zp[2]:22 [ font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 ]
|
|
Allocated zp[2]:24 [ font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::sprite#1 ]
|
|
Allocated zp[1]:26 [ font_2x2_to_sprites::i#2 font_2x2_to_sprites::i#1 ]
|
|
Allocated zp[2]:27 [ font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::char_left#4 font_2x2_to_sprites::char_left#1 ]
|
|
Allocated zp[1]:29 [ font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 ]
|
|
Allocated zp[2]:30 [ font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_right#4 font_2x2_to_sprites::char_right#1 ]
|
|
Allocated zp[1]:32 [ plexInit::i#2 plexInit::i#1 ]
|
|
Allocated zp[1]:33 [ y_sin_idx#11 y_sin_idx#13 ]
|
|
Allocated zp[1]:34 [ x_movement_idx#11 x_movement_idx#13 ]
|
|
Allocated zp[1]:35 [ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ]
|
|
Allocated zp[1]:36 [ plex_move::s#2 plex_move::s#1 ]
|
|
Allocated zp[1]:37 [ plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ]
|
|
Allocated zp[2]:38 [ scroll_text_next#13 scroll_text_next#12 scroll_text_next#27 scroll_text_next#14 scroll_text_next#3 ]
|
|
Allocated zp[1]:40 [ plexSort::m#2 plexSort::m#1 ]
|
|
Allocated zp[1]:41 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
|
|
Allocated zp[1]:42 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ]
|
|
Allocated zp[2]:43 [ PLEX_SCREEN_PTR ]
|
|
Allocated zp[1]:45 [ plex_show_idx ]
|
|
Allocated zp[1]:46 [ plex_sprite_idx ]
|
|
Allocated zp[1]:47 [ plex_sprite_msb ]
|
|
Allocated zp[1]:48 [ plex_free_next ]
|
|
Allocated zp[1]:49 [ frame_done ]
|
|
Allocated zp[1]:50 [ plex_irq::plexFreeNextYpos1_return#0 ]
|
|
Allocated zp[1]:51 [ plex_irq::$4 ]
|
|
Allocated zp[1]:52 [ main::$12 ]
|
|
Allocated zp[2]:53 [ main::$13 ]
|
|
Allocated zp[1]:55 [ plexShowSprite::plex_sprite_idx2#0 ]
|
|
Allocated zp[1]:56 [ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
|
Allocated zp[1]:57 [ plexShowSprite::plexFreeAdd1_$0 ]
|
|
Allocated zp[1]:58 [ plexShowSprite::plexFreeAdd1_$1 ]
|
|
Allocated zp[1]:59 [ plexShowSprite::plexFreeAdd1_$2 ]
|
|
Allocated zp[1]:60 [ plexShowSprite::xpos_idx#0 ]
|
|
Allocated zp[1]:61 [ plexShowSprite::$11 ]
|
|
Allocated zp[1]:62 [ plexShowSprite::$2 ]
|
|
Allocated zp[1]:63 [ plexShowSprite::$3 ]
|
|
Allocated zp[1]:64 [ plexShowSprite::$9 ]
|
|
Allocated zp[1]:65 [ plexShowSprite::$5 ]
|
|
Allocated zp[1]:66 [ plexShowSprite::$6 ]
|
|
Allocated zp[1]:67 [ font_2x2::$1 ]
|
|
Allocated zp[2]:68 [ font_2x2::$5 ]
|
|
Allocated zp[2]:70 [ font_2x2::glyph_bits_2x2#1 ]
|
|
Allocated zp[2]:72 [ font_2x2::$7 ]
|
|
Allocated zp[1]:74 [ font_2x2::$10 ]
|
|
Allocated zp[1]:75 [ font_2x2::$11 ]
|
|
Allocated zp[1]:76 [ font_2x2::$12 ]
|
|
Allocated zp[1]:77 [ font_2x2::$13 ]
|
|
Allocated zp[1]:78 [ font_2x2::$14 ]
|
|
Allocated zp[1]:79 [ font_2x2::$15 ]
|
|
Allocated zp[1]:80 [ font_2x2_to_sprites::$3 ]
|
|
Allocated zp[1]:81 [ font_2x2_to_sprites::sprite_idx#1 ]
|
|
Allocated zp[1]:82 [ font_2x2_to_sprites::sprite_idx#2 ]
|
|
Allocated zp[1]:83 [ plex_move::$6 ]
|
|
Allocated zp[2]:84 [ plex_move::$7 ]
|
|
Allocated zp[1]:86 [ plex_move::$4 ]
|
|
Allocated zp[1]:87 [ plexSort::nxt_idx#0 ]
|
|
Allocated zp[1]:88 [ plexSort::nxt_y#0 ]
|
|
Allocated zp[1]:89 [ plexSort::s#2 ]
|
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
|
Statement [1] PLEX_SCREEN_PTR = (byte*)$400+$3f8 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [2] plex_show_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [3] plex_sprite_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [4] plex_sprite_msb = 1 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [5] plex_free_next = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [7] frame_done = false [ frame_done ] ( [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [14] plex_irq::plexFreeNextYpos1_return#0 = PLEX_FREE_YPOS[plex_free_next] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] ( [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte y
|
|
Statement [15] plex_irq::$4 = *RASTER + 3 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:50 [ plex_irq::plexFreeNextYpos1_return#0 ]
|
|
Statement [16] if(plex_show_idx>=PLEX_COUNT) goto plex_irq::@4 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:51 [ plex_irq::$4 ]
|
|
Statement [18] if(plex_show_idx<PLEX_COUNT) goto plex_irq::@1 [ plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte a
|
|
Statement [19] *RASTER = $28 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [20] frame_done = true [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [21] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [26] *PROCPORT = PROCPORT_RAM_CHARROM [ frame_done ] ( main:9 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [28] *PROCPORT = PROCPORT_BASIC_KERNEL_IO [ frame_done ] ( main:9 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [34] *D018 = main::toD0181_return#0 [ frame_done ] ( main:9 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [37] *SPRITES_ENABLE = $ff [ frame_done ] ( main:9 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [39] SPRITES_COLOR[main::s1#2] = WHITE [ frame_done main::s1#2 ] ( main:9 [ frame_done main::s1#2 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::s1#2 main::s1#1 ]
|
|
Statement [47] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:33 [ y_sin_idx#11 y_sin_idx#13 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:34 [ x_movement_idx#11 x_movement_idx#13 ]
|
|
Statement [48] *VIC_CONTROL = *VIC_CONTROL & $7f [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [49] *RASTER = $28 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [50] *IRQ_ENABLE = IRQ_RASTER [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [51] *IRQ_STATUS = IRQ_RASTER [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [52] *KERNEL_IRQ = &plex_irq [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [54] if(frame_done) goto main::@7 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [55] frame_done = false [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [59] PLEX_PTR[main::s#2] = SPRITE_0#0+' ' [ frame_done main::s#2 main::x#2 ] ( main:9 [ frame_done main::s#2 main::x#2 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::s#2 main::s#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::x#2 main::x#1 ]
|
|
Statement [60] main::$12 = main::s#2 << 1 [ frame_done main::s#2 main::x#2 main::$12 ] ( main:9 [ frame_done main::s#2 main::x#2 main::$12 ] { } ) always clobbers reg byte a
|
|
Statement [61] main::$13 = XMOVEMENT_HI[main::x#2] w= XMOVEMENT[main::x#2] [ frame_done main::s#2 main::x#2 main::$12 main::$13 ] ( main:9 [ frame_done main::s#2 main::x#2 main::$12 main::$13 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:52 [ main::$12 ]
|
|
Statement [62] PLEX_XPOS[main::$12] = main::$13 [ frame_done main::s#2 main::x#2 ] ( main:9 [ frame_done main::s#2 main::x#2 ] { } ) always clobbers reg byte a
|
|
Statement [63] main::x#1 = main::x#2 + 8 [ frame_done main::s#2 main::x#1 ] ( main:9 [ frame_done main::s#2 main::x#1 ] { } ) always clobbers reg byte a
|
|
Statement [65] plexShowSprite::plex_sprite_idx2#0 = plex_sprite_idx << 1 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a
|
|
Statement [66] plexShowSprite::plexFreeAdd1_ypos#0 = PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] { } ) always clobbers reg byte x reg byte y
|
|
Removing always clobbered register reg byte x as potential for zp[1]:55 [ plexShowSprite::plex_sprite_idx2#0 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:55 [ plexShowSprite::plex_sprite_idx2#0 ]
|
|
Statement [69] PLEX_FREE_YPOS[plex_free_next] = plexShowSprite::plexFreeAdd1_$0 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte y
|
|
Statement [73] PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a reg byte x reg byte y
|
|
Removing always clobbered register reg byte a as potential for zp[1]:55 [ plexShowSprite::plex_sprite_idx2#0 ]
|
|
Statement [74] plexShowSprite::xpos_idx#0 = PLEX_SORTED_IDX[plex_show_idx] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] { } ) always clobbers reg byte y
|
|
Statement [75] plexShowSprite::$11 = plexShowSprite::xpos_idx#0 << 1 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] { } ) always clobbers reg byte a
|
|
Statement [76] plexShowSprite::$2 = < PLEX_XPOS[plexShowSprite::$11] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:61 [ plexShowSprite::$11 ]
|
|
Statement [77] SPRITES_XPOS[plexShowSprite::plex_sprite_idx2#0] = plexShowSprite::$2 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] { } ) always clobbers reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:61 [ plexShowSprite::$11 ]
|
|
Statement [78] plexShowSprite::$3 = > PLEX_XPOS[plexShowSprite::$11] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] { } ) always clobbers reg byte a
|
|
Statement [80] plexShowSprite::$9 = $ff ^ plex_sprite_msb [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] { } ) always clobbers reg byte a
|
|
Statement [81] *SPRITES_XMSB = *SPRITES_XMSB & plexShowSprite::$9 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a
|
|
Statement [87] if(plex_sprite_msb!=0) goto plexShowSprite::@return [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a
|
|
Statement [88] plex_sprite_msb = 1 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a
|
|
Statement [90] *SPRITES_XMSB = *SPRITES_XMSB | plex_sprite_msb [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a
|
|
Statement [93] font_2x2::next_2x2_right#0 = font_2x2::next_2x2_left#0 + (word)$40*8 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2_right#0 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2_right#0 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:9 [ font_2x2::c#11 font_2x2::c#1 ]
|
|
Statement [94] font_2x2::next_2x2_left#10 = font_2x2::next_2x2_left#0 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2_right#0 font_2x2::next_2x2_left#10 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2_right#0 font_2x2::next_2x2_left#10 ] { } ) always clobbers reg byte a
|
|
Statement [96] font_2x2::glyph_bits#0 = font_2x2::next_original#4[font_2x2::l#2] [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#0 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#0 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:10 [ font_2x2::l#2 font_2x2::l#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:13 [ font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ]
|
|
Statement [102] font_2x2::$5 = font_2x2::glyph_bits_2x2#3 << 1 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::$5 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::$5 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:16 [ font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:19 [ font_2x2::b#2 font_2x2::b#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:20 [ font_2x2::glyph_bit#0 ]
|
|
Statement [103] font_2x2::glyph_bits_2x2#1 = font_2x2::$5 | font_2x2::glyph_bit#0 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::glyph_bits_2x2#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::glyph_bits_2x2#1 ] { } ) always clobbers reg byte a
|
|
Statement [104] font_2x2::$7 = font_2x2::glyph_bits_2x2#1 << 1 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::$7 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::$7 ] { } ) always clobbers reg byte a
|
|
Statement [105] font_2x2::glyph_bits_2x2#2 = font_2x2::$7 | font_2x2::glyph_bit#0 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bits_2x2#2 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bits_2x2#2 ] { } ) always clobbers reg byte a
|
|
Statement [121] font_2x2::next_2x2_left#1 = font_2x2::next_2x2_left#0 + (word)$80*8 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#1 ] { } ) always clobbers reg byte a
|
|
Statement [122] font_2x2::next_2x2_right#1 = font_2x2::next_2x2_left#0 + (word)$c0*8 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#1 font_2x2::next_2x2_right#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#1 font_2x2::next_2x2_right#1 ] { } ) always clobbers reg byte a
|
|
Statement [126] font_2x2::next_2x2#1 = font_2x2::next_2x2_left#0 + 8 [ font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2#1 ] { } ) always clobbers reg byte a
|
|
Statement [127] font_2x2::next_original#1 = font_2x2::next_original#4 + 8 [ font_2x2::c#11 font_2x2::next_2x2#1 font_2x2::next_original#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::c#11 font_2x2::next_2x2#1 font_2x2::next_original#1 ] { } ) always clobbers reg byte a
|
|
Statement [135] font_2x2_to_sprites::char_right#0 = font_2x2_to_sprites::char_current#2 + (word)$40*8 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_right#0 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_right#0 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:21 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 ]
|
|
Statement [136] font_2x2_to_sprites::char_left#6 = font_2x2_to_sprites::char_current#2 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_left#6 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_left#6 ] { } ) always clobbers reg byte a
|
|
Statement [139] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#4] = font_2x2_to_sprites::char_left#3[font_2x2_to_sprites::$3] [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::$3 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::$3 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:26 [ font_2x2_to_sprites::i#2 font_2x2_to_sprites::i#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:29 [ font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:80 [ font_2x2_to_sprites::$3 ]
|
|
Statement [141] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#1] = font_2x2_to_sprites::char_right#3[font_2x2_to_sprites::$3] [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::sprite_idx#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::sprite_idx#1 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:81 [ font_2x2_to_sprites::sprite_idx#1 ]
|
|
Statement [143] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#2] = 0 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::sprite_idx#2 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::sprite_idx#2 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:82 [ font_2x2_to_sprites::sprite_idx#2 ]
|
|
Statement [151] font_2x2_to_sprites::char_current#1 = font_2x2_to_sprites::char_current#2 + 8 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_current#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_current#1 ] { } ) always clobbers reg byte a
|
|
Statement [152] font_2x2_to_sprites::sprite#1 = font_2x2_to_sprites::sprite#4 + $40 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#1 font_2x2_to_sprites::sprite#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#1 font_2x2_to_sprites::sprite#1 ] { } ) always clobbers reg byte a
|
|
Statement [154] font_2x2_to_sprites::char_left#1 = font_2x2_to_sprites::char_current#2 + (word)$80*8 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::char_left#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::char_left#1 ] { } ) always clobbers reg byte a
|
|
Statement [155] font_2x2_to_sprites::char_right#1 = font_2x2_to_sprites::char_current#2 + (word)$c0*8 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::char_left#1 font_2x2_to_sprites::char_right#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::char_left#1 font_2x2_to_sprites::char_right#1 ] { } ) always clobbers reg byte a
|
|
Statement [157] PLEX_SCREEN_PTR = SCREEN+$3f8 [ ] ( main:9::plexInit:32 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [167] PLEX_YPOS[plex_move::s#2] = YSIN[plex_move::y_idx#2] [ y_sin_idx#11 x_movement_idx#11 plex_move::y_idx#2 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::y_idx#2 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::y_idx#2 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:35 [ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:36 [ plex_move::s#2 plex_move::s#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:37 [ plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ]
|
|
Statement [168] plex_move::y_idx#1 = plex_move::y_idx#2 + 8 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [169] plex_move::$6 = plex_move::s#2 << 1 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [170] plex_move::$7 = XMOVEMENT_HI[plex_move::x_idx#2] w= XMOVEMENT[plex_move::x_idx#2] [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 plex_move::$7 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 plex_move::$7 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 plex_move::$7 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:83 [ plex_move::$6 ]
|
|
Statement [171] PLEX_XPOS[plex_move::$6] = plex_move::$7 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [173] if(*scroll_text_next#12!=0) goto plex_move::@6 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:33 [ y_sin_idx#11 y_sin_idx#13 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:34 [ x_movement_idx#11 x_movement_idx#13 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:36 [ plex_move::s#2 plex_move::s#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:37 [ plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:35 [ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ]
|
|
Statement [176] plex_move::$4 = SPRITE_0#0 + *scroll_text_next#13 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 plex_move::$4 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 plex_move::$4 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 plex_move::$4 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte y
|
|
Statement [180] plex_move::x_idx#1 = plex_move::x_idx#2 + 8 [ y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::s#2 plex_move::y_idx#1 plex_move::x_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::s#2 plex_move::y_idx#1 plex_move::x_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::s#2 plex_move::y_idx#1 plex_move::x_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte x
|
|
Removing always clobbered register reg byte x as potential for zp[1]:33 [ y_sin_idx#11 y_sin_idx#13 ]
|
|
Removing always clobbered register reg byte x as potential for zp[1]:34 [ x_movement_idx#11 x_movement_idx#13 ]
|
|
Removing always clobbered register reg byte x as potential for zp[1]:36 [ plex_move::s#2 plex_move::s#1 ]
|
|
Removing always clobbered register reg byte x as potential for zp[1]:35 [ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ]
|
|
Statement [182] if(plex_move::s#1!=PLEX_COUNT-1+1) goto plex_move::@1 [ y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::y_idx#1 plex_move::s#1 plex_move::x_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::y_idx#1 plex_move::s#1 plex_move::x_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::y_idx#1 plex_move::s#1 plex_move::x_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [183] y_sin_idx#13 = y_sin_idx#11 + 3 [ x_movement_idx#11 y_sin_idx#13 scroll_text_next#14 ] ( main:9::plex_move:43 [ frame_done x_movement_idx#11 y_sin_idx#13 scroll_text_next#14 ] { } main:9::plex_move:56 [ frame_done x_movement_idx#11 y_sin_idx#13 scroll_text_next#14 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte x
|
|
Statement [193] (PLEX_SORTED_IDX+1)[plexSort::s#3] = PLEX_SORTED_IDX[plexSort::s#3] [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:40 [ plexSort::m#2 plexSort::m#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:87 [ plexSort::nxt_idx#0 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:88 [ plexSort::nxt_y#0 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:41 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
|
|
Statement [196] if(plexSort::nxt_y#0<PLEX_YPOS[PLEX_SORTED_IDX[plexSort::s#1]]) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } ) always clobbers reg byte a
|
|
Statement [198] PLEX_SORTED_IDX[plexSort::s#2] = plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 ] { } ) always clobbers reg byte a
|
|
Statement [201] plex_show_idx = 0 [ ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [202] plex_sprite_idx = 0 [ ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [203] plex_sprite_msb = 1 [ ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [206] PLEX_FREE_YPOS[plexSort::plexFreePrepare1_s#2] = 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::plexFreePrepare1_s#2 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::plexFreePrepare1_s#2 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:42 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ]
|
|
Statement [209] plex_free_next = 0 [ ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [1] PLEX_SCREEN_PTR = (byte*)$400+$3f8 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [2] plex_show_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [3] plex_sprite_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [4] plex_sprite_msb = 1 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [5] plex_free_next = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [7] frame_done = false [ frame_done ] ( [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [14] plex_irq::plexFreeNextYpos1_return#0 = PLEX_FREE_YPOS[plex_free_next] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] ( [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte y
|
|
Statement [15] plex_irq::$4 = *RASTER + 3 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] { } ) always clobbers reg byte a
|
|
Statement [16] if(plex_show_idx>=PLEX_COUNT) goto plex_irq::@4 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] { } ) always clobbers reg byte a
|
|
Statement [18] if(plex_show_idx<PLEX_COUNT) goto plex_irq::@1 [ plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte a
|
|
Statement [19] *RASTER = $28 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [20] frame_done = true [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [21] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [26] *PROCPORT = PROCPORT_RAM_CHARROM [ frame_done ] ( main:9 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [28] *PROCPORT = PROCPORT_BASIC_KERNEL_IO [ frame_done ] ( main:9 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [34] *D018 = main::toD0181_return#0 [ frame_done ] ( main:9 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [37] *SPRITES_ENABLE = $ff [ frame_done ] ( main:9 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [39] SPRITES_COLOR[main::s1#2] = WHITE [ frame_done main::s1#2 ] ( main:9 [ frame_done main::s1#2 ] { } ) always clobbers reg byte a
|
|
Statement [47] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [48] *VIC_CONTROL = *VIC_CONTROL & $7f [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [49] *RASTER = $28 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [50] *IRQ_ENABLE = IRQ_RASTER [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [51] *IRQ_STATUS = IRQ_RASTER [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [52] *KERNEL_IRQ = &plex_irq [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [54] if(frame_done) goto main::@7 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [55] frame_done = false [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [59] PLEX_PTR[main::s#2] = SPRITE_0#0+' ' [ frame_done main::s#2 main::x#2 ] ( main:9 [ frame_done main::s#2 main::x#2 ] { } ) always clobbers reg byte a
|
|
Statement [60] main::$12 = main::s#2 << 1 [ frame_done main::s#2 main::x#2 main::$12 ] ( main:9 [ frame_done main::s#2 main::x#2 main::$12 ] { } ) always clobbers reg byte a
|
|
Statement [61] main::$13 = XMOVEMENT_HI[main::x#2] w= XMOVEMENT[main::x#2] [ frame_done main::s#2 main::x#2 main::$12 main::$13 ] ( main:9 [ frame_done main::s#2 main::x#2 main::$12 main::$13 ] { } ) always clobbers reg byte a
|
|
Statement [62] PLEX_XPOS[main::$12] = main::$13 [ frame_done main::s#2 main::x#2 ] ( main:9 [ frame_done main::s#2 main::x#2 ] { } ) always clobbers reg byte a
|
|
Statement [63] main::x#1 = main::x#2 + 8 [ frame_done main::s#2 main::x#1 ] ( main:9 [ frame_done main::s#2 main::x#1 ] { } ) always clobbers reg byte a
|
|
Statement [65] plexShowSprite::plex_sprite_idx2#0 = plex_sprite_idx << 1 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a
|
|
Statement [66] plexShowSprite::plexFreeAdd1_ypos#0 = PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] { } ) always clobbers reg byte x reg byte y
|
|
Statement [67] SPRITES_YPOS[plexShowSprite::plex_sprite_idx2#0] = plexShowSprite::plexFreeAdd1_ypos#0 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] { } ) always clobbers reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:56 [ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
|
Statement [69] PLEX_FREE_YPOS[plex_free_next] = plexShowSprite::plexFreeAdd1_$0 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte y
|
|
Statement [73] PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a reg byte x reg byte y
|
|
Statement [74] plexShowSprite::xpos_idx#0 = PLEX_SORTED_IDX[plex_show_idx] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] { } ) always clobbers reg byte y
|
|
Statement [75] plexShowSprite::$11 = plexShowSprite::xpos_idx#0 << 1 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] { } ) always clobbers reg byte a
|
|
Statement [76] plexShowSprite::$2 = < PLEX_XPOS[plexShowSprite::$11] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] { } ) always clobbers reg byte a
|
|
Statement [77] SPRITES_XPOS[plexShowSprite::plex_sprite_idx2#0] = plexShowSprite::$2 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] { } ) always clobbers reg byte y
|
|
Statement [78] plexShowSprite::$3 = > PLEX_XPOS[plexShowSprite::$11] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] { } ) always clobbers reg byte a
|
|
Statement [80] plexShowSprite::$9 = $ff ^ plex_sprite_msb [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] { } ) always clobbers reg byte a
|
|
Statement [81] *SPRITES_XMSB = *SPRITES_XMSB & plexShowSprite::$9 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a
|
|
Statement [87] if(plex_sprite_msb!=0) goto plexShowSprite::@return [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a
|
|
Statement [88] plex_sprite_msb = 1 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a
|
|
Statement [90] *SPRITES_XMSB = *SPRITES_XMSB | plex_sprite_msb [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a
|
|
Statement [93] font_2x2::next_2x2_right#0 = font_2x2::next_2x2_left#0 + (word)$40*8 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2_right#0 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2_right#0 ] { } ) always clobbers reg byte a
|
|
Statement [94] font_2x2::next_2x2_left#10 = font_2x2::next_2x2_left#0 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2_right#0 font_2x2::next_2x2_left#10 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2_right#0 font_2x2::next_2x2_left#10 ] { } ) always clobbers reg byte a
|
|
Statement [96] font_2x2::glyph_bits#0 = font_2x2::next_original#4[font_2x2::l#2] [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#0 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#0 ] { } ) always clobbers reg byte a
|
|
Statement [98] font_2x2::$1 = font_2x2::glyph_bits#2 & $80 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::glyph_bits_2x2#3 font_2x2::b#2 font_2x2::$1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::glyph_bits_2x2#3 font_2x2::b#2 font_2x2::$1 ] { } ) always clobbers reg byte a
|
|
Statement [102] font_2x2::$5 = font_2x2::glyph_bits_2x2#3 << 1 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::$5 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::$5 ] { } ) always clobbers reg byte a
|
|
Statement [103] font_2x2::glyph_bits_2x2#1 = font_2x2::$5 | font_2x2::glyph_bit#0 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::glyph_bits_2x2#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::glyph_bits_2x2#1 ] { } ) always clobbers reg byte a
|
|
Statement [104] font_2x2::$7 = font_2x2::glyph_bits_2x2#1 << 1 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::$7 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::$7 ] { } ) always clobbers reg byte a
|
|
Statement [105] font_2x2::glyph_bits_2x2#2 = font_2x2::$7 | font_2x2::glyph_bit#0 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bits_2x2#2 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bits_2x2#2 ] { } ) always clobbers reg byte a
|
|
Statement [121] font_2x2::next_2x2_left#1 = font_2x2::next_2x2_left#0 + (word)$80*8 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#1 ] { } ) always clobbers reg byte a
|
|
Statement [122] font_2x2::next_2x2_right#1 = font_2x2::next_2x2_left#0 + (word)$c0*8 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#1 font_2x2::next_2x2_right#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#1 font_2x2::next_2x2_right#1 ] { } ) always clobbers reg byte a
|
|
Statement [126] font_2x2::next_2x2#1 = font_2x2::next_2x2_left#0 + 8 [ font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2#1 ] { } ) always clobbers reg byte a
|
|
Statement [127] font_2x2::next_original#1 = font_2x2::next_original#4 + 8 [ font_2x2::c#11 font_2x2::next_2x2#1 font_2x2::next_original#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::c#11 font_2x2::next_2x2#1 font_2x2::next_original#1 ] { } ) always clobbers reg byte a
|
|
Statement [135] font_2x2_to_sprites::char_right#0 = font_2x2_to_sprites::char_current#2 + (word)$40*8 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_right#0 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_right#0 ] { } ) always clobbers reg byte a
|
|
Statement [136] font_2x2_to_sprites::char_left#6 = font_2x2_to_sprites::char_current#2 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_left#6 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_left#6 ] { } ) always clobbers reg byte a
|
|
Statement [138] font_2x2_to_sprites::$3 = font_2x2_to_sprites::i#2 & 7 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::$3 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::$3 ] { } ) always clobbers reg byte a
|
|
Statement [139] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#4] = font_2x2_to_sprites::char_left#3[font_2x2_to_sprites::$3] [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::$3 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::$3 ] { } ) always clobbers reg byte a
|
|
Statement [141] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#1] = font_2x2_to_sprites::char_right#3[font_2x2_to_sprites::$3] [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::sprite_idx#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::sprite_idx#1 ] { } ) always clobbers reg byte a
|
|
Statement [143] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#2] = 0 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::sprite_idx#2 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::sprite_idx#2 ] { } ) always clobbers reg byte a
|
|
Statement [151] font_2x2_to_sprites::char_current#1 = font_2x2_to_sprites::char_current#2 + 8 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_current#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_current#1 ] { } ) always clobbers reg byte a
|
|
Statement [152] font_2x2_to_sprites::sprite#1 = font_2x2_to_sprites::sprite#4 + $40 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#1 font_2x2_to_sprites::sprite#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#1 font_2x2_to_sprites::sprite#1 ] { } ) always clobbers reg byte a
|
|
Statement [154] font_2x2_to_sprites::char_left#1 = font_2x2_to_sprites::char_current#2 + (word)$80*8 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::char_left#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::char_left#1 ] { } ) always clobbers reg byte a
|
|
Statement [155] font_2x2_to_sprites::char_right#1 = font_2x2_to_sprites::char_current#2 + (word)$c0*8 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::char_left#1 font_2x2_to_sprites::char_right#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::char_left#1 font_2x2_to_sprites::char_right#1 ] { } ) always clobbers reg byte a
|
|
Statement [157] PLEX_SCREEN_PTR = SCREEN+$3f8 [ ] ( main:9::plexInit:32 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [164] plex_move::y_idx#0 = y_sin_idx#11 [ y_sin_idx#11 x_movement_idx#11 scroll_text_next#27 plex_move::y_idx#0 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#27 plex_move::y_idx#0 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#27 plex_move::y_idx#0 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [167] PLEX_YPOS[plex_move::s#2] = YSIN[plex_move::y_idx#2] [ y_sin_idx#11 x_movement_idx#11 plex_move::y_idx#2 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::y_idx#2 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::y_idx#2 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte y
|
|
Statement [168] plex_move::y_idx#1 = plex_move::y_idx#2 + 8 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte x
|
|
Removing always clobbered register reg byte x as potential for zp[1]:37 [ plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ]
|
|
Statement [169] plex_move::$6 = plex_move::s#2 << 1 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [170] plex_move::$7 = XMOVEMENT_HI[plex_move::x_idx#2] w= XMOVEMENT[plex_move::x_idx#2] [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 plex_move::$7 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 plex_move::$7 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 plex_move::$7 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:83 [ plex_move::$6 ]
|
|
Statement [171] PLEX_XPOS[plex_move::$6] = plex_move::$7 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [172] if(plex_move::x_idx#2!=0) goto plex_move::@2 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [173] if(*scroll_text_next#12!=0) goto plex_move::@6 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte y
|
|
Statement [176] plex_move::$4 = SPRITE_0#0 + *scroll_text_next#13 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 plex_move::$4 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 plex_move::$4 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 plex_move::$4 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte y
|
|
Statement [177] PLEX_PTR[plex_move::s#2] = plex_move::$4 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte y
|
|
Statement [180] plex_move::x_idx#1 = plex_move::x_idx#2 + 8 [ y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::s#2 plex_move::y_idx#1 plex_move::x_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::s#2 plex_move::y_idx#1 plex_move::x_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::s#2 plex_move::y_idx#1 plex_move::x_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte x
|
|
Statement [182] if(plex_move::s#1!=PLEX_COUNT-1+1) goto plex_move::@1 [ y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::y_idx#1 plex_move::s#1 plex_move::x_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::y_idx#1 plex_move::s#1 plex_move::x_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::y_idx#1 plex_move::s#1 plex_move::x_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [183] y_sin_idx#13 = y_sin_idx#11 + 3 [ x_movement_idx#11 y_sin_idx#13 scroll_text_next#14 ] ( main:9::plex_move:43 [ frame_done x_movement_idx#11 y_sin_idx#13 scroll_text_next#14 ] { } main:9::plex_move:56 [ frame_done x_movement_idx#11 y_sin_idx#13 scroll_text_next#14 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte x
|
|
Statement [190] if(plexSort::nxt_y#0>=PLEX_YPOS[PLEX_SORTED_IDX[plexSort::m#2]]) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] { } ) always clobbers reg byte a
|
|
Statement [193] (PLEX_SORTED_IDX+1)[plexSort::s#3] = PLEX_SORTED_IDX[plexSort::s#3] [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } ) always clobbers reg byte a
|
|
Statement [196] if(plexSort::nxt_y#0<PLEX_YPOS[PLEX_SORTED_IDX[plexSort::s#1]]) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } ) always clobbers reg byte a
|
|
Statement [198] PLEX_SORTED_IDX[plexSort::s#2] = plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 ] { } ) always clobbers reg byte a
|
|
Statement [201] plex_show_idx = 0 [ ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [202] plex_sprite_idx = 0 [ ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [203] plex_sprite_msb = 1 [ ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [206] PLEX_FREE_YPOS[plexSort::plexFreePrepare1_s#2] = 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::plexFreePrepare1_s#2 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::plexFreePrepare1_s#2 ] { } ) always clobbers reg byte a
|
|
Statement [209] plex_free_next = 0 [ ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [1] PLEX_SCREEN_PTR = (byte*)$400+$3f8 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [2] plex_show_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [3] plex_sprite_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [4] plex_sprite_msb = 1 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [5] plex_free_next = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [7] frame_done = false [ frame_done ] ( [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [14] plex_irq::plexFreeNextYpos1_return#0 = PLEX_FREE_YPOS[plex_free_next] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] ( [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte y
|
|
Statement [15] plex_irq::$4 = *RASTER + 3 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] { } ) always clobbers reg byte a
|
|
Statement [16] if(plex_show_idx>=PLEX_COUNT) goto plex_irq::@4 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] { } ) always clobbers reg byte a
|
|
Statement [18] if(plex_show_idx<PLEX_COUNT) goto plex_irq::@1 [ plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte a
|
|
Statement [19] *RASTER = $28 [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [20] frame_done = true [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [21] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [26] *PROCPORT = PROCPORT_RAM_CHARROM [ frame_done ] ( main:9 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [28] *PROCPORT = PROCPORT_BASIC_KERNEL_IO [ frame_done ] ( main:9 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [34] *D018 = main::toD0181_return#0 [ frame_done ] ( main:9 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [37] *SPRITES_ENABLE = $ff [ frame_done ] ( main:9 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [39] SPRITES_COLOR[main::s1#2] = WHITE [ frame_done main::s1#2 ] ( main:9 [ frame_done main::s1#2 ] { } ) always clobbers reg byte a
|
|
Statement [47] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [48] *VIC_CONTROL = *VIC_CONTROL & $7f [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [49] *RASTER = $28 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [50] *IRQ_ENABLE = IRQ_RASTER [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [51] *IRQ_STATUS = IRQ_RASTER [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [52] *KERNEL_IRQ = &plex_irq [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [54] if(frame_done) goto main::@7 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [55] frame_done = false [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] ( main:9 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [59] PLEX_PTR[main::s#2] = SPRITE_0#0+' ' [ frame_done main::s#2 main::x#2 ] ( main:9 [ frame_done main::s#2 main::x#2 ] { } ) always clobbers reg byte a
|
|
Statement [60] main::$12 = main::s#2 << 1 [ frame_done main::s#2 main::x#2 main::$12 ] ( main:9 [ frame_done main::s#2 main::x#2 main::$12 ] { } ) always clobbers reg byte a
|
|
Statement [61] main::$13 = XMOVEMENT_HI[main::x#2] w= XMOVEMENT[main::x#2] [ frame_done main::s#2 main::x#2 main::$12 main::$13 ] ( main:9 [ frame_done main::s#2 main::x#2 main::$12 main::$13 ] { } ) always clobbers reg byte a
|
|
Statement [62] PLEX_XPOS[main::$12] = main::$13 [ frame_done main::s#2 main::x#2 ] ( main:9 [ frame_done main::s#2 main::x#2 ] { } ) always clobbers reg byte a
|
|
Statement [63] main::x#1 = main::x#2 + 8 [ frame_done main::s#2 main::x#1 ] ( main:9 [ frame_done main::s#2 main::x#1 ] { } ) always clobbers reg byte a
|
|
Statement [65] plexShowSprite::plex_sprite_idx2#0 = plex_sprite_idx << 1 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a
|
|
Statement [66] plexShowSprite::plexFreeAdd1_ypos#0 = PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] { } ) always clobbers reg byte x reg byte y
|
|
Statement [67] SPRITES_YPOS[plexShowSprite::plex_sprite_idx2#0] = plexShowSprite::plexFreeAdd1_ypos#0 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] { } ) always clobbers reg byte y
|
|
Statement [69] PLEX_FREE_YPOS[plex_free_next] = plexShowSprite::plexFreeAdd1_$0 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte y
|
|
Statement [73] PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a reg byte x reg byte y
|
|
Statement [74] plexShowSprite::xpos_idx#0 = PLEX_SORTED_IDX[plex_show_idx] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] { } ) always clobbers reg byte y
|
|
Statement [75] plexShowSprite::$11 = plexShowSprite::xpos_idx#0 << 1 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] { } ) always clobbers reg byte a
|
|
Statement [76] plexShowSprite::$2 = < PLEX_XPOS[plexShowSprite::$11] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] { } ) always clobbers reg byte a
|
|
Statement [77] SPRITES_XPOS[plexShowSprite::plex_sprite_idx2#0] = plexShowSprite::$2 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] { } ) always clobbers reg byte y
|
|
Statement [78] plexShowSprite::$3 = > PLEX_XPOS[plexShowSprite::$11] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] { } ) always clobbers reg byte a
|
|
Statement [80] plexShowSprite::$9 = $ff ^ plex_sprite_msb [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] { } ) always clobbers reg byte a
|
|
Statement [81] *SPRITES_XMSB = *SPRITES_XMSB & plexShowSprite::$9 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a
|
|
Statement [87] if(plex_sprite_msb!=0) goto plexShowSprite::@return [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a
|
|
Statement [88] plex_sprite_msb = 1 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a
|
|
Statement [90] *SPRITES_XMSB = *SPRITES_XMSB | plex_sprite_msb [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:13 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a
|
|
Statement [93] font_2x2::next_2x2_right#0 = font_2x2::next_2x2_left#0 + (word)$40*8 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2_right#0 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2_right#0 ] { } ) always clobbers reg byte a
|
|
Statement [94] font_2x2::next_2x2_left#10 = font_2x2::next_2x2_left#0 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2_right#0 font_2x2::next_2x2_left#10 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2_right#0 font_2x2::next_2x2_left#10 ] { } ) always clobbers reg byte a
|
|
Statement [96] font_2x2::glyph_bits#0 = font_2x2::next_original#4[font_2x2::l#2] [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#0 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#0 ] { } ) always clobbers reg byte a
|
|
Statement [98] font_2x2::$1 = font_2x2::glyph_bits#2 & $80 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::glyph_bits_2x2#3 font_2x2::b#2 font_2x2::$1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::glyph_bits_2x2#3 font_2x2::b#2 font_2x2::$1 ] { } ) always clobbers reg byte a
|
|
Statement [102] font_2x2::$5 = font_2x2::glyph_bits_2x2#3 << 1 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::$5 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::$5 ] { } ) always clobbers reg byte a
|
|
Statement [103] font_2x2::glyph_bits_2x2#1 = font_2x2::$5 | font_2x2::glyph_bit#0 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::glyph_bits_2x2#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::glyph_bits_2x2#1 ] { } ) always clobbers reg byte a
|
|
Statement [104] font_2x2::$7 = font_2x2::glyph_bits_2x2#1 << 1 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::$7 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bit#0 font_2x2::$7 ] { } ) always clobbers reg byte a
|
|
Statement [105] font_2x2::glyph_bits_2x2#2 = font_2x2::$7 | font_2x2::glyph_bit#0 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bits_2x2#2 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#7 font_2x2::l2#8 font_2x2::next_2x2_right#7 font_2x2::glyph_bits#2 font_2x2::b#2 font_2x2::glyph_bits_2x2#2 ] { } ) always clobbers reg byte a
|
|
Statement [121] font_2x2::next_2x2_left#1 = font_2x2::next_2x2_left#0 + (word)$80*8 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#1 ] { } ) always clobbers reg byte a
|
|
Statement [122] font_2x2::next_2x2_right#1 = font_2x2::next_2x2_left#0 + (word)$c0*8 [ font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#1 font_2x2::next_2x2_right#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_2x2_left#0 font_2x2::next_original#4 font_2x2::c#11 font_2x2::l#2 font_2x2::next_2x2_left#1 font_2x2::next_2x2_right#1 ] { } ) always clobbers reg byte a
|
|
Statement [126] font_2x2::next_2x2#1 = font_2x2::next_2x2_left#0 + 8 [ font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::next_original#4 font_2x2::c#11 font_2x2::next_2x2#1 ] { } ) always clobbers reg byte a
|
|
Statement [127] font_2x2::next_original#1 = font_2x2::next_original#4 + 8 [ font_2x2::c#11 font_2x2::next_2x2#1 font_2x2::next_original#1 ] ( main:9::font_2x2:27 [ frame_done font_2x2::c#11 font_2x2::next_2x2#1 font_2x2::next_original#1 ] { } ) always clobbers reg byte a
|
|
Statement [135] font_2x2_to_sprites::char_right#0 = font_2x2_to_sprites::char_current#2 + (word)$40*8 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_right#0 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_right#0 ] { } ) always clobbers reg byte a
|
|
Statement [136] font_2x2_to_sprites::char_left#6 = font_2x2_to_sprites::char_current#2 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_left#6 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_left#6 ] { } ) always clobbers reg byte a
|
|
Statement [138] font_2x2_to_sprites::$3 = font_2x2_to_sprites::i#2 & 7 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::$3 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::$3 ] { } ) always clobbers reg byte a
|
|
Statement [139] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#4] = font_2x2_to_sprites::char_left#3[font_2x2_to_sprites::$3] [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::$3 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::$3 ] { } ) always clobbers reg byte a
|
|
Statement [141] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#1] = font_2x2_to_sprites::char_right#3[font_2x2_to_sprites::$3] [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::sprite_idx#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::sprite_idx#1 ] { } ) always clobbers reg byte a
|
|
Statement [143] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#2] = 0 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::sprite_idx#2 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::sprite_idx#2 ] { } ) always clobbers reg byte a
|
|
Statement [151] font_2x2_to_sprites::char_current#1 = font_2x2_to_sprites::char_current#2 + 8 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_current#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::char_current#1 ] { } ) always clobbers reg byte a
|
|
Statement [152] font_2x2_to_sprites::sprite#1 = font_2x2_to_sprites::sprite#4 + $40 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#1 font_2x2_to_sprites::sprite#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#1 font_2x2_to_sprites::sprite#1 ] { } ) always clobbers reg byte a
|
|
Statement [154] font_2x2_to_sprites::char_left#1 = font_2x2_to_sprites::char_current#2 + (word)$80*8 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::char_left#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::char_left#1 ] { } ) always clobbers reg byte a
|
|
Statement [155] font_2x2_to_sprites::char_right#1 = font_2x2_to_sprites::char_current#2 + (word)$c0*8 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::char_left#1 font_2x2_to_sprites::char_right#1 ] ( main:9::font_2x2_to_sprites:30 [ frame_done font_2x2_to_sprites::c#2 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::i#2 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::char_left#1 font_2x2_to_sprites::char_right#1 ] { } ) always clobbers reg byte a
|
|
Statement [157] PLEX_SCREEN_PTR = SCREEN+$3f8 [ ] ( main:9::plexInit:32 [ frame_done ] { } ) always clobbers reg byte a
|
|
Statement [164] plex_move::y_idx#0 = y_sin_idx#11 [ y_sin_idx#11 x_movement_idx#11 scroll_text_next#27 plex_move::y_idx#0 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#27 plex_move::y_idx#0 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#27 plex_move::y_idx#0 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [165] plex_move::x_idx#0 = x_movement_idx#11 [ y_sin_idx#11 x_movement_idx#11 scroll_text_next#27 plex_move::y_idx#0 plex_move::x_idx#0 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#27 plex_move::y_idx#0 plex_move::x_idx#0 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#27 plex_move::y_idx#0 plex_move::x_idx#0 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [167] PLEX_YPOS[plex_move::s#2] = YSIN[plex_move::y_idx#2] [ y_sin_idx#11 x_movement_idx#11 plex_move::y_idx#2 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::y_idx#2 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::y_idx#2 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte y
|
|
Statement [168] plex_move::y_idx#1 = plex_move::y_idx#2 + 8 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte x
|
|
Statement [169] plex_move::$6 = plex_move::s#2 << 1 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [170] plex_move::$7 = XMOVEMENT_HI[plex_move::x_idx#2] w= XMOVEMENT[plex_move::x_idx#2] [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 plex_move::$7 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 plex_move::$7 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 plex_move::$6 plex_move::$7 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte y
|
|
Statement [171] PLEX_XPOS[plex_move::$6] = plex_move::$7 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [172] if(plex_move::x_idx#2!=0) goto plex_move::@2 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [173] if(*scroll_text_next#12!=0) goto plex_move::@6 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 scroll_text_next#12 plex_move::y_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte y
|
|
Statement [176] plex_move::$4 = SPRITE_0#0 + *scroll_text_next#13 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 plex_move::$4 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 plex_move::$4 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 plex_move::$4 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte y
|
|
Statement [177] PLEX_PTR[plex_move::s#2] = plex_move::$4 [ y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 plex_move::s#2 plex_move::x_idx#2 plex_move::y_idx#1 scroll_text_next#13 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte y
|
|
Statement [180] plex_move::x_idx#1 = plex_move::x_idx#2 + 8 [ y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::s#2 plex_move::y_idx#1 plex_move::x_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::s#2 plex_move::y_idx#1 plex_move::x_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::s#2 plex_move::y_idx#1 plex_move::x_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte x
|
|
Statement [182] if(plex_move::s#1!=PLEX_COUNT-1+1) goto plex_move::@1 [ y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::y_idx#1 plex_move::s#1 plex_move::x_idx#1 ] ( main:9::plex_move:43 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::y_idx#1 plex_move::s#1 plex_move::x_idx#1 ] { } main:9::plex_move:56 [ frame_done y_sin_idx#11 x_movement_idx#11 scroll_text_next#14 plex_move::y_idx#1 plex_move::s#1 plex_move::x_idx#1 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a
|
|
Statement [183] y_sin_idx#13 = y_sin_idx#11 + 3 [ x_movement_idx#11 y_sin_idx#13 scroll_text_next#14 ] ( main:9::plex_move:43 [ frame_done x_movement_idx#11 y_sin_idx#13 scroll_text_next#14 ] { } main:9::plex_move:56 [ frame_done x_movement_idx#11 y_sin_idx#13 scroll_text_next#14 ] { { y_sin_idx#11 = y_sin_idx#13 } { x_movement_idx#11 = x_movement_idx#13 } { scroll_text_next#14 = scroll_text_next#27 } } ) always clobbers reg byte a reg byte x
|
|
Statement [190] if(plexSort::nxt_y#0>=PLEX_YPOS[PLEX_SORTED_IDX[plexSort::m#2]]) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] { } ) always clobbers reg byte a
|
|
Statement [193] (PLEX_SORTED_IDX+1)[plexSort::s#3] = PLEX_SORTED_IDX[plexSort::s#3] [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } ) always clobbers reg byte a
|
|
Statement [196] if(plexSort::nxt_y#0<PLEX_YPOS[PLEX_SORTED_IDX[plexSort::s#1]]) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } ) always clobbers reg byte a
|
|
Statement [198] PLEX_SORTED_IDX[plexSort::s#2] = plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::m#2 ] { } ) always clobbers reg byte a
|
|
Statement [201] plex_show_idx = 0 [ ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [202] plex_sprite_idx = 0 [ ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [203] plex_sprite_msb = 1 [ ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Statement [206] PLEX_FREE_YPOS[plexSort::plexFreePrepare1_s#2] = 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::plexFreePrepare1_s#2 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 plexSort::plexFreePrepare1_s#2 ] { } ) always clobbers reg byte a
|
|
Statement [209] plex_free_next = 0 [ ] ( main:9::plexSort:45 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } main:9::plexSort:58 [ frame_done y_sin_idx#13 x_movement_idx#13 scroll_text_next#14 ] { } ) always clobbers reg byte a
|
|
Potential registers zp[1]:2 [ main::s#2 main::s#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:3 [ main::x#2 main::x#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:4 [ main::s1#2 main::s1#1 ] : zp[1]:4 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:5 [ font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ] : zp[2]:5 ,
|
|
Potential registers zp[2]:7 [ font_2x2::next_original#4 font_2x2::next_original#1 ] : zp[2]:7 ,
|
|
Potential registers zp[1]:9 [ font_2x2::c#11 font_2x2::c#1 ] : zp[1]:9 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:10 [ font_2x2::l#2 font_2x2::l#1 ] : zp[1]:10 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:11 [ font_2x2::next_2x2_left#7 font_2x2::next_2x2_left#10 font_2x2::next_2x2_left#8 font_2x2::next_2x2_left#1 ] : zp[2]:11 ,
|
|
Potential registers zp[1]:13 [ font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ] : zp[1]:13 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:14 [ font_2x2::next_2x2_right#7 font_2x2::next_2x2_right#0 font_2x2::next_2x2_right#8 font_2x2::next_2x2_right#1 ] : zp[2]:14 ,
|
|
Potential registers zp[1]:16 [ font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ] : zp[1]:16 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:17 [ font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 ] : zp[2]:17 ,
|
|
Potential registers zp[1]:19 [ font_2x2::b#2 font_2x2::b#1 ] : zp[1]:19 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:20 [ font_2x2::glyph_bit#0 ] : zp[1]:20 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:21 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 ] : zp[1]:21 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:22 [ font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 ] : zp[2]:22 ,
|
|
Potential registers zp[2]:24 [ font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::sprite#1 ] : zp[2]:24 ,
|
|
Potential registers zp[1]:26 [ font_2x2_to_sprites::i#2 font_2x2_to_sprites::i#1 ] : zp[1]:26 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:27 [ font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::char_left#4 font_2x2_to_sprites::char_left#1 ] : zp[2]:27 ,
|
|
Potential registers zp[1]:29 [ font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 ] : zp[1]:29 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:30 [ font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_right#4 font_2x2_to_sprites::char_right#1 ] : zp[2]:30 ,
|
|
Potential registers zp[1]:32 [ plexInit::i#2 plexInit::i#1 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:33 [ y_sin_idx#11 y_sin_idx#13 ] : zp[1]:33 ,
|
|
Potential registers zp[1]:34 [ x_movement_idx#11 x_movement_idx#13 ] : zp[1]:34 ,
|
|
Potential registers zp[1]:35 [ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ] : zp[1]:35 ,
|
|
Potential registers zp[1]:36 [ plex_move::s#2 plex_move::s#1 ] : zp[1]:36 ,
|
|
Potential registers zp[1]:37 [ plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ] : zp[1]:37 ,
|
|
Potential registers zp[2]:38 [ scroll_text_next#13 scroll_text_next#12 scroll_text_next#27 scroll_text_next#14 scroll_text_next#3 ] : zp[2]:38 ,
|
|
Potential registers zp[1]:40 [ plexSort::m#2 plexSort::m#1 ] : zp[1]:40 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:41 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] : zp[1]:41 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:42 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] : zp[1]:42 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:43 [ PLEX_SCREEN_PTR ] : zp[2]:43 ,
|
|
Potential registers zp[1]:45 [ plex_show_idx ] : zp[1]:45 ,
|
|
Potential registers zp[1]:46 [ plex_sprite_idx ] : zp[1]:46 ,
|
|
Potential registers zp[1]:47 [ plex_sprite_msb ] : zp[1]:47 ,
|
|
Potential registers zp[1]:48 [ plex_free_next ] : zp[1]:48 ,
|
|
Potential registers zp[1]:49 [ frame_done ] : zp[1]:49 ,
|
|
Potential registers zp[1]:50 [ plex_irq::plexFreeNextYpos1_return#0 ] : zp[1]:50 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:51 [ plex_irq::$4 ] : zp[1]:51 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:52 [ main::$12 ] : zp[1]:52 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:53 [ main::$13 ] : zp[2]:53 ,
|
|
Potential registers zp[1]:55 [ plexShowSprite::plex_sprite_idx2#0 ] : zp[1]:55 ,
|
|
Potential registers zp[1]:56 [ plexShowSprite::plexFreeAdd1_ypos#0 ] : zp[1]:56 , reg byte a , reg byte x ,
|
|
Potential registers zp[1]:57 [ plexShowSprite::plexFreeAdd1_$0 ] : zp[1]:57 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:58 [ plexShowSprite::plexFreeAdd1_$1 ] : zp[1]:58 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:59 [ plexShowSprite::plexFreeAdd1_$2 ] : zp[1]:59 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:60 [ plexShowSprite::xpos_idx#0 ] : zp[1]:60 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:61 [ plexShowSprite::$11 ] : zp[1]:61 , reg byte x ,
|
|
Potential registers zp[1]:62 [ plexShowSprite::$2 ] : zp[1]:62 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:63 [ plexShowSprite::$3 ] : zp[1]:63 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:64 [ plexShowSprite::$9 ] : zp[1]:64 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:65 [ plexShowSprite::$5 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:66 [ plexShowSprite::$6 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:67 [ font_2x2::$1 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:68 [ font_2x2::$5 ] : zp[2]:68 ,
|
|
Potential registers zp[2]:70 [ font_2x2::glyph_bits_2x2#1 ] : zp[2]:70 ,
|
|
Potential registers zp[2]:72 [ font_2x2::$7 ] : zp[2]:72 ,
|
|
Potential registers zp[1]:74 [ font_2x2::$10 ] : zp[1]:74 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:75 [ font_2x2::$11 ] : zp[1]:75 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:76 [ font_2x2::$12 ] : zp[1]:76 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:77 [ font_2x2::$13 ] : zp[1]:77 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:78 [ font_2x2::$14 ] : zp[1]:78 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:79 [ font_2x2::$15 ] : zp[1]:79 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:80 [ font_2x2_to_sprites::$3 ] : zp[1]:80 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:81 [ font_2x2_to_sprites::sprite_idx#1 ] : zp[1]:81 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:82 [ font_2x2_to_sprites::sprite_idx#2 ] : zp[1]:82 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:83 [ plex_move::$6 ] : zp[1]:83 , reg byte x ,
|
|
Potential registers zp[2]:84 [ plex_move::$7 ] : zp[2]:84 ,
|
|
Potential registers zp[1]:86 [ plex_move::$4 ] : zp[1]:86 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:87 [ plexSort::nxt_idx#0 ] : zp[1]:87 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:88 [ plexSort::nxt_y#0 ] : zp[1]:88 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:89 [ plexSort::s#2 ] : zp[1]:89 , reg byte a , reg byte x , reg byte y ,
|
|
|
|
REGISTER UPLIFT SCOPES
|
|
Uplift Scope [plexSort] 3,616,672.83: zp[1]:41 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 300,003: zp[1]:42 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] 200,002: zp[1]:89 [ plexSort::s#2 ] 191,668.58: zp[1]:40 [ plexSort::m#2 plexSort::m#1 ] 150,000.38: zp[1]:88 [ plexSort::nxt_y#0 ] 30,000.3: zp[1]:87 [ plexSort::nxt_idx#0 ]
|
|
Uplift Scope [font_2x2] 200,002: zp[1]:67 [ font_2x2::$1 ] 200,002: zp[2]:68 [ font_2x2::$5 ] 200,002: zp[2]:70 [ font_2x2::glyph_bits_2x2#1 ] 200,002: zp[2]:72 [ font_2x2::$7 ] 170,001.7: zp[1]:19 [ font_2x2::b#2 font_2x2::b#1 ] 121,114.22: zp[1]:16 [ font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ] 60,000.9: zp[2]:17 [ font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 ] 50,000.5: zp[1]:20 [ font_2x2::glyph_bit#0 ] 32,581.12: zp[2]:14 [ font_2x2::next_2x2_right#7 font_2x2::next_2x2_right#0 font_2x2::next_2x2_right#8 font_2x2::next_2x2_right#1 ] 24,169.08: zp[1]:13 [ font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ] 23,581.12: zp[2]:11 [ font_2x2::next_2x2_left#7 font_2x2::next_2x2_left#10 font_2x2::next_2x2_left#8 font_2x2::next_2x2_left#1 ] 20,002: zp[1]:74 [ font_2x2::$10 ] 20,002: zp[1]:76 [ font_2x2::$12 ] 20,002: zp[1]:77 [ font_2x2::$13 ] 20,002: zp[1]:79 [ font_2x2::$15 ] 16,036.09: zp[1]:10 [ font_2x2::l#2 font_2x2::l#1 ] 10,001: zp[1]:75 [ font_2x2::$11 ] 10,001: zp[1]:78 [ font_2x2::$14 ] 1,557.11: zp[1]:9 [ font_2x2::c#11 font_2x2::c#1 ] 1,206.56: zp[2]:5 [ font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ] 1,010.28: zp[2]:7 [ font_2x2::next_original#4 font_2x2::next_original#1 ]
|
|
Uplift Scope [plex_move] 200,002: zp[2]:84 [ plex_move::$7 ] 200,002: zp[1]:86 [ plex_move::$4 ] 183,335.17: zp[1]:36 [ plex_move::s#2 plex_move::s#1 ] 164,836.47: zp[1]:35 [ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ] 104,455.48: zp[1]:37 [ plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ] 100,001: zp[1]:83 [ plex_move::$6 ]
|
|
Uplift Scope [] 357,974.44: zp[2]:38 [ scroll_text_next#13 scroll_text_next#12 scroll_text_next#27 scroll_text_next#14 scroll_text_next#3 ] 163.15: zp[1]:33 [ y_sin_idx#11 y_sin_idx#13 ] 161.37: zp[1]:34 [ x_movement_idx#11 x_movement_idx#13 ] 48.76: zp[1]:47 [ plex_sprite_msb ] 46.09: zp[1]:45 [ plex_show_idx ] 45.39: zp[1]:46 [ plex_sprite_idx ] 42.48: zp[1]:48 [ plex_free_next ] 26.33: zp[1]:49 [ frame_done ] 6.18: zp[2]:43 [ PLEX_SCREEN_PTR ]
|
|
Uplift Scope [font_2x2_to_sprites] 33,822.55: zp[2]:30 [ font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_right#4 font_2x2_to_sprites::char_right#1 ] 24,822.55: zp[2]:27 [ font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::char_left#4 font_2x2_to_sprites::char_left#1 ] 18,573.29: zp[1]:26 [ font_2x2_to_sprites::i#2 font_2x2_to_sprites::i#1 ] 15,001.5: zp[1]:81 [ font_2x2_to_sprites::sprite_idx#1 ] 15,001.5: zp[1]:82 [ font_2x2_to_sprites::sprite_idx#2 ] 12,223.44: zp[1]:29 [ font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 ] 10,001: zp[1]:80 [ font_2x2_to_sprites::$3 ] 2,525.05: zp[2]:24 [ font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::sprite#1 ] 2,138.5: zp[1]:21 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 ] 1,867.63: zp[2]:22 [ font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 ]
|
|
Uplift Scope [plexInit] 3,503.5: zp[1]:32 [ plexInit::i#2 plexInit::i#1 ]
|
|
Uplift Scope [plexShowSprite] 202: zp[1]:57 [ plexShowSprite::plexFreeAdd1_$0 ] 202: zp[1]:58 [ plexShowSprite::plexFreeAdd1_$1 ] 202: zp[1]:59 [ plexShowSprite::plexFreeAdd1_$2 ] 202: zp[1]:60 [ plexShowSprite::xpos_idx#0 ] 202: zp[1]:62 [ plexShowSprite::$2 ] 202: zp[1]:63 [ plexShowSprite::$3 ] 202: zp[1]:64 [ plexShowSprite::$9 ] 202: zp[1]:65 [ plexShowSprite::$5 ] 202: zp[1]:66 [ plexShowSprite::$6 ] 151.5: zp[1]:56 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 101: zp[1]:61 [ plexShowSprite::$11 ] 25.25: zp[1]:55 [ plexShowSprite::plex_sprite_idx2#0 ]
|
|
Uplift Scope [main] 303: zp[1]:4 [ main::s1#2 main::s1#1 ] 274.14: zp[1]:2 [ main::s#2 main::s#1 ] 202: zp[2]:53 [ main::$13 ] 168.33: zp[1]:3 [ main::x#2 main::x#1 ] 101: zp[1]:52 [ main::$12 ]
|
|
Uplift Scope [plex_irq] 11: zp[1]:51 [ plex_irq::$4 ] 4.8: zp[1]:50 [ plex_irq::plexFreeNextYpos1_return#0 ]
|
|
Uplift Scope [MOS6526_CIA]
|
|
Uplift Scope [MOS6569_VICII]
|
|
Uplift Scope [MOS6581_SID]
|
|
Uplift Scope [__start]
|
|
|
|
Uplifting [plexSort] best 252654 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] reg byte x [ plexSort::s#2 ] zp[1]:40 [ plexSort::m#2 plexSort::m#1 ] zp[1]:88 [ plexSort::nxt_y#0 ] zp[1]:87 [ plexSort::nxt_idx#0 ]
|
|
Limited combination testing to 100 combinations of 972 possible.
|
|
Uplifting [font_2x2] best 229654 combination reg byte a [ font_2x2::$1 ] zp[2]:68 [ font_2x2::$5 ] zp[2]:70 [ font_2x2::glyph_bits_2x2#1 ] zp[2]:72 [ font_2x2::$7 ] reg byte y [ font_2x2::b#2 font_2x2::b#1 ] zp[1]:16 [ font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ] zp[2]:17 [ font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 ] reg byte x [ font_2x2::glyph_bit#0 ] zp[2]:14 [ font_2x2::next_2x2_right#7 font_2x2::next_2x2_right#0 font_2x2::next_2x2_right#8 font_2x2::next_2x2_right#1 ] zp[1]:13 [ font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ] zp[2]:11 [ font_2x2::next_2x2_left#7 font_2x2::next_2x2_left#10 font_2x2::next_2x2_left#8 font_2x2::next_2x2_left#1 ] zp[1]:74 [ font_2x2::$10 ] zp[1]:76 [ font_2x2::$12 ] zp[1]:77 [ font_2x2::$13 ] zp[1]:79 [ font_2x2::$15 ] zp[1]:10 [ font_2x2::l#2 font_2x2::l#1 ] zp[1]:75 [ font_2x2::$11 ] zp[1]:78 [ font_2x2::$14 ] zp[1]:9 [ font_2x2::c#11 font_2x2::c#1 ] zp[2]:5 [ font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ] zp[2]:7 [ font_2x2::next_original#4 font_2x2::next_original#1 ]
|
|
Limited combination testing to 100 combinations of 11943936 possible.
|
|
Uplifting [plex_move] best 228654 combination zp[2]:84 [ plex_move::$7 ] reg byte a [ plex_move::$4 ] zp[1]:36 [ plex_move::s#2 plex_move::s#1 ] zp[1]:35 [ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ] zp[1]:37 [ plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ] reg byte x [ plex_move::$6 ]
|
|
Uplifting [] best 228654 combination zp[2]:38 [ scroll_text_next#13 scroll_text_next#12 scroll_text_next#27 scroll_text_next#14 scroll_text_next#3 ] zp[1]:33 [ y_sin_idx#11 y_sin_idx#13 ] zp[1]:34 [ x_movement_idx#11 x_movement_idx#13 ] zp[1]:47 [ plex_sprite_msb ] zp[1]:45 [ plex_show_idx ] zp[1]:46 [ plex_sprite_idx ] zp[1]:48 [ plex_free_next ] zp[1]:49 [ frame_done ] zp[2]:43 [ PLEX_SCREEN_PTR ]
|
|
Uplifting [font_2x2_to_sprites] best 225954 combination zp[2]:30 [ font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_right#4 font_2x2_to_sprites::char_right#1 ] zp[2]:27 [ font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::char_left#4 font_2x2_to_sprites::char_left#1 ] reg byte x [ font_2x2_to_sprites::i#2 font_2x2_to_sprites::i#1 ] zp[1]:81 [ font_2x2_to_sprites::sprite_idx#1 ] reg byte y [ font_2x2_to_sprites::sprite_idx#2 ] zp[1]:29 [ font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 ] zp[1]:80 [ font_2x2_to_sprites::$3 ] zp[2]:24 [ font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::sprite#1 ] zp[1]:21 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 ] zp[2]:22 [ font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 ]
|
|
Limited combination testing to 100 combinations of 729 possible.
|
|
Uplifting [plexInit] best 225834 combination reg byte x [ plexInit::i#2 plexInit::i#1 ]
|
|
Uplifting [plexShowSprite] best 225814 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$1 ] reg byte a [ plexShowSprite::plexFreeAdd1_$2 ] reg byte a [ plexShowSprite::xpos_idx#0 ] zp[1]:62 [ plexShowSprite::$2 ] zp[1]:63 [ plexShowSprite::$3 ] zp[1]:64 [ plexShowSprite::$9 ] zp[1]:65 [ plexShowSprite::$5 ] zp[1]:66 [ plexShowSprite::$6 ] zp[1]:56 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp[1]:61 [ plexShowSprite::$11 ] zp[1]:55 [ plexShowSprite::plex_sprite_idx2#0 ]
|
|
Limited combination testing to 100 combinations of 1572864 possible.
|
|
Uplifting [main] best 225554 combination reg byte x [ main::s1#2 main::s1#1 ] zp[1]:2 [ main::s#2 main::s#1 ] zp[2]:53 [ main::$13 ] reg byte x [ main::x#2 main::x#1 ] reg byte y [ main::$12 ]
|
|
Uplifting [plex_irq] best 225491 combination zp[1]:51 [ plex_irq::$4 ] reg byte x [ plex_irq::plexFreeNextYpos1_return#0 ]
|
|
Uplifting [MOS6526_CIA] best 225491 combination
|
|
Uplifting [MOS6569_VICII] best 225491 combination
|
|
Uplifting [MOS6581_SID] best 225491 combination
|
|
Uplifting [__start] best 225491 combination
|
|
Attempting to uplift remaining variables inzp[1]:40 [ plexSort::m#2 plexSort::m#1 ]
|
|
Uplifting [plexSort] best 225491 combination zp[1]:40 [ plexSort::m#2 plexSort::m#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:36 [ plex_move::s#2 plex_move::s#1 ]
|
|
Uplifting [plex_move] best 225491 combination zp[1]:36 [ plex_move::s#2 plex_move::s#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:35 [ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ]
|
|
Uplifting [plex_move] best 225491 combination zp[1]:35 [ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:88 [ plexSort::nxt_y#0 ]
|
|
Uplifting [plexSort] best 225491 combination zp[1]:88 [ plexSort::nxt_y#0 ]
|
|
Attempting to uplift remaining variables inzp[1]:16 [ font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ]
|
|
Uplifting [font_2x2] best 225491 combination zp[1]:16 [ font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:37 [ plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ]
|
|
Uplifting [plex_move] best 225491 combination zp[1]:37 [ plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:87 [ plexSort::nxt_idx#0 ]
|
|
Uplifting [plexSort] best 225491 combination zp[1]:87 [ plexSort::nxt_idx#0 ]
|
|
Attempting to uplift remaining variables inzp[1]:13 [ font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ]
|
|
Uplifting [font_2x2] best 225491 combination zp[1]:13 [ font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:74 [ font_2x2::$10 ]
|
|
Uplifting [font_2x2] best 224891 combination reg byte a [ font_2x2::$10 ]
|
|
Attempting to uplift remaining variables inzp[1]:76 [ font_2x2::$12 ]
|
|
Uplifting [font_2x2] best 224291 combination reg byte a [ font_2x2::$12 ]
|
|
Attempting to uplift remaining variables inzp[1]:77 [ font_2x2::$13 ]
|
|
Uplifting [font_2x2] best 223691 combination reg byte a [ font_2x2::$13 ]
|
|
Attempting to uplift remaining variables inzp[1]:79 [ font_2x2::$15 ]
|
|
Uplifting [font_2x2] best 223091 combination reg byte a [ font_2x2::$15 ]
|
|
Attempting to uplift remaining variables inzp[1]:10 [ font_2x2::l#2 font_2x2::l#1 ]
|
|
Uplifting [font_2x2] best 223091 combination zp[1]:10 [ font_2x2::l#2 font_2x2::l#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:81 [ font_2x2_to_sprites::sprite_idx#1 ]
|
|
Uplifting [font_2x2_to_sprites] best 223091 combination zp[1]:81 [ font_2x2_to_sprites::sprite_idx#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:29 [ font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 ]
|
|
Uplifting [font_2x2_to_sprites] best 223091 combination zp[1]:29 [ font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 ]
|
|
Attempting to uplift remaining variables inzp[1]:75 [ font_2x2::$11 ]
|
|
Uplifting [font_2x2] best 222491 combination reg byte y [ font_2x2::$11 ]
|
|
Attempting to uplift remaining variables inzp[1]:78 [ font_2x2::$14 ]
|
|
Uplifting [font_2x2] best 221891 combination reg byte y [ font_2x2::$14 ]
|
|
Attempting to uplift remaining variables inzp[1]:80 [ font_2x2_to_sprites::$3 ]
|
|
Uplifting [font_2x2_to_sprites] best 221891 combination zp[1]:80 [ font_2x2_to_sprites::$3 ]
|
|
Attempting to uplift remaining variables inzp[1]:21 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 ]
|
|
Uplifting [font_2x2_to_sprites] best 221891 combination zp[1]:21 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:9 [ font_2x2::c#11 font_2x2::c#1 ]
|
|
Uplifting [font_2x2] best 221891 combination zp[1]:9 [ font_2x2::c#11 font_2x2::c#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:2 [ main::s#2 main::s#1 ]
|
|
Uplifting [main] best 221891 combination zp[1]:2 [ main::s#2 main::s#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:62 [ plexShowSprite::$2 ]
|
|
Uplifting [plexShowSprite] best 221885 combination reg byte a [ plexShowSprite::$2 ]
|
|
Attempting to uplift remaining variables inzp[1]:63 [ plexShowSprite::$3 ]
|
|
Uplifting [plexShowSprite] best 221879 combination reg byte a [ plexShowSprite::$3 ]
|
|
Attempting to uplift remaining variables inzp[1]:64 [ plexShowSprite::$9 ]
|
|
Uplifting [plexShowSprite] best 221873 combination reg byte a [ plexShowSprite::$9 ]
|
|
Attempting to uplift remaining variables inzp[1]:65 [ plexShowSprite::$5 ]
|
|
Uplifting [plexShowSprite] best 221867 combination reg byte x [ plexShowSprite::$5 ]
|
|
Attempting to uplift remaining variables inzp[1]:66 [ plexShowSprite::$6 ]
|
|
Uplifting [plexShowSprite] best 221863 combination reg byte a [ plexShowSprite::$6 ]
|
|
Attempting to uplift remaining variables inzp[1]:33 [ y_sin_idx#11 y_sin_idx#13 ]
|
|
Uplifting [] best 221863 combination zp[1]:33 [ y_sin_idx#11 y_sin_idx#13 ]
|
|
Attempting to uplift remaining variables inzp[1]:34 [ x_movement_idx#11 x_movement_idx#13 ]
|
|
Uplifting [] best 221863 combination zp[1]:34 [ x_movement_idx#11 x_movement_idx#13 ]
|
|
Attempting to uplift remaining variables inzp[1]:56 [ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
|
Uplifting [plexShowSprite] best 221854 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
|
Attempting to uplift remaining variables inzp[1]:61 [ plexShowSprite::$11 ]
|
|
Uplifting [plexShowSprite] best 221847 combination reg byte x [ plexShowSprite::$11 ]
|
|
Attempting to uplift remaining variables inzp[1]:47 [ plex_sprite_msb ]
|
|
Uplifting [] best 221847 combination zp[1]:47 [ plex_sprite_msb ]
|
|
Attempting to uplift remaining variables inzp[1]:45 [ plex_show_idx ]
|
|
Uplifting [] best 221847 combination zp[1]:45 [ plex_show_idx ]
|
|
Attempting to uplift remaining variables inzp[1]:46 [ plex_sprite_idx ]
|
|
Uplifting [] best 221847 combination zp[1]:46 [ plex_sprite_idx ]
|
|
Attempting to uplift remaining variables inzp[1]:48 [ plex_free_next ]
|
|
Uplifting [] best 221847 combination zp[1]:48 [ plex_free_next ]
|
|
Attempting to uplift remaining variables inzp[1]:49 [ frame_done ]
|
|
Uplifting [] best 221847 combination zp[1]:49 [ frame_done ]
|
|
Attempting to uplift remaining variables inzp[1]:55 [ plexShowSprite::plex_sprite_idx2#0 ]
|
|
Uplifting [plexShowSprite] best 221847 combination zp[1]:55 [ plexShowSprite::plex_sprite_idx2#0 ]
|
|
Attempting to uplift remaining variables inzp[1]:51 [ plex_irq::$4 ]
|
|
Uplifting [plex_irq] best 221847 combination zp[1]:51 [ plex_irq::$4 ]
|
|
Coalescing zero page register [ zp[2]:17 [ font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 ] ] with [ zp[2]:68 [ font_2x2::$5 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:17 [ font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 font_2x2::$5 ] ] with [ zp[2]:72 [ font_2x2::$7 ] ] - score: 1
|
|
Coalescing zero page register [ zp[1]:29 [ font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 ] ] with [ zp[1]:81 [ font_2x2_to_sprites::sprite_idx#1 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:17 [ font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 font_2x2::$5 font_2x2::$7 ] ] with [ zp[2]:70 [ font_2x2::glyph_bits_2x2#1 ] ] - score: 2
|
|
Coalescing zero page register [ zp[1]:21 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 ] ] with [ zp[1]:9 [ font_2x2::c#11 font_2x2::c#1 ] ]
|
|
Coalescing zero page register [ zp[2]:22 [ font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 ] ] with [ zp[2]:5 [ font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ] ]
|
|
Coalescing zero page register [ zp[2]:24 [ font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::sprite#1 ] ] with [ zp[2]:7 [ font_2x2::next_original#4 font_2x2::next_original#1 ] ]
|
|
Coalescing zero page register [ zp[2]:27 [ font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::char_left#4 font_2x2_to_sprites::char_left#1 ] ] with [ zp[2]:11 [ font_2x2::next_2x2_left#7 font_2x2::next_2x2_left#10 font_2x2::next_2x2_left#8 font_2x2::next_2x2_left#1 ] ]
|
|
Coalescing zero page register [ zp[1]:29 [ font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::sprite_idx#1 ] ] with [ zp[1]:10 [ font_2x2::l#2 font_2x2::l#1 ] ]
|
|
Coalescing zero page register [ zp[2]:30 [ font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_right#4 font_2x2_to_sprites::char_right#1 ] ] with [ zp[2]:14 [ font_2x2::next_2x2_right#7 font_2x2::next_2x2_right#0 font_2x2::next_2x2_right#8 font_2x2::next_2x2_right#1 ] ]
|
|
Coalescing zero page register [ zp[1]:35 [ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ] ] with [ zp[1]:13 [ font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ] ]
|
|
Coalescing zero page register [ zp[1]:36 [ plex_move::s#2 plex_move::s#1 ] ] with [ zp[1]:16 [ font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ] ]
|
|
Coalescing zero page register [ zp[1]:40 [ plexSort::m#2 plexSort::m#1 ] ] with [ zp[1]:37 [ plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ] ]
|
|
Coalescing zero page register [ zp[2]:53 [ main::$13 ] ] with [ zp[2]:17 [ font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 font_2x2::$5 font_2x2::$7 font_2x2::glyph_bits_2x2#1 ] ]
|
|
Coalescing zero page register [ zp[1]:87 [ plexSort::nxt_idx#0 ] ] with [ zp[1]:80 [ font_2x2_to_sprites::$3 ] ]
|
|
Coalescing zero page register [ zp[1]:40 [ plexSort::m#2 plexSort::m#1 plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ] ] with [ zp[1]:21 [ font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 font_2x2::c#11 font_2x2::c#1 ] ]
|
|
Coalescing zero page register [ zp[2]:84 [ plex_move::$7 ] ] with [ zp[2]:22 [ font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ] ]
|
|
Coalescing zero page register [ zp[1]:87 [ plexSort::nxt_idx#0 font_2x2_to_sprites::$3 ] ] with [ zp[1]:35 [ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ] ]
|
|
Coalescing zero page register [ zp[1]:88 [ plexSort::nxt_y#0 ] ] with [ zp[1]:29 [ font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::sprite_idx#1 font_2x2::l#2 font_2x2::l#1 ] ]
|
|
Allocated (was zp[2]:24) zp[2]:3 [ font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::sprite#1 font_2x2::next_original#4 font_2x2::next_original#1 ]
|
|
Allocated (was zp[2]:27) zp[2]:5 [ font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::char_left#4 font_2x2_to_sprites::char_left#1 font_2x2::next_2x2_left#7 font_2x2::next_2x2_left#10 font_2x2::next_2x2_left#8 font_2x2::next_2x2_left#1 ]
|
|
Allocated (was zp[2]:30) zp[2]:7 [ font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_right#4 font_2x2_to_sprites::char_right#1 font_2x2::next_2x2_right#7 font_2x2::next_2x2_right#0 font_2x2::next_2x2_right#8 font_2x2::next_2x2_right#1 ]
|
|
Allocated (was zp[1]:33) zp[1]:9 [ y_sin_idx#11 y_sin_idx#13 ]
|
|
Allocated (was zp[1]:34) zp[1]:10 [ x_movement_idx#11 x_movement_idx#13 ]
|
|
Allocated (was zp[1]:36) zp[1]:11 [ plex_move::s#2 plex_move::s#1 font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ]
|
|
Allocated (was zp[2]:38) zp[2]:12 [ scroll_text_next#13 scroll_text_next#12 scroll_text_next#27 scroll_text_next#14 scroll_text_next#3 ]
|
|
Allocated (was zp[1]:40) zp[1]:14 [ plexSort::m#2 plexSort::m#1 plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 font_2x2::c#11 font_2x2::c#1 ]
|
|
Allocated (was zp[2]:43) zp[2]:15 [ PLEX_SCREEN_PTR ]
|
|
Allocated (was zp[1]:45) zp[1]:17 [ plex_show_idx ]
|
|
Allocated (was zp[1]:46) zp[1]:18 [ plex_sprite_idx ]
|
|
Allocated (was zp[1]:47) zp[1]:19 [ plex_sprite_msb ]
|
|
Allocated (was zp[1]:48) zp[1]:20 [ plex_free_next ]
|
|
Allocated (was zp[1]:49) zp[1]:21 [ frame_done ]
|
|
Allocated (was zp[1]:51) zp[1]:22 [ plex_irq::$4 ]
|
|
Allocated (was zp[2]:53) zp[2]:23 [ main::$13 font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 font_2x2::$5 font_2x2::$7 font_2x2::glyph_bits_2x2#1 ]
|
|
Allocated (was zp[1]:55) zp[1]:25 [ plexShowSprite::plex_sprite_idx2#0 ]
|
|
Allocated (was zp[2]:84) zp[2]:26 [ plex_move::$7 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ]
|
|
Allocated (was zp[1]:87) zp[1]:28 [ plexSort::nxt_idx#0 font_2x2_to_sprites::$3 plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ]
|
|
Allocated (was zp[1]:88) zp[1]:29 [ plexSort::nxt_y#0 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::sprite_idx#1 font_2x2::l#2 font_2x2::l#1 ]
|
|
|
|
ASSEMBLER BEFORE OPTIMIZATION
|
|
// File Comments
|
|
// Put a 2x2 font into sprites and show it on screen
|
|
// Commodore 64 Registers and Constants
|
|
// The MOS 6526 Complex Interface Adapter (CIA)
|
|
// http://archive.6502.org/datasheets/mos_6526_cia_recreated.pdf
|
|
// Upstart
|
|
// Commodore 64 PRG executable file
|
|
.file [name="spritescroller.prg", type="prg", segments="Program"]
|
|
.segmentdef Program [segments="Basic, Code, Data"]
|
|
.segmentdef Basic [start=$0801]
|
|
.segmentdef Code [start=$80d]
|
|
.segmentdef Data [startAfter="Code"]
|
|
.segment Basic
|
|
:BasicUpstart(__start)
|
|
// Global Constants & labels
|
|
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
|
.const CIA_INTERRUPT_CLEAR = $7f
|
|
// Bits for the VICII IRQ Status/Enable Registers
|
|
.const IRQ_RASTER = 1
|
|
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
|
.const PROCPORT_RAM_CHARROM = 1
|
|
// BASIC in 0xA000, I/O in 0xD000, KERNEL in 0xE000
|
|
.const PROCPORT_BASIC_KERNEL_IO = 7
|
|
.const WHITE = 1
|
|
// The number of sprites in the multiplexer
|
|
.const PLEX_COUNT = $20
|
|
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
|
// Sprite pointer for sprite 0
|
|
.const SPRITE_0 = SPRITES/$40
|
|
.label SPRITES_XPOS = $d000
|
|
.label SPRITES_YPOS = $d001
|
|
.label SPRITES_XMSB = $d010
|
|
.label SPRITES_COLOR = $d027
|
|
.label SPRITES_ENABLE = $d015
|
|
.label RASTER = $d012
|
|
.label VIC_CONTROL = $d011
|
|
.label D018 = $d018
|
|
// VIC II IRQ Status Register
|
|
.label IRQ_STATUS = $d019
|
|
// VIC II IRQ Enable Register
|
|
.label IRQ_ENABLE = $d01a
|
|
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
|
.label PROCPORT = 1
|
|
// The address of the CHARGEN character set
|
|
.label CHARGEN = $d000
|
|
// The CIA#1: keyboard matrix, joystick #1/#2
|
|
.label CIA1 = $dc00
|
|
// The vector used when the KERNAL serves IRQ interrupts
|
|
.label KERNEL_IRQ = $314
|
|
.label CHARSET_DEFAULT = $1000
|
|
.label SPRITES = $3000
|
|
.label SCREEN = $400
|
|
// The high-value table
|
|
.label XMOVEMENT_HI = XMOVEMENT+$100
|
|
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
|
.label PLEX_SCREEN_PTR = $f
|
|
// The index in the PLEX tables of the next sprite to show
|
|
.label plex_show_idx = $11
|
|
// The index the next sprite to use for showing (sprites are used round-robin)
|
|
.label plex_sprite_idx = $12
|
|
// The MSB bit of the next sprite to use for showing
|
|
.label plex_sprite_msb = $13
|
|
// The index of the sprite that is free next. Since sprites are used round-robin this moves forward each time a sprite is shown.
|
|
.label plex_free_next = $14
|
|
// Signal used between IRQ and main loop. Set to true when the IRQ is done showing the sprites.
|
|
.label frame_done = $15
|
|
// The next char to use from the scroll text
|
|
.label scroll_text_next = $c
|
|
// Y-sine index
|
|
.label y_sin_idx = 9
|
|
// X-movement index
|
|
.label x_movement_idx = $a
|
|
.segment Code
|
|
// __start
|
|
__start: {
|
|
jmp __init1
|
|
// __start::__init1
|
|
__init1:
|
|
// [1] PLEX_SCREEN_PTR = (byte*)$400+$3f8 -- pbuz1=pbuc1
|
|
lda #<$400+$3f8
|
|
sta.z PLEX_SCREEN_PTR
|
|
lda #>$400+$3f8
|
|
sta.z PLEX_SCREEN_PTR+1
|
|
// [2] plex_show_idx = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z plex_show_idx
|
|
// [3] plex_sprite_idx = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z plex_sprite_idx
|
|
// [4] plex_sprite_msb = 1 -- vbuz1=vbuc1
|
|
lda #1
|
|
sta.z plex_sprite_msb
|
|
// [5] plex_free_next = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z plex_free_next
|
|
// [6] phi from __start::__init1 to __start::__init1_toSpritePtr1 [phi:__start::__init1->__start::__init1_toSpritePtr1]
|
|
__init1_toSpritePtr1_from___init1:
|
|
jmp __init1_toSpritePtr1
|
|
// __start::__init1_toSpritePtr1
|
|
__init1_toSpritePtr1:
|
|
jmp __init1___b1
|
|
// __start::__init1_@1
|
|
__init1___b1:
|
|
// [7] frame_done = false -- vboz1=vboc1
|
|
lda #0
|
|
sta.z frame_done
|
|
// [8] phi from __start::__init1_@1 to __start::@1 [phi:__start::__init1_@1->__start::@1]
|
|
__b1_from___init1___b1:
|
|
jmp __b1
|
|
// __start::@1
|
|
__b1:
|
|
// [9] call main
|
|
jsr main
|
|
jmp __breturn
|
|
// __start::@return
|
|
__breturn:
|
|
// [10] return
|
|
rts
|
|
}
|
|
// plex_irq
|
|
// Show sprites from the multiplexer, rescheduling the IRQ as many times as needed
|
|
plex_irq: {
|
|
.label __4 = $16
|
|
// interrupt(isr_rom_min_c64_entry) -- isr_rom_min_c64_entry
|
|
// asm { sei }
|
|
sei
|
|
// [12] phi from plex_irq plex_irq::@7 to plex_irq::@3 [phi:plex_irq/plex_irq::@7->plex_irq::@3]
|
|
__b3_from_plex_irq:
|
|
__b3_from___b7:
|
|
jmp __b3
|
|
// plex_irq::@3
|
|
__b3:
|
|
// [13] call plexShowSprite
|
|
jsr plexShowSprite
|
|
jmp plexFreeNextYpos1
|
|
// plex_irq::plexFreeNextYpos1
|
|
plexFreeNextYpos1:
|
|
// [14] plex_irq::plexFreeNextYpos1_return#0 = PLEX_FREE_YPOS[plex_free_next] -- vbuxx=pbuc1_derefidx_vbuz1
|
|
ldy.z plex_free_next
|
|
ldx PLEX_FREE_YPOS,y
|
|
jmp __b6
|
|
// plex_irq::@6
|
|
__b6:
|
|
// [15] plex_irq::$4 = *RASTER + 3 -- vbuz1=_deref_pbuc1_plus_vbuc2
|
|
lda #3
|
|
clc
|
|
adc RASTER
|
|
sta.z __4
|
|
// [16] if(plex_show_idx>=PLEX_COUNT) goto plex_irq::@4 -- vbuz1_ge_vbuc1_then_la1
|
|
lda.z plex_show_idx
|
|
cmp #PLEX_COUNT
|
|
bcs __b4
|
|
jmp __b7
|
|
// plex_irq::@7
|
|
__b7:
|
|
// [17] if(plex_irq::plexFreeNextYpos1_return#0<plex_irq::$4) goto plex_irq::@3 -- vbuxx_lt_vbuz1_then_la1
|
|
cpx.z __4
|
|
bcc __b3_from___b7
|
|
jmp __b4
|
|
// plex_irq::@4
|
|
__b4:
|
|
// [18] if(plex_show_idx<PLEX_COUNT) goto plex_irq::@1 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z plex_show_idx
|
|
cmp #PLEX_COUNT
|
|
bcc __b1
|
|
jmp __b5
|
|
// plex_irq::@5
|
|
__b5:
|
|
// [19] *RASTER = $28 -- _deref_pbuc1=vbuc2
|
|
// Reset the raster IRQ to the top of the screen
|
|
lda #$28
|
|
sta RASTER
|
|
// [20] frame_done = true -- vboz1=vboc1
|
|
// Signal that the IRQ is done showing sprites
|
|
lda #1
|
|
sta.z frame_done
|
|
jmp __b2
|
|
// plex_irq::@2
|
|
__b2:
|
|
// [21] *IRQ_STATUS = IRQ_RASTER -- _deref_pbuc1=vbuc2
|
|
// Acknowledge the IRQ
|
|
lda #IRQ_RASTER
|
|
sta IRQ_STATUS
|
|
// asm { cli }
|
|
//*BORDER_COLOR = 0;
|
|
cli
|
|
jmp __breturn
|
|
// plex_irq::@return
|
|
__breturn:
|
|
// [23] return
|
|
// interrupt(isr_rom_min_c64_exit) -- isr_rom_min_c64_exit
|
|
jmp $ea81
|
|
// plex_irq::@1
|
|
__b1:
|
|
// [24] *RASTER = plex_irq::plexFreeNextYpos1_return#0 -- _deref_pbuc1=vbuxx
|
|
// Set raster IRQ line to the next sprite Y-position
|
|
stx RASTER
|
|
jmp __b2
|
|
}
|
|
// main
|
|
main: {
|
|
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET_DEFAULT)/4&$f
|
|
.label s = 2
|
|
.label __13 = $17
|
|
// asm { sei }
|
|
// Create 2x2 font from CHARGEN
|
|
sei
|
|
// [26] *PROCPORT = PROCPORT_RAM_CHARROM -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_CHARROM
|
|
sta PROCPORT
|
|
// [27] call font_2x2
|
|
// [91] phi from main to font_2x2 [phi:main->font_2x2]
|
|
font_2x2_from_main:
|
|
jsr font_2x2
|
|
jmp __b9
|
|
// main::@9
|
|
__b9:
|
|
// [28] *PROCPORT = PROCPORT_BASIC_KERNEL_IO -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_BASIC_KERNEL_IO
|
|
sta PROCPORT
|
|
// asm { cli }
|
|
cli
|
|
// [30] call font_2x2_to_sprites
|
|
// Convert font to sprites
|
|
// [131] phi from main::@9 to font_2x2_to_sprites [phi:main::@9->font_2x2_to_sprites]
|
|
font_2x2_to_sprites_from___b9:
|
|
jsr font_2x2_to_sprites
|
|
// [31] phi from main::@9 to main::@10 [phi:main::@9->main::@10]
|
|
__b10_from___b9:
|
|
jmp __b10
|
|
// main::@10
|
|
__b10:
|
|
// [32] call plexInit
|
|
// Initialize the multiplexer
|
|
// [156] phi from main::@10 to plexInit [phi:main::@10->plexInit]
|
|
plexInit_from___b10:
|
|
jsr plexInit
|
|
// [33] phi from main::@10 to main::toD0181 [phi:main::@10->main::toD0181]
|
|
toD0181_from___b10:
|
|
jmp toD0181
|
|
// main::toD0181
|
|
toD0181:
|
|
jmp __b8
|
|
// main::@8
|
|
__b8:
|
|
// [34] *D018 = main::toD0181_return#0 -- _deref_pbuc1=vbuc2
|
|
// Show screen
|
|
lda #toD0181_return
|
|
sta D018
|
|
// [35] phi from main::@8 to main::@1 [phi:main::@8->main::@1]
|
|
__b1_from___b8:
|
|
// [35] phi main::x#2 = 0 [phi:main::@8->main::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [35] phi main::s#2 = 0 [phi:main::@8->main::@1#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z s
|
|
jmp __b1
|
|
// Set the x-positions & pointers
|
|
// main::@1
|
|
__b1:
|
|
// [36] if(main::s#2<PLEX_COUNT) goto main::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z s
|
|
cmp #PLEX_COUNT
|
|
bcc __b2
|
|
jmp __b3
|
|
// main::@3
|
|
__b3:
|
|
// [37] *SPRITES_ENABLE = $ff -- _deref_pbuc1=vbuc2
|
|
// Enable & initialize sprites
|
|
lda #$ff
|
|
sta SPRITES_ENABLE
|
|
// [38] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
|
|
__b4_from___b3:
|
|
// [38] phi main::s1#2 = 0 [phi:main::@3->main::@4#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp __b4
|
|
// [38] phi from main::@4 to main::@4 [phi:main::@4->main::@4]
|
|
__b4_from___b4:
|
|
// [38] phi main::s1#2 = main::s1#1 [phi:main::@4->main::@4#0] -- register_copy
|
|
jmp __b4
|
|
// main::@4
|
|
__b4:
|
|
// [39] SPRITES_COLOR[main::s1#2] = WHITE -- pbuc1_derefidx_vbuxx=vbuc2
|
|
lda #WHITE
|
|
sta SPRITES_COLOR,x
|
|
// [40] main::s1#1 = ++ main::s1#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [41] if(main::s1#1!=8) goto main::@4 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #8
|
|
bne __b4_from___b4
|
|
// [42] phi from main::@4 to main::@5 [phi:main::@4->main::@5]
|
|
__b5_from___b4:
|
|
jmp __b5
|
|
// main::@5
|
|
__b5:
|
|
// [43] call plex_move
|
|
// Move the sprites
|
|
// [163] phi from main::@5 to plex_move [phi:main::@5->plex_move]
|
|
plex_move_from___b5:
|
|
// [163] phi scroll_text_next#27 = SCROLL_TEXT [phi:main::@5->plex_move#0] -- pbuz1=pbuc1
|
|
lda #<SCROLL_TEXT
|
|
sta.z scroll_text_next
|
|
lda #>SCROLL_TEXT
|
|
sta.z scroll_text_next+1
|
|
// [163] phi x_movement_idx#11 = 0 [phi:main::@5->plex_move#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z x_movement_idx
|
|
// [163] phi y_sin_idx#11 = 0 [phi:main::@5->plex_move#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z y_sin_idx
|
|
jsr plex_move
|
|
// [44] phi from main::@5 to main::@11 [phi:main::@5->main::@11]
|
|
__b11_from___b5:
|
|
jmp __b11
|
|
// main::@11
|
|
__b11:
|
|
// [45] call plexSort
|
|
// Sort the sprites by y-position
|
|
// [186] phi from main::@11 to plexSort [phi:main::@11->plexSort]
|
|
plexSort_from___b11:
|
|
jsr plexSort
|
|
jmp __b12
|
|
// main::@12
|
|
__b12:
|
|
// asm { sei }
|
|
// Enable the plex IRQ
|
|
sei
|
|
// [47] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
|
|
// Disable CIA 1 Timer IRQ
|
|
lda #CIA_INTERRUPT_CLEAR
|
|
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
|
|
// [48] *VIC_CONTROL = *VIC_CONTROL & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
|
// Set raster line to 0x00
|
|
lda #$7f
|
|
and VIC_CONTROL
|
|
sta VIC_CONTROL
|
|
// [49] *RASTER = $28 -- _deref_pbuc1=vbuc2
|
|
lda #$28
|
|
sta RASTER
|
|
// [50] *IRQ_ENABLE = IRQ_RASTER -- _deref_pbuc1=vbuc2
|
|
// Enable Raster Interrupt
|
|
lda #IRQ_RASTER
|
|
sta IRQ_ENABLE
|
|
// [51] *IRQ_STATUS = IRQ_RASTER -- _deref_pbuc1=vbuc2
|
|
// Acknowledge any IRQ
|
|
lda #IRQ_RASTER
|
|
sta IRQ_STATUS
|
|
// [52] *KERNEL_IRQ = &plex_irq -- _deref_qprc1=pprc2
|
|
// Set the IRQ routine
|
|
lda #<plex_irq
|
|
sta KERNEL_IRQ
|
|
lda #>plex_irq
|
|
sta KERNEL_IRQ+1
|
|
// asm { cli }
|
|
cli
|
|
jmp __b6
|
|
// main::@6
|
|
__b6:
|
|
// [54] if(frame_done) goto main::@7 -- vboz1_then_la1
|
|
lda.z frame_done
|
|
cmp #0
|
|
bne __b7
|
|
jmp __b6
|
|
// main::@7
|
|
__b7:
|
|
// [55] frame_done = false -- vboz1=vboc1
|
|
lda #0
|
|
sta.z frame_done
|
|
// [56] call plex_move
|
|
//*BORDER_COLOR = RED;
|
|
// Move the sprites
|
|
// [163] phi from main::@7 to plex_move [phi:main::@7->plex_move]
|
|
plex_move_from___b7:
|
|
// [163] phi scroll_text_next#27 = scroll_text_next#14 [phi:main::@7->plex_move#0] -- register_copy
|
|
// [163] phi x_movement_idx#11 = x_movement_idx#13 [phi:main::@7->plex_move#1] -- register_copy
|
|
// [163] phi y_sin_idx#11 = y_sin_idx#13 [phi:main::@7->plex_move#2] -- register_copy
|
|
jsr plex_move
|
|
// [57] phi from main::@7 to main::@13 [phi:main::@7->main::@13]
|
|
__b13_from___b7:
|
|
jmp __b13
|
|
// main::@13
|
|
__b13:
|
|
// [58] call plexSort
|
|
// Sort the sprites by y-position
|
|
// [186] phi from main::@13 to plexSort [phi:main::@13->plexSort]
|
|
plexSort_from___b13:
|
|
jsr plexSort
|
|
jmp __b6
|
|
// main::@2
|
|
__b2:
|
|
// [59] PLEX_PTR[main::s#2] = SPRITE_0#0+' ' -- pbuc1_derefidx_vbuz1=vbuc2
|
|
lda #SPRITE_0+' '
|
|
ldy.z s
|
|
sta PLEX_PTR,y
|
|
// [60] main::$12 = main::s#2 << 1 -- vbuyy=vbuz1_rol_1
|
|
lda.z s
|
|
asl
|
|
tay
|
|
// [61] main::$13 = XMOVEMENT_HI[main::x#2] w= XMOVEMENT[main::x#2] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
|
|
lda XMOVEMENT_HI,x
|
|
sta.z __13+1
|
|
lda XMOVEMENT,x
|
|
sta.z __13
|
|
// [62] PLEX_XPOS[main::$12] = main::$13 -- pwuc1_derefidx_vbuyy=vwuz1
|
|
lda.z __13
|
|
sta PLEX_XPOS,y
|
|
lda.z __13+1
|
|
sta PLEX_XPOS+1,y
|
|
// [63] main::x#1 = main::x#2 + 8 -- vbuxx=vbuxx_plus_vbuc1
|
|
txa
|
|
axs #-[8]
|
|
// [64] main::s#1 = ++ main::s#2 -- vbuz1=_inc_vbuz1
|
|
inc.z s
|
|
// [35] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
|
__b1_from___b2:
|
|
// [35] phi main::x#2 = main::x#1 [phi:main::@2->main::@1#0] -- register_copy
|
|
// [35] phi main::s#2 = main::s#1 [phi:main::@2->main::@1#1] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// plexShowSprite
|
|
// Show the next sprite.
|
|
// plexSort() prepares showing the sprites
|
|
plexShowSprite: {
|
|
.label plex_sprite_idx2 = $19
|
|
// [65] plexShowSprite::plex_sprite_idx2#0 = plex_sprite_idx << 1 -- vbuz1=vbuz2_rol_1
|
|
lda.z plex_sprite_idx
|
|
asl
|
|
sta.z plex_sprite_idx2
|
|
// [66] plexShowSprite::plexFreeAdd1_ypos#0 = PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]] -- vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuz1)
|
|
ldx.z plex_show_idx
|
|
ldy PLEX_SORTED_IDX,x
|
|
lda PLEX_YPOS,y
|
|
// [67] SPRITES_YPOS[plexShowSprite::plex_sprite_idx2#0] = plexShowSprite::plexFreeAdd1_ypos#0 -- pbuc1_derefidx_vbuz1=vbuaa
|
|
ldy.z plex_sprite_idx2
|
|
sta SPRITES_YPOS,y
|
|
jmp plexFreeAdd1
|
|
// plexShowSprite::plexFreeAdd1
|
|
plexFreeAdd1:
|
|
// [68] plexShowSprite::plexFreeAdd1_$0 = plexShowSprite::plexFreeAdd1_ypos#0 + $16 -- vbuaa=vbuaa_plus_vbuc1
|
|
clc
|
|
adc #$16
|
|
// [69] PLEX_FREE_YPOS[plex_free_next] = plexShowSprite::plexFreeAdd1_$0 -- pbuc1_derefidx_vbuz1=vbuaa
|
|
ldy.z plex_free_next
|
|
sta PLEX_FREE_YPOS,y
|
|
// [70] plexShowSprite::plexFreeAdd1_$1 = plex_free_next + 1 -- vbuaa=vbuz1_plus_1
|
|
lda.z plex_free_next
|
|
clc
|
|
adc #1
|
|
// [71] plexShowSprite::plexFreeAdd1_$2 = plexShowSprite::plexFreeAdd1_$1 & 7 -- vbuaa=vbuaa_band_vbuc1
|
|
and #7
|
|
// [72] plex_free_next = plexShowSprite::plexFreeAdd1_$2 -- vbuz1=vbuaa
|
|
sta.z plex_free_next
|
|
jmp __b5
|
|
// plexShowSprite::@5
|
|
__b5:
|
|
// [73] PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]] -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_(pbuc2_derefidx_vbuz3)
|
|
ldx.z plex_show_idx
|
|
ldy PLEX_SORTED_IDX,x
|
|
lda PLEX_PTR,y
|
|
ldy.z plex_sprite_idx
|
|
sta (PLEX_SCREEN_PTR),y
|
|
// [74] plexShowSprite::xpos_idx#0 = PLEX_SORTED_IDX[plex_show_idx] -- vbuaa=pbuc1_derefidx_vbuz1
|
|
ldy.z plex_show_idx
|
|
lda PLEX_SORTED_IDX,y
|
|
// [75] plexShowSprite::$11 = plexShowSprite::xpos_idx#0 << 1 -- vbuxx=vbuaa_rol_1
|
|
asl
|
|
tax
|
|
// [76] plexShowSprite::$2 = < PLEX_XPOS[plexShowSprite::$11] -- vbuaa=_lo_pwuc1_derefidx_vbuxx
|
|
lda PLEX_XPOS,x
|
|
// [77] SPRITES_XPOS[plexShowSprite::plex_sprite_idx2#0] = plexShowSprite::$2 -- pbuc1_derefidx_vbuz1=vbuaa
|
|
ldy.z plex_sprite_idx2
|
|
sta SPRITES_XPOS,y
|
|
// [78] plexShowSprite::$3 = > PLEX_XPOS[plexShowSprite::$11] -- vbuaa=_hi_pwuc1_derefidx_vbuxx
|
|
lda PLEX_XPOS+1,x
|
|
// [79] if(plexShowSprite::$3!=0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1
|
|
cmp #0
|
|
bne __b1
|
|
jmp __b3
|
|
// plexShowSprite::@3
|
|
__b3:
|
|
// [80] plexShowSprite::$9 = $ff ^ plex_sprite_msb -- vbuaa=vbuc1_bxor_vbuz1
|
|
lda #$ff
|
|
eor.z plex_sprite_msb
|
|
// [81] *SPRITES_XMSB = *SPRITES_XMSB & plexShowSprite::$9 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa
|
|
and SPRITES_XMSB
|
|
sta SPRITES_XMSB
|
|
jmp __b2
|
|
// plexShowSprite::@2
|
|
__b2:
|
|
// [82] plexShowSprite::$5 = plex_sprite_idx + 1 -- vbuxx=vbuz1_plus_1
|
|
ldx.z plex_sprite_idx
|
|
inx
|
|
// [83] plexShowSprite::$6 = plexShowSprite::$5 & 7 -- vbuaa=vbuxx_band_vbuc1
|
|
txa
|
|
and #7
|
|
// [84] plex_sprite_idx = plexShowSprite::$6 -- vbuz1=vbuaa
|
|
sta.z plex_sprite_idx
|
|
// [85] plex_show_idx = ++ plex_show_idx -- vbuz1=_inc_vbuz1
|
|
inc.z plex_show_idx
|
|
// [86] plex_sprite_msb = plex_sprite_msb << 1 -- vbuz1=vbuz1_rol_1
|
|
asl.z plex_sprite_msb
|
|
// [87] if(plex_sprite_msb!=0) goto plexShowSprite::@return -- vbuz1_neq_0_then_la1
|
|
lda.z plex_sprite_msb
|
|
cmp #0
|
|
bne __breturn
|
|
jmp __b4
|
|
// plexShowSprite::@4
|
|
__b4:
|
|
// [88] plex_sprite_msb = 1 -- vbuz1=vbuc1
|
|
lda #1
|
|
sta.z plex_sprite_msb
|
|
jmp __breturn
|
|
// plexShowSprite::@return
|
|
__breturn:
|
|
// [89] return
|
|
rts
|
|
// plexShowSprite::@1
|
|
__b1:
|
|
// [90] *SPRITES_XMSB = *SPRITES_XMSB | plex_sprite_msb -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1
|
|
lda SPRITES_XMSB
|
|
ora.z plex_sprite_msb
|
|
sta SPRITES_XMSB
|
|
jmp __b2
|
|
}
|
|
// font_2x2
|
|
// Create a 2x2-font by doubling all pixels of the 64 first chars
|
|
// The font layout is:
|
|
// - 0x00 - 0x3f Upper left glyphs
|
|
// - 0x40 - 0x7f Upper right glyphs
|
|
// - 0x80 - 0xbf Lower left glyphs
|
|
// - 0xc0 - 0xff Lower right glyphs
|
|
font_2x2: {
|
|
.label __5 = $17
|
|
.label __7 = $17
|
|
.label next_2x2_left = $1a
|
|
.label next_2x2_right = 7
|
|
.label glyph_bits = $b
|
|
.label glyph_bits_2x2 = $17
|
|
.label l2 = $1c
|
|
.label l = $1d
|
|
.label next_2x2_left_1 = 5
|
|
.label next_2x2 = $1a
|
|
.label next_original = 3
|
|
.label c = $e
|
|
// [92] phi from font_2x2 to font_2x2::@1 [phi:font_2x2->font_2x2::@1]
|
|
__b1_from_font_2x2:
|
|
// [92] phi font_2x2::c#11 = 0 [phi:font_2x2->font_2x2::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z c
|
|
// [92] phi font_2x2::next_original#4 = CHARGEN [phi:font_2x2->font_2x2::@1#1] -- pbuz1=pbuc1
|
|
lda #<CHARGEN
|
|
sta.z next_original
|
|
lda #>CHARGEN
|
|
sta.z next_original+1
|
|
// [92] phi font_2x2::next_2x2_left#0 = FONT [phi:font_2x2->font_2x2::@1#2] -- pbuz1=pbuc1
|
|
lda #<FONT
|
|
sta.z next_2x2_left
|
|
lda #>FONT
|
|
sta.z next_2x2_left+1
|
|
jmp __b1
|
|
// [92] phi from font_2x2::@9 to font_2x2::@1 [phi:font_2x2::@9->font_2x2::@1]
|
|
__b1_from___b9:
|
|
// [92] phi font_2x2::c#11 = font_2x2::c#1 [phi:font_2x2::@9->font_2x2::@1#0] -- register_copy
|
|
// [92] phi font_2x2::next_original#4 = font_2x2::next_original#1 [phi:font_2x2::@9->font_2x2::@1#1] -- register_copy
|
|
// [92] phi font_2x2::next_2x2_left#0 = font_2x2::next_2x2#1 [phi:font_2x2::@9->font_2x2::@1#2] -- register_copy
|
|
jmp __b1
|
|
// font_2x2::@1
|
|
__b1:
|
|
// [93] font_2x2::next_2x2_right#0 = font_2x2::next_2x2_left#0 + (word)$40*8 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z next_2x2_left
|
|
adc #<$40*8
|
|
sta.z next_2x2_right
|
|
lda.z next_2x2_left+1
|
|
adc #>$40*8
|
|
sta.z next_2x2_right+1
|
|
// [94] font_2x2::next_2x2_left#10 = font_2x2::next_2x2_left#0 -- pbuz1=pbuz2
|
|
lda.z next_2x2_left
|
|
sta.z next_2x2_left_1
|
|
lda.z next_2x2_left+1
|
|
sta.z next_2x2_left_1+1
|
|
// [95] phi from font_2x2::@1 to font_2x2::@2 [phi:font_2x2::@1->font_2x2::@2]
|
|
__b2_from___b1:
|
|
// [95] phi font_2x2::next_2x2_right#7 = font_2x2::next_2x2_right#0 [phi:font_2x2::@1->font_2x2::@2#0] -- register_copy
|
|
// [95] phi font_2x2::l2#8 = 0 [phi:font_2x2::@1->font_2x2::@2#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z l2
|
|
// [95] phi font_2x2::next_2x2_left#7 = font_2x2::next_2x2_left#10 [phi:font_2x2::@1->font_2x2::@2#2] -- register_copy
|
|
// [95] phi font_2x2::l#2 = 0 [phi:font_2x2::@1->font_2x2::@2#3] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z l
|
|
jmp __b2
|
|
// [95] phi from font_2x2::@8 to font_2x2::@2 [phi:font_2x2::@8->font_2x2::@2]
|
|
__b2_from___b8:
|
|
// [95] phi font_2x2::next_2x2_right#7 = font_2x2::next_2x2_right#8 [phi:font_2x2::@8->font_2x2::@2#0] -- register_copy
|
|
// [95] phi font_2x2::l2#8 = font_2x2::l2#9 [phi:font_2x2::@8->font_2x2::@2#1] -- register_copy
|
|
// [95] phi font_2x2::next_2x2_left#7 = font_2x2::next_2x2_left#8 [phi:font_2x2::@8->font_2x2::@2#2] -- register_copy
|
|
// [95] phi font_2x2::l#2 = font_2x2::l#1 [phi:font_2x2::@8->font_2x2::@2#3] -- register_copy
|
|
jmp __b2
|
|
// font_2x2::@2
|
|
__b2:
|
|
// [96] font_2x2::glyph_bits#0 = font_2x2::next_original#4[font_2x2::l#2] -- vbuz1=pbuz2_derefidx_vbuz3
|
|
ldy.z l
|
|
lda (next_original),y
|
|
sta.z glyph_bits
|
|
// [97] phi from font_2x2::@2 to font_2x2::@3 [phi:font_2x2::@2->font_2x2::@3]
|
|
__b3_from___b2:
|
|
// [97] phi font_2x2::b#2 = 0 [phi:font_2x2::@2->font_2x2::@3#0] -- vbuyy=vbuc1
|
|
ldy #0
|
|
// [97] phi font_2x2::glyph_bits_2x2#3 = 0 [phi:font_2x2::@2->font_2x2::@3#1] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z glyph_bits_2x2
|
|
lda #>0
|
|
sta.z glyph_bits_2x2+1
|
|
// [97] phi font_2x2::glyph_bits#2 = font_2x2::glyph_bits#0 [phi:font_2x2::@2->font_2x2::@3#2] -- register_copy
|
|
jmp __b3
|
|
// [97] phi from font_2x2::@5 to font_2x2::@3 [phi:font_2x2::@5->font_2x2::@3]
|
|
__b3_from___b5:
|
|
// [97] phi font_2x2::b#2 = font_2x2::b#1 [phi:font_2x2::@5->font_2x2::@3#0] -- register_copy
|
|
// [97] phi font_2x2::glyph_bits_2x2#3 = font_2x2::glyph_bits_2x2#2 [phi:font_2x2::@5->font_2x2::@3#1] -- register_copy
|
|
// [97] phi font_2x2::glyph_bits#2 = font_2x2::glyph_bits#1 [phi:font_2x2::@5->font_2x2::@3#2] -- register_copy
|
|
jmp __b3
|
|
// font_2x2::@3
|
|
__b3:
|
|
// [98] font_2x2::$1 = font_2x2::glyph_bits#2 & $80 -- vbuaa=vbuz1_band_vbuc1
|
|
lda #$80
|
|
and.z glyph_bits
|
|
// [99] if(0!=font_2x2::$1) goto font_2x2::@4 -- 0_neq_vbuaa_then_la1
|
|
cmp #0
|
|
bne __b4_from___b3
|
|
// [101] phi from font_2x2::@3 to font_2x2::@5 [phi:font_2x2::@3->font_2x2::@5]
|
|
__b5_from___b3:
|
|
// [101] phi font_2x2::glyph_bit#0 = 0 [phi:font_2x2::@3->font_2x2::@5#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp __b5
|
|
// [100] phi from font_2x2::@3 to font_2x2::@4 [phi:font_2x2::@3->font_2x2::@4]
|
|
__b4_from___b3:
|
|
jmp __b4
|
|
// font_2x2::@4
|
|
__b4:
|
|
// [101] phi from font_2x2::@4 to font_2x2::@5 [phi:font_2x2::@4->font_2x2::@5]
|
|
__b5_from___b4:
|
|
// [101] phi font_2x2::glyph_bit#0 = 1 [phi:font_2x2::@4->font_2x2::@5#0] -- vbuxx=vbuc1
|
|
ldx #1
|
|
jmp __b5
|
|
// font_2x2::@5
|
|
__b5:
|
|
// [102] font_2x2::$5 = font_2x2::glyph_bits_2x2#3 << 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z __5
|
|
rol.z __5+1
|
|
// [103] font_2x2::glyph_bits_2x2#1 = font_2x2::$5 | font_2x2::glyph_bit#0 -- vwuz1=vwuz1_bor_vbuxx
|
|
txa
|
|
ora.z glyph_bits_2x2
|
|
sta.z glyph_bits_2x2
|
|
// [104] font_2x2::$7 = font_2x2::glyph_bits_2x2#1 << 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z __7
|
|
rol.z __7+1
|
|
// [105] font_2x2::glyph_bits_2x2#2 = font_2x2::$7 | font_2x2::glyph_bit#0 -- vwuz1=vwuz1_bor_vbuxx
|
|
txa
|
|
ora.z glyph_bits_2x2
|
|
sta.z glyph_bits_2x2
|
|
// [106] font_2x2::glyph_bits#1 = font_2x2::glyph_bits#2 << 1 -- vbuz1=vbuz1_rol_1
|
|
// Move to next bit
|
|
asl.z glyph_bits
|
|
// [107] font_2x2::b#1 = ++ font_2x2::b#2 -- vbuyy=_inc_vbuyy
|
|
iny
|
|
// [108] if(font_2x2::b#1!=8) goto font_2x2::@3 -- vbuyy_neq_vbuc1_then_la1
|
|
cpy #8
|
|
bne __b3_from___b5
|
|
jmp __b6
|
|
// font_2x2::@6
|
|
__b6:
|
|
// [109] font_2x2::$10 = > font_2x2::glyph_bits_2x2#2 -- vbuaa=_hi_vwuz1
|
|
lda.z glyph_bits_2x2+1
|
|
// [110] font_2x2::next_2x2_left#7[font_2x2::l2#8] = font_2x2::$10 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
// Put the generated 2x2-line into the 2x2-font twice
|
|
ldy.z l2
|
|
sta (next_2x2_left_1),y
|
|
// [111] font_2x2::$11 = font_2x2::l2#8 + 1 -- vbuyy=vbuz1_plus_1
|
|
ldy.z l2
|
|
iny
|
|
// [112] font_2x2::$12 = > font_2x2::glyph_bits_2x2#2 -- vbuaa=_hi_vwuz1
|
|
lda.z glyph_bits_2x2+1
|
|
// [113] font_2x2::next_2x2_left#7[font_2x2::$11] = font_2x2::$12 -- pbuz1_derefidx_vbuyy=vbuaa
|
|
sta (next_2x2_left_1),y
|
|
// [114] font_2x2::$13 = < font_2x2::glyph_bits_2x2#2 -- vbuaa=_lo_vwuz1
|
|
lda.z glyph_bits_2x2
|
|
// [115] font_2x2::next_2x2_right#7[font_2x2::l2#8] = font_2x2::$13 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z l2
|
|
sta (next_2x2_right),y
|
|
// [116] font_2x2::$14 = font_2x2::l2#8 + 1 -- vbuyy=vbuz1_plus_1
|
|
ldy.z l2
|
|
iny
|
|
// [117] font_2x2::$15 = < font_2x2::glyph_bits_2x2#2 -- vbuaa=_lo_vwuz1
|
|
lda.z glyph_bits_2x2
|
|
// [118] font_2x2::next_2x2_right#7[font_2x2::$14] = font_2x2::$15 -- pbuz1_derefidx_vbuyy=vbuaa
|
|
sta (next_2x2_right),y
|
|
// [119] font_2x2::l2#1 = font_2x2::l2#8 + 2 -- vbuz1=vbuz1_plus_2
|
|
lda.z l2
|
|
clc
|
|
adc #2
|
|
sta.z l2
|
|
// [120] if(font_2x2::l2#1!=8) goto font_2x2::@8 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #8
|
|
cmp.z l2
|
|
bne __b8_from___b6
|
|
jmp __b7
|
|
// font_2x2::@7
|
|
__b7:
|
|
// [121] font_2x2::next_2x2_left#1 = font_2x2::next_2x2_left#0 + (word)$80*8 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z next_2x2_left
|
|
adc #<$80*8
|
|
sta.z next_2x2_left_1
|
|
lda.z next_2x2_left+1
|
|
adc #>$80*8
|
|
sta.z next_2x2_left_1+1
|
|
// [122] font_2x2::next_2x2_right#1 = font_2x2::next_2x2_left#0 + (word)$c0*8 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z next_2x2_left
|
|
adc #<$c0*8
|
|
sta.z next_2x2_right
|
|
lda.z next_2x2_left+1
|
|
adc #>$c0*8
|
|
sta.z next_2x2_right+1
|
|
// [123] phi from font_2x2::@7 to font_2x2::@8 [phi:font_2x2::@7->font_2x2::@8]
|
|
__b8_from___b7:
|
|
// [123] phi font_2x2::next_2x2_right#8 = font_2x2::next_2x2_right#1 [phi:font_2x2::@7->font_2x2::@8#0] -- register_copy
|
|
// [123] phi font_2x2::l2#9 = 0 [phi:font_2x2::@7->font_2x2::@8#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z l2
|
|
// [123] phi font_2x2::next_2x2_left#8 = font_2x2::next_2x2_left#1 [phi:font_2x2::@7->font_2x2::@8#2] -- register_copy
|
|
jmp __b8
|
|
// [123] phi from font_2x2::@6 to font_2x2::@8 [phi:font_2x2::@6->font_2x2::@8]
|
|
__b8_from___b6:
|
|
// [123] phi font_2x2::next_2x2_right#8 = font_2x2::next_2x2_right#7 [phi:font_2x2::@6->font_2x2::@8#0] -- register_copy
|
|
// [123] phi font_2x2::l2#9 = font_2x2::l2#1 [phi:font_2x2::@6->font_2x2::@8#1] -- register_copy
|
|
// [123] phi font_2x2::next_2x2_left#8 = font_2x2::next_2x2_left#7 [phi:font_2x2::@6->font_2x2::@8#2] -- register_copy
|
|
jmp __b8
|
|
// font_2x2::@8
|
|
__b8:
|
|
// [124] font_2x2::l#1 = ++ font_2x2::l#2 -- vbuz1=_inc_vbuz1
|
|
inc.z l
|
|
// [125] if(font_2x2::l#1!=8) goto font_2x2::@2 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #8
|
|
cmp.z l
|
|
bne __b2_from___b8
|
|
jmp __b9
|
|
// font_2x2::@9
|
|
__b9:
|
|
// [126] font_2x2::next_2x2#1 = font_2x2::next_2x2_left#0 + 8 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #8
|
|
clc
|
|
adc.z next_2x2
|
|
sta.z next_2x2
|
|
bcc !+
|
|
inc.z next_2x2+1
|
|
!:
|
|
// [127] font_2x2::next_original#1 = font_2x2::next_original#4 + 8 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #8
|
|
clc
|
|
adc.z next_original
|
|
sta.z next_original
|
|
bcc !+
|
|
inc.z next_original+1
|
|
!:
|
|
// [128] font_2x2::c#1 = ++ font_2x2::c#11 -- vbuz1=_inc_vbuz1
|
|
inc.z c
|
|
// [129] if(font_2x2::c#1!=$40) goto font_2x2::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$40
|
|
cmp.z c
|
|
bne __b1_from___b9
|
|
jmp __breturn
|
|
// font_2x2::@return
|
|
__breturn:
|
|
// [130] return
|
|
rts
|
|
}
|
|
// font_2x2_to_sprites
|
|
// Convert a 2x2-font to sprites
|
|
// - font_2x2 The source 2x2-font
|
|
// - sprites The destination sprites
|
|
// - num_chars The number of chars to convert
|
|
font_2x2_to_sprites: {
|
|
.const num_chars = $40
|
|
.label __3 = $1c
|
|
.label char_right = 7
|
|
.label sprite_idx = $1d
|
|
.label char_left = 5
|
|
.label char_current = $1a
|
|
.label sprite = 3
|
|
.label c = $e
|
|
// [132] phi from font_2x2_to_sprites to font_2x2_to_sprites::@1 [phi:font_2x2_to_sprites->font_2x2_to_sprites::@1]
|
|
__b1_from_font_2x2_to_sprites:
|
|
// [132] phi font_2x2_to_sprites::sprite#4 = SPRITES [phi:font_2x2_to_sprites->font_2x2_to_sprites::@1#0] -- pbuz1=pbuc1
|
|
lda #<SPRITES
|
|
sta.z sprite
|
|
lda #>SPRITES
|
|
sta.z sprite+1
|
|
// [132] phi font_2x2_to_sprites::char_current#2 = FONT [phi:font_2x2_to_sprites->font_2x2_to_sprites::@1#1] -- pbuz1=pbuc1
|
|
lda #<FONT
|
|
sta.z char_current
|
|
lda #>FONT
|
|
sta.z char_current+1
|
|
// [132] phi font_2x2_to_sprites::c#2 = 0 [phi:font_2x2_to_sprites->font_2x2_to_sprites::@1#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z c
|
|
jmp __b1
|
|
// font_2x2_to_sprites::@1
|
|
__b1:
|
|
// [133] if(font_2x2_to_sprites::c#2<font_2x2_to_sprites::num_chars#0) goto font_2x2_to_sprites::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z c
|
|
cmp #num_chars
|
|
bcc __b2
|
|
jmp __breturn
|
|
// font_2x2_to_sprites::@return
|
|
__breturn:
|
|
// [134] return
|
|
rts
|
|
// font_2x2_to_sprites::@2
|
|
__b2:
|
|
// [135] font_2x2_to_sprites::char_right#0 = font_2x2_to_sprites::char_current#2 + (word)$40*8 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z char_current
|
|
adc #<$40*8
|
|
sta.z char_right
|
|
lda.z char_current+1
|
|
adc #>$40*8
|
|
sta.z char_right+1
|
|
// [136] font_2x2_to_sprites::char_left#6 = font_2x2_to_sprites::char_current#2 -- pbuz1=pbuz2
|
|
lda.z char_current
|
|
sta.z char_left
|
|
lda.z char_current+1
|
|
sta.z char_left+1
|
|
// [137] phi from font_2x2_to_sprites::@2 to font_2x2_to_sprites::@3 [phi:font_2x2_to_sprites::@2->font_2x2_to_sprites::@3]
|
|
__b3_from___b2:
|
|
// [137] phi font_2x2_to_sprites::char_right#3 = font_2x2_to_sprites::char_right#0 [phi:font_2x2_to_sprites::@2->font_2x2_to_sprites::@3#0] -- register_copy
|
|
// [137] phi font_2x2_to_sprites::sprite_idx#4 = 0 [phi:font_2x2_to_sprites::@2->font_2x2_to_sprites::@3#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z sprite_idx
|
|
// [137] phi font_2x2_to_sprites::char_left#3 = font_2x2_to_sprites::char_left#6 [phi:font_2x2_to_sprites::@2->font_2x2_to_sprites::@3#2] -- register_copy
|
|
// [137] phi font_2x2_to_sprites::i#2 = 0 [phi:font_2x2_to_sprites::@2->font_2x2_to_sprites::@3#3] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp __b3
|
|
// [137] phi from font_2x2_to_sprites::@5 to font_2x2_to_sprites::@3 [phi:font_2x2_to_sprites::@5->font_2x2_to_sprites::@3]
|
|
__b3_from___b5:
|
|
// [137] phi font_2x2_to_sprites::char_right#3 = font_2x2_to_sprites::char_right#4 [phi:font_2x2_to_sprites::@5->font_2x2_to_sprites::@3#0] -- register_copy
|
|
// [137] phi font_2x2_to_sprites::sprite_idx#4 = font_2x2_to_sprites::sprite_idx#3 [phi:font_2x2_to_sprites::@5->font_2x2_to_sprites::@3#1] -- register_copy
|
|
// [137] phi font_2x2_to_sprites::char_left#3 = font_2x2_to_sprites::char_left#4 [phi:font_2x2_to_sprites::@5->font_2x2_to_sprites::@3#2] -- register_copy
|
|
// [137] phi font_2x2_to_sprites::i#2 = font_2x2_to_sprites::i#1 [phi:font_2x2_to_sprites::@5->font_2x2_to_sprites::@3#3] -- register_copy
|
|
jmp __b3
|
|
// font_2x2_to_sprites::@3
|
|
__b3:
|
|
// [138] font_2x2_to_sprites::$3 = font_2x2_to_sprites::i#2 & 7 -- vbuz1=vbuxx_band_vbuc1
|
|
lda #7
|
|
sax.z __3
|
|
// [139] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#4] = font_2x2_to_sprites::char_left#3[font_2x2_to_sprites::$3] -- pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuz4
|
|
ldy.z __3
|
|
lda (char_left),y
|
|
ldy.z sprite_idx
|
|
sta (sprite),y
|
|
// [140] font_2x2_to_sprites::sprite_idx#1 = ++ font_2x2_to_sprites::sprite_idx#4 -- vbuz1=_inc_vbuz1
|
|
inc.z sprite_idx
|
|
// [141] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#1] = font_2x2_to_sprites::char_right#3[font_2x2_to_sprites::$3] -- pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuz4
|
|
ldy.z __3
|
|
lda (char_right),y
|
|
ldy.z sprite_idx
|
|
sta (sprite),y
|
|
// [142] font_2x2_to_sprites::sprite_idx#2 = ++ font_2x2_to_sprites::sprite_idx#1 -- vbuyy=_inc_vbuz1
|
|
ldy.z sprite_idx
|
|
iny
|
|
// [143] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#2] = 0 -- pbuz1_derefidx_vbuyy=vbuc1
|
|
lda #0
|
|
sta (sprite),y
|
|
// [144] font_2x2_to_sprites::sprite_idx#3 = ++ font_2x2_to_sprites::sprite_idx#2 -- vbuz1=_inc_vbuyy
|
|
iny
|
|
sty.z sprite_idx
|
|
// [145] if(font_2x2_to_sprites::i#2==7) goto font_2x2_to_sprites::@4 -- vbuxx_eq_vbuc1_then_la1
|
|
cpx #7
|
|
beq __b4
|
|
jmp __b6
|
|
// font_2x2_to_sprites::@6
|
|
__b6:
|
|
// [146] if(font_2x2_to_sprites::i#2!=$f) goto font_2x2_to_sprites::@8 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$f
|
|
bne __b8_from___b6
|
|
// [148] phi from font_2x2_to_sprites::@6 to font_2x2_to_sprites::@5 [phi:font_2x2_to_sprites::@6->font_2x2_to_sprites::@5]
|
|
__b5_from___b6:
|
|
// [148] phi font_2x2_to_sprites::char_right#4 = FONT+' '*8 [phi:font_2x2_to_sprites::@6->font_2x2_to_sprites::@5#0] -- pbuz1=pbuc1
|
|
lda #<FONT+' '*8
|
|
sta.z char_right
|
|
lda #>FONT+' '*8
|
|
sta.z char_right+1
|
|
// [148] phi font_2x2_to_sprites::char_left#4 = FONT+' '*8 [phi:font_2x2_to_sprites::@6->font_2x2_to_sprites::@5#1] -- pbuz1=pbuc1
|
|
lda #<FONT+' '*8
|
|
sta.z char_left
|
|
lda #>FONT+' '*8
|
|
sta.z char_left+1
|
|
jmp __b5
|
|
// [147] phi from font_2x2_to_sprites::@6 to font_2x2_to_sprites::@8 [phi:font_2x2_to_sprites::@6->font_2x2_to_sprites::@8]
|
|
__b8_from___b6:
|
|
jmp __b8
|
|
// font_2x2_to_sprites::@8
|
|
__b8:
|
|
// [148] phi from font_2x2_to_sprites::@4 font_2x2_to_sprites::@8 to font_2x2_to_sprites::@5 [phi:font_2x2_to_sprites::@4/font_2x2_to_sprites::@8->font_2x2_to_sprites::@5]
|
|
__b5_from___b4:
|
|
__b5_from___b8:
|
|
// [148] phi font_2x2_to_sprites::char_right#4 = font_2x2_to_sprites::char_right#1 [phi:font_2x2_to_sprites::@4/font_2x2_to_sprites::@8->font_2x2_to_sprites::@5#0] -- register_copy
|
|
// [148] phi font_2x2_to_sprites::char_left#4 = font_2x2_to_sprites::char_left#1 [phi:font_2x2_to_sprites::@4/font_2x2_to_sprites::@8->font_2x2_to_sprites::@5#1] -- register_copy
|
|
jmp __b5
|
|
// font_2x2_to_sprites::@5
|
|
__b5:
|
|
// [149] font_2x2_to_sprites::i#1 = ++ font_2x2_to_sprites::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [150] if(font_2x2_to_sprites::i#1!=$15) goto font_2x2_to_sprites::@3 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$15
|
|
bne __b3_from___b5
|
|
jmp __b7
|
|
// font_2x2_to_sprites::@7
|
|
__b7:
|
|
// [151] font_2x2_to_sprites::char_current#1 = font_2x2_to_sprites::char_current#2 + 8 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #8
|
|
clc
|
|
adc.z char_current
|
|
sta.z char_current
|
|
bcc !+
|
|
inc.z char_current+1
|
|
!:
|
|
// [152] font_2x2_to_sprites::sprite#1 = font_2x2_to_sprites::sprite#4 + $40 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$40
|
|
clc
|
|
adc.z sprite
|
|
sta.z sprite
|
|
bcc !+
|
|
inc.z sprite+1
|
|
!:
|
|
// [153] font_2x2_to_sprites::c#1 = ++ font_2x2_to_sprites::c#2 -- vbuz1=_inc_vbuz1
|
|
inc.z c
|
|
// [132] phi from font_2x2_to_sprites::@7 to font_2x2_to_sprites::@1 [phi:font_2x2_to_sprites::@7->font_2x2_to_sprites::@1]
|
|
__b1_from___b7:
|
|
// [132] phi font_2x2_to_sprites::sprite#4 = font_2x2_to_sprites::sprite#1 [phi:font_2x2_to_sprites::@7->font_2x2_to_sprites::@1#0] -- register_copy
|
|
// [132] phi font_2x2_to_sprites::char_current#2 = font_2x2_to_sprites::char_current#1 [phi:font_2x2_to_sprites::@7->font_2x2_to_sprites::@1#1] -- register_copy
|
|
// [132] phi font_2x2_to_sprites::c#2 = font_2x2_to_sprites::c#1 [phi:font_2x2_to_sprites::@7->font_2x2_to_sprites::@1#2] -- register_copy
|
|
jmp __b1
|
|
// font_2x2_to_sprites::@4
|
|
__b4:
|
|
// [154] font_2x2_to_sprites::char_left#1 = font_2x2_to_sprites::char_current#2 + (word)$80*8 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z char_current
|
|
adc #<$80*8
|
|
sta.z char_left
|
|
lda.z char_current+1
|
|
adc #>$80*8
|
|
sta.z char_left+1
|
|
// [155] font_2x2_to_sprites::char_right#1 = font_2x2_to_sprites::char_current#2 + (word)$c0*8 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z char_current
|
|
adc #<$c0*8
|
|
sta.z char_right
|
|
lda.z char_current+1
|
|
adc #>$c0*8
|
|
sta.z char_right+1
|
|
jmp __b5_from___b4
|
|
}
|
|
// plexInit
|
|
// Initialize the multiplexer data structures
|
|
plexInit: {
|
|
jmp plexSetScreen1
|
|
// plexInit::plexSetScreen1
|
|
plexSetScreen1:
|
|
// [157] PLEX_SCREEN_PTR = SCREEN+$3f8 -- pbuz1=pbuc1
|
|
lda #<SCREEN+$3f8
|
|
sta.z PLEX_SCREEN_PTR
|
|
lda #>SCREEN+$3f8
|
|
sta.z PLEX_SCREEN_PTR+1
|
|
// [158] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1]
|
|
__b1_from_plexSetScreen1:
|
|
// [158] phi plexInit::i#2 = 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp __b1
|
|
// [158] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1]
|
|
__b1_from___b1:
|
|
// [158] phi plexInit::i#2 = plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy
|
|
jmp __b1
|
|
// plexInit::@1
|
|
__b1:
|
|
// [159] PLEX_SORTED_IDX[plexInit::i#2] = plexInit::i#2 -- pbuc1_derefidx_vbuxx=vbuxx
|
|
txa
|
|
sta PLEX_SORTED_IDX,x
|
|
// [160] plexInit::i#1 = ++ plexInit::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [161] if(plexInit::i#1!=PLEX_COUNT-1+1) goto plexInit::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #PLEX_COUNT-1+1
|
|
bne __b1_from___b1
|
|
jmp __breturn
|
|
// plexInit::@return
|
|
__breturn:
|
|
// [162] return
|
|
rts
|
|
}
|
|
// plex_move
|
|
// Move the plex sprites in an Y-sine and scroll them to the left.
|
|
plex_move: {
|
|
.label y_idx = $1c
|
|
.label x_idx = $e
|
|
.label s = $b
|
|
.label __7 = $1a
|
|
// [164] plex_move::y_idx#0 = y_sin_idx#11 -- vbuz1=vbuz2
|
|
lda.z y_sin_idx
|
|
sta.z y_idx
|
|
// [165] plex_move::x_idx#0 = x_movement_idx#11 -- vbuz1=vbuz2
|
|
lda.z x_movement_idx
|
|
sta.z x_idx
|
|
// [166] phi from plex_move to plex_move::@1 [phi:plex_move->plex_move::@1]
|
|
__b1_from_plex_move:
|
|
// [166] phi scroll_text_next#12 = scroll_text_next#27 [phi:plex_move->plex_move::@1#0] -- register_copy
|
|
// [166] phi plex_move::x_idx#2 = plex_move::x_idx#0 [phi:plex_move->plex_move::@1#1] -- register_copy
|
|
// [166] phi plex_move::s#2 = 0 [phi:plex_move->plex_move::@1#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z s
|
|
// [166] phi plex_move::y_idx#2 = plex_move::y_idx#0 [phi:plex_move->plex_move::@1#3] -- register_copy
|
|
jmp __b1
|
|
// [166] phi from plex_move::@2 to plex_move::@1 [phi:plex_move::@2->plex_move::@1]
|
|
__b1_from___b2:
|
|
// [166] phi scroll_text_next#12 = scroll_text_next#14 [phi:plex_move::@2->plex_move::@1#0] -- register_copy
|
|
// [166] phi plex_move::x_idx#2 = plex_move::x_idx#1 [phi:plex_move::@2->plex_move::@1#1] -- register_copy
|
|
// [166] phi plex_move::s#2 = plex_move::s#1 [phi:plex_move::@2->plex_move::@1#2] -- register_copy
|
|
// [166] phi plex_move::y_idx#2 = plex_move::y_idx#1 [phi:plex_move::@2->plex_move::@1#3] -- register_copy
|
|
jmp __b1
|
|
// plex_move::@1
|
|
__b1:
|
|
// [167] PLEX_YPOS[plex_move::s#2] = YSIN[plex_move::y_idx#2] -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
|
|
// Assign sine value
|
|
ldy.z y_idx
|
|
lda YSIN,y
|
|
ldy.z s
|
|
sta PLEX_YPOS,y
|
|
// [168] plex_move::y_idx#1 = plex_move::y_idx#2 + 8 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z y_idx
|
|
axs #-[8]
|
|
stx.z y_idx
|
|
// [169] plex_move::$6 = plex_move::s#2 << 1 -- vbuxx=vbuz1_rol_1
|
|
lda.z s
|
|
asl
|
|
tax
|
|
// [170] plex_move::$7 = XMOVEMENT_HI[plex_move::x_idx#2] w= XMOVEMENT[plex_move::x_idx#2] -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2
|
|
ldy.z x_idx
|
|
lda XMOVEMENT_HI,y
|
|
sta.z __7+1
|
|
lda XMOVEMENT,y
|
|
sta.z __7
|
|
// [171] PLEX_XPOS[plex_move::$6] = plex_move::$7 -- pwuc1_derefidx_vbuxx=vwuz1
|
|
lda.z __7
|
|
sta PLEX_XPOS,x
|
|
lda.z __7+1
|
|
sta PLEX_XPOS+1,x
|
|
// [172] if(plex_move::x_idx#2!=0) goto plex_move::@2 -- vbuz1_neq_0_then_la1
|
|
lda.z x_idx
|
|
cmp #0
|
|
bne __b2_from___b1
|
|
jmp __b4
|
|
// plex_move::@4
|
|
__b4:
|
|
// [173] if(*scroll_text_next#12!=0) goto plex_move::@6 -- _deref_pbuz1_neq_0_then_la1
|
|
ldy #0
|
|
lda (scroll_text_next),y
|
|
cmp #0
|
|
bne __b6_from___b4
|
|
// [175] phi from plex_move::@4 to plex_move::@3 [phi:plex_move::@4->plex_move::@3]
|
|
__b3_from___b4:
|
|
// [175] phi scroll_text_next#13 = SCROLL_TEXT [phi:plex_move::@4->plex_move::@3#0] -- pbuz1=pbuc1
|
|
lda #<SCROLL_TEXT
|
|
sta.z scroll_text_next
|
|
lda #>SCROLL_TEXT
|
|
sta.z scroll_text_next+1
|
|
jmp __b3
|
|
// [174] phi from plex_move::@4 to plex_move::@6 [phi:plex_move::@4->plex_move::@6]
|
|
__b6_from___b4:
|
|
jmp __b6
|
|
// plex_move::@6
|
|
__b6:
|
|
// [175] phi from plex_move::@6 to plex_move::@3 [phi:plex_move::@6->plex_move::@3]
|
|
__b3_from___b6:
|
|
// [175] phi scroll_text_next#13 = scroll_text_next#12 [phi:plex_move::@6->plex_move::@3#0] -- register_copy
|
|
jmp __b3
|
|
// plex_move::@3
|
|
__b3:
|
|
// [176] plex_move::$4 = SPRITE_0#0 + *scroll_text_next#13 -- vbuaa=vbuc1_plus__deref_pbuz1
|
|
lda #SPRITE_0
|
|
clc
|
|
ldy #0
|
|
adc (scroll_text_next),y
|
|
// [177] PLEX_PTR[plex_move::s#2] = plex_move::$4 -- pbuc1_derefidx_vbuz1=vbuaa
|
|
// Read next char from the scroll text
|
|
ldy.z s
|
|
sta PLEX_PTR,y
|
|
// [178] scroll_text_next#3 = ++ scroll_text_next#13 -- pbuz1=_inc_pbuz1
|
|
inc.z scroll_text_next
|
|
bne !+
|
|
inc.z scroll_text_next+1
|
|
!:
|
|
// [179] phi from plex_move::@1 plex_move::@3 to plex_move::@2 [phi:plex_move::@1/plex_move::@3->plex_move::@2]
|
|
__b2_from___b1:
|
|
__b2_from___b3:
|
|
// [179] phi scroll_text_next#14 = scroll_text_next#12 [phi:plex_move::@1/plex_move::@3->plex_move::@2#0] -- register_copy
|
|
jmp __b2
|
|
// plex_move::@2
|
|
__b2:
|
|
// [180] plex_move::x_idx#1 = plex_move::x_idx#2 + 8 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z x_idx
|
|
axs #-[8]
|
|
stx.z x_idx
|
|
// [181] plex_move::s#1 = ++ plex_move::s#2 -- vbuz1=_inc_vbuz1
|
|
inc.z s
|
|
// [182] if(plex_move::s#1!=PLEX_COUNT-1+1) goto plex_move::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #PLEX_COUNT-1+1
|
|
cmp.z s
|
|
bne __b1_from___b2
|
|
jmp __b5
|
|
// plex_move::@5
|
|
__b5:
|
|
// [183] y_sin_idx#13 = y_sin_idx#11 + 3 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z y_sin_idx
|
|
axs #-[3]
|
|
stx.z y_sin_idx
|
|
// [184] x_movement_idx#13 = ++ x_movement_idx#11 -- vbuz1=_inc_vbuz1
|
|
inc.z x_movement_idx
|
|
jmp __breturn
|
|
// plex_move::@return
|
|
__breturn:
|
|
// [185] return
|
|
rts
|
|
}
|
|
// plexSort
|
|
// Ensure that the indices in PLEX_SORTED_IDX is sorted based on the y-positions in PLEX_YPOS
|
|
// Assumes that the positions are nearly sorted already (as each sprite just moves a bit)
|
|
// Uses an insertion sort:
|
|
// 1. Moves a marker (m) from the start to end of the array. Every time the marker moves forward all elements before the marker are sorted correctly.
|
|
// 2a. If the next element after the marker is larger that the current element
|
|
// the marker can be moved forwards (as the sorting is correct).
|
|
// 2b. If the next element after the marker is smaller than the current element:
|
|
// elements before the marker are shifted right one at a time until encountering one smaller than the current one.
|
|
// It is then inserted at the spot. Now the marker can move forward.
|
|
plexSort: {
|
|
.label nxt_idx = $1c
|
|
.label nxt_y = $1d
|
|
.label m = $e
|
|
// [187] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1]
|
|
__b1_from_plexSort:
|
|
// [187] phi plexSort::m#2 = 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z m
|
|
jmp __b1
|
|
// [187] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1]
|
|
__b1_from___b2:
|
|
// [187] phi plexSort::m#2 = plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy
|
|
jmp __b1
|
|
// plexSort::@1
|
|
__b1:
|
|
// [188] plexSort::nxt_idx#0 = (PLEX_SORTED_IDX+1)[plexSort::m#2] -- vbuz1=pbuc1_derefidx_vbuz2
|
|
ldy.z m
|
|
lda PLEX_SORTED_IDX+1,y
|
|
sta.z nxt_idx
|
|
// [189] plexSort::nxt_y#0 = PLEX_YPOS[plexSort::nxt_idx#0] -- vbuz1=pbuc1_derefidx_vbuz2
|
|
ldy.z nxt_idx
|
|
lda PLEX_YPOS,y
|
|
sta.z nxt_y
|
|
// [190] if(plexSort::nxt_y#0>=PLEX_YPOS[PLEX_SORTED_IDX[plexSort::m#2]]) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1
|
|
lda.z nxt_y
|
|
ldx.z m
|
|
ldy PLEX_SORTED_IDX,x
|
|
cmp PLEX_YPOS,y
|
|
bcs __b2
|
|
jmp __b5
|
|
// plexSort::@5
|
|
__b5:
|
|
// [191] plexSort::s#6 = plexSort::m#2 -- vbuxx=vbuz1
|
|
ldx.z m
|
|
// [192] phi from plexSort::@5 plexSort::@7 to plexSort::@3 [phi:plexSort::@5/plexSort::@7->plexSort::@3]
|
|
__b3_from___b5:
|
|
__b3_from___b7:
|
|
// [192] phi plexSort::s#3 = plexSort::s#6 [phi:plexSort::@5/plexSort::@7->plexSort::@3#0] -- register_copy
|
|
jmp __b3
|
|
// plexSort::@3
|
|
__b3:
|
|
// [193] (PLEX_SORTED_IDX+1)[plexSort::s#3] = PLEX_SORTED_IDX[plexSort::s#3] -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
|
|
lda PLEX_SORTED_IDX,x
|
|
sta PLEX_SORTED_IDX+1,x
|
|
// [194] plexSort::s#1 = -- plexSort::s#3 -- vbuxx=_dec_vbuxx
|
|
dex
|
|
// [195] if(plexSort::s#1==$ff) goto plexSort::@4 -- vbuxx_eq_vbuc1_then_la1
|
|
cpx #$ff
|
|
beq __b4
|
|
jmp __b7
|
|
// plexSort::@7
|
|
__b7:
|
|
// [196] if(plexSort::nxt_y#0<PLEX_YPOS[PLEX_SORTED_IDX[plexSort::s#1]]) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
|
|
lda.z nxt_y
|
|
ldy PLEX_SORTED_IDX,x
|
|
cmp PLEX_YPOS,y
|
|
bcc __b3_from___b7
|
|
jmp __b4
|
|
// plexSort::@4
|
|
__b4:
|
|
// [197] plexSort::s#2 = ++ plexSort::s#1 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [198] PLEX_SORTED_IDX[plexSort::s#2] = plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuxx=vbuz1
|
|
lda.z nxt_idx
|
|
sta PLEX_SORTED_IDX,x
|
|
jmp __b2
|
|
// plexSort::@2
|
|
__b2:
|
|
// [199] plexSort::m#1 = ++ plexSort::m#2 -- vbuz1=_inc_vbuz1
|
|
inc.z m
|
|
// [200] if(plexSort::m#1!=PLEX_COUNT-2+1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #PLEX_COUNT-2+1
|
|
cmp.z m
|
|
bne __b1_from___b2
|
|
jmp __b6
|
|
// plexSort::@6
|
|
__b6:
|
|
// [201] plex_show_idx = 0 -- vbuz1=vbuc1
|
|
// Prepare for showing the sprites
|
|
lda #0
|
|
sta.z plex_show_idx
|
|
// [202] plex_sprite_idx = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z plex_sprite_idx
|
|
// [203] plex_sprite_msb = 1 -- vbuz1=vbuc1
|
|
lda #1
|
|
sta.z plex_sprite_msb
|
|
// [204] phi from plexSort::@6 to plexSort::plexFreePrepare1 [phi:plexSort::@6->plexSort::plexFreePrepare1]
|
|
plexFreePrepare1_from___b6:
|
|
jmp plexFreePrepare1
|
|
// plexSort::plexFreePrepare1
|
|
plexFreePrepare1:
|
|
// [205] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1]
|
|
plexFreePrepare1___b1_from_plexFreePrepare1:
|
|
// [205] phi plexSort::plexFreePrepare1_s#2 = 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp plexFreePrepare1___b1
|
|
// [205] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1]
|
|
plexFreePrepare1___b1_from_plexFreePrepare1___b1:
|
|
// [205] phi plexSort::plexFreePrepare1_s#2 = plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy
|
|
jmp plexFreePrepare1___b1
|
|
// plexSort::plexFreePrepare1_@1
|
|
plexFreePrepare1___b1:
|
|
// [206] PLEX_FREE_YPOS[plexSort::plexFreePrepare1_s#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2
|
|
lda #0
|
|
sta PLEX_FREE_YPOS,x
|
|
// [207] plexSort::plexFreePrepare1_s#1 = ++ plexSort::plexFreePrepare1_s#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [208] if(plexSort::plexFreePrepare1_s#1!=8) goto plexSort::plexFreePrepare1_@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #8
|
|
bne plexFreePrepare1___b1_from_plexFreePrepare1___b1
|
|
jmp plexFreePrepare1___b2
|
|
// plexSort::plexFreePrepare1_@2
|
|
plexFreePrepare1___b2:
|
|
// [209] plex_free_next = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z plex_free_next
|
|
jmp __breturn
|
|
// plexSort::@return
|
|
__breturn:
|
|
// [210] return
|
|
rts
|
|
}
|
|
// File Data
|
|
.segment Data
|
|
// The x-positions of the multiplexer sprites (0x000-0x1ff)
|
|
PLEX_XPOS: .fill 2*PLEX_COUNT, 0
|
|
// The y-positions of the multiplexer sprites.
|
|
PLEX_YPOS: .fill PLEX_COUNT, 0
|
|
// The sprite pointers for the multiplexed sprites
|
|
PLEX_PTR: .fill PLEX_COUNT, 0
|
|
// Indexes of the plex-sprites sorted by sprite y-position. Each call to plexSort() will fix the sorting if changes to the Y-positions have ruined it.
|
|
PLEX_SORTED_IDX: .fill PLEX_COUNT, 0
|
|
// Contains the Y-position where each sprite is free again. PLEX_FREE_YPOS[s] holds the Y-position where sprite s is free to use again.
|
|
PLEX_FREE_YPOS: .fill 8, 0
|
|
//char FONT[0x0800] = kickasm(resource "elefont.bin") {{
|
|
// .import binary "elefont.bin"
|
|
//}};
|
|
FONT: .fill $800, 0
|
|
.align $100
|
|
YSIN:
|
|
.fill $100, round(142+89.5*sin(toRadians(360*i/256)))
|
|
|
|
.align $100
|
|
XMOVEMENT:
|
|
//.lohifill $100, round(344-i*344/$100-86*sin(toRadians(360*i/$100)))
|
|
//.lohifill $100, round(344-i*344/$100-129*sin(toRadians(360*i/$100)))
|
|
.lohifill $100, round(344-i*344/$100 -86*sin(toRadians(360*i/$100)) -43*sin(toRadians(360*i/$80)))
|
|
//.lohifill $100, round(344-i*344/$100-86*sin(toRadians(360*i/$80)))
|
|
|
|
// The scroll text
|
|
SCROLL_TEXT: .text "camelot presents a spanking new contribution to the always hungry c64 scene. in this time of the corona virus we have chosen to direct our efforts towards the safe haven of coding, pixeling and composing for our beloved old breadbin. "
|
|
.byte 0
|
|
|
|
ASSEMBLER OPTIMIZATIONS
|
|
Removing instruction jmp __init1
|
|
Removing instruction jmp __init1_toSpritePtr1
|
|
Removing instruction jmp __init1___b1
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp plexFreeNextYpos1
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b9
|
|
Removing instruction jmp __b10
|
|
Removing instruction jmp toD0181
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b11
|
|
Removing instruction jmp __b12
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b13
|
|
Removing instruction jmp plexFreeAdd1
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b9
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp plexSetScreen1
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp plexFreePrepare1
|
|
Removing instruction jmp plexFreePrepare1___b1
|
|
Removing instruction jmp plexFreePrepare1___b2
|
|
Removing instruction jmp __breturn
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction lda #0
|
|
Replacing instruction lda #0 with TXA
|
|
Removing instruction lda #0
|
|
Removing instruction lda #IRQ_RASTER
|
|
Replacing instruction lda.z s with TYA
|
|
Removing instruction lda.z __13
|
|
Replacing instruction lda.z plex_free_next with TYA
|
|
Removing instruction lda #0
|
|
Replacing instruction lda #<0 with TYA
|
|
Removing instruction lda #>0
|
|
Removing instruction ldy.z l2
|
|
Removing instruction lda.z glyph_bits_2x2+1
|
|
Removing instruction ldy.z l2
|
|
Removing instruction lda.z glyph_bits_2x2
|
|
Replacing instruction ldx #0 with TAX
|
|
Removing instruction ldy.z sprite_idx
|
|
Replacing instruction lda.z s with TYA
|
|
Removing instruction lda.z __7
|
|
Replacing instruction lda.z x_idx with TYA
|
|
Replacing instruction ldy.z nxt_idx with TAY
|
|
Removing instruction lda.z nxt_y
|
|
Removing instruction lda #0
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Replacing label __b3_from___b7 with __b3
|
|
Replacing label __b4_from___b4 with __b4
|
|
Replacing label __b4_from___b3 with __b4
|
|
Replacing label __b3_from___b5 with __b3
|
|
Replacing label __b8_from___b6 with __b8
|
|
Replacing label __b2_from___b8 with __b2
|
|
Replacing label __b1_from___b9 with __b1
|
|
Replacing label __b8_from___b6 with __b5
|
|
Replacing label __b3_from___b5 with __b3
|
|
Replacing label __b5_from___b4 with __b5
|
|
Replacing label __b1_from___b1 with __b1
|
|
Replacing label __b2_from___b1 with __b2
|
|
Replacing label __b6_from___b4 with __b3
|
|
Replacing label __b1_from___b2 with __b1
|
|
Replacing label __b3_from___b7 with __b3
|
|
Replacing label __b1_from___b2 with __b1
|
|
Replacing label plexFreePrepare1___b1_from_plexFreePrepare1___b1 with plexFreePrepare1___b1
|
|
Removing instruction __init1_toSpritePtr1_from___init1:
|
|
Removing instruction __init1_toSpritePtr1:
|
|
Removing instruction __b1_from___init1___b1:
|
|
Removing instruction __b3_from_plex_irq:
|
|
Removing instruction __b3_from___b7:
|
|
Removing instruction __b10_from___b9:
|
|
Removing instruction toD0181_from___b10:
|
|
Removing instruction toD0181:
|
|
Removing instruction __b4_from___b4:
|
|
Removing instruction __b5_from___b4:
|
|
Removing instruction __b11_from___b5:
|
|
Removing instruction __b13_from___b7:
|
|
Removing instruction __b1_from___b9:
|
|
Removing instruction __b2_from___b8:
|
|
Removing instruction __b3_from___b5:
|
|
Removing instruction __b4_from___b3:
|
|
Removing instruction __b5_from___b4:
|
|
Removing instruction __b8_from___b6:
|
|
Removing instruction __b3_from___b5:
|
|
Removing instruction __b8_from___b6:
|
|
Removing instruction __b8:
|
|
Removing instruction __b5_from___b4:
|
|
Removing instruction __b5_from___b8:
|
|
Removing instruction __b1_from___b1:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction __b6_from___b4:
|
|
Removing instruction __b6:
|
|
Removing instruction __b3_from___b6:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b2_from___b3:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction __b3_from___b5:
|
|
Removing instruction __b3_from___b7:
|
|
Removing instruction plexFreePrepare1_from___b6:
|
|
Removing instruction plexFreePrepare1___b1_from_plexFreePrepare1:
|
|
Removing instruction plexFreePrepare1___b1_from_plexFreePrepare1___b1:
|
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
|
Removing instruction __init1:
|
|
Removing instruction __init1___b1:
|
|
Removing instruction __b1:
|
|
Removing instruction __breturn:
|
|
Removing instruction plexFreeNextYpos1:
|
|
Removing instruction __b6:
|
|
Removing instruction __b7:
|
|
Removing instruction __b5:
|
|
Removing instruction __breturn:
|
|
Removing instruction font_2x2_from_main:
|
|
Removing instruction __b9:
|
|
Removing instruction font_2x2_to_sprites_from___b9:
|
|
Removing instruction __b10:
|
|
Removing instruction plexInit_from___b10:
|
|
Removing instruction __b8:
|
|
Removing instruction __b1_from___b8:
|
|
Removing instruction __b3:
|
|
Removing instruction __b4_from___b3:
|
|
Removing instruction __b5:
|
|
Removing instruction plex_move_from___b5:
|
|
Removing instruction __b11:
|
|
Removing instruction plexSort_from___b11:
|
|
Removing instruction __b12:
|
|
Removing instruction plex_move_from___b7:
|
|
Removing instruction __b13:
|
|
Removing instruction plexSort_from___b13:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction plexFreeAdd1:
|
|
Removing instruction __b5:
|
|
Removing instruction __b3:
|
|
Removing instruction __b4:
|
|
Removing instruction __b1_from_font_2x2:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b3_from___b2:
|
|
Removing instruction __b5_from___b3:
|
|
Removing instruction __b6:
|
|
Removing instruction __b7:
|
|
Removing instruction __b8_from___b7:
|
|
Removing instruction __b9:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from_font_2x2_to_sprites:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b3_from___b2:
|
|
Removing instruction __b6:
|
|
Removing instruction __b5_from___b6:
|
|
Removing instruction __b7:
|
|
Removing instruction __b1_from___b7:
|
|
Removing instruction plexSetScreen1:
|
|
Removing instruction __b1_from_plexSetScreen1:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from_plex_move:
|
|
Removing instruction __b4:
|
|
Removing instruction __b3_from___b4:
|
|
Removing instruction __b5:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from_plexSort:
|
|
Removing instruction __b5:
|
|
Removing instruction __b7:
|
|
Removing instruction __b6:
|
|
Removing instruction plexFreePrepare1:
|
|
Removing instruction plexFreePrepare1___b2:
|
|
Removing instruction __breturn:
|
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp plexFreePrepare1___b1
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction lda #0
|
|
Removing instruction ldx.z plex_show_idx
|
|
Removing instruction lda #8
|
|
Removing instruction ldx.z m
|
|
Removing instruction lda #0
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Fixing long branch [420] bne __b1 to beq
|
|
|
|
FINAL SYMBOL TABLE
|
|
const nomodify byte* CHARGEN = (byte*) 53248
|
|
const nomodify byte* CHARSET_DEFAULT = (byte*) 4096
|
|
const nomodify struct MOS6526_CIA* CIA1 = (struct MOS6526_CIA*) 56320
|
|
const nomodify byte CIA_INTERRUPT_CLEAR = $7f
|
|
const nomodify byte* D018 = (byte*) 53272
|
|
const byte* FONT[$800] = { fill( $800, 0) }
|
|
const nomodify byte* IRQ_ENABLE = (byte*) 53274
|
|
const nomodify byte IRQ_RASTER = 1
|
|
const nomodify byte* IRQ_STATUS = (byte*) 53273
|
|
const nomodify void()** KERNEL_IRQ = (void()**) 788
|
|
const byte OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
|
const nomodify byte PLEX_COUNT = $20
|
|
const byte* PLEX_FREE_YPOS[8] = { fill( 8, 0) }
|
|
const byte* PLEX_PTR[PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
|
|
volatile byte* PLEX_SCREEN_PTR loadstore zp[2]:15 6.181818181818182
|
|
const byte* PLEX_SORTED_IDX[PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
|
|
const word* PLEX_XPOS[PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
|
|
const byte* PLEX_YPOS[PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
|
|
const nomodify byte* PROCPORT = (byte*) 1
|
|
const nomodify byte PROCPORT_BASIC_KERNEL_IO = 7
|
|
const nomodify byte PROCPORT_RAM_CHARROM = 1
|
|
const nomodify byte* RASTER = (byte*) 53266
|
|
const nomodify byte* SCREEN = (byte*) 1024
|
|
const byte* SCROLL_TEXT[] = "camelot presents a spanking new contribution to the always hungry c64 scene. in this time of the corona virus we have chosen to direct our efforts towards the safe haven of coding, pixeling and composing for our beloved old breadbin. "
|
|
const nomodify byte* SPRITES = (byte*) 12288
|
|
const nomodify byte* SPRITES_COLOR = (byte*) 53287
|
|
const nomodify byte* SPRITES_ENABLE = (byte*) 53269
|
|
const nomodify byte* SPRITES_XMSB = (byte*) 53264
|
|
const nomodify byte* SPRITES_XPOS = (byte*) 53248
|
|
const nomodify byte* SPRITES_YPOS = (byte*) 53249
|
|
byte SPRITE_0
|
|
const byte SPRITE_0#0 SPRITE_0 = (byte)(word)SPRITES/$40
|
|
const nomodify byte* VIC_CONTROL = (byte*) 53265
|
|
const nomodify byte WHITE = 1
|
|
const byte* XMOVEMENT[$200] = kickasm {{ //.lohifill $100, round(344-i*344/$100-86*sin(toRadians(360*i/$100)))
|
|
//.lohifill $100, round(344-i*344/$100-129*sin(toRadians(360*i/$100)))
|
|
.lohifill $100, round(344-i*344/$100 -86*sin(toRadians(360*i/$100)) -43*sin(toRadians(360*i/$80)))
|
|
//.lohifill $100, round(344-i*344/$100-86*sin(toRadians(360*i/$80)))
|
|
}}
|
|
const nomodify byte* XMOVEMENT_HI = XMOVEMENT+$100
|
|
const byte* YSIN[$100] = kickasm {{ .fill $100, round(142+89.5*sin(toRadians(360*i/256)))
|
|
}}
|
|
void __start()
|
|
byte __start::__init1_toSpritePtr1_return
|
|
byte* __start::__init1_toSpritePtr1_sprite
|
|
void font_2x2(byte* font_2x2::font_original , byte* font_2x2::font_2x2)
|
|
byte~ font_2x2::$1 reg byte a 200002.0
|
|
byte~ font_2x2::$10 reg byte a 20002.0
|
|
byte~ font_2x2::$11 reg byte y 10001.0
|
|
byte~ font_2x2::$12 reg byte a 20002.0
|
|
byte~ font_2x2::$13 reg byte a 20002.0
|
|
byte~ font_2x2::$14 reg byte y 10001.0
|
|
byte~ font_2x2::$15 reg byte a 20002.0
|
|
word~ font_2x2::$5 zp[2]:23 200002.0
|
|
word~ font_2x2::$7 zp[2]:23 200002.0
|
|
byte font_2x2::b
|
|
byte font_2x2::b#1 reg byte y 150001.5
|
|
byte font_2x2::b#2 reg byte y 20000.2
|
|
byte font_2x2::c
|
|
byte font_2x2::c#1 c zp[1]:14 1501.5
|
|
byte font_2x2::c#11 c zp[1]:14 55.611111111111114
|
|
byte* font_2x2::font_2x2
|
|
byte* font_2x2::font_original
|
|
byte font_2x2::glyph_bit
|
|
byte font_2x2::glyph_bit#0 reg byte x 50000.5
|
|
byte font_2x2::glyph_bits
|
|
byte font_2x2::glyph_bits#0 glyph_bits zp[1]:11 20002.0
|
|
byte font_2x2::glyph_bits#1 glyph_bits zp[1]:11 66667.33333333333
|
|
byte font_2x2::glyph_bits#2 glyph_bits zp[1]:11 34444.88888888889
|
|
word font_2x2::glyph_bits_2x2
|
|
word font_2x2::glyph_bits_2x2#1 glyph_bits_2x2 zp[2]:23 200002.0
|
|
word font_2x2::glyph_bits_2x2#2 glyph_bits_2x2 zp[2]:23 20000.500000000004
|
|
word font_2x2::glyph_bits_2x2#3 glyph_bits_2x2 zp[2]:23 40000.4
|
|
byte font_2x2::l
|
|
byte font_2x2::l#1 l zp[1]:29 15001.5
|
|
byte font_2x2::l#2 l zp[1]:29 1034.5862068965519
|
|
byte font_2x2::l2
|
|
byte font_2x2::l2#1 l2 zp[1]:28 15001.5
|
|
byte font_2x2::l2#8 l2 zp[1]:28 2500.25
|
|
byte font_2x2::l2#9 l2 zp[1]:28 6667.333333333333
|
|
byte* font_2x2::next_2x2
|
|
byte* font_2x2::next_2x2#1 next_2x2 zp[2]:26 500.5
|
|
byte* font_2x2::next_2x2_left
|
|
byte* font_2x2::next_2x2_left#0 next_2x2_left zp[2]:26 706.0588235294117
|
|
byte* font_2x2::next_2x2_left#1 next_2x2_left_1 zp[2]:5 10001.0
|
|
byte* font_2x2::next_2x2_left#10 next_2x2_left_1 zp[2]:5 2002.0
|
|
byte* font_2x2::next_2x2_left#7 next_2x2_left_1 zp[2]:5 1577.1153846153845
|
|
byte* font_2x2::next_2x2_left#8 next_2x2_left_1 zp[2]:5 10001.0
|
|
byte* font_2x2::next_2x2_right
|
|
byte* font_2x2::next_2x2_right#0 next_2x2_right zp[2]:7 1001.0
|
|
byte* font_2x2::next_2x2_right#1 next_2x2_right zp[2]:7 20002.0
|
|
byte* font_2x2::next_2x2_right#7 next_2x2_right zp[2]:7 1577.1153846153845
|
|
byte* font_2x2::next_2x2_right#8 next_2x2_right zp[2]:7 10001.0
|
|
byte* font_2x2::next_original
|
|
byte* font_2x2::next_original#1 next_original zp[2]:3 667.3333333333334
|
|
byte* font_2x2::next_original#4 next_original zp[2]:3 342.9428571428572
|
|
void font_2x2_to_sprites(byte* font_2x2_to_sprites::font_2x2 , byte* font_2x2_to_sprites::sprites , byte font_2x2_to_sprites::num_chars)
|
|
byte~ font_2x2_to_sprites::$3 zp[1]:28 10001.0
|
|
byte font_2x2_to_sprites::c
|
|
byte font_2x2_to_sprites::c#1 c zp[1]:14 2002.0
|
|
byte font_2x2_to_sprites::c#2 c zp[1]:14 136.5
|
|
byte* font_2x2_to_sprites::char_current
|
|
byte* font_2x2_to_sprites::char_current#1 char_current zp[2]:26 667.3333333333334
|
|
byte* font_2x2_to_sprites::char_current#2 char_current zp[2]:26 1200.3
|
|
byte* font_2x2_to_sprites::char_left
|
|
byte* font_2x2_to_sprites::char_left#1 char_left zp[2]:5 10001.0
|
|
byte* font_2x2_to_sprites::char_left#3 char_left zp[2]:5 2818.5454545454545
|
|
byte* font_2x2_to_sprites::char_left#4 char_left zp[2]:5 10001.0
|
|
byte* font_2x2_to_sprites::char_left#6 char_left zp[2]:5 2002.0
|
|
byte* font_2x2_to_sprites::char_right
|
|
byte* font_2x2_to_sprites::char_right#0 char_right zp[2]:7 1001.0
|
|
byte* font_2x2_to_sprites::char_right#1 char_right zp[2]:7 20002.0
|
|
byte* font_2x2_to_sprites::char_right#3 char_right zp[2]:7 2818.5454545454545
|
|
byte* font_2x2_to_sprites::char_right#4 char_right zp[2]:7 10001.0
|
|
byte* font_2x2_to_sprites::font_2x2
|
|
byte font_2x2_to_sprites::i
|
|
byte font_2x2_to_sprites::i#1 reg byte x 15001.5
|
|
byte font_2x2_to_sprites::i#2 reg byte x 3571.7857142857147
|
|
byte font_2x2_to_sprites::num_chars
|
|
const byte font_2x2_to_sprites::num_chars#0 num_chars = $40
|
|
byte* font_2x2_to_sprites::sprite
|
|
byte* font_2x2_to_sprites::sprite#1 sprite zp[2]:3 1001.0
|
|
byte* font_2x2_to_sprites::sprite#4 sprite zp[2]:3 1524.047619047619
|
|
byte font_2x2_to_sprites::sprite_idx
|
|
byte font_2x2_to_sprites::sprite_idx#1 sprite_idx zp[1]:29 15001.5
|
|
byte font_2x2_to_sprites::sprite_idx#2 reg byte y 15001.5
|
|
byte font_2x2_to_sprites::sprite_idx#3 sprite_idx zp[1]:29 2222.4444444444443
|
|
byte font_2x2_to_sprites::sprite_idx#4 sprite_idx zp[1]:29 10001.0
|
|
byte* font_2x2_to_sprites::sprites
|
|
volatile bool frame_done loadstore zp[1]:21 26.333333333333332
|
|
void main()
|
|
byte~ main::$12 reg byte y 101.0
|
|
word~ main::$13 zp[2]:23 202.0
|
|
byte main::s
|
|
byte main::s#1 s zp[1]:2 202.0
|
|
byte main::s#2 s zp[1]:2 72.14285714285714
|
|
byte main::s1
|
|
byte main::s1#1 reg byte x 151.5
|
|
byte main::s1#2 reg byte x 151.5
|
|
byte* main::toD0181_gfx
|
|
byte main::toD0181_return
|
|
const byte main::toD0181_return#0 toD0181_return = >(word)SCREEN&$3fff*4|>(word)CHARSET_DEFAULT/4&$f
|
|
byte* main::toD0181_screen
|
|
byte main::x
|
|
byte main::x#1 reg byte x 101.0
|
|
byte main::x#2 reg byte x 67.33333333333333
|
|
void plexInit(byte* plexInit::screen)
|
|
byte plexInit::i
|
|
byte plexInit::i#1 reg byte x 1501.5
|
|
byte plexInit::i#2 reg byte x 2002.0
|
|
byte* plexInit::plexSetScreen1_screen
|
|
byte* plexInit::screen
|
|
void plexShowSprite()
|
|
byte~ plexShowSprite::$11 reg byte x 101.0
|
|
byte~ plexShowSprite::$2 reg byte a 202.0
|
|
byte~ plexShowSprite::$3 reg byte a 202.0
|
|
byte~ plexShowSprite::$5 reg byte x 202.0
|
|
byte~ plexShowSprite::$6 reg byte a 202.0
|
|
byte~ plexShowSprite::$9 reg byte a 202.0
|
|
byte~ plexShowSprite::plexFreeAdd1_$0 reg byte a 202.0
|
|
byte~ plexShowSprite::plexFreeAdd1_$1 reg byte a 202.0
|
|
byte~ plexShowSprite::plexFreeAdd1_$2 reg byte a 202.0
|
|
byte plexShowSprite::plexFreeAdd1_ypos
|
|
byte plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 151.5
|
|
byte plexShowSprite::plex_sprite_idx2
|
|
byte plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:25 25.25
|
|
byte plexShowSprite::xpos_idx
|
|
byte plexShowSprite::xpos_idx#0 reg byte a 202.0
|
|
byte plexShowSprite::ypos
|
|
void plexSort()
|
|
byte plexSort::m
|
|
byte plexSort::m#1 m zp[1]:14 150001.5
|
|
byte plexSort::m#2 m zp[1]:14 41667.08333333333
|
|
byte plexSort::nxt_idx
|
|
byte plexSort::nxt_idx#0 nxt_idx zp[1]:28 30000.300000000003
|
|
byte plexSort::nxt_y
|
|
byte plexSort::nxt_y#0 nxt_y zp[1]:29 150000.375
|
|
byte plexSort::plexFreePrepare1_s
|
|
byte plexSort::plexFreePrepare1_s#1 reg byte x 150001.5
|
|
byte plexSort::plexFreePrepare1_s#2 reg byte x 150001.5
|
|
byte plexSort::s
|
|
byte plexSort::s#1 reg byte x 1366668.3333333335
|
|
byte plexSort::s#2 reg byte x 200002.0
|
|
byte plexSort::s#3 reg byte x 2050002.5
|
|
byte plexSort::s#6 reg byte x 200002.0
|
|
volatile byte plex_free_next loadstore zp[1]:20 42.483870967741936
|
|
__interrupt(rom_min_c64) void plex_irq()
|
|
byte~ plex_irq::$4 zp[1]:22 11.0
|
|
byte plex_irq::plexFreeNextYpos1_return
|
|
byte plex_irq::plexFreeNextYpos1_return#0 reg byte x 4.800000000000001
|
|
byte plex_irq::rasterY
|
|
void plex_move()
|
|
byte~ plex_move::$4 reg byte a 200002.0
|
|
byte~ plex_move::$6 reg byte x 100001.0
|
|
word~ plex_move::$7 zp[2]:26 200002.0
|
|
byte plex_move::s
|
|
byte plex_move::s#1 s zp[1]:11 150001.5
|
|
byte plex_move::s#2 s zp[1]:11 33333.66666666667
|
|
byte plex_move::x_idx
|
|
byte plex_move::x_idx#0 x_idx zp[1]:14 2002.0
|
|
byte plex_move::x_idx#1 x_idx zp[1]:14 66667.33333333333
|
|
byte plex_move::x_idx#2 x_idx zp[1]:14 35786.142857142855
|
|
byte plex_move::y_idx
|
|
byte plex_move::y_idx#0 y_idx zp[1]:28 1001.0
|
|
byte plex_move::y_idx#1 y_idx zp[1]:28 13333.466666666667
|
|
byte plex_move::y_idx#2 y_idx zp[1]:28 150502.0
|
|
volatile byte plex_show_idx loadstore zp[1]:17 46.09090909090909
|
|
volatile byte plex_sprite_idx loadstore zp[1]:18 45.38709677419355
|
|
volatile byte plex_sprite_msb loadstore zp[1]:19 48.75757575757575
|
|
byte* scroll_text_next
|
|
byte* scroll_text_next#12 scroll_text_next zp[2]:12 44556.11111111111
|
|
byte* scroll_text_next#13 scroll_text_next zp[2]:12 100001.0
|
|
byte* scroll_text_next#14 scroll_text_next zp[2]:12 13048.0
|
|
byte* scroll_text_next#27 scroll_text_next zp[2]:12 367.33333333333337
|
|
byte* scroll_text_next#3 scroll_text_next zp[2]:12 200002.0
|
|
byte x_movement_idx
|
|
byte x_movement_idx#11 x_movement_idx zp[1]:10 100.14285714285714
|
|
byte x_movement_idx#13 x_movement_idx zp[1]:10 61.22222222222223
|
|
byte y_sin_idx
|
|
byte y_sin_idx#11 y_sin_idx zp[1]:9 105.14999999999999
|
|
byte y_sin_idx#13 y_sin_idx zp[1]:9 58.0
|
|
|
|
zp[1]:2 [ main::s#2 main::s#1 ]
|
|
reg byte x [ main::x#2 main::x#1 ]
|
|
reg byte x [ main::s1#2 main::s1#1 ]
|
|
reg byte y [ font_2x2::b#2 font_2x2::b#1 ]
|
|
reg byte x [ font_2x2::glyph_bit#0 ]
|
|
zp[2]:3 [ font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::sprite#1 font_2x2::next_original#4 font_2x2::next_original#1 ]
|
|
reg byte x [ font_2x2_to_sprites::i#2 font_2x2_to_sprites::i#1 ]
|
|
zp[2]:5 [ font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::char_left#4 font_2x2_to_sprites::char_left#1 font_2x2::next_2x2_left#7 font_2x2::next_2x2_left#10 font_2x2::next_2x2_left#8 font_2x2::next_2x2_left#1 ]
|
|
zp[2]:7 [ font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::char_right#4 font_2x2_to_sprites::char_right#1 font_2x2::next_2x2_right#7 font_2x2::next_2x2_right#0 font_2x2::next_2x2_right#8 font_2x2::next_2x2_right#1 ]
|
|
reg byte x [ plexInit::i#2 plexInit::i#1 ]
|
|
zp[1]:9 [ y_sin_idx#11 y_sin_idx#13 ]
|
|
zp[1]:10 [ x_movement_idx#11 x_movement_idx#13 ]
|
|
zp[1]:11 [ plex_move::s#2 plex_move::s#1 font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ]
|
|
zp[2]:12 [ scroll_text_next#13 scroll_text_next#12 scroll_text_next#27 scroll_text_next#14 scroll_text_next#3 ]
|
|
zp[1]:14 [ plexSort::m#2 plexSort::m#1 plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 font_2x2::c#11 font_2x2::c#1 ]
|
|
reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
|
|
reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ]
|
|
zp[2]:15 [ PLEX_SCREEN_PTR ]
|
|
zp[1]:17 [ plex_show_idx ]
|
|
zp[1]:18 [ plex_sprite_idx ]
|
|
zp[1]:19 [ plex_sprite_msb ]
|
|
zp[1]:20 [ plex_free_next ]
|
|
zp[1]:21 [ frame_done ]
|
|
reg byte x [ plex_irq::plexFreeNextYpos1_return#0 ]
|
|
zp[1]:22 [ plex_irq::$4 ]
|
|
reg byte y [ main::$12 ]
|
|
zp[2]:23 [ main::$13 font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 font_2x2::$5 font_2x2::$7 font_2x2::glyph_bits_2x2#1 ]
|
|
zp[1]:25 [ plexShowSprite::plex_sprite_idx2#0 ]
|
|
reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
|
reg byte a [ plexShowSprite::plexFreeAdd1_$0 ]
|
|
reg byte a [ plexShowSprite::plexFreeAdd1_$1 ]
|
|
reg byte a [ plexShowSprite::plexFreeAdd1_$2 ]
|
|
reg byte a [ plexShowSprite::xpos_idx#0 ]
|
|
reg byte x [ plexShowSprite::$11 ]
|
|
reg byte a [ plexShowSprite::$2 ]
|
|
reg byte a [ plexShowSprite::$3 ]
|
|
reg byte a [ plexShowSprite::$9 ]
|
|
reg byte x [ plexShowSprite::$5 ]
|
|
reg byte a [ plexShowSprite::$6 ]
|
|
reg byte a [ font_2x2::$1 ]
|
|
reg byte a [ font_2x2::$10 ]
|
|
reg byte y [ font_2x2::$11 ]
|
|
reg byte a [ font_2x2::$12 ]
|
|
reg byte a [ font_2x2::$13 ]
|
|
reg byte y [ font_2x2::$14 ]
|
|
reg byte a [ font_2x2::$15 ]
|
|
reg byte y [ font_2x2_to_sprites::sprite_idx#2 ]
|
|
reg byte x [ plex_move::$6 ]
|
|
zp[2]:26 [ plex_move::$7 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ]
|
|
reg byte a [ plex_move::$4 ]
|
|
zp[1]:28 [ plexSort::nxt_idx#0 font_2x2_to_sprites::$3 plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ]
|
|
zp[1]:29 [ plexSort::nxt_y#0 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::sprite_idx#1 font_2x2::l#2 font_2x2::l#1 ]
|
|
reg byte x [ plexSort::s#2 ]
|
|
|
|
|
|
FINAL ASSEMBLER
|
|
Score: 159175
|
|
|
|
// File Comments
|
|
// Put a 2x2 font into sprites and show it on screen
|
|
// Commodore 64 Registers and Constants
|
|
// The MOS 6526 Complex Interface Adapter (CIA)
|
|
// http://archive.6502.org/datasheets/mos_6526_cia_recreated.pdf
|
|
// Upstart
|
|
// Commodore 64 PRG executable file
|
|
.file [name="spritescroller.prg", type="prg", segments="Program"]
|
|
.segmentdef Program [segments="Basic, Code, Data"]
|
|
.segmentdef Basic [start=$0801]
|
|
.segmentdef Code [start=$80d]
|
|
.segmentdef Data [startAfter="Code"]
|
|
.segment Basic
|
|
:BasicUpstart(__start)
|
|
// Global Constants & labels
|
|
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
|
.const CIA_INTERRUPT_CLEAR = $7f
|
|
// Bits for the VICII IRQ Status/Enable Registers
|
|
.const IRQ_RASTER = 1
|
|
// RAM in 0xA000, 0xE000 CHAR ROM in 0xD000
|
|
.const PROCPORT_RAM_CHARROM = 1
|
|
// BASIC in 0xA000, I/O in 0xD000, KERNEL in 0xE000
|
|
.const PROCPORT_BASIC_KERNEL_IO = 7
|
|
.const WHITE = 1
|
|
// The number of sprites in the multiplexer
|
|
.const PLEX_COUNT = $20
|
|
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
|
// Sprite pointer for sprite 0
|
|
.const SPRITE_0 = SPRITES/$40
|
|
.label SPRITES_XPOS = $d000
|
|
.label SPRITES_YPOS = $d001
|
|
.label SPRITES_XMSB = $d010
|
|
.label SPRITES_COLOR = $d027
|
|
.label SPRITES_ENABLE = $d015
|
|
.label RASTER = $d012
|
|
.label VIC_CONTROL = $d011
|
|
.label D018 = $d018
|
|
// VIC II IRQ Status Register
|
|
.label IRQ_STATUS = $d019
|
|
// VIC II IRQ Enable Register
|
|
.label IRQ_ENABLE = $d01a
|
|
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
|
.label PROCPORT = 1
|
|
// The address of the CHARGEN character set
|
|
.label CHARGEN = $d000
|
|
// The CIA#1: keyboard matrix, joystick #1/#2
|
|
.label CIA1 = $dc00
|
|
// The vector used when the KERNAL serves IRQ interrupts
|
|
.label KERNEL_IRQ = $314
|
|
.label CHARSET_DEFAULT = $1000
|
|
.label SPRITES = $3000
|
|
.label SCREEN = $400
|
|
// The high-value table
|
|
.label XMOVEMENT_HI = XMOVEMENT+$100
|
|
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
|
.label PLEX_SCREEN_PTR = $f
|
|
// The index in the PLEX tables of the next sprite to show
|
|
.label plex_show_idx = $11
|
|
// The index the next sprite to use for showing (sprites are used round-robin)
|
|
.label plex_sprite_idx = $12
|
|
// The MSB bit of the next sprite to use for showing
|
|
.label plex_sprite_msb = $13
|
|
// The index of the sprite that is free next. Since sprites are used round-robin this moves forward each time a sprite is shown.
|
|
.label plex_free_next = $14
|
|
// Signal used between IRQ and main loop. Set to true when the IRQ is done showing the sprites.
|
|
.label frame_done = $15
|
|
// The next char to use from the scroll text
|
|
.label scroll_text_next = $c
|
|
// Y-sine index
|
|
.label y_sin_idx = 9
|
|
// X-movement index
|
|
.label x_movement_idx = $a
|
|
.segment Code
|
|
// __start
|
|
__start: {
|
|
// __start::__init1
|
|
// PLEX_SCREEN_PTR = 0x400+0x3f8
|
|
// [1] PLEX_SCREEN_PTR = (byte*)$400+$3f8 -- pbuz1=pbuc1
|
|
lda #<$400+$3f8
|
|
sta.z PLEX_SCREEN_PTR
|
|
lda #>$400+$3f8
|
|
sta.z PLEX_SCREEN_PTR+1
|
|
// plex_show_idx=0
|
|
// [2] plex_show_idx = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z plex_show_idx
|
|
// plex_sprite_idx=0
|
|
// [3] plex_sprite_idx = 0 -- vbuz1=vbuc1
|
|
sta.z plex_sprite_idx
|
|
// plex_sprite_msb=1
|
|
// [4] plex_sprite_msb = 1 -- vbuz1=vbuc1
|
|
lda #1
|
|
sta.z plex_sprite_msb
|
|
// plex_free_next = 0
|
|
// [5] plex_free_next = 0 -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z plex_free_next
|
|
// [6] phi from __start::__init1 to __start::__init1_toSpritePtr1 [phi:__start::__init1->__start::__init1_toSpritePtr1]
|
|
// __start::__init1_toSpritePtr1
|
|
// __start::__init1_@1
|
|
// frame_done = false
|
|
// [7] frame_done = false -- vboz1=vboc1
|
|
sta.z frame_done
|
|
// [8] phi from __start::__init1_@1 to __start::@1 [phi:__start::__init1_@1->__start::@1]
|
|
// __start::@1
|
|
// [9] call main
|
|
jsr main
|
|
// __start::@return
|
|
// [10] return
|
|
rts
|
|
}
|
|
// plex_irq
|
|
// Show sprites from the multiplexer, rescheduling the IRQ as many times as needed
|
|
plex_irq: {
|
|
.label __4 = $16
|
|
// interrupt(isr_rom_min_c64_entry) -- isr_rom_min_c64_entry
|
|
// asm
|
|
// asm { sei }
|
|
sei
|
|
// [12] phi from plex_irq plex_irq::@7 to plex_irq::@3 [phi:plex_irq/plex_irq::@7->plex_irq::@3]
|
|
// plex_irq::@3
|
|
__b3:
|
|
// plexShowSprite()
|
|
// [13] call plexShowSprite
|
|
jsr plexShowSprite
|
|
// plex_irq::plexFreeNextYpos1
|
|
// return PLEX_FREE_YPOS[plex_free_next];
|
|
// [14] plex_irq::plexFreeNextYpos1_return#0 = PLEX_FREE_YPOS[plex_free_next] -- vbuxx=pbuc1_derefidx_vbuz1
|
|
ldy.z plex_free_next
|
|
ldx PLEX_FREE_YPOS,y
|
|
// plex_irq::@6
|
|
// *RASTER+3
|
|
// [15] plex_irq::$4 = *RASTER + 3 -- vbuz1=_deref_pbuc1_plus_vbuc2
|
|
lda #3
|
|
clc
|
|
adc RASTER
|
|
sta.z __4
|
|
// while (plex_show_idx < PLEX_COUNT && rasterY < *RASTER+3)
|
|
// [16] if(plex_show_idx>=PLEX_COUNT) goto plex_irq::@4 -- vbuz1_ge_vbuc1_then_la1
|
|
lda.z plex_show_idx
|
|
cmp #PLEX_COUNT
|
|
bcs __b4
|
|
// plex_irq::@7
|
|
// [17] if(plex_irq::plexFreeNextYpos1_return#0<plex_irq::$4) goto plex_irq::@3 -- vbuxx_lt_vbuz1_then_la1
|
|
cpx.z __4
|
|
bcc __b3
|
|
// plex_irq::@4
|
|
__b4:
|
|
// if (plex_show_idx<PLEX_COUNT)
|
|
// [18] if(plex_show_idx<PLEX_COUNT) goto plex_irq::@1 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z plex_show_idx
|
|
cmp #PLEX_COUNT
|
|
bcc __b1
|
|
// plex_irq::@5
|
|
// *RASTER = 0x28
|
|
// [19] *RASTER = $28 -- _deref_pbuc1=vbuc2
|
|
// Reset the raster IRQ to the top of the screen
|
|
lda #$28
|
|
sta RASTER
|
|
// frame_done = true
|
|
// [20] frame_done = true -- vboz1=vboc1
|
|
// Signal that the IRQ is done showing sprites
|
|
lda #1
|
|
sta.z frame_done
|
|
// plex_irq::@2
|
|
__b2:
|
|
// *IRQ_STATUS = IRQ_RASTER
|
|
// [21] *IRQ_STATUS = IRQ_RASTER -- _deref_pbuc1=vbuc2
|
|
// Acknowledge the IRQ
|
|
lda #IRQ_RASTER
|
|
sta IRQ_STATUS
|
|
// asm
|
|
// asm { cli }
|
|
//*BORDER_COLOR = 0;
|
|
cli
|
|
// plex_irq::@return
|
|
// }
|
|
// [23] return
|
|
// interrupt(isr_rom_min_c64_exit) -- isr_rom_min_c64_exit
|
|
jmp $ea81
|
|
// plex_irq::@1
|
|
__b1:
|
|
// *RASTER = rasterY
|
|
// [24] *RASTER = plex_irq::plexFreeNextYpos1_return#0 -- _deref_pbuc1=vbuxx
|
|
// Set raster IRQ line to the next sprite Y-position
|
|
stx RASTER
|
|
jmp __b2
|
|
}
|
|
// main
|
|
main: {
|
|
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET_DEFAULT)/4&$f
|
|
.label s = 2
|
|
.label __13 = $17
|
|
// asm
|
|
// asm { sei }
|
|
// Create 2x2 font from CHARGEN
|
|
sei
|
|
// *PROCPORT = PROCPORT_RAM_CHARROM
|
|
// [26] *PROCPORT = PROCPORT_RAM_CHARROM -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_CHARROM
|
|
sta PROCPORT
|
|
// font_2x2(CHARGEN, FONT)
|
|
// [27] call font_2x2
|
|
// [91] phi from main to font_2x2 [phi:main->font_2x2]
|
|
jsr font_2x2
|
|
// main::@9
|
|
// *PROCPORT = PROCPORT_BASIC_KERNEL_IO
|
|
// [28] *PROCPORT = PROCPORT_BASIC_KERNEL_IO -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_BASIC_KERNEL_IO
|
|
sta PROCPORT
|
|
// asm
|
|
// asm { cli }
|
|
cli
|
|
// font_2x2_to_sprites(FONT, SPRITES, 64)
|
|
// [30] call font_2x2_to_sprites
|
|
// Convert font to sprites
|
|
// [131] phi from main::@9 to font_2x2_to_sprites [phi:main::@9->font_2x2_to_sprites]
|
|
jsr font_2x2_to_sprites
|
|
// [31] phi from main::@9 to main::@10 [phi:main::@9->main::@10]
|
|
// main::@10
|
|
// plexInit(SCREEN)
|
|
// [32] call plexInit
|
|
// Initialize the multiplexer
|
|
// [156] phi from main::@10 to plexInit [phi:main::@10->plexInit]
|
|
jsr plexInit
|
|
// [33] phi from main::@10 to main::toD0181 [phi:main::@10->main::toD0181]
|
|
// main::toD0181
|
|
// main::@8
|
|
// *D018 = toD018(SCREEN, CHARSET_DEFAULT)
|
|
// [34] *D018 = main::toD0181_return#0 -- _deref_pbuc1=vbuc2
|
|
// Show screen
|
|
lda #toD0181_return
|
|
sta D018
|
|
// [35] phi from main::@8 to main::@1 [phi:main::@8->main::@1]
|
|
// [35] phi main::x#2 = 0 [phi:main::@8->main::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [35] phi main::s#2 = 0 [phi:main::@8->main::@1#1] -- vbuz1=vbuc1
|
|
txa
|
|
sta.z s
|
|
// Set the x-positions & pointers
|
|
// main::@1
|
|
__b1:
|
|
// for(char s=0, x=0;s<PLEX_COUNT;s++,x+=8)
|
|
// [36] if(main::s#2<PLEX_COUNT) goto main::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z s
|
|
cmp #PLEX_COUNT
|
|
bcc __b2
|
|
// main::@3
|
|
// *SPRITES_ENABLE = 0xff
|
|
// [37] *SPRITES_ENABLE = $ff -- _deref_pbuc1=vbuc2
|
|
// Enable & initialize sprites
|
|
lda #$ff
|
|
sta SPRITES_ENABLE
|
|
// [38] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
|
|
// [38] phi main::s1#2 = 0 [phi:main::@3->main::@4#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [38] phi from main::@4 to main::@4 [phi:main::@4->main::@4]
|
|
// [38] phi main::s1#2 = main::s1#1 [phi:main::@4->main::@4#0] -- register_copy
|
|
// main::@4
|
|
__b4:
|
|
// SPRITES_COLOR[s] = WHITE
|
|
// [39] SPRITES_COLOR[main::s1#2] = WHITE -- pbuc1_derefidx_vbuxx=vbuc2
|
|
lda #WHITE
|
|
sta SPRITES_COLOR,x
|
|
// for(char s: 0..7)
|
|
// [40] main::s1#1 = ++ main::s1#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [41] if(main::s1#1!=8) goto main::@4 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #8
|
|
bne __b4
|
|
// [42] phi from main::@4 to main::@5 [phi:main::@4->main::@5]
|
|
// main::@5
|
|
// plex_move()
|
|
// [43] call plex_move
|
|
// Move the sprites
|
|
// [163] phi from main::@5 to plex_move [phi:main::@5->plex_move]
|
|
// [163] phi scroll_text_next#27 = SCROLL_TEXT [phi:main::@5->plex_move#0] -- pbuz1=pbuc1
|
|
lda #<SCROLL_TEXT
|
|
sta.z scroll_text_next
|
|
lda #>SCROLL_TEXT
|
|
sta.z scroll_text_next+1
|
|
// [163] phi x_movement_idx#11 = 0 [phi:main::@5->plex_move#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z x_movement_idx
|
|
// [163] phi y_sin_idx#11 = 0 [phi:main::@5->plex_move#2] -- vbuz1=vbuc1
|
|
sta.z y_sin_idx
|
|
jsr plex_move
|
|
// [44] phi from main::@5 to main::@11 [phi:main::@5->main::@11]
|
|
// main::@11
|
|
// plexSort()
|
|
// [45] call plexSort
|
|
// Sort the sprites by y-position
|
|
// [186] phi from main::@11 to plexSort [phi:main::@11->plexSort]
|
|
jsr plexSort
|
|
// main::@12
|
|
// asm
|
|
// asm { sei }
|
|
// Enable the plex IRQ
|
|
sei
|
|
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
|
|
// [47] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
|
|
// Disable CIA 1 Timer IRQ
|
|
lda #CIA_INTERRUPT_CLEAR
|
|
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
|
|
// *VIC_CONTROL &=0x7f
|
|
// [48] *VIC_CONTROL = *VIC_CONTROL & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
|
// Set raster line to 0x00
|
|
lda #$7f
|
|
and VIC_CONTROL
|
|
sta VIC_CONTROL
|
|
// *RASTER = 0x28
|
|
// [49] *RASTER = $28 -- _deref_pbuc1=vbuc2
|
|
lda #$28
|
|
sta RASTER
|
|
// *IRQ_ENABLE = IRQ_RASTER
|
|
// [50] *IRQ_ENABLE = IRQ_RASTER -- _deref_pbuc1=vbuc2
|
|
// Enable Raster Interrupt
|
|
lda #IRQ_RASTER
|
|
sta IRQ_ENABLE
|
|
// *IRQ_STATUS = IRQ_RASTER
|
|
// [51] *IRQ_STATUS = IRQ_RASTER -- _deref_pbuc1=vbuc2
|
|
// Acknowledge any IRQ
|
|
sta IRQ_STATUS
|
|
// *KERNEL_IRQ = &plex_irq
|
|
// [52] *KERNEL_IRQ = &plex_irq -- _deref_qprc1=pprc2
|
|
// Set the IRQ routine
|
|
lda #<plex_irq
|
|
sta KERNEL_IRQ
|
|
lda #>plex_irq
|
|
sta KERNEL_IRQ+1
|
|
// asm
|
|
// asm { cli }
|
|
cli
|
|
// main::@6
|
|
__b6:
|
|
// while(!frame_done)
|
|
// [54] if(frame_done) goto main::@7 -- vboz1_then_la1
|
|
lda.z frame_done
|
|
cmp #0
|
|
bne __b7
|
|
jmp __b6
|
|
// main::@7
|
|
__b7:
|
|
// frame_done = false
|
|
// [55] frame_done = false -- vboz1=vboc1
|
|
lda #0
|
|
sta.z frame_done
|
|
// plex_move()
|
|
// [56] call plex_move
|
|
//*BORDER_COLOR = RED;
|
|
// Move the sprites
|
|
// [163] phi from main::@7 to plex_move [phi:main::@7->plex_move]
|
|
// [163] phi scroll_text_next#27 = scroll_text_next#14 [phi:main::@7->plex_move#0] -- register_copy
|
|
// [163] phi x_movement_idx#11 = x_movement_idx#13 [phi:main::@7->plex_move#1] -- register_copy
|
|
// [163] phi y_sin_idx#11 = y_sin_idx#13 [phi:main::@7->plex_move#2] -- register_copy
|
|
jsr plex_move
|
|
// [57] phi from main::@7 to main::@13 [phi:main::@7->main::@13]
|
|
// main::@13
|
|
// plexSort()
|
|
// [58] call plexSort
|
|
// Sort the sprites by y-position
|
|
// [186] phi from main::@13 to plexSort [phi:main::@13->plexSort]
|
|
jsr plexSort
|
|
jmp __b6
|
|
// main::@2
|
|
__b2:
|
|
// PLEX_PTR[s] = SPRITE_0+' '
|
|
// [59] PLEX_PTR[main::s#2] = SPRITE_0#0+' ' -- pbuc1_derefidx_vbuz1=vbuc2
|
|
lda #SPRITE_0+' '
|
|
ldy.z s
|
|
sta PLEX_PTR,y
|
|
// PLEX_XPOS[s] = { XMOVEMENT_HI[x], XMOVEMENT[x] }
|
|
// [60] main::$12 = main::s#2 << 1 -- vbuyy=vbuz1_rol_1
|
|
tya
|
|
asl
|
|
tay
|
|
// [61] main::$13 = XMOVEMENT_HI[main::x#2] w= XMOVEMENT[main::x#2] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
|
|
lda XMOVEMENT_HI,x
|
|
sta.z __13+1
|
|
lda XMOVEMENT,x
|
|
sta.z __13
|
|
// [62] PLEX_XPOS[main::$12] = main::$13 -- pwuc1_derefidx_vbuyy=vwuz1
|
|
sta PLEX_XPOS,y
|
|
lda.z __13+1
|
|
sta PLEX_XPOS+1,y
|
|
// x+=8
|
|
// [63] main::x#1 = main::x#2 + 8 -- vbuxx=vbuxx_plus_vbuc1
|
|
txa
|
|
axs #-[8]
|
|
// for(char s=0, x=0;s<PLEX_COUNT;s++,x+=8)
|
|
// [64] main::s#1 = ++ main::s#2 -- vbuz1=_inc_vbuz1
|
|
inc.z s
|
|
// [35] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
|
// [35] phi main::x#2 = main::x#1 [phi:main::@2->main::@1#0] -- register_copy
|
|
// [35] phi main::s#2 = main::s#1 [phi:main::@2->main::@1#1] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// plexShowSprite
|
|
// Show the next sprite.
|
|
// plexSort() prepares showing the sprites
|
|
plexShowSprite: {
|
|
.label plex_sprite_idx2 = $19
|
|
// plex_sprite_idx2 = plex_sprite_idx*2
|
|
// [65] plexShowSprite::plex_sprite_idx2#0 = plex_sprite_idx << 1 -- vbuz1=vbuz2_rol_1
|
|
lda.z plex_sprite_idx
|
|
asl
|
|
sta.z plex_sprite_idx2
|
|
// ypos = PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]]
|
|
// [66] plexShowSprite::plexFreeAdd1_ypos#0 = PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]] -- vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuz1)
|
|
ldx.z plex_show_idx
|
|
ldy PLEX_SORTED_IDX,x
|
|
lda PLEX_YPOS,y
|
|
// SPRITES_YPOS[plex_sprite_idx2] = ypos
|
|
// [67] SPRITES_YPOS[plexShowSprite::plex_sprite_idx2#0] = plexShowSprite::plexFreeAdd1_ypos#0 -- pbuc1_derefidx_vbuz1=vbuaa
|
|
ldy.z plex_sprite_idx2
|
|
sta SPRITES_YPOS,y
|
|
// plexShowSprite::plexFreeAdd1
|
|
// ypos+22
|
|
// [68] plexShowSprite::plexFreeAdd1_$0 = plexShowSprite::plexFreeAdd1_ypos#0 + $16 -- vbuaa=vbuaa_plus_vbuc1
|
|
clc
|
|
adc #$16
|
|
// PLEX_FREE_YPOS[plex_free_next] = ypos+22
|
|
// [69] PLEX_FREE_YPOS[plex_free_next] = plexShowSprite::plexFreeAdd1_$0 -- pbuc1_derefidx_vbuz1=vbuaa
|
|
ldy.z plex_free_next
|
|
sta PLEX_FREE_YPOS,y
|
|
// plex_free_next+1
|
|
// [70] plexShowSprite::plexFreeAdd1_$1 = plex_free_next + 1 -- vbuaa=vbuz1_plus_1
|
|
tya
|
|
clc
|
|
adc #1
|
|
// (plex_free_next+1)&7
|
|
// [71] plexShowSprite::plexFreeAdd1_$2 = plexShowSprite::plexFreeAdd1_$1 & 7 -- vbuaa=vbuaa_band_vbuc1
|
|
and #7
|
|
// plex_free_next = (plex_free_next+1)&7
|
|
// [72] plex_free_next = plexShowSprite::plexFreeAdd1_$2 -- vbuz1=vbuaa
|
|
sta.z plex_free_next
|
|
// plexShowSprite::@5
|
|
// PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]]
|
|
// [73] PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]] -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_(pbuc2_derefidx_vbuz3)
|
|
ldy PLEX_SORTED_IDX,x
|
|
lda PLEX_PTR,y
|
|
ldy.z plex_sprite_idx
|
|
sta (PLEX_SCREEN_PTR),y
|
|
// xpos_idx = PLEX_SORTED_IDX[plex_show_idx]
|
|
// [74] plexShowSprite::xpos_idx#0 = PLEX_SORTED_IDX[plex_show_idx] -- vbuaa=pbuc1_derefidx_vbuz1
|
|
ldy.z plex_show_idx
|
|
lda PLEX_SORTED_IDX,y
|
|
// <PLEX_XPOS[xpos_idx]
|
|
// [75] plexShowSprite::$11 = plexShowSprite::xpos_idx#0 << 1 -- vbuxx=vbuaa_rol_1
|
|
asl
|
|
tax
|
|
// [76] plexShowSprite::$2 = < PLEX_XPOS[plexShowSprite::$11] -- vbuaa=_lo_pwuc1_derefidx_vbuxx
|
|
lda PLEX_XPOS,x
|
|
// SPRITES_XPOS[plex_sprite_idx2] = <PLEX_XPOS[xpos_idx]
|
|
// [77] SPRITES_XPOS[plexShowSprite::plex_sprite_idx2#0] = plexShowSprite::$2 -- pbuc1_derefidx_vbuz1=vbuaa
|
|
ldy.z plex_sprite_idx2
|
|
sta SPRITES_XPOS,y
|
|
// >PLEX_XPOS[xpos_idx]
|
|
// [78] plexShowSprite::$3 = > PLEX_XPOS[plexShowSprite::$11] -- vbuaa=_hi_pwuc1_derefidx_vbuxx
|
|
lda PLEX_XPOS+1,x
|
|
// if(>PLEX_XPOS[xpos_idx]!=0)
|
|
// [79] if(plexShowSprite::$3!=0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1
|
|
cmp #0
|
|
bne __b1
|
|
// plexShowSprite::@3
|
|
// 0xff^plex_sprite_msb
|
|
// [80] plexShowSprite::$9 = $ff ^ plex_sprite_msb -- vbuaa=vbuc1_bxor_vbuz1
|
|
lda #$ff
|
|
eor.z plex_sprite_msb
|
|
// *SPRITES_XMSB &= (0xff^plex_sprite_msb)
|
|
// [81] *SPRITES_XMSB = *SPRITES_XMSB & plexShowSprite::$9 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa
|
|
and SPRITES_XMSB
|
|
sta SPRITES_XMSB
|
|
// plexShowSprite::@2
|
|
__b2:
|
|
// plex_sprite_idx+1
|
|
// [82] plexShowSprite::$5 = plex_sprite_idx + 1 -- vbuxx=vbuz1_plus_1
|
|
ldx.z plex_sprite_idx
|
|
inx
|
|
// (plex_sprite_idx+1)&7
|
|
// [83] plexShowSprite::$6 = plexShowSprite::$5 & 7 -- vbuaa=vbuxx_band_vbuc1
|
|
txa
|
|
and #7
|
|
// plex_sprite_idx = (plex_sprite_idx+1)&7
|
|
// [84] plex_sprite_idx = plexShowSprite::$6 -- vbuz1=vbuaa
|
|
sta.z plex_sprite_idx
|
|
// plex_show_idx++;
|
|
// [85] plex_show_idx = ++ plex_show_idx -- vbuz1=_inc_vbuz1
|
|
inc.z plex_show_idx
|
|
// plex_sprite_msb <<=1
|
|
// [86] plex_sprite_msb = plex_sprite_msb << 1 -- vbuz1=vbuz1_rol_1
|
|
asl.z plex_sprite_msb
|
|
// if(plex_sprite_msb==0)
|
|
// [87] if(plex_sprite_msb!=0) goto plexShowSprite::@return -- vbuz1_neq_0_then_la1
|
|
lda.z plex_sprite_msb
|
|
cmp #0
|
|
bne __breturn
|
|
// plexShowSprite::@4
|
|
// plex_sprite_msb = 1
|
|
// [88] plex_sprite_msb = 1 -- vbuz1=vbuc1
|
|
lda #1
|
|
sta.z plex_sprite_msb
|
|
// plexShowSprite::@return
|
|
__breturn:
|
|
// }
|
|
// [89] return
|
|
rts
|
|
// plexShowSprite::@1
|
|
__b1:
|
|
// *SPRITES_XMSB |= plex_sprite_msb
|
|
// [90] *SPRITES_XMSB = *SPRITES_XMSB | plex_sprite_msb -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1
|
|
lda SPRITES_XMSB
|
|
ora.z plex_sprite_msb
|
|
sta SPRITES_XMSB
|
|
jmp __b2
|
|
}
|
|
// font_2x2
|
|
// Create a 2x2-font by doubling all pixels of the 64 first chars
|
|
// The font layout is:
|
|
// - 0x00 - 0x3f Upper left glyphs
|
|
// - 0x40 - 0x7f Upper right glyphs
|
|
// - 0x80 - 0xbf Lower left glyphs
|
|
// - 0xc0 - 0xff Lower right glyphs
|
|
font_2x2: {
|
|
.label __5 = $17
|
|
.label __7 = $17
|
|
.label next_2x2_left = $1a
|
|
.label next_2x2_right = 7
|
|
.label glyph_bits = $b
|
|
.label glyph_bits_2x2 = $17
|
|
.label l2 = $1c
|
|
.label l = $1d
|
|
.label next_2x2_left_1 = 5
|
|
.label next_2x2 = $1a
|
|
.label next_original = 3
|
|
.label c = $e
|
|
// [92] phi from font_2x2 to font_2x2::@1 [phi:font_2x2->font_2x2::@1]
|
|
// [92] phi font_2x2::c#11 = 0 [phi:font_2x2->font_2x2::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z c
|
|
// [92] phi font_2x2::next_original#4 = CHARGEN [phi:font_2x2->font_2x2::@1#1] -- pbuz1=pbuc1
|
|
lda #<CHARGEN
|
|
sta.z next_original
|
|
lda #>CHARGEN
|
|
sta.z next_original+1
|
|
// [92] phi font_2x2::next_2x2_left#0 = FONT [phi:font_2x2->font_2x2::@1#2] -- pbuz1=pbuc1
|
|
lda #<FONT
|
|
sta.z next_2x2_left
|
|
lda #>FONT
|
|
sta.z next_2x2_left+1
|
|
// [92] phi from font_2x2::@9 to font_2x2::@1 [phi:font_2x2::@9->font_2x2::@1]
|
|
// [92] phi font_2x2::c#11 = font_2x2::c#1 [phi:font_2x2::@9->font_2x2::@1#0] -- register_copy
|
|
// [92] phi font_2x2::next_original#4 = font_2x2::next_original#1 [phi:font_2x2::@9->font_2x2::@1#1] -- register_copy
|
|
// [92] phi font_2x2::next_2x2_left#0 = font_2x2::next_2x2#1 [phi:font_2x2::@9->font_2x2::@1#2] -- register_copy
|
|
// font_2x2::@1
|
|
__b1:
|
|
// next_2x2_right = next_2x2 + 0x40*8
|
|
// [93] font_2x2::next_2x2_right#0 = font_2x2::next_2x2_left#0 + (word)$40*8 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z next_2x2_left
|
|
adc #<$40*8
|
|
sta.z next_2x2_right
|
|
lda.z next_2x2_left+1
|
|
adc #>$40*8
|
|
sta.z next_2x2_right+1
|
|
// [94] font_2x2::next_2x2_left#10 = font_2x2::next_2x2_left#0 -- pbuz1=pbuz2
|
|
lda.z next_2x2_left
|
|
sta.z next_2x2_left_1
|
|
lda.z next_2x2_left+1
|
|
sta.z next_2x2_left_1+1
|
|
// [95] phi from font_2x2::@1 to font_2x2::@2 [phi:font_2x2::@1->font_2x2::@2]
|
|
// [95] phi font_2x2::next_2x2_right#7 = font_2x2::next_2x2_right#0 [phi:font_2x2::@1->font_2x2::@2#0] -- register_copy
|
|
// [95] phi font_2x2::l2#8 = 0 [phi:font_2x2::@1->font_2x2::@2#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z l2
|
|
// [95] phi font_2x2::next_2x2_left#7 = font_2x2::next_2x2_left#10 [phi:font_2x2::@1->font_2x2::@2#2] -- register_copy
|
|
// [95] phi font_2x2::l#2 = 0 [phi:font_2x2::@1->font_2x2::@2#3] -- vbuz1=vbuc1
|
|
sta.z l
|
|
// [95] phi from font_2x2::@8 to font_2x2::@2 [phi:font_2x2::@8->font_2x2::@2]
|
|
// [95] phi font_2x2::next_2x2_right#7 = font_2x2::next_2x2_right#8 [phi:font_2x2::@8->font_2x2::@2#0] -- register_copy
|
|
// [95] phi font_2x2::l2#8 = font_2x2::l2#9 [phi:font_2x2::@8->font_2x2::@2#1] -- register_copy
|
|
// [95] phi font_2x2::next_2x2_left#7 = font_2x2::next_2x2_left#8 [phi:font_2x2::@8->font_2x2::@2#2] -- register_copy
|
|
// [95] phi font_2x2::l#2 = font_2x2::l#1 [phi:font_2x2::@8->font_2x2::@2#3] -- register_copy
|
|
// font_2x2::@2
|
|
__b2:
|
|
// glyph_bits = next_original[l]
|
|
// [96] font_2x2::glyph_bits#0 = font_2x2::next_original#4[font_2x2::l#2] -- vbuz1=pbuz2_derefidx_vbuz3
|
|
ldy.z l
|
|
lda (next_original),y
|
|
sta.z glyph_bits
|
|
// [97] phi from font_2x2::@2 to font_2x2::@3 [phi:font_2x2::@2->font_2x2::@3]
|
|
// [97] phi font_2x2::b#2 = 0 [phi:font_2x2::@2->font_2x2::@3#0] -- vbuyy=vbuc1
|
|
ldy #0
|
|
// [97] phi font_2x2::glyph_bits_2x2#3 = 0 [phi:font_2x2::@2->font_2x2::@3#1] -- vwuz1=vwuc1
|
|
tya
|
|
sta.z glyph_bits_2x2
|
|
sta.z glyph_bits_2x2+1
|
|
// [97] phi font_2x2::glyph_bits#2 = font_2x2::glyph_bits#0 [phi:font_2x2::@2->font_2x2::@3#2] -- register_copy
|
|
// [97] phi from font_2x2::@5 to font_2x2::@3 [phi:font_2x2::@5->font_2x2::@3]
|
|
// [97] phi font_2x2::b#2 = font_2x2::b#1 [phi:font_2x2::@5->font_2x2::@3#0] -- register_copy
|
|
// [97] phi font_2x2::glyph_bits_2x2#3 = font_2x2::glyph_bits_2x2#2 [phi:font_2x2::@5->font_2x2::@3#1] -- register_copy
|
|
// [97] phi font_2x2::glyph_bits#2 = font_2x2::glyph_bits#1 [phi:font_2x2::@5->font_2x2::@3#2] -- register_copy
|
|
// font_2x2::@3
|
|
__b3:
|
|
// glyph_bits&0x80
|
|
// [98] font_2x2::$1 = font_2x2::glyph_bits#2 & $80 -- vbuaa=vbuz1_band_vbuc1
|
|
lda #$80
|
|
and.z glyph_bits
|
|
// (glyph_bits&0x80)?1uc:0uc
|
|
// [99] if(0!=font_2x2::$1) goto font_2x2::@4 -- 0_neq_vbuaa_then_la1
|
|
cmp #0
|
|
bne __b4
|
|
// [101] phi from font_2x2::@3 to font_2x2::@5 [phi:font_2x2::@3->font_2x2::@5]
|
|
// [101] phi font_2x2::glyph_bit#0 = 0 [phi:font_2x2::@3->font_2x2::@5#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp __b5
|
|
// [100] phi from font_2x2::@3 to font_2x2::@4 [phi:font_2x2::@3->font_2x2::@4]
|
|
// font_2x2::@4
|
|
__b4:
|
|
// (glyph_bits&0x80)?1uc:0uc
|
|
// [101] phi from font_2x2::@4 to font_2x2::@5 [phi:font_2x2::@4->font_2x2::@5]
|
|
// [101] phi font_2x2::glyph_bit#0 = 1 [phi:font_2x2::@4->font_2x2::@5#0] -- vbuxx=vbuc1
|
|
ldx #1
|
|
// font_2x2::@5
|
|
__b5:
|
|
// glyph_bits_2x2<<1
|
|
// [102] font_2x2::$5 = font_2x2::glyph_bits_2x2#3 << 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z __5
|
|
rol.z __5+1
|
|
// glyph_bits_2x2 = glyph_bits_2x2<<1|glyph_bit
|
|
// [103] font_2x2::glyph_bits_2x2#1 = font_2x2::$5 | font_2x2::glyph_bit#0 -- vwuz1=vwuz1_bor_vbuxx
|
|
txa
|
|
ora.z glyph_bits_2x2
|
|
sta.z glyph_bits_2x2
|
|
// glyph_bits_2x2<<1
|
|
// [104] font_2x2::$7 = font_2x2::glyph_bits_2x2#1 << 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z __7
|
|
rol.z __7+1
|
|
// glyph_bits_2x2 = glyph_bits_2x2<<1|glyph_bit
|
|
// [105] font_2x2::glyph_bits_2x2#2 = font_2x2::$7 | font_2x2::glyph_bit#0 -- vwuz1=vwuz1_bor_vbuxx
|
|
txa
|
|
ora.z glyph_bits_2x2
|
|
sta.z glyph_bits_2x2
|
|
// glyph_bits <<= 1
|
|
// [106] font_2x2::glyph_bits#1 = font_2x2::glyph_bits#2 << 1 -- vbuz1=vbuz1_rol_1
|
|
// Move to next bit
|
|
asl.z glyph_bits
|
|
// for(char b: 0..7)
|
|
// [107] font_2x2::b#1 = ++ font_2x2::b#2 -- vbuyy=_inc_vbuyy
|
|
iny
|
|
// [108] if(font_2x2::b#1!=8) goto font_2x2::@3 -- vbuyy_neq_vbuc1_then_la1
|
|
cpy #8
|
|
bne __b3
|
|
// font_2x2::@6
|
|
// >glyph_bits_2x2
|
|
// [109] font_2x2::$10 = > font_2x2::glyph_bits_2x2#2 -- vbuaa=_hi_vwuz1
|
|
lda.z glyph_bits_2x2+1
|
|
// next_2x2_left[l2] = >glyph_bits_2x2
|
|
// [110] font_2x2::next_2x2_left#7[font_2x2::l2#8] = font_2x2::$10 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
// Put the generated 2x2-line into the 2x2-font twice
|
|
ldy.z l2
|
|
sta (next_2x2_left_1),y
|
|
// l2+1
|
|
// [111] font_2x2::$11 = font_2x2::l2#8 + 1 -- vbuyy=vbuz1_plus_1
|
|
iny
|
|
// >glyph_bits_2x2
|
|
// [112] font_2x2::$12 = > font_2x2::glyph_bits_2x2#2 -- vbuaa=_hi_vwuz1
|
|
// next_2x2_left[l2+1] = >glyph_bits_2x2
|
|
// [113] font_2x2::next_2x2_left#7[font_2x2::$11] = font_2x2::$12 -- pbuz1_derefidx_vbuyy=vbuaa
|
|
sta (next_2x2_left_1),y
|
|
// <glyph_bits_2x2
|
|
// [114] font_2x2::$13 = < font_2x2::glyph_bits_2x2#2 -- vbuaa=_lo_vwuz1
|
|
lda.z glyph_bits_2x2
|
|
// next_2x2_right[l2] = <glyph_bits_2x2
|
|
// [115] font_2x2::next_2x2_right#7[font_2x2::l2#8] = font_2x2::$13 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z l2
|
|
sta (next_2x2_right),y
|
|
// l2+1
|
|
// [116] font_2x2::$14 = font_2x2::l2#8 + 1 -- vbuyy=vbuz1_plus_1
|
|
iny
|
|
// <glyph_bits_2x2
|
|
// [117] font_2x2::$15 = < font_2x2::glyph_bits_2x2#2 -- vbuaa=_lo_vwuz1
|
|
// next_2x2_right[l2+1] = <glyph_bits_2x2
|
|
// [118] font_2x2::next_2x2_right#7[font_2x2::$14] = font_2x2::$15 -- pbuz1_derefidx_vbuyy=vbuaa
|
|
sta (next_2x2_right),y
|
|
// l2 += 2
|
|
// [119] font_2x2::l2#1 = font_2x2::l2#8 + 2 -- vbuz1=vbuz1_plus_2
|
|
lda.z l2
|
|
clc
|
|
adc #2
|
|
sta.z l2
|
|
// if(l2==8)
|
|
// [120] if(font_2x2::l2#1!=8) goto font_2x2::@8 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #8
|
|
cmp.z l2
|
|
bne __b8
|
|
// font_2x2::@7
|
|
// next_2x2_left = next_2x2 + 0x80*8
|
|
// [121] font_2x2::next_2x2_left#1 = font_2x2::next_2x2_left#0 + (word)$80*8 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z next_2x2_left
|
|
adc #<$80*8
|
|
sta.z next_2x2_left_1
|
|
lda.z next_2x2_left+1
|
|
adc #>$80*8
|
|
sta.z next_2x2_left_1+1
|
|
// next_2x2_right = next_2x2 + 0xc0*8
|
|
// [122] font_2x2::next_2x2_right#1 = font_2x2::next_2x2_left#0 + (word)$c0*8 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z next_2x2_left
|
|
adc #<$c0*8
|
|
sta.z next_2x2_right
|
|
lda.z next_2x2_left+1
|
|
adc #>$c0*8
|
|
sta.z next_2x2_right+1
|
|
// [123] phi from font_2x2::@7 to font_2x2::@8 [phi:font_2x2::@7->font_2x2::@8]
|
|
// [123] phi font_2x2::next_2x2_right#8 = font_2x2::next_2x2_right#1 [phi:font_2x2::@7->font_2x2::@8#0] -- register_copy
|
|
// [123] phi font_2x2::l2#9 = 0 [phi:font_2x2::@7->font_2x2::@8#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z l2
|
|
// [123] phi font_2x2::next_2x2_left#8 = font_2x2::next_2x2_left#1 [phi:font_2x2::@7->font_2x2::@8#2] -- register_copy
|
|
// [123] phi from font_2x2::@6 to font_2x2::@8 [phi:font_2x2::@6->font_2x2::@8]
|
|
// [123] phi font_2x2::next_2x2_right#8 = font_2x2::next_2x2_right#7 [phi:font_2x2::@6->font_2x2::@8#0] -- register_copy
|
|
// [123] phi font_2x2::l2#9 = font_2x2::l2#1 [phi:font_2x2::@6->font_2x2::@8#1] -- register_copy
|
|
// [123] phi font_2x2::next_2x2_left#8 = font_2x2::next_2x2_left#7 [phi:font_2x2::@6->font_2x2::@8#2] -- register_copy
|
|
// font_2x2::@8
|
|
__b8:
|
|
// for(char l: 0..7)
|
|
// [124] font_2x2::l#1 = ++ font_2x2::l#2 -- vbuz1=_inc_vbuz1
|
|
inc.z l
|
|
// [125] if(font_2x2::l#1!=8) goto font_2x2::@2 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #8
|
|
cmp.z l
|
|
bne __b2
|
|
// font_2x2::@9
|
|
// next_2x2 += 8
|
|
// [126] font_2x2::next_2x2#1 = font_2x2::next_2x2_left#0 + 8 -- pbuz1=pbuz1_plus_vbuc1
|
|
clc
|
|
adc.z next_2x2
|
|
sta.z next_2x2
|
|
bcc !+
|
|
inc.z next_2x2+1
|
|
!:
|
|
// next_original += 8
|
|
// [127] font_2x2::next_original#1 = font_2x2::next_original#4 + 8 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #8
|
|
clc
|
|
adc.z next_original
|
|
sta.z next_original
|
|
bcc !+
|
|
inc.z next_original+1
|
|
!:
|
|
// for(char c: 0..0x3f)
|
|
// [128] font_2x2::c#1 = ++ font_2x2::c#11 -- vbuz1=_inc_vbuz1
|
|
inc.z c
|
|
// [129] if(font_2x2::c#1!=$40) goto font_2x2::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$40
|
|
cmp.z c
|
|
beq !__b1+
|
|
jmp __b1
|
|
!__b1:
|
|
// font_2x2::@return
|
|
// }
|
|
// [130] return
|
|
rts
|
|
}
|
|
// font_2x2_to_sprites
|
|
// Convert a 2x2-font to sprites
|
|
// - font_2x2 The source 2x2-font
|
|
// - sprites The destination sprites
|
|
// - num_chars The number of chars to convert
|
|
font_2x2_to_sprites: {
|
|
.const num_chars = $40
|
|
.label __3 = $1c
|
|
.label char_right = 7
|
|
.label sprite_idx = $1d
|
|
.label char_left = 5
|
|
.label char_current = $1a
|
|
.label sprite = 3
|
|
.label c = $e
|
|
// [132] phi from font_2x2_to_sprites to font_2x2_to_sprites::@1 [phi:font_2x2_to_sprites->font_2x2_to_sprites::@1]
|
|
// [132] phi font_2x2_to_sprites::sprite#4 = SPRITES [phi:font_2x2_to_sprites->font_2x2_to_sprites::@1#0] -- pbuz1=pbuc1
|
|
lda #<SPRITES
|
|
sta.z sprite
|
|
lda #>SPRITES
|
|
sta.z sprite+1
|
|
// [132] phi font_2x2_to_sprites::char_current#2 = FONT [phi:font_2x2_to_sprites->font_2x2_to_sprites::@1#1] -- pbuz1=pbuc1
|
|
lda #<FONT
|
|
sta.z char_current
|
|
lda #>FONT
|
|
sta.z char_current+1
|
|
// [132] phi font_2x2_to_sprites::c#2 = 0 [phi:font_2x2_to_sprites->font_2x2_to_sprites::@1#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z c
|
|
// font_2x2_to_sprites::@1
|
|
__b1:
|
|
// for(char c=0;c<num_chars;c++)
|
|
// [133] if(font_2x2_to_sprites::c#2<font_2x2_to_sprites::num_chars#0) goto font_2x2_to_sprites::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z c
|
|
cmp #num_chars
|
|
bcc __b2
|
|
// font_2x2_to_sprites::@return
|
|
// }
|
|
// [134] return
|
|
rts
|
|
// font_2x2_to_sprites::@2
|
|
__b2:
|
|
// char_right = char_current + 0x40*8
|
|
// [135] font_2x2_to_sprites::char_right#0 = font_2x2_to_sprites::char_current#2 + (word)$40*8 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z char_current
|
|
adc #<$40*8
|
|
sta.z char_right
|
|
lda.z char_current+1
|
|
adc #>$40*8
|
|
sta.z char_right+1
|
|
// [136] font_2x2_to_sprites::char_left#6 = font_2x2_to_sprites::char_current#2 -- pbuz1=pbuz2
|
|
lda.z char_current
|
|
sta.z char_left
|
|
lda.z char_current+1
|
|
sta.z char_left+1
|
|
// [137] phi from font_2x2_to_sprites::@2 to font_2x2_to_sprites::@3 [phi:font_2x2_to_sprites::@2->font_2x2_to_sprites::@3]
|
|
// [137] phi font_2x2_to_sprites::char_right#3 = font_2x2_to_sprites::char_right#0 [phi:font_2x2_to_sprites::@2->font_2x2_to_sprites::@3#0] -- register_copy
|
|
// [137] phi font_2x2_to_sprites::sprite_idx#4 = 0 [phi:font_2x2_to_sprites::@2->font_2x2_to_sprites::@3#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z sprite_idx
|
|
// [137] phi font_2x2_to_sprites::char_left#3 = font_2x2_to_sprites::char_left#6 [phi:font_2x2_to_sprites::@2->font_2x2_to_sprites::@3#2] -- register_copy
|
|
// [137] phi font_2x2_to_sprites::i#2 = 0 [phi:font_2x2_to_sprites::@2->font_2x2_to_sprites::@3#3] -- vbuxx=vbuc1
|
|
tax
|
|
// [137] phi from font_2x2_to_sprites::@5 to font_2x2_to_sprites::@3 [phi:font_2x2_to_sprites::@5->font_2x2_to_sprites::@3]
|
|
// [137] phi font_2x2_to_sprites::char_right#3 = font_2x2_to_sprites::char_right#4 [phi:font_2x2_to_sprites::@5->font_2x2_to_sprites::@3#0] -- register_copy
|
|
// [137] phi font_2x2_to_sprites::sprite_idx#4 = font_2x2_to_sprites::sprite_idx#3 [phi:font_2x2_to_sprites::@5->font_2x2_to_sprites::@3#1] -- register_copy
|
|
// [137] phi font_2x2_to_sprites::char_left#3 = font_2x2_to_sprites::char_left#4 [phi:font_2x2_to_sprites::@5->font_2x2_to_sprites::@3#2] -- register_copy
|
|
// [137] phi font_2x2_to_sprites::i#2 = font_2x2_to_sprites::i#1 [phi:font_2x2_to_sprites::@5->font_2x2_to_sprites::@3#3] -- register_copy
|
|
// font_2x2_to_sprites::@3
|
|
__b3:
|
|
// i&7
|
|
// [138] font_2x2_to_sprites::$3 = font_2x2_to_sprites::i#2 & 7 -- vbuz1=vbuxx_band_vbuc1
|
|
lda #7
|
|
sax.z __3
|
|
// sprite[sprite_idx++] = char_left[i&7]
|
|
// [139] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#4] = font_2x2_to_sprites::char_left#3[font_2x2_to_sprites::$3] -- pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuz4
|
|
ldy.z __3
|
|
lda (char_left),y
|
|
ldy.z sprite_idx
|
|
sta (sprite),y
|
|
// sprite[sprite_idx++] = char_left[i&7];
|
|
// [140] font_2x2_to_sprites::sprite_idx#1 = ++ font_2x2_to_sprites::sprite_idx#4 -- vbuz1=_inc_vbuz1
|
|
inc.z sprite_idx
|
|
// sprite[sprite_idx++] = char_right[i&7]
|
|
// [141] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#1] = font_2x2_to_sprites::char_right#3[font_2x2_to_sprites::$3] -- pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuz4
|
|
ldy.z __3
|
|
lda (char_right),y
|
|
ldy.z sprite_idx
|
|
sta (sprite),y
|
|
// sprite[sprite_idx++] = char_right[i&7];
|
|
// [142] font_2x2_to_sprites::sprite_idx#2 = ++ font_2x2_to_sprites::sprite_idx#1 -- vbuyy=_inc_vbuz1
|
|
iny
|
|
// sprite[sprite_idx++] = 0x00
|
|
// [143] font_2x2_to_sprites::sprite#4[font_2x2_to_sprites::sprite_idx#2] = 0 -- pbuz1_derefidx_vbuyy=vbuc1
|
|
lda #0
|
|
sta (sprite),y
|
|
// sprite[sprite_idx++] = 0x00;
|
|
// [144] font_2x2_to_sprites::sprite_idx#3 = ++ font_2x2_to_sprites::sprite_idx#2 -- vbuz1=_inc_vbuyy
|
|
iny
|
|
sty.z sprite_idx
|
|
// if(i==7)
|
|
// [145] if(font_2x2_to_sprites::i#2==7) goto font_2x2_to_sprites::@4 -- vbuxx_eq_vbuc1_then_la1
|
|
cpx #7
|
|
beq __b4
|
|
// font_2x2_to_sprites::@6
|
|
// if(i==15)
|
|
// [146] if(font_2x2_to_sprites::i#2!=$f) goto font_2x2_to_sprites::@8 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$f
|
|
bne __b5
|
|
// [148] phi from font_2x2_to_sprites::@6 to font_2x2_to_sprites::@5 [phi:font_2x2_to_sprites::@6->font_2x2_to_sprites::@5]
|
|
// [148] phi font_2x2_to_sprites::char_right#4 = FONT+' '*8 [phi:font_2x2_to_sprites::@6->font_2x2_to_sprites::@5#0] -- pbuz1=pbuc1
|
|
lda #<FONT+' '*8
|
|
sta.z char_right
|
|
lda #>FONT+' '*8
|
|
sta.z char_right+1
|
|
// [148] phi font_2x2_to_sprites::char_left#4 = FONT+' '*8 [phi:font_2x2_to_sprites::@6->font_2x2_to_sprites::@5#1] -- pbuz1=pbuc1
|
|
lda #<FONT+' '*8
|
|
sta.z char_left
|
|
lda #>FONT+' '*8
|
|
sta.z char_left+1
|
|
// [147] phi from font_2x2_to_sprites::@6 to font_2x2_to_sprites::@8 [phi:font_2x2_to_sprites::@6->font_2x2_to_sprites::@8]
|
|
// font_2x2_to_sprites::@8
|
|
// [148] phi from font_2x2_to_sprites::@4 font_2x2_to_sprites::@8 to font_2x2_to_sprites::@5 [phi:font_2x2_to_sprites::@4/font_2x2_to_sprites::@8->font_2x2_to_sprites::@5]
|
|
// [148] phi font_2x2_to_sprites::char_right#4 = font_2x2_to_sprites::char_right#1 [phi:font_2x2_to_sprites::@4/font_2x2_to_sprites::@8->font_2x2_to_sprites::@5#0] -- register_copy
|
|
// [148] phi font_2x2_to_sprites::char_left#4 = font_2x2_to_sprites::char_left#1 [phi:font_2x2_to_sprites::@4/font_2x2_to_sprites::@8->font_2x2_to_sprites::@5#1] -- register_copy
|
|
// font_2x2_to_sprites::@5
|
|
__b5:
|
|
// for(char i: 0..20)
|
|
// [149] font_2x2_to_sprites::i#1 = ++ font_2x2_to_sprites::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [150] if(font_2x2_to_sprites::i#1!=$15) goto font_2x2_to_sprites::@3 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$15
|
|
bne __b3
|
|
// font_2x2_to_sprites::@7
|
|
// char_current += 8
|
|
// [151] font_2x2_to_sprites::char_current#1 = font_2x2_to_sprites::char_current#2 + 8 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #8
|
|
clc
|
|
adc.z char_current
|
|
sta.z char_current
|
|
bcc !+
|
|
inc.z char_current+1
|
|
!:
|
|
// sprite += 0x40
|
|
// [152] font_2x2_to_sprites::sprite#1 = font_2x2_to_sprites::sprite#4 + $40 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$40
|
|
clc
|
|
adc.z sprite
|
|
sta.z sprite
|
|
bcc !+
|
|
inc.z sprite+1
|
|
!:
|
|
// for(char c=0;c<num_chars;c++)
|
|
// [153] font_2x2_to_sprites::c#1 = ++ font_2x2_to_sprites::c#2 -- vbuz1=_inc_vbuz1
|
|
inc.z c
|
|
// [132] phi from font_2x2_to_sprites::@7 to font_2x2_to_sprites::@1 [phi:font_2x2_to_sprites::@7->font_2x2_to_sprites::@1]
|
|
// [132] phi font_2x2_to_sprites::sprite#4 = font_2x2_to_sprites::sprite#1 [phi:font_2x2_to_sprites::@7->font_2x2_to_sprites::@1#0] -- register_copy
|
|
// [132] phi font_2x2_to_sprites::char_current#2 = font_2x2_to_sprites::char_current#1 [phi:font_2x2_to_sprites::@7->font_2x2_to_sprites::@1#1] -- register_copy
|
|
// [132] phi font_2x2_to_sprites::c#2 = font_2x2_to_sprites::c#1 [phi:font_2x2_to_sprites::@7->font_2x2_to_sprites::@1#2] -- register_copy
|
|
jmp __b1
|
|
// font_2x2_to_sprites::@4
|
|
__b4:
|
|
// char_left = char_current + 0x80*8
|
|
// [154] font_2x2_to_sprites::char_left#1 = font_2x2_to_sprites::char_current#2 + (word)$80*8 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z char_current
|
|
adc #<$80*8
|
|
sta.z char_left
|
|
lda.z char_current+1
|
|
adc #>$80*8
|
|
sta.z char_left+1
|
|
// char_right = char_current + 0xc0*8
|
|
// [155] font_2x2_to_sprites::char_right#1 = font_2x2_to_sprites::char_current#2 + (word)$c0*8 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z char_current
|
|
adc #<$c0*8
|
|
sta.z char_right
|
|
lda.z char_current+1
|
|
adc #>$c0*8
|
|
sta.z char_right+1
|
|
jmp __b5
|
|
}
|
|
// plexInit
|
|
// Initialize the multiplexer data structures
|
|
plexInit: {
|
|
// plexInit::plexSetScreen1
|
|
// PLEX_SCREEN_PTR = screen+0x3f8
|
|
// [157] PLEX_SCREEN_PTR = SCREEN+$3f8 -- pbuz1=pbuc1
|
|
lda #<SCREEN+$3f8
|
|
sta.z PLEX_SCREEN_PTR
|
|
lda #>SCREEN+$3f8
|
|
sta.z PLEX_SCREEN_PTR+1
|
|
// [158] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1]
|
|
// [158] phi plexInit::i#2 = 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [158] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1]
|
|
// [158] phi plexInit::i#2 = plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy
|
|
// plexInit::@1
|
|
__b1:
|
|
// PLEX_SORTED_IDX[i] = i
|
|
// [159] PLEX_SORTED_IDX[plexInit::i#2] = plexInit::i#2 -- pbuc1_derefidx_vbuxx=vbuxx
|
|
txa
|
|
sta PLEX_SORTED_IDX,x
|
|
// for(char i: 0..PLEX_COUNT-1)
|
|
// [160] plexInit::i#1 = ++ plexInit::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [161] if(plexInit::i#1!=PLEX_COUNT-1+1) goto plexInit::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #PLEX_COUNT-1+1
|
|
bne __b1
|
|
// plexInit::@return
|
|
// }
|
|
// [162] return
|
|
rts
|
|
}
|
|
// plex_move
|
|
// Move the plex sprites in an Y-sine and scroll them to the left.
|
|
plex_move: {
|
|
.label y_idx = $1c
|
|
.label x_idx = $e
|
|
.label s = $b
|
|
.label __7 = $1a
|
|
// y_idx = y_sin_idx
|
|
// [164] plex_move::y_idx#0 = y_sin_idx#11 -- vbuz1=vbuz2
|
|
lda.z y_sin_idx
|
|
sta.z y_idx
|
|
// x_idx = x_movement_idx
|
|
// [165] plex_move::x_idx#0 = x_movement_idx#11 -- vbuz1=vbuz2
|
|
lda.z x_movement_idx
|
|
sta.z x_idx
|
|
// [166] phi from plex_move to plex_move::@1 [phi:plex_move->plex_move::@1]
|
|
// [166] phi scroll_text_next#12 = scroll_text_next#27 [phi:plex_move->plex_move::@1#0] -- register_copy
|
|
// [166] phi plex_move::x_idx#2 = plex_move::x_idx#0 [phi:plex_move->plex_move::@1#1] -- register_copy
|
|
// [166] phi plex_move::s#2 = 0 [phi:plex_move->plex_move::@1#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z s
|
|
// [166] phi plex_move::y_idx#2 = plex_move::y_idx#0 [phi:plex_move->plex_move::@1#3] -- register_copy
|
|
// [166] phi from plex_move::@2 to plex_move::@1 [phi:plex_move::@2->plex_move::@1]
|
|
// [166] phi scroll_text_next#12 = scroll_text_next#14 [phi:plex_move::@2->plex_move::@1#0] -- register_copy
|
|
// [166] phi plex_move::x_idx#2 = plex_move::x_idx#1 [phi:plex_move::@2->plex_move::@1#1] -- register_copy
|
|
// [166] phi plex_move::s#2 = plex_move::s#1 [phi:plex_move::@2->plex_move::@1#2] -- register_copy
|
|
// [166] phi plex_move::y_idx#2 = plex_move::y_idx#1 [phi:plex_move::@2->plex_move::@1#3] -- register_copy
|
|
// plex_move::@1
|
|
__b1:
|
|
// PLEX_YPOS[s] = YSIN[y_idx]
|
|
// [167] PLEX_YPOS[plex_move::s#2] = YSIN[plex_move::y_idx#2] -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
|
|
// Assign sine value
|
|
ldy.z y_idx
|
|
lda YSIN,y
|
|
ldy.z s
|
|
sta PLEX_YPOS,y
|
|
// y_idx += 8
|
|
// [168] plex_move::y_idx#1 = plex_move::y_idx#2 + 8 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z y_idx
|
|
axs #-[8]
|
|
stx.z y_idx
|
|
// PLEX_XPOS[s] = { XMOVEMENT_HI[x_idx], XMOVEMENT[x_idx] }
|
|
// [169] plex_move::$6 = plex_move::s#2 << 1 -- vbuxx=vbuz1_rol_1
|
|
tya
|
|
asl
|
|
tax
|
|
// [170] plex_move::$7 = XMOVEMENT_HI[plex_move::x_idx#2] w= XMOVEMENT[plex_move::x_idx#2] -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2
|
|
ldy.z x_idx
|
|
lda XMOVEMENT_HI,y
|
|
sta.z __7+1
|
|
lda XMOVEMENT,y
|
|
sta.z __7
|
|
// [171] PLEX_XPOS[plex_move::$6] = plex_move::$7 -- pwuc1_derefidx_vbuxx=vwuz1
|
|
sta PLEX_XPOS,x
|
|
lda.z __7+1
|
|
sta PLEX_XPOS+1,x
|
|
// if(x_idx==0)
|
|
// [172] if(plex_move::x_idx#2!=0) goto plex_move::@2 -- vbuz1_neq_0_then_la1
|
|
tya
|
|
cmp #0
|
|
bne __b2
|
|
// plex_move::@4
|
|
// if(*scroll_text_next==0)
|
|
// [173] if(*scroll_text_next#12!=0) goto plex_move::@6 -- _deref_pbuz1_neq_0_then_la1
|
|
ldy #0
|
|
lda (scroll_text_next),y
|
|
cmp #0
|
|
bne __b3
|
|
// [175] phi from plex_move::@4 to plex_move::@3 [phi:plex_move::@4->plex_move::@3]
|
|
// [175] phi scroll_text_next#13 = SCROLL_TEXT [phi:plex_move::@4->plex_move::@3#0] -- pbuz1=pbuc1
|
|
lda #<SCROLL_TEXT
|
|
sta.z scroll_text_next
|
|
lda #>SCROLL_TEXT
|
|
sta.z scroll_text_next+1
|
|
// [174] phi from plex_move::@4 to plex_move::@6 [phi:plex_move::@4->plex_move::@6]
|
|
// plex_move::@6
|
|
// [175] phi from plex_move::@6 to plex_move::@3 [phi:plex_move::@6->plex_move::@3]
|
|
// [175] phi scroll_text_next#13 = scroll_text_next#12 [phi:plex_move::@6->plex_move::@3#0] -- register_copy
|
|
// plex_move::@3
|
|
__b3:
|
|
// SPRITE_0+*scroll_text_next++
|
|
// [176] plex_move::$4 = SPRITE_0#0 + *scroll_text_next#13 -- vbuaa=vbuc1_plus__deref_pbuz1
|
|
lda #SPRITE_0
|
|
clc
|
|
ldy #0
|
|
adc (scroll_text_next),y
|
|
// PLEX_PTR[s] = SPRITE_0+*scroll_text_next++
|
|
// [177] PLEX_PTR[plex_move::s#2] = plex_move::$4 -- pbuc1_derefidx_vbuz1=vbuaa
|
|
// Read next char from the scroll text
|
|
ldy.z s
|
|
sta PLEX_PTR,y
|
|
// PLEX_PTR[s] = SPRITE_0+*scroll_text_next++;
|
|
// [178] scroll_text_next#3 = ++ scroll_text_next#13 -- pbuz1=_inc_pbuz1
|
|
inc.z scroll_text_next
|
|
bne !+
|
|
inc.z scroll_text_next+1
|
|
!:
|
|
// [179] phi from plex_move::@1 plex_move::@3 to plex_move::@2 [phi:plex_move::@1/plex_move::@3->plex_move::@2]
|
|
// [179] phi scroll_text_next#14 = scroll_text_next#12 [phi:plex_move::@1/plex_move::@3->plex_move::@2#0] -- register_copy
|
|
// plex_move::@2
|
|
__b2:
|
|
// x_idx +=8
|
|
// [180] plex_move::x_idx#1 = plex_move::x_idx#2 + 8 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z x_idx
|
|
axs #-[8]
|
|
stx.z x_idx
|
|
// for(char s: 0..PLEX_COUNT-1)
|
|
// [181] plex_move::s#1 = ++ plex_move::s#2 -- vbuz1=_inc_vbuz1
|
|
inc.z s
|
|
// [182] if(plex_move::s#1!=PLEX_COUNT-1+1) goto plex_move::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #PLEX_COUNT-1+1
|
|
cmp.z s
|
|
bne __b1
|
|
// plex_move::@5
|
|
// y_sin_idx += 3
|
|
// [183] y_sin_idx#13 = y_sin_idx#11 + 3 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z y_sin_idx
|
|
axs #-[3]
|
|
stx.z y_sin_idx
|
|
// x_movement_idx++;
|
|
// [184] x_movement_idx#13 = ++ x_movement_idx#11 -- vbuz1=_inc_vbuz1
|
|
inc.z x_movement_idx
|
|
// plex_move::@return
|
|
// }
|
|
// [185] return
|
|
rts
|
|
}
|
|
// plexSort
|
|
// Ensure that the indices in PLEX_SORTED_IDX is sorted based on the y-positions in PLEX_YPOS
|
|
// Assumes that the positions are nearly sorted already (as each sprite just moves a bit)
|
|
// Uses an insertion sort:
|
|
// 1. Moves a marker (m) from the start to end of the array. Every time the marker moves forward all elements before the marker are sorted correctly.
|
|
// 2a. If the next element after the marker is larger that the current element
|
|
// the marker can be moved forwards (as the sorting is correct).
|
|
// 2b. If the next element after the marker is smaller than the current element:
|
|
// elements before the marker are shifted right one at a time until encountering one smaller than the current one.
|
|
// It is then inserted at the spot. Now the marker can move forward.
|
|
plexSort: {
|
|
.label nxt_idx = $1c
|
|
.label nxt_y = $1d
|
|
.label m = $e
|
|
// [187] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1]
|
|
// [187] phi plexSort::m#2 = 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z m
|
|
// [187] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1]
|
|
// [187] phi plexSort::m#2 = plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy
|
|
// plexSort::@1
|
|
__b1:
|
|
// nxt_idx = PLEX_SORTED_IDX[m+1]
|
|
// [188] plexSort::nxt_idx#0 = (PLEX_SORTED_IDX+1)[plexSort::m#2] -- vbuz1=pbuc1_derefidx_vbuz2
|
|
ldy.z m
|
|
lda PLEX_SORTED_IDX+1,y
|
|
sta.z nxt_idx
|
|
// nxt_y = PLEX_YPOS[nxt_idx]
|
|
// [189] plexSort::nxt_y#0 = PLEX_YPOS[plexSort::nxt_idx#0] -- vbuz1=pbuc1_derefidx_vbuz2
|
|
tay
|
|
lda PLEX_YPOS,y
|
|
sta.z nxt_y
|
|
// if(nxt_y<PLEX_YPOS[PLEX_SORTED_IDX[m]])
|
|
// [190] if(plexSort::nxt_y#0>=PLEX_YPOS[PLEX_SORTED_IDX[plexSort::m#2]]) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1
|
|
ldx.z m
|
|
ldy PLEX_SORTED_IDX,x
|
|
cmp PLEX_YPOS,y
|
|
bcs __b2
|
|
// plexSort::@5
|
|
// [191] plexSort::s#6 = plexSort::m#2 -- vbuxx=vbuz1
|
|
// [192] phi from plexSort::@5 plexSort::@7 to plexSort::@3 [phi:plexSort::@5/plexSort::@7->plexSort::@3]
|
|
// [192] phi plexSort::s#3 = plexSort::s#6 [phi:plexSort::@5/plexSort::@7->plexSort::@3#0] -- register_copy
|
|
// plexSort::@3
|
|
__b3:
|
|
// PLEX_SORTED_IDX[s+1] = PLEX_SORTED_IDX[s]
|
|
// [193] (PLEX_SORTED_IDX+1)[plexSort::s#3] = PLEX_SORTED_IDX[plexSort::s#3] -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
|
|
lda PLEX_SORTED_IDX,x
|
|
sta PLEX_SORTED_IDX+1,x
|
|
// s--;
|
|
// [194] plexSort::s#1 = -- plexSort::s#3 -- vbuxx=_dec_vbuxx
|
|
dex
|
|
// while((s!=0xff) && (nxt_y<PLEX_YPOS[PLEX_SORTED_IDX[s]]))
|
|
// [195] if(plexSort::s#1==$ff) goto plexSort::@4 -- vbuxx_eq_vbuc1_then_la1
|
|
cpx #$ff
|
|
beq __b4
|
|
// plexSort::@7
|
|
// [196] if(plexSort::nxt_y#0<PLEX_YPOS[PLEX_SORTED_IDX[plexSort::s#1]]) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
|
|
lda.z nxt_y
|
|
ldy PLEX_SORTED_IDX,x
|
|
cmp PLEX_YPOS,y
|
|
bcc __b3
|
|
// plexSort::@4
|
|
__b4:
|
|
// s++;
|
|
// [197] plexSort::s#2 = ++ plexSort::s#1 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// PLEX_SORTED_IDX[s] = nxt_idx
|
|
// [198] PLEX_SORTED_IDX[plexSort::s#2] = plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuxx=vbuz1
|
|
lda.z nxt_idx
|
|
sta PLEX_SORTED_IDX,x
|
|
// plexSort::@2
|
|
__b2:
|
|
// for(char m: 0..PLEX_COUNT-2)
|
|
// [199] plexSort::m#1 = ++ plexSort::m#2 -- vbuz1=_inc_vbuz1
|
|
inc.z m
|
|
// [200] if(plexSort::m#1!=PLEX_COUNT-2+1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #PLEX_COUNT-2+1
|
|
cmp.z m
|
|
bne __b1
|
|
// plexSort::@6
|
|
// plex_show_idx = 0
|
|
// [201] plex_show_idx = 0 -- vbuz1=vbuc1
|
|
// Prepare for showing the sprites
|
|
lda #0
|
|
sta.z plex_show_idx
|
|
// plex_sprite_idx = 0
|
|
// [202] plex_sprite_idx = 0 -- vbuz1=vbuc1
|
|
sta.z plex_sprite_idx
|
|
// plex_sprite_msb = 1
|
|
// [203] plex_sprite_msb = 1 -- vbuz1=vbuc1
|
|
lda #1
|
|
sta.z plex_sprite_msb
|
|
// [204] phi from plexSort::@6 to plexSort::plexFreePrepare1 [phi:plexSort::@6->plexSort::plexFreePrepare1]
|
|
// plexSort::plexFreePrepare1
|
|
// [205] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1]
|
|
// [205] phi plexSort::plexFreePrepare1_s#2 = 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [205] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1]
|
|
// [205] phi plexSort::plexFreePrepare1_s#2 = plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy
|
|
// plexSort::plexFreePrepare1_@1
|
|
plexFreePrepare1___b1:
|
|
// PLEX_FREE_YPOS[s] = 0
|
|
// [206] PLEX_FREE_YPOS[plexSort::plexFreePrepare1_s#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2
|
|
lda #0
|
|
sta PLEX_FREE_YPOS,x
|
|
// for( char s: 0..7)
|
|
// [207] plexSort::plexFreePrepare1_s#1 = ++ plexSort::plexFreePrepare1_s#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [208] if(plexSort::plexFreePrepare1_s#1!=8) goto plexSort::plexFreePrepare1_@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #8
|
|
bne plexFreePrepare1___b1
|
|
// plexSort::plexFreePrepare1_@2
|
|
// plex_free_next = 0
|
|
// [209] plex_free_next = 0 -- vbuz1=vbuc1
|
|
sta.z plex_free_next
|
|
// plexSort::@return
|
|
// }
|
|
// [210] return
|
|
rts
|
|
}
|
|
// File Data
|
|
.segment Data
|
|
// The x-positions of the multiplexer sprites (0x000-0x1ff)
|
|
PLEX_XPOS: .fill 2*PLEX_COUNT, 0
|
|
// The y-positions of the multiplexer sprites.
|
|
PLEX_YPOS: .fill PLEX_COUNT, 0
|
|
// The sprite pointers for the multiplexed sprites
|
|
PLEX_PTR: .fill PLEX_COUNT, 0
|
|
// Indexes of the plex-sprites sorted by sprite y-position. Each call to plexSort() will fix the sorting if changes to the Y-positions have ruined it.
|
|
PLEX_SORTED_IDX: .fill PLEX_COUNT, 0
|
|
// Contains the Y-position where each sprite is free again. PLEX_FREE_YPOS[s] holds the Y-position where sprite s is free to use again.
|
|
PLEX_FREE_YPOS: .fill 8, 0
|
|
//char FONT[0x0800] = kickasm(resource "elefont.bin") {{
|
|
// .import binary "elefont.bin"
|
|
//}};
|
|
FONT: .fill $800, 0
|
|
.align $100
|
|
YSIN:
|
|
.fill $100, round(142+89.5*sin(toRadians(360*i/256)))
|
|
|
|
.align $100
|
|
XMOVEMENT:
|
|
//.lohifill $100, round(344-i*344/$100-86*sin(toRadians(360*i/$100)))
|
|
//.lohifill $100, round(344-i*344/$100-129*sin(toRadians(360*i/$100)))
|
|
.lohifill $100, round(344-i*344/$100 -86*sin(toRadians(360*i/$100)) -43*sin(toRadians(360*i/$80)))
|
|
//.lohifill $100, round(344-i*344/$100-86*sin(toRadians(360*i/$80)))
|
|
|
|
// The scroll text
|
|
SCROLL_TEXT: .text "camelot presents a spanking new contribution to the always hungry c64 scene. in this time of the corona virus we have chosen to direct our efforts towards the safe haven of coding, pixeling and composing for our beloved old breadbin. "
|
|
.byte 0
|
|
|