1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-01-29 20:31:58 +00:00

Improved the multiplexer

This commit is contained in:
jespergravgaard 2018-08-03 00:07:42 +02:00
parent 3559ac29d5
commit 962fefe582
6 changed files with 1683 additions and 3490 deletions

View File

@ -1,11 +1,20 @@
// A flexible sprite multiplexer routine
// A flexible sprite multiplexer routine for 24 sprites.
// Usage:
// - Once:
// - plexInit(screen): Initialize the data structures and set the screen address
// Each frame:
// - Set x-pos, y-pos and pointer in PLEX_XPOS[id], PLEX_YPOS[id], PLEX_PTR[id]
// - plexSort() Sorts the sprites according to y-positions and prepares for showing them. This uses an insertion sort that is quite fast when the relative order of the sprites does not change very much.
// - plexShowNextYpos() Returns the Y-position of the next sprite to show.
// - plexShowSprite() Shows the next sprite by copying values from PLEX_XXX[] to an actual sprite. Actual sprites are used round-robin. This should be called once for each of the 24 virtual sprites.
//
// In practice a good method is to wait until the raster is close to plexShowNextYpos() and then call plexShowSprite(). Repeat until all 24 sprites have been shown.
import "c64"
// TODO: Let the caller specify the number of sprites (PLEX_COUNT)
// TODO: Optimize plexSort() - currently nxt_idx and nxt_y are stored in the outer loop.
import "c64"
import "sinus"
// The number of sprites in the multiplexer
const byte PLEX_COUNT = 24;

View File

