1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-04-03 08:30:49 +00:00

The sprite scroller is now working with the sine-dampened X-movement.

This commit is contained in:
jespergravgaard 2020-03-31 20:22:08 +02:00
parent 96779a5f24
commit b8a2e10fd8
5 changed files with 2443 additions and 2189 deletions

View File

@ -49,7 +49,7 @@ void main() {
// Set the x-positions & pointers
for(char s=0, x=0;s<PLEX_COUNT;s++,x+=8) {
PLEX_PTR[s] = SPRITE_0+s;
PLEX_PTR[s] = SPRITE_0+' ';
PLEX_XPOS[s] = { XMOVEMENT_HI[x], XMOVEMENT[x] };
}
// Enable & initialize sprites
@ -102,27 +102,31 @@ char SCROLL_TEXT[] = "camelot presents a spanking new contribution to the always
char* scroll_text_next = SCROLL_TEXT;
// Y-sine index
char sin_idx = 0;
char y_sin_idx = 0;
// X-movement index
char x_movement_idx = 0;
// Move the plex sprites in an Y-sine and scroll them to the left.
void plex_move() {
char y_idx = sin_idx;
char y_idx = y_sin_idx;
char x_idx = x_movement_idx;
for(char s: 0..PLEX_COUNT-1) {
// Assign sine value
PLEX_YPOS[s] = YSIN[y_idx];
y_idx += 8;
if(PLEX_XPOS[s]==0) {
// Move sprite to far right
PLEX_XPOS[s] = 11*32;
PLEX_XPOS[s] = { XMOVEMENT_HI[x_idx], XMOVEMENT[x_idx] };
if(x_idx==0) {
// Page boundary crossed - new scroll char! Detection is a bit flaky!
// Restart scroll text of needed
if(*scroll_text_next==0)
scroll_text_next = SCROLL_TEXT;
// Read next char from the scroll text
PLEX_PTR[s] = SPRITE_0+*scroll_text_next++;
}
//PLEX_XPOS[s]--;
x_idx +=8;
}
sin_idx +=1;
y_sin_idx += 3;
x_movement_idx++;
}
// Signal used between IRQ and main loop. Set to true when the IRQ is done showing the sprites.

View File

@ -41,15 +41,17 @@
// The address of the sprite pointers on the current screen (screen+0x3f8).
.label PLEX_SCREEN_PTR = $400+$3f8
.const toSpritePtr1_return = SPRITES/$40
.label plex_show_idx = $f
.label plex_sprite_idx = $10
.label plex_sprite_msb = $11
.label plex_free_next = $12
.label frame_done = $13
.label plex_show_idx = $d
.label plex_sprite_idx = $e
.label plex_sprite_msb = $f
.label plex_free_next = $10
.label frame_done = $11
// The next char to use from the scroll text
.label scroll_text_next = 3
.label scroll_text_next = 4
// Y-sine index
.label sin_idx = 2
.label y_sin_idx = 2
// X-movement index
.label x_movement_idx = 3
__bbegin:
// plex_show_idx=0
// The index in the PLEX tables of the next sprite to show
@ -74,7 +76,7 @@ __bbegin:
main: {
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET_DEFAULT)/4&$f
.label s = 2
.label __13 = $14
.label __13 = $12
// asm
// Create 2x2 font from CHARGEN
sei
@ -127,7 +129,8 @@ main: {
lda #>SCROLL_TEXT
sta.z scroll_text_next+1
lda #0
sta.z sin_idx
sta.z x_movement_idx
sta.z y_sin_idx
jsr plex_move
// plexSort()
// Sort the sprites by y-position
@ -181,11 +184,8 @@ main: {
jsr plexSort
jmp __b6
__b2:
// SPRITE_0+s
lda #toSpritePtr1_return
clc
adc.z s
// PLEX_PTR[s] = SPRITE_0+s
// PLEX_PTR[s] = SPRITE_0+' '
lda #toSpritePtr1_return+' '
ldy.z s
sta PLEX_PTR,y
// PLEX_XPOS[s] = { XMOVEMENT_HI[x], XMOVEMENT[x] }
@ -216,9 +216,9 @@ main: {
// 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 = $17
.label nxt_y = $16
.label m = 9
.label nxt_idx = $14
.label nxt_y = $15
.label m = $c
lda #0
sta.z m
__b1:
@ -285,38 +285,45 @@ plexSort: {
}
// Move the plex sprites in an Y-sine and scroll them to the left.
plex_move: {
.label s = 9
// y_idx = sin_idx
ldx.z sin_idx
.label y_idx = $c
.label x_idx = $15
.label s = $14
.label __7 = $16
// y_idx = y_sin_idx
lda.z y_sin_idx
sta.z y_idx
// x_idx = x_movement_idx
lda.z x_movement_idx
sta.z x_idx
lda #0
sta.z s
__b1:
// PLEX_YPOS[s] = YSIN[y_idx]
// Assign sine value
lda YSIN,x
ldy.z y_idx
lda YSIN,y
ldy.z s
sta PLEX_YPOS,y
// y_idx += 8
txa
lax.z y_idx
axs #-[8]
// PLEX_XPOS[s]==0
stx.z y_idx
// PLEX_XPOS[s] = { XMOVEMENT_HI[x_idx], XMOVEMENT[x_idx] }
tya
asl
// if(PLEX_XPOS[s]==0)
tay
lda PLEX_XPOS+1,y
tax
ldy.z x_idx
lda XMOVEMENT_HI,y
sta.z __7+1
lda XMOVEMENT,y
sta.z __7
sta PLEX_XPOS,x
lda.z __7+1
sta PLEX_XPOS+1,x
// if(x_idx==0)
tya
cmp #0
bne __b2
lda PLEX_XPOS,y
bne __b2
// PLEX_XPOS[s] = 11*32
lda.z s
asl
// Move sprite to far right
tay
lda #<$b*$20
sta PLEX_XPOS,y
lda #>$b*$20
sta PLEX_XPOS+1,y
// if(*scroll_text_next==0)
ldy #0
lda (scroll_text_next),y
@ -342,13 +349,21 @@ plex_move: {
inc.z scroll_text_next+1
!:
__b2:
// x_idx +=8
lax.z x_idx
axs #-[8]
stx.z x_idx
// for(char s: 0..PLEX_COUNT-1)
inc.z s
lda #PLEX_COUNT-1+1
cmp.z s
bne __b1
// sin_idx +=1
inc.z sin_idx
// y_sin_idx += 3
lax.z y_sin_idx
axs #-[3]
stx.z y_sin_idx
// x_movement_idx++;
inc.z x_movement_idx
// }
rts
}
@ -372,13 +387,13 @@ plexInit: {
// - num_chars The number of chars to convert
font_2x2_to_sprites: {
.const num_chars = $40
.label __3 = $17
.label char_right = $d
.label sprite_idx = $a
.label char_left = $b
.label char_current = 5
.label sprite = 7
.label c = 9
.label __3 = $18
.label char_right = $a
.label sprite_idx = $15
.label char_left = 8
.label char_current = $16
.label sprite = 6
.label c = $14
lda #<SPRITES
sta.z sprite
lda #>SPRITES
@ -500,18 +515,18 @@ font_2x2_to_sprites: {
// - 0x80 - 0xbf Lower left glyphs
// - 0xc0 - 0xff Lower right glyphs
font_2x2: {
.label __5 = $14
.label __7 = $14
.label next_2x2_left = 5
.label next_2x2_right = $d
.label glyph_bits = $16
.label glyph_bits_2x2 = $14
.label l2 = $17
.label l = $a
.label next_2x2_left_1 = $b
.label next_2x2 = 5
.label next_original = 7
.label c = 9
.label __5 = $12
.label __7 = $12
.label next_2x2_left = $16
.label next_2x2_right = $a
.label glyph_bits = $c
.label glyph_bits_2x2 = $12
.label l2 = $18
.label l = $15
.label next_2x2_left_1 = 8
.label next_2x2 = $16
.label next_original = 6
.label c = $14
lda #0
sta.z c
lda #<CHARGEN
@ -660,7 +675,7 @@ font_2x2: {
}
// Show sprites from the multiplexer, rescheduling the IRQ as many times as needed
plex_irq: {
.label __4 = $18
.label __4 = $19
// asm
sei
__b3:
@ -712,7 +727,7 @@ plex_irq: {
// Show the next sprite.
// plexSort() prepares showing the sprites
plexShowSprite: {
.label plex_sprite_idx2 = $19
.label plex_sprite_idx2 = $1a
// plex_sprite_idx2 = plex_sprite_idx*2
lda.z plex_sprite_idx
asl

View File

@ -87,84 +87,86 @@ main::@13: scope:[main] from main::@7
[43] call plexSort
to:main::@6
main::@2: scope:[main] from main::@1
[44] (byte~) main::$7 ← (const byte) toSpritePtr1_return#0 + (byte) main::s#2
[45] *((const byte*) PLEX_PTR + (byte) main::s#2) ← (byte~) main::$7
[46] (byte~) main::$12 ← (byte) main::s#2 << (byte) 1
[47] (word~) main::$13 ← *((const nomodify byte*) XMOVEMENT_HI + (byte) main::x#2) w= *((const byte*) XMOVEMENT + (byte) main::x#2)
[48] *((const word*) PLEX_XPOS + (byte~) main::$12) ← (word~) main::$13
[49] (byte) main::x#1 ← (byte) main::x#2 + (byte) 8
[50] (byte) main::s#1 ← ++ (byte) main::s#2
[44] *((const byte*) PLEX_PTR + (byte) main::s#2) ← (const byte) toSpritePtr1_return#0+(byte) ' '
[45] (byte~) main::$12 ← (byte) main::s#2 << (byte) 1
[46] (word~) main::$13 ← *((const nomodify byte*) XMOVEMENT_HI + (byte) main::x#2) w= *((const byte*) XMOVEMENT + (byte) main::x#2)
[47] *((const word*) PLEX_XPOS + (byte~) main::$12) ← (word~) main::$13
[48] (byte) main::x#1 ← (byte) main::x#2 + (byte) 8
[49] (byte) main::s#1 ← ++ (byte) main::s#2
to:main::@1
(void()) plexSort()
plexSort: scope:[plexSort] from main::@11 main::@13
[51] phi()
[50] phi()
to:plexSort::@1
plexSort::@1: scope:[plexSort] from plexSort plexSort::@2
[52] (byte) plexSort::m#2 ← phi( plexSort/(byte) 0 plexSort::@2/(byte) plexSort::m#1 )
[53] (byte) plexSort::nxt_idx#0 ← *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::m#2)
[54] (byte) plexSort::nxt_y#0 ← *((const byte*) PLEX_YPOS + (byte) plexSort::nxt_idx#0)
[55] if((byte) plexSort::nxt_y#0>=*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2))) goto plexSort::@2
[51] (byte) plexSort::m#2 ← phi( plexSort/(byte) 0 plexSort::@2/(byte) plexSort::m#1 )
[52] (byte) plexSort::nxt_idx#0 ← *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::m#2)
[53] (byte) plexSort::nxt_y#0 ← *((const byte*) PLEX_YPOS + (byte) plexSort::nxt_idx#0)
[54] if((byte) plexSort::nxt_y#0>=*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2))) goto plexSort::@2
to:plexSort::@5
plexSort::@5: scope:[plexSort] from plexSort::@1
[56] (byte) plexSort::s#6 ← (byte) plexSort::m#2
[55] (byte) plexSort::s#6 ← (byte) plexSort::m#2
to:plexSort::@3
plexSort::@3: scope:[plexSort] from plexSort::@5 plexSort::@7
[57] (byte) plexSort::s#3 ← phi( plexSort::@7/(byte) plexSort::s#1 plexSort::@5/(byte) plexSort::s#6 )
[58] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3)
[59] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3
[60] if((byte) plexSort::s#1==(byte) $ff) goto plexSort::@4
[56] (byte) plexSort::s#3 ← phi( plexSort::@7/(byte) plexSort::s#1 plexSort::@5/(byte) plexSort::s#6 )
[57] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3)
[58] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3
[59] if((byte) plexSort::s#1==(byte) $ff) goto plexSort::@4
to:plexSort::@7
plexSort::@7: scope:[plexSort] from plexSort::@3
[61] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3
[60] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3
to:plexSort::@4
plexSort::@4: scope:[plexSort] from plexSort::@3 plexSort::@7
[62] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1
[63] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0
[61] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1
[62] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0
to:plexSort::@2
plexSort::@2: scope:[plexSort] from plexSort::@1 plexSort::@4
[64] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2
[65] if((byte) plexSort::m#1!=(const nomodify byte) PLEX_COUNT-(byte) 2+(byte) 1) goto plexSort::@1
[63] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2
[64] if((byte) plexSort::m#1!=(const nomodify byte) PLEX_COUNT-(byte) 2+(byte) 1) goto plexSort::@1
to:plexSort::@6
plexSort::@6: scope:[plexSort] from plexSort::@2
[66] (volatile byte) plex_show_idx ← (byte) 0
[67] (volatile byte) plex_sprite_idx ← (byte) 0
[68] (volatile byte) plex_sprite_msb ← (byte) 1
[65] (volatile byte) plex_show_idx ← (byte) 0
[66] (volatile byte) plex_sprite_idx ← (byte) 0
[67] (volatile byte) plex_sprite_msb ← (byte) 1
to:plexSort::plexFreePrepare1
plexSort::plexFreePrepare1: scope:[plexSort] from plexSort::@6
[69] phi()
[68] phi()
to:plexSort::plexFreePrepare1_@1
plexSort::plexFreePrepare1_@1: scope:[plexSort] from plexSort::plexFreePrepare1 plexSort::plexFreePrepare1_@1
[70] (byte) plexSort::plexFreePrepare1_s#2 ← phi( plexSort::plexFreePrepare1/(byte) 0 plexSort::plexFreePrepare1_@1/(byte) plexSort::plexFreePrepare1_s#1 )
[71] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0
[72] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2
[73] if((byte) plexSort::plexFreePrepare1_s#1!=(byte) 8) goto plexSort::plexFreePrepare1_@1
[69] (byte) plexSort::plexFreePrepare1_s#2 ← phi( plexSort::plexFreePrepare1/(byte) 0 plexSort::plexFreePrepare1_@1/(byte) plexSort::plexFreePrepare1_s#1 )
[70] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0
[71] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2
[72] if((byte) plexSort::plexFreePrepare1_s#1!=(byte) 8) goto plexSort::plexFreePrepare1_@1
to:plexSort::plexFreePrepare1_@2
plexSort::plexFreePrepare1_@2: scope:[plexSort] from plexSort::plexFreePrepare1_@1
[74] (volatile byte) plex_free_next ← (byte) 0
[73] (volatile byte) plex_free_next ← (byte) 0
to:plexSort::@return
plexSort::@return: scope:[plexSort] from plexSort::plexFreePrepare1_@2
[75] return
[74] return
to:@return
(void()) plex_move()
plex_move: scope:[plex_move] from main::@5 main::@7
[76] (byte*) scroll_text_next#25 ← phi( main::@7/(byte*) scroll_text_next#13 main::@5/(const byte*) SCROLL_TEXT )
[76] (byte) sin_idx#10 ← phi( main::@7/(byte) sin_idx#12 main::@5/(byte) 0 )
[77] (byte) plex_move::y_idx#0 ← (byte) sin_idx#10
[75] (byte*) scroll_text_next#25 ← phi( main::@7/(byte*) scroll_text_next#13 main::@5/(const byte*) SCROLL_TEXT )
[75] (byte) x_movement_idx#10 ← phi( main::@7/(byte) x_movement_idx#12 main::@5/(byte) 0 )
[75] (byte) y_sin_idx#10 ← phi( main::@7/(byte) y_sin_idx#12 main::@5/(byte) 0 )
[76] (byte) plex_move::y_idx#0 ← (byte) y_sin_idx#10
[77] (byte) plex_move::x_idx#0 ← (byte) x_movement_idx#10
to:plex_move::@1
plex_move::@1: scope:[plex_move] from plex_move plex_move::@2
[78] (byte*) scroll_text_next#11 ← phi( plex_move/(byte*) scroll_text_next#25 plex_move::@2/(byte*) scroll_text_next#13 )
[78] (byte) plex_move::x_idx#2 ← phi( plex_move/(byte) plex_move::x_idx#0 plex_move::@2/(byte) plex_move::x_idx#1 )
[78] (byte) plex_move::s#2 ← phi( plex_move/(byte) 0 plex_move::@2/(byte) plex_move::s#1 )
[78] (byte) plex_move::y_idx#2 ← phi( plex_move/(byte) plex_move::y_idx#0 plex_move::@2/(byte) plex_move::y_idx#1 )
[79] *((const byte*) PLEX_YPOS + (byte) plex_move::s#2) ← *((const byte*) YSIN + (byte) plex_move::y_idx#2)
[80] (byte) plex_move::y_idx#1 ← (byte) plex_move::y_idx#2 + (byte) 8
[81] (byte~) plex_move::$6 ← (byte) plex_move::s#2 << (byte) 1
[82] if(*((const word*) PLEX_XPOS + (byte~) plex_move::$6)!=(byte) 0) goto plex_move::@2
[82] (word~) plex_move::$7 ← *((const nomodify byte*) XMOVEMENT_HI + (byte) plex_move::x_idx#2) w= *((const byte*) XMOVEMENT + (byte) plex_move::x_idx#2)
[83] *((const word*) PLEX_XPOS + (byte~) plex_move::$6) ← (word~) plex_move::$7
[84] if((byte) plex_move::x_idx#2!=(byte) 0) goto plex_move::@2
to:plex_move::@4
plex_move::@4: scope:[plex_move] from plex_move::@1
[83] (byte~) plex_move::$7 ← (byte) plex_move::s#2 << (byte) 1
[84] *((const word*) PLEX_XPOS + (byte~) plex_move::$7) ← (word)(number) $b*(number) $20
[85] if(*((byte*) scroll_text_next#11)!=(byte) 0) goto plex_move::@6
to:plex_move::@3
plex_move::@6: scope:[plex_move] from plex_move::@4
@ -178,155 +180,157 @@ plex_move::@3: scope:[plex_move] from plex_move::@4 plex_move::@6
to:plex_move::@2
plex_move::@2: scope:[plex_move] from plex_move::@1 plex_move::@3
[91] (byte*) scroll_text_next#13 ← phi( plex_move::@1/(byte*) scroll_text_next#11 plex_move::@3/(byte*) scroll_text_next#4 )
[92] (byte) plex_move::s#1 ← ++ (byte) plex_move::s#2
[93] if((byte) plex_move::s#1!=(const nomodify byte) PLEX_COUNT-(byte) 1+(byte) 1) goto plex_move::@1
[92] (byte) plex_move::x_idx#1 ← (byte) plex_move::x_idx#2 + (byte) 8
[93] (byte) plex_move::s#1 ← ++ (byte) plex_move::s#2
[94] if((byte) plex_move::s#1!=(const nomodify byte) PLEX_COUNT-(byte) 1+(byte) 1) goto plex_move::@1
to:plex_move::@5
plex_move::@5: scope:[plex_move] from plex_move::@2
[94] (byte) sin_idx#12 ← (byte) sin_idx#10 + (byte) 1
[95] (byte) y_sin_idx#12 ← (byte) y_sin_idx#10 + (byte) 3
[96] (byte) x_movement_idx#12 ← ++ (byte) x_movement_idx#10
to:plex_move::@return
plex_move::@return: scope:[plex_move] from plex_move::@5
[95] return
[97] return
to:@return
(void()) plexInit((byte*) plexInit::screen)
plexInit: scope:[plexInit] from main::@10
[96] phi()
[98] phi()
to:plexInit::plexSetScreen1
plexInit::plexSetScreen1: scope:[plexInit] from plexInit
[97] phi()
[99] phi()
to:plexInit::@1
plexInit::@1: scope:[plexInit] from plexInit::@1 plexInit::plexSetScreen1
[98] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte) 0 )
[99] *((const byte*) PLEX_SORTED_IDX + (byte) plexInit::i#2) ← (byte) plexInit::i#2
[100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2
[101] if((byte) plexInit::i#1!=(const nomodify byte) PLEX_COUNT-(byte) 1+(byte) 1) goto plexInit::@1
[100] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte) 0 )
[101] *((const byte*) PLEX_SORTED_IDX + (byte) plexInit::i#2) ← (byte) plexInit::i#2
[102] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2
[103] if((byte) plexInit::i#1!=(const nomodify byte) PLEX_COUNT-(byte) 1+(byte) 1) goto plexInit::@1
to:plexInit::@return
plexInit::@return: scope:[plexInit] from plexInit::@1
[102] return
[104] 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
[103] phi()
[105] 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
[104] (byte*) font_2x2_to_sprites::sprite#4 ← phi( font_2x2_to_sprites/(const nomodify byte*) SPRITES font_2x2_to_sprites::@7/(byte*) font_2x2_to_sprites::sprite#1 )
[104] (byte*) font_2x2_to_sprites::char_current#2 ← phi( font_2x2_to_sprites/(const byte*) FONT font_2x2_to_sprites::@7/(byte*) font_2x2_to_sprites::char_current#1 )
[104] (byte) font_2x2_to_sprites::c#2 ← phi( font_2x2_to_sprites/(byte) 0 font_2x2_to_sprites::@7/(byte) font_2x2_to_sprites::c#1 )
[105] if((byte) font_2x2_to_sprites::c#2<(const byte) font_2x2_to_sprites::num_chars#0) goto font_2x2_to_sprites::@2
[106] (byte*) font_2x2_to_sprites::sprite#4 ← phi( font_2x2_to_sprites/(const nomodify byte*) SPRITES font_2x2_to_sprites::@7/(byte*) font_2x2_to_sprites::sprite#1 )
[106] (byte*) font_2x2_to_sprites::char_current#2 ← phi( font_2x2_to_sprites/(const byte*) FONT font_2x2_to_sprites::@7/(byte*) font_2x2_to_sprites::char_current#1 )
[106] (byte) font_2x2_to_sprites::c#2 ← phi( font_2x2_to_sprites/(byte) 0 font_2x2_to_sprites::@7/(byte) font_2x2_to_sprites::c#1 )
[107] if((byte) font_2x2_to_sprites::c#2<(const byte) 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
[106] return
[108] return
to:@return
font_2x2_to_sprites::@2: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@1
[107] (byte*) font_2x2_to_sprites::char_right#0 ← (byte*) font_2x2_to_sprites::char_current#2 + (word)(number) $40*(number) 8
[108] (byte*) font_2x2_to_sprites::char_left#6 ← (byte*) font_2x2_to_sprites::char_current#2
[109] (byte*) font_2x2_to_sprites::char_right#0 ← (byte*) font_2x2_to_sprites::char_current#2 + (word)(number) $40*(number) 8
[110] (byte*) font_2x2_to_sprites::char_left#6 ← (byte*) 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
[109] (byte*) font_2x2_to_sprites::char_right#3 ← phi( font_2x2_to_sprites::@2/(byte*) font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::@5/(byte*) font_2x2_to_sprites::char_right#4 )
[109] (byte) font_2x2_to_sprites::sprite_idx#4 ← phi( font_2x2_to_sprites::@2/(byte) 0 font_2x2_to_sprites::@5/(byte) font_2x2_to_sprites::sprite_idx#3 )
[109] (byte*) font_2x2_to_sprites::char_left#3 ← phi( font_2x2_to_sprites::@2/(byte*) font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::@5/(byte*) font_2x2_to_sprites::char_left#4 )
[109] (byte) font_2x2_to_sprites::i#2 ← phi( font_2x2_to_sprites::@2/(byte) 0 font_2x2_to_sprites::@5/(byte) font_2x2_to_sprites::i#1 )
[110] (byte~) font_2x2_to_sprites::$3 ← (byte) font_2x2_to_sprites::i#2 & (byte) 7
[111] *((byte*) font_2x2_to_sprites::sprite#4 + (byte) font_2x2_to_sprites::sprite_idx#4) ← *((byte*) font_2x2_to_sprites::char_left#3 + (byte~) font_2x2_to_sprites::$3)
[112] (byte) font_2x2_to_sprites::sprite_idx#1 ← ++ (byte) font_2x2_to_sprites::sprite_idx#4
[113] *((byte*) font_2x2_to_sprites::sprite#4 + (byte) font_2x2_to_sprites::sprite_idx#1) ← *((byte*) font_2x2_to_sprites::char_right#3 + (byte~) font_2x2_to_sprites::$3)
[114] (byte) font_2x2_to_sprites::sprite_idx#2 ← ++ (byte) font_2x2_to_sprites::sprite_idx#1
[115] *((byte*) font_2x2_to_sprites::sprite#4 + (byte) font_2x2_to_sprites::sprite_idx#2) ← (byte) 0
[116] (byte) font_2x2_to_sprites::sprite_idx#3 ← ++ (byte) font_2x2_to_sprites::sprite_idx#2
[117] if((byte) font_2x2_to_sprites::i#2==(byte) 7) goto font_2x2_to_sprites::@4
[111] (byte*) font_2x2_to_sprites::char_right#3 ← phi( font_2x2_to_sprites::@2/(byte*) font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::@5/(byte*) font_2x2_to_sprites::char_right#4 )
[111] (byte) font_2x2_to_sprites::sprite_idx#4 ← phi( font_2x2_to_sprites::@2/(byte) 0 font_2x2_to_sprites::@5/(byte) font_2x2_to_sprites::sprite_idx#3 )
[111] (byte*) font_2x2_to_sprites::char_left#3 ← phi( font_2x2_to_sprites::@2/(byte*) font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::@5/(byte*) font_2x2_to_sprites::char_left#4 )
[111] (byte) font_2x2_to_sprites::i#2 ← phi( font_2x2_to_sprites::@2/(byte) 0 font_2x2_to_sprites::@5/(byte) font_2x2_to_sprites::i#1 )
[112] (byte~) font_2x2_to_sprites::$3 ← (byte) font_2x2_to_sprites::i#2 & (byte) 7
[113] *((byte*) font_2x2_to_sprites::sprite#4 + (byte) font_2x2_to_sprites::sprite_idx#4) ← *((byte*) font_2x2_to_sprites::char_left#3 + (byte~) font_2x2_to_sprites::$3)
[114] (byte) font_2x2_to_sprites::sprite_idx#1 ← ++ (byte) font_2x2_to_sprites::sprite_idx#4
[115] *((byte*) font_2x2_to_sprites::sprite#4 + (byte) font_2x2_to_sprites::sprite_idx#1) ← *((byte*) font_2x2_to_sprites::char_right#3 + (byte~) font_2x2_to_sprites::$3)
[116] (byte) font_2x2_to_sprites::sprite_idx#2 ← ++ (byte) font_2x2_to_sprites::sprite_idx#1
[117] *((byte*) font_2x2_to_sprites::sprite#4 + (byte) font_2x2_to_sprites::sprite_idx#2) ← (byte) 0
[118] (byte) font_2x2_to_sprites::sprite_idx#3 ← ++ (byte) font_2x2_to_sprites::sprite_idx#2
[119] if((byte) font_2x2_to_sprites::i#2==(byte) 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
[118] if((byte) font_2x2_to_sprites::i#2!=(byte) $f) goto font_2x2_to_sprites::@8
[120] if((byte) font_2x2_to_sprites::i#2!=(byte) $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
[119] phi()
[121] 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
[120] (byte*) font_2x2_to_sprites::char_right#4 ← phi( font_2x2_to_sprites::@4/(byte*) font_2x2_to_sprites::char_right#1 font_2x2_to_sprites::@8/(byte*) font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::@6/(const byte*) FONT+(byte) ' '*(byte) 8 )
[120] (byte*) font_2x2_to_sprites::char_left#4 ← phi( font_2x2_to_sprites::@4/(byte*) font_2x2_to_sprites::char_left#1 font_2x2_to_sprites::@8/(byte*) font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::@6/(const byte*) FONT+(byte) ' '*(byte) 8 )
[121] (byte) font_2x2_to_sprites::i#1 ← ++ (byte) font_2x2_to_sprites::i#2
[122] if((byte) font_2x2_to_sprites::i#1!=(byte) $15) goto font_2x2_to_sprites::@3
[122] (byte*) font_2x2_to_sprites::char_right#4 ← phi( font_2x2_to_sprites::@4/(byte*) font_2x2_to_sprites::char_right#1 font_2x2_to_sprites::@8/(byte*) font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::@6/(const byte*) FONT+(byte) ' '*(byte) 8 )
[122] (byte*) font_2x2_to_sprites::char_left#4 ← phi( font_2x2_to_sprites::@4/(byte*) font_2x2_to_sprites::char_left#1 font_2x2_to_sprites::@8/(byte*) font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::@6/(const byte*) FONT+(byte) ' '*(byte) 8 )
[123] (byte) font_2x2_to_sprites::i#1 ← ++ (byte) font_2x2_to_sprites::i#2
[124] if((byte) font_2x2_to_sprites::i#1!=(byte) $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
[123] (byte*) font_2x2_to_sprites::char_current#1 ← (byte*) font_2x2_to_sprites::char_current#2 + (byte) 8
[124] (byte*) font_2x2_to_sprites::sprite#1 ← (byte*) font_2x2_to_sprites::sprite#4 + (byte) $40
[125] (byte) font_2x2_to_sprites::c#1 ← ++ (byte) font_2x2_to_sprites::c#2
[125] (byte*) font_2x2_to_sprites::char_current#1 ← (byte*) font_2x2_to_sprites::char_current#2 + (byte) 8
[126] (byte*) font_2x2_to_sprites::sprite#1 ← (byte*) font_2x2_to_sprites::sprite#4 + (byte) $40
[127] (byte) font_2x2_to_sprites::c#1 ← ++ (byte) 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
[126] (byte*) font_2x2_to_sprites::char_left#1 ← (byte*) font_2x2_to_sprites::char_current#2 + (word)(number) $80*(number) 8
[127] (byte*) font_2x2_to_sprites::char_right#1 ← (byte*) font_2x2_to_sprites::char_current#2 + (word)(number) $c0*(number) 8
[128] (byte*) font_2x2_to_sprites::char_left#1 ← (byte*) font_2x2_to_sprites::char_current#2 + (word)(number) $80*(number) 8
[129] (byte*) font_2x2_to_sprites::char_right#1 ← (byte*) font_2x2_to_sprites::char_current#2 + (word)(number) $c0*(number) 8
to:font_2x2_to_sprites::@5
(void()) font_2x2((byte*) font_2x2::font_original , (byte*) font_2x2::font_2x2)
font_2x2: scope:[font_2x2] from main
[128] phi()
[130] phi()
to:font_2x2::@1
font_2x2::@1: scope:[font_2x2] from font_2x2 font_2x2::@9
[129] (byte) font_2x2::c#11 ← phi( font_2x2/(byte) 0 font_2x2::@9/(byte) font_2x2::c#1 )
[129] (byte*) font_2x2::next_original#4 ← phi( font_2x2/(const nomodify byte*) CHARGEN font_2x2::@9/(byte*) font_2x2::next_original#1 )
[129] (byte*) font_2x2::next_2x2_left#0 ← phi( font_2x2/(const byte*) FONT font_2x2::@9/(byte*) font_2x2::next_2x2#1 )
[130] (byte*) font_2x2::next_2x2_right#0 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $40*(number) 8
[131] (byte*) font_2x2::next_2x2_left#10 ← (byte*) font_2x2::next_2x2_left#0
[131] (byte) font_2x2::c#11 ← phi( font_2x2/(byte) 0 font_2x2::@9/(byte) font_2x2::c#1 )
[131] (byte*) font_2x2::next_original#4 ← phi( font_2x2/(const nomodify byte*) CHARGEN font_2x2::@9/(byte*) font_2x2::next_original#1 )
[131] (byte*) font_2x2::next_2x2_left#0 ← phi( font_2x2/(const byte*) FONT font_2x2::@9/(byte*) font_2x2::next_2x2#1 )
[132] (byte*) font_2x2::next_2x2_right#0 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $40*(number) 8
[133] (byte*) font_2x2::next_2x2_left#10 ← (byte*) font_2x2::next_2x2_left#0
to:font_2x2::@2
font_2x2::@2: scope:[font_2x2] from font_2x2::@1 font_2x2::@8
[132] (byte*) font_2x2::next_2x2_right#7 ← phi( font_2x2::@1/(byte*) font_2x2::next_2x2_right#0 font_2x2::@8/(byte*) font_2x2::next_2x2_right#8 )
[132] (byte) font_2x2::l2#8 ← phi( font_2x2::@1/(byte) 0 font_2x2::@8/(byte) font_2x2::l2#9 )
[132] (byte*) font_2x2::next_2x2_left#7 ← phi( font_2x2::@1/(byte*) font_2x2::next_2x2_left#10 font_2x2::@8/(byte*) font_2x2::next_2x2_left#8 )
[132] (byte) font_2x2::l#2 ← phi( font_2x2::@1/(byte) 0 font_2x2::@8/(byte) font_2x2::l#1 )
[133] (byte) font_2x2::glyph_bits#0 ← *((byte*) font_2x2::next_original#4 + (byte) font_2x2::l#2)
[134] (byte*) font_2x2::next_2x2_right#7 ← phi( font_2x2::@1/(byte*) font_2x2::next_2x2_right#0 font_2x2::@8/(byte*) font_2x2::next_2x2_right#8 )
[134] (byte) font_2x2::l2#8 ← phi( font_2x2::@1/(byte) 0 font_2x2::@8/(byte) font_2x2::l2#9 )
[134] (byte*) font_2x2::next_2x2_left#7 ← phi( font_2x2::@1/(byte*) font_2x2::next_2x2_left#10 font_2x2::@8/(byte*) font_2x2::next_2x2_left#8 )
[134] (byte) font_2x2::l#2 ← phi( font_2x2::@1/(byte) 0 font_2x2::@8/(byte) font_2x2::l#1 )
[135] (byte) font_2x2::glyph_bits#0 ← *((byte*) font_2x2::next_original#4 + (byte) font_2x2::l#2)
to:font_2x2::@3
font_2x2::@3: scope:[font_2x2] from font_2x2::@2 font_2x2::@5
[134] (byte) font_2x2::b#2 ← phi( font_2x2::@2/(byte) 0 font_2x2::@5/(byte) font_2x2::b#1 )
[134] (word) font_2x2::glyph_bits_2x2#3 ← phi( font_2x2::@2/(word) 0 font_2x2::@5/(word) font_2x2::glyph_bits_2x2#2 )
[134] (byte) font_2x2::glyph_bits#2 ← phi( font_2x2::@2/(byte) font_2x2::glyph_bits#0 font_2x2::@5/(byte) font_2x2::glyph_bits#1 )
[135] (byte~) font_2x2::$1 ← (byte) font_2x2::glyph_bits#2 & (byte) $80
[136] if((byte) 0!=(byte~) font_2x2::$1) goto font_2x2::@4
[136] (byte) font_2x2::b#2 ← phi( font_2x2::@2/(byte) 0 font_2x2::@5/(byte) font_2x2::b#1 )
[136] (word) font_2x2::glyph_bits_2x2#3 ← phi( font_2x2::@2/(word) 0 font_2x2::@5/(word) font_2x2::glyph_bits_2x2#2 )
[136] (byte) font_2x2::glyph_bits#2 ← phi( font_2x2::@2/(byte) font_2x2::glyph_bits#0 font_2x2::@5/(byte) font_2x2::glyph_bits#1 )
[137] (byte~) font_2x2::$1 ← (byte) font_2x2::glyph_bits#2 & (byte) $80
[138] if((byte) 0!=(byte~) font_2x2::$1) goto font_2x2::@4
to:font_2x2::@5
font_2x2::@4: scope:[font_2x2] from font_2x2::@3
[137] phi()
[139] phi()
to:font_2x2::@5
font_2x2::@5: scope:[font_2x2] from font_2x2::@3 font_2x2::@4
[138] (byte) font_2x2::glyph_bit#0 ← phi( font_2x2::@4/(byte) 1 font_2x2::@3/(byte) 0 )
[139] (word~) font_2x2::$5 ← (word) font_2x2::glyph_bits_2x2#3 << (byte) 1
[140] (word) font_2x2::glyph_bits_2x2#1 ← (word~) font_2x2::$5 | (byte) font_2x2::glyph_bit#0
[141] (word~) font_2x2::$7 ← (word) font_2x2::glyph_bits_2x2#1 << (byte) 1
[142] (word) font_2x2::glyph_bits_2x2#2 ← (word~) font_2x2::$7 | (byte) font_2x2::glyph_bit#0
[143] (byte) font_2x2::glyph_bits#1 ← (byte) font_2x2::glyph_bits#2 << (byte) 1
[144] (byte) font_2x2::b#1 ← ++ (byte) font_2x2::b#2
[145] if((byte) font_2x2::b#1!=(byte) 8) goto font_2x2::@3
[140] (byte) font_2x2::glyph_bit#0 ← phi( font_2x2::@4/(byte) 1 font_2x2::@3/(byte) 0 )
[141] (word~) font_2x2::$5 ← (word) font_2x2::glyph_bits_2x2#3 << (byte) 1
[142] (word) font_2x2::glyph_bits_2x2#1 ← (word~) font_2x2::$5 | (byte) font_2x2::glyph_bit#0
[143] (word~) font_2x2::$7 ← (word) font_2x2::glyph_bits_2x2#1 << (byte) 1
[144] (word) font_2x2::glyph_bits_2x2#2 ← (word~) font_2x2::$7 | (byte) font_2x2::glyph_bit#0
[145] (byte) font_2x2::glyph_bits#1 ← (byte) font_2x2::glyph_bits#2 << (byte) 1
[146] (byte) font_2x2::b#1 ← ++ (byte) font_2x2::b#2
[147] if((byte) font_2x2::b#1!=(byte) 8) goto font_2x2::@3
to:font_2x2::@6
font_2x2::@6: scope:[font_2x2] from font_2x2::@5
[146] (byte~) font_2x2::$12 ← > (word) font_2x2::glyph_bits_2x2#2
[147] *((byte*) font_2x2::next_2x2_left#7 + (byte) font_2x2::l2#8) ← (byte~) font_2x2::$12
[148] (byte~) font_2x2::$11 ← (byte) font_2x2::l2#8 + (byte) 1
[149] *((byte*) font_2x2::next_2x2_left#7 + (byte~) font_2x2::$11) ← (byte~) font_2x2::$12
[150] (byte~) font_2x2::$15 ← < (word) font_2x2::glyph_bits_2x2#2
[151] *((byte*) font_2x2::next_2x2_right#7 + (byte) font_2x2::l2#8) ← (byte~) font_2x2::$15
[152] (byte~) font_2x2::$14 ← (byte) font_2x2::l2#8 + (byte) 1
[153] *((byte*) font_2x2::next_2x2_right#7 + (byte~) font_2x2::$14) ← (byte~) font_2x2::$15
[154] (byte) font_2x2::l2#1 ← (byte) font_2x2::l2#8 + (byte) 2
[155] if((byte) font_2x2::l2#1!=(byte) 8) goto font_2x2::@8
[148] (byte~) font_2x2::$12 ← > (word) font_2x2::glyph_bits_2x2#2
[149] *((byte*) font_2x2::next_2x2_left#7 + (byte) font_2x2::l2#8) ← (byte~) font_2x2::$12
[150] (byte~) font_2x2::$11 ← (byte) font_2x2::l2#8 + (byte) 1
[151] *((byte*) font_2x2::next_2x2_left#7 + (byte~) font_2x2::$11) ← (byte~) font_2x2::$12
[152] (byte~) font_2x2::$15 ← < (word) font_2x2::glyph_bits_2x2#2
[153] *((byte*) font_2x2::next_2x2_right#7 + (byte) font_2x2::l2#8) ← (byte~) font_2x2::$15
[154] (byte~) font_2x2::$14 ← (byte) font_2x2::l2#8 + (byte) 1
[155] *((byte*) font_2x2::next_2x2_right#7 + (byte~) font_2x2::$14) ← (byte~) font_2x2::$15
[156] (byte) font_2x2::l2#1 ← (byte) font_2x2::l2#8 + (byte) 2
[157] if((byte) font_2x2::l2#1!=(byte) 8) goto font_2x2::@8
to:font_2x2::@7
font_2x2::@7: scope:[font_2x2] from font_2x2::@6
[156] (byte*) font_2x2::next_2x2_left#1 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $80*(number) 8
[157] (byte*) font_2x2::next_2x2_right#1 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $c0*(number) 8
[158] (byte*) font_2x2::next_2x2_left#1 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $80*(number) 8
[159] (byte*) font_2x2::next_2x2_right#1 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $c0*(number) 8
to:font_2x2::@8
font_2x2::@8: scope:[font_2x2] from font_2x2::@6 font_2x2::@7
[158] (byte*) font_2x2::next_2x2_right#8 ← phi( font_2x2::@7/(byte*) font_2x2::next_2x2_right#1 font_2x2::@6/(byte*) font_2x2::next_2x2_right#7 )
[158] (byte) font_2x2::l2#9 ← phi( font_2x2::@7/(byte) 0 font_2x2::@6/(byte) font_2x2::l2#1 )
[158] (byte*) font_2x2::next_2x2_left#8 ← phi( font_2x2::@7/(byte*) font_2x2::next_2x2_left#1 font_2x2::@6/(byte*) font_2x2::next_2x2_left#7 )
[159] (byte) font_2x2::l#1 ← ++ (byte) font_2x2::l#2
[160] if((byte) font_2x2::l#1!=(byte) 8) goto font_2x2::@2
[160] (byte*) font_2x2::next_2x2_right#8 ← phi( font_2x2::@7/(byte*) font_2x2::next_2x2_right#1 font_2x2::@6/(byte*) font_2x2::next_2x2_right#7 )
[160] (byte) font_2x2::l2#9 ← phi( font_2x2::@7/(byte) 0 font_2x2::@6/(byte) font_2x2::l2#1 )
[160] (byte*) font_2x2::next_2x2_left#8 ← phi( font_2x2::@7/(byte*) font_2x2::next_2x2_left#1 font_2x2::@6/(byte*) font_2x2::next_2x2_left#7 )
[161] (byte) font_2x2::l#1 ← ++ (byte) font_2x2::l#2
[162] if((byte) font_2x2::l#1!=(byte) 8) goto font_2x2::@2
to:font_2x2::@9
font_2x2::@9: scope:[font_2x2] from font_2x2::@8
[161] (byte*) font_2x2::next_2x2#1 ← (byte*) font_2x2::next_2x2_left#0 + (byte) 8
[162] (byte*) font_2x2::next_original#1 ← (byte*) font_2x2::next_original#4 + (byte) 8
[163] (byte) font_2x2::c#1 ← ++ (byte) font_2x2::c#11
[164] if((byte) font_2x2::c#1!=(byte) $40) goto font_2x2::@1
[163] (byte*) font_2x2::next_2x2#1 ← (byte*) font_2x2::next_2x2_left#0 + (byte) 8
[164] (byte*) font_2x2::next_original#1 ← (byte*) font_2x2::next_original#4 + (byte) 8
[165] (byte) font_2x2::c#1 ← ++ (byte) font_2x2::c#11
[166] if((byte) font_2x2::c#1!=(byte) $40) goto font_2x2::@1
to:font_2x2::@return
font_2x2::@return: scope:[font_2x2] from font_2x2::@9
[165] return
[167] return
to:@return
interrupt(KERNEL_MIN)(void()) plex_irq()
@ -334,77 +338,77 @@ plex_irq: scope:[plex_irq] from
asm { sei }
to:plex_irq::@3
plex_irq::@3: scope:[plex_irq] from plex_irq plex_irq::@7
[167] phi()
[168] call plexShowSprite
[169] phi()
[170] call plexShowSprite
to:plex_irq::plexFreeNextYpos1
plex_irq::plexFreeNextYpos1: scope:[plex_irq] from plex_irq::@3
[169] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte*) PLEX_FREE_YPOS + (volatile byte) plex_free_next)
[171] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte*) PLEX_FREE_YPOS + (volatile byte) plex_free_next)
to:plex_irq::@6
plex_irq::@6: scope:[plex_irq] from plex_irq::plexFreeNextYpos1
[170] (byte~) plex_irq::$4 ← *((const nomodify byte*) RASTER) + (byte) 3
[171] if((volatile byte) plex_show_idx>=(const nomodify byte) PLEX_COUNT) goto plex_irq::@4
[172] (byte~) plex_irq::$4 ← *((const nomodify byte*) RASTER) + (byte) 3
[173] if((volatile byte) plex_show_idx>=(const nomodify byte) PLEX_COUNT) goto plex_irq::@4
to:plex_irq::@7
plex_irq::@7: scope:[plex_irq] from plex_irq::@6
[172] if((byte) plex_irq::plexFreeNextYpos1_return#0<(byte~) plex_irq::$4) goto plex_irq::@3
[174] if((byte) plex_irq::plexFreeNextYpos1_return#0<(byte~) plex_irq::$4) goto plex_irq::@3
to:plex_irq::@4
plex_irq::@4: scope:[plex_irq] from plex_irq::@6 plex_irq::@7
[173] if((volatile byte) plex_show_idx<(const nomodify byte) PLEX_COUNT) goto plex_irq::@1
[175] if((volatile byte) plex_show_idx<(const nomodify byte) PLEX_COUNT) goto plex_irq::@1
to:plex_irq::@5
plex_irq::@5: scope:[plex_irq] from plex_irq::@4
[174] *((const nomodify byte*) RASTER) ← (byte) $28
[175] (volatile bool) frame_done ← true
[176] *((const nomodify byte*) RASTER) ← (byte) $28
[177] (volatile bool) frame_done ← true
to:plex_irq::@2
plex_irq::@2: scope:[plex_irq] from plex_irq::@1 plex_irq::@5
[176] *((const nomodify byte*) IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER
[178] *((const nomodify byte*) IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER
asm { cli }
to:plex_irq::@return
plex_irq::@return: scope:[plex_irq] from plex_irq::@2
[178] return
[180] return
to:@return
plex_irq::@1: scope:[plex_irq] from plex_irq::@4
[179] *((const nomodify byte*) RASTER) ← (byte) plex_irq::plexFreeNextYpos1_return#0
[181] *((const nomodify byte*) RASTER) ← (byte) plex_irq::plexFreeNextYpos1_return#0
to:plex_irq::@2
(void()) plexShowSprite()
plexShowSprite: scope:[plexShowSprite] from plex_irq::@3
[180] (byte) plexShowSprite::plex_sprite_idx2#0 ← (volatile byte) plex_sprite_idx << (byte) 1
[181] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (volatile byte) plex_show_idx))
[182] *((const nomodify byte*) SPRITES_YPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0
[182] (byte) plexShowSprite::plex_sprite_idx2#0 ← (volatile byte) plex_sprite_idx << (byte) 1
[183] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (volatile byte) plex_show_idx))
[184] *((const nomodify byte*) SPRITES_YPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0
to:plexShowSprite::plexFreeAdd1
plexShowSprite::plexFreeAdd1: scope:[plexShowSprite] from plexShowSprite
[183] (byte~) plexShowSprite::plexFreeAdd1_$0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte) $15
[184] *((const byte*) PLEX_FREE_YPOS + (volatile byte) plex_free_next) ← (byte~) plexShowSprite::plexFreeAdd1_$0
[185] (byte~) plexShowSprite::plexFreeAdd1_$1 ← (volatile byte) plex_free_next + (byte) 1
[186] (byte~) plexShowSprite::plexFreeAdd1_$2 ← (byte~) plexShowSprite::plexFreeAdd1_$1 & (byte) 7
[187] (volatile byte) plex_free_next ← (byte~) plexShowSprite::plexFreeAdd1_$2
[185] (byte~) plexShowSprite::plexFreeAdd1_$0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte) $15
[186] *((const byte*) PLEX_FREE_YPOS + (volatile byte) plex_free_next) ← (byte~) plexShowSprite::plexFreeAdd1_$0
[187] (byte~) plexShowSprite::plexFreeAdd1_$1 ← (volatile byte) plex_free_next + (byte) 1
[188] (byte~) plexShowSprite::plexFreeAdd1_$2 ← (byte~) plexShowSprite::plexFreeAdd1_$1 & (byte) 7
[189] (volatile byte) plex_free_next ← (byte~) plexShowSprite::plexFreeAdd1_$2
to:plexShowSprite::@5
plexShowSprite::@5: scope:[plexShowSprite] from plexShowSprite::plexFreeAdd1
[188] *((const byte*) PLEX_SCREEN_PTR#0 + (volatile byte) plex_sprite_idx) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (volatile byte) plex_show_idx))
[189] (byte) plexShowSprite::xpos_idx#0 ← *((const byte*) PLEX_SORTED_IDX + (volatile byte) plex_show_idx)
[190] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1
[191] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11)
[192] *((const nomodify byte*) SPRITES_XPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2
[193] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11)
[194] if((byte~) plexShowSprite::$3!=(byte) 0) goto plexShowSprite::@1
[190] *((const byte*) PLEX_SCREEN_PTR#0 + (volatile byte) plex_sprite_idx) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (volatile byte) plex_show_idx))
[191] (byte) plexShowSprite::xpos_idx#0 ← *((const byte*) PLEX_SORTED_IDX + (volatile byte) plex_show_idx)
[192] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1
[193] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11)
[194] *((const nomodify byte*) SPRITES_XPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2
[195] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11)
[196] if((byte~) plexShowSprite::$3!=(byte) 0) goto plexShowSprite::@1
to:plexShowSprite::@3
plexShowSprite::@3: scope:[plexShowSprite] from plexShowSprite::@5
[195] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (volatile byte) plex_sprite_msb
[196] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9
[197] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (volatile byte) plex_sprite_msb
[198] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9
to:plexShowSprite::@2
plexShowSprite::@2: scope:[plexShowSprite] from plexShowSprite::@1 plexShowSprite::@3
[197] (byte~) plexShowSprite::$5 ← (volatile byte) plex_sprite_idx + (byte) 1
[198] (byte~) plexShowSprite::$6 ← (byte~) plexShowSprite::$5 & (byte) 7
[199] (volatile byte) plex_sprite_idx ← (byte~) plexShowSprite::$6
[200] (volatile byte) plex_show_idx ← ++ (volatile byte) plex_show_idx
[201] (volatile byte) plex_sprite_msb ← (volatile byte) plex_sprite_msb << (byte) 1
[202] if((volatile byte) plex_sprite_msb!=(byte) 0) goto plexShowSprite::@return
[199] (byte~) plexShowSprite::$5 ← (volatile byte) plex_sprite_idx + (byte) 1
[200] (byte~) plexShowSprite::$6 ← (byte~) plexShowSprite::$5 & (byte) 7
[201] (volatile byte) plex_sprite_idx ← (byte~) plexShowSprite::$6
[202] (volatile byte) plex_show_idx ← ++ (volatile byte) plex_show_idx
[203] (volatile byte) plex_sprite_msb ← (volatile byte) plex_sprite_msb << (byte) 1
[204] if((volatile byte) plex_sprite_msb!=(byte) 0) goto plexShowSprite::@return
to:plexShowSprite::@4
plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite::@2
[203] (volatile byte) plex_sprite_msb ← (byte) 1
[205] (volatile byte) plex_sprite_msb ← (byte) 1
to:plexShowSprite::@return
plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@2 plexShowSprite::@4
[204] return
[206] return
to:@return
plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite::@5
[205] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (volatile byte) plex_sprite_msb
[207] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (volatile byte) plex_sprite_msb
to:plexShowSprite::@2

File diff suppressed because it is too large Load Diff

View File

@ -48,8 +48,8 @@
(byte~) font_2x2::$12 reg byte a 10001.0
(byte~) font_2x2::$14 reg byte y 20002.0
(byte~) font_2x2::$15 reg byte a 10001.0
(word~) font_2x2::$5 zp[2]:20 200002.0
(word~) font_2x2::$7 zp[2]:20 200002.0
(word~) font_2x2::$5 zp[2]:18 200002.0
(word~) font_2x2::$7 zp[2]:18 200002.0
(label) font_2x2::@1
(label) font_2x2::@2
(label) font_2x2::@3
@ -64,45 +64,45 @@
(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]:9 1501.5
(byte) font_2x2::c#11 c zp[1]:9 58.88235294117647
(byte) font_2x2::c#1 c zp[1]:20 1501.5
(byte) font_2x2::c#11 c zp[1]:20 58.88235294117647
(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]:22 20002.0
(byte) font_2x2::glyph_bits#1 glyph_bits zp[1]:22 66667.33333333333
(byte) font_2x2::glyph_bits#2 glyph_bits zp[1]:22 34444.88888888889
(byte) font_2x2::glyph_bits#0 glyph_bits zp[1]:12 20002.0
(byte) font_2x2::glyph_bits#1 glyph_bits zp[1]:12 66667.33333333333
(byte) font_2x2::glyph_bits#2 glyph_bits zp[1]:12 34444.88888888889
(word) font_2x2::glyph_bits_2x2
(word) font_2x2::glyph_bits_2x2#1 glyph_bits_2x2 zp[2]:20 200002.0
(word) font_2x2::glyph_bits_2x2#2 glyph_bits_2x2 zp[2]:20 27500.5
(word) font_2x2::glyph_bits_2x2#3 glyph_bits_2x2 zp[2]:20 40000.4
(word) font_2x2::glyph_bits_2x2#1 glyph_bits_2x2 zp[2]:18 200002.0
(word) font_2x2::glyph_bits_2x2#2 glyph_bits_2x2 zp[2]:18 27500.5
(word) font_2x2::glyph_bits_2x2#3 glyph_bits_2x2 zp[2]:18 40000.4
(byte) font_2x2::l
(byte) font_2x2::l#1 l zp[1]:10 15001.5
(byte) font_2x2::l#2 l zp[1]:10 1111.2222222222222
(byte) font_2x2::l#1 l zp[1]:21 15001.5
(byte) font_2x2::l#2 l zp[1]:21 1111.2222222222222
(byte) font_2x2::l2
(byte) font_2x2::l2#1 l2 zp[1]:23 15001.5
(byte) font_2x2::l2#8 l2 zp[1]:23 2727.5454545454545
(byte) font_2x2::l2#9 l2 zp[1]:23 6667.333333333333
(byte) font_2x2::l2#1 l2 zp[1]:24 15001.5
(byte) font_2x2::l2#8 l2 zp[1]:24 2727.5454545454545
(byte) font_2x2::l2#9 l2 zp[1]:24 6667.333333333333
(byte*) font_2x2::next_2x2
(byte*) font_2x2::next_2x2#1 next_2x2 zp[2]:5 500.5
(byte*) font_2x2::next_2x2#1 next_2x2 zp[2]:22 500.5
(byte*) font_2x2::next_2x2_left
(byte*) font_2x2::next_2x2_left#0 next_2x2_left zp[2]:5 750.1875
(byte*) font_2x2::next_2x2_left#1 next_2x2_left_1 zp[2]:11 10001.0
(byte*) font_2x2::next_2x2_left#10 next_2x2_left_1 zp[2]:11 2002.0
(byte*) font_2x2::next_2x2_left#7 next_2x2_left_1 zp[2]:11 1708.5416666666665
(byte*) font_2x2::next_2x2_left#8 next_2x2_left_1 zp[2]:11 10001.0
(byte*) font_2x2::next_2x2_left#0 next_2x2_left zp[2]:22 750.1875
(byte*) font_2x2::next_2x2_left#1 next_2x2_left_1 zp[2]:8 10001.0
(byte*) font_2x2::next_2x2_left#10 next_2x2_left_1 zp[2]:8 2002.0
(byte*) font_2x2::next_2x2_left#7 next_2x2_left_1 zp[2]:8 1708.5416666666665
(byte*) font_2x2::next_2x2_left#8 next_2x2_left_1 zp[2]:8 10001.0
(byte*) font_2x2::next_2x2_right
(byte*) font_2x2::next_2x2_right#0 next_2x2_right zp[2]:13 1001.0
(byte*) font_2x2::next_2x2_right#1 next_2x2_right zp[2]:13 20002.0
(byte*) font_2x2::next_2x2_right#7 next_2x2_right zp[2]:13 1708.5416666666665
(byte*) font_2x2::next_2x2_right#8 next_2x2_right zp[2]:13 10001.0
(byte*) font_2x2::next_2x2_right#0 next_2x2_right zp[2]:10 1001.0
(byte*) font_2x2::next_2x2_right#1 next_2x2_right zp[2]:10 20002.0
(byte*) font_2x2::next_2x2_right#7 next_2x2_right zp[2]:10 1708.5416666666665
(byte*) font_2x2::next_2x2_right#8 next_2x2_right zp[2]:10 10001.0
(byte*) font_2x2::next_original
(byte*) font_2x2::next_original#1 next_original zp[2]:7 667.3333333333334
(byte*) font_2x2::next_original#4 next_original zp[2]:7 363.7272727272727
(byte*) font_2x2::next_original#1 next_original zp[2]:6 667.3333333333334
(byte*) font_2x2::next_original#4 next_original zp[2]:6 363.7272727272727
(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]:23 10001.0
(byte~) font_2x2_to_sprites::$3 zp[1]:24 10001.0
(label) font_2x2_to_sprites::@1
(label) font_2x2_to_sprites::@2
(label) font_2x2_to_sprites::@3
@ -113,21 +113,21 @@
(label) font_2x2_to_sprites::@8
(label) font_2x2_to_sprites::@return
(byte) font_2x2_to_sprites::c
(byte) font_2x2_to_sprites::c#1 c zp[1]:9 2002.0
(byte) font_2x2_to_sprites::c#2 c zp[1]:9 136.5
(byte) font_2x2_to_sprites::c#1 c zp[1]:20 2002.0
(byte) font_2x2_to_sprites::c#2 c zp[1]:20 136.5
(byte*) font_2x2_to_sprites::char_current
(byte*) font_2x2_to_sprites::char_current#1 char_current zp[2]:5 667.3333333333334
(byte*) font_2x2_to_sprites::char_current#2 char_current zp[2]:5 1200.3
(byte*) font_2x2_to_sprites::char_current#1 char_current zp[2]:22 667.3333333333334
(byte*) font_2x2_to_sprites::char_current#2 char_current zp[2]:22 1200.3
(byte*) font_2x2_to_sprites::char_left
(byte*) font_2x2_to_sprites::char_left#1 char_left zp[2]:11 10001.0
(byte*) font_2x2_to_sprites::char_left#3 char_left zp[2]:11 2818.5454545454545
(byte*) font_2x2_to_sprites::char_left#4 char_left zp[2]:11 10001.0
(byte*) font_2x2_to_sprites::char_left#6 char_left zp[2]:11 2002.0
(byte*) font_2x2_to_sprites::char_left#1 char_left zp[2]:8 10001.0
(byte*) font_2x2_to_sprites::char_left#3 char_left zp[2]:8 2818.5454545454545
(byte*) font_2x2_to_sprites::char_left#4 char_left zp[2]:8 10001.0
(byte*) font_2x2_to_sprites::char_left#6 char_left zp[2]:8 2002.0
(byte*) font_2x2_to_sprites::char_right
(byte*) font_2x2_to_sprites::char_right#0 char_right zp[2]:13 1001.0
(byte*) font_2x2_to_sprites::char_right#1 char_right zp[2]:13 20002.0
(byte*) font_2x2_to_sprites::char_right#3 char_right zp[2]:13 2818.5454545454545
(byte*) font_2x2_to_sprites::char_right#4 char_right zp[2]:13 10001.0
(byte*) font_2x2_to_sprites::char_right#0 char_right zp[2]:10 1001.0
(byte*) font_2x2_to_sprites::char_right#1 char_right zp[2]:10 20002.0
(byte*) font_2x2_to_sprites::char_right#3 char_right zp[2]:10 2818.5454545454545
(byte*) font_2x2_to_sprites::char_right#4 char_right zp[2]:10 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
@ -135,19 +135,18 @@
(byte) font_2x2_to_sprites::num_chars
(const byte) font_2x2_to_sprites::num_chars#0 num_chars = (byte) $40
(byte*) font_2x2_to_sprites::sprite
(byte*) font_2x2_to_sprites::sprite#1 sprite zp[2]:7 1001.0
(byte*) font_2x2_to_sprites::sprite#4 sprite zp[2]:7 1524.047619047619
(byte*) font_2x2_to_sprites::sprite#1 sprite zp[2]:6 1001.0
(byte*) font_2x2_to_sprites::sprite#4 sprite zp[2]:6 1524.047619047619
(byte) font_2x2_to_sprites::sprite_idx
(byte) font_2x2_to_sprites::sprite_idx#1 sprite_idx zp[1]:10 15001.5
(byte) font_2x2_to_sprites::sprite_idx#1 sprite_idx zp[1]:21 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]:10 2222.4444444444443
(byte) font_2x2_to_sprites::sprite_idx#4 sprite_idx zp[1]:10 10001.0
(byte) font_2x2_to_sprites::sprite_idx#3 sprite_idx zp[1]:21 2222.4444444444443
(byte) font_2x2_to_sprites::sprite_idx#4 sprite_idx zp[1]:21 10001.0
(byte*) font_2x2_to_sprites::sprites
(volatile bool) frame_done loadstore zp[1]:19 25.72093023255814
(volatile bool) frame_done loadstore zp[1]:17 26.333333333333332
(void()) main()
(byte~) main::$12 reg byte y 101.0
(word~) main::$13 zp[2]:20 202.0
(byte~) main::$7 reg byte a 202.0
(word~) main::$13 zp[2]:18 202.0
(label) main::@1
(label) main::@10
(label) main::@11
@ -163,7 +162,7 @@
(label) main::@9
(byte) main::s
(byte) main::s#1 s zp[1]:2 202.0
(byte) main::s#2 s zp[1]:2 75.75
(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
@ -174,7 +173,7 @@
(byte*) main::toD0181_screen
(byte) main::x
(byte) main::x#1 reg byte x 101.0
(byte) main::x#2 reg byte x 57.714285714285715
(byte) main::x#2 reg byte x 67.33333333333333
(void()) plexInit((byte*) plexInit::screen)
(label) plexInit::@1
(label) plexInit::@return
@ -204,7 +203,7 @@
(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::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:26 25.25
(byte) plexShowSprite::xpos_idx
(byte) plexShowSprite::xpos_idx#0 reg byte a 202.0
(byte) plexShowSprite::ypos
@ -218,12 +217,12 @@
(label) plexSort::@7
(label) plexSort::@return
(byte) plexSort::m
(byte) plexSort::m#1 m zp[1]:9 150001.5
(byte) plexSort::m#2 m zp[1]:9 41667.08333333333
(byte) plexSort::m#1 m zp[1]:12 150001.5
(byte) plexSort::m#2 m zp[1]:12 41667.08333333333
(byte) plexSort::nxt_idx
(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:23 30000.300000000003
(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:20 30000.300000000003
(byte) plexSort::nxt_y
(byte) plexSort::nxt_y#0 nxt_y zp[1]:22 150000.375
(byte) plexSort::nxt_y#0 nxt_y zp[1]:21 150000.375
(label) plexSort::plexFreePrepare1
(label) plexSort::plexFreePrepare1_@1
(label) plexSort::plexFreePrepare1_@2
@ -235,9 +234,9 @@
(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]:18 42.48387096774193
(volatile byte) plex_free_next loadstore zp[1]:16 42.48387096774193
interrupt(KERNEL_MIN)(void()) plex_irq()
(byte~) plex_irq::$4 zp[1]:24 11.0
(byte~) plex_irq::$4 zp[1]:25 11.0
(label) plex_irq::@1
(label) plex_irq::@2
(label) plex_irq::@3
@ -252,8 +251,8 @@ interrupt(KERNEL_MIN)(void()) plex_irq()
(byte) plex_irq::rasterY
(void()) plex_move()
(byte~) plex_move::$4 reg byte a 200002.0
(byte~) plex_move::$6 reg byte a 200002.0
(byte~) plex_move::$7 reg byte a 200002.0
(byte~) plex_move::$6 reg byte x 100001.0
(word~) plex_move::$7 zp[2]:22 200002.0
(label) plex_move::@1
(label) plex_move::@2
(label) plex_move::@3
@ -262,60 +261,65 @@ interrupt(KERNEL_MIN)(void()) plex_irq()
(label) plex_move::@6
(label) plex_move::@return
(byte) plex_move::s
(byte) plex_move::s#1 s zp[1]:9 150001.5
(byte) plex_move::s#2 s zp[1]:9 42857.57142857143
(byte) plex_move::s#1 s zp[1]:20 150001.5
(byte) plex_move::s#2 s zp[1]:20 33333.66666666667
(byte) plex_move::x_idx
(byte) plex_move::x_idx#0 x_idx zp[1]:21 2002.0
(byte) plex_move::x_idx#1 x_idx zp[1]:21 66667.33333333333
(byte) plex_move::x_idx#2 x_idx zp[1]:21 35786.142857142855
(byte) plex_move::y_idx
(byte) plex_move::y_idx#0 reg byte x 2002.0
(byte) plex_move::y_idx#1 reg byte x 14285.857142857143
(byte) plex_move::y_idx#2 reg byte x 150502.0
(volatile byte) plex_show_idx loadstore zp[1]:15 46.0909090909091
(volatile byte) plex_sprite_idx loadstore zp[1]:16 45.387096774193544
(volatile byte) plex_sprite_msb loadstore zp[1]:17 48.757575757575765
(byte) plex_move::y_idx#0 y_idx zp[1]:12 1001.0
(byte) plex_move::y_idx#1 y_idx zp[1]:12 13333.466666666667
(byte) plex_move::y_idx#2 y_idx zp[1]:12 150502.0
(volatile byte) plex_show_idx loadstore zp[1]:13 46.0909090909091
(volatile byte) plex_sprite_idx loadstore zp[1]:14 45.387096774193544
(volatile byte) plex_sprite_msb loadstore zp[1]:15 48.757575757575765
(byte*) scroll_text_next
(byte*) scroll_text_next#11 scroll_text_next zp[2]:3 44556.11111111111
(byte*) scroll_text_next#12 scroll_text_next zp[2]:3 100001.0
(byte*) scroll_text_next#13 scroll_text_next zp[2]:3 14290.666666666668
(byte*) scroll_text_next#25 scroll_text_next zp[2]:3 551.0
(byte*) scroll_text_next#4 scroll_text_next zp[2]:3 200002.0
(byte) sin_idx
(byte) sin_idx#10 sin_idx zp[1]:2 116.83333333333334
(byte) sin_idx#12 sin_idx zp[1]:2 61.22222222222223
(byte*) scroll_text_next#11 scroll_text_next zp[2]:4 44556.11111111111
(byte*) scroll_text_next#12 scroll_text_next zp[2]:4 100001.0
(byte*) scroll_text_next#13 scroll_text_next zp[2]:4 13048.0
(byte*) scroll_text_next#25 scroll_text_next zp[2]:4 367.33333333333337
(byte*) scroll_text_next#4 scroll_text_next zp[2]:4 200002.0
(label) toSpritePtr1
(byte) toSpritePtr1_return
(const byte) toSpritePtr1_return#0 toSpritePtr1_return = (byte)(word)(const nomodify byte*) SPRITES/(byte) $40
(byte*) toSpritePtr1_sprite
(byte) x_movement_idx
(byte) x_movement_idx#10 x_movement_idx zp[1]:3 100.14285714285714
(byte) x_movement_idx#12 x_movement_idx zp[1]:3 61.22222222222223
(byte) y_sin_idx
(byte) y_sin_idx#10 y_sin_idx zp[1]:2 105.14999999999999
(byte) y_sin_idx#12 y_sin_idx zp[1]:2 58.0
reg byte x [ main::x#2 main::x#1 ]
reg byte x [ main::s1#2 main::s1#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[1]:2 [ sin_idx#10 sin_idx#12 main::s#2 main::s#1 ]
reg byte x [ plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 ]
zp[2]:3 [ scroll_text_next#12 scroll_text_next#11 scroll_text_next#25 scroll_text_next#13 scroll_text_next#4 ]
zp[1]:2 [ y_sin_idx#10 y_sin_idx#12 main::s#2 main::s#1 ]
zp[1]:3 [ x_movement_idx#10 x_movement_idx#12 ]
zp[2]:4 [ scroll_text_next#12 scroll_text_next#11 scroll_text_next#25 scroll_text_next#13 scroll_text_next#4 ]
reg byte x [ plexInit::i#2 plexInit::i#1 ]
reg byte x [ font_2x2_to_sprites::i#2 font_2x2_to_sprites::i#1 ]
zp[2]:5 [ font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 ]
zp[2]:7 [ font_2x2::next_original#4 font_2x2::next_original#1 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::sprite#1 ]
zp[1]:9 [ font_2x2::c#11 font_2x2::c#1 font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 plex_move::s#2 plex_move::s#1 plexSort::m#2 plexSort::m#1 ]
zp[1]:10 [ font_2x2::l#2 font_2x2::l#1 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::sprite_idx#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 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]:13 [ 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_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]:6 [ font_2x2::next_original#4 font_2x2::next_original#1 font_2x2_to_sprites::sprite#4 font_2x2_to_sprites::sprite#1 ]
zp[2]:8 [ 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_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]:10 [ 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_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[1]:12 [ font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 plex_move::y_idx#2 plex_move::y_idx#0 plex_move::y_idx#1 plexSort::m#2 plexSort::m#1 ]
reg byte y [ font_2x2::b#2 font_2x2::b#1 ]
reg byte x [ font_2x2::glyph_bit#0 ]
zp[1]:15 [ plex_show_idx ]
zp[1]:16 [ plex_sprite_idx ]
zp[1]:17 [ plex_sprite_msb ]
zp[1]:18 [ plex_free_next ]
zp[1]:19 [ frame_done ]
reg byte a [ main::$7 ]
zp[1]:13 [ plex_show_idx ]
zp[1]:14 [ plex_sprite_idx ]
zp[1]:15 [ plex_sprite_msb ]
zp[1]:16 [ plex_free_next ]
zp[1]:17 [ frame_done ]
reg byte y [ main::$12 ]
zp[2]:20 [ 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]:22 [ plexSort::nxt_y#0 font_2x2::glyph_bits#2 font_2x2::glyph_bits#0 font_2x2::glyph_bits#1 ]
zp[2]:18 [ 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]:20 [ plexSort::nxt_idx#0 font_2x2::c#11 font_2x2::c#1 font_2x2_to_sprites::c#2 font_2x2_to_sprites::c#1 plex_move::s#2 plex_move::s#1 ]
zp[1]:21 [ plexSort::nxt_y#0 font_2x2::l#2 font_2x2::l#1 font_2x2_to_sprites::sprite_idx#4 font_2x2_to_sprites::sprite_idx#3 font_2x2_to_sprites::sprite_idx#1 plex_move::x_idx#2 plex_move::x_idx#0 plex_move::x_idx#1 ]
reg byte x [ plexSort::s#2 ]
reg byte a [ plex_move::$6 ]
reg byte a [ plex_move::$7 ]
reg byte x [ plex_move::$6 ]
zp[2]:22 [ plex_move::$7 font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 ]
reg byte a [ plex_move::$4 ]
zp[1]:23 [ font_2x2_to_sprites::$3 plexSort::nxt_idx#0 font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ]
zp[1]:24 [ font_2x2_to_sprites::$3 font_2x2::l2#8 font_2x2::l2#9 font_2x2::l2#1 ]
reg byte y [ font_2x2_to_sprites::sprite_idx#2 ]
reg byte a [ font_2x2::$1 ]
reg byte a [ font_2x2::$12 ]
@ -323,8 +327,8 @@ reg byte y [ font_2x2::$11 ]
reg byte a [ font_2x2::$15 ]
reg byte y [ font_2x2::$14 ]
reg byte x [ plex_irq::plexFreeNextYpos1_return#0 ]
zp[1]:24 [ plex_irq::$4 ]
zp[1]:25 [ plexShowSprite::plex_sprite_idx2#0 ]
zp[1]:25 [ plex_irq::$4 ]
zp[1]:26 [ plexShowSprite::plex_sprite_idx2#0 ]
reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ]
reg byte a [ plexShowSprite::plexFreeAdd1_$0 ]
reg byte a [ plexShowSprite::plexFreeAdd1_$1 ]