mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-08 14:37:40 +00:00
Improved the multiplexer - now 32 sprites.
This commit is contained in:
parent
962fefe582
commit
ca55ac68cb
@ -109,6 +109,8 @@ public class Pass1ProcedureInline extends Pass1Base {
|
||||
// Set default successor to the original block to the inlined procedure block
|
||||
Label inlinedProcLabel = callScope.getLabel(procedure.getLocalName() + serial);
|
||||
block.setDefaultSuccessor(inlinedProcLabel.getRef());
|
||||
// Set conditional successor of original block to null (as any condition has been moved to the rest block)
|
||||
block.setConditionalSuccessor(null);
|
||||
// Log the inlining
|
||||
getLog().append("Inlined call " + call.toString(getProgram(), false));
|
||||
// Exit and restart
|
||||
|
@ -5,18 +5,17 @@
|
||||
// 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.
|
||||
// - plexFreeNextYpos() Returns the Y-position where the next sprite is available to be shown (ie. the next pos where the next sprite is no longer in use showing something else).
|
||||
// - plexShowNextYpos() Returns the Y-position of the next sprite to show.
|
||||
//
|
||||
// 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.
|
||||
// In practice a good method is to wait until the raster is beyond plexFreeNextYpos() and then call plexShowSprite(). Repeat until all 24 sprites have been shown.
|
||||
// TODO: Let the caller specify the number of sprites (PLEX_COUNT)
|
||||
|
||||
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.
|
||||
|
||||
// The number of sprites in the multiplexer
|
||||
const byte PLEX_COUNT = 24;
|
||||
const byte PLEX_COUNT = 32;
|
||||
|
||||
// The x-positions of the multiplexer sprites ($000-$1ff)
|
||||
word[PLEX_COUNT] PLEX_XPOS;
|
||||
@ -84,13 +83,16 @@ void plexSort() {
|
||||
plex_show_idx = 0;
|
||||
plex_sprite_idx = 0;
|
||||
plex_sprite_msb = 1;
|
||||
plexFreePrepare();
|
||||
}
|
||||
|
||||
// Show the next sprite.
|
||||
// plexSort() prepares showing the sprites
|
||||
void plexShowSprite() {
|
||||
byte plex_sprite_idx2 = plex_sprite_idx<<1;
|
||||
SPRITES_YPOS[plex_sprite_idx2] = PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]];
|
||||
byte ypos = PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]];
|
||||
SPRITES_YPOS[plex_sprite_idx2] = ypos;
|
||||
plexFreeAdd(ypos);
|
||||
PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]];
|
||||
byte xpos_idx = PLEX_SORTED_IDX[plex_show_idx]<<1;
|
||||
SPRITES_XPOS[plex_sprite_idx2] = <PLEX_XPOS[xpos_idx];
|
||||
@ -110,4 +112,29 @@ void plexShowSprite() {
|
||||
// Get the y-position of the next sprite to show
|
||||
inline byte plexShowNextYpos() {
|
||||
return PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]];
|
||||
}
|
||||
|
||||
// Contains the Y-position where each sprite is free again. PLEX_FREE_YPOS[s] holds the Y-position where sprite s is free to use again.
|
||||
byte[8] PLEX_FREE_YPOS;
|
||||
|
||||
// The index of the sprite that is free next. Since sprites are used round-robin this moves forward each time a sprite is shown.
|
||||
byte plex_free_next = 0;
|
||||
|
||||
// Prepare for a new frame. Initialize free to zero for all sprites.
|
||||
inline void plexFreePrepare() {
|
||||
for( byte s: 0..7) {
|
||||
PLEX_FREE_YPOS[s] = 0;
|
||||
}
|
||||
plex_free_next = 0;
|
||||
}
|
||||
|
||||
// Get the Y-position where the next sprite to be shown is free to use.
|
||||
inline byte plexFreeNextYpos() {
|
||||
return PLEX_FREE_YPOS[plex_free_next];
|
||||
}
|
||||
|
||||
// Update the data structure to reflect that a sprite has been shown. This sprite will be free again after 21 lines.
|
||||
inline void plexFreeAdd(byte ypos) {
|
||||
PLEX_FREE_YPOS[plex_free_next] = ypos+21;
|
||||
plex_free_next = (plex_free_next+1)&7;
|
||||
}
|
@ -38,7 +38,7 @@ void init() {
|
||||
for(byte sx: 0..PLEX_COUNT-1) {
|
||||
PLEX_PTR[sx] = (byte)(SPRITE/$40);
|
||||
PLEX_XPOS[sx<<1] = xp;
|
||||
xp += 12;
|
||||
xp += 9;
|
||||
}
|
||||
// Enable & initialize sprites
|
||||
*SPRITES_ENABLE = $ff;
|
||||
@ -58,18 +58,18 @@ void loop() {
|
||||
byte y_idx = sin_idx;
|
||||
for(byte sy: 0..PLEX_COUNT-1) {
|
||||
PLEX_YPOS[sy] = YSIN[y_idx];
|
||||
y_idx += 10;
|
||||
y_idx += 8;
|
||||
}
|
||||
sin_idx +=1;
|
||||
// Sort the sprites by y-position
|
||||
(*BORDERCOL)++;
|
||||
plexSort();
|
||||
*BORDERCOL = BLACK;
|
||||
while((*D011&$80)!=0) {}
|
||||
while((*D011&VIC_RST8)!=0) {}
|
||||
// Show the sprites
|
||||
for( byte ss: 0..PLEX_COUNT-1) {
|
||||
*BORDERCOL = BLACK;
|
||||
byte rasterY = plexShowNextYpos()-8;
|
||||
byte rasterY = plexFreeNextYpos();
|
||||
while(*RASTER<rasterY) {}
|
||||
(*BORDERCOL)++;
|
||||
plexShowSprite();
|
||||
|
@ -9,17 +9,18 @@
|
||||
.label BORDERCOL = $d020
|
||||
.label SPRITES_COLS = $d027
|
||||
.label D011 = $d011
|
||||
.const VIC_RST8 = $80
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.const BLACK = 0
|
||||
.const GREEN = 5
|
||||
.const PLEX_COUNT = $18
|
||||
.const PLEX_COUNT = $20
|
||||
.label SPRITE = $2000
|
||||
.label SCREEN = $400
|
||||
.label YSIN = $2100
|
||||
.label PLEX_SCREEN_PTR = SCREEN+$3f8
|
||||
.label plex_sprite_idx = 4
|
||||
.label plex_show_idx = 3
|
||||
.label plex_free_next = 3
|
||||
.label plex_show_idx = 4
|
||||
.label plex_sprite_msb = 5
|
||||
jsr main
|
||||
main: {
|
||||
@ -30,7 +31,7 @@ main: {
|
||||
}
|
||||
loop: {
|
||||
.label sin_idx = 2
|
||||
.label rasterY = 9
|
||||
.label plexFreeNextYpos1_return = 9
|
||||
.label ss = 6
|
||||
lda #0
|
||||
sta sin_idx
|
||||
@ -46,7 +47,7 @@ loop: {
|
||||
sta PLEX_YPOS,y
|
||||
txa
|
||||
clc
|
||||
adc #$a
|
||||
adc #8
|
||||
tax
|
||||
iny
|
||||
cpy #PLEX_COUNT-1+1
|
||||
@ -58,7 +59,7 @@ loop: {
|
||||
sta BORDERCOL
|
||||
b8:
|
||||
lda D011
|
||||
and #$80
|
||||
and #VIC_RST8
|
||||
cmp #0
|
||||
bne b8
|
||||
lda #0
|
||||
@ -66,21 +67,18 @@ loop: {
|
||||
lda #1
|
||||
sta plex_sprite_msb
|
||||
lda #0
|
||||
sta plex_sprite_idx
|
||||
sta plex_show_idx
|
||||
tax
|
||||
sta plex_free_next
|
||||
b11:
|
||||
lda #BLACK
|
||||
sta BORDERCOL
|
||||
ldy plex_show_idx
|
||||
lda PLEX_SORTED_IDX,y
|
||||
tay
|
||||
lda PLEX_YPOS,y
|
||||
sec
|
||||
sbc #8
|
||||
sta rasterY
|
||||
ldy plex_free_next
|
||||
lda PLEX_FREE_YPOS,y
|
||||
sta plexFreeNextYpos1_return
|
||||
b12:
|
||||
lda RASTER
|
||||
cmp rasterY
|
||||
cmp plexFreeNextYpos1_return
|
||||
bcc b12
|
||||
inc BORDERCOL
|
||||
jsr plexShowSprite
|
||||
@ -93,27 +91,41 @@ loop: {
|
||||
jmp b4
|
||||
}
|
||||
plexShowSprite: {
|
||||
lda plex_sprite_idx
|
||||
.label plex_sprite_idx2 = 9
|
||||
.label xpos_idx = $a
|
||||
txa
|
||||
asl
|
||||
sta plex_sprite_idx2
|
||||
ldy plex_show_idx
|
||||
lda PLEX_SORTED_IDX,y
|
||||
tay
|
||||
ldx plex_show_idx
|
||||
lda PLEX_SORTED_IDX,x
|
||||
tax
|
||||
lda PLEX_YPOS,x
|
||||
lda PLEX_YPOS,y
|
||||
ldy plex_sprite_idx2
|
||||
sta SPRITES_YPOS,y
|
||||
ldx plex_show_idx
|
||||
lda PLEX_SORTED_IDX,x
|
||||
tax
|
||||
lda PLEX_PTR,x
|
||||
ldx plex_sprite_idx
|
||||
clc
|
||||
adc #$15
|
||||
ldy plex_free_next
|
||||
sta PLEX_FREE_YPOS,y
|
||||
tya
|
||||
clc
|
||||
adc #1
|
||||
and #7
|
||||
sta plex_free_next
|
||||
ldy plex_show_idx
|
||||
lda PLEX_SORTED_IDX,y
|
||||
tay
|
||||
lda PLEX_PTR,y
|
||||
sta PLEX_SCREEN_PTR,x
|
||||
ldx plex_show_idx
|
||||
lda PLEX_SORTED_IDX,x
|
||||
ldy plex_show_idx
|
||||
lda PLEX_SORTED_IDX,y
|
||||
asl
|
||||
tax
|
||||
lda PLEX_XPOS,x
|
||||
sta xpos_idx
|
||||
tay
|
||||
lda PLEX_XPOS,y
|
||||
ldy plex_sprite_idx2
|
||||
sta SPRITES_XPOS,y
|
||||
lda PLEX_XPOS+1,x
|
||||
ldy xpos_idx
|
||||
lda PLEX_XPOS+1,y
|
||||
cmp #0
|
||||
bne b1
|
||||
lda plex_sprite_msb
|
||||
@ -121,11 +133,10 @@ plexShowSprite: {
|
||||
and SPRITES_XMSB
|
||||
sta SPRITES_XMSB
|
||||
b2:
|
||||
lda plex_sprite_idx
|
||||
clc
|
||||
adc #1
|
||||
inx
|
||||
txa
|
||||
and #7
|
||||
sta plex_sprite_idx
|
||||
tax
|
||||
inc plex_show_idx
|
||||
asl plex_sprite_msb
|
||||
lda plex_sprite_msb
|
||||
@ -162,7 +173,7 @@ plexSort: {
|
||||
sta PLEX_SORTED_IDX+1,x
|
||||
dex
|
||||
cpx #$ff
|
||||
bne b7
|
||||
bne b8
|
||||
b5:
|
||||
inx
|
||||
lda nxt_idx
|
||||
@ -172,8 +183,15 @@ plexSort: {
|
||||
lda m
|
||||
cmp #PLEX_COUNT-2+1
|
||||
bne b1
|
||||
ldx #0
|
||||
plexFreePrepare1_b1:
|
||||
lda #0
|
||||
sta PLEX_FREE_YPOS,x
|
||||
inx
|
||||
cpx #8
|
||||
bne plexFreePrepare1_b1
|
||||
rts
|
||||
b7:
|
||||
b8:
|
||||
lda nxt_y
|
||||
ldy PLEX_SORTED_IDX,x
|
||||
cmp PLEX_YPOS,y
|
||||
@ -202,10 +220,10 @@ init: {
|
||||
sta PLEX_XPOS+1,y
|
||||
clc
|
||||
lda xp
|
||||
adc #<$c
|
||||
adc #<9
|
||||
sta xp
|
||||
lda xp+1
|
||||
adc #>$c
|
||||
adc #>9
|
||||
sta xp+1
|
||||
inx
|
||||
cpx #PLEX_COUNT-1+1
|
||||
@ -231,6 +249,7 @@ plexInit: {
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
PLEX_FREE_YPOS: .fill 8, 0
|
||||
PLEX_XPOS: .fill 2*PLEX_COUNT, 0
|
||||
PLEX_YPOS: .fill PLEX_COUNT, 0
|
||||
PLEX_PTR: .fill PLEX_COUNT, 0
|
||||
|
@ -1,7 +1,7 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@8
|
||||
@8: scope:[] from @begin
|
||||
to:@11
|
||||
@11: scope:[] from @begin
|
||||
kickasm(location (const byte*) YSIN#0) {{ .var min = 50
|
||||
.var max = 250-21
|
||||
.var ampl = max-min;
|
||||
@ -13,14 +13,14 @@
|
||||
.for (var x=0;x<3; x++)
|
||||
.byte pic.getSinglecolorByte(x,y)
|
||||
}}
|
||||
to:@11
|
||||
@11: scope:[] from @8
|
||||
to:@14
|
||||
@14: scope:[] from @11
|
||||
[3] phi() [ ] ( )
|
||||
[4] call main [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @11
|
||||
@end: scope:[] from @14
|
||||
[5] phi() [ ] ( )
|
||||
main: scope:[main] from @11
|
||||
main: scope:[main] from @14
|
||||
asm { sei }
|
||||
[7] call init [ ] ( main:4 [ ] )
|
||||
to:main::@1
|
||||
@ -48,7 +48,7 @@ loop::@7: scope:[loop] from loop::@6 loop::@7
|
||||
[16] (byte) loop::sy#2 ← phi( loop::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@7/(byte) loop::sy#1 ) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] )
|
||||
[16] (byte) loop::y_idx#2 ← phi( loop::@6/(byte~) loop::y_idx#3 loop::@7/(byte) loop::y_idx#1 ) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] )
|
||||
[17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] )
|
||||
[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 ] )
|
||||
[18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ 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::@20
|
||||
@ -61,137 +61,153 @@ 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::@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 ] )
|
||||
[25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_RST8#0 [ 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::@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 ] )
|
||||
[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_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] )
|
||||
[27] (byte) plex_sprite_msb#44 ← 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_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] )
|
||||
[27] (byte) plex_show_idx#44 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@31/(byte) plex_show_idx#15 ) [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] )
|
||||
[27] (byte) plex_sprite_idx#44 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@31/(byte) plex_sprite_idx#15 ) [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] )
|
||||
[27] (byte) plex_free_next#17 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@31/(byte) plex_free_next#13 ) [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] )
|
||||
[28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] )
|
||||
to:loop::plexFreeNextYpos1
|
||||
loop::plexFreeNextYpos1: scope:[loop] from loop::@11
|
||||
[29] (byte) loop::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 loop::plexFreeNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 loop::plexFreeNextYpos1_return#0 ] )
|
||||
to:loop::@12
|
||||
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 ] )
|
||||
loop::@12: scope:[loop] from loop::@12 loop::plexFreeNextYpos1
|
||||
[30] if(*((const byte*) RASTER#0)<(byte) loop::plexFreeNextYpos1_return#0) goto loop::@12 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 loop::plexFreeNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 loop::plexFreeNextYpos1_return#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 ] )
|
||||
[31] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] )
|
||||
[32] call plexShowSprite [ loop::sin_idx#1 loop::ss#6 plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#16 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#6 plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 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 ] )
|
||||
[33] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 [ loop::sin_idx#1 plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#16 loop::ss#1 ] )
|
||||
[34] 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_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 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 ] )
|
||||
[35] *((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::@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 ] )
|
||||
[36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] )
|
||||
[37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] )
|
||||
[38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] )
|
||||
to:plexShowSprite::plexFreeAdd1
|
||||
plexShowSprite::plexFreeAdd1: scope:[plexShowSprite] from plexShowSprite
|
||||
[39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] )
|
||||
[40] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] )
|
||||
[41] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 ← (byte) plex_free_next#17 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$1#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$1#0 ] )
|
||||
[42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] )
|
||||
to:plexShowSprite::@7
|
||||
plexShowSprite::@7: scope:[plexShowSprite] from plexShowSprite::plexFreeAdd1
|
||||
[43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] )
|
||||
[44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] )
|
||||
[45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] )
|
||||
[46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::xpos_idx#0 ] )
|
||||
[47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$4 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$4 ] )
|
||||
[48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] )
|
||||
to:plexShowSprite::@4
|
||||
plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite
|
||||
[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 ] )
|
||||
plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite::@7
|
||||
[49] (byte/word/dword~) plexShowSprite::$6 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$6 ] )
|
||||
[50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$6 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] )
|
||||
to:plexShowSprite::@2
|
||||
plexShowSprite::@2: scope:[plexShowSprite] from plexShowSprite::@1 plexShowSprite::@4
|
||||
[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 ] )
|
||||
[51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$7 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$7 ] )
|
||||
[52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plex_sprite_idx#15 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plex_sprite_idx#15 ] )
|
||||
[53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 [ plex_sprite_msb#44 plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_msb#44 plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 ] )
|
||||
[54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#25 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#25 ] )
|
||||
[55] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@8 [ plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#25 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#25 ] )
|
||||
to:plexShowSprite::@return
|
||||
plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@2 plexShowSprite::@7
|
||||
[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 ] )
|
||||
plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@2 plexShowSprite::@8
|
||||
[56] (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@8/(byte) plex_sprite_msb#25 plexShowSprite::@2/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#16 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#16 ] )
|
||||
[57] return [ plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#16 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#16 ] )
|
||||
to:@return
|
||||
plexShowSprite::@7: scope:[plexShowSprite] from plexShowSprite::@2
|
||||
[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 ] )
|
||||
plexShowSprite::@8: scope:[plexShowSprite] from plexShowSprite::@2
|
||||
[58] phi() [ plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#25 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#13 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#25 ] )
|
||||
to:plexShowSprite::@return
|
||||
plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite
|
||||
[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 ] )
|
||||
plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite::@7
|
||||
[59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] )
|
||||
to:plexShowSprite::@2
|
||||
plexSort: scope:[plexSort] from loop::@20
|
||||
[56] phi() [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
|
||||
[60] phi() [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
|
||||
to:plexSort::@1
|
||||
plexSort::@1: scope:[plexSort] from plexSort plexSort::@2
|
||||
[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
|
||||
[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 ] )
|
||||
[61] (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 ] )
|
||||
[62] (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 ] )
|
||||
[63] (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 ] )
|
||||
[64] 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::@11
|
||||
plexSort::@11: scope:[plexSort] from plexSort::@1
|
||||
[65] (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
|
||||
[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 ] )
|
||||
plexSort::@3: scope:[plexSort] from plexSort::@11 plexSort::@8
|
||||
[66] (byte) plexSort::s#3 ← phi( plexSort::@8/(byte) plexSort::s#1 plexSort::@11/(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 ] )
|
||||
[67] *((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 ] )
|
||||
[68] (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 ] )
|
||||
[69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@8 [ 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
|
||||
[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 ] )
|
||||
plexSort::@5: scope:[plexSort] from plexSort::@3 plexSort::@8
|
||||
[70] (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 ] )
|
||||
[71] *((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
|
||||
[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 ] )
|
||||
[72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
|
||||
[73] 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::plexFreePrepare1
|
||||
plexSort::plexFreePrepare1: scope:[plexSort] from plexSort::@2
|
||||
[74] phi() [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
|
||||
to:plexSort::plexFreePrepare1_@1
|
||||
plexSort::plexFreePrepare1_@1: scope:[plexSort] from plexSort::plexFreePrepare1 plexSort::plexFreePrepare1_@1
|
||||
[75] (byte) plexSort::plexFreePrepare1_s#2 ← phi( plexSort::plexFreePrepare1/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::plexFreePrepare1_@1/(byte) plexSort::plexFreePrepare1_s#1 ) [ plexSort::plexFreePrepare1_s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] )
|
||||
[76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] )
|
||||
[77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 [ plexSort::plexFreePrepare1_s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#1 ] )
|
||||
[78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 [ plexSort::plexFreePrepare1_s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#1 ] )
|
||||
to:plexSort::@return
|
||||
plexSort::@return: scope:[plexSort] from plexSort::@2
|
||||
[70] return [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
|
||||
plexSort::@return: scope:[plexSort] from plexSort::plexFreePrepare1_@1
|
||||
[79] return [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
|
||||
to:@return
|
||||
plexSort::@7: scope:[plexSort] from plexSort::@3
|
||||
[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 ] )
|
||||
plexSort::@8: scope:[plexSort] from plexSort::@3
|
||||
[80] 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
|
||||
[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 [ ] )
|
||||
[81] *((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 [ ] )
|
||||
[82] call plexInit [ ] ( main:4::init:7 [ ] )
|
||||
to:init::@1
|
||||
init::@1: scope:[init] from init init::@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 ] )
|
||||
[83] (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 ] )
|
||||
[83] (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 ] )
|
||||
[84] *((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 ] )
|
||||
[85] (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 ] )
|
||||
[86] *((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 ] )
|
||||
[87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] )
|
||||
[88] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
|
||||
[89] 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
|
||||
[81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] )
|
||||
[90] *((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
|
||||
[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 ] )
|
||||
[91] (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 ] )
|
||||
[92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
|
||||
[93] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
|
||||
[94] 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
|
||||
[86] return [ ] ( main:4::init:7 [ ] )
|
||||
[95] return [ ] ( main:4::init:7 [ ] )
|
||||
to:@return
|
||||
plexInit: scope:[plexInit] from init
|
||||
[87] phi() [ ] ( main:4::init:7::plexInit:73 [ ] )
|
||||
[96] phi() [ ] ( main:4::init:7::plexInit:82 [ ] )
|
||||
to:plexInit::plexSetScreen1
|
||||
plexInit::plexSetScreen1: scope:[plexInit] from plexInit
|
||||
[88] phi() [ ] ( main:4::init:7::plexInit:73 [ ] )
|
||||
[97] phi() [ ] ( main:4::init:7::plexInit:82 [ ] )
|
||||
to:plexInit::@1
|
||||
plexInit::@1: scope:[plexInit] from plexInit::@1 plexInit::plexSetScreen1
|
||||
[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 ] )
|
||||
[98] (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:82 [ plexInit::i#2 ] )
|
||||
[99] *((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:82 [ plexInit::i#2 ] )
|
||||
[100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:82 [ plexInit::i#1 ] )
|
||||
[101] 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:82 [ plexInit::i#1 ] )
|
||||
to:plexInit::@return
|
||||
plexInit::@return: scope:[plexInit] from plexInit::@1
|
||||
[93] return [ ] ( main:4::init:7::plexInit:73 [ ] )
|
||||
[102] return [ ] ( main:4::init:7::plexInit:82 [ ] )
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
(label) @11
|
||||
(label) @8
|
||||
(label) @14
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) BLACK
|
||||
@ -11,7 +11,9 @@
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) PLEX_COUNT
|
||||
(const byte) PLEX_COUNT#0 PLEX_COUNT = (byte/signed byte/word/signed word/dword/signed dword) 24
|
||||
(const byte) PLEX_COUNT#0 PLEX_COUNT = (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte[8]) PLEX_FREE_YPOS
|
||||
(const byte[8]) PLEX_FREE_YPOS#0 PLEX_FREE_YPOS = { fill( 8, 0) }
|
||||
(byte[PLEX_COUNT#0]) PLEX_PTR
|
||||
(const byte[PLEX_COUNT#0]) PLEX_PTR#0 PLEX_PTR = { fill( PLEX_COUNT#0, 0) }
|
||||
(byte*) PLEX_SCREEN_PTR
|
||||
@ -42,6 +44,8 @@
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(const byte) VIC_RST8#0 VIC_RST8 = (byte/word/signed word/dword/signed dword) 128
|
||||
(byte*) YSIN
|
||||
(const byte*) YSIN#0 YSIN = ((byte*))(word/signed word/dword/signed dword) 8448
|
||||
(void()) init()
|
||||
@ -67,24 +71,22 @@
|
||||
(label) loop::@14
|
||||
(label) loop::@20
|
||||
(label) loop::@27
|
||||
(label) loop::@29
|
||||
(label) loop::@30
|
||||
(label) loop::@31
|
||||
(label) loop::@4
|
||||
(label) loop::@6
|
||||
(label) loop::@7
|
||||
(label) loop::@8
|
||||
(label) loop::plexShowNextYpos1
|
||||
(byte) loop::plexShowNextYpos1_return
|
||||
(byte) loop::plexShowNextYpos1_return#0 reg byte a 202.0
|
||||
(label) loop::plexFreeNextYpos1
|
||||
(byte) loop::plexFreeNextYpos1_return
|
||||
(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp ZP_BYTE:9 551.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.375
|
||||
(byte) loop::sin_idx#1 sin_idx zp ZP_BYTE:2 1.4666666666666666
|
||||
(byte) loop::sin_idx#6 sin_idx zp ZP_BYTE:2 3.666666666666667
|
||||
(byte) loop::ss
|
||||
(byte) loop::ss#1 ss zp ZP_BYTE:6 151.5
|
||||
(byte) loop::ss#6 ss zp ZP_BYTE:6 28.857142857142858
|
||||
(byte) loop::ss#6 ss zp ZP_BYTE:6 33.666666666666664
|
||||
(byte) loop::sy
|
||||
(byte) loop::sy#1 reg byte y 151.5
|
||||
(byte) loop::sy#2 reg byte y 101.0
|
||||
@ -106,26 +108,36 @@
|
||||
(byte*) plexInit::plexSetScreen1_screen
|
||||
(byte*) plexInit::screen
|
||||
(void()) plexShowSprite()
|
||||
(byte~) plexShowSprite::$2 reg byte a 4.0
|
||||
(byte~) plexShowSprite::$3 reg byte a 4.0
|
||||
(byte/word/dword~) plexShowSprite::$5 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword~) plexShowSprite::$6 reg byte a 4.0
|
||||
(byte~) plexShowSprite::$4 reg byte a 4.0
|
||||
(byte/word/dword~) plexShowSprite::$6 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword~) plexShowSprite::$7 reg byte x 4.0
|
||||
(label) plexShowSprite::@1
|
||||
(label) plexShowSprite::@2
|
||||
(label) plexShowSprite::@4
|
||||
(label) plexShowSprite::@7
|
||||
(label) plexShowSprite::@8
|
||||
(label) plexShowSprite::@return
|
||||
(label) plexShowSprite::plexFreeAdd1
|
||||
(byte/signed word/word/dword/signed dword~) plexShowSprite::plexFreeAdd1_$0
|
||||
(byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword~) plexShowSprite::plexFreeAdd1_$1
|
||||
(byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 reg byte a 4.0
|
||||
(byte/word/dword~) plexShowSprite::plexFreeAdd1_$2
|
||||
(byte) plexShowSprite::plexFreeAdd1_ypos
|
||||
(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0
|
||||
(byte) plexShowSprite::plex_sprite_idx2
|
||||
(byte) plexShowSprite::plex_sprite_idx2#0 reg byte y 1.2000000000000002
|
||||
(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:9 0.6000000000000001
|
||||
(byte) plexShowSprite::xpos_idx
|
||||
(byte) plexShowSprite::xpos_idx#0 reg byte x 2.0
|
||||
(byte) plexShowSprite::xpos_idx#0 xpos_idx zp ZP_BYTE:10 2.0
|
||||
(byte) plexShowSprite::ypos
|
||||
(void()) plexSort()
|
||||
(label) plexSort::@1
|
||||
(label) plexSort::@10
|
||||
(label) plexSort::@11
|
||||
(label) plexSort::@2
|
||||
(label) plexSort::@3
|
||||
(label) plexSort::@5
|
||||
(label) plexSort::@7
|
||||
(label) plexSort::@8
|
||||
(label) plexSort::@return
|
||||
(byte) plexSort::m
|
||||
(byte) plexSort::m#1 m zp ZP_BYTE:3 151.5
|
||||
@ -134,42 +146,54 @@
|
||||
(byte) plexSort::nxt_idx#0 nxt_idx zp ZP_BYTE:4 30.299999999999997
|
||||
(byte) plexSort::nxt_y
|
||||
(byte) plexSort::nxt_y#0 nxt_y zp ZP_BYTE:5 150.375
|
||||
(label) plexSort::plexFreePrepare1
|
||||
(bool~) plexSort::plexFreePrepare1_$0
|
||||
(label) plexSort::plexFreePrepare1_@1
|
||||
(byte) plexSort::plexFreePrepare1_s
|
||||
(byte) plexSort::plexFreePrepare1_s#1 reg byte x 151.5
|
||||
(byte) plexSort::plexFreePrepare1_s#2 reg byte x 151.5
|
||||
(byte) plexSort::s
|
||||
(byte) plexSort::s#1 reg byte x 1368.3333333333335
|
||||
(byte) plexSort::s#2 reg byte x 202.0
|
||||
(byte) plexSort::s#3 reg byte x 2052.5
|
||||
(byte~) plexSort::s#6 reg byte x 202.0
|
||||
(byte) plex_free_next
|
||||
(byte) plex_free_next#13 plex_free_next zp ZP_BYTE:3 4.904761904761904
|
||||
(byte) plex_free_next#17 plex_free_next zp ZP_BYTE:3 20.599999999999998
|
||||
(byte) plex_show_idx
|
||||
(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_show_idx#15 plex_show_idx zp ZP_BYTE:4 11.444444444444443
|
||||
(byte) plex_show_idx#44 plex_show_idx zp ZP_BYTE:4 4.73913043478261
|
||||
(byte) plex_sprite_idx
|
||||
(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_idx#15 reg byte x 10.299999999999999
|
||||
(byte) plex_sprite_idx#44 reg byte x 5.095238095238094
|
||||
(byte) plex_sprite_msb
|
||||
(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
|
||||
(byte) plex_sprite_msb#25 plex_sprite_msb zp ZP_BYTE:5 2.0
|
||||
(byte) plex_sprite_msb#44 plex_sprite_msb zp ZP_BYTE:5 4.458333333333332
|
||||
|
||||
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 [ 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:3 [ plex_free_next#17 plex_free_next#13 plexSort::m#2 plexSort::m#1 ]
|
||||
reg byte x [ plex_sprite_idx#44 plex_sprite_idx#15 ]
|
||||
zp ZP_BYTE:4 [ plex_show_idx#44 plex_show_idx#15 plexSort::nxt_idx#0 ]
|
||||
zp ZP_BYTE:5 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 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 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ]
|
||||
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 ]
|
||||
reg byte x [ plexShowSprite::xpos_idx#0 ]
|
||||
reg byte a [ plexShowSprite::$2 ]
|
||||
zp ZP_BYTE:9 [ loop::plexFreeNextYpos1_return#0 plexShowSprite::plex_sprite_idx2#0 ]
|
||||
reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
||||
reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ]
|
||||
reg byte a [ plexShowSprite::plexFreeAdd1_$1#0 ]
|
||||
zp ZP_BYTE:10 [ plexShowSprite::xpos_idx#0 ]
|
||||
reg byte a [ plexShowSprite::$3 ]
|
||||
reg byte a [ plexShowSprite::$5 ]
|
||||
reg byte a [ plexShowSprite::$4 ]
|
||||
reg byte a [ plexShowSprite::$6 ]
|
||||
reg byte x [ plexShowSprite::$7 ]
|
||||
reg byte x [ plexSort::s#2 ]
|
||||
reg byte a [ init::$6 ]
|
||||
|
Loading…
x
Reference in New Issue
Block a user