@ -8,14 +8,13 @@ byte* SCREEN = $400;
byte* YSIN = $2100;
kickasm(pc YSIN) {{
.var min = 51
.var min = 50
.var max = 250-21
.var ampl = max-min;
.for(var i=0;i<256;i++)
.byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256)))
}}
kickasm(pc SPRITE, resource "balloon.png") {{
.var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
.for (var y=0; y<21; y++)
@ -41,7 +40,6 @@ void init() {
PLEX_XPOS[sx<<1] = xp;
xp += 12;
}
// Enable & initialize sprites
*SPRITES_ENABLE = $ff;
for(byte ss: 0..7) {
@ -66,13 +64,10 @@ void loop() {
// Sort the sprites by y-position
(*BORDERCOL)++;
plexSort();
// Show the first 8 sprites
(*BORDERCOL)++;
for( byte ss: 0..7) {
plexShowSprite();
}
// Show the rest of the sprites
for( ss: 8..PLEX_COUNT-1) {
*BORDERCOL = BLACK;
while((*D011&$80)!=0) {}
// Show the sprites
for( byte ss: 0..PLEX_COUNT-1) {
*BORDERCOL = BLACK;
byte rasterY = plexShowNextYpos()-8;
while(*RASTER<rasterY) {}

View File

@ -19,8 +19,8 @@
.label YSIN = $2100
.label PLEX_SCREEN_PTR = SCREEN+$3f8
.label plex_sprite_idx = 4
.label plex_show_idx = 5
.label plex_sprite_msb = 6
.label plex_show_idx = 3
.label plex_sprite_msb = 5
jsr main
main: {
sei
@ -30,8 +30,8 @@ main: {
}
loop: {
.label sin_idx = 2
.label ss = 3
.label rasterY = 9
.label ss = 6
lda #0
sta sin_idx
b4:
@ -54,23 +54,21 @@ loop: {
inc sin_idx
inc BORDERCOL
jsr plexSort
inc BORDERCOL
lda #BLACK
sta BORDERCOL
b8:
lda D011
and #$80
cmp #0
bne b8
lda #0
sta ss
lda #1
sta plex_sprite_msb
lda #0
sta plex_show_idx
sta plex_sprite_idx
b8:
jsr plexShowSprite
inc ss
lda ss
cmp #8
bne b8
lda #8
sta ss
b9:
sta plex_show_idx
b11:
lda #BLACK
sta BORDERCOL
ldy plex_show_idx
@ -80,16 +78,16 @@ loop: {
sec
sbc #8
sta rasterY
b10:
b12:
lda RASTER
cmp rasterY
bcc b10
bcc b12
inc BORDERCOL
jsr plexShowSprite
inc ss
lda ss
cmp #PLEX_COUNT-1+1
bne b9
bne b11
lda #BLACK
sta BORDERCOL
jmp b4
@ -238,7 +236,7 @@ plexInit: {
PLEX_PTR: .fill PLEX_COUNT, 0
PLEX_SORTED_IDX: .fill PLEX_COUNT, 0
.pc = YSIN "Inline"
.var min = 51
.var min = 50
.var max = 250-21
.var ampl = max-min;
.for(var i=0;i<256;i++)

View File

@ -1,8 +1,8 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@28
@28: scope:[] from @begin
kickasm(location (const byte*) YSIN#0) {{ .var min = 51
to:@8
@8: scope:[] from @begin
kickasm(location (const byte*) YSIN#0) {{ .var min = 50
.var max = 250-21
.var ampl = max-min;
.for(var i=0;i<256;i++)
@ -13,14 +13,14 @@
.for (var x=0;x<3; x++)
.byte pic.getSinglecolorByte(x,y)
}}
to:@31
@31: scope:[] from @28
to:@11
@11: scope:[] from @8
[3] phi() [ ] ( )
[4] call main [ ] ( )
to:@end
@end: scope:[] from @31
@end: scope:[] from @11
[5] phi() [ ] ( )
main: scope:[main] from @31
main: scope:[main] from @11
asm { sei }
[7] call init [ ] ( main:4 [ ] )
to:main::@1
@ -34,8 +34,8 @@ main::@return: scope:[main] from main::@1
loop: scope:[loop] from main::@1
[11] phi() [ ] ( main:4::loop:9 [ ] )
to:loop::@1
loop::@1: scope:[loop] from loop loop::@23
[12] (byte) loop::sin_idx#6 ← phi( loop/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@23/(byte) loop::sin_idx#1 ) [ loop::sin_idx#6 ] ( main:4::loop:9 [ loop::sin_idx#6 ] )
loop::@1: scope:[loop] from loop loop::@27
[12] (byte) loop::sin_idx#6 ← phi( loop/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@27/(byte) loop::sin_idx#1 ) [ loop::sin_idx#6 ] ( main:4::loop:9 [ loop::sin_idx#6 ] )
to:loop::@4
loop::@4: scope:[loop] from loop::@1 loop::@4
[13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 [ loop::sin_idx#6 ] ( main:4::loop:9 [ loop::sin_idx#6 ] )
@ -51,154 +51,147 @@ loop::@7: scope:[loop] from loop::@6 loop::@7
[18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] )
[19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] )
[20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] )
to:loop::@18
loop::@18: scope:[loop] from loop::@7
to:loop::@20
loop::@20: scope:[loop] from loop::@7
[21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
[22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
[23] call plexSort [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
to:loop::@26
loop::@26: scope:[loop] from loop::@18
[24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
to:loop::@30
loop::@30: scope:[loop] from loop::@20
[24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
to:loop::@8
loop::@8: scope:[loop] from loop::@26 loop::@27
[25] (byte) loop::ss#4 ← phi( loop::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@27/(byte) loop::ss#1 ) [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] )
[25] (byte) plex_sprite_msb#29 ← phi( loop::@26/(byte/signed byte/word/signed word/dword/signed dword) 1 loop::@27/(byte) plex_sprite_msb#17 ) [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] )
[25] (byte) plex_show_idx#25 ← phi( loop::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@27/(byte) plex_show_idx#15 ) [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] )
[25] (byte) plex_sprite_idx#24 ← phi( loop::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@27/(byte) plex_sprite_idx#15 ) [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] )
[26] call plexShowSprite [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
to:loop::@27
loop::@27: scope:[loop] from loop::@8
[27] (byte) loop::ss#1 ← ++ (byte) loop::ss#4 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] )
[28] if((byte) loop::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] )
to:loop::@9
loop::@9: scope:[loop] from loop::@27 loop::@28
[29] (byte) loop::ss#10 ← phi( loop::@27/(byte/signed byte/word/signed word/dword/signed dword) 8 loop::@28/(byte) loop::ss#3 ) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
[30] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
loop::@8: scope:[loop] from loop::@30 loop::@8
[25] (byte~) loop::$4 ← *((const byte*) D011#0) & (byte/word/signed word/dword/signed dword) 128 [ loop::sin_idx#1 loop::$4 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::$4 ] )
[26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
to:loop::@11
loop::@11: scope:[loop] from loop::@31 loop::@8
[27] (byte) loop::ss#6 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@31/(byte) loop::ss#1 ) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
[27] (byte) plex_sprite_msb#38 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 loop::@31/(byte) plex_sprite_msb#16 ) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
[27] (byte) plex_sprite_idx#38 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@31/(byte) plex_sprite_idx#14 ) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
[27] (byte) plex_show_idx#18 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@31/(byte) plex_show_idx#14 ) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
[28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
to:loop::plexShowNextYpos1
loop::plexShowNextYpos1: scope:[loop] from loop::@9
[31] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#15)) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] )
to:loop::@25
loop::@25: scope:[loop] from loop::plexShowNextYpos1
[32] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] )
to:loop::@10
loop::@10: scope:[loop] from loop::@10 loop::@25
[33] if(*((const byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@10 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] )
loop::plexShowNextYpos1: scope:[loop] from loop::@11
[29] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] )
to:loop::@29
loop::@29: scope:[loop] from loop::plexShowNextYpos1
[30] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] )
to:loop::@12
loop::@12: scope:[loop] from loop::@10
[34] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
[35] call plexShowSprite [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
to:loop::@28
loop::@28: scope:[loop] from loop::@12
[36] (byte) loop::ss#3 ← ++ (byte) loop::ss#10 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] )
[37] if((byte) loop::ss#3!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] )
to:loop::@23
loop::@23: scope:[loop] from loop::@28
[38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
loop::@12: scope:[loop] from loop::@12 loop::@29
[31] if(*((const byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@12 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] )
to:loop::@14
loop::@14: scope:[loop] from loop::@12
[32] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
[33] call plexShowSprite [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
to:loop::@31
loop::@31: scope:[loop] from loop::@14
[34] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] )
[35] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] )
to:loop::@27
loop::@27: scope:[loop] from loop::@31
[36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
to:loop::@1
plexShowSprite: scope:[plexShowSprite] from loop::@12 loop::@8
[39] (byte) plex_sprite_msb#14 ← phi( loop::@12/(byte) plex_sprite_msb#17 loop::@8/(byte) plex_sprite_msb#29 ) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
[39] (byte) plex_show_idx#13 ← phi( loop::@12/(byte) plex_show_idx#15 loop::@8/(byte) plex_show_idx#25 ) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
[39] (byte) plex_sprite_idx#13 ← phi( loop::@12/(byte) plex_sprite_idx#15 loop::@8/(byte) plex_sprite_idx#24 ) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
[40] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] )
[41] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] )
[42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#13) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] )
[43] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] )
[44] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] )
[45] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] )
[46] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] )
[47] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
plexShowSprite: scope:[plexShowSprite] from loop::@14
[37] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] )
[38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] )
[39] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#38) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] )
[40] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] )
[41] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] )
[42] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::xpos_idx#0 ] )
[43] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] )
[44] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] )
to:plexShowSprite::@4
plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite
[48] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] )
[49] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
[45] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] )
[46] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] )
to:plexShowSprite::@2
plexShowSprite::@2: scope:[plexShowSprite] from plexShowSprite::@1 plexShowSprite::@4
[50] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#13 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] )
[51] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] )
[52] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#13 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] )
[53] (byte) plex_sprite_msb#26 ← (byte) plex_sprite_msb#14 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] )
[54] if((byte) plex_sprite_msb#26!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@7 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] )
[47] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#38 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_msb#38 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plexShowSprite::$6 ] )
[48] (byte) plex_sprite_idx#14 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] )
[49] (byte) plex_show_idx#14 ← ++ (byte) plex_show_idx#18 [ plex_sprite_msb#38 plex_show_idx#14 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_sprite_msb#38 plex_show_idx#14 plex_sprite_idx#14 ] )
[50] (byte) plex_sprite_msb#24 ← (byte) plex_sprite_msb#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] )
[51] if((byte) plex_sprite_msb#24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@7 [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] )
to:plexShowSprite::@return
plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@2 plexShowSprite::@7
[55] (byte) plex_sprite_msb#17 ← phi( plexShowSprite::@7/(byte) plex_sprite_msb#26 plexShowSprite::@2/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
[56] return [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
[52] (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@7/(byte) plex_sprite_msb#24 plexShowSprite::@2/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
[53] return [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
to:@return
plexShowSprite::@7: scope:[plexShowSprite] from plexShowSprite::@2
[57] phi() [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] )
[54] phi() [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] )
to:plexShowSprite::@return
plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite
[58] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
[55] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] )
to:plexShowSprite::@2
plexSort: scope:[plexSort] from loop::@18
[59] phi() [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
plexSort: scope:[plexSort] from loop::@20
[56] phi() [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
to:plexSort::@1
plexSort::@1: scope:[plexSort] from plexSort plexSort::@2
[60] (byte) plexSort::m#2 ← phi( plexSort/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::@2/(byte) plexSort::m#1 ) [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] )
[61] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) [ plexSort::m#2 plexSort::nxt_idx#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 ] )
[62] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] )
[63] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] )
[57] (byte) plexSort::m#2 ← phi( plexSort/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::@2/(byte) plexSort::m#1 ) [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] )
[58] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) [ plexSort::m#2 plexSort::nxt_idx#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 ] )
[59] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] )
[60] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] )
to:plexSort::@10
plexSort::@10: scope:[plexSort] from plexSort::@1
[64] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] )
[61] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] )
to:plexSort::@3
plexSort::@3: scope:[plexSort] from plexSort::@10 plexSort::@7
[65] (byte) plexSort::s#3 ← phi( plexSort::@7/(byte) plexSort::s#1 plexSort::@10/(byte~) plexSort::s#6 ) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] )
[66] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] )
[67] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
[68] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
[62] (byte) plexSort::s#3 ← phi( plexSort::@7/(byte) plexSort::s#1 plexSort::@10/(byte~) plexSort::s#6 ) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] )
[63] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] )
[64] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
[65] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
to:plexSort::@5
plexSort::@5: scope:[plexSort] from plexSort::@3 plexSort::@7
[69] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] )
[70] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] )
[66] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] )
[67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] )
to:plexSort::@2
plexSort::@2: scope:[plexSort] from plexSort::@1 plexSort::@5
[71] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
[72] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
[68] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
[69] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
to:plexSort::@return
plexSort::@return: scope:[plexSort] from plexSort::@2
[73] return [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
[70] return [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
to:@return
plexSort::@7: scope:[plexSort] from plexSort::@3
[74] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
[71] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
to:plexSort::@5
init: scope:[init] from main
[75] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] )
[76] call plexInit [ ] ( main:4::init:7 [ ] )
[72] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] )
[73] call plexInit [ ] ( main:4::init:7 [ ] )
to:init::@1
init::@1: scope:[init] from init init::@1
[77] (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init/(byte/signed byte/word/signed word/dword/signed dword) 32 ) [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
[77] (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
[78] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
[79] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] )
[80] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
[81] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] )
[82] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
[83] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
[74] (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init/(byte/signed byte/word/signed word/dword/signed dword) 32 ) [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
[74] (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
[75] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
[76] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] )
[77] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
[78] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] )
[79] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
[80] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
to:init::@3
init::@3: scope:[init] from init::@1
[84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] )
[81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] )
to:init::@2
init::@2: scope:[init] from init::@2 init::@3
[85] (byte) init::ss#2 ← phi( init::@2/(byte) init::ss#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
[86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
[87] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
[88] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
[82] (byte) init::ss#2 ← phi( init::@2/(byte) init::ss#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
[83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
[84] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
[85] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
to:init::@return
init::@return: scope:[init] from init::@2
[89] return [ ] ( main:4::init:7 [ ] )
[86] return [ ] ( main:4::init:7 [ ] )
to:@return
plexInit: scope:[plexInit] from init
[90] phi() [ ] ( main:4::init:7::plexInit:76 [ ] )
[87] phi() [ ] ( main:4::init:7::plexInit:73 [ ] )
to:plexInit::plexSetScreen1
plexInit::plexSetScreen1: scope:[plexInit] from plexInit
[91] phi() [ ] ( main:4::init:7::plexInit:76 [ ] )
[88] phi() [ ] ( main:4::init:7::plexInit:73 [ ] )
to:plexInit::@1
plexInit::@1: scope:[plexInit] from plexInit::@1 plexInit::plexSetScreen1
[92] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ plexInit::i#2 ] ( main:4::init:7::plexInit:76 [ plexInit::i#2 ] )
[93] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 [ plexInit::i#2 ] ( main:4::init:7::plexInit:76 [ plexInit::i#2 ] )
[94] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] )
[95] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] )
[89] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ plexInit::i#2 ] ( main:4::init:7::plexInit:73 [ plexInit::i#2 ] )
[90] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 [ plexInit::i#2 ] ( main:4::init:7::plexInit:73 [ plexInit::i#2 ] )
[91] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] )
[92] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] )
to:plexInit::@return
plexInit::@return: scope:[plexInit] from plexInit::@1
[96] return [ ] ( main:4::init:7::plexInit:76 [ ] )
[93] return [ ] ( main:4::init:7::plexInit:73 [ ] )
to:@return

View File

@ -1,5 +1,5 @@
(label) @28
(label) @31
(label) @11
(label) @8
(label) @begin
(label) @end
(byte) BLACK
@ -60,33 +60,31 @@
(word) init::xp#1 xp zp ZP_WORD:7 7.333333333333333
(word) init::xp#2 xp zp ZP_WORD:7 8.25
(void()) loop()
(byte~) loop::$4 reg byte a 202.0
(label) loop::@1
(label) loop::@10
(label) loop::@11
(label) loop::@12
(label) loop::@18
(label) loop::@23
(label) loop::@25
(label) loop::@26
(label) loop::@14
(label) loop::@20
(label) loop::@27
(label) loop::@28
(label) loop::@29
(label) loop::@30
(label) loop::@31
(label) loop::@4
(label) loop::@6
(label) loop::@7
(label) loop::@8
(label) loop::@9
(label) loop::plexShowNextYpos1
(byte) loop::plexShowNextYpos1_return
(byte) loop::plexShowNextYpos1_return#0 reg byte a 202.0
(byte) loop::rasterY
(byte) loop::rasterY#0 rasterY zp ZP_BYTE:9 551.0
(byte) loop::sin_idx
(byte) loop::sin_idx#1 sin_idx zp ZP_BYTE:2 1.2222222222222223
(byte) loop::sin_idx#1 sin_idx zp ZP_BYTE:2 1.375
(byte) loop::sin_idx#6 sin_idx zp ZP_BYTE:2 3.666666666666667
(byte) loop::ss
(byte) loop::ss#1 ss zp ZP_BYTE:3 151.5
(byte) loop::ss#10 ss zp ZP_BYTE:3 28.857142857142858
(byte) loop::ss#3 ss zp ZP_BYTE:3 151.5
(byte) loop::ss#4 ss zp ZP_BYTE:3 101.0
(byte) loop::ss#1 ss zp ZP_BYTE:6 151.5
(byte) loop::ss#6 ss zp ZP_BYTE:6 28.857142857142858
(byte) loop::sy
(byte) loop::sy#1 reg byte y 151.5
(byte) loop::sy#2 reg byte y 101.0
@ -142,31 +140,29 @@
(byte) plexSort::s#3 reg byte x 2052.5
(byte~) plexSort::s#6 reg byte x 202.0
(byte) plex_show_idx
(byte) plex_show_idx#13 plex_show_idx zp ZP_BYTE:5 14.999999999999998
(byte) plex_show_idx#15 plex_show_idx zp ZP_BYTE:5 16.944444444444443
(byte) plex_show_idx#25 plex_show_idx zp ZP_BYTE:5 202.0
(byte) plex_show_idx#14 plex_show_idx zp ZP_BYTE:3 11.444444444444443
(byte) plex_show_idx#18 plex_show_idx zp ZP_BYTE:3 11.052631578947366
(byte) plex_sprite_idx
(byte) plex_sprite_idx#13 plex_sprite_idx zp ZP_BYTE:4 17.333333333333336
(byte) plex_sprite_idx#15 plex_sprite_idx zp ZP_BYTE:4 10.736842105263158
(byte) plex_sprite_idx#24 plex_sprite_idx zp ZP_BYTE:4 202.0
(byte) plex_sprite_idx#14 plex_sprite_idx zp ZP_BYTE:4 10.299999999999999
(byte) plex_sprite_idx#38 plex_sprite_idx zp ZP_BYTE:4 6.2941176470588225
(byte) plex_sprite_msb
(byte) plex_sprite_msb#14 plex_sprite_msb zp ZP_BYTE:6 13.866666666666665
(byte) plex_sprite_msb#17 plex_sprite_msb zp ZP_BYTE:6 14.571428571428571
(byte) plex_sprite_msb#26 plex_sprite_msb zp ZP_BYTE:6 2.0
(byte) plex_sprite_msb#29 plex_sprite_msb zp ZP_BYTE:6 202.0
(byte) plex_sprite_msb#16 plex_sprite_msb zp ZP_BYTE:5 20.599999999999998
(byte) plex_sprite_msb#24 plex_sprite_msb zp ZP_BYTE:5 2.0
(byte) plex_sprite_msb#38 plex_sprite_msb zp ZP_BYTE:5 5.349999999999999
zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
reg byte x [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
reg byte y [ loop::sy#2 loop::sy#1 ]
zp ZP_BYTE:3 [ loop::ss#4 loop::ss#1 loop::ss#10 loop::ss#3 plexSort::m#2 plexSort::m#1 ]
zp ZP_BYTE:4 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 plexSort::nxt_idx#0 ]
zp ZP_BYTE:5 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 plexSort::nxt_y#0 ]
zp ZP_BYTE:6 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ]
zp ZP_BYTE:3 [ plex_show_idx#18 plex_show_idx#14 plexSort::m#2 plexSort::m#1 ]
zp ZP_BYTE:4 [ plex_sprite_idx#38 plex_sprite_idx#14 plexSort::nxt_idx#0 ]
zp ZP_BYTE:5 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 plexSort::nxt_y#0 ]
zp ZP_BYTE:6 [ loop::ss#6 loop::ss#1 ]
reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
reg byte x [ init::sx#2 init::sx#1 ]
zp ZP_WORD:7 [ init::xp#2 init::xp#1 ]
reg byte x [ init::ss#2 init::ss#1 ]
reg byte x [ plexInit::i#2 plexInit::i#1 ]
reg byte a [ loop::$4 ]
reg byte a [ loop::plexShowNextYpos1_return#0 ]
zp ZP_BYTE:9 [ loop::rasterY#0 ]
reg byte y [ plexShowSprite::plex_sprite_idx2#0 ]