From 962fefe58203d1ba6d8d1f4c693a92ad1e8c1e18 Mon Sep 17 00:00:00 2001 From: jespergravgaard <jesper@balmangravgaard.dk> Date: Fri, 3 Aug 2018 00:07:42 +0200 Subject: [PATCH] Improved the multiplexer --- .../dk/camelot64/kickc/test/kc/multiplexer.kc | 17 +- .../kickc/test/kc/simple-multiplexer.kc | 15 +- .../kickc/test/ref/simple-multiplexer.asm | 34 +- .../kickc/test/ref/simple-multiplexer.cfg | 211 +- .../kickc/test/ref/simple-multiplexer.log | 4844 ++++++----------- .../kickc/test/ref/simple-multiplexer.sym | 52 +- 6 files changed, 1683 insertions(+), 3490 deletions(-) diff --git a/src/test/java/dk/camelot64/kickc/test/kc/multiplexer.kc b/src/test/java/dk/camelot64/kickc/test/kc/multiplexer.kc index c2d74d223..c0d5b353e 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/multiplexer.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/multiplexer.kc @@ -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; diff --git a/src/test/java/dk/camelot64/kickc/test/kc/simple-multiplexer.kc b/src/test/java/dk/camelot64/kickc/test/kc/simple-multiplexer.kc index 8a52d4eb2..675330c7d 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/simple-multiplexer.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/simple-multiplexer.kc @@ -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) {} diff --git a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.asm b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.asm index da985c59b..03e92c7ea 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.asm @@ -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++) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.cfg b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.cfg index 8058782a4..d548c90fd 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.cfg @@ -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 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.log b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.log index 4ead4c52c..9ac7bebba 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.log @@ -9,14 +9,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++) @@ -42,7 +41,6 @@ void init() { PLEX_XPOS[sx<<1] = xp; xp += 12; } - // Enable & initialize sprites *SPRITES_ENABLE = $ff; for(byte ss: 0..7) { @@ -67,13 +65,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) {} @@ -199,14 +194,23 @@ inline void vicSelectGfxBank(byte* gfx) { Importing multiplexer PARSING src/test/java/dk/camelot64/kickc/test/kc/multiplexer.kc -// 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; @@ -304,389 +308,6 @@ inline byte plexShowNextYpos() { return PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]]; } Importing c64 -Importing sinus -PARSING src/test/java/dk/camelot64/kickc/test/kc/sinus.kc -// Sinus Generator functions using only multiplication, addition and bit shifting -// Uses a single division for converting the wavelength to a reciprocal. -// Generates sinus using the series sin(x) = x - x^/3! + x^-5! - x^7/7! ... -// Uses the approximation sin(x) = x - x^/6 + x^/128 -// Optimization possibility: Use symmetries when generating sinustables. wavelength%2==0 -> mirror symmetry over PI, wavelength%4==0 -> mirror symmetry over PI/2. - -import "division.kc" -import "multiply.kc" - -// PI*2 in u[4.28] format -const dword PI2_u4f28 = $6487ed51; -// PI in u[4.28] format -const dword PI_u4f28 = $3243f6a9; -// PI/2 in u[4.28] format -const dword PI_HALF_u4f28 = $1921FB54; - -// PI*2 in u[4.12] format -const word PI2_u4f12 = $6488; -// PI in u[4.12] format -const word PI_u4f12 = $3244; -// PI/2 in u[4.12] format -const word PI_HALF_u4f12 = $1922; - -// Generate signed (large) word sinus table - on the full -$7fff - $7fff range -// sintab - the table to generate into -// wavelength - the number of sinus points in a total sinus wavelength (the size of the table) -void sin16s_gen(signed word* sintab, word wavelength) { - // u[4.28] step = PI*2/wavelength - dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28] - // Iterate over the table - dword x = 0; // u[4.28] - for( word i=0; i<wavelength; i++) { - *sintab = sin16s(x); - sintab = sintab + 2; - x = x + step; - } -} - -// Generate signed word sinus table - with values in the range min-max. -// sintab - the table to generate into -// wavelength - the number of sinus points in a total sinus wavelength (the size of the table) -void sin16s_gen2(signed word* sintab, word wavelength, signed word min, signed word max) { - signed word ampl = max-min; - signed word offs = min + ampl>>1; // ampl is always positive so shifting left does not alter the sign - // u[4.28] step = PI*2/wavelength - dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28] - // Iterate over the table - dword x = 0; // u[4.28] - for( word i=0; i<wavelength; i++) { - *sintab = offs + (signed word)>mul16s(sin16s(x), ampl); // The signed sin() has values [-7fff;7fff] = [-1/2 ; 1/2], so ampl*sin has the right amplitude - sintab = sintab + 2; - x = x + step; - } -} - -// Generate signed byte sinus table - on the full -$7f - $7f range -// sintab - the table to generate into -// wavelength - the number of sinus points in a total sinus wavelength (the size of the table) -void sin8s_gen(signed byte* sintab, word wavelength) { - // u[4.28] step = PI*2/wavelength - word step = div16u(PI2_u4f12, wavelength); // u[4.12] - // Iterate over the table - word x = 0; // u[4.12] - for( word i=0; i<wavelength; i++) { - *sintab++ = sin8s(x); - x = x + step; - } -} - -// Calculate signed word sinus sin(x) -// x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 -// result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff -signed word sin16s(dword x) { - // Move x1 into the range 0-PI/2 using sinus mirror symmetries - byte isUpper = 0; - if(x >= PI_u4f28 ) { - x = x - PI_u4f28; - isUpper = 1; - } - if(x >= PI_HALF_u4f28 ) { - x = PI_u4f28 - x; - } - // sinx = x - x^3/6 + x5/128; - word x1 = >x<<3; // u[1.15] - word x2 = mulu16_sel(x1, x1, 0); // u[2.14] x^2 - word x3 = mulu16_sel(x2, x1, 1); // u[2.14] x^3 - word x3_6 = mulu16_sel(x3, $10000/6, 1); // u[1.15] x^3/6; - word usinx = x1 - x3_6; // u[1.15] x - x^3/6 - word x4 = mulu16_sel(x3, x1, 0); // u[3.13] x^4 - word x5 = mulu16_sel(x4, x1, 0); // u[4.12] x^5 - word x5_128 = x5>>4; // // u[1.15] x^5/128 -- much more efficient than mul_u16_sel(x5, $10000/128, 3); - usinx = usinx + x5_128; // u[1.15] (first bit is always zero) - signed word sinx = (signed word)usinx; // s[0.15] - if(isUpper!=0) { - sinx = -(signed word)usinx; // s[0.15]; - } - return sinx; -} - -// Calculate signed byte sinus sin(x) -// x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 -// result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f -signed byte sin8s(word x) { - // Move x1 into the range 0-PI/2 using sinus mirror symmetries - byte isUpper = 0; - if(x >= PI_u4f12 ) { - x = x - PI_u4f12; - isUpper = 1; - } - if(x >= PI_HALF_u4f12 ) { - x = PI_u4f12 - x; - } - // sinx = x - x^3/6 + x5/128; - byte x1 = >x<<3; // u[1.7] - byte x2 = mulu8_sel(x1, x1, 0); // u[2.6] x^2 - byte x3 = mulu8_sel(x2, x1, 1); // u[2.6] x^3 - const byte DIV_6 = $2b; // u[0.7] - $2a.aa rounded to $2b - byte x3_6 = mulu8_sel(x3, DIV_6, 1); // u[1.7] x^3/6; - byte usinx = x1 - x3_6; // u[1.7] x - x^3/6 - byte x4 = mulu8_sel(x3, x1, 0); // u[3.5] x^4 - byte x5 = mulu8_sel(x4, x1, 0); // u[4.4] x^5 - byte x5_128 = x5>>4; // // u[1.7] x^5/128 -- much more efficient than mul_u16_sel(x5, $10000/128, 3); - usinx = usinx + x5_128; // u[1.7] (first bit is always zero) - if(usinx>=128) { usinx--; } // rounding may occasionally result in $80 - lower into range ($00-$7f) - signed byte sinx = (signed byte)usinx; // s[0.7] - if(isUpper!=0) { - sinx = -(signed byte)usinx; // s[0.7]; - } - return sinx; -} - -// Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. -// The select parameter indicates how many of the highest bits of the 32-bit result to skip -word mulu16_sel(word v1, word v2, byte select) { - return >mul16u(v1, v2)<<select; -} - -// Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. -// The select parameter indicates how many of the highest bits of the 16-bit result to skip -byte mulu8_sel(byte v1, byte v2, byte select) { - return >mul8u(v1, v2)<<select; -} - -Importing division.kc -PARSING src/test/java/dk/camelot64/kickc/test/kc/division.kc -// Simple binary division implementation -// Follows the C99 standard by truncating toward zero on negative results. -// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 - -// Remainder after signed 8 bit division -byte rem8u =0; - -// Performs division on two 8 bit unsigned bytes -// Returns dividend/divisor. -// The remainder will be set into the global variable rem8u -// Implemented using simple binary division -byte div8u(byte dividend, byte divisor) { - return divr8u(dividend, divisor, 0); -} - -// Performs division on two 8 bit unsigned bytes and an initial remainder -// Returns dividend/divisor. -// The final remainder will be set into the global variable rem8u -// Implemented using simple binary division -byte divr8u(byte dividend, byte divisor, byte rem) { - byte quotient = 0; - for( byte i : 0..7) { - rem = rem << 1; - if( (dividend & $80) != 0 ) { - rem = rem | 1; - } - dividend = dividend << 1; - quotient = quotient << 1; - if(rem>=divisor) { - quotient++; - rem = rem - divisor; - } - } - rem8u = rem; - return quotient; -} - -// Remainder after unsigned 16-bit division -word rem16u = 0; - -// Performs division on two 16 bit unsigned words and an initial remainder -// Returns the quotient dividend/divisor. -// The final remainder will be set into the global variable rem16u -// Implemented using simple binary division -word divr16u(word dividend, word divisor, word rem) { - word quotient = 0; - for( byte i : 0..15) { - rem = rem << 1; - if( (>dividend & $80) != 0 ) { - rem = rem | 1; - } - dividend = dividend << 1; - quotient = quotient << 1; - if(rem>=divisor) { - quotient++; - rem = rem - divisor; - } - } - rem16u = rem; - return quotient; -} - -// Performs division on two 16 bit unsigned words -// Returns the quotient dividend/divisor. -// The remainder will be set into the global variable rem16u -// Implemented using simple binary division -word div16u(word dividend, word divisor) { - return divr16u(dividend, divisor, 0); -} - -// Divide unsigned 32-bit dword dividend with a 16-bit word divisor -// The 16-bit word remainder can be found in rem16u after the division -dword div32u16u(dword dividend, word divisor) { - word quotient_hi = divr16u(>dividend, divisor, 0); - word quotient_lo = divr16u(<dividend, divisor, rem16u); - dword quotient = { quotient_hi, quotient_lo}; - return quotient; -} - -// Remainder after signed 8 bit division -signed byte rem8s = 0; - -// Perform division on two signed 8-bit numbers -// Returns dividend/divisor. -// The remainder will be set into the global variable rem8s. -// Implemented using simple binary division -// Follows the C99 standard by truncating toward zero on negative results. -// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 -signed byte div8s(signed byte dividend, signed byte divisor) { - byte neg = 0; - byte dividendu = 0; - if(dividend<0) { - dividendu = (byte)-dividend; - neg = 1; - } else { - dividendu = (byte)dividend; - } - byte divisoru = 0; - if(divisor<0) { - divisoru = (byte)-divisor; - neg = neg ^ 1; - } else { - divisoru = (byte)divisor; - } - byte resultu = div8u(dividendu, divisoru); - if(neg==0) { - rem8s = (signed byte)rem8u; - return (signed byte)resultu; - } else { - rem8s = -(signed byte)rem8u; - return -(signed byte)resultu; - } -} - -// Remainder after signed 16 bit division -signed word rem16s = 0; - -// Perform division on two signed 16-bit numbers with an initial remainder. -// Returns dividend/divisor. The remainder will be set into the global variable rem16s. -// Implemented using simple binary division -// Follows the C99 standard by truncating toward zero on negative results. -// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 -signed word divr16s(signed word dividend, signed word divisor, signed word rem) { - byte neg = 0; - word dividendu = 0; - word remu = 0; - if(dividend<0 || rem<0) { - dividendu = (word)-dividend; - remu = (word)-rem; - neg = 1; - } else { - dividendu = (word)dividend; - remu = (word)rem; - } - word divisoru = 0; - if(divisor<0) { - divisoru = (word)-divisor; - neg = neg ^ 1; - } else { - divisoru = (word)divisor; - } - word resultu = divr16u(dividendu, divisoru, remu); - if(neg==0) { - rem16s = (signed word)rem16u; - return (signed word)resultu; - } else { - rem16s = -(signed word)rem16u; - return -(signed word)resultu; - } -} - -// Perform division on two signed 16-bit numbers -// Returns dividend/divisor. -// The remainder will be set into the global variable rem16s. -// Implemented using simple binary division -// Follows the C99 standard by truncating toward zero on negative results. -// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 -signed word div16s(signed word dividend, signed word divisor) { - return divr16s(dividend, divisor, 0); -} - -Adding pre/post-modifier (byte) divr8u::quotient ← ++ (byte) divr8u::quotient -Adding pre/post-modifier (word) divr16u::quotient ← ++ (word) divr16u::quotient -Importing multiply.kc -PARSING src/test/java/dk/camelot64/kickc/test/kc/multiply.kc -// Simple binary multiplication implementation - -// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word -word mul8u(byte a, byte b) { - word res = 0; - word mb = b; - while(a!=0) { - if( (a&1) != 0) { - res = res + mb; - } - a = a>>1; - mb = mb<<1; - } - return res; -} - -// Multiply of two signed bytes to a signed word -// Fixes offsets introduced by using unsigned multiplication -signed word mul8s(signed byte a, signed byte b) { - word m = mul8u((byte)a, (byte) b); - if(a<0) { - >m = (>m)-(byte)b; - } - if(b<0) { - >m = (>m)-(byte)a; - } - return (signed word)m; -} - -// Multiply a signed byte and an unsigned byte (into a signed word) -// Fixes offsets introduced by using unsigned multiplication -signed word mul8su(signed byte a, byte b) { - word m = mul8u((byte)a, (byte) b); - if(a<0) { - >m = (>m)-(byte)b; - } - return (signed word)m; -} - -// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word -dword mul16u(word a, word b) { - dword res = 0; - dword mb = b; - while(a!=0) { - if( (a&1) != 0) { - res = res + mb; - } - a = a>>1; - mb = mb<<1; - } - return res; -} - -// Multiply of two signed words to a signed double word -// Fixes offsets introduced by using unsigned multiplication -signed dword mul16s(signed word a, signed word b) { - dword m = mul16u((word)a, (word) b); - if(a<0) { - >m = (>m)-(word)b; - } - if(b<0) { - >m = (>m)-(word)a; - } - return (signed dword)m; -} - -Adding pre/post-modifier (word) sin16s_gen::i ← ++ (word) sin16s_gen::i -Adding pre/post-modifier (word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i -Adding pre/post-modifier (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab -Adding pre/post-modifier (word) sin8s_gen::i ← ++ (word) sin8s_gen::i -Adding pre/post-modifier (byte) sin8s::usinx ← -- (byte) sin8s::usinx Adding pre/post-modifier (byte) plexSort::s ← -- (byte) plexSort::s Adding pre/post-modifier (byte) plexSort::s ← ++ (byte) plexSort::s Adding pre/post-modifier (byte) plex_show_idx ← ++ (byte) plex_show_idx @@ -694,34 +315,13 @@ Added resource src/test/java/dk/camelot64/kickc/test/kc/balloon.png Adding pre/post-modifier *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) Adding pre/post-modifier *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) Adding pre/post-modifier *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) -Adding pre/post-modifier *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) SYMBOLS (word/signed word/dword/signed dword~) $0 (label) @1 (label) @10 (label) @11 -(label) @12 -(label) @13 -(label) @14 -(label) @15 -(label) @16 -(label) @17 -(label) @18 -(label) @19 (label) @2 -(label) @20 -(label) @21 -(label) @22 -(label) @23 -(label) @24 -(label) @25 -(label) @26 -(label) @27 -(label) @28 -(label) @29 (label) @3 -(label) @30 -(label) @31 (label) @4 (label) @5 (label) @6 @@ -760,13 +360,7 @@ SYMBOLS (byte) LIGHT_GREEN (byte) LIGHT_GREY (byte) ORANGE -(word) PI2_u4f12 -(dword) PI2_u4f28 (byte) PINK -(word) PI_HALF_u4f12 -(dword) PI_HALF_u4f28 -(word) PI_u4f12 -(dword) PI_u4f28 (byte) PLEX_COUNT (byte[PLEX_COUNT]) PLEX_PTR (byte*) PLEX_SCREEN_PTR @@ -810,180 +404,6 @@ SYMBOLS (byte) WHITE (byte) YELLOW (byte*) YSIN -(signed word()) div16s((signed word) div16s::dividend , (signed word) div16s::divisor) -(signed word~) div16s::$0 -(label) div16s::@1 -(label) div16s::@return -(signed word) div16s::dividend -(signed word) div16s::divisor -(signed word) div16s::return -(word()) div16u((word) div16u::dividend , (word) div16u::divisor) -(word~) div16u::$0 -(label) div16u::@1 -(label) div16u::@return -(word) div16u::dividend -(word) div16u::divisor -(word) div16u::return -(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) -(word~) div32u16u::$0 -(word~) div32u16u::$1 -(word~) div32u16u::$2 -(word~) div32u16u::$3 -(label) div32u16u::@1 -(label) div32u16u::@return -(dword) div32u16u::dividend -(word) div32u16u::divisor -(dword) div32u16u::quotient -(word) div32u16u::quotient_hi -(word) div32u16u::quotient_lo -(dword) div32u16u::return -(signed byte()) div8s((signed byte) div8s::dividend , (signed byte) div8s::divisor) -(bool~) div8s::$0 -(byte~) div8s::$1 -(bool~) div8s::$10 -(signed byte~) div8s::$11 -(signed byte~) div8s::$12 -(signed byte~) div8s::$13 -(signed byte~) div8s::$14 -(signed byte~) div8s::$15 -(signed byte~) div8s::$16 -(signed byte~) div8s::$2 -(byte~) div8s::$3 -(bool~) div8s::$4 -(byte~) div8s::$5 -(signed byte~) div8s::$6 -(byte~) div8s::$7 -(byte/word/dword~) div8s::$8 -(byte~) div8s::$9 -(label) div8s::@1 -(label) div8s::@10 -(label) div8s::@11 -(label) div8s::@12 -(label) div8s::@13 -(label) div8s::@14 -(label) div8s::@2 -(label) div8s::@3 -(label) div8s::@4 -(label) div8s::@5 -(label) div8s::@6 -(label) div8s::@7 -(label) div8s::@8 -(label) div8s::@9 -(label) div8s::@return -(signed byte) div8s::dividend -(byte) div8s::dividendu -(signed byte) div8s::divisor -(byte) div8s::divisoru -(byte) div8s::neg -(byte) div8s::resultu -(signed byte) div8s::return -(byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor) -(byte~) div8u::$0 -(label) div8u::@1 -(label) div8u::@return -(byte) div8u::dividend -(byte) div8u::divisor -(byte) div8u::return -(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem) -(bool~) divr16s::$0 -(bool~) divr16s::$1 -(word~) divr16s::$10 -(signed word~) divr16s::$11 -(word~) divr16s::$12 -(byte/word/dword~) divr16s::$13 -(word~) divr16s::$14 -(bool~) divr16s::$15 -(signed word~) divr16s::$16 -(signed word~) divr16s::$17 -(signed word~) divr16s::$18 -(signed word~) divr16s::$19 -(bool~) divr16s::$2 -(signed word~) divr16s::$20 -(signed word~) divr16s::$21 -(word~) divr16s::$3 -(word~) divr16s::$4 -(signed word~) divr16s::$5 -(word~) divr16s::$6 -(signed word~) divr16s::$7 -(word~) divr16s::$8 -(bool~) divr16s::$9 -(label) divr16s::@1 -(label) divr16s::@10 -(label) divr16s::@11 -(label) divr16s::@12 -(label) divr16s::@13 -(label) divr16s::@14 -(label) divr16s::@2 -(label) divr16s::@3 -(label) divr16s::@4 -(label) divr16s::@5 -(label) divr16s::@6 -(label) divr16s::@7 -(label) divr16s::@8 -(label) divr16s::@9 -(label) divr16s::@return -(signed word) divr16s::dividend -(word) divr16s::dividendu -(signed word) divr16s::divisor -(word) divr16s::divisoru -(byte) divr16s::neg -(signed word) divr16s::rem -(word) divr16s::remu -(word) divr16s::resultu -(signed word) divr16s::return -(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(word~) divr16u::$0 -(byte~) divr16u::$1 -(word~) divr16u::$10 -(bool~) divr16u::$11 -(byte~) divr16u::$2 -(bool~) divr16u::$3 -(bool~) divr16u::$4 -(word/dword~) divr16u::$5 -(word~) divr16u::$6 -(word~) divr16u::$7 -(bool~) divr16u::$8 -(bool~) divr16u::$9 -(label) divr16u::@1 -(label) divr16u::@2 -(label) divr16u::@3 -(label) divr16u::@4 -(label) divr16u::@5 -(label) divr16u::@6 -(label) divr16u::@7 -(label) divr16u::@return -(word) divr16u::dividend -(word) divr16u::divisor -(byte) divr16u::i -(word) divr16u::quotient -(word) divr16u::rem -(word) divr16u::return -(byte()) divr8u((byte) divr8u::dividend , (byte) divr8u::divisor , (byte) divr8u::rem) -(byte~) divr8u::$0 -(byte~) divr8u::$1 -(bool~) divr8u::$10 -(bool~) divr8u::$2 -(bool~) divr8u::$3 -(byte/word/dword~) divr8u::$4 -(byte~) divr8u::$5 -(byte~) divr8u::$6 -(bool~) divr8u::$7 -(bool~) divr8u::$8 -(byte~) divr8u::$9 -(label) divr8u::@1 -(label) divr8u::@2 -(label) divr8u::@3 -(label) divr8u::@4 -(label) divr8u::@5 -(label) divr8u::@6 -(label) divr8u::@7 -(label) divr8u::@return -(byte) divr8u::dividend -(byte) divr8u::divisor -(byte) divr8u::i -(byte) divr8u::quotient -(byte) divr8u::rem -(byte) divr8u::return (void()) init() (byte~) init::$0 (byte/word/dword~) init::$1 @@ -1009,7 +429,7 @@ SYMBOLS (bool~) loop::$11 (bool~) loop::$2 (void~) loop::$3 -(void~) loop::$4 +(byte~) loop::$4 (bool~) loop::$5 (byte/signed word/word/dword/signed dword~) loop::$6 (byte~) loop::$7 @@ -1032,6 +452,10 @@ SYMBOLS (label) loop::@22 (label) loop::@23 (label) loop::@24 +(label) loop::@25 +(label) loop::@26 +(label) loop::@27 +(label) loop::@28 (label) loop::@3 (label) loop::@4 (label) loop::@5 @@ -1049,145 +473,6 @@ SYMBOLS (void~) main::$0 (void~) main::$1 (label) main::@return -(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$0 -(word~) mul16s::$1 -(bool~) mul16s::$10 -(word~) mul16s::$11 -(word~) mul16s::$12 -(word~) mul16s::$13 -(word~) mul16s::$14 -(signed dword~) mul16s::$15 -(dword~) mul16s::$2 -(bool~) mul16s::$3 -(bool~) mul16s::$4 -(word~) mul16s::$5 -(word~) mul16s::$6 -(word~) mul16s::$7 -(word~) mul16s::$8 -(bool~) mul16s::$9 -(label) mul16s::@1 -(label) mul16s::@2 -(label) mul16s::@3 -(label) mul16s::@4 -(label) mul16s::@5 -(label) mul16s::@return -(signed word) mul16s::a -(signed word) mul16s::b -(dword) mul16s::m -(signed dword) mul16s::return -(dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(bool~) mul16u::$0 -(byte/word~) mul16u::$1 -(bool~) mul16u::$2 -(bool~) mul16u::$3 -(dword~) mul16u::$4 -(word~) mul16u::$5 -(dword~) mul16u::$6 -(label) mul16u::@1 -(label) mul16u::@2 -(label) mul16u::@3 -(label) mul16u::@4 -(label) mul16u::@5 -(label) mul16u::@6 -(label) mul16u::@7 -(label) mul16u::@8 -(label) mul16u::@9 -(label) mul16u::@return -(word) mul16u::a -(word) mul16u::b -(dword) mul16u::mb -(dword) mul16u::res -(dword) mul16u::return -(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b) -(byte~) mul8s::$0 -(byte~) mul8s::$1 -(bool~) mul8s::$10 -(byte~) mul8s::$11 -(byte~) mul8s::$12 -(byte~) mul8s::$13 -(byte~) mul8s::$14 -(signed word~) mul8s::$15 -(word~) mul8s::$2 -(bool~) mul8s::$3 -(bool~) mul8s::$4 -(byte~) mul8s::$5 -(byte~) mul8s::$6 -(byte~) mul8s::$7 -(byte~) mul8s::$8 -(bool~) mul8s::$9 -(label) mul8s::@1 -(label) mul8s::@2 -(label) mul8s::@3 -(label) mul8s::@4 -(label) mul8s::@5 -(label) mul8s::@return -(signed byte) mul8s::a -(signed byte) mul8s::b -(word) mul8s::m -(signed word) mul8s::return -(signed word()) mul8su((signed byte) mul8su::a , (byte) mul8su::b) -(byte~) mul8su::$0 -(byte~) mul8su::$1 -(word~) mul8su::$2 -(bool~) mul8su::$3 -(bool~) mul8su::$4 -(byte~) mul8su::$5 -(byte~) mul8su::$6 -(byte~) mul8su::$7 -(byte~) mul8su::$8 -(signed word~) mul8su::$9 -(label) mul8su::@1 -(label) mul8su::@2 -(label) mul8su::@3 -(label) mul8su::@return -(signed byte) mul8su::a -(byte) mul8su::b -(word) mul8su::m -(signed word) mul8su::return -(word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(bool~) mul8u::$0 -(byte~) mul8u::$1 -(bool~) mul8u::$2 -(bool~) mul8u::$3 -(word~) mul8u::$4 -(byte~) mul8u::$5 -(word~) mul8u::$6 -(label) mul8u::@1 -(label) mul8u::@2 -(label) mul8u::@3 -(label) mul8u::@4 -(label) mul8u::@5 -(label) mul8u::@6 -(label) mul8u::@7 -(label) mul8u::@8 -(label) mul8u::@9 -(label) mul8u::@return -(byte) mul8u::a -(byte) mul8u::b -(word) mul8u::mb -(word) mul8u::res -(word) mul8u::return -(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 -(dword~) mulu16_sel::$1 -(word~) mulu16_sel::$2 -(label) mulu16_sel::@1 -(label) mulu16_sel::@return -(word) mulu16_sel::return -(byte) mulu16_sel::select -(word) mulu16_sel::v1 -(word) mulu16_sel::v2 -(byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) -(word~) mulu8_sel::$0 -(word~) mulu8_sel::$1 -(byte~) mulu8_sel::$2 -(label) mulu8_sel::@1 -(label) mulu8_sel::@return -(byte) mulu8_sel::return -(byte) mulu8_sel::select -(byte) mulu8_sel::v1 -(byte) mulu8_sel::v2 (void()) plexInit((byte*) plexInit::screen) (void~) plexInit::$0 (byte/signed word/word/dword/signed dword~) plexInit::$1 @@ -1249,152 +534,6 @@ inline (byte()) plexShowNextYpos() (byte) plex_show_idx (byte) plex_sprite_idx (byte) plex_sprite_msb -(signed word) rem16s -(word) rem16u -(signed byte) rem8s -(byte) rem8u -(signed word()) sin16s((dword) sin16s::x) -(bool~) sin16s::$0 -(bool~) sin16s::$1 -(word/signed word/dword/signed dword~) sin16s::$10 -(word~) sin16s::$11 -(word~) sin16s::$12 -(word~) sin16s::$13 -(word~) sin16s::$14 -(word~) sin16s::$15 -(word~) sin16s::$16 -(signed word~) sin16s::$17 -(bool~) sin16s::$18 -(bool~) sin16s::$19 -(dword~) sin16s::$2 -(signed word~) sin16s::$20 -(signed word~) sin16s::$21 -(bool~) sin16s::$3 -(bool~) sin16s::$4 -(dword~) sin16s::$5 -(dword~) sin16s::$6 -(word~) sin16s::$7 -(word~) sin16s::$8 -(word~) sin16s::$9 -(label) sin16s::@1 -(label) sin16s::@2 -(label) sin16s::@3 -(label) sin16s::@4 -(label) sin16s::@5 -(label) sin16s::@6 -(label) sin16s::@7 -(label) sin16s::@return -(byte) sin16s::isUpper -(signed word) sin16s::return -(signed word) sin16s::sinx -(word) sin16s::usinx -(dword) sin16s::x -(word) sin16s::x1 -(word) sin16s::x2 -(word) sin16s::x3 -(word) sin16s::x3_6 -(word) sin16s::x4 -(word) sin16s::x5 -(word) sin16s::x5_128 -(void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(dword~) sin16s_gen::$0 -(signed word~) sin16s_gen::$1 -(signed word*~) sin16s_gen::$2 -(dword~) sin16s_gen::$3 -(bool~) sin16s_gen::$4 -(label) sin16s_gen::@1 -(label) sin16s_gen::@2 -(label) sin16s_gen::@return -(word) sin16s_gen::i -(signed word*) sin16s_gen::sintab -(dword) sin16s_gen::step -(word) sin16s_gen::wavelength -(dword) sin16s_gen::x -(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) -(signed word~) sin16s_gen2::$0 -(signed word~) sin16s_gen2::$1 -(dword~) sin16s_gen2::$10 -(bool~) sin16s_gen2::$11 -(signed word~) sin16s_gen2::$2 -(dword~) sin16s_gen2::$3 -(signed word~) sin16s_gen2::$4 -(signed dword~) sin16s_gen2::$5 -(word~) sin16s_gen2::$6 -(signed word~) sin16s_gen2::$7 -(signed word~) sin16s_gen2::$8 -(signed word*~) sin16s_gen2::$9 -(label) sin16s_gen2::@1 -(label) sin16s_gen2::@2 -(label) sin16s_gen2::@return -(signed word) sin16s_gen2::ampl -(word) sin16s_gen2::i -(signed word) sin16s_gen2::max -(signed word) sin16s_gen2::min -(signed word) sin16s_gen2::offs -(signed word*) sin16s_gen2::sintab -(dword) sin16s_gen2::step -(word) sin16s_gen2::wavelength -(dword) sin16s_gen2::x -(signed byte()) sin8s((word) sin8s::x) -(bool~) sin8s::$0 -(bool~) sin8s::$1 -(byte~) sin8s::$10 -(byte~) sin8s::$11 -(byte~) sin8s::$12 -(byte~) sin8s::$13 -(byte~) sin8s::$14 -(byte~) sin8s::$15 -(bool~) sin8s::$16 -(bool~) sin8s::$17 -(signed byte~) sin8s::$18 -(bool~) sin8s::$19 -(word~) sin8s::$2 -(bool~) sin8s::$20 -(signed byte~) sin8s::$21 -(signed byte~) sin8s::$22 -(bool~) sin8s::$3 -(bool~) sin8s::$4 -(word~) sin8s::$5 -(word~) sin8s::$6 -(byte~) sin8s::$7 -(byte~) sin8s::$8 -(byte~) sin8s::$9 -(label) sin8s::@1 -(label) sin8s::@2 -(label) sin8s::@3 -(label) sin8s::@4 -(label) sin8s::@5 -(label) sin8s::@6 -(label) sin8s::@7 -(label) sin8s::@8 -(label) sin8s::@9 -(label) sin8s::@return -(byte) sin8s::DIV_6 -(byte) sin8s::isUpper -(signed byte) sin8s::return -(signed byte) sin8s::sinx -(byte) sin8s::usinx -(word) sin8s::x -(byte) sin8s::x1 -(byte) sin8s::x2 -(byte) sin8s::x3 -(byte) sin8s::x3_6 -(byte) sin8s::x4 -(byte) sin8s::x5 -(byte) sin8s::x5_128 -(void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) -(word~) sin8s_gen::$0 -(signed byte~) sin8s_gen::$1 -(word~) sin8s_gen::$2 -(bool~) sin8s_gen::$3 -(label) sin8s_gen::@1 -(label) sin8s_gen::@2 -(label) sin8s_gen::@return -(word) sin8s_gen::i -(signed byte*) sin8s_gen::sintab -(word) sin8s_gen::step -(word) sin8s_gen::wavelength -(word) sin8s_gen::x inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx) (word~) toD018::$0 (word~) toD018::$1 @@ -1424,11 +563,6 @@ inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx) (label) vicSelectGfxBank::@return (byte*) vicSelectGfxBank::gfx -Fixing lo/hi-lvalue with new tmpVar mul8s::$16 mul8s::$16 ← mul8s::$8 -Fixing lo/hi-lvalue with new tmpVar mul8s::$17 mul8s::$17 ← mul8s::$14 -Fixing lo/hi-lvalue with new tmpVar mul8su::$10 mul8su::$10 ← mul8su::$8 -Fixing lo/hi-lvalue with new tmpVar mul16s::$16 mul16s::$16 ← mul16s::$8 -Fixing lo/hi-lvalue with new tmpVar mul16s::$17 mul16s::$17 ← mul16s::$14 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1 Promoting word/dword/signed dword to byte* in CHARGEN ← ((byte*)) 53248 @@ -1465,8 +599,6 @@ Promoting word/dword/signed dword to byte* in CIA2_PORT_A ← ((byte*)) 56576 Promoting word/dword/signed dword to byte* in CIA2_PORT_B ← ((byte*)) 56577 Promoting word/dword/signed dword to byte* in CIA2_PORT_A_DDR ← ((byte*)) 56578 Promoting word/dword/signed dword to byte* in CIA2_PORT_B_DDR ← ((byte*)) 56579 -Promoting byte to word in mul8u::mb ← ((word)) mul8u::b -Promoting word to dword in mul16u::mb ← ((dword)) mul16u::b Promoting word/signed word/dword/signed dword to byte* in PLEX_SCREEN_PTR ← ((byte*)) $0 Promoting word/signed word/dword/signed dword to byte* in SPRITE ← ((byte*)) 8192 Promoting word/signed word/dword/signed dword to byte* in SCREEN ← ((byte*)) 1024 @@ -1583,750 +715,6 @@ vicSelectGfxBank::@return: scope:[vicSelectGfxBank] from vicSelectGfxBank return to:@return @3: scope:[] from @2 - (byte) rem8u ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@4 -div8u: scope:[div8u] from - (byte~) div8u::$0 ← call divr8u (byte) div8u::dividend (byte) div8u::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) div8u::return ← (byte~) div8u::$0 - to:div8u::@return -div8u::@return: scope:[div8u] from div8u div8u::@1 - (byte) div8u::return ← (byte) div8u::return - return (byte) div8u::return - to:@return -div8u::@1: scope:[div8u] from - to:div8u::@return -@4: scope:[] from @3 - to:@5 -divr8u: scope:[divr8u] from - (byte) divr8u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) divr8u::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:divr8u::@1 -divr8u::@1: scope:[divr8u] from divr8u divr8u::@3 - (byte~) divr8u::$0 ← (byte) divr8u::rem << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) divr8u::rem ← (byte~) divr8u::$0 - (byte~) divr8u::$1 ← (byte) divr8u::dividend & (byte/word/signed word/dword/signed dword) 128 - (bool~) divr8u::$2 ← (byte~) divr8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) divr8u::$3 ← ! (bool~) divr8u::$2 - if((bool~) divr8u::$3) goto divr8u::@2 - to:divr8u::@4 -divr8u::@2: scope:[divr8u] from divr8u::@1 divr8u::@4 - (byte~) divr8u::$5 ← (byte) divr8u::dividend << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) divr8u::dividend ← (byte~) divr8u::$5 - (byte~) divr8u::$6 ← (byte) divr8u::quotient << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) divr8u::quotient ← (byte~) divr8u::$6 - (bool~) divr8u::$7 ← (byte) divr8u::rem >= (byte) divr8u::divisor - (bool~) divr8u::$8 ← ! (bool~) divr8u::$7 - if((bool~) divr8u::$8) goto divr8u::@3 - to:divr8u::@5 -divr8u::@4: scope:[divr8u] from divr8u::@1 - (byte/word/dword~) divr8u::$4 ← (byte) divr8u::rem | (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) divr8u::rem ← (byte/word/dword~) divr8u::$4 - to:divr8u::@2 -divr8u::@3: scope:[divr8u] from divr8u::@2 divr8u::@5 - (byte) divr8u::i ← (byte) divr8u::i + rangenext(0,7) - (bool~) divr8u::$10 ← (byte) divr8u::i != rangelast(0,7) - if((bool~) divr8u::$10) goto divr8u::@1 - to:divr8u::@6 -divr8u::@5: scope:[divr8u] from divr8u::@2 - (byte) divr8u::quotient ← ++ (byte) divr8u::quotient - (byte~) divr8u::$9 ← (byte) divr8u::rem - (byte) divr8u::divisor - (byte) divr8u::rem ← (byte~) divr8u::$9 - to:divr8u::@3 -divr8u::@6: scope:[divr8u] from divr8u::@3 - (byte) rem8u ← (byte) divr8u::rem - (byte) divr8u::return ← (byte) divr8u::quotient - to:divr8u::@return -divr8u::@return: scope:[divr8u] from divr8u::@6 divr8u::@7 - (byte) divr8u::return ← (byte) divr8u::return - return (byte) divr8u::return - to:@return -divr8u::@7: scope:[divr8u] from - to:divr8u::@return -@5: scope:[] from @4 - (word) rem16u ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@6 -divr16u: scope:[divr16u] from - (word) divr16u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) divr16u::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:divr16u::@1 -divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - (word~) divr16u::$0 ← (word) divr16u::rem << (byte/signed byte/word/signed word/dword/signed dword) 1 - (word) divr16u::rem ← (word~) divr16u::$0 - (byte~) divr16u::$1 ← > (word) divr16u::dividend - (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) divr16u::$4 ← ! (bool~) divr16u::$3 - if((bool~) divr16u::$4) goto divr16u::@2 - to:divr16u::@4 -divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - (word~) divr16u::$6 ← (word) divr16u::dividend << (byte/signed byte/word/signed word/dword/signed dword) 1 - (word) divr16u::dividend ← (word~) divr16u::$6 - (word~) divr16u::$7 ← (word) divr16u::quotient << (byte/signed byte/word/signed word/dword/signed dword) 1 - (word) divr16u::quotient ← (word~) divr16u::$7 - (bool~) divr16u::$8 ← (word) divr16u::rem >= (word) divr16u::divisor - (bool~) divr16u::$9 ← ! (bool~) divr16u::$8 - if((bool~) divr16u::$9) goto divr16u::@3 - to:divr16u::@5 -divr16u::@4: scope:[divr16u] from divr16u::@1 - (word/dword~) divr16u::$5 ← (word) divr16u::rem | (byte/signed byte/word/signed word/dword/signed dword) 1 - (word) divr16u::rem ← (word/dword~) divr16u::$5 - to:divr16u::@2 -divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - (byte) divr16u::i ← (byte) divr16u::i + rangenext(0,15) - (bool~) divr16u::$11 ← (byte) divr16u::i != rangelast(0,15) - if((bool~) divr16u::$11) goto divr16u::@1 - to:divr16u::@6 -divr16u::@5: scope:[divr16u] from divr16u::@2 - (word) divr16u::quotient ← ++ (word) divr16u::quotient - (word~) divr16u::$10 ← (word) divr16u::rem - (word) divr16u::divisor - (word) divr16u::rem ← (word~) divr16u::$10 - to:divr16u::@3 -divr16u::@6: scope:[divr16u] from divr16u::@3 - (word) rem16u ← (word) divr16u::rem - (word) divr16u::return ← (word) divr16u::quotient - to:divr16u::@return -divr16u::@return: scope:[divr16u] from divr16u::@6 divr16u::@7 - (word) divr16u::return ← (word) divr16u::return - return (word) divr16u::return - to:@return -divr16u::@7: scope:[divr16u] from - to:divr16u::@return -@6: scope:[] from @5 - to:@7 -div16u: scope:[div16u] from - (word~) div16u::$0 ← call divr16u (word) div16u::dividend (word) div16u::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) div16u::return ← (word~) div16u::$0 - to:div16u::@return -div16u::@return: scope:[div16u] from div16u div16u::@1 - (word) div16u::return ← (word) div16u::return - return (word) div16u::return - to:@return -div16u::@1: scope:[div16u] from - to:div16u::@return -@7: scope:[] from @6 - to:@8 -div32u16u: scope:[div32u16u] from - (word~) div32u16u::$0 ← > (dword) div32u16u::dividend - (word~) div32u16u::$1 ← call divr16u (word~) div32u16u::$0 (word) div32u16u::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) div32u16u::quotient_hi ← (word~) div32u16u::$1 - (word~) div32u16u::$2 ← < (dword) div32u16u::dividend - (word~) div32u16u::$3 ← call divr16u (word~) div32u16u::$2 (word) div32u16u::divisor (word) rem16u - (word) div32u16u::quotient_lo ← (word~) div32u16u::$3 - (dword) div32u16u::quotient ← { (word) div32u16u::quotient_hi, (word) div32u16u::quotient_lo } - (dword) div32u16u::return ← (dword) div32u16u::quotient - to:div32u16u::@return -div32u16u::@return: scope:[div32u16u] from div32u16u div32u16u::@1 - (dword) div32u16u::return ← (dword) div32u16u::return - return (dword) div32u16u::return - to:@return -div32u16u::@1: scope:[div32u16u] from - to:div32u16u::@return -@8: scope:[] from @7 - (signed byte) rem8s ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@9 -div8s: scope:[div8s] from - (byte) div8s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) div8s::dividendu ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) div8s::$0 ← (signed byte) div8s::dividend < (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) div8s::$0) goto div8s::@1 - to:div8s::@7 -div8s::@1: scope:[div8s] from div8s div8s::@8 - (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend - (byte~) div8s::$3 ← ((byte)) (signed byte~) div8s::$2 - (byte) div8s::dividendu ← (byte~) div8s::$3 - (byte) div8s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:div8s::@2 -div8s::@7: scope:[div8s] from div8s - (byte~) div8s::$1 ← ((byte)) (signed byte) div8s::dividend - (byte) div8s::dividendu ← (byte~) div8s::$1 - to:div8s::@2 -div8s::@2: scope:[div8s] from div8s::@1 div8s::@7 - (byte) div8s::divisoru ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) div8s::$4 ← (signed byte) div8s::divisor < (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) div8s::$4) goto div8s::@3 - to:div8s::@9 -div8s::@8: scope:[div8s] from - to:div8s::@1 -div8s::@3: scope:[div8s] from div8s::@10 div8s::@2 - (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor - (byte~) div8s::$7 ← ((byte)) (signed byte~) div8s::$6 - (byte) div8s::divisoru ← (byte~) div8s::$7 - (byte/word/dword~) div8s::$8 ← (byte) div8s::neg ^ (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) div8s::neg ← (byte/word/dword~) div8s::$8 - to:div8s::@4 -div8s::@9: scope:[div8s] from div8s::@2 - (byte~) div8s::$5 ← ((byte)) (signed byte) div8s::divisor - (byte) div8s::divisoru ← (byte~) div8s::$5 - to:div8s::@4 -div8s::@4: scope:[div8s] from div8s::@3 div8s::@9 - (byte~) div8s::$9 ← call div8u (byte) div8s::dividendu (byte) div8s::divisoru - (byte) div8s::resultu ← (byte~) div8s::$9 - (bool~) div8s::$10 ← (byte) div8s::neg == (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) div8s::$10) goto div8s::@5 - to:div8s::@11 -div8s::@10: scope:[div8s] from - to:div8s::@3 -div8s::@5: scope:[div8s] from div8s::@13 div8s::@4 - (signed byte~) div8s::$15 ← ((signed byte)) (byte) rem8u - (signed byte) rem8s ← (signed byte~) div8s::$15 - (signed byte~) div8s::$16 ← ((signed byte)) (byte) div8s::resultu - (signed byte) div8s::return ← (signed byte~) div8s::$16 - to:div8s::@return -div8s::@11: scope:[div8s] from div8s::@4 - (signed byte~) div8s::$11 ← ((signed byte)) (byte) rem8u - (signed byte~) div8s::$12 ← - (signed byte~) div8s::$11 - (signed byte) rem8s ← (signed byte~) div8s::$12 - (signed byte~) div8s::$13 ← ((signed byte)) (byte) div8s::resultu - (signed byte~) div8s::$14 ← - (signed byte~) div8s::$13 - (signed byte) div8s::return ← (signed byte~) div8s::$14 - to:div8s::@return -div8s::@return: scope:[div8s] from div8s::@11 div8s::@5 div8s::@6 - (signed byte) div8s::return ← (signed byte) div8s::return - return (signed byte) div8s::return - to:@return -div8s::@12: scope:[div8s] from - to:div8s::@6 -div8s::@6: scope:[div8s] from div8s::@12 div8s::@14 - to:div8s::@return -div8s::@13: scope:[div8s] from - to:div8s::@5 -div8s::@14: scope:[div8s] from - to:div8s::@6 -@9: scope:[] from @8 - (signed word) rem16s ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@10 -divr16s: scope:[divr16s] from - (byte) divr16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) divr16s::dividendu ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) divr16s::remu ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) divr16s::$0 ← (signed word) divr16s::dividend < (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) divr16s::$1 ← (signed word) divr16s::rem < (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1 - if((bool~) divr16s::$2) goto divr16s::@1 - to:divr16s::@7 -divr16s::@1: scope:[divr16s] from divr16s divr16s::@8 - (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend - (word~) divr16s::$6 ← ((word)) (signed word~) divr16s::$5 - (word) divr16s::dividendu ← (word~) divr16s::$6 - (signed word~) divr16s::$7 ← - (signed word) divr16s::rem - (word~) divr16s::$8 ← ((word)) (signed word~) divr16s::$7 - (word) divr16s::remu ← (word~) divr16s::$8 - (byte) divr16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:divr16s::@2 -divr16s::@7: scope:[divr16s] from divr16s - (word~) divr16s::$3 ← ((word)) (signed word) divr16s::dividend - (word) divr16s::dividendu ← (word~) divr16s::$3 - (word~) divr16s::$4 ← ((word)) (signed word) divr16s::rem - (word) divr16s::remu ← (word~) divr16s::$4 - to:divr16s::@2 -divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@7 - (word) divr16s::divisoru ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) divr16s::$9 ← (signed word) divr16s::divisor < (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) divr16s::$9) goto divr16s::@3 - to:divr16s::@9 -divr16s::@8: scope:[divr16s] from - to:divr16s::@1 -divr16s::@3: scope:[divr16s] from divr16s::@10 divr16s::@2 - (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor - (word~) divr16s::$12 ← ((word)) (signed word~) divr16s::$11 - (word) divr16s::divisoru ← (word~) divr16s::$12 - (byte/word/dword~) divr16s::$13 ← (byte) divr16s::neg ^ (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) divr16s::neg ← (byte/word/dword~) divr16s::$13 - to:divr16s::@4 -divr16s::@9: scope:[divr16s] from divr16s::@2 - (word~) divr16s::$10 ← ((word)) (signed word) divr16s::divisor - (word) divr16s::divisoru ← (word~) divr16s::$10 - to:divr16s::@4 -divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@9 - (word~) divr16s::$14 ← call divr16u (word) divr16s::dividendu (word) divr16s::divisoru (word) divr16s::remu - (word) divr16s::resultu ← (word~) divr16s::$14 - (bool~) divr16s::$15 ← (byte) divr16s::neg == (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) divr16s::$15) goto divr16s::@5 - to:divr16s::@11 -divr16s::@10: scope:[divr16s] from - to:divr16s::@3 -divr16s::@5: scope:[divr16s] from divr16s::@13 divr16s::@4 - (signed word~) divr16s::$20 ← ((signed word)) (word) rem16u - (signed word) rem16s ← (signed word~) divr16s::$20 - (signed word~) divr16s::$21 ← ((signed word)) (word) divr16s::resultu - (signed word) divr16s::return ← (signed word~) divr16s::$21 - to:divr16s::@return -divr16s::@11: scope:[divr16s] from divr16s::@4 - (signed word~) divr16s::$16 ← ((signed word)) (word) rem16u - (signed word~) divr16s::$17 ← - (signed word~) divr16s::$16 - (signed word) rem16s ← (signed word~) divr16s::$17 - (signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu - (signed word~) divr16s::$19 ← - (signed word~) divr16s::$18 - (signed word) divr16s::return ← (signed word~) divr16s::$19 - to:divr16s::@return -divr16s::@return: scope:[divr16s] from divr16s::@11 divr16s::@5 divr16s::@6 - (signed word) divr16s::return ← (signed word) divr16s::return - return (signed word) divr16s::return - to:@return -divr16s::@12: scope:[divr16s] from - to:divr16s::@6 -divr16s::@6: scope:[divr16s] from divr16s::@12 divr16s::@14 - to:divr16s::@return -divr16s::@13: scope:[divr16s] from - to:divr16s::@5 -divr16s::@14: scope:[divr16s] from - to:divr16s::@6 -@10: scope:[] from @9 - to:@11 -div16s: scope:[div16s] from - (signed word~) div16s::$0 ← call divr16s (signed word) div16s::dividend (signed word) div16s::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 - (signed word) div16s::return ← (signed word~) div16s::$0 - to:div16s::@return -div16s::@return: scope:[div16s] from div16s div16s::@1 - (signed word) div16s::return ← (signed word) div16s::return - return (signed word) div16s::return - to:@return -div16s::@1: scope:[div16s] from - to:div16s::@return -@11: scope:[] from @10 - to:@12 -mul8u: scope:[mul8u] from - (word) mul8u::res ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) mul8u::mb ← ((word)) (byte) mul8u::b - to:mul8u::@1 -mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 - (bool~) mul8u::$0 ← (byte) mul8u::a != (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) mul8u::$0) goto mul8u::@2 - to:mul8u::@5 -mul8u::@2: scope:[mul8u] from mul8u::@1 mul8u::@6 - (byte~) mul8u::$1 ← (byte) mul8u::a & (byte/signed byte/word/signed word/dword/signed dword) 1 - (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) mul8u::$3 ← ! (bool~) mul8u::$2 - if((bool~) mul8u::$3) goto mul8u::@4 - to:mul8u::@7 -mul8u::@5: scope:[mul8u] from mul8u::@1 - to:mul8u::@3 -mul8u::@3: scope:[mul8u] from mul8u::@5 mul8u::@8 - (word) mul8u::return ← (word) mul8u::res - to:mul8u::@return -mul8u::@6: scope:[mul8u] from - to:mul8u::@2 -mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 - (byte~) mul8u::$5 ← (byte) mul8u::a >> (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mul8u::a ← (byte~) mul8u::$5 - (word~) mul8u::$6 ← (word) mul8u::mb << (byte/signed byte/word/signed word/dword/signed dword) 1 - (word) mul8u::mb ← (word~) mul8u::$6 - to:mul8u::@1 -mul8u::@7: scope:[mul8u] from mul8u::@2 - (word~) mul8u::$4 ← (word) mul8u::res + (word) mul8u::mb - (word) mul8u::res ← (word~) mul8u::$4 - to:mul8u::@4 -mul8u::@8: scope:[mul8u] from - to:mul8u::@3 -mul8u::@return: scope:[mul8u] from mul8u::@3 mul8u::@9 - (word) mul8u::return ← (word) mul8u::return - return (word) mul8u::return - to:@return -mul8u::@9: scope:[mul8u] from - to:mul8u::@return -@12: scope:[] from @11 - to:@13 -mul8s: scope:[mul8s] from - (byte~) mul8s::$0 ← ((byte)) (signed byte) mul8s::a - (byte~) mul8s::$1 ← ((byte)) (signed byte) mul8s::b - (word~) mul8s::$2 ← call mul8u (byte~) mul8s::$0 (byte~) mul8s::$1 - (word) mul8s::m ← (word~) mul8s::$2 - (bool~) mul8s::$3 ← (signed byte) mul8s::a < (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) mul8s::$4 ← ! (bool~) mul8s::$3 - if((bool~) mul8s::$4) goto mul8s::@1 - to:mul8s::@3 -mul8s::@1: scope:[mul8s] from mul8s mul8s::@3 - (bool~) mul8s::$9 ← (signed byte) mul8s::b < (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) mul8s::$10 ← ! (bool~) mul8s::$9 - if((bool~) mul8s::$10) goto mul8s::@2 - to:mul8s::@4 -mul8s::@3: scope:[mul8s] from mul8s - (byte~) mul8s::$5 ← > (word) mul8s::m - (byte~) mul8s::$6 ← > (word) mul8s::m - (byte~) mul8s::$7 ← ((byte)) (signed byte) mul8s::b - (byte~) mul8s::$8 ← (byte~) mul8s::$6 - (byte~) mul8s::$7 - (byte~) mul8s::$16 ← (byte~) mul8s::$8 - (word) mul8s::m ← (word) mul8s::m hi= (byte~) mul8s::$16 - to:mul8s::@1 -mul8s::@2: scope:[mul8s] from mul8s::@1 mul8s::@4 - (signed word~) mul8s::$15 ← ((signed word)) (word) mul8s::m - (signed word) mul8s::return ← (signed word~) mul8s::$15 - to:mul8s::@return -mul8s::@4: scope:[mul8s] from mul8s::@1 - (byte~) mul8s::$11 ← > (word) mul8s::m - (byte~) mul8s::$12 ← > (word) mul8s::m - (byte~) mul8s::$13 ← ((byte)) (signed byte) mul8s::a - (byte~) mul8s::$14 ← (byte~) mul8s::$12 - (byte~) mul8s::$13 - (byte~) mul8s::$17 ← (byte~) mul8s::$14 - (word) mul8s::m ← (word) mul8s::m hi= (byte~) mul8s::$17 - to:mul8s::@2 -mul8s::@return: scope:[mul8s] from mul8s::@2 mul8s::@5 - (signed word) mul8s::return ← (signed word) mul8s::return - return (signed word) mul8s::return - to:@return -mul8s::@5: scope:[mul8s] from - to:mul8s::@return -@13: scope:[] from @12 - to:@14 -mul8su: scope:[mul8su] from - (byte~) mul8su::$0 ← ((byte)) (signed byte) mul8su::a - (byte~) mul8su::$1 ← ((byte)) (byte) mul8su::b - (word~) mul8su::$2 ← call mul8u (byte~) mul8su::$0 (byte~) mul8su::$1 - (word) mul8su::m ← (word~) mul8su::$2 - (bool~) mul8su::$3 ← (signed byte) mul8su::a < (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) mul8su::$4 ← ! (bool~) mul8su::$3 - if((bool~) mul8su::$4) goto mul8su::@1 - to:mul8su::@2 -mul8su::@1: scope:[mul8su] from mul8su mul8su::@2 - (signed word~) mul8su::$9 ← ((signed word)) (word) mul8su::m - (signed word) mul8su::return ← (signed word~) mul8su::$9 - to:mul8su::@return -mul8su::@2: scope:[mul8su] from mul8su - (byte~) mul8su::$5 ← > (word) mul8su::m - (byte~) mul8su::$6 ← > (word) mul8su::m - (byte~) mul8su::$7 ← ((byte)) (byte) mul8su::b - (byte~) mul8su::$8 ← (byte~) mul8su::$6 - (byte~) mul8su::$7 - (byte~) mul8su::$10 ← (byte~) mul8su::$8 - (word) mul8su::m ← (word) mul8su::m hi= (byte~) mul8su::$10 - to:mul8su::@1 -mul8su::@return: scope:[mul8su] from mul8su::@1 mul8su::@3 - (signed word) mul8su::return ← (signed word) mul8su::return - return (signed word) mul8su::return - to:@return -mul8su::@3: scope:[mul8su] from - to:mul8su::@return -@14: scope:[] from @13 - to:@15 -mul16u: scope:[mul16u] from - (dword) mul16u::res ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (dword) mul16u::mb ← ((dword)) (word) mul16u::b - to:mul16u::@1 -mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - (bool~) mul16u::$0 ← (word) mul16u::a != (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) mul16u::$0) goto mul16u::@2 - to:mul16u::@5 -mul16u::@2: scope:[mul16u] from mul16u::@1 mul16u::@6 - (byte/word~) mul16u::$1 ← (word) mul16u::a & (byte/signed byte/word/signed word/dword/signed dword) 1 - (bool~) mul16u::$2 ← (byte/word~) mul16u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) mul16u::$3 ← ! (bool~) mul16u::$2 - if((bool~) mul16u::$3) goto mul16u::@4 - to:mul16u::@7 -mul16u::@5: scope:[mul16u] from mul16u::@1 - to:mul16u::@3 -mul16u::@3: scope:[mul16u] from mul16u::@5 mul16u::@8 - (dword) mul16u::return ← (dword) mul16u::res - to:mul16u::@return -mul16u::@6: scope:[mul16u] from - to:mul16u::@2 -mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - (word~) mul16u::$5 ← (word) mul16u::a >> (byte/signed byte/word/signed word/dword/signed dword) 1 - (word) mul16u::a ← (word~) mul16u::$5 - (dword~) mul16u::$6 ← (dword) mul16u::mb << (byte/signed byte/word/signed word/dword/signed dword) 1 - (dword) mul16u::mb ← (dword~) mul16u::$6 - to:mul16u::@1 -mul16u::@7: scope:[mul16u] from mul16u::@2 - (dword~) mul16u::$4 ← (dword) mul16u::res + (dword) mul16u::mb - (dword) mul16u::res ← (dword~) mul16u::$4 - to:mul16u::@4 -mul16u::@8: scope:[mul16u] from - to:mul16u::@3 -mul16u::@return: scope:[mul16u] from mul16u::@3 mul16u::@9 - (dword) mul16u::return ← (dword) mul16u::return - return (dword) mul16u::return - to:@return -mul16u::@9: scope:[mul16u] from - to:mul16u::@return -@15: scope:[] from @14 - to:@16 -mul16s: scope:[mul16s] from - (word~) mul16s::$0 ← ((word)) (signed word) mul16s::a - (word~) mul16s::$1 ← ((word)) (signed word) mul16s::b - (dword~) mul16s::$2 ← call mul16u (word~) mul16s::$0 (word~) mul16s::$1 - (dword) mul16s::m ← (dword~) mul16s::$2 - (bool~) mul16s::$3 ← (signed word) mul16s::a < (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) mul16s::$4 ← ! (bool~) mul16s::$3 - if((bool~) mul16s::$4) goto mul16s::@1 - to:mul16s::@3 -mul16s::@1: scope:[mul16s] from mul16s mul16s::@3 - (bool~) mul16s::$9 ← (signed word) mul16s::b < (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) mul16s::$10 ← ! (bool~) mul16s::$9 - if((bool~) mul16s::$10) goto mul16s::@2 - to:mul16s::@4 -mul16s::@3: scope:[mul16s] from mul16s - (word~) mul16s::$5 ← > (dword) mul16s::m - (word~) mul16s::$6 ← > (dword) mul16s::m - (word~) mul16s::$7 ← ((word)) (signed word) mul16s::b - (word~) mul16s::$8 ← (word~) mul16s::$6 - (word~) mul16s::$7 - (word~) mul16s::$16 ← (word~) mul16s::$8 - (dword) mul16s::m ← (dword) mul16s::m hi= (word~) mul16s::$16 - to:mul16s::@1 -mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 - (signed dword~) mul16s::$15 ← ((signed dword)) (dword) mul16s::m - (signed dword) mul16s::return ← (signed dword~) mul16s::$15 - to:mul16s::@return -mul16s::@4: scope:[mul16s] from mul16s::@1 - (word~) mul16s::$11 ← > (dword) mul16s::m - (word~) mul16s::$12 ← > (dword) mul16s::m - (word~) mul16s::$13 ← ((word)) (signed word) mul16s::a - (word~) mul16s::$14 ← (word~) mul16s::$12 - (word~) mul16s::$13 - (word~) mul16s::$17 ← (word~) mul16s::$14 - (dword) mul16s::m ← (dword) mul16s::m hi= (word~) mul16s::$17 - to:mul16s::@2 -mul16s::@return: scope:[mul16s] from mul16s::@2 mul16s::@5 - (signed dword) mul16s::return ← (signed dword) mul16s::return - return (signed dword) mul16s::return - to:@return -mul16s::@5: scope:[mul16s] from - to:mul16s::@return -@16: scope:[] from @15 - (dword) PI2_u4f28 ← (dword/signed dword) 1686629713 - (dword) PI_u4f28 ← (dword/signed dword) 843314857 - (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428 - (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 - (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868 - (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434 - to:@17 -sin16s_gen: scope:[sin16s_gen] from - (dword~) sin16s_gen::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_gen::wavelength - (dword) sin16s_gen::step ← (dword~) sin16s_gen::$0 - (dword) sin16s_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16s_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:sin16s_gen::@1 -sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen sin16s_gen::@1 - (signed word~) sin16s_gen::$1 ← call sin16s (dword) sin16s_gen::x - *((signed word*) sin16s_gen::sintab) ← (signed word~) sin16s_gen::$1 - (signed word*~) sin16s_gen::$2 ← (signed word*) sin16s_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) sin16s_gen::sintab ← (signed word*~) sin16s_gen::$2 - (dword~) sin16s_gen::$3 ← (dword) sin16s_gen::x + (dword) sin16s_gen::step - (dword) sin16s_gen::x ← (dword~) sin16s_gen::$3 - (word) sin16s_gen::i ← ++ (word) sin16s_gen::i - (bool~) sin16s_gen::$4 ← (word) sin16s_gen::i < (word) sin16s_gen::wavelength - if((bool~) sin16s_gen::$4) goto sin16s_gen::@1 - to:sin16s_gen::@2 -sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@1 - to:sin16s_gen::@return -sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@2 - return - to:@return -@17: scope:[] from @16 - to:@18 -sin16s_gen2: scope:[sin16s_gen2] from - (signed word~) sin16s_gen2::$0 ← (signed word) sin16s_gen2::max - (signed word) sin16s_gen2::min - (signed word) sin16s_gen2::ampl ← (signed word~) sin16s_gen2::$0 - (signed word~) sin16s_gen2::$1 ← (signed word) sin16s_gen2::ampl >> (byte/signed byte/word/signed word/dword/signed dword) 1 - (signed word~) sin16s_gen2::$2 ← (signed word) sin16s_gen2::min + (signed word~) sin16s_gen2::$1 - (signed word) sin16s_gen2::offs ← (signed word~) sin16s_gen2::$2 - (dword~) sin16s_gen2::$3 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_gen2::wavelength - (dword) sin16s_gen2::step ← (dword~) sin16s_gen2::$3 - (dword) sin16s_gen2::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16s_gen2::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:sin16s_gen2::@1 -sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2 sin16s_gen2::@1 - (signed word~) sin16s_gen2::$4 ← call sin16s (dword) sin16s_gen2::x - (signed dword~) sin16s_gen2::$5 ← call mul16s (signed word~) sin16s_gen2::$4 (signed word) sin16s_gen2::ampl - (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 - (signed word~) sin16s_gen2::$7 ← ((signed word)) (word~) sin16s_gen2::$6 - (signed word~) sin16s_gen2::$8 ← (signed word) sin16s_gen2::offs + (signed word~) sin16s_gen2::$7 - *((signed word*) sin16s_gen2::sintab) ← (signed word~) sin16s_gen2::$8 - (signed word*~) sin16s_gen2::$9 ← (signed word*) sin16s_gen2::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) sin16s_gen2::sintab ← (signed word*~) sin16s_gen2::$9 - (dword~) sin16s_gen2::$10 ← (dword) sin16s_gen2::x + (dword) sin16s_gen2::step - (dword) sin16s_gen2::x ← (dword~) sin16s_gen2::$10 - (word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i - (bool~) sin16s_gen2::$11 ← (word) sin16s_gen2::i < (word) sin16s_gen2::wavelength - if((bool~) sin16s_gen2::$11) goto sin16s_gen2::@1 - to:sin16s_gen2::@2 -sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2::@1 - to:sin16s_gen2::@return -sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@2 - return - to:@return -@18: scope:[] from @17 - to:@19 -sin8s_gen: scope:[sin8s_gen] from - (word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength - (word) sin8s_gen::step ← (word~) sin8s_gen::$0 - (word) sin8s_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin8s_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:sin8s_gen::@1 -sin8s_gen::@1: scope:[sin8s_gen] from sin8s_gen sin8s_gen::@1 - (signed byte~) sin8s_gen::$1 ← call sin8s (word) sin8s_gen::x - *((signed byte*) sin8s_gen::sintab) ← (signed byte~) sin8s_gen::$1 - (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab - (word~) sin8s_gen::$2 ← (word) sin8s_gen::x + (word) sin8s_gen::step - (word) sin8s_gen::x ← (word~) sin8s_gen::$2 - (word) sin8s_gen::i ← ++ (word) sin8s_gen::i - (bool~) sin8s_gen::$3 ← (word) sin8s_gen::i < (word) sin8s_gen::wavelength - if((bool~) sin8s_gen::$3) goto sin8s_gen::@1 - to:sin8s_gen::@2 -sin8s_gen::@2: scope:[sin8s_gen] from sin8s_gen::@1 - to:sin8s_gen::@return -sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@2 - return - to:@return -@19: scope:[] from @18 - to:@20 -sin16s: scope:[sin16s] from - (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28 - (bool~) sin16s::$1 ← ! (bool~) sin16s::$0 - if((bool~) sin16s::$1) goto sin16s::@1 - to:sin16s::@4 -sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - (bool~) sin16s::$3 ← (dword) sin16s::x >= (dword) PI_HALF_u4f28 - (bool~) sin16s::$4 ← ! (bool~) sin16s::$3 - if((bool~) sin16s::$4) goto sin16s::@2 - to:sin16s::@5 -sin16s::@4: scope:[sin16s] from sin16s - (dword~) sin16s::$2 ← (dword) sin16s::x - (dword) PI_u4f28 - (dword) sin16s::x ← (dword~) sin16s::$2 - (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:sin16s::@1 -sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - (dword~) sin16s::$6 ← (dword) sin16s::x << (byte/signed byte/word/signed word/dword/signed dword) 3 - (word~) sin16s::$7 ← > (dword~) sin16s::$6 - (word) sin16s::x1 ← (word~) sin16s::$7 - (word~) sin16s::$8 ← call mulu16_sel (word) sin16s::x1 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16s::x2 ← (word~) sin16s::$8 - (word~) sin16s::$9 ← call mulu16_sel (word) sin16s::x2 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 - (word) sin16s::x3 ← (word~) sin16s::$9 - (word/signed word/dword/signed dword~) sin16s::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 - (word~) sin16s::$11 ← call mulu16_sel (word) sin16s::x3 (word/signed word/dword/signed dword~) sin16s::$10 (byte/signed byte/word/signed word/dword/signed dword) 1 - (word) sin16s::x3_6 ← (word~) sin16s::$11 - (word~) sin16s::$12 ← (word) sin16s::x1 - (word) sin16s::x3_6 - (word) sin16s::usinx ← (word~) sin16s::$12 - (word~) sin16s::$13 ← call mulu16_sel (word) sin16s::x3 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16s::x4 ← (word~) sin16s::$13 - (word~) sin16s::$14 ← call mulu16_sel (word) sin16s::x4 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16s::x5 ← (word~) sin16s::$14 - (word~) sin16s::$15 ← (word) sin16s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - (word) sin16s::x5_128 ← (word~) sin16s::$15 - (word~) sin16s::$16 ← (word) sin16s::usinx + (word) sin16s::x5_128 - (word) sin16s::usinx ← (word~) sin16s::$16 - (signed word~) sin16s::$17 ← ((signed word)) (word) sin16s::usinx - (signed word) sin16s::sinx ← (signed word~) sin16s::$17 - (bool~) sin16s::$18 ← (byte) sin16s::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) sin16s::$19 ← ! (bool~) sin16s::$18 - if((bool~) sin16s::$19) goto sin16s::@3 - to:sin16s::@6 -sin16s::@5: scope:[sin16s] from sin16s::@1 - (dword~) sin16s::$5 ← (dword) PI_u4f28 - (dword) sin16s::x - (dword) sin16s::x ← (dword~) sin16s::$5 - to:sin16s::@2 -sin16s::@3: scope:[sin16s] from sin16s::@2 sin16s::@6 - (signed word) sin16s::return ← (signed word) sin16s::sinx - to:sin16s::@return -sin16s::@6: scope:[sin16s] from sin16s::@2 - (signed word~) sin16s::$20 ← ((signed word)) (word) sin16s::usinx - (signed word~) sin16s::$21 ← - (signed word~) sin16s::$20 - (signed word) sin16s::sinx ← (signed word~) sin16s::$21 - to:sin16s::@3 -sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@7 - (signed word) sin16s::return ← (signed word) sin16s::return - return (signed word) sin16s::return - to:@return -sin16s::@7: scope:[sin16s] from - to:sin16s::@return -@20: scope:[] from @19 - to:@21 -sin8s: scope:[sin8s] from - (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12 - (bool~) sin8s::$1 ← ! (bool~) sin8s::$0 - if((bool~) sin8s::$1) goto sin8s::@1 - to:sin8s::@5 -sin8s::@1: scope:[sin8s] from sin8s sin8s::@5 - (bool~) sin8s::$3 ← (word) sin8s::x >= (word) PI_HALF_u4f12 - (bool~) sin8s::$4 ← ! (bool~) sin8s::$3 - if((bool~) sin8s::$4) goto sin8s::@2 - to:sin8s::@6 -sin8s::@5: scope:[sin8s] from sin8s - (word~) sin8s::$2 ← (word) sin8s::x - (word) PI_u4f12 - (word) sin8s::x ← (word~) sin8s::$2 - (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:sin8s::@1 -sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@6 - (word~) sin8s::$6 ← (word) sin8s::x << (byte/signed byte/word/signed word/dword/signed dword) 3 - (byte~) sin8s::$7 ← > (word~) sin8s::$6 - (byte) sin8s::x1 ← (byte~) sin8s::$7 - (byte~) sin8s::$8 ← call mulu8_sel (byte) sin8s::x1 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) sin8s::x2 ← (byte~) sin8s::$8 - (byte~) sin8s::$9 ← call mulu8_sel (byte) sin8s::x2 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) sin8s::x3 ← (byte~) sin8s::$9 - (byte) sin8s::DIV_6 ← (byte/signed byte/word/signed word/dword/signed dword) 43 - (byte~) sin8s::$10 ← call mulu8_sel (byte) sin8s::x3 (byte) sin8s::DIV_6 (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) sin8s::x3_6 ← (byte~) sin8s::$10 - (byte~) sin8s::$11 ← (byte) sin8s::x1 - (byte) sin8s::x3_6 - (byte) sin8s::usinx ← (byte~) sin8s::$11 - (byte~) sin8s::$12 ← call mulu8_sel (byte) sin8s::x3 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) sin8s::x4 ← (byte~) sin8s::$12 - (byte~) sin8s::$13 ← call mulu8_sel (byte) sin8s::x4 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) sin8s::x5 ← (byte~) sin8s::$13 - (byte~) sin8s::$14 ← (byte) sin8s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte) sin8s::x5_128 ← (byte~) sin8s::$14 - (byte~) sin8s::$15 ← (byte) sin8s::usinx + (byte) sin8s::x5_128 - (byte) sin8s::usinx ← (byte~) sin8s::$15 - (bool~) sin8s::$16 ← (byte) sin8s::usinx >= (byte/word/signed word/dword/signed dword) 128 - (bool~) sin8s::$17 ← ! (bool~) sin8s::$16 - if((bool~) sin8s::$17) goto sin8s::@3 - to:sin8s::@7 -sin8s::@6: scope:[sin8s] from sin8s::@1 - (word~) sin8s::$5 ← (word) PI_u4f12 - (word) sin8s::x - (word) sin8s::x ← (word~) sin8s::$5 - to:sin8s::@2 -sin8s::@3: scope:[sin8s] from sin8s::@2 sin8s::@7 - (signed byte~) sin8s::$18 ← ((signed byte)) (byte) sin8s::usinx - (signed byte) sin8s::sinx ← (signed byte~) sin8s::$18 - (bool~) sin8s::$19 ← (byte) sin8s::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) sin8s::$20 ← ! (bool~) sin8s::$19 - if((bool~) sin8s::$20) goto sin8s::@4 - to:sin8s::@8 -sin8s::@7: scope:[sin8s] from sin8s::@2 - (byte) sin8s::usinx ← -- (byte) sin8s::usinx - to:sin8s::@3 -sin8s::@4: scope:[sin8s] from sin8s::@3 sin8s::@8 - (signed byte) sin8s::return ← (signed byte) sin8s::sinx - to:sin8s::@return -sin8s::@8: scope:[sin8s] from sin8s::@3 - (signed byte~) sin8s::$21 ← ((signed byte)) (byte) sin8s::usinx - (signed byte~) sin8s::$22 ← - (signed byte~) sin8s::$21 - (signed byte) sin8s::sinx ← (signed byte~) sin8s::$22 - to:sin8s::@4 -sin8s::@return: scope:[sin8s] from sin8s::@4 sin8s::@9 - (signed byte) sin8s::return ← (signed byte) sin8s::return - return (signed byte) sin8s::return - to:@return -sin8s::@9: scope:[sin8s] from - to:sin8s::@return -@21: scope:[] from @20 - to:@22 -mulu16_sel: scope:[mulu16_sel] from - (dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2 - (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select - (word~) mulu16_sel::$2 ← > (dword~) mulu16_sel::$1 - (word) mulu16_sel::return ← (word~) mulu16_sel::$2 - to:mulu16_sel::@return -mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel mulu16_sel::@1 - (word) mulu16_sel::return ← (word) mulu16_sel::return - return (word) mulu16_sel::return - to:@return -mulu16_sel::@1: scope:[mulu16_sel] from - to:mulu16_sel::@return -@22: scope:[] from @21 - to:@23 -mulu8_sel: scope:[mulu8_sel] from - (word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2 - (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select - (byte~) mulu8_sel::$2 ← > (word~) mulu8_sel::$1 - (byte) mulu8_sel::return ← (byte~) mulu8_sel::$2 - to:mulu8_sel::@return -mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel mulu8_sel::@1 - (byte) mulu8_sel::return ← (byte) mulu8_sel::return - return (byte) mulu8_sel::return - to:@return -mulu8_sel::@1: scope:[mulu8_sel] from - to:mulu8_sel::@return -@23: scope:[] from @22 (byte) PLEX_COUNT ← (byte/signed byte/word/signed word/dword/signed dword) 24 (word[PLEX_COUNT]) PLEX_XPOS ← { fill( PLEX_COUNT, 0) } (byte[PLEX_COUNT]) PLEX_YPOS ← { fill( PLEX_COUNT, 0) } @@ -2337,7 +725,7 @@ mulu8_sel::@1: scope:[mulu8_sel] from (byte) plex_show_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) plex_sprite_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) plex_sprite_msb ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:@24 + to:@4 plexInit: scope:[plexInit] from (void~) plexInit::$0 ← call plexSetScreen (byte*) plexInit::screen (byte/signed word/word/dword/signed dword~) plexInit::$1 ← (byte) PLEX_COUNT - (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -2354,8 +742,8 @@ plexInit::@2: scope:[plexInit] from plexInit::@1 plexInit::@return: scope:[plexInit] from plexInit::@2 return to:@return -@24: scope:[] from @23 - to:@25 +@4: scope:[] from @3 + to:@5 plexSetScreen: scope:[plexSetScreen] from (byte*~) plexSetScreen::$0 ← (byte*) plexSetScreen::screen + (word/signed word/dword/signed dword) 1016 (byte*) PLEX_SCREEN_PTR ← (byte*~) plexSetScreen::$0 @@ -2363,8 +751,8 @@ plexSetScreen: scope:[plexSetScreen] from plexSetScreen::@return: scope:[plexSetScreen] from plexSetScreen return to:@return -@25: scope:[] from @24 - to:@26 +@5: scope:[] from @4 + to:@6 plexSort: scope:[plexSort] from (byte/signed word/word/dword/signed dword~) plexSort::$0 ← (byte) PLEX_COUNT - (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) plexSort::m ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -2406,8 +794,8 @@ plexSort::@6: scope:[plexSort] from plexSort::@2 plexSort::@return: scope:[plexSort] from plexSort::@6 return to:@return -@26: scope:[] from @25 - to:@27 +@6: scope:[] from @5 + to:@7 plexShowSprite: scope:[plexShowSprite] from (byte~) plexShowSprite::$0 ← (byte) plex_sprite_idx << (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) plexShowSprite::plex_sprite_idx2 ← (byte~) plexShowSprite::$0 @@ -2448,8 +836,8 @@ plexShowSprite::@6: scope:[plexShowSprite] from plexShowSprite::@2 plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@3 return to:@return -@27: scope:[] from @26 - to:@28 +@7: scope:[] from @6 + to:@8 plexShowNextYpos: scope:[plexShowNextYpos] from (byte) plexShowNextYpos::return ← *((byte[PLEX_COUNT]) PLEX_YPOS + *((byte[PLEX_COUNT]) PLEX_SORTED_IDX + (byte) plex_show_idx)) to:plexShowNextYpos::@return @@ -2459,11 +847,11 @@ plexShowNextYpos::@return: scope:[plexShowNextYpos] from plexShowNextYpos plexS to:@return plexShowNextYpos::@1: scope:[plexShowNextYpos] from to:plexShowNextYpos::@return -@28: scope:[] from @27 +@8: scope:[] from @7 (byte*) SPRITE ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) YSIN ← ((byte*)) (word/signed word/dword/signed dword) 8448 - kickasm(location (byte*) YSIN) {{ .var min = 51 + kickasm(location (byte*) YSIN) {{ .var min = 50 .var max = 250-21 .var ampl = max-min; .for(var i=0;i<256;i++) @@ -2474,7 +862,7 @@ plexShowNextYpos::@1: scope:[plexShowNextYpos] from .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} - to:@29 + to:@9 main: scope:[main] from asm { sei } (void~) main::$0 ← call init @@ -2483,8 +871,8 @@ main: scope:[main] from main::@return: scope:[main] from main return to:@return -@29: scope:[] from @28 - to:@30 +@9: scope:[] from @8 + to:@10 init: scope:[init] from (byte~) init::$0 ← (byte) VIC_DEN | (byte) VIC_RSEL (byte/word/dword~) init::$1 ← (byte~) init::$0 | (byte/signed byte/word/signed word/dword/signed dword) 3 @@ -2520,39 +908,39 @@ init::@4: scope:[init] from init::@2 init::@return: scope:[init] from init::@4 return to:@return -@30: scope:[] from @29 - to:@31 +@10: scope:[] from @9 + to:@11 loop: scope:[loop] from (byte) loop::sin_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:loop::@1 -loop::@1: scope:[loop] from loop loop::@23 +loop::@1: scope:[loop] from loop loop::@27 if(true) goto loop::@2 - to:loop::@13 -loop::@2: scope:[loop] from loop::@1 loop::@14 + to:loop::@15 +loop::@2: scope:[loop] from loop::@1 loop::@16 to:loop::@4 -loop::@13: scope:[loop] from loop::@1 +loop::@15: scope:[loop] from loop::@1 to:loop::@3 -loop::@3: scope:[loop] from loop::@13 loop::@24 +loop::@3: scope:[loop] from loop::@15 loop::@28 to:loop::@return -loop::@14: scope:[loop] from +loop::@16: scope:[loop] from to:loop::@2 loop::@4: scope:[loop] from loop::@2 loop::@5 (bool~) loop::$0 ← *((byte*) RASTER) != (byte/word/signed word/dword/signed dword) 255 if((bool~) loop::$0) goto loop::@5 - to:loop::@15 -loop::@5: scope:[loop] from loop::@16 loop::@4 + to:loop::@17 +loop::@5: scope:[loop] from loop::@18 loop::@4 to:loop::@4 -loop::@15: scope:[loop] from loop::@4 +loop::@17: scope:[loop] from loop::@4 to:loop::@6 -loop::@6: scope:[loop] from loop::@15 loop::@17 +loop::@6: scope:[loop] from loop::@17 loop::@19 *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) (byte) loop::y_idx ← (byte) loop::sin_idx (byte/signed word/word/dword/signed dword~) loop::$1 ← (byte) PLEX_COUNT - (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) loop::sy ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:loop::@7 -loop::@16: scope:[loop] from +loop::@18: scope:[loop] from to:loop::@5 -loop::@17: scope:[loop] from +loop::@19: scope:[loop] from to:loop::@6 loop::@7: scope:[loop] from loop::@6 loop::@7 *((byte[PLEX_COUNT]) PLEX_YPOS + (byte) loop::sy) ← *((byte*) YSIN + (byte) loop::y_idx) @@ -2560,61 +948,67 @@ loop::@7: scope:[loop] from loop::@6 loop::@7 (byte) loop::sy ← (byte) loop::sy + rangenext(0,loop::$1) (bool~) loop::$2 ← (byte) loop::sy != rangelast(0,loop::$1) if((bool~) loop::$2) goto loop::@7 - to:loop::@18 -loop::@18: scope:[loop] from loop::@7 + to:loop::@20 +loop::@20: scope:[loop] from loop::@7 (byte) loop::sin_idx ← (byte) loop::sin_idx + (byte/signed byte/word/signed word/dword/signed dword) 1 *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) (void~) loop::$3 ← call plexSort - *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) - (byte) loop::ss ← (byte/signed byte/word/signed word/dword/signed dword) 0 + *((byte*) BORDERCOL) ← (byte) BLACK to:loop::@8 -loop::@8: scope:[loop] from loop::@18 loop::@8 - (void~) loop::$4 ← call plexShowSprite - (byte) loop::ss ← (byte) loop::ss + rangenext(0,7) - (bool~) loop::$5 ← (byte) loop::ss != rangelast(0,7) - if((bool~) loop::$5) goto loop::@8 - to:loop::@19 -loop::@19: scope:[loop] from loop::@8 +loop::@8: scope:[loop] from loop::@20 loop::@9 + (byte~) loop::$4 ← *((byte*) D011) & (byte/word/signed word/dword/signed dword) 128 + (bool~) loop::$5 ← (byte~) loop::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) loop::$5) goto loop::@9 + to:loop::@21 +loop::@9: scope:[loop] from loop::@22 loop::@8 + to:loop::@8 +loop::@21: scope:[loop] from loop::@8 + to:loop::@10 +loop::@10: scope:[loop] from loop::@21 loop::@23 (byte/signed word/word/dword/signed dword~) loop::$6 ← (byte) PLEX_COUNT - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) loop::ss ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) loop::ss ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:loop::@11 +loop::@22: scope:[loop] from to:loop::@9 -loop::@9: scope:[loop] from loop::@12 loop::@19 +loop::@23: scope:[loop] from + to:loop::@10 +loop::@11: scope:[loop] from loop::@10 loop::@14 *((byte*) BORDERCOL) ← (byte) BLACK (byte~) loop::$7 ← call plexShowNextYpos (byte/signed word/word/dword/signed dword~) loop::$8 ← (byte~) loop::$7 - (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) loop::rasterY ← (byte/signed word/word/dword/signed dword~) loop::$8 - to:loop::@10 -loop::@10: scope:[loop] from loop::@11 loop::@9 - (bool~) loop::$9 ← *((byte*) RASTER) < (byte) loop::rasterY - if((bool~) loop::$9) goto loop::@11 - to:loop::@20 -loop::@11: scope:[loop] from loop::@10 loop::@21 - to:loop::@10 -loop::@20: scope:[loop] from loop::@10 to:loop::@12 -loop::@12: scope:[loop] from loop::@20 loop::@22 +loop::@12: scope:[loop] from loop::@11 loop::@13 + (bool~) loop::$9 ← *((byte*) RASTER) < (byte) loop::rasterY + if((bool~) loop::$9) goto loop::@13 + to:loop::@24 +loop::@13: scope:[loop] from loop::@12 loop::@25 + to:loop::@12 +loop::@24: scope:[loop] from loop::@12 + to:loop::@14 +loop::@14: scope:[loop] from loop::@24 loop::@26 *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) (void~) loop::$10 ← call plexShowSprite - (byte) loop::ss ← (byte) loop::ss + rangenext(8,loop::$6) - (bool~) loop::$11 ← (byte) loop::ss != rangelast(8,loop::$6) - if((bool~) loop::$11) goto loop::@9 - to:loop::@23 -loop::@21: scope:[loop] from - to:loop::@11 -loop::@22: scope:[loop] from - to:loop::@12 -loop::@23: scope:[loop] from loop::@12 + (byte) loop::ss ← (byte) loop::ss + rangenext(0,loop::$6) + (bool~) loop::$11 ← (byte) loop::ss != rangelast(0,loop::$6) + if((bool~) loop::$11) goto loop::@11 + to:loop::@27 +loop::@25: scope:[loop] from + to:loop::@13 +loop::@26: scope:[loop] from + to:loop::@14 +loop::@27: scope:[loop] from loop::@14 *((byte*) BORDERCOL) ← (byte) BLACK to:loop::@1 -loop::@24: scope:[loop] from +loop::@28: scope:[loop] from to:loop::@3 loop::@return: scope:[loop] from loop::@3 return to:@return -@31: scope:[] from @30 +@11: scope:[] from @10 call main to:@end -@end: scope:[] from @31 +@end: scope:[] from @11 Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Inlined call call plexSetScreen (byte*) plexInit::screen @@ -2622,28 +1016,8 @@ Inlined call (byte~) loop::$7 ← call plexShowNextYpos Removing unused procedure toD018 Removing unused procedure toDd00 Removing unused procedure vicSelectGfxBank -Removing unused procedure div8s -Removing unused procedure div16s -Removing unused procedure mul8s -Removing unused procedure mul8su -Removing unused procedure sin16s_gen -Removing unused procedure sin16s_gen2 -Removing unused procedure sin8s_gen Removing unused procedure plexSetScreen Removing unused procedure plexShowNextYpos -Removing unused procedure div8u -Removing unused procedure div16u -Removing unused procedure div32u16u -Removing unused procedure divr16s -Removing unused procedure mul16s -Removing unused procedure sin16s -Removing unused procedure sin8s -Removing unused procedure divr8u -Removing unused procedure divr16u -Removing unused procedure mulu16_sel -Removing unused procedure mulu8_sel -Removing unused procedure mul8u -Removing unused procedure mul16u Eliminating unused variable (byte*) PROCPORT_DDR and assignment [0] (byte*) PROCPORT_DDR ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 Eliminating unused variable (byte) PROCPORT_DDR_MEMORY_MASK and assignment [1] (byte) PROCPORT_DDR_MEMORY_MASK ← (byte/signed byte/word/signed word/dword/signed dword) 7 Eliminating unused variable (byte*) PROCPORT and assignment [2] (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -2697,65 +1071,37 @@ Eliminating unused variable (byte) GREY and assignment [61] (byte) GREY ← (byt Eliminating unused variable (byte) LIGHT_GREEN and assignment [62] (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 Eliminating unused variable (byte) LIGHT_BLUE and assignment [63] (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 Eliminating unused variable (byte) LIGHT_GREY and assignment [64] (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 -Eliminating unused variable (byte) rem8u and assignment [65] (byte) rem8u ← (byte/signed byte/word/signed word/dword/signed dword) 0 -Eliminating unused variable (word) rem16u and assignment [66] (word) rem16u ← (byte/signed byte/word/signed word/dword/signed dword) 0 -Eliminating unused variable (signed byte) rem8s and assignment [67] (signed byte) rem8s ← (byte/signed byte/word/signed word/dword/signed dword) 0 -Eliminating unused variable (signed word) rem16s and assignment [68] (signed word) rem16s ← (byte/signed byte/word/signed word/dword/signed dword) 0 -Eliminating unused variable (dword) PI2_u4f28 and assignment [69] (dword) PI2_u4f28 ← (dword/signed dword) 1686629713 -Eliminating unused variable (dword) PI_u4f28 and assignment [70] (dword) PI_u4f28 ← (dword/signed dword) 843314857 -Eliminating unused variable (dword) PI_HALF_u4f28 and assignment [71] (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428 -Eliminating unused variable (word) PI2_u4f12 and assignment [72] (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 -Eliminating unused variable (word) PI_u4f12 and assignment [73] (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868 -Eliminating unused variable (word) PI_HALF_u4f12 and assignment [74] (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434 Eliminating unused variable - keeping the call (void~) main::$0 Eliminating unused variable - keeping the call (void~) main::$1 Eliminating unused variable - keeping the call (void~) init::$2 Eliminating unused variable - keeping the call (void~) loop::$3 -Eliminating unused variable - keeping the call (void~) loop::$4 Eliminating unused variable - keeping the call (void~) loop::$10 Removing empty block @1 Removing empty block @2 -Removing empty block @3 +Removing empty block plexInit::plexSetScreen1_@return +Removing empty block plexInit::@2 Removing empty block @4 Removing empty block @5 Removing empty block @6 -Removing empty block @7 -Removing empty block @8 -Removing empty block @9 -Removing empty block @10 -Removing empty block @11 -Removing empty block @12 -Removing empty block @13 -Removing empty block @14 -Removing empty block @15 -Removing empty block @16 -Removing empty block @17 -Removing empty block @18 -Removing empty block @19 -Removing empty block @20 -Removing empty block @21 -Removing empty block @22 -Removing empty block plexInit::plexSetScreen1_@return -Removing empty block plexInit::@2 -Removing empty block @24 -Removing empty block @25 -Removing empty block @26 Removing empty block plexShowSprite::@5 -Removing empty block @27 -Removing empty block @29 +Removing empty block @7 +Removing empty block @9 Removing empty block init::@4 -Removing empty block @30 -Removing empty block loop::@13 -Removing empty block loop::@3 -Removing empty block loop::@14 +Removing empty block @10 Removing empty block loop::@15 +Removing empty block loop::@3 Removing empty block loop::@16 Removing empty block loop::@17 -Removing empty block loop::plexShowNextYpos1_@1 -Removing empty block loop::@20 +Removing empty block loop::@18 +Removing empty block loop::@19 Removing empty block loop::@21 Removing empty block loop::@22 +Removing empty block loop::@23 +Removing empty block loop::plexShowNextYpos1_@1 Removing empty block loop::@24 +Removing empty block loop::@25 +Removing empty block loop::@26 +Removing empty block loop::@28 PROCEDURE MODIFY VARIABLE ANALYSIS plexInit modifies PLEX_SCREEN_PTR plexSort modifies plex_show_idx @@ -2790,7 +1136,6 @@ Completing Phi functions... Completing Phi functions... Completing Phi functions... Completing Phi functions... -Completing Phi functions... CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from @@ -2806,8 +1151,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 - to:@23 -@23: scope:[] from @begin + to:@3 +@3: scope:[] from @begin (byte) PLEX_COUNT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24 (word[PLEX_COUNT#0]) PLEX_XPOS#0 ← { fill( PLEX_COUNT#0, 0) } (byte[PLEX_COUNT#0]) PLEX_YPOS#0 ← { fill( PLEX_COUNT#0, 0) } @@ -2818,7 +1163,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte) plex_show_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) plex_sprite_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) plex_sprite_msb#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:@28 + to:@8 plexInit: scope:[plexInit] from init (byte*) plexInit::screen#1 ← phi( init/(byte*) plexInit::screen#0 ) (byte*) plexInit::plexSetScreen1_screen#0 ← (byte*) plexInit::screen#1 @@ -2829,12 +1174,12 @@ plexInit::plexSetScreen1: scope:[plexInit] from plexInit (byte*) PLEX_SCREEN_PTR#1 ← (byte*) plexInit::plexSetScreen1_$0#0 to:plexInit::@3 plexInit::@3: scope:[plexInit] from plexInit::plexSetScreen1 - (byte*) PLEX_SCREEN_PTR#23 ← phi( plexInit::plexSetScreen1/(byte*) PLEX_SCREEN_PTR#1 ) + (byte*) PLEX_SCREEN_PTR#22 ← phi( plexInit::plexSetScreen1/(byte*) PLEX_SCREEN_PTR#1 ) (byte/signed word/word/dword/signed dword~) plexInit::$1 ← (byte) PLEX_COUNT#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) plexInit::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:plexInit::@1 plexInit::@1: scope:[plexInit] from plexInit::@1 plexInit::@3 - (byte*) PLEX_SCREEN_PTR#15 ← phi( plexInit::@1/(byte*) PLEX_SCREEN_PTR#15 plexInit::@3/(byte*) PLEX_SCREEN_PTR#23 ) + (byte*) PLEX_SCREEN_PTR#15 ← phi( plexInit::@1/(byte*) PLEX_SCREEN_PTR#15 plexInit::@3/(byte*) PLEX_SCREEN_PTR#22 ) (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::@3/(byte) plexInit::i#0 ) *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 (byte) plexInit::i#1 ← (byte) plexInit::i#2 + rangenext(0,plexInit::$1) @@ -2846,7 +1191,7 @@ plexInit::@return: scope:[plexInit] from plexInit::@1 (byte*) PLEX_SCREEN_PTR#2 ← (byte*) PLEX_SCREEN_PTR#8 return to:@return -plexSort: scope:[plexSort] from loop::@18 +plexSort: scope:[plexSort] from loop::@20 (byte/signed word/word/dword/signed dword~) plexSort::$0 ← (byte) PLEX_COUNT#0 - (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) plexSort::m#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:plexSort::@1 @@ -2897,24 +1242,24 @@ plexSort::@6: scope:[plexSort] from plexSort::@2 (byte) plex_sprite_msb#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:plexSort::@return plexSort::@return: scope:[plexSort] from plexSort::@6 - (byte) plex_sprite_msb#13 ← phi( plexSort::@6/(byte) plex_sprite_msb#1 ) - (byte) plex_sprite_idx#12 ← phi( plexSort::@6/(byte) plex_sprite_idx#1 ) - (byte) plex_show_idx#12 ← phi( plexSort::@6/(byte) plex_show_idx#1 ) - (byte) plex_show_idx#2 ← (byte) plex_show_idx#12 - (byte) plex_sprite_idx#2 ← (byte) plex_sprite_idx#12 - (byte) plex_sprite_msb#2 ← (byte) plex_sprite_msb#13 + (byte) plex_sprite_msb#12 ← phi( plexSort::@6/(byte) plex_sprite_msb#1 ) + (byte) plex_sprite_idx#11 ← phi( plexSort::@6/(byte) plex_sprite_idx#1 ) + (byte) plex_show_idx#11 ← phi( plexSort::@6/(byte) plex_show_idx#1 ) + (byte) plex_show_idx#2 ← (byte) plex_show_idx#11 + (byte) plex_sprite_idx#2 ← (byte) plex_sprite_idx#11 + (byte) plex_sprite_msb#2 ← (byte) plex_sprite_msb#12 return to:@return -plexShowSprite: scope:[plexShowSprite] from loop::@12 loop::@8 - (byte) plex_sprite_msb#25 ← phi( loop::@12/(byte) plex_sprite_msb#30 loop::@8/(byte) plex_sprite_msb#29 ) - (byte*) PLEX_SCREEN_PTR#9 ← phi( loop::@12/(byte*) PLEX_SCREEN_PTR#16 loop::@8/(byte*) PLEX_SCREEN_PTR#17 ) - (byte) plex_show_idx#13 ← phi( loop::@12/(byte) plex_show_idx#24 loop::@8/(byte) plex_show_idx#25 ) - (byte) plex_sprite_idx#13 ← phi( loop::@12/(byte) plex_sprite_idx#23 loop::@8/(byte) plex_sprite_idx#24 ) - (byte~) plexShowSprite::$0 ← (byte) plex_sprite_idx#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 +plexShowSprite: scope:[plexShowSprite] from loop::@14 + (byte) plex_sprite_msb#23 ← phi( loop::@14/(byte) plex_sprite_msb#27 ) + (byte*) PLEX_SCREEN_PTR#9 ← phi( loop::@14/(byte*) PLEX_SCREEN_PTR#16 ) + (byte) plex_show_idx#12 ← phi( loop::@14/(byte) plex_show_idx#22 ) + (byte) plex_sprite_idx#12 ← phi( loop::@14/(byte) plex_sprite_idx#21 ) + (byte~) plexShowSprite::$0 ← (byte) plex_sprite_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte~) plexShowSprite::$0 - *((byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) - *((byte*) PLEX_SCREEN_PTR#9 + (byte) plex_sprite_idx#13) ← *((byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) - (byte~) plexShowSprite::$1 ← *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13) << (byte/signed byte/word/signed word/dword/signed dword) 1 + *((byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#12)) + *((byte*) PLEX_SCREEN_PTR#9 + (byte) plex_sprite_idx#12) ← *((byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#12)) + (byte~) plexShowSprite::$1 ← *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#12) << (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) plexShowSprite::xpos_idx#0 ← (byte~) plexShowSprite::$1 (byte~) plexShowSprite::$2 ← < *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) *((byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 @@ -2923,59 +1268,59 @@ plexShowSprite: scope:[plexShowSprite] from loop::@12 loop::@8 if((bool~) plexShowSprite::$4) goto plexShowSprite::@1 to:plexShowSprite::@4 plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite - (byte) plex_show_idx#26 ← phi( plexShowSprite/(byte) plex_show_idx#13 ) - (byte) plex_sprite_idx#25 ← phi( plexShowSprite/(byte) plex_sprite_idx#13 ) - (byte) plex_sprite_msb#14 ← phi( plexShowSprite/(byte) plex_sprite_msb#25 ) - *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#14 + (byte) plex_show_idx#23 ← phi( plexShowSprite/(byte) plex_show_idx#12 ) + (byte) plex_sprite_idx#22 ← phi( plexShowSprite/(byte) plex_sprite_idx#12 ) + (byte) plex_sprite_msb#13 ← phi( plexShowSprite/(byte) plex_sprite_msb#23 ) + *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#13 to:plexShowSprite::@2 plexShowSprite::@4: scope:[plexShowSprite] from plexShowSprite - (byte) plex_show_idx#27 ← phi( plexShowSprite/(byte) plex_show_idx#13 ) - (byte) plex_sprite_idx#26 ← phi( plexShowSprite/(byte) plex_sprite_idx#13 ) - (byte) plex_sprite_msb#15 ← phi( plexShowSprite/(byte) plex_sprite_msb#25 ) - (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#15 + (byte) plex_show_idx#24 ← phi( plexShowSprite/(byte) plex_show_idx#12 ) + (byte) plex_sprite_idx#23 ← phi( plexShowSprite/(byte) plex_sprite_idx#12 ) + (byte) plex_sprite_msb#14 ← phi( plexShowSprite/(byte) plex_sprite_msb#23 ) + (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#14 *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 to:plexShowSprite::@2 plexShowSprite::@2: scope:[plexShowSprite] from plexShowSprite::@1 plexShowSprite::@4 - (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@1/(byte) plex_sprite_msb#14 plexShowSprite::@4/(byte) plex_sprite_msb#15 ) - (byte) plex_show_idx#14 ← phi( plexShowSprite::@1/(byte) plex_show_idx#26 plexShowSprite::@4/(byte) plex_show_idx#27 ) - (byte) plex_sprite_idx#14 ← phi( plexShowSprite::@1/(byte) plex_sprite_idx#25 plexShowSprite::@4/(byte) plex_sprite_idx#26 ) - (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#14 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plex_sprite_msb#15 ← phi( plexShowSprite::@1/(byte) plex_sprite_msb#13 plexShowSprite::@4/(byte) plex_sprite_msb#14 ) + (byte) plex_show_idx#13 ← phi( plexShowSprite::@1/(byte) plex_show_idx#23 plexShowSprite::@4/(byte) plex_show_idx#24 ) + (byte) plex_sprite_idx#13 ← phi( plexShowSprite::@1/(byte) plex_sprite_idx#22 plexShowSprite::@4/(byte) plex_sprite_idx#23 ) + (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#13 + (byte/signed byte/word/signed word/dword/signed dword) 1 (byte/word/dword~) plexShowSprite::$7 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) plex_sprite_idx#3 ← (byte/word/dword~) plexShowSprite::$7 - (byte) plex_show_idx#3 ← ++ (byte) plex_show_idx#14 - (byte) plex_sprite_msb#3 ← (byte) plex_sprite_msb#16 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plex_show_idx#3 ← ++ (byte) plex_show_idx#13 + (byte) plex_sprite_msb#3 ← (byte) plex_sprite_msb#15 << (byte/signed byte/word/signed word/dword/signed dword) 1 (bool~) plexShowSprite::$8 ← (byte) plex_sprite_msb#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) plexShowSprite::$9 ← ! (bool~) plexShowSprite::$8 if((bool~) plexShowSprite::$9) goto plexShowSprite::@3 to:plexShowSprite::@6 plexShowSprite::@3: scope:[plexShowSprite] from plexShowSprite::@2 - (byte) plex_sprite_msb#26 ← phi( plexShowSprite::@2/(byte) plex_sprite_msb#3 ) - (byte) plex_show_idx#28 ← phi( plexShowSprite::@2/(byte) plex_show_idx#3 ) - (byte) plex_sprite_idx#27 ← phi( plexShowSprite::@2/(byte) plex_sprite_idx#3 ) + (byte) plex_sprite_msb#24 ← phi( plexShowSprite::@2/(byte) plex_sprite_msb#3 ) + (byte) plex_show_idx#25 ← phi( plexShowSprite::@2/(byte) plex_show_idx#3 ) + (byte) plex_sprite_idx#24 ← phi( plexShowSprite::@2/(byte) plex_sprite_idx#3 ) to:plexShowSprite::@return plexShowSprite::@6: scope:[plexShowSprite] from plexShowSprite::@2 - (byte) plex_show_idx#29 ← phi( plexShowSprite::@2/(byte) plex_show_idx#3 ) - (byte) plex_sprite_idx#28 ← phi( plexShowSprite::@2/(byte) plex_sprite_idx#3 ) + (byte) plex_show_idx#26 ← phi( plexShowSprite::@2/(byte) plex_show_idx#3 ) + (byte) plex_sprite_idx#25 ← phi( plexShowSprite::@2/(byte) plex_sprite_idx#3 ) (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:plexShowSprite::@return plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@3 plexShowSprite::@6 - (byte) plex_sprite_msb#17 ← phi( plexShowSprite::@3/(byte) plex_sprite_msb#26 plexShowSprite::@6/(byte) plex_sprite_msb#4 ) - (byte) plex_show_idx#15 ← phi( plexShowSprite::@3/(byte) plex_show_idx#28 plexShowSprite::@6/(byte) plex_show_idx#29 ) - (byte) plex_sprite_idx#15 ← phi( plexShowSprite::@3/(byte) plex_sprite_idx#27 plexShowSprite::@6/(byte) plex_sprite_idx#28 ) - (byte) plex_sprite_idx#4 ← (byte) plex_sprite_idx#15 - (byte) plex_show_idx#4 ← (byte) plex_show_idx#15 - (byte) plex_sprite_msb#5 ← (byte) plex_sprite_msb#17 + (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@3/(byte) plex_sprite_msb#24 plexShowSprite::@6/(byte) plex_sprite_msb#4 ) + (byte) plex_show_idx#14 ← phi( plexShowSprite::@3/(byte) plex_show_idx#25 plexShowSprite::@6/(byte) plex_show_idx#26 ) + (byte) plex_sprite_idx#14 ← phi( plexShowSprite::@3/(byte) plex_sprite_idx#24 plexShowSprite::@6/(byte) plex_sprite_idx#25 ) + (byte) plex_sprite_idx#4 ← (byte) plex_sprite_idx#14 + (byte) plex_show_idx#4 ← (byte) plex_show_idx#14 + (byte) plex_sprite_msb#5 ← (byte) plex_sprite_msb#16 return to:@return -@28: scope:[] from @23 - (byte) plex_sprite_msb#38 ← phi( @23/(byte) plex_sprite_msb#0 ) - (byte) plex_sprite_idx#38 ← phi( @23/(byte) plex_sprite_idx#0 ) - (byte) plex_show_idx#41 ← phi( @23/(byte) plex_show_idx#0 ) - (byte*) PLEX_SCREEN_PTR#28 ← phi( @23/(byte*) PLEX_SCREEN_PTR#0 ) +@8: scope:[] from @3 + (byte) plex_sprite_msb#35 ← phi( @3/(byte) plex_sprite_msb#0 ) + (byte) plex_sprite_idx#35 ← phi( @3/(byte) plex_sprite_idx#0 ) + (byte) plex_show_idx#38 ← phi( @3/(byte) plex_show_idx#0 ) + (byte*) PLEX_SCREEN_PTR#25 ← phi( @3/(byte*) PLEX_SCREEN_PTR#0 ) (byte*) SPRITE#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) YSIN#0 ← ((byte*)) (word/signed word/dword/signed dword) 8448 - kickasm(location (byte*) YSIN#0) {{ .var min = 51 + kickasm(location (byte*) YSIN#0) {{ .var min = 50 .var max = 250-21 .var ampl = max-min; .for(var i=0;i<256;i++) @@ -2986,50 +1331,50 @@ plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@3 plexSho .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} - to:@31 -main: scope:[main] from @31 - (byte*) YSIN#11 ← phi( @31/(byte*) YSIN#13 ) - (byte*) SPRITE#4 ← phi( @31/(byte*) SPRITE#5 ) - (byte) plex_sprite_msb#33 ← phi( @31/(byte) plex_sprite_msb#32 ) - (byte) plex_sprite_idx#33 ← phi( @31/(byte) plex_sprite_idx#32 ) - (byte) plex_show_idx#35 ← phi( @31/(byte) plex_show_idx#34 ) - (byte*) SCREEN#2 ← phi( @31/(byte*) SCREEN#3 ) - (byte*) PLEX_SCREEN_PTR#18 ← phi( @31/(byte*) PLEX_SCREEN_PTR#22 ) + to:@11 +main: scope:[main] from @11 + (byte*) YSIN#11 ← phi( @11/(byte*) YSIN#13 ) + (byte*) SPRITE#4 ← phi( @11/(byte*) SPRITE#5 ) + (byte) plex_sprite_msb#30 ← phi( @11/(byte) plex_sprite_msb#29 ) + (byte) plex_sprite_idx#30 ← phi( @11/(byte) plex_sprite_idx#29 ) + (byte) plex_show_idx#32 ← phi( @11/(byte) plex_show_idx#31 ) + (byte*) SCREEN#2 ← phi( @11/(byte*) SCREEN#3 ) + (byte*) PLEX_SCREEN_PTR#17 ← phi( @11/(byte*) PLEX_SCREEN_PTR#21 ) asm { sei } call init to:main::@1 main::@1: scope:[main] from main (byte*) YSIN#9 ← phi( main/(byte*) YSIN#11 ) - (byte) plex_sprite_msb#27 ← phi( main/(byte) plex_sprite_msb#33 ) - (byte) plex_sprite_idx#29 ← phi( main/(byte) plex_sprite_idx#33 ) - (byte) plex_show_idx#30 ← phi( main/(byte) plex_show_idx#35 ) + (byte) plex_sprite_msb#25 ← phi( main/(byte) plex_sprite_msb#30 ) + (byte) plex_sprite_idx#26 ← phi( main/(byte) plex_sprite_idx#30 ) + (byte) plex_show_idx#27 ← phi( main/(byte) plex_show_idx#32 ) (byte*) PLEX_SCREEN_PTR#10 ← phi( main/(byte*) PLEX_SCREEN_PTR#6 ) (byte*) PLEX_SCREEN_PTR#3 ← (byte*) PLEX_SCREEN_PTR#10 call loop to:main::@2 main::@2: scope:[main] from main::@1 - (byte*) PLEX_SCREEN_PTR#19 ← phi( main::@1/(byte*) PLEX_SCREEN_PTR#3 ) - (byte) plex_sprite_msb#18 ← phi( main::@1/(byte) plex_sprite_msb#11 ) - (byte) plex_sprite_idx#16 ← phi( main::@1/(byte) plex_sprite_idx#10 ) - (byte) plex_show_idx#16 ← phi( main::@1/(byte) plex_show_idx#10 ) - (byte) plex_show_idx#5 ← (byte) plex_show_idx#16 - (byte) plex_sprite_idx#5 ← (byte) plex_sprite_idx#16 - (byte) plex_sprite_msb#6 ← (byte) plex_sprite_msb#18 + (byte*) PLEX_SCREEN_PTR#18 ← phi( main::@1/(byte*) PLEX_SCREEN_PTR#3 ) + (byte) plex_sprite_msb#17 ← phi( main::@1/(byte) plex_sprite_msb#10 ) + (byte) plex_sprite_idx#15 ← phi( main::@1/(byte) plex_sprite_idx#9 ) + (byte) plex_show_idx#15 ← phi( main::@1/(byte) plex_show_idx#9 ) + (byte) plex_show_idx#5 ← (byte) plex_show_idx#15 + (byte) plex_sprite_idx#5 ← (byte) plex_sprite_idx#15 + (byte) plex_sprite_msb#6 ← (byte) plex_sprite_msb#17 to:main::@return main::@return: scope:[main] from main::@2 - (byte) plex_sprite_msb#19 ← phi( main::@2/(byte) plex_sprite_msb#6 ) - (byte) plex_sprite_idx#17 ← phi( main::@2/(byte) plex_sprite_idx#5 ) - (byte) plex_show_idx#17 ← phi( main::@2/(byte) plex_show_idx#5 ) - (byte*) PLEX_SCREEN_PTR#11 ← phi( main::@2/(byte*) PLEX_SCREEN_PTR#19 ) + (byte) plex_sprite_msb#18 ← phi( main::@2/(byte) plex_sprite_msb#6 ) + (byte) plex_sprite_idx#16 ← phi( main::@2/(byte) plex_sprite_idx#5 ) + (byte) plex_show_idx#16 ← phi( main::@2/(byte) plex_show_idx#5 ) + (byte*) PLEX_SCREEN_PTR#11 ← phi( main::@2/(byte*) PLEX_SCREEN_PTR#18 ) (byte*) PLEX_SCREEN_PTR#4 ← (byte*) PLEX_SCREEN_PTR#11 - (byte) plex_show_idx#6 ← (byte) plex_show_idx#17 - (byte) plex_sprite_idx#6 ← (byte) plex_sprite_idx#17 - (byte) plex_sprite_msb#7 ← (byte) plex_sprite_msb#19 + (byte) plex_show_idx#6 ← (byte) plex_show_idx#16 + (byte) plex_sprite_idx#6 ← (byte) plex_sprite_idx#16 + (byte) plex_sprite_msb#7 ← (byte) plex_sprite_msb#18 return to:@return init: scope:[init] from main (byte*) SPRITE#3 ← phi( main/(byte*) SPRITE#4 ) - (byte*) PLEX_SCREEN_PTR#20 ← phi( main/(byte*) PLEX_SCREEN_PTR#18 ) + (byte*) PLEX_SCREEN_PTR#19 ← phi( main/(byte*) PLEX_SCREEN_PTR#17 ) (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 ) (byte~) init::$0 ← (byte) VIC_DEN#0 | (byte) VIC_RSEL#0 (byte/word/dword~) init::$1 ← (byte~) init::$0 | (byte/signed byte/word/signed word/dword/signed dword) 3 @@ -3046,7 +1391,7 @@ init::@5: scope:[init] from init (byte) init::sx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:init::@1 init::@1: scope:[init] from init::@1 init::@5 - (byte*) PLEX_SCREEN_PTR#29 ← phi( init::@1/(byte*) PLEX_SCREEN_PTR#29 init::@5/(byte*) PLEX_SCREEN_PTR#5 ) + (byte*) PLEX_SCREEN_PTR#26 ← phi( init::@1/(byte*) PLEX_SCREEN_PTR#26 init::@5/(byte*) PLEX_SCREEN_PTR#5 ) (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init::@5/(word) init::xp#0 ) (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init::@5/(byte) init::sx#0 ) (byte*) SPRITE#1 ← phi( init::@1/(byte*) SPRITE#1 init::@5/(byte*) SPRITE#2 ) @@ -3061,12 +1406,12 @@ init::@1: scope:[init] from init::@1 init::@5 if((bool~) init::$7) goto init::@1 to:init::@3 init::@3: scope:[init] from init::@1 - (byte*) PLEX_SCREEN_PTR#24 ← phi( init::@1/(byte*) PLEX_SCREEN_PTR#29 ) + (byte*) PLEX_SCREEN_PTR#23 ← phi( init::@1/(byte*) PLEX_SCREEN_PTR#26 ) *((byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 (byte) init::ss#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:init::@2 init::@2: scope:[init] from init::@2 init::@3 - (byte*) PLEX_SCREEN_PTR#21 ← phi( init::@2/(byte*) PLEX_SCREEN_PTR#21 init::@3/(byte*) PLEX_SCREEN_PTR#24 ) + (byte*) PLEX_SCREEN_PTR#20 ← phi( init::@2/(byte*) PLEX_SCREEN_PTR#20 init::@3/(byte*) PLEX_SCREEN_PTR#23 ) (byte) init::ss#2 ← phi( init::@2/(byte) init::ss#1 init::@3/(byte) init::ss#0 ) *((byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (byte) GREEN#0 (byte) init::ss#1 ← (byte) init::ss#2 + rangenext(0,7) @@ -3074,58 +1419,58 @@ init::@2: scope:[init] from init::@2 init::@3 if((bool~) init::$8) goto init::@2 to:init::@return init::@return: scope:[init] from init::@2 - (byte*) PLEX_SCREEN_PTR#13 ← phi( init::@2/(byte*) PLEX_SCREEN_PTR#21 ) + (byte*) PLEX_SCREEN_PTR#13 ← phi( init::@2/(byte*) PLEX_SCREEN_PTR#20 ) (byte*) PLEX_SCREEN_PTR#6 ← (byte*) PLEX_SCREEN_PTR#13 return to:@return loop: scope:[loop] from main::@1 (byte*) PLEX_SCREEN_PTR#44 ← phi( main::@1/(byte*) PLEX_SCREEN_PTR#3 ) (byte*) YSIN#7 ← phi( main::@1/(byte*) YSIN#9 ) - (byte) plex_sprite_msb#34 ← phi( main::@1/(byte) plex_sprite_msb#27 ) - (byte) plex_sprite_idx#34 ← phi( main::@1/(byte) plex_sprite_idx#29 ) - (byte) plex_show_idx#36 ← phi( main::@1/(byte) plex_show_idx#30 ) + (byte) plex_sprite_msb#31 ← phi( main::@1/(byte) plex_sprite_msb#25 ) + (byte) plex_sprite_idx#31 ← phi( main::@1/(byte) plex_sprite_idx#26 ) + (byte) plex_show_idx#33 ← phi( main::@1/(byte) plex_show_idx#27 ) (byte) loop::sin_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:loop::@1 -loop::@1: scope:[loop] from loop loop::@23 - (byte*) PLEX_SCREEN_PTR#43 ← phi( loop/(byte*) PLEX_SCREEN_PTR#44 loop::@23/(byte*) PLEX_SCREEN_PTR#45 ) - (byte*) YSIN#6 ← phi( loop/(byte*) YSIN#7 loop::@23/(byte*) YSIN#8 ) - (byte) loop::sin_idx#8 ← phi( loop/(byte) loop::sin_idx#0 loop::@23/(byte) loop::sin_idx#9 ) - (byte) plex_sprite_msb#31 ← phi( loop/(byte) plex_sprite_msb#34 loop::@23/(byte) plex_sprite_msb#35 ) - (byte) plex_sprite_idx#31 ← phi( loop/(byte) plex_sprite_idx#34 loop::@23/(byte) plex_sprite_idx#35 ) - (byte) plex_show_idx#33 ← phi( loop/(byte) plex_show_idx#36 loop::@23/(byte) plex_show_idx#37 ) +loop::@1: scope:[loop] from loop loop::@27 + (byte*) PLEX_SCREEN_PTR#43 ← phi( loop/(byte*) PLEX_SCREEN_PTR#44 loop::@27/(byte*) PLEX_SCREEN_PTR#45 ) + (byte*) YSIN#6 ← phi( loop/(byte*) YSIN#7 loop::@27/(byte*) YSIN#8 ) + (byte) loop::sin_idx#8 ← phi( loop/(byte) loop::sin_idx#0 loop::@27/(byte) loop::sin_idx#9 ) + (byte) plex_sprite_msb#28 ← phi( loop/(byte) plex_sprite_msb#31 loop::@27/(byte) plex_sprite_msb#32 ) + (byte) plex_sprite_idx#28 ← phi( loop/(byte) plex_sprite_idx#31 loop::@27/(byte) plex_sprite_idx#32 ) + (byte) plex_show_idx#30 ← phi( loop/(byte) plex_show_idx#33 loop::@27/(byte) plex_show_idx#34 ) if(true) goto loop::@2 to:loop::@return loop::@2: scope:[loop] from loop::@1 - (byte*) PLEX_SCREEN_PTR#39 ← phi( loop::@1/(byte*) PLEX_SCREEN_PTR#43 ) - (byte) plex_sprite_msb#44 ← phi( loop::@1/(byte) plex_sprite_msb#31 ) - (byte) plex_sprite_idx#44 ← phi( loop::@1/(byte) plex_sprite_idx#31 ) - (byte) plex_show_idx#47 ← phi( loop::@1/(byte) plex_show_idx#33 ) + (byte*) PLEX_SCREEN_PTR#41 ← phi( loop::@1/(byte*) PLEX_SCREEN_PTR#43 ) + (byte) plex_sprite_msb#41 ← phi( loop::@1/(byte) plex_sprite_msb#28 ) + (byte) plex_sprite_idx#41 ← phi( loop::@1/(byte) plex_sprite_idx#28 ) + (byte) plex_show_idx#46 ← phi( loop::@1/(byte) plex_show_idx#30 ) (byte*) YSIN#4 ← phi( loop::@1/(byte*) YSIN#6 ) (byte) loop::sin_idx#6 ← phi( loop::@1/(byte) loop::sin_idx#8 ) to:loop::@4 loop::@4: scope:[loop] from loop::@2 loop::@5 - (byte*) PLEX_SCREEN_PTR#37 ← phi( loop::@2/(byte*) PLEX_SCREEN_PTR#39 loop::@5/(byte*) PLEX_SCREEN_PTR#40 ) - (byte) plex_sprite_msb#42 ← phi( loop::@2/(byte) plex_sprite_msb#44 loop::@5/(byte) plex_sprite_msb#45 ) - (byte) plex_sprite_idx#42 ← phi( loop::@2/(byte) plex_sprite_idx#44 loop::@5/(byte) plex_sprite_idx#45 ) - (byte) plex_show_idx#45 ← phi( loop::@2/(byte) plex_show_idx#47 loop::@5/(byte) plex_show_idx#48 ) + (byte*) PLEX_SCREEN_PTR#40 ← phi( loop::@2/(byte*) PLEX_SCREEN_PTR#41 loop::@5/(byte*) PLEX_SCREEN_PTR#42 ) + (byte) plex_sprite_msb#39 ← phi( loop::@2/(byte) plex_sprite_msb#41 loop::@5/(byte) plex_sprite_msb#42 ) + (byte) plex_sprite_idx#39 ← phi( loop::@2/(byte) plex_sprite_idx#41 loop::@5/(byte) plex_sprite_idx#42 ) + (byte) plex_show_idx#43 ← phi( loop::@2/(byte) plex_show_idx#46 loop::@5/(byte) plex_show_idx#47 ) (byte*) YSIN#3 ← phi( loop::@2/(byte*) YSIN#4 loop::@5/(byte*) YSIN#5 ) (byte) loop::sin_idx#4 ← phi( loop::@2/(byte) loop::sin_idx#6 loop::@5/(byte) loop::sin_idx#7 ) (bool~) loop::$0 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255 if((bool~) loop::$0) goto loop::@5 to:loop::@6 loop::@5: scope:[loop] from loop::@4 - (byte*) PLEX_SCREEN_PTR#40 ← phi( loop::@4/(byte*) PLEX_SCREEN_PTR#37 ) - (byte) plex_sprite_msb#45 ← phi( loop::@4/(byte) plex_sprite_msb#42 ) - (byte) plex_sprite_idx#45 ← phi( loop::@4/(byte) plex_sprite_idx#42 ) - (byte) plex_show_idx#48 ← phi( loop::@4/(byte) plex_show_idx#45 ) + (byte*) PLEX_SCREEN_PTR#42 ← phi( loop::@4/(byte*) PLEX_SCREEN_PTR#40 ) + (byte) plex_sprite_msb#42 ← phi( loop::@4/(byte) plex_sprite_msb#39 ) + (byte) plex_sprite_idx#42 ← phi( loop::@4/(byte) plex_sprite_idx#39 ) + (byte) plex_show_idx#47 ← phi( loop::@4/(byte) plex_show_idx#43 ) (byte*) YSIN#5 ← phi( loop::@4/(byte*) YSIN#3 ) (byte) loop::sin_idx#7 ← phi( loop::@4/(byte) loop::sin_idx#4 ) to:loop::@4 loop::@6: scope:[loop] from loop::@4 - (byte*) PLEX_SCREEN_PTR#35 ← phi( loop::@4/(byte*) PLEX_SCREEN_PTR#37 ) - (byte) plex_sprite_msb#39 ← phi( loop::@4/(byte) plex_sprite_msb#42 ) - (byte) plex_sprite_idx#39 ← phi( loop::@4/(byte) plex_sprite_idx#42 ) - (byte) plex_show_idx#42 ← phi( loop::@4/(byte) plex_show_idx#45 ) + (byte*) PLEX_SCREEN_PTR#39 ← phi( loop::@4/(byte*) PLEX_SCREEN_PTR#40 ) + (byte) plex_sprite_msb#36 ← phi( loop::@4/(byte) plex_sprite_msb#39 ) + (byte) plex_sprite_idx#36 ← phi( loop::@4/(byte) plex_sprite_idx#39 ) + (byte) plex_show_idx#39 ← phi( loop::@4/(byte) plex_show_idx#43 ) (byte*) YSIN#2 ← phi( loop::@4/(byte*) YSIN#3 ) (byte) loop::sin_idx#2 ← phi( loop::@4/(byte) loop::sin_idx#4 ) *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) @@ -3134,10 +1479,10 @@ loop::@6: scope:[loop] from loop::@4 (byte) loop::sy#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:loop::@7 loop::@7: scope:[loop] from loop::@6 loop::@7 - (byte*) PLEX_SCREEN_PTR#33 ← phi( loop::@6/(byte*) PLEX_SCREEN_PTR#35 loop::@7/(byte*) PLEX_SCREEN_PTR#33 ) - (byte) plex_sprite_msb#36 ← phi( loop::@6/(byte) plex_sprite_msb#39 loop::@7/(byte) plex_sprite_msb#36 ) - (byte) plex_sprite_idx#36 ← phi( loop::@6/(byte) plex_sprite_idx#39 loop::@7/(byte) plex_sprite_idx#36 ) - (byte) plex_show_idx#38 ← phi( loop::@6/(byte) plex_show_idx#42 loop::@7/(byte) plex_show_idx#38 ) + (byte*) PLEX_SCREEN_PTR#38 ← phi( loop::@6/(byte*) PLEX_SCREEN_PTR#39 loop::@7/(byte*) PLEX_SCREEN_PTR#38 ) + (byte) plex_sprite_msb#33 ← phi( loop::@6/(byte) plex_sprite_msb#36 loop::@7/(byte) plex_sprite_msb#33 ) + (byte) plex_sprite_idx#33 ← phi( loop::@6/(byte) plex_sprite_idx#36 loop::@7/(byte) plex_sprite_idx#33 ) + (byte) plex_show_idx#35 ← phi( loop::@6/(byte) plex_show_idx#39 loop::@7/(byte) plex_show_idx#35 ) (byte) loop::sin_idx#5 ← phi( loop::@6/(byte) loop::sin_idx#2 loop::@7/(byte) loop::sin_idx#5 ) (byte) loop::sy#2 ← phi( loop::@6/(byte) loop::sy#0 loop::@7/(byte) loop::sy#1 ) (byte) loop::y_idx#2 ← phi( loop::@6/(byte) loop::y_idx#0 loop::@7/(byte) loop::y_idx#1 ) @@ -3147,204 +1492,197 @@ loop::@7: scope:[loop] from loop::@6 loop::@7 (byte) loop::sy#1 ← (byte) loop::sy#2 + rangenext(0,loop::$1) (bool~) loop::$2 ← (byte) loop::sy#1 != rangelast(0,loop::$1) if((bool~) loop::$2) goto loop::@7 - to:loop::@18 -loop::@18: scope:[loop] from loop::@7 + to:loop::@20 +loop::@20: scope:[loop] from loop::@7 (byte*) YSIN#24 ← phi( loop::@7/(byte*) YSIN#1 ) - (byte*) PLEX_SCREEN_PTR#30 ← phi( loop::@7/(byte*) PLEX_SCREEN_PTR#33 ) - (byte) plex_sprite_msb#28 ← phi( loop::@7/(byte) plex_sprite_msb#36 ) - (byte) plex_sprite_idx#30 ← phi( loop::@7/(byte) plex_sprite_idx#36 ) - (byte) plex_show_idx#31 ← phi( loop::@7/(byte) plex_show_idx#38 ) + (byte*) PLEX_SCREEN_PTR#37 ← phi( loop::@7/(byte*) PLEX_SCREEN_PTR#38 ) + (byte) plex_sprite_msb#26 ← phi( loop::@7/(byte) plex_sprite_msb#33 ) + (byte) plex_sprite_idx#27 ← phi( loop::@7/(byte) plex_sprite_idx#33 ) + (byte) plex_show_idx#28 ← phi( loop::@7/(byte) plex_show_idx#35 ) (byte) loop::sin_idx#3 ← phi( loop::@7/(byte) loop::sin_idx#5 ) (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) call plexSort - to:loop::@26 -loop::@26: scope:[loop] from loop::@18 - (byte*) YSIN#23 ← phi( loop::@18/(byte*) YSIN#24 ) - (byte) loop::sin_idx#21 ← phi( loop::@18/(byte) loop::sin_idx#1 ) - (byte*) PLEX_SCREEN_PTR#25 ← phi( loop::@18/(byte*) PLEX_SCREEN_PTR#30 ) - (byte) plex_sprite_msb#20 ← phi( loop::@18/(byte) plex_sprite_msb#2 ) - (byte) plex_sprite_idx#18 ← phi( loop::@18/(byte) plex_sprite_idx#2 ) - (byte) plex_show_idx#18 ← phi( loop::@18/(byte) plex_show_idx#2 ) - (byte) plex_show_idx#7 ← (byte) plex_show_idx#18 - (byte) plex_sprite_idx#7 ← (byte) plex_sprite_idx#18 - (byte) plex_sprite_msb#8 ← (byte) plex_sprite_msb#20 - *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) - (byte) loop::ss#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:loop::@30 +loop::@30: scope:[loop] from loop::@20 + (byte*) YSIN#22 ← phi( loop::@20/(byte*) YSIN#24 ) + (byte) loop::sin_idx#20 ← phi( loop::@20/(byte) loop::sin_idx#1 ) + (byte*) PLEX_SCREEN_PTR#35 ← phi( loop::@20/(byte*) PLEX_SCREEN_PTR#37 ) + (byte) plex_sprite_msb#19 ← phi( loop::@20/(byte) plex_sprite_msb#2 ) + (byte) plex_sprite_idx#17 ← phi( loop::@20/(byte) plex_sprite_idx#2 ) + (byte) plex_show_idx#17 ← phi( loop::@20/(byte) plex_show_idx#2 ) + (byte) plex_show_idx#7 ← (byte) plex_show_idx#17 + (byte) plex_sprite_idx#7 ← (byte) plex_sprite_idx#17 + (byte) plex_sprite_msb#8 ← (byte) plex_sprite_msb#19 + *((byte*) BORDERCOL#0) ← (byte) BLACK#0 to:loop::@8 -loop::@8: scope:[loop] from loop::@26 loop::@27 - (byte*) YSIN#22 ← phi( loop::@26/(byte*) YSIN#23 loop::@27/(byte*) YSIN#21 ) - (byte) loop::sin_idx#20 ← phi( loop::@26/(byte) loop::sin_idx#21 loop::@27/(byte) loop::sin_idx#19 ) - (byte) loop::ss#6 ← phi( loop::@26/(byte) loop::ss#0 loop::@27/(byte) loop::ss#1 ) - (byte) plex_sprite_msb#29 ← phi( loop::@26/(byte) plex_sprite_msb#8 loop::@27/(byte) plex_sprite_msb#9 ) - (byte*) PLEX_SCREEN_PTR#17 ← phi( loop::@26/(byte*) PLEX_SCREEN_PTR#25 loop::@27/(byte*) PLEX_SCREEN_PTR#26 ) - (byte) plex_show_idx#25 ← phi( loop::@26/(byte) plex_show_idx#7 loop::@27/(byte) plex_show_idx#8 ) - (byte) plex_sprite_idx#24 ← phi( loop::@26/(byte) plex_sprite_idx#7 loop::@27/(byte) plex_sprite_idx#8 ) - call plexShowSprite - to:loop::@27 -loop::@27: scope:[loop] from loop::@8 - (byte*) YSIN#21 ← phi( loop::@8/(byte*) YSIN#22 ) - (byte) loop::sin_idx#19 ← phi( loop::@8/(byte) loop::sin_idx#20 ) - (byte*) PLEX_SCREEN_PTR#26 ← phi( loop::@8/(byte*) PLEX_SCREEN_PTR#17 ) - (byte) loop::ss#4 ← phi( loop::@8/(byte) loop::ss#6 ) - (byte) plex_sprite_msb#21 ← phi( loop::@8/(byte) plex_sprite_msb#5 ) - (byte) plex_show_idx#19 ← phi( loop::@8/(byte) plex_show_idx#4 ) - (byte) plex_sprite_idx#19 ← phi( loop::@8/(byte) plex_sprite_idx#4 ) - (byte) plex_sprite_idx#8 ← (byte) plex_sprite_idx#19 - (byte) plex_show_idx#8 ← (byte) plex_show_idx#19 - (byte) plex_sprite_msb#9 ← (byte) plex_sprite_msb#21 - (byte) loop::ss#1 ← (byte) loop::ss#4 + rangenext(0,7) - (bool~) loop::$5 ← (byte) loop::ss#1 != rangelast(0,7) - if((bool~) loop::$5) goto loop::@8 - to:loop::@19 -loop::@19: scope:[loop] from loop::@27 - (byte*) YSIN#20 ← phi( loop::@27/(byte*) YSIN#21 ) - (byte) loop::sin_idx#18 ← phi( loop::@27/(byte) loop::sin_idx#19 ) - (byte) plex_sprite_msb#48 ← phi( loop::@27/(byte) plex_sprite_msb#9 ) - (byte*) PLEX_SCREEN_PTR#41 ← phi( loop::@27/(byte*) PLEX_SCREEN_PTR#26 ) - (byte) plex_sprite_idx#48 ← phi( loop::@27/(byte) plex_sprite_idx#8 ) - (byte) plex_show_idx#39 ← phi( loop::@27/(byte) plex_show_idx#8 ) +loop::@8: scope:[loop] from loop::@30 loop::@9 + (byte*) YSIN#21 ← phi( loop::@30/(byte*) YSIN#22 loop::@9/(byte*) YSIN#23 ) + (byte) loop::sin_idx#19 ← phi( loop::@30/(byte) loop::sin_idx#20 loop::@9/(byte) loop::sin_idx#21 ) + (byte) plex_sprite_msb#46 ← phi( loop::@30/(byte) plex_sprite_msb#8 loop::@9/(byte) plex_sprite_msb#47 ) + (byte*) PLEX_SCREEN_PTR#34 ← phi( loop::@30/(byte*) PLEX_SCREEN_PTR#35 loop::@9/(byte*) PLEX_SCREEN_PTR#36 ) + (byte) plex_sprite_idx#46 ← phi( loop::@30/(byte) plex_sprite_idx#7 loop::@9/(byte) plex_sprite_idx#47 ) + (byte) plex_show_idx#40 ← phi( loop::@30/(byte) plex_show_idx#7 loop::@9/(byte) plex_show_idx#44 ) + (byte~) loop::$4 ← *((byte*) D011#0) & (byte/word/signed word/dword/signed dword) 128 + (bool~) loop::$5 ← (byte~) loop::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) loop::$5) goto loop::@9 + to:loop::@10 +loop::@9: scope:[loop] from loop::@8 + (byte*) YSIN#23 ← phi( loop::@8/(byte*) YSIN#21 ) + (byte) loop::sin_idx#21 ← phi( loop::@8/(byte) loop::sin_idx#19 ) + (byte) plex_sprite_msb#47 ← phi( loop::@8/(byte) plex_sprite_msb#46 ) + (byte*) PLEX_SCREEN_PTR#36 ← phi( loop::@8/(byte*) PLEX_SCREEN_PTR#34 ) + (byte) plex_sprite_idx#47 ← phi( loop::@8/(byte) plex_sprite_idx#46 ) + (byte) plex_show_idx#44 ← phi( loop::@8/(byte) plex_show_idx#40 ) + to:loop::@8 +loop::@10: scope:[loop] from loop::@8 + (byte*) YSIN#20 ← phi( loop::@8/(byte*) YSIN#21 ) + (byte) loop::sin_idx#18 ← phi( loop::@8/(byte) loop::sin_idx#19 ) + (byte) plex_sprite_msb#45 ← phi( loop::@8/(byte) plex_sprite_msb#46 ) + (byte*) PLEX_SCREEN_PTR#32 ← phi( loop::@8/(byte*) PLEX_SCREEN_PTR#34 ) + (byte) plex_sprite_idx#45 ← phi( loop::@8/(byte) plex_sprite_idx#46 ) + (byte) plex_show_idx#36 ← phi( loop::@8/(byte) plex_show_idx#40 ) (byte/signed word/word/dword/signed dword~) loop::$6 ← (byte) PLEX_COUNT#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) loop::ss#2 ← (byte/signed byte/word/signed word/dword/signed dword) 8 - to:loop::@9 -loop::@9: scope:[loop] from loop::@19 loop::@28 - (byte*) YSIN#19 ← phi( loop::@19/(byte*) YSIN#20 loop::@28/(byte*) YSIN#10 ) - (byte) loop::sin_idx#17 ← phi( loop::@19/(byte) loop::sin_idx#18 loop::@28/(byte) loop::sin_idx#10 ) - (byte) loop::ss#13 ← phi( loop::@19/(byte) loop::ss#2 loop::@28/(byte) loop::ss#3 ) - (byte) plex_sprite_msb#47 ← phi( loop::@19/(byte) plex_sprite_msb#48 loop::@28/(byte) plex_sprite_msb#10 ) - (byte*) PLEX_SCREEN_PTR#38 ← phi( loop::@19/(byte*) PLEX_SCREEN_PTR#41 loop::@28/(byte*) PLEX_SCREEN_PTR#42 ) - (byte) plex_sprite_idx#47 ← phi( loop::@19/(byte) plex_sprite_idx#48 loop::@28/(byte) plex_sprite_idx#9 ) - (byte) plex_show_idx#32 ← phi( loop::@19/(byte) plex_show_idx#39 loop::@28/(byte) plex_show_idx#9 ) + (byte) loop::ss#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:loop::@11 +loop::@11: scope:[loop] from loop::@10 loop::@31 + (byte*) YSIN#19 ← phi( loop::@10/(byte*) YSIN#20 loop::@31/(byte*) YSIN#10 ) + (byte) loop::sin_idx#17 ← phi( loop::@10/(byte) loop::sin_idx#18 loop::@31/(byte) loop::sin_idx#10 ) + (byte) loop::ss#9 ← phi( loop::@10/(byte) loop::ss#0 loop::@31/(byte) loop::ss#1 ) + (byte) plex_sprite_msb#44 ← phi( loop::@10/(byte) plex_sprite_msb#45 loop::@31/(byte) plex_sprite_msb#9 ) + (byte*) PLEX_SCREEN_PTR#31 ← phi( loop::@10/(byte*) PLEX_SCREEN_PTR#32 loop::@31/(byte*) PLEX_SCREEN_PTR#33 ) + (byte) plex_sprite_idx#44 ← phi( loop::@10/(byte) plex_sprite_idx#45 loop::@31/(byte) plex_sprite_idx#8 ) + (byte) plex_show_idx#29 ← phi( loop::@10/(byte) plex_show_idx#36 loop::@31/(byte) plex_show_idx#8 ) *((byte*) BORDERCOL#0) ← (byte) BLACK#0 to:loop::plexShowNextYpos1 -loop::plexShowNextYpos1: scope:[loop] from loop::@9 - (byte*) YSIN#18 ← phi( loop::@9/(byte*) YSIN#19 ) - (byte) loop::sin_idx#16 ← phi( loop::@9/(byte) loop::sin_idx#17 ) - (byte) loop::ss#12 ← phi( loop::@9/(byte) loop::ss#13 ) - (byte) plex_sprite_msb#46 ← phi( loop::@9/(byte) plex_sprite_msb#47 ) - (byte*) PLEX_SCREEN_PTR#36 ← phi( loop::@9/(byte*) PLEX_SCREEN_PTR#38 ) - (byte) plex_sprite_idx#46 ← phi( loop::@9/(byte) plex_sprite_idx#47 ) - (byte) plex_show_idx#20 ← phi( loop::@9/(byte) plex_show_idx#32 ) - (byte) loop::plexShowNextYpos1_return#0 ← *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#20)) +loop::plexShowNextYpos1: scope:[loop] from loop::@11 + (byte*) YSIN#18 ← phi( loop::@11/(byte*) YSIN#19 ) + (byte) loop::sin_idx#16 ← phi( loop::@11/(byte) loop::sin_idx#17 ) + (byte) loop::ss#8 ← phi( loop::@11/(byte) loop::ss#9 ) + (byte) plex_sprite_msb#43 ← phi( loop::@11/(byte) plex_sprite_msb#44 ) + (byte*) PLEX_SCREEN_PTR#30 ← phi( loop::@11/(byte*) PLEX_SCREEN_PTR#31 ) + (byte) plex_sprite_idx#43 ← phi( loop::@11/(byte) plex_sprite_idx#44 ) + (byte) plex_show_idx#18 ← phi( loop::@11/(byte) plex_show_idx#29 ) + (byte) loop::plexShowNextYpos1_return#0 ← *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) to:loop::plexShowNextYpos1_@return loop::plexShowNextYpos1_@return: scope:[loop] from loop::plexShowNextYpos1 (byte*) YSIN#17 ← phi( loop::plexShowNextYpos1/(byte*) YSIN#18 ) (byte) loop::sin_idx#15 ← phi( loop::plexShowNextYpos1/(byte) loop::sin_idx#16 ) - (byte) loop::ss#11 ← phi( loop::plexShowNextYpos1/(byte) loop::ss#12 ) - (byte) plex_sprite_msb#43 ← phi( loop::plexShowNextYpos1/(byte) plex_sprite_msb#46 ) - (byte*) PLEX_SCREEN_PTR#34 ← phi( loop::plexShowNextYpos1/(byte*) PLEX_SCREEN_PTR#36 ) - (byte) plex_show_idx#46 ← phi( loop::plexShowNextYpos1/(byte) plex_show_idx#20 ) - (byte) plex_sprite_idx#43 ← phi( loop::plexShowNextYpos1/(byte) plex_sprite_idx#46 ) + (byte) loop::ss#7 ← phi( loop::plexShowNextYpos1/(byte) loop::ss#8 ) + (byte) plex_sprite_msb#40 ← phi( loop::plexShowNextYpos1/(byte) plex_sprite_msb#43 ) + (byte*) PLEX_SCREEN_PTR#29 ← phi( loop::plexShowNextYpos1/(byte*) PLEX_SCREEN_PTR#30 ) + (byte) plex_show_idx#45 ← phi( loop::plexShowNextYpos1/(byte) plex_show_idx#18 ) + (byte) plex_sprite_idx#40 ← phi( loop::plexShowNextYpos1/(byte) plex_sprite_idx#43 ) (byte) loop::plexShowNextYpos1_return#2 ← phi( loop::plexShowNextYpos1/(byte) loop::plexShowNextYpos1_return#0 ) (byte) loop::plexShowNextYpos1_return#1 ← (byte) loop::plexShowNextYpos1_return#2 - to:loop::@25 -loop::@25: scope:[loop] from loop::plexShowNextYpos1_@return + to:loop::@29 +loop::@29: scope:[loop] from loop::plexShowNextYpos1_@return (byte*) YSIN#16 ← phi( loop::plexShowNextYpos1_@return/(byte*) YSIN#17 ) (byte) loop::sin_idx#14 ← phi( loop::plexShowNextYpos1_@return/(byte) loop::sin_idx#15 ) - (byte) loop::ss#10 ← phi( loop::plexShowNextYpos1_@return/(byte) loop::ss#11 ) - (byte) plex_sprite_msb#41 ← phi( loop::plexShowNextYpos1_@return/(byte) plex_sprite_msb#43 ) - (byte*) PLEX_SCREEN_PTR#32 ← phi( loop::plexShowNextYpos1_@return/(byte*) PLEX_SCREEN_PTR#34 ) - (byte) plex_show_idx#44 ← phi( loop::plexShowNextYpos1_@return/(byte) plex_show_idx#46 ) - (byte) plex_sprite_idx#41 ← phi( loop::plexShowNextYpos1_@return/(byte) plex_sprite_idx#43 ) + (byte) loop::ss#6 ← phi( loop::plexShowNextYpos1_@return/(byte) loop::ss#7 ) + (byte) plex_sprite_msb#38 ← phi( loop::plexShowNextYpos1_@return/(byte) plex_sprite_msb#40 ) + (byte*) PLEX_SCREEN_PTR#28 ← phi( loop::plexShowNextYpos1_@return/(byte*) PLEX_SCREEN_PTR#29 ) + (byte) plex_show_idx#42 ← phi( loop::plexShowNextYpos1_@return/(byte) plex_show_idx#45 ) + (byte) plex_sprite_idx#38 ← phi( loop::plexShowNextYpos1_@return/(byte) plex_sprite_idx#40 ) (byte) loop::plexShowNextYpos1_return#3 ← phi( loop::plexShowNextYpos1_@return/(byte) loop::plexShowNextYpos1_return#1 ) (byte~) loop::$7 ← (byte) loop::plexShowNextYpos1_return#3 (byte/signed word/word/dword/signed dword~) loop::$8 ← (byte~) loop::$7 - (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) loop::rasterY#0 ← (byte/signed word/word/dword/signed dword~) loop::$8 - to:loop::@10 -loop::@10: scope:[loop] from loop::@11 loop::@25 - (byte*) YSIN#14 ← phi( loop::@11/(byte*) YSIN#15 loop::@25/(byte*) YSIN#16 ) - (byte) loop::sin_idx#12 ← phi( loop::@11/(byte) loop::sin_idx#13 loop::@25/(byte) loop::sin_idx#14 ) - (byte) loop::ss#8 ← phi( loop::@11/(byte) loop::ss#9 loop::@25/(byte) loop::ss#10 ) - (byte) plex_sprite_msb#37 ← phi( loop::@11/(byte) plex_sprite_msb#40 loop::@25/(byte) plex_sprite_msb#41 ) - (byte*) PLEX_SCREEN_PTR#27 ← phi( loop::@11/(byte*) PLEX_SCREEN_PTR#31 loop::@25/(byte*) PLEX_SCREEN_PTR#32 ) - (byte) plex_show_idx#40 ← phi( loop::@11/(byte) plex_show_idx#43 loop::@25/(byte) plex_show_idx#44 ) - (byte) plex_sprite_idx#37 ← phi( loop::@11/(byte) plex_sprite_idx#40 loop::@25/(byte) plex_sprite_idx#41 ) - (byte) loop::rasterY#1 ← phi( loop::@11/(byte) loop::rasterY#2 loop::@25/(byte) loop::rasterY#0 ) - (bool~) loop::$9 ← *((byte*) RASTER#0) < (byte) loop::rasterY#1 - if((bool~) loop::$9) goto loop::@11 to:loop::@12 -loop::@11: scope:[loop] from loop::@10 - (byte*) YSIN#15 ← phi( loop::@10/(byte*) YSIN#14 ) - (byte) loop::sin_idx#13 ← phi( loop::@10/(byte) loop::sin_idx#12 ) - (byte) loop::ss#9 ← phi( loop::@10/(byte) loop::ss#8 ) - (byte) plex_sprite_msb#40 ← phi( loop::@10/(byte) plex_sprite_msb#37 ) - (byte*) PLEX_SCREEN_PTR#31 ← phi( loop::@10/(byte*) PLEX_SCREEN_PTR#27 ) - (byte) plex_show_idx#43 ← phi( loop::@10/(byte) plex_show_idx#40 ) - (byte) plex_sprite_idx#40 ← phi( loop::@10/(byte) plex_sprite_idx#37 ) - (byte) loop::rasterY#2 ← phi( loop::@10/(byte) loop::rasterY#1 ) - to:loop::@10 -loop::@12: scope:[loop] from loop::@10 - (byte*) YSIN#12 ← phi( loop::@10/(byte*) YSIN#14 ) - (byte) loop::sin_idx#11 ← phi( loop::@10/(byte) loop::sin_idx#12 ) - (byte) loop::ss#7 ← phi( loop::@10/(byte) loop::ss#8 ) - (byte) plex_sprite_msb#30 ← phi( loop::@10/(byte) plex_sprite_msb#37 ) - (byte*) PLEX_SCREEN_PTR#16 ← phi( loop::@10/(byte*) PLEX_SCREEN_PTR#27 ) - (byte) plex_show_idx#24 ← phi( loop::@10/(byte) plex_show_idx#40 ) - (byte) plex_sprite_idx#23 ← phi( loop::@10/(byte) plex_sprite_idx#37 ) +loop::@12: scope:[loop] from loop::@13 loop::@29 + (byte*) YSIN#14 ← phi( loop::@13/(byte*) YSIN#15 loop::@29/(byte*) YSIN#16 ) + (byte) loop::sin_idx#12 ← phi( loop::@13/(byte) loop::sin_idx#13 loop::@29/(byte) loop::sin_idx#14 ) + (byte) loop::ss#4 ← phi( loop::@13/(byte) loop::ss#5 loop::@29/(byte) loop::ss#6 ) + (byte) plex_sprite_msb#34 ← phi( loop::@13/(byte) plex_sprite_msb#37 loop::@29/(byte) plex_sprite_msb#38 ) + (byte*) PLEX_SCREEN_PTR#24 ← phi( loop::@13/(byte*) PLEX_SCREEN_PTR#27 loop::@29/(byte*) PLEX_SCREEN_PTR#28 ) + (byte) plex_show_idx#37 ← phi( loop::@13/(byte) plex_show_idx#41 loop::@29/(byte) plex_show_idx#42 ) + (byte) plex_sprite_idx#34 ← phi( loop::@13/(byte) plex_sprite_idx#37 loop::@29/(byte) plex_sprite_idx#38 ) + (byte) loop::rasterY#1 ← phi( loop::@13/(byte) loop::rasterY#2 loop::@29/(byte) loop::rasterY#0 ) + (bool~) loop::$9 ← *((byte*) RASTER#0) < (byte) loop::rasterY#1 + if((bool~) loop::$9) goto loop::@13 + to:loop::@14 +loop::@13: scope:[loop] from loop::@12 + (byte*) YSIN#15 ← phi( loop::@12/(byte*) YSIN#14 ) + (byte) loop::sin_idx#13 ← phi( loop::@12/(byte) loop::sin_idx#12 ) + (byte) loop::ss#5 ← phi( loop::@12/(byte) loop::ss#4 ) + (byte) plex_sprite_msb#37 ← phi( loop::@12/(byte) plex_sprite_msb#34 ) + (byte*) PLEX_SCREEN_PTR#27 ← phi( loop::@12/(byte*) PLEX_SCREEN_PTR#24 ) + (byte) plex_show_idx#41 ← phi( loop::@12/(byte) plex_show_idx#37 ) + (byte) plex_sprite_idx#37 ← phi( loop::@12/(byte) plex_sprite_idx#34 ) + (byte) loop::rasterY#2 ← phi( loop::@12/(byte) loop::rasterY#1 ) + to:loop::@12 +loop::@14: scope:[loop] from loop::@12 + (byte*) YSIN#12 ← phi( loop::@12/(byte*) YSIN#14 ) + (byte) loop::sin_idx#11 ← phi( loop::@12/(byte) loop::sin_idx#12 ) + (byte) loop::ss#3 ← phi( loop::@12/(byte) loop::ss#4 ) + (byte) plex_sprite_msb#27 ← phi( loop::@12/(byte) plex_sprite_msb#34 ) + (byte*) PLEX_SCREEN_PTR#16 ← phi( loop::@12/(byte*) PLEX_SCREEN_PTR#24 ) + (byte) plex_show_idx#22 ← phi( loop::@12/(byte) plex_show_idx#37 ) + (byte) plex_sprite_idx#21 ← phi( loop::@12/(byte) plex_sprite_idx#34 ) *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) call plexShowSprite - to:loop::@28 -loop::@28: scope:[loop] from loop::@12 - (byte*) PLEX_SCREEN_PTR#42 ← phi( loop::@12/(byte*) PLEX_SCREEN_PTR#16 ) - (byte*) YSIN#10 ← phi( loop::@12/(byte*) YSIN#12 ) - (byte) loop::sin_idx#10 ← phi( loop::@12/(byte) loop::sin_idx#11 ) - (byte) loop::ss#5 ← phi( loop::@12/(byte) loop::ss#7 ) - (byte) plex_sprite_msb#22 ← phi( loop::@12/(byte) plex_sprite_msb#5 ) - (byte) plex_show_idx#21 ← phi( loop::@12/(byte) plex_show_idx#4 ) - (byte) plex_sprite_idx#20 ← phi( loop::@12/(byte) plex_sprite_idx#4 ) - (byte) plex_sprite_idx#9 ← (byte) plex_sprite_idx#20 - (byte) plex_show_idx#9 ← (byte) plex_show_idx#21 - (byte) plex_sprite_msb#10 ← (byte) plex_sprite_msb#22 - (byte) loop::ss#3 ← (byte) loop::ss#5 + rangenext(8,loop::$6) - (bool~) loop::$11 ← (byte) loop::ss#3 != rangelast(8,loop::$6) - if((bool~) loop::$11) goto loop::@9 - to:loop::@23 -loop::@23: scope:[loop] from loop::@28 - (byte*) PLEX_SCREEN_PTR#45 ← phi( loop::@28/(byte*) PLEX_SCREEN_PTR#42 ) - (byte*) YSIN#8 ← phi( loop::@28/(byte*) YSIN#10 ) - (byte) loop::sin_idx#9 ← phi( loop::@28/(byte) loop::sin_idx#10 ) - (byte) plex_sprite_msb#35 ← phi( loop::@28/(byte) plex_sprite_msb#10 ) - (byte) plex_sprite_idx#35 ← phi( loop::@28/(byte) plex_sprite_idx#9 ) - (byte) plex_show_idx#37 ← phi( loop::@28/(byte) plex_show_idx#9 ) + to:loop::@31 +loop::@31: scope:[loop] from loop::@14 + (byte*) PLEX_SCREEN_PTR#33 ← phi( loop::@14/(byte*) PLEX_SCREEN_PTR#16 ) + (byte*) YSIN#10 ← phi( loop::@14/(byte*) YSIN#12 ) + (byte) loop::sin_idx#10 ← phi( loop::@14/(byte) loop::sin_idx#11 ) + (byte) loop::ss#2 ← phi( loop::@14/(byte) loop::ss#3 ) + (byte) plex_sprite_msb#20 ← phi( loop::@14/(byte) plex_sprite_msb#5 ) + (byte) plex_show_idx#19 ← phi( loop::@14/(byte) plex_show_idx#4 ) + (byte) plex_sprite_idx#18 ← phi( loop::@14/(byte) plex_sprite_idx#4 ) + (byte) plex_sprite_idx#8 ← (byte) plex_sprite_idx#18 + (byte) plex_show_idx#8 ← (byte) plex_show_idx#19 + (byte) plex_sprite_msb#9 ← (byte) plex_sprite_msb#20 + (byte) loop::ss#1 ← (byte) loop::ss#2 + rangenext(0,loop::$6) + (bool~) loop::$11 ← (byte) loop::ss#1 != rangelast(0,loop::$6) + if((bool~) loop::$11) goto loop::@11 + to:loop::@27 +loop::@27: scope:[loop] from loop::@31 + (byte*) PLEX_SCREEN_PTR#45 ← phi( loop::@31/(byte*) PLEX_SCREEN_PTR#33 ) + (byte*) YSIN#8 ← phi( loop::@31/(byte*) YSIN#10 ) + (byte) loop::sin_idx#9 ← phi( loop::@31/(byte) loop::sin_idx#10 ) + (byte) plex_sprite_msb#32 ← phi( loop::@31/(byte) plex_sprite_msb#9 ) + (byte) plex_sprite_idx#32 ← phi( loop::@31/(byte) plex_sprite_idx#8 ) + (byte) plex_show_idx#34 ← phi( loop::@31/(byte) plex_show_idx#8 ) *((byte*) BORDERCOL#0) ← (byte) BLACK#0 to:loop::@1 loop::@return: scope:[loop] from loop::@1 - (byte) plex_sprite_msb#23 ← phi( loop::@1/(byte) plex_sprite_msb#31 ) - (byte) plex_sprite_idx#21 ← phi( loop::@1/(byte) plex_sprite_idx#31 ) - (byte) plex_show_idx#22 ← phi( loop::@1/(byte) plex_show_idx#33 ) - (byte) plex_show_idx#10 ← (byte) plex_show_idx#22 - (byte) plex_sprite_idx#10 ← (byte) plex_sprite_idx#21 - (byte) plex_sprite_msb#11 ← (byte) plex_sprite_msb#23 + (byte) plex_sprite_msb#21 ← phi( loop::@1/(byte) plex_sprite_msb#28 ) + (byte) plex_sprite_idx#19 ← phi( loop::@1/(byte) plex_sprite_idx#28 ) + (byte) plex_show_idx#20 ← phi( loop::@1/(byte) plex_show_idx#30 ) + (byte) plex_show_idx#9 ← (byte) plex_show_idx#20 + (byte) plex_sprite_idx#9 ← (byte) plex_sprite_idx#19 + (byte) plex_sprite_msb#10 ← (byte) plex_sprite_msb#21 return to:@return -@31: scope:[] from @28 - (byte*) YSIN#13 ← phi( @28/(byte*) YSIN#0 ) - (byte*) SPRITE#5 ← phi( @28/(byte*) SPRITE#0 ) - (byte*) SCREEN#3 ← phi( @28/(byte*) SCREEN#0 ) - (byte) plex_sprite_msb#32 ← phi( @28/(byte) plex_sprite_msb#38 ) - (byte) plex_sprite_idx#32 ← phi( @28/(byte) plex_sprite_idx#38 ) - (byte) plex_show_idx#34 ← phi( @28/(byte) plex_show_idx#41 ) - (byte*) PLEX_SCREEN_PTR#22 ← phi( @28/(byte*) PLEX_SCREEN_PTR#28 ) +@11: scope:[] from @8 + (byte*) YSIN#13 ← phi( @8/(byte*) YSIN#0 ) + (byte*) SPRITE#5 ← phi( @8/(byte*) SPRITE#0 ) + (byte*) SCREEN#3 ← phi( @8/(byte*) SCREEN#0 ) + (byte) plex_sprite_msb#29 ← phi( @8/(byte) plex_sprite_msb#35 ) + (byte) plex_sprite_idx#29 ← phi( @8/(byte) plex_sprite_idx#35 ) + (byte) plex_show_idx#31 ← phi( @8/(byte) plex_show_idx#38 ) + (byte*) PLEX_SCREEN_PTR#21 ← phi( @8/(byte*) PLEX_SCREEN_PTR#25 ) call main - to:@32 -@32: scope:[] from @31 - (byte) plex_sprite_msb#24 ← phi( @31/(byte) plex_sprite_msb#7 ) - (byte) plex_sprite_idx#22 ← phi( @31/(byte) plex_sprite_idx#6 ) - (byte) plex_show_idx#23 ← phi( @31/(byte) plex_show_idx#6 ) - (byte*) PLEX_SCREEN_PTR#14 ← phi( @31/(byte*) PLEX_SCREEN_PTR#4 ) + to:@12 +@12: scope:[] from @11 + (byte) plex_sprite_msb#22 ← phi( @11/(byte) plex_sprite_msb#7 ) + (byte) plex_sprite_idx#20 ← phi( @11/(byte) plex_sprite_idx#6 ) + (byte) plex_show_idx#21 ← phi( @11/(byte) plex_show_idx#6 ) + (byte*) PLEX_SCREEN_PTR#14 ← phi( @11/(byte*) PLEX_SCREEN_PTR#4 ) (byte*) PLEX_SCREEN_PTR#7 ← (byte*) PLEX_SCREEN_PTR#14 - (byte) plex_show_idx#11 ← (byte) plex_show_idx#23 - (byte) plex_sprite_idx#11 ← (byte) plex_sprite_idx#22 - (byte) plex_sprite_msb#12 ← (byte) plex_sprite_msb#24 + (byte) plex_show_idx#10 ← (byte) plex_show_idx#21 + (byte) plex_sprite_idx#10 ← (byte) plex_sprite_idx#20 + (byte) plex_sprite_msb#11 ← (byte) plex_sprite_msb#22 to:@end -@end: scope:[] from @32 +@end: scope:[] from @12 SYMBOL TABLE SSA (word/signed word/dword/signed dword~) $0 -(label) @23 -(label) @28 -(label) @31 -(label) @32 +(label) @11 +(label) @12 +(label) @3 +(label) @8 (label) @begin (label) @end (byte) BLACK @@ -3497,6 +1835,7 @@ SYMBOL TABLE SSA (byte/signed word/word/dword/signed dword~) loop::$1 (bool~) loop::$11 (bool~) loop::$2 +(byte~) loop::$4 (bool~) loop::$5 (byte/signed word/word/dword/signed dword~) loop::$6 (byte~) loop::$7 @@ -3506,14 +1845,14 @@ SYMBOL TABLE SSA (label) loop::@10 (label) loop::@11 (label) loop::@12 -(label) loop::@18 -(label) loop::@19 +(label) loop::@13 +(label) loop::@14 (label) loop::@2 -(label) loop::@23 -(label) loop::@25 -(label) loop::@26 +(label) loop::@20 (label) loop::@27 -(label) loop::@28 +(label) loop::@29 +(label) loop::@30 +(label) loop::@31 (label) loop::@4 (label) loop::@5 (label) loop::@6 @@ -3558,10 +1897,6 @@ SYMBOL TABLE SSA (byte) loop::ss (byte) loop::ss#0 (byte) loop::ss#1 -(byte) loop::ss#10 -(byte) loop::ss#11 -(byte) loop::ss#12 -(byte) loop::ss#13 (byte) loop::ss#2 (byte) loop::ss#3 (byte) loop::ss#4 @@ -3706,7 +2041,6 @@ SYMBOL TABLE SSA (byte) plex_show_idx#45 (byte) plex_show_idx#46 (byte) plex_show_idx#47 -(byte) plex_show_idx#48 (byte) plex_show_idx#5 (byte) plex_show_idx#6 (byte) plex_show_idx#7 @@ -3756,7 +2090,6 @@ SYMBOL TABLE SSA (byte) plex_sprite_idx#45 (byte) plex_sprite_idx#46 (byte) plex_sprite_idx#47 -(byte) plex_sprite_idx#48 (byte) plex_sprite_idx#5 (byte) plex_sprite_idx#6 (byte) plex_sprite_idx#7 @@ -3806,7 +2139,6 @@ SYMBOL TABLE SSA (byte) plex_sprite_msb#45 (byte) plex_sprite_msb#46 (byte) plex_sprite_msb#47 -(byte) plex_sprite_msb#48 (byte) plex_sprite_msb#5 (byte) plex_sprite_msb#6 (byte) plex_sprite_msb#7 @@ -3822,49 +2154,46 @@ Not aliassing identity: PLEX_SCREEN_PTR#15 PLEX_SCREEN_PTR#15 Not aliassing identity: plexSort::nxt_y#1 plexSort::nxt_y#1 Not aliassing identity: plexSort::nxt_idx#2 plexSort::nxt_idx#2 Not aliassing identity: plexSort::m#6 plexSort::m#6 -Not aliassing across scopes: plex_sprite_idx#13 plex_sprite_idx#23 -Not aliassing across scopes: plex_show_idx#13 plex_show_idx#24 +Not aliassing across scopes: plex_sprite_idx#12 plex_sprite_idx#21 +Not aliassing across scopes: plex_show_idx#12 plex_show_idx#22 Not aliassing across scopes: PLEX_SCREEN_PTR#9 PLEX_SCREEN_PTR#16 -Not aliassing across scopes: plex_sprite_msb#25 plex_sprite_msb#30 -Not aliassing across scopes: PLEX_SCREEN_PTR#18 PLEX_SCREEN_PTR#22 +Not aliassing across scopes: plex_sprite_msb#23 plex_sprite_msb#27 +Not aliassing across scopes: PLEX_SCREEN_PTR#17 PLEX_SCREEN_PTR#21 Not aliassing across scopes: SCREEN#2 SCREEN#3 -Not aliassing across scopes: plex_show_idx#35 plex_show_idx#34 -Not aliassing across scopes: plex_sprite_idx#33 plex_sprite_idx#32 -Not aliassing across scopes: plex_sprite_msb#33 plex_sprite_msb#32 +Not aliassing across scopes: plex_show_idx#32 plex_show_idx#31 +Not aliassing across scopes: plex_sprite_idx#30 plex_sprite_idx#29 +Not aliassing across scopes: plex_sprite_msb#30 plex_sprite_msb#29 Not aliassing across scopes: SPRITE#4 SPRITE#5 Not aliassing across scopes: YSIN#11 YSIN#13 Not aliassing across scopes: PLEX_SCREEN_PTR#10 PLEX_SCREEN_PTR#6 -Not aliassing across scopes: plex_show_idx#16 plex_show_idx#10 -Not aliassing across scopes: plex_sprite_idx#16 plex_sprite_idx#10 -Not aliassing across scopes: plex_sprite_msb#18 plex_sprite_msb#11 +Not aliassing across scopes: plex_show_idx#15 plex_show_idx#9 +Not aliassing across scopes: plex_sprite_idx#15 plex_sprite_idx#9 +Not aliassing across scopes: plex_sprite_msb#17 plex_sprite_msb#10 Not aliassing across scopes: SCREEN#1 SCREEN#2 -Not aliassing across scopes: PLEX_SCREEN_PTR#20 PLEX_SCREEN_PTR#18 +Not aliassing across scopes: PLEX_SCREEN_PTR#19 PLEX_SCREEN_PTR#17 Not aliassing across scopes: SPRITE#3 SPRITE#4 Not aliassing across scopes: plexInit::screen#0 SCREEN#1 Not aliassing across scopes: PLEX_SCREEN_PTR#12 PLEX_SCREEN_PTR#2 Not aliassing identity: SPRITE#1 SPRITE#1 -Not aliassing identity: PLEX_SCREEN_PTR#29 PLEX_SCREEN_PTR#29 -Not aliassing identity: PLEX_SCREEN_PTR#21 PLEX_SCREEN_PTR#21 -Not aliassing across scopes: plex_show_idx#36 plex_show_idx#30 -Not aliassing across scopes: plex_sprite_idx#34 plex_sprite_idx#29 -Not aliassing across scopes: plex_sprite_msb#34 plex_sprite_msb#27 +Not aliassing identity: PLEX_SCREEN_PTR#26 PLEX_SCREEN_PTR#26 +Not aliassing identity: PLEX_SCREEN_PTR#20 PLEX_SCREEN_PTR#20 +Not aliassing across scopes: plex_show_idx#33 plex_show_idx#27 +Not aliassing across scopes: plex_sprite_idx#31 plex_sprite_idx#26 +Not aliassing across scopes: plex_sprite_msb#31 plex_sprite_msb#25 Not aliassing across scopes: YSIN#7 YSIN#9 Not aliassing across scopes: PLEX_SCREEN_PTR#44 PLEX_SCREEN_PTR#3 -Not aliassing across scopes: plex_show_idx#18 plex_show_idx#2 -Not aliassing across scopes: plex_sprite_idx#18 plex_sprite_idx#2 -Not aliassing across scopes: plex_sprite_msb#20 plex_sprite_msb#2 -Not aliassing across scopes: plex_sprite_idx#19 plex_sprite_idx#4 +Not aliassing across scopes: plex_show_idx#17 plex_show_idx#2 +Not aliassing across scopes: plex_sprite_idx#17 plex_sprite_idx#2 +Not aliassing across scopes: plex_sprite_msb#19 plex_sprite_msb#2 +Not aliassing across scopes: plex_sprite_idx#18 plex_sprite_idx#4 Not aliassing across scopes: plex_show_idx#19 plex_show_idx#4 -Not aliassing across scopes: plex_sprite_msb#21 plex_sprite_msb#5 -Not aliassing across scopes: plex_sprite_idx#20 plex_sprite_idx#4 -Not aliassing across scopes: plex_show_idx#21 plex_show_idx#4 -Not aliassing across scopes: plex_sprite_msb#22 plex_sprite_msb#5 +Not aliassing across scopes: plex_sprite_msb#20 plex_sprite_msb#5 Not aliassing across scopes: PLEX_SCREEN_PTR#14 PLEX_SCREEN_PTR#4 -Not aliassing across scopes: plex_show_idx#23 plex_show_idx#6 -Not aliassing across scopes: plex_sprite_idx#22 plex_sprite_idx#6 -Not aliassing across scopes: plex_sprite_msb#24 plex_sprite_msb#7 +Not aliassing across scopes: plex_show_idx#21 plex_show_idx#6 +Not aliassing across scopes: plex_sprite_idx#20 plex_sprite_idx#6 +Not aliassing across scopes: plex_sprite_msb#22 plex_sprite_msb#7 Alias (byte*) plexInit::plexSetScreen1_screen#0 = (byte*) plexInit::screen#1 (byte*) plexInit::plexSetScreen1_screen#1 -Alias (byte*) PLEX_SCREEN_PTR#1 = (byte*) plexInit::plexSetScreen1_$0#0 (byte*) PLEX_SCREEN_PTR#23 +Alias (byte*) PLEX_SCREEN_PTR#1 = (byte*) plexInit::plexSetScreen1_$0#0 (byte*) PLEX_SCREEN_PTR#22 Alias (byte*) PLEX_SCREEN_PTR#15 = (byte*) PLEX_SCREEN_PTR#8 (byte*) PLEX_SCREEN_PTR#2 Alias (byte) plexSort::m#2 = (byte) plexSort::m#4 (byte) plexSort::s#0 Alias (byte) plexSort::nxt_y#0 = (byte) plexSort::nxt_y#2 @@ -3872,235 +2201,231 @@ Alias (byte) plexSort::nxt_idx#0 = (byte) plexSort::nxt_idx#3 Alias (byte) plexSort::s#1 = (byte) plexSort::s#4 Alias (byte) plexSort::nxt_idx#1 = (byte) plexSort::nxt_idx#2 Alias (byte) plexSort::m#5 = (byte) plexSort::m#6 -Alias (byte) plex_show_idx#1 = (byte) plex_show_idx#12 (byte) plex_show_idx#2 -Alias (byte) plex_sprite_idx#1 = (byte) plex_sprite_idx#12 (byte) plex_sprite_idx#2 -Alias (byte) plex_sprite_msb#1 = (byte) plex_sprite_msb#13 (byte) plex_sprite_msb#2 +Alias (byte) plex_show_idx#1 = (byte) plex_show_idx#11 (byte) plex_show_idx#2 +Alias (byte) plex_sprite_idx#1 = (byte) plex_sprite_idx#11 (byte) plex_sprite_idx#2 +Alias (byte) plex_sprite_msb#1 = (byte) plex_sprite_msb#12 (byte) plex_sprite_msb#2 Alias (byte) plexShowSprite::plex_sprite_idx2#0 = (byte~) plexShowSprite::$0 Alias (byte) plexShowSprite::xpos_idx#0 = (byte~) plexShowSprite::$1 -Alias (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#25 (byte) plex_sprite_msb#15 -Alias (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#25 (byte) plex_sprite_idx#26 -Alias (byte) plex_show_idx#13 = (byte) plex_show_idx#26 (byte) plex_show_idx#27 -Alias (byte) plex_sprite_idx#27 = (byte) plex_sprite_idx#3 (byte/word/dword~) plexShowSprite::$7 (byte) plex_sprite_idx#28 -Alias (byte) plex_show_idx#28 = (byte) plex_show_idx#3 (byte) plex_show_idx#29 -Alias (byte) plex_sprite_msb#26 = (byte) plex_sprite_msb#3 -Alias (byte) plex_sprite_idx#15 = (byte) plex_sprite_idx#4 -Alias (byte) plex_show_idx#15 = (byte) plex_show_idx#4 -Alias (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#5 -Alias (byte*) PLEX_SCREEN_PTR#0 = (byte*) PLEX_SCREEN_PTR#28 (byte*) PLEX_SCREEN_PTR#22 -Alias (byte) plex_show_idx#0 = (byte) plex_show_idx#41 (byte) plex_show_idx#34 -Alias (byte) plex_sprite_idx#0 = (byte) plex_sprite_idx#38 (byte) plex_sprite_idx#32 -Alias (byte) plex_sprite_msb#0 = (byte) plex_sprite_msb#38 (byte) plex_sprite_msb#32 -Alias (byte) plex_show_idx#30 = (byte) plex_show_idx#35 -Alias (byte) plex_sprite_idx#29 = (byte) plex_sprite_idx#33 -Alias (byte) plex_sprite_msb#27 = (byte) plex_sprite_msb#33 +Alias (byte) plex_sprite_msb#13 = (byte) plex_sprite_msb#23 (byte) plex_sprite_msb#14 +Alias (byte) plex_sprite_idx#12 = (byte) plex_sprite_idx#22 (byte) plex_sprite_idx#23 +Alias (byte) plex_show_idx#12 = (byte) plex_show_idx#23 (byte) plex_show_idx#24 +Alias (byte) plex_sprite_idx#24 = (byte) plex_sprite_idx#3 (byte/word/dword~) plexShowSprite::$7 (byte) plex_sprite_idx#25 +Alias (byte) plex_show_idx#25 = (byte) plex_show_idx#3 (byte) plex_show_idx#26 +Alias (byte) plex_sprite_msb#24 = (byte) plex_sprite_msb#3 +Alias (byte) plex_sprite_idx#14 = (byte) plex_sprite_idx#4 +Alias (byte) plex_show_idx#14 = (byte) plex_show_idx#4 +Alias (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#5 +Alias (byte*) PLEX_SCREEN_PTR#0 = (byte*) PLEX_SCREEN_PTR#25 (byte*) PLEX_SCREEN_PTR#21 +Alias (byte) plex_show_idx#0 = (byte) plex_show_idx#38 (byte) plex_show_idx#31 +Alias (byte) plex_sprite_idx#0 = (byte) plex_sprite_idx#35 (byte) plex_sprite_idx#29 +Alias (byte) plex_sprite_msb#0 = (byte) plex_sprite_msb#35 (byte) plex_sprite_msb#29 +Alias (byte) plex_show_idx#27 = (byte) plex_show_idx#32 +Alias (byte) plex_sprite_idx#26 = (byte) plex_sprite_idx#30 +Alias (byte) plex_sprite_msb#25 = (byte) plex_sprite_msb#30 Alias (byte*) YSIN#11 = (byte*) YSIN#9 -Alias (byte*) PLEX_SCREEN_PTR#10 = (byte*) PLEX_SCREEN_PTR#3 (byte*) PLEX_SCREEN_PTR#19 (byte*) PLEX_SCREEN_PTR#11 (byte*) PLEX_SCREEN_PTR#4 -Alias (byte) plex_show_idx#16 = (byte) plex_show_idx#5 (byte) plex_show_idx#17 (byte) plex_show_idx#6 -Alias (byte) plex_sprite_idx#16 = (byte) plex_sprite_idx#5 (byte) plex_sprite_idx#17 (byte) plex_sprite_idx#6 -Alias (byte) plex_sprite_msb#18 = (byte) plex_sprite_msb#6 (byte) plex_sprite_msb#19 (byte) plex_sprite_msb#7 +Alias (byte*) PLEX_SCREEN_PTR#10 = (byte*) PLEX_SCREEN_PTR#3 (byte*) PLEX_SCREEN_PTR#18 (byte*) PLEX_SCREEN_PTR#11 (byte*) PLEX_SCREEN_PTR#4 +Alias (byte) plex_show_idx#15 = (byte) plex_show_idx#5 (byte) plex_show_idx#16 (byte) plex_show_idx#6 +Alias (byte) plex_sprite_idx#15 = (byte) plex_sprite_idx#5 (byte) plex_sprite_idx#16 (byte) plex_sprite_idx#6 +Alias (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#6 (byte) plex_sprite_msb#18 (byte) plex_sprite_msb#7 Alias (byte*) SPRITE#2 = (byte*) SPRITE#3 Alias (byte*) PLEX_SCREEN_PTR#12 = (byte*) PLEX_SCREEN_PTR#5 -Alias (byte*) PLEX_SCREEN_PTR#24 = (byte*) PLEX_SCREEN_PTR#29 -Alias (byte*) PLEX_SCREEN_PTR#13 = (byte*) PLEX_SCREEN_PTR#21 (byte*) PLEX_SCREEN_PTR#6 +Alias (byte*) PLEX_SCREEN_PTR#23 = (byte*) PLEX_SCREEN_PTR#26 +Alias (byte*) PLEX_SCREEN_PTR#13 = (byte*) PLEX_SCREEN_PTR#20 (byte*) PLEX_SCREEN_PTR#6 Alias (byte) loop::sin_idx#6 = (byte) loop::sin_idx#8 Alias (byte*) YSIN#4 = (byte*) YSIN#6 -Alias (byte) plex_show_idx#10 = (byte) plex_show_idx#47 (byte) plex_show_idx#33 (byte) plex_show_idx#22 -Alias (byte) plex_sprite_idx#10 = (byte) plex_sprite_idx#44 (byte) plex_sprite_idx#31 (byte) plex_sprite_idx#21 -Alias (byte) plex_sprite_msb#11 = (byte) plex_sprite_msb#44 (byte) plex_sprite_msb#31 (byte) plex_sprite_msb#23 -Alias (byte*) PLEX_SCREEN_PTR#39 = (byte*) PLEX_SCREEN_PTR#43 +Alias (byte) plex_show_idx#20 = (byte) plex_show_idx#46 (byte) plex_show_idx#30 (byte) plex_show_idx#9 +Alias (byte) plex_sprite_idx#19 = (byte) plex_sprite_idx#41 (byte) plex_sprite_idx#28 (byte) plex_sprite_idx#9 +Alias (byte) plex_sprite_msb#10 = (byte) plex_sprite_msb#41 (byte) plex_sprite_msb#28 (byte) plex_sprite_msb#21 +Alias (byte*) PLEX_SCREEN_PTR#41 = (byte*) PLEX_SCREEN_PTR#43 Alias (byte) loop::sin_idx#2 = (byte) loop::sin_idx#7 (byte) loop::sin_idx#4 (byte) loop::y_idx#0 Alias (byte*) YSIN#2 = (byte*) YSIN#5 (byte*) YSIN#3 -Alias (byte) plex_show_idx#42 = (byte) plex_show_idx#48 (byte) plex_show_idx#45 -Alias (byte) plex_sprite_idx#39 = (byte) plex_sprite_idx#45 (byte) plex_sprite_idx#42 -Alias (byte) plex_sprite_msb#39 = (byte) plex_sprite_msb#45 (byte) plex_sprite_msb#42 -Alias (byte*) PLEX_SCREEN_PTR#35 = (byte*) PLEX_SCREEN_PTR#40 (byte*) PLEX_SCREEN_PTR#37 +Alias (byte) plex_show_idx#39 = (byte) plex_show_idx#47 (byte) plex_show_idx#43 +Alias (byte) plex_sprite_idx#36 = (byte) plex_sprite_idx#42 (byte) plex_sprite_idx#39 +Alias (byte) plex_sprite_msb#36 = (byte) plex_sprite_msb#42 (byte) plex_sprite_msb#39 +Alias (byte*) PLEX_SCREEN_PTR#39 = (byte*) PLEX_SCREEN_PTR#42 (byte*) PLEX_SCREEN_PTR#40 Alias (byte) loop::sin_idx#3 = (byte) loop::sin_idx#5 -Alias (byte) plex_show_idx#31 = (byte) plex_show_idx#38 -Alias (byte) plex_sprite_idx#30 = (byte) plex_sprite_idx#36 -Alias (byte) plex_sprite_msb#28 = (byte) plex_sprite_msb#36 -Alias (byte*) PLEX_SCREEN_PTR#25 = (byte*) PLEX_SCREEN_PTR#30 (byte*) PLEX_SCREEN_PTR#33 -Alias (byte*) YSIN#1 = (byte*) YSIN#24 (byte*) YSIN#23 -Alias (byte) loop::sin_idx#1 = (byte) loop::sin_idx#21 -Alias (byte) plex_show_idx#18 = (byte) plex_show_idx#7 -Alias (byte) plex_sprite_idx#18 = (byte) plex_sprite_idx#7 -Alias (byte) plex_sprite_msb#20 = (byte) plex_sprite_msb#8 -Alias (byte) loop::ss#4 = (byte) loop::ss#6 -Alias (byte*) PLEX_SCREEN_PTR#17 = (byte*) PLEX_SCREEN_PTR#26 (byte*) PLEX_SCREEN_PTR#41 -Alias (byte) loop::sin_idx#18 = (byte) loop::sin_idx#19 (byte) loop::sin_idx#20 -Alias (byte*) YSIN#20 = (byte*) YSIN#21 (byte*) YSIN#22 -Alias (byte) plex_sprite_idx#19 = (byte) plex_sprite_idx#8 (byte) plex_sprite_idx#48 -Alias (byte) plex_show_idx#19 = (byte) plex_show_idx#8 (byte) plex_show_idx#39 -Alias (byte) plex_sprite_msb#21 = (byte) plex_sprite_msb#9 (byte) plex_sprite_msb#48 -Alias (byte) plex_show_idx#20 = (byte) plex_show_idx#32 (byte) plex_show_idx#46 (byte) plex_show_idx#44 -Alias (byte) plex_sprite_idx#41 = (byte) plex_sprite_idx#46 (byte) plex_sprite_idx#47 (byte) plex_sprite_idx#43 -Alias (byte*) PLEX_SCREEN_PTR#32 = (byte*) PLEX_SCREEN_PTR#36 (byte*) PLEX_SCREEN_PTR#38 (byte*) PLEX_SCREEN_PTR#34 -Alias (byte) plex_sprite_msb#41 = (byte) plex_sprite_msb#46 (byte) plex_sprite_msb#47 (byte) plex_sprite_msb#43 -Alias (byte) loop::ss#10 = (byte) loop::ss#12 (byte) loop::ss#13 (byte) loop::ss#11 +Alias (byte) plex_show_idx#28 = (byte) plex_show_idx#35 +Alias (byte) plex_sprite_idx#27 = (byte) plex_sprite_idx#33 +Alias (byte) plex_sprite_msb#26 = (byte) plex_sprite_msb#33 +Alias (byte*) PLEX_SCREEN_PTR#35 = (byte*) PLEX_SCREEN_PTR#37 (byte*) PLEX_SCREEN_PTR#38 +Alias (byte*) YSIN#1 = (byte*) YSIN#24 (byte*) YSIN#22 +Alias (byte) loop::sin_idx#1 = (byte) loop::sin_idx#20 +Alias (byte) plex_show_idx#17 = (byte) plex_show_idx#7 +Alias (byte) plex_sprite_idx#17 = (byte) plex_sprite_idx#7 +Alias (byte) plex_sprite_msb#19 = (byte) plex_sprite_msb#8 +Alias (byte) plex_show_idx#36 = (byte) plex_show_idx#44 (byte) plex_show_idx#40 +Alias (byte) plex_sprite_idx#45 = (byte) plex_sprite_idx#47 (byte) plex_sprite_idx#46 +Alias (byte*) PLEX_SCREEN_PTR#32 = (byte*) PLEX_SCREEN_PTR#36 (byte*) PLEX_SCREEN_PTR#34 +Alias (byte) plex_sprite_msb#45 = (byte) plex_sprite_msb#47 (byte) plex_sprite_msb#46 +Alias (byte) loop::sin_idx#18 = (byte) loop::sin_idx#21 (byte) loop::sin_idx#19 +Alias (byte*) YSIN#20 = (byte*) YSIN#23 (byte*) YSIN#21 +Alias (byte) plex_show_idx#18 = (byte) plex_show_idx#29 (byte) plex_show_idx#45 (byte) plex_show_idx#42 +Alias (byte) plex_sprite_idx#38 = (byte) plex_sprite_idx#43 (byte) plex_sprite_idx#44 (byte) plex_sprite_idx#40 +Alias (byte*) PLEX_SCREEN_PTR#28 = (byte*) PLEX_SCREEN_PTR#30 (byte*) PLEX_SCREEN_PTR#31 (byte*) PLEX_SCREEN_PTR#29 +Alias (byte) plex_sprite_msb#38 = (byte) plex_sprite_msb#43 (byte) plex_sprite_msb#44 (byte) plex_sprite_msb#40 +Alias (byte) loop::ss#6 = (byte) loop::ss#8 (byte) loop::ss#9 (byte) loop::ss#7 Alias (byte) loop::sin_idx#14 = (byte) loop::sin_idx#16 (byte) loop::sin_idx#17 (byte) loop::sin_idx#15 Alias (byte*) YSIN#16 = (byte*) YSIN#18 (byte*) YSIN#19 (byte*) YSIN#17 Alias (byte) loop::plexShowNextYpos1_return#0 = (byte) loop::plexShowNextYpos1_return#2 (byte) loop::plexShowNextYpos1_return#1 (byte) loop::plexShowNextYpos1_return#3 (byte~) loop::$7 Alias (byte) loop::rasterY#0 = (byte/signed word/word/dword/signed dword~) loop::$8 Alias (byte) loop::rasterY#1 = (byte) loop::rasterY#2 -Alias (byte) plex_sprite_idx#23 = (byte) plex_sprite_idx#40 (byte) plex_sprite_idx#37 -Alias (byte) plex_show_idx#24 = (byte) plex_show_idx#43 (byte) plex_show_idx#40 -Alias (byte*) PLEX_SCREEN_PTR#16 = (byte*) PLEX_SCREEN_PTR#31 (byte*) PLEX_SCREEN_PTR#27 (byte*) PLEX_SCREEN_PTR#42 (byte*) PLEX_SCREEN_PTR#45 -Alias (byte) plex_sprite_msb#30 = (byte) plex_sprite_msb#40 (byte) plex_sprite_msb#37 -Alias (byte) loop::ss#5 = (byte) loop::ss#9 (byte) loop::ss#8 (byte) loop::ss#7 +Alias (byte) plex_sprite_idx#21 = (byte) plex_sprite_idx#37 (byte) plex_sprite_idx#34 +Alias (byte) plex_show_idx#22 = (byte) plex_show_idx#41 (byte) plex_show_idx#37 +Alias (byte*) PLEX_SCREEN_PTR#16 = (byte*) PLEX_SCREEN_PTR#27 (byte*) PLEX_SCREEN_PTR#24 (byte*) PLEX_SCREEN_PTR#33 (byte*) PLEX_SCREEN_PTR#45 +Alias (byte) plex_sprite_msb#27 = (byte) plex_sprite_msb#37 (byte) plex_sprite_msb#34 +Alias (byte) loop::ss#2 = (byte) loop::ss#5 (byte) loop::ss#4 (byte) loop::ss#3 Alias (byte) loop::sin_idx#10 = (byte) loop::sin_idx#13 (byte) loop::sin_idx#12 (byte) loop::sin_idx#11 (byte) loop::sin_idx#9 Alias (byte*) YSIN#10 = (byte*) YSIN#15 (byte*) YSIN#14 (byte*) YSIN#12 (byte*) YSIN#8 -Alias (byte) plex_sprite_idx#20 = (byte) plex_sprite_idx#9 (byte) plex_sprite_idx#35 -Alias (byte) plex_show_idx#21 = (byte) plex_show_idx#9 (byte) plex_show_idx#37 -Alias (byte) plex_sprite_msb#10 = (byte) plex_sprite_msb#22 (byte) plex_sprite_msb#35 +Alias (byte) plex_sprite_idx#18 = (byte) plex_sprite_idx#8 (byte) plex_sprite_idx#32 +Alias (byte) plex_show_idx#19 = (byte) plex_show_idx#8 (byte) plex_show_idx#34 +Alias (byte) plex_sprite_msb#20 = (byte) plex_sprite_msb#9 (byte) plex_sprite_msb#32 Alias (byte*) SCREEN#0 = (byte*) SCREEN#3 Alias (byte*) SPRITE#0 = (byte*) SPRITE#5 Alias (byte*) YSIN#0 = (byte*) YSIN#13 Alias (byte*) PLEX_SCREEN_PTR#14 = (byte*) PLEX_SCREEN_PTR#7 -Alias (byte) plex_show_idx#11 = (byte) plex_show_idx#23 -Alias (byte) plex_sprite_idx#11 = (byte) plex_sprite_idx#22 -Alias (byte) plex_sprite_msb#12 = (byte) plex_sprite_msb#24 +Alias (byte) plex_show_idx#10 = (byte) plex_show_idx#21 +Alias (byte) plex_sprite_idx#10 = (byte) plex_sprite_idx#20 +Alias (byte) plex_sprite_msb#11 = (byte) plex_sprite_msb#22 Succesful SSA optimization Pass2AliasElimination Not aliassing across scopes: plexInit::plexSetScreen1_screen#0 plexInit::screen#0 Not aliassing identity: PLEX_SCREEN_PTR#15 PLEX_SCREEN_PTR#15 Not aliassing identity: plexSort::nxt_y#1 plexSort::nxt_y#1 Not aliassing identity: plexSort::nxt_idx#1 plexSort::nxt_idx#1 Not aliassing identity: plexSort::m#5 plexSort::m#5 -Not aliassing across scopes: plex_sprite_idx#13 plex_sprite_idx#23 -Not aliassing across scopes: plex_show_idx#13 plex_show_idx#24 +Not aliassing across scopes: plex_sprite_idx#12 plex_sprite_idx#21 +Not aliassing across scopes: plex_show_idx#12 plex_show_idx#22 Not aliassing across scopes: PLEX_SCREEN_PTR#9 PLEX_SCREEN_PTR#16 -Not aliassing across scopes: plex_sprite_msb#14 plex_sprite_msb#30 -Not aliassing across scopes: PLEX_SCREEN_PTR#18 PLEX_SCREEN_PTR#0 +Not aliassing across scopes: plex_sprite_msb#13 plex_sprite_msb#27 +Not aliassing across scopes: PLEX_SCREEN_PTR#17 PLEX_SCREEN_PTR#0 Not aliassing across scopes: SCREEN#2 SCREEN#0 -Not aliassing across scopes: plex_show_idx#30 plex_show_idx#0 -Not aliassing across scopes: plex_sprite_idx#29 plex_sprite_idx#0 -Not aliassing across scopes: plex_sprite_msb#27 plex_sprite_msb#0 +Not aliassing across scopes: plex_show_idx#27 plex_show_idx#0 +Not aliassing across scopes: plex_sprite_idx#26 plex_sprite_idx#0 +Not aliassing across scopes: plex_sprite_msb#25 plex_sprite_msb#0 Not aliassing across scopes: SPRITE#4 SPRITE#0 Not aliassing across scopes: YSIN#11 YSIN#0 Not aliassing across scopes: PLEX_SCREEN_PTR#10 PLEX_SCREEN_PTR#13 -Not aliassing across scopes: plex_show_idx#16 plex_show_idx#10 -Not aliassing across scopes: plex_sprite_idx#16 plex_sprite_idx#10 -Not aliassing across scopes: plex_sprite_msb#18 plex_sprite_msb#11 +Not aliassing across scopes: plex_show_idx#15 plex_show_idx#20 +Not aliassing across scopes: plex_sprite_idx#15 plex_sprite_idx#19 +Not aliassing across scopes: plex_sprite_msb#17 plex_sprite_msb#10 Not aliassing across scopes: SCREEN#1 SCREEN#2 -Not aliassing across scopes: PLEX_SCREEN_PTR#20 PLEX_SCREEN_PTR#18 +Not aliassing across scopes: PLEX_SCREEN_PTR#19 PLEX_SCREEN_PTR#17 Not aliassing across scopes: SPRITE#2 SPRITE#4 Not aliassing across scopes: plexInit::screen#0 SCREEN#1 Not aliassing across scopes: PLEX_SCREEN_PTR#12 PLEX_SCREEN_PTR#15 Not aliassing identity: SPRITE#1 SPRITE#1 -Not aliassing identity: PLEX_SCREEN_PTR#24 PLEX_SCREEN_PTR#24 +Not aliassing identity: PLEX_SCREEN_PTR#23 PLEX_SCREEN_PTR#23 Not aliassing identity: PLEX_SCREEN_PTR#13 PLEX_SCREEN_PTR#13 -Not aliassing across scopes: plex_show_idx#36 plex_show_idx#30 -Not aliassing across scopes: plex_sprite_idx#34 plex_sprite_idx#29 -Not aliassing across scopes: plex_sprite_msb#34 plex_sprite_msb#27 +Not aliassing across scopes: plex_show_idx#33 plex_show_idx#27 +Not aliassing across scopes: plex_sprite_idx#31 plex_sprite_idx#26 +Not aliassing across scopes: plex_sprite_msb#31 plex_sprite_msb#25 Not aliassing across scopes: YSIN#7 YSIN#11 Not aliassing across scopes: PLEX_SCREEN_PTR#44 PLEX_SCREEN_PTR#10 -Not aliassing across scopes: plex_show_idx#18 plex_show_idx#1 -Not aliassing across scopes: plex_sprite_idx#18 plex_sprite_idx#1 -Not aliassing across scopes: plex_sprite_msb#20 plex_sprite_msb#1 -Not aliassing across scopes: plex_sprite_idx#19 plex_sprite_idx#15 -Not aliassing across scopes: plex_show_idx#19 plex_show_idx#15 -Not aliassing across scopes: plex_sprite_msb#21 plex_sprite_msb#17 +Not aliassing across scopes: plex_show_idx#17 plex_show_idx#1 +Not aliassing across scopes: plex_sprite_idx#17 plex_sprite_idx#1 +Not aliassing across scopes: plex_sprite_msb#19 plex_sprite_msb#1 Not aliassing identity: loop::rasterY#1 loop::rasterY#1 -Not aliassing identity: plex_sprite_idx#23 plex_sprite_idx#23 -Not aliassing identity: plex_show_idx#24 plex_show_idx#24 +Not aliassing identity: plex_sprite_idx#21 plex_sprite_idx#21 +Not aliassing identity: plex_show_idx#22 plex_show_idx#22 Not aliassing identity: PLEX_SCREEN_PTR#16 PLEX_SCREEN_PTR#16 -Not aliassing identity: plex_sprite_msb#30 plex_sprite_msb#30 -Not aliassing identity: loop::ss#5 loop::ss#5 +Not aliassing identity: plex_sprite_msb#27 plex_sprite_msb#27 +Not aliassing identity: loop::ss#2 loop::ss#2 Not aliassing identity: loop::sin_idx#10 loop::sin_idx#10 Not aliassing identity: YSIN#10 YSIN#10 -Not aliassing across scopes: plex_sprite_idx#20 plex_sprite_idx#15 -Not aliassing across scopes: plex_show_idx#21 plex_show_idx#15 -Not aliassing across scopes: plex_sprite_msb#10 plex_sprite_msb#17 +Not aliassing across scopes: plex_sprite_idx#18 plex_sprite_idx#14 +Not aliassing across scopes: plex_show_idx#19 plex_show_idx#14 +Not aliassing across scopes: plex_sprite_msb#20 plex_sprite_msb#16 Not aliassing across scopes: PLEX_SCREEN_PTR#14 PLEX_SCREEN_PTR#10 -Not aliassing across scopes: plex_show_idx#11 plex_show_idx#16 -Not aliassing across scopes: plex_sprite_idx#11 plex_sprite_idx#16 -Not aliassing across scopes: plex_sprite_msb#12 plex_sprite_msb#18 -Alias (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#14 -Alias (byte) plex_show_idx#13 = (byte) plex_show_idx#14 -Alias (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#16 -Alias (byte) plex_sprite_idx#15 = (byte) plex_sprite_idx#27 -Alias (byte) plex_show_idx#15 = (byte) plex_show_idx#28 +Not aliassing across scopes: plex_show_idx#10 plex_show_idx#15 +Not aliassing across scopes: plex_sprite_idx#10 plex_sprite_idx#15 +Not aliassing across scopes: plex_sprite_msb#11 plex_sprite_msb#17 +Alias (byte) plex_sprite_idx#12 = (byte) plex_sprite_idx#13 +Alias (byte) plex_show_idx#12 = (byte) plex_show_idx#13 +Alias (byte) plex_sprite_msb#13 = (byte) plex_sprite_msb#15 +Alias (byte) plex_sprite_idx#14 = (byte) plex_sprite_idx#24 +Alias (byte) plex_show_idx#14 = (byte) plex_show_idx#25 Succesful SSA optimization Pass2AliasElimination Not aliassing across scopes: plexInit::plexSetScreen1_screen#0 plexInit::screen#0 Not aliassing identity: PLEX_SCREEN_PTR#15 PLEX_SCREEN_PTR#15 Not aliassing identity: plexSort::nxt_y#1 plexSort::nxt_y#1 Not aliassing identity: plexSort::nxt_idx#1 plexSort::nxt_idx#1 Not aliassing identity: plexSort::m#5 plexSort::m#5 -Not aliassing across scopes: plex_sprite_idx#13 plex_sprite_idx#23 -Not aliassing across scopes: plex_show_idx#13 plex_show_idx#24 +Not aliassing across scopes: plex_sprite_idx#12 plex_sprite_idx#21 +Not aliassing across scopes: plex_show_idx#12 plex_show_idx#22 Not aliassing across scopes: PLEX_SCREEN_PTR#9 PLEX_SCREEN_PTR#16 -Not aliassing across scopes: plex_sprite_msb#14 plex_sprite_msb#30 -Not aliassing across scopes: PLEX_SCREEN_PTR#18 PLEX_SCREEN_PTR#0 +Not aliassing across scopes: plex_sprite_msb#13 plex_sprite_msb#27 +Not aliassing across scopes: PLEX_SCREEN_PTR#17 PLEX_SCREEN_PTR#0 Not aliassing across scopes: SCREEN#2 SCREEN#0 -Not aliassing across scopes: plex_show_idx#30 plex_show_idx#0 -Not aliassing across scopes: plex_sprite_idx#29 plex_sprite_idx#0 -Not aliassing across scopes: plex_sprite_msb#27 plex_sprite_msb#0 +Not aliassing across scopes: plex_show_idx#27 plex_show_idx#0 +Not aliassing across scopes: plex_sprite_idx#26 plex_sprite_idx#0 +Not aliassing across scopes: plex_sprite_msb#25 plex_sprite_msb#0 Not aliassing across scopes: SPRITE#4 SPRITE#0 Not aliassing across scopes: YSIN#11 YSIN#0 Not aliassing across scopes: PLEX_SCREEN_PTR#10 PLEX_SCREEN_PTR#13 -Not aliassing across scopes: plex_show_idx#16 plex_show_idx#10 -Not aliassing across scopes: plex_sprite_idx#16 plex_sprite_idx#10 -Not aliassing across scopes: plex_sprite_msb#18 plex_sprite_msb#11 +Not aliassing across scopes: plex_show_idx#15 plex_show_idx#20 +Not aliassing across scopes: plex_sprite_idx#15 plex_sprite_idx#19 +Not aliassing across scopes: plex_sprite_msb#17 plex_sprite_msb#10 Not aliassing across scopes: SCREEN#1 SCREEN#2 -Not aliassing across scopes: PLEX_SCREEN_PTR#20 PLEX_SCREEN_PTR#18 +Not aliassing across scopes: PLEX_SCREEN_PTR#19 PLEX_SCREEN_PTR#17 Not aliassing across scopes: SPRITE#2 SPRITE#4 Not aliassing across scopes: plexInit::screen#0 SCREEN#1 Not aliassing across scopes: PLEX_SCREEN_PTR#12 PLEX_SCREEN_PTR#15 Not aliassing identity: SPRITE#1 SPRITE#1 -Not aliassing identity: PLEX_SCREEN_PTR#24 PLEX_SCREEN_PTR#24 +Not aliassing identity: PLEX_SCREEN_PTR#23 PLEX_SCREEN_PTR#23 Not aliassing identity: PLEX_SCREEN_PTR#13 PLEX_SCREEN_PTR#13 -Not aliassing across scopes: plex_show_idx#36 plex_show_idx#30 -Not aliassing across scopes: plex_sprite_idx#34 plex_sprite_idx#29 -Not aliassing across scopes: plex_sprite_msb#34 plex_sprite_msb#27 +Not aliassing across scopes: plex_show_idx#33 plex_show_idx#27 +Not aliassing across scopes: plex_sprite_idx#31 plex_sprite_idx#26 +Not aliassing across scopes: plex_sprite_msb#31 plex_sprite_msb#25 Not aliassing across scopes: YSIN#7 YSIN#11 Not aliassing across scopes: PLEX_SCREEN_PTR#44 PLEX_SCREEN_PTR#10 -Not aliassing across scopes: plex_show_idx#18 plex_show_idx#1 -Not aliassing across scopes: plex_sprite_idx#18 plex_sprite_idx#1 -Not aliassing across scopes: plex_sprite_msb#20 plex_sprite_msb#1 -Not aliassing across scopes: plex_sprite_idx#19 plex_sprite_idx#15 -Not aliassing across scopes: plex_show_idx#19 plex_show_idx#15 -Not aliassing across scopes: plex_sprite_msb#21 plex_sprite_msb#17 +Not aliassing across scopes: plex_show_idx#17 plex_show_idx#1 +Not aliassing across scopes: plex_sprite_idx#17 plex_sprite_idx#1 +Not aliassing across scopes: plex_sprite_msb#19 plex_sprite_msb#1 Not aliassing identity: loop::rasterY#1 loop::rasterY#1 -Not aliassing identity: plex_sprite_idx#23 plex_sprite_idx#23 -Not aliassing identity: plex_show_idx#24 plex_show_idx#24 +Not aliassing identity: plex_sprite_idx#21 plex_sprite_idx#21 +Not aliassing identity: plex_show_idx#22 plex_show_idx#22 Not aliassing identity: PLEX_SCREEN_PTR#16 PLEX_SCREEN_PTR#16 -Not aliassing identity: plex_sprite_msb#30 plex_sprite_msb#30 -Not aliassing identity: loop::ss#5 loop::ss#5 +Not aliassing identity: plex_sprite_msb#27 plex_sprite_msb#27 +Not aliassing identity: loop::ss#2 loop::ss#2 Not aliassing identity: loop::sin_idx#10 loop::sin_idx#10 Not aliassing identity: YSIN#10 YSIN#10 -Not aliassing across scopes: plex_sprite_idx#20 plex_sprite_idx#15 -Not aliassing across scopes: plex_show_idx#21 plex_show_idx#15 -Not aliassing across scopes: plex_sprite_msb#10 plex_sprite_msb#17 +Not aliassing across scopes: plex_sprite_idx#18 plex_sprite_idx#14 +Not aliassing across scopes: plex_show_idx#19 plex_show_idx#14 +Not aliassing across scopes: plex_sprite_msb#20 plex_sprite_msb#16 Not aliassing across scopes: PLEX_SCREEN_PTR#14 PLEX_SCREEN_PTR#10 -Not aliassing across scopes: plex_show_idx#11 plex_show_idx#16 -Not aliassing across scopes: plex_sprite_idx#11 plex_sprite_idx#16 -Not aliassing across scopes: plex_sprite_msb#12 plex_sprite_msb#18 +Not aliassing across scopes: plex_show_idx#10 plex_show_idx#15 +Not aliassing across scopes: plex_sprite_idx#10 plex_sprite_idx#15 +Not aliassing across scopes: plex_sprite_msb#11 plex_sprite_msb#17 Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#15 Self Phi Eliminated (byte) plexSort::nxt_y#1 Self Phi Eliminated (byte) plexSort::nxt_idx#1 Self Phi Eliminated (byte) plexSort::m#5 Self Phi Eliminated (byte*) SPRITE#1 -Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#24 +Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#23 Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#13 Self Phi Eliminated (byte) loop::sin_idx#2 Self Phi Eliminated (byte*) YSIN#2 -Self Phi Eliminated (byte) plex_show_idx#42 -Self Phi Eliminated (byte) plex_sprite_idx#39 -Self Phi Eliminated (byte) plex_sprite_msb#39 -Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#35 +Self Phi Eliminated (byte) plex_show_idx#39 +Self Phi Eliminated (byte) plex_sprite_idx#36 +Self Phi Eliminated (byte) plex_sprite_msb#36 +Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#39 Self Phi Eliminated (byte*) YSIN#1 Self Phi Eliminated (byte) loop::sin_idx#3 -Self Phi Eliminated (byte) plex_show_idx#31 -Self Phi Eliminated (byte) plex_sprite_idx#30 -Self Phi Eliminated (byte) plex_sprite_msb#28 -Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#25 -Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#17 +Self Phi Eliminated (byte) plex_show_idx#28 +Self Phi Eliminated (byte) plex_sprite_idx#27 +Self Phi Eliminated (byte) plex_sprite_msb#26 +Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#35 +Self Phi Eliminated (byte) plex_show_idx#36 +Self Phi Eliminated (byte) plex_sprite_idx#45 +Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#32 +Self Phi Eliminated (byte) plex_sprite_msb#45 Self Phi Eliminated (byte) loop::sin_idx#18 Self Phi Eliminated (byte*) YSIN#20 Self Phi Eliminated (byte) loop::rasterY#1 -Self Phi Eliminated (byte) plex_sprite_idx#23 -Self Phi Eliminated (byte) plex_show_idx#24 +Self Phi Eliminated (byte) plex_sprite_idx#21 +Self Phi Eliminated (byte) plex_show_idx#22 Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#16 -Self Phi Eliminated (byte) plex_sprite_msb#30 -Self Phi Eliminated (byte) loop::ss#5 +Self Phi Eliminated (byte) plex_sprite_msb#27 +Self Phi Eliminated (byte) loop::ss#2 Self Phi Eliminated (byte) loop::sin_idx#10 Self Phi Eliminated (byte*) YSIN#10 Succesful SSA optimization Pass2SelfPhiElimination @@ -4109,83 +2434,84 @@ Redundant Phi (byte*) PLEX_SCREEN_PTR#15 (byte*) PLEX_SCREEN_PTR#1 Redundant Phi (byte) plexSort::nxt_y#1 (byte) plexSort::nxt_y#0 Redundant Phi (byte) plexSort::nxt_idx#1 (byte) plexSort::nxt_idx#0 Redundant Phi (byte) plexSort::m#5 (byte) plexSort::m#2 -Redundant Phi (byte*) PLEX_SCREEN_PTR#18 (byte*) PLEX_SCREEN_PTR#0 +Redundant Phi (byte) plex_sprite_idx#12 (byte) plex_sprite_idx#21 +Redundant Phi (byte) plex_show_idx#12 (byte) plex_show_idx#22 +Redundant Phi (byte*) PLEX_SCREEN_PTR#9 (byte*) PLEX_SCREEN_PTR#16 +Redundant Phi (byte) plex_sprite_msb#13 (byte) plex_sprite_msb#27 +Redundant Phi (byte*) PLEX_SCREEN_PTR#17 (byte*) PLEX_SCREEN_PTR#0 Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0 -Redundant Phi (byte) plex_show_idx#30 (byte) plex_show_idx#0 -Redundant Phi (byte) plex_sprite_idx#29 (byte) plex_sprite_idx#0 -Redundant Phi (byte) plex_sprite_msb#27 (byte) plex_sprite_msb#0 +Redundant Phi (byte) plex_show_idx#27 (byte) plex_show_idx#0 +Redundant Phi (byte) plex_sprite_idx#26 (byte) plex_sprite_idx#0 +Redundant Phi (byte) plex_sprite_msb#25 (byte) plex_sprite_msb#0 Redundant Phi (byte*) SPRITE#4 (byte*) SPRITE#0 Redundant Phi (byte*) YSIN#11 (byte*) YSIN#0 Redundant Phi (byte*) PLEX_SCREEN_PTR#10 (byte*) PLEX_SCREEN_PTR#13 -Redundant Phi (byte) plex_show_idx#16 (byte) plex_show_idx#10 -Redundant Phi (byte) plex_sprite_idx#16 (byte) plex_sprite_idx#10 -Redundant Phi (byte) plex_sprite_msb#18 (byte) plex_sprite_msb#11 +Redundant Phi (byte) plex_show_idx#15 (byte) plex_show_idx#20 +Redundant Phi (byte) plex_sprite_idx#15 (byte) plex_sprite_idx#19 +Redundant Phi (byte) plex_sprite_msb#17 (byte) plex_sprite_msb#10 Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2 -Redundant Phi (byte*) PLEX_SCREEN_PTR#20 (byte*) PLEX_SCREEN_PTR#18 +Redundant Phi (byte*) PLEX_SCREEN_PTR#19 (byte*) PLEX_SCREEN_PTR#17 Redundant Phi (byte*) SPRITE#2 (byte*) SPRITE#4 Redundant Phi (byte*) PLEX_SCREEN_PTR#12 (byte*) PLEX_SCREEN_PTR#15 Redundant Phi (byte*) SPRITE#1 (byte*) SPRITE#2 -Redundant Phi (byte*) PLEX_SCREEN_PTR#24 (byte*) PLEX_SCREEN_PTR#12 -Redundant Phi (byte*) PLEX_SCREEN_PTR#13 (byte*) PLEX_SCREEN_PTR#24 -Redundant Phi (byte) plex_show_idx#36 (byte) plex_show_idx#30 -Redundant Phi (byte) plex_sprite_idx#34 (byte) plex_sprite_idx#29 -Redundant Phi (byte) plex_sprite_msb#34 (byte) plex_sprite_msb#27 +Redundant Phi (byte*) PLEX_SCREEN_PTR#23 (byte*) PLEX_SCREEN_PTR#12 +Redundant Phi (byte*) PLEX_SCREEN_PTR#13 (byte*) PLEX_SCREEN_PTR#23 +Redundant Phi (byte) plex_show_idx#33 (byte) plex_show_idx#27 +Redundant Phi (byte) plex_sprite_idx#31 (byte) plex_sprite_idx#26 +Redundant Phi (byte) plex_sprite_msb#31 (byte) plex_sprite_msb#25 Redundant Phi (byte*) YSIN#7 (byte*) YSIN#11 Redundant Phi (byte*) PLEX_SCREEN_PTR#44 (byte*) PLEX_SCREEN_PTR#10 Redundant Phi (byte) loop::sin_idx#2 (byte) loop::sin_idx#6 Redundant Phi (byte*) YSIN#2 (byte*) YSIN#4 -Redundant Phi (byte) plex_show_idx#42 (byte) plex_show_idx#10 -Redundant Phi (byte) plex_sprite_idx#39 (byte) plex_sprite_idx#10 -Redundant Phi (byte) plex_sprite_msb#39 (byte) plex_sprite_msb#11 -Redundant Phi (byte*) PLEX_SCREEN_PTR#35 (byte*) PLEX_SCREEN_PTR#39 +Redundant Phi (byte) plex_show_idx#39 (byte) plex_show_idx#20 +Redundant Phi (byte) plex_sprite_idx#36 (byte) plex_sprite_idx#19 +Redundant Phi (byte) plex_sprite_msb#36 (byte) plex_sprite_msb#10 +Redundant Phi (byte*) PLEX_SCREEN_PTR#39 (byte*) PLEX_SCREEN_PTR#41 Redundant Phi (byte*) YSIN#1 (byte*) YSIN#2 Redundant Phi (byte) loop::sin_idx#3 (byte) loop::sin_idx#2 -Redundant Phi (byte) plex_show_idx#31 (byte) plex_show_idx#42 -Redundant Phi (byte) plex_sprite_idx#30 (byte) plex_sprite_idx#39 -Redundant Phi (byte) plex_sprite_msb#28 (byte) plex_sprite_msb#39 -Redundant Phi (byte*) PLEX_SCREEN_PTR#25 (byte*) PLEX_SCREEN_PTR#35 -Redundant Phi (byte) plex_show_idx#18 (byte) plex_show_idx#1 -Redundant Phi (byte) plex_sprite_idx#18 (byte) plex_sprite_idx#1 -Redundant Phi (byte) plex_sprite_msb#20 (byte) plex_sprite_msb#1 -Redundant Phi (byte*) PLEX_SCREEN_PTR#17 (byte*) PLEX_SCREEN_PTR#25 +Redundant Phi (byte) plex_show_idx#28 (byte) plex_show_idx#39 +Redundant Phi (byte) plex_sprite_idx#27 (byte) plex_sprite_idx#36 +Redundant Phi (byte) plex_sprite_msb#26 (byte) plex_sprite_msb#36 +Redundant Phi (byte*) PLEX_SCREEN_PTR#35 (byte*) PLEX_SCREEN_PTR#39 +Redundant Phi (byte) plex_show_idx#17 (byte) plex_show_idx#1 +Redundant Phi (byte) plex_sprite_idx#17 (byte) plex_sprite_idx#1 +Redundant Phi (byte) plex_sprite_msb#19 (byte) plex_sprite_msb#1 +Redundant Phi (byte) plex_show_idx#36 (byte) plex_show_idx#17 +Redundant Phi (byte) plex_sprite_idx#45 (byte) plex_sprite_idx#17 +Redundant Phi (byte*) PLEX_SCREEN_PTR#32 (byte*) PLEX_SCREEN_PTR#35 +Redundant Phi (byte) plex_sprite_msb#45 (byte) plex_sprite_msb#19 Redundant Phi (byte) loop::sin_idx#18 (byte) loop::sin_idx#1 Redundant Phi (byte*) YSIN#20 (byte*) YSIN#1 -Redundant Phi (byte) plex_sprite_idx#19 (byte) plex_sprite_idx#15 -Redundant Phi (byte) plex_show_idx#19 (byte) plex_show_idx#15 -Redundant Phi (byte) plex_sprite_msb#21 (byte) plex_sprite_msb#17 Redundant Phi (byte) loop::rasterY#1 (byte) loop::rasterY#0 -Redundant Phi (byte) plex_sprite_idx#23 (byte) plex_sprite_idx#41 -Redundant Phi (byte) plex_show_idx#24 (byte) plex_show_idx#20 -Redundant Phi (byte*) PLEX_SCREEN_PTR#16 (byte*) PLEX_SCREEN_PTR#32 -Redundant Phi (byte) plex_sprite_msb#30 (byte) plex_sprite_msb#41 -Redundant Phi (byte) loop::ss#5 (byte) loop::ss#10 +Redundant Phi (byte) plex_sprite_idx#21 (byte) plex_sprite_idx#38 +Redundant Phi (byte) plex_show_idx#22 (byte) plex_show_idx#18 +Redundant Phi (byte*) PLEX_SCREEN_PTR#16 (byte*) PLEX_SCREEN_PTR#28 +Redundant Phi (byte) plex_sprite_msb#27 (byte) plex_sprite_msb#38 +Redundant Phi (byte) loop::ss#2 (byte) loop::ss#6 Redundant Phi (byte) loop::sin_idx#10 (byte) loop::sin_idx#14 Redundant Phi (byte*) YSIN#10 (byte*) YSIN#16 -Redundant Phi (byte) plex_sprite_idx#20 (byte) plex_sprite_idx#15 -Redundant Phi (byte) plex_show_idx#21 (byte) plex_show_idx#15 -Redundant Phi (byte) plex_sprite_msb#10 (byte) plex_sprite_msb#17 +Redundant Phi (byte) plex_sprite_idx#18 (byte) plex_sprite_idx#14 +Redundant Phi (byte) plex_show_idx#19 (byte) plex_show_idx#14 +Redundant Phi (byte) plex_sprite_msb#20 (byte) plex_sprite_msb#16 Redundant Phi (byte*) PLEX_SCREEN_PTR#14 (byte*) PLEX_SCREEN_PTR#10 -Redundant Phi (byte) plex_show_idx#11 (byte) plex_show_idx#16 -Redundant Phi (byte) plex_sprite_idx#11 (byte) plex_sprite_idx#16 -Redundant Phi (byte) plex_sprite_msb#12 (byte) plex_sprite_msb#18 +Redundant Phi (byte) plex_show_idx#10 (byte) plex_show_idx#15 +Redundant Phi (byte) plex_sprite_idx#10 (byte) plex_sprite_idx#15 +Redundant Phi (byte) plex_sprite_msb#11 (byte) plex_sprite_msb#17 Succesful SSA optimization Pass2RedundantPhiElimination Redundant Phi (byte) plexSort::m#3 (byte) plexSort::m#2 -Redundant Phi (byte) plex_show_idx#20 (byte) plex_show_idx#15 -Redundant Phi (byte) plex_sprite_idx#41 (byte) plex_sprite_idx#15 -Redundant Phi (byte) plex_sprite_msb#41 (byte) plex_sprite_msb#17 Succesful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) plexInit::$2 if((byte) plexInit::i#1!=rangelast(0,plexInit::$1)) goto plexInit::@1 Simple Condition (bool~) plexSort::$3 if((byte) plexSort::nxt_y#0>=*((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 Simple Condition (bool~) plexSort::$8 if((byte) plexSort::m#1!=rangelast(0,plexSort::$0)) goto plexSort::@1 Simple Condition (bool~) plexShowSprite::$4 if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -Simple Condition (bool~) plexShowSprite::$9 if((byte) plex_sprite_msb#26!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@3 +Simple Condition (bool~) plexShowSprite::$9 if((byte) plex_sprite_msb#24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@3 Simple Condition (bool~) init::$7 if((byte) init::sx#1!=rangelast(0,init::$3)) goto init::@1 Simple Condition (bool~) init::$8 if((byte) init::ss#1!=rangelast(0,7)) goto init::@2 Simple Condition (bool~) loop::$0 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@5 Simple Condition (bool~) loop::$2 if((byte) loop::sy#1!=rangelast(0,loop::$1)) goto loop::@7 -Simple Condition (bool~) loop::$5 if((byte) loop::ss#1!=rangelast(0,7)) goto loop::@8 -Simple Condition (bool~) loop::$9 if(*((byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@11 -Simple Condition (bool~) loop::$11 if((byte) loop::ss#3!=rangelast(8,loop::$6)) goto loop::@9 +Simple Condition (bool~) loop::$5 if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@9 +Simple Condition (bool~) loop::$9 if(*((byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@13 +Simple Condition (bool~) loop::$11 if((byte) loop::ss#1!=rangelast(0,loop::$6)) goto loop::@11 Succesful SSA optimization Pass2ConditionalJumpSimplification Rewriting && if()-condition to two if()s (bool~) plexSort::$7 ← (bool~) plexSort::$5 && (bool~) plexSort::$6 Succesful SSA optimization Pass2ConditionalAndOrRewriting @@ -4221,7 +2547,6 @@ Constant (const byte) init::ss#0 = 0 Constant (const byte) loop::sin_idx#0 = 0 Constant (const byte) loop::sy#0 = 0 Constant (const byte) loop::ss#0 = 0 -Constant (const byte) loop::ss#2 = 8 Succesful SSA optimization Pass2ConstantIdentification Constant (const word[PLEX_COUNT#0]) PLEX_XPOS#0 = { fill( PLEX_COUNT#0, 0) } Constant (const byte[PLEX_COUNT#0]) PLEX_YPOS#0 = { fill( PLEX_COUNT#0, 0) } @@ -4248,9 +2573,9 @@ if() condition always true - replacing block destination if(true) goto loop::@2 Succesful SSA optimization Pass2ConstantIfs Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) plexSort::$1 ← (byte) plexSort::m#2 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) plexSort::$4 ← (byte) plexSort::s#3 -Eliminating unused variable - keeping the phi block (byte) plex_show_idx#10 -Eliminating unused variable - keeping the phi block (byte) plex_sprite_idx#10 -Eliminating unused variable - keeping the phi block (byte) plex_sprite_msb#11 +Eliminating unused variable - keeping the phi block (byte) plex_show_idx#20 +Eliminating unused variable - keeping the phi block (byte) plex_sprite_idx#19 +Eliminating unused variable - keeping the phi block (byte) plex_sprite_msb#10 Eliminating unused constant (const byte*) PLEX_SCREEN_PTR#0 Succesful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const word/signed word/dword/signed dword) $0 @@ -4270,11 +2595,9 @@ Resolved ranged next value init::ss#1 ← ++ init::ss#2 to ++ Resolved ranged comparison value if(init::ss#1!=rangelast(0,7)) goto init::@2 to (byte/signed byte/word/signed word/dword/signed dword) 8 Resolved ranged next value loop::sy#1 ← ++ loop::sy#2 to ++ Resolved ranged comparison value if(loop::sy#1!=rangelast(0,loop::$1)) goto loop::@7 to (const byte/signed word/word/dword/signed dword) loop::$1+(byte/signed byte/word/signed word/dword/signed dword) 1 -Resolved ranged next value loop::ss#1 ← ++ loop::ss#4 to ++ -Resolved ranged comparison value if(loop::ss#1!=rangelast(0,7)) goto loop::@8 to (byte/signed byte/word/signed word/dword/signed dword) 8 -Resolved ranged next value loop::ss#3 ← ++ loop::ss#10 to ++ -Resolved ranged comparison value if(loop::ss#3!=rangelast(8,loop::$6)) goto loop::@9 to (const byte/signed word/word/dword/signed dword) loop::$6+(byte/signed byte/word/signed word/dword/signed dword) 1 -Culled Empty Block (label) @23 +Resolved ranged next value loop::ss#1 ← ++ loop::ss#6 to ++ +Resolved ranged comparison value if(loop::ss#1!=rangelast(0,loop::$6)) goto loop::@11 to (const byte/signed word/word/dword/signed dword) loop::$6+(byte/signed byte/word/signed word/dword/signed dword) 1 +Culled Empty Block (label) @3 Culled Empty Block (label) plexInit::@3 Culled Empty Block (label) plexSort::@4 Culled Empty Block (label) plexSort::@6 @@ -4284,36 +2607,33 @@ Culled Empty Block (label) main::@2 Culled Empty Block (label) init::@5 Culled Empty Block (label) loop::@2 Culled Empty Block (label) loop::@5 -Culled Empty Block (label) loop::@19 +Culled Empty Block (label) loop::@9 +Culled Empty Block (label) loop::@10 Culled Empty Block (label) loop::plexShowNextYpos1_@return -Culled Empty Block (label) loop::@11 -Culled Empty Block (label) @32 +Culled Empty Block (label) loop::@13 +Culled Empty Block (label) @12 Succesful SSA optimization Pass2CullEmptyBlocks Not culling empty block because it shares successor with its predecessor. (label) plexShowSprite::@6 -Not aliassing across scopes: PLEX_SCREEN_PTR#9 PLEX_SCREEN_PTR#32 Alias (byte) plexSort::m#2 = (byte~) plexSort::$1 Alias (byte) plexSort::s#3 = (byte~) plexSort::$4 Succesful SSA optimization Pass2AliasElimination -Not aliassing across scopes: PLEX_SCREEN_PTR#9 PLEX_SCREEN_PTR#32 -Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#32 +Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#28 Self Phi Eliminated (byte) loop::sin_idx#14 Self Phi Eliminated (byte*) YSIN#16 Succesful SSA optimization Pass2SelfPhiElimination -Redundant Phi (byte*) PLEX_SCREEN_PTR#32 (byte*) PLEX_SCREEN_PTR#39 +Redundant Phi (byte*) PLEX_SCREEN_PTR#28 (byte*) PLEX_SCREEN_PTR#41 Redundant Phi (byte) loop::sin_idx#14 (byte) loop::sin_idx#1 Redundant Phi (byte*) YSIN#16 (byte*) YSIN#4 Succesful SSA optimization Pass2RedundantPhiElimination -Redundant Phi (byte*) PLEX_SCREEN_PTR#9 (byte*) PLEX_SCREEN_PTR#39 -Succesful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) plexSort::$5 if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 Simple Condition (bool~) plexSort::$6 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 Succesful SSA optimization Pass2ConditionalJumpSimplification Not culling empty block because it shares successor with its predecessor. (label) plexShowSprite::@6 Self Phi Eliminated (byte*) YSIN#4 -Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#39 +Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#41 Succesful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte*) YSIN#4 (const byte*) YSIN#0 -Redundant Phi (byte*) PLEX_SCREEN_PTR#39 (const byte*) PLEX_SCREEN_PTR#1 +Redundant Phi (byte*) PLEX_SCREEN_PTR#41 (const byte*) PLEX_SCREEN_PTR#1 Succesful SSA optimization Pass2RedundantPhiElimination Not culling empty block because it shares successor with its predecessor. (label) plexShowSprite::@6 OPTIMIZING CONTROL FLOW GRAPH @@ -4333,25 +2653,13 @@ Inlining constant with var siblings (const byte) loop::sy#0 Inlining constant with var siblings (const byte) loop::sy#0 Inlining constant with var siblings (const byte) loop::ss#0 Inlining constant with var siblings (const byte) loop::ss#0 -Inlining constant with var siblings (const byte) loop::ss#0 -Inlining constant with var siblings (const byte) loop::ss#0 -Inlining constant with different constant siblings (const byte) loop::ss#0 -Inlining constant with var siblings (const byte) loop::ss#2 -Inlining constant with var siblings (const byte) loop::ss#2 -Inlining constant with var siblings (const byte) loop::ss#2 -Inlining constant with var siblings (const byte) loop::ss#2 -Inlining constant with different constant siblings (const byte) loop::ss#2 -Inlining constant with var siblings (const byte) plex_show_idx#1 Inlining constant with var siblings (const byte) plex_show_idx#1 Inlining constant with var siblings (const byte) plex_show_idx#1 Inlining constant with var siblings (const byte) plex_sprite_idx#1 Inlining constant with var siblings (const byte) plex_sprite_idx#1 -Inlining constant with var siblings (const byte) plex_sprite_idx#1 Inlining constant with var siblings (const byte) plex_sprite_msb#1 Inlining constant with var siblings (const byte) plex_sprite_msb#1 Inlining constant with var siblings (const byte) plex_sprite_msb#1 -Inlining constant with var siblings (const byte) plex_sprite_msb#1 -Inlining constant with var siblings (const byte) plex_sprite_msb#4 Inlining constant with var siblings (const byte) plex_sprite_msb#4 Inlining constant with var siblings (const byte) plex_sprite_msb#4 Inlining constant with var siblings (const byte) plex_sprite_msb#4 @@ -4377,12 +2685,10 @@ Constant inlined loop::sy#0 = (byte/signed byte/word/signed word/dword/signed dw Constant inlined loop::$6 = (const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined loop::ss#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined init::sx#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined loop::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 8 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @28 @31 @end main main::@1 main::@return loop loop::@1 loop::@4 loop::@6 loop::@7 loop::@18 loop::@26 loop::@8 loop::@27 loop::@9 loop::plexShowNextYpos1 loop::@25 loop::@10 loop::@12 loop::@28 loop::@23 plexShowSprite plexShowSprite::@4 plexShowSprite::@2 plexShowSprite::@6 plexShowSprite::@return plexShowSprite::@1 plexSort plexSort::@1 plexSort::@3 plexSort::@5 plexSort::@2 plexSort::@return plexSort::@7 init init::@1 init::@3 init::@2 init::@return plexInit plexInit::plexSetScreen1 plexInit::@1 plexInit::@return -Added new block during phi lifting loop::@29(between loop::@7 and loop::@7) -Added new block during phi lifting loop::@30(between loop::@27 and loop::@8) -Added new block during phi lifting loop::@31(between loop::@28 and loop::@9) +Block Sequence Planned @begin @8 @11 @end main main::@1 main::@return loop loop::@1 loop::@4 loop::@6 loop::@7 loop::@20 loop::@30 loop::@8 loop::@11 loop::plexShowNextYpos1 loop::@29 loop::@12 loop::@14 loop::@31 loop::@27 plexShowSprite plexShowSprite::@4 plexShowSprite::@2 plexShowSprite::@6 plexShowSprite::@return plexShowSprite::@1 plexSort plexSort::@1 plexSort::@3 plexSort::@5 plexSort::@2 plexSort::@return plexSort::@7 init init::@1 init::@3 init::@2 init::@return plexInit plexInit::plexSetScreen1 plexInit::@1 plexInit::@return +Added new block during phi lifting loop::@32(between loop::@7 and loop::@7) +Added new block during phi lifting loop::@33(between loop::@31 and loop::@11) Added new block during phi lifting plexShowSprite::@7(between plexShowSprite::@2 and plexShowSprite::@return) Added new block during phi lifting plexSort::@8(between plexSort::@2 and plexSort::@1) Added new block during phi lifting plexSort::@9(between plexSort::@7 and plexSort::@3) @@ -4390,9 +2696,9 @@ Added new block during phi lifting plexSort::@10(between plexSort::@1 and plexSo Added new block during phi lifting init::@6(between init::@1 and init::@1) Added new block during phi lifting init::@7(between init::@2 and init::@2) Added new block during phi lifting plexInit::@4(between plexInit::@1 and plexInit::@1) -Block Sequence Planned @begin @28 @31 @end main main::@1 main::@return loop loop::@1 loop::@4 loop::@6 loop::@7 loop::@18 loop::@26 loop::@8 loop::@27 loop::@9 loop::plexShowNextYpos1 loop::@25 loop::@10 loop::@12 loop::@28 loop::@23 loop::@31 loop::@30 loop::@29 plexShowSprite plexShowSprite::@4 plexShowSprite::@2 plexShowSprite::@6 plexShowSprite::@return plexShowSprite::@7 plexShowSprite::@1 plexSort plexSort::@1 plexSort::@10 plexSort::@3 plexSort::@5 plexSort::@2 plexSort::@return plexSort::@8 plexSort::@7 plexSort::@9 init init::@1 init::@3 init::@2 init::@return init::@7 init::@6 plexInit plexInit::plexSetScreen1 plexInit::@1 plexInit::@return plexInit::@4 +Block Sequence Planned @begin @8 @11 @end main main::@1 main::@return loop loop::@1 loop::@4 loop::@6 loop::@7 loop::@20 loop::@30 loop::@8 loop::@11 loop::plexShowNextYpos1 loop::@29 loop::@12 loop::@14 loop::@31 loop::@27 loop::@33 loop::@32 plexShowSprite plexShowSprite::@4 plexShowSprite::@2 plexShowSprite::@6 plexShowSprite::@return plexShowSprite::@7 plexShowSprite::@1 plexSort plexSort::@1 plexSort::@10 plexSort::@3 plexSort::@5 plexSort::@2 plexSort::@return plexSort::@8 plexSort::@7 plexSort::@9 init init::@1 init::@3 init::@2 init::@return init::@7 init::@6 plexInit plexInit::plexSetScreen1 plexInit::@1 plexInit::@return plexInit::@4 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @31 +Adding NOP phi() at start of @11 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@1 Adding NOP phi() at start of loop @@ -4403,8 +2709,8 @@ Adding NOP phi() at start of plexInit::plexSetScreen1 CALL GRAPH Calls in [] to main:4 Calls in [main] to init:7 loop:9 -Calls in [loop] to plexSort:23 plexShowSprite:29 plexShowSprite:41 -Calls in [init] to plexInit:93 +Calls in [loop] to plexSort:23 plexShowSprite:33 +Calls in [init] to plexInit:83 Propagating live ranges... Propagating live ranges... @@ -4423,42 +2729,26 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Propagating live ranges... -Propagating live ranges... -Propagating live ranges... -Propagating live ranges... -Propagating live ranges... -Propagating live ranges... -Propagating live ranges... -Propagating live ranges... -Created 18 initial phi equivalence classes +Created 14 initial phi equivalence classes Not coalescing [15] loop::y_idx#3 ← loop::sin_idx#6 -Coalesced [26] plex_sprite_idx#51 ← plex_sprite_idx#24 -Coalesced [27] plex_show_idx#51 ← plex_show_idx#25 -Coalesced [28] plex_sprite_msb#51 ← plex_sprite_msb#29 -Coalesced [38] plex_sprite_idx#50 ← plex_sprite_idx#15 -Coalesced [39] plex_show_idx#50 ← plex_show_idx#15 -Coalesced [40] plex_sprite_msb#50 ← plex_sprite_msb#17 -Coalesced [45] loop::sin_idx#22 ← loop::sin_idx#1 -Coalesced [46] loop::ss#15 ← loop::ss#3 -Coalesced (already) [47] plex_sprite_idx#49 ← plex_sprite_idx#15 -Coalesced (already) [48] plex_show_idx#49 ← plex_show_idx#15 -Coalesced (already) [49] plex_sprite_msb#49 ← plex_sprite_msb#17 -Coalesced [50] loop::ss#14 ← loop::ss#1 -Coalesced [51] loop::y_idx#4 ← loop::y_idx#1 -Coalesced [52] loop::sy#3 ← loop::sy#1 -Coalesced [72] plex_sprite_msb#52 ← plex_sprite_msb#26 -Not coalescing [79] plexSort::s#6 ← plexSort::m#2 -Coalesced [89] plexSort::m#7 ← plexSort::m#1 -Coalesced [91] plexSort::s#5 ← plexSort::s#1 -Coalesced [107] init::ss#3 ← init::ss#1 -Coalesced [108] init::sx#3 ← init::sx#1 -Coalesced [109] init::xp#3 ← init::xp#1 -Coalesced [117] plexInit::i#3 ← plexInit::i#1 -Coalesced down to 14 phi equivalence classes -Culled Empty Block (label) loop::@31 -Culled Empty Block (label) loop::@30 -Culled Empty Block (label) loop::@29 +Coalesced [37] loop::sin_idx#22 ← loop::sin_idx#1 +Coalesced [38] plex_show_idx#48 ← plex_show_idx#14 +Coalesced [39] plex_sprite_idx#48 ← plex_sprite_idx#14 +Coalesced [40] plex_sprite_msb#48 ← plex_sprite_msb#16 +Coalesced [41] loop::ss#10 ← loop::ss#1 +Coalesced [42] loop::y_idx#4 ← loop::y_idx#1 +Coalesced [43] loop::sy#3 ← loop::sy#1 +Coalesced [62] plex_sprite_msb#49 ← plex_sprite_msb#24 +Not coalescing [69] plexSort::s#6 ← plexSort::m#2 +Coalesced [79] plexSort::m#7 ← plexSort::m#1 +Coalesced [81] plexSort::s#5 ← plexSort::s#1 +Coalesced [97] init::ss#3 ← init::ss#1 +Coalesced [98] init::sx#3 ← init::sx#1 +Coalesced [99] init::xp#3 ← init::xp#1 +Coalesced [107] plexInit::i#3 ← plexInit::i#1 +Coalesced down to 13 phi equivalence classes +Culled Empty Block (label) loop::@33 +Culled Empty Block (label) loop::@32 Culled Empty Block (label) plexShowSprite::@6 Not culling empty block because it shares successor with its predecessor. (label) plexShowSprite::@7 Culled Empty Block (label) plexSort::@8 @@ -4466,9 +2756,9 @@ Culled Empty Block (label) plexSort::@9 Culled Empty Block (label) init::@7 Culled Empty Block (label) init::@6 Culled Empty Block (label) plexInit::@4 -Block Sequence Planned @begin @28 @31 @end main main::@1 main::@return loop loop::@1 loop::@4 loop::@6 loop::@7 loop::@18 loop::@26 loop::@8 loop::@27 loop::@9 loop::plexShowNextYpos1 loop::@25 loop::@10 loop::@12 loop::@28 loop::@23 plexShowSprite plexShowSprite::@4 plexShowSprite::@2 plexShowSprite::@return plexShowSprite::@7 plexShowSprite::@1 plexSort plexSort::@1 plexSort::@10 plexSort::@3 plexSort::@5 plexSort::@2 plexSort::@return plexSort::@7 init init::@1 init::@3 init::@2 init::@return plexInit plexInit::plexSetScreen1 plexInit::@1 plexInit::@return +Block Sequence Planned @begin @8 @11 @end main main::@1 main::@return loop loop::@1 loop::@4 loop::@6 loop::@7 loop::@20 loop::@30 loop::@8 loop::@11 loop::plexShowNextYpos1 loop::@29 loop::@12 loop::@14 loop::@31 loop::@27 plexShowSprite plexShowSprite::@4 plexShowSprite::@2 plexShowSprite::@return plexShowSprite::@7 plexShowSprite::@1 plexSort plexSort::@1 plexSort::@10 plexSort::@3 plexSort::@5 plexSort::@2 plexSort::@return plexSort::@7 init init::@1 init::@3 init::@2 init::@return plexInit plexInit::plexSetScreen1 plexInit::@1 plexInit::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @31 +Adding NOP phi() at start of @11 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@1 Adding NOP phi() at start of loop @@ -4492,15 +2782,13 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Propagating live ranges... -Propagating live ranges... FINAL CONTROL FLOW GRAPH @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++) @@ -4511,14 +2799,14 @@ FINAL CONTROL FLOW GRAPH .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 @@ -4532,8 +2820,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 ] ) @@ -4549,213 +2837,205 @@ 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 DOMINATORS @begin dominated by @begin -@28 dominated by @28 @begin -@31 dominated by @28 @31 @begin -@end dominated by @end @28 @31 @begin -main dominated by @28 main @31 @begin -main::@1 dominated by @28 main main::@1 @31 @begin -main::@return dominated by main::@return @28 main main::@1 @31 @begin -loop dominated by @28 main loop main::@1 @31 @begin -loop::@1 dominated by @28 main loop loop::@1 main::@1 @31 @begin -loop::@4 dominated by @28 main loop loop::@1 main::@1 loop::@4 @31 @begin -loop::@6 dominated by @28 main loop loop::@1 main::@1 loop::@6 loop::@4 @31 @begin -loop::@7 dominated by @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin -loop::@18 dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin -loop::@26 dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@26 @begin -loop::@8 dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin -loop::@27 dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 loop::@27 @begin -loop::@9 dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@9 loop::@26 loop::@27 @begin -loop::plexShowNextYpos1 dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@9 loop::@26 loop::@27 @begin loop::plexShowNextYpos1 -loop::@25 dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@9 loop::@25 loop::@26 loop::@27 @begin loop::plexShowNextYpos1 -loop::@10 dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@9 loop::@25 loop::@26 loop::@27 @begin loop::@10 loop::plexShowNextYpos1 -loop::@12 dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@9 loop::@25 loop::@26 loop::@27 @begin loop::@10 loop::plexShowNextYpos1 loop::@12 -loop::@28 dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@9 loop::@25 loop::@26 loop::@27 loop::@28 @begin loop::@10 loop::plexShowNextYpos1 loop::@12 -loop::@23 dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@23 @31 loop::@8 loop::@9 loop::@25 loop::@26 loop::@27 loop::@28 @begin loop::@10 loop::plexShowNextYpos1 loop::@12 -plexShowSprite dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin plexShowSprite -plexShowSprite::@4 dominated by loop::@18 @28 plexShowSprite::@4 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin plexShowSprite -plexShowSprite::@2 dominated by loop::@18 @28 main plexShowSprite::@2 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin plexShowSprite -plexShowSprite::@return dominated by loop::@18 @28 main plexShowSprite::@2 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin plexShowSprite plexShowSprite::@return -plexShowSprite::@7 dominated by loop::@18 plexShowSprite::@7 @28 main plexShowSprite::@2 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin plexShowSprite -plexShowSprite::@1 dominated by loop::@18 @28 main plexShowSprite::@1 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin plexShowSprite -plexSort dominated by loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort -plexSort::@1 dominated by loop::@18 plexSort::@1 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort -plexSort::@10 dominated by loop::@18 plexSort::@1 @28 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort -plexSort::@3 dominated by loop::@18 plexSort::@1 @28 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort plexSort::@3 -plexSort::@5 dominated by loop::@18 plexSort::@1 @28 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort plexSort::@3 plexSort::@5 -plexSort::@2 dominated by plexSort::@2 loop::@18 plexSort::@1 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort -plexSort::@return dominated by plexSort::@2 loop::@18 plexSort::@1 @28 plexSort::@return main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort -plexSort::@7 dominated by loop::@18 plexSort::@1 @28 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort plexSort::@7 plexSort::@3 -init dominated by @28 main @31 init @begin -init::@1 dominated by @28 main @31 init @begin init::@1 -init::@3 dominated by @28 main @31 init @begin init::@3 init::@1 -init::@2 dominated by @28 main @31 init @begin init::@3 init::@2 init::@1 -init::@return dominated by @28 main @31 init @begin init::@return init::@3 init::@2 init::@1 -plexInit dominated by @28 main @31 init @begin plexInit -plexInit::plexSetScreen1 dominated by @28 plexInit::plexSetScreen1 main @31 init @begin plexInit -plexInit::@1 dominated by @28 plexInit::plexSetScreen1 main @31 plexInit::@1 init @begin plexInit -plexInit::@return dominated by @28 plexInit::plexSetScreen1 main @31 plexInit::@1 init @begin plexInit plexInit::@return +@8 dominated by @begin @8 +@11 dominated by @11 @begin @8 +@end dominated by @end @11 @begin @8 +main dominated by main @11 @begin @8 +main::@1 dominated by main main::@1 @11 @begin @8 +main::@return dominated by main::@return main main::@1 @11 @begin @8 +loop dominated by main loop main::@1 @11 @begin @8 +loop::@1 dominated by main loop loop::@1 main::@1 @11 @begin @8 +loop::@4 dominated by main loop loop::@1 main::@1 loop::@4 @11 @begin @8 +loop::@6 dominated by main loop loop::@1 main::@1 loop::@6 loop::@4 @11 @begin @8 +loop::@7 dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @11 @begin @8 +loop::@20 dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin @8 +loop::@30 dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin @8 loop::@30 +loop::@8 dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin @8 loop::@30 +loop::@11 dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin @8 loop::@30 loop::@11 +loop::plexShowNextYpos1 dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin @8 loop::@30 loop::@11 loop::plexShowNextYpos1 +loop::@29 dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 @8 loop::@30 loop::@11 loop::plexShowNextYpos1 +loop::@12 dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 +loop::@14 dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 +loop::@31 dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 @8 loop::@30 loop::@31 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 +loop::@27 dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 loop::@27 @begin loop::@29 @8 loop::@30 loop::@31 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 +plexShowSprite dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 plexShowSprite @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 +plexShowSprite::@4 dominated by plexShowSprite::@4 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 plexShowSprite @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 +plexShowSprite::@2 dominated by main plexShowSprite::@2 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 plexShowSprite @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 +plexShowSprite::@return dominated by main plexShowSprite::@2 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 plexShowSprite plexShowSprite::@return @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 +plexShowSprite::@7 dominated by plexShowSprite::@7 main plexShowSprite::@2 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 plexShowSprite @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 +plexShowSprite::@1 dominated by main plexShowSprite::@1 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 plexShowSprite @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 +plexSort dominated by main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 +plexSort::@1 dominated by plexSort::@1 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 +plexSort::@10 dominated by plexSort::@1 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 +plexSort::@3 dominated by plexSort::@1 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 plexSort::@3 +plexSort::@5 dominated by plexSort::@1 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 plexSort::@3 plexSort::@5 +plexSort::@2 dominated by plexSort::@2 plexSort::@1 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 +plexSort::@return dominated by plexSort::@2 plexSort::@1 plexSort::@return main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 +plexSort::@7 dominated by plexSort::@1 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 plexSort::@7 plexSort::@3 +init dominated by main @11 init @begin @8 +init::@1 dominated by main @11 init @begin init::@1 @8 +init::@3 dominated by main @11 init @begin init::@3 init::@1 @8 +init::@2 dominated by main @11 init @begin init::@3 init::@2 init::@1 @8 +init::@return dominated by main @11 init @begin init::@return init::@3 init::@2 init::@1 @8 +plexInit dominated by main @11 init @begin plexInit @8 +plexInit::plexSetScreen1 dominated by plexInit::plexSetScreen1 main @11 init @begin plexInit @8 +plexInit::@1 dominated by plexInit::plexSetScreen1 main plexInit::@1 @11 init @begin plexInit @8 +plexInit::@return dominated by plexInit::plexSetScreen1 main plexInit::@1 @11 init @begin plexInit @8 plexInit::@return NATURAL LOOPS Found back edge: Loop head: loop::@4 tails: loop::@4 blocks: null Found back edge: Loop head: loop::@7 tails: loop::@7 blocks: null -Found back edge: Loop head: loop::@8 tails: loop::@27 blocks: null -Found back edge: Loop head: loop::@10 tails: loop::@10 blocks: null -Found back edge: Loop head: loop::@9 tails: loop::@28 blocks: null -Found back edge: Loop head: loop::@1 tails: loop::@23 blocks: null +Found back edge: Loop head: loop::@8 tails: loop::@8 blocks: null +Found back edge: Loop head: loop::@12 tails: loop::@12 blocks: null +Found back edge: Loop head: loop::@11 tails: loop::@31 blocks: null +Found back edge: Loop head: loop::@1 tails: loop::@27 blocks: null Found back edge: Loop head: plexSort::@1 tails: plexSort::@2 blocks: null Found back edge: Loop head: plexSort::@3 tails: plexSort::@7 blocks: null Found back edge: Loop head: init::@1 tails: init::@1 blocks: null @@ -4763,10 +3043,10 @@ Found back edge: Loop head: init::@2 tails: init::@2 blocks: null Found back edge: Loop head: plexInit::@1 tails: plexInit::@1 blocks: null Populated: Loop head: loop::@4 tails: loop::@4 blocks: loop::@4 Populated: Loop head: loop::@7 tails: loop::@7 blocks: loop::@7 -Populated: Loop head: loop::@8 tails: loop::@27 blocks: loop::@27 loop::@8 -Populated: Loop head: loop::@10 tails: loop::@10 blocks: loop::@10 -Populated: Loop head: loop::@9 tails: loop::@28 blocks: loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 -Populated: Loop head: loop::@1 tails: loop::@23 blocks: loop::@23 loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 loop::@27 loop::@8 loop::@26 loop::@18 loop::@7 loop::@6 loop::@4 loop::@1 +Populated: Loop head: loop::@8 tails: loop::@8 blocks: loop::@8 +Populated: Loop head: loop::@12 tails: loop::@12 blocks: loop::@12 +Populated: Loop head: loop::@11 tails: loop::@31 blocks: loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 +Populated: Loop head: loop::@1 tails: loop::@27 blocks: loop::@27 loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 loop::@8 loop::@30 loop::@20 loop::@7 loop::@6 loop::@4 loop::@1 Populated: Loop head: plexSort::@1 tails: plexSort::@2 blocks: plexSort::@2 plexSort::@1 plexSort::@5 plexSort::@3 plexSort::@7 plexSort::@10 Populated: Loop head: plexSort::@3 tails: plexSort::@7 blocks: plexSort::@7 plexSort::@3 Populated: Loop head: init::@1 tails: init::@1 blocks: init::@1 @@ -4774,10 +3054,10 @@ Populated: Loop head: init::@2 tails: init::@2 blocks: init::@2 Populated: Loop head: plexInit::@1 tails: plexInit::@1 blocks: plexInit::@1 Loop head: loop::@4 tails: loop::@4 blocks: loop::@4 Loop head: loop::@7 tails: loop::@7 blocks: loop::@7 -Loop head: loop::@8 tails: loop::@27 blocks: loop::@27 loop::@8 -Loop head: loop::@10 tails: loop::@10 blocks: loop::@10 -Loop head: loop::@9 tails: loop::@28 blocks: loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 -Loop head: loop::@1 tails: loop::@23 blocks: loop::@23 loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 loop::@27 loop::@8 loop::@26 loop::@18 loop::@7 loop::@6 loop::@4 loop::@1 +Loop head: loop::@8 tails: loop::@8 blocks: loop::@8 +Loop head: loop::@12 tails: loop::@12 blocks: loop::@12 +Loop head: loop::@11 tails: loop::@31 blocks: loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 +Loop head: loop::@1 tails: loop::@27 blocks: loop::@27 loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 loop::@8 loop::@30 loop::@20 loop::@7 loop::@6 loop::@4 loop::@1 Loop head: plexSort::@1 tails: plexSort::@2 blocks: plexSort::@2 plexSort::@1 plexSort::@5 plexSort::@3 plexSort::@7 plexSort::@10 Loop head: plexSort::@3 tails: plexSort::@7 blocks: plexSort::@7 plexSort::@3 Loop head: init::@1 tails: init::@1 blocks: init::@1 @@ -4793,10 +3073,10 @@ Found 2 loops in scope [init] Found 6 loops in scope [loop] Loop head: loop::@4 tails: loop::@4 blocks: loop::@4 Loop head: loop::@7 tails: loop::@7 blocks: loop::@7 - Loop head: loop::@8 tails: loop::@27 blocks: loop::@27 loop::@8 - Loop head: loop::@10 tails: loop::@10 blocks: loop::@10 - Loop head: loop::@9 tails: loop::@28 blocks: loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 - Loop head: loop::@1 tails: loop::@23 blocks: loop::@23 loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 loop::@27 loop::@8 loop::@26 loop::@18 loop::@7 loop::@6 loop::@4 loop::@1 + Loop head: loop::@8 tails: loop::@8 blocks: loop::@8 + Loop head: loop::@12 tails: loop::@12 blocks: loop::@12 + Loop head: loop::@11 tails: loop::@31 blocks: loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 + Loop head: loop::@1 tails: loop::@27 blocks: loop::@27 loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 loop::@8 loop::@30 loop::@20 loop::@7 loop::@6 loop::@4 loop::@1 Found 1 loops in scope [plexInit] Loop head: plexInit::@1 tails: plexInit::@1 blocks: plexInit::@1 Found 2 loops in scope [plexSort] @@ -4805,10 +3085,10 @@ Found 2 loops in scope [plexSort] Found 0 loops in scope [plexShowSprite] Loop head: loop::@4 tails: loop::@4 blocks: loop::@4 depth: 2 Loop head: loop::@7 tails: loop::@7 blocks: loop::@7 depth: 2 -Loop head: loop::@8 tails: loop::@27 blocks: loop::@27 loop::@8 depth: 2 -Loop head: loop::@10 tails: loop::@10 blocks: loop::@10 depth: 3 -Loop head: loop::@9 tails: loop::@28 blocks: loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 depth: 2 -Loop head: loop::@1 tails: loop::@23 blocks: loop::@23 loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 loop::@27 loop::@8 loop::@26 loop::@18 loop::@7 loop::@6 loop::@4 loop::@1 depth: 1 +Loop head: loop::@8 tails: loop::@8 blocks: loop::@8 depth: 2 +Loop head: loop::@12 tails: loop::@12 blocks: loop::@12 depth: 3 +Loop head: loop::@11 tails: loop::@31 blocks: loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 depth: 2 +Loop head: loop::@1 tails: loop::@27 blocks: loop::@27 loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 loop::@8 loop::@30 loop::@20 loop::@7 loop::@6 loop::@4 loop::@1 depth: 1 Loop head: plexSort::@1 tails: plexSort::@2 blocks: plexSort::@2 plexSort::@1 plexSort::@5 plexSort::@3 plexSort::@7 plexSort::@10 depth: 2 Loop head: plexSort::@3 tails: plexSort::@7 blocks: plexSort::@7 plexSort::@3 depth: 3 Loop head: init::@1 tails: init::@1 blocks: init::@1 depth: 1 @@ -4850,18 +3130,17 @@ VARIABLE REGISTER WEIGHTS (word) init::xp#1 7.333333333333333 (word) init::xp#2 8.25 (void()) loop() +(byte~) loop::$4 202.0 (byte) loop::plexShowNextYpos1_return (byte) loop::plexShowNextYpos1_return#0 202.0 (byte) loop::rasterY (byte) loop::rasterY#0 551.0 (byte) loop::sin_idx -(byte) loop::sin_idx#1 1.2222222222222223 +(byte) loop::sin_idx#1 1.375 (byte) loop::sin_idx#6 3.666666666666667 (byte) loop::ss (byte) loop::ss#1 151.5 -(byte) loop::ss#10 28.857142857142858 -(byte) loop::ss#3 151.5 -(byte) loop::ss#4 101.0 +(byte) loop::ss#6 28.857142857142858 (byte) loop::sy (byte) loop::sy#1 151.5 (byte) loop::sy#2 101.0 @@ -4900,34 +3179,31 @@ VARIABLE REGISTER WEIGHTS (byte) plexSort::s#3 2052.5 (byte~) plexSort::s#6 202.0 (byte) plex_show_idx -(byte) plex_show_idx#13 14.999999999999998 -(byte) plex_show_idx#15 16.944444444444443 -(byte) plex_show_idx#25 202.0 +(byte) plex_show_idx#14 11.444444444444443 +(byte) plex_show_idx#18 11.052631578947366 (byte) plex_sprite_idx -(byte) plex_sprite_idx#13 17.333333333333336 -(byte) plex_sprite_idx#15 10.736842105263158 -(byte) plex_sprite_idx#24 202.0 +(byte) plex_sprite_idx#14 10.299999999999999 +(byte) plex_sprite_idx#38 6.2941176470588225 (byte) plex_sprite_msb -(byte) plex_sprite_msb#14 13.866666666666665 -(byte) plex_sprite_msb#17 14.571428571428571 -(byte) plex_sprite_msb#26 2.0 -(byte) plex_sprite_msb#29 202.0 +(byte) plex_sprite_msb#16 20.599999999999998 +(byte) plex_sprite_msb#24 2.0 +(byte) plex_sprite_msb#38 5.349999999999999 Initial phi equivalence classes [ loop::sin_idx#6 loop::sin_idx#1 ] [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] [ loop::sy#2 loop::sy#1 ] -[ loop::ss#4 loop::ss#1 ] -[ loop::ss#10 loop::ss#3 ] -[ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] -[ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] -[ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] +[ plex_show_idx#18 plex_show_idx#14 ] +[ plex_sprite_idx#38 plex_sprite_idx#14 ] +[ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] +[ loop::ss#6 loop::ss#1 ] [ plexSort::m#2 plexSort::m#1 ] [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] [ init::sx#2 init::sx#1 ] [ init::xp#2 init::xp#1 ] [ init::ss#2 init::ss#1 ] [ plexInit::i#2 plexInit::i#1 ] +Added variable loop::$4 to zero page equivalence class [ loop::$4 ] Added variable loop::plexShowNextYpos1_return#0 to zero page equivalence class [ loop::plexShowNextYpos1_return#0 ] Added variable loop::rasterY#0 to zero page equivalence class [ loop::rasterY#0 ] Added variable plexShowSprite::plex_sprite_idx2#0 to zero page equivalence class [ plexShowSprite::plex_sprite_idx2#0 ] @@ -4944,17 +3220,17 @@ Complete equivalence classes [ loop::sin_idx#6 loop::sin_idx#1 ] [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] [ loop::sy#2 loop::sy#1 ] -[ loop::ss#4 loop::ss#1 ] -[ loop::ss#10 loop::ss#3 ] -[ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] -[ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] -[ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] +[ plex_show_idx#18 plex_show_idx#14 ] +[ plex_sprite_idx#38 plex_sprite_idx#14 ] +[ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] +[ loop::ss#6 loop::ss#1 ] [ plexSort::m#2 plexSort::m#1 ] [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] [ init::sx#2 init::sx#1 ] [ init::xp#2 init::xp#1 ] [ init::ss#2 init::ss#1 ] [ plexInit::i#2 plexInit::i#1 ] +[ loop::$4 ] [ loop::plexShowNextYpos1_return#0 ] [ loop::rasterY#0 ] [ plexShowSprite::plex_sprite_idx2#0 ] @@ -4970,17 +3246,17 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] Allocated zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] Allocated zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] -Allocated zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] -Allocated zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] -Allocated zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] -Allocated zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] -Allocated zp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] -Allocated zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] -Allocated zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] -Allocated zp ZP_BYTE:12 [ init::sx#2 init::sx#1 ] -Allocated zp ZP_WORD:13 [ init::xp#2 init::xp#1 ] -Allocated zp ZP_BYTE:15 [ init::ss#2 init::ss#1 ] -Allocated zp ZP_BYTE:16 [ plexInit::i#2 plexInit::i#1 ] +Allocated zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] +Allocated zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] +Allocated zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] +Allocated zp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ] +Allocated zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] +Allocated zp ZP_BYTE:10 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] +Allocated zp ZP_BYTE:11 [ init::sx#2 init::sx#1 ] +Allocated zp ZP_WORD:12 [ init::xp#2 init::xp#1 ] +Allocated zp ZP_BYTE:14 [ init::ss#2 init::ss#1 ] +Allocated zp ZP_BYTE:15 [ plexInit::i#2 plexInit::i#1 ] +Allocated zp ZP_BYTE:16 [ loop::$4 ] Allocated zp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ] Allocated zp ZP_BYTE:18 [ loop::rasterY#0 ] Allocated zp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ] @@ -5017,25 +3293,25 @@ INITIAL ASM .label SCREEN = $400 .label YSIN = $2100 .label PLEX_SCREEN_PTR = SCREEN+$3f8 - .label plex_sprite_idx = 7 - .label plex_show_idx = 8 - .label plex_sprite_msb = 9 + .label plex_sprite_idx = 6 + .label plex_show_idx = 5 + .label plex_sprite_msb = 7 //SEG2 @begin bbegin: - jmp b28 -//SEG3 @28 -b28: -//SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 51 .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))) }} + jmp b8 +//SEG3 @8 +b8: +//SEG4 kickasm(location (const byte*) YSIN#0) {{ .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))) }} //SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} -//SEG6 [3] phi from @28 to @31 [phi:@28->@31] -b31_from_b28: - jmp b31 -//SEG7 @31 -b31: +//SEG6 [3] phi from @8 to @11 [phi:@8->@11] +b11_from_b8: + jmp b11 +//SEG7 @11 +b11: //SEG8 [4] call main [ ] ( ) jsr main -//SEG9 [5] phi from @31 to @end [phi:@31->@end] -bend_from_b31: +//SEG9 [5] phi from @11 to @end [phi:@11->@end] +bend_from_b11: jmp bend //SEG10 @end bend: @@ -5062,14 +3338,13 @@ main: { } //SEG20 loop loop: { + .label _4 = $10 .label y_idx = 3 .label sy = 4 .label sin_idx = 2 - .label ss = 5 .label plexShowNextYpos1_return = $11 .label rasterY = $12 - .label ss_3 = 6 - .label ss_10 = 6 + .label ss = 8 //SEG21 [12] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: //SEG22 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 @@ -5123,134 +3398,112 @@ loop: { lda sy cmp #PLEX_COUNT-1+1 bne b7_from_b7 - jmp b18 - //SEG40 loop::@18 - b18: + jmp b20 + //SEG40 loop::@20 + b20: //SEG41 [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 ] ) -- vbuz1=vbuz1_plus_1 inc sin_idx //SEG42 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL //SEG43 [23] call plexSort [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) - //SEG44 [59] phi from loop::@18 to plexSort [phi:loop::@18->plexSort] - plexSort_from_b18: + //SEG44 [56] phi from loop::@20 to plexSort [phi:loop::@20->plexSort] + plexSort_from_b20: jsr plexSort - jmp b26 - //SEG45 loop::@26 - b26: - //SEG46 [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 - inc BORDERCOL - //SEG47 [25] phi from loop::@26 to loop::@8 [phi:loop::@26->loop::@8] - b8_from_b26: - //SEG48 [25] phi (byte) loop::ss#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#0] -- vbuz1=vbuc1 + jmp b30 + //SEG45 loop::@30 + b30: + //SEG46 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BORDERCOL + jmp b8 + //SEG47 loop::@8 + b8: + //SEG48 [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 ] ) -- vbuz1=_deref_pbuc1_band_vbuc2 + lda D011 + and #$80 + sta _4 + //SEG49 [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 ] ) -- vbuz1_neq_0_then_la1 + lda _4 + bne b8 + //SEG50 [27] phi from loop::@8 to loop::@11 [phi:loop::@8->loop::@11] + b11_from_b8: + //SEG51 [27] phi (byte) loop::ss#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#0] -- vbuz1=vbuc1 lda #0 sta ss - //SEG49 [25] phi (byte) plex_sprite_msb#29 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@26->loop::@8#1] -- vbuz1=vbuc1 + //SEG52 [27] phi (byte) plex_sprite_msb#38 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@8->loop::@11#1] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb - //SEG50 [25] phi (byte) plex_show_idx#25 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#2] -- vbuz1=vbuc1 - lda #0 - sta plex_show_idx - //SEG51 [25] phi (byte) plex_sprite_idx#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#3] -- vbuz1=vbuc1 + //SEG53 [27] phi (byte) plex_sprite_idx#38 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 lda #0 sta plex_sprite_idx - jmp b8 - //SEG52 [25] phi from loop::@27 to loop::@8 [phi:loop::@27->loop::@8] - b8_from_b27: - //SEG53 [25] phi (byte) loop::ss#4 = (byte) loop::ss#1 [phi:loop::@27->loop::@8#0] -- register_copy - //SEG54 [25] phi (byte) plex_sprite_msb#29 = (byte) plex_sprite_msb#17 [phi:loop::@27->loop::@8#1] -- register_copy - //SEG55 [25] phi (byte) plex_show_idx#25 = (byte) plex_show_idx#15 [phi:loop::@27->loop::@8#2] -- register_copy - //SEG56 [25] phi (byte) plex_sprite_idx#24 = (byte) plex_sprite_idx#15 [phi:loop::@27->loop::@8#3] -- register_copy - jmp b8 - //SEG57 loop::@8 - b8: - //SEG58 [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 ] ) - //SEG59 [39] phi from loop::@8 to plexShowSprite [phi:loop::@8->plexShowSprite] - plexShowSprite_from_b8: - //SEG60 [39] phi (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#29 [phi:loop::@8->plexShowSprite#0] -- register_copy - //SEG61 [39] phi (byte) plex_show_idx#13 = (byte) plex_show_idx#25 [phi:loop::@8->plexShowSprite#1] -- register_copy - //SEG62 [39] phi (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#24 [phi:loop::@8->plexShowSprite#2] -- register_copy - jsr plexShowSprite - jmp b27 - //SEG63 loop::@27 - b27: - //SEG64 [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 ] ) -- vbuz1=_inc_vbuz1 - inc ss - //SEG65 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 - lda ss - cmp #8 - bne b8_from_b27 - //SEG66 [29] phi from loop::@27 to loop::@9 [phi:loop::@27->loop::@9] - b9_from_b27: - //SEG67 [29] phi (byte) loop::ss#10 = (byte/signed byte/word/signed word/dword/signed dword) 8 [phi:loop::@27->loop::@9#0] -- vbuz1=vbuc1 - lda #8 - sta ss_10 - jmp b9 - //SEG68 [29] phi from loop::@28 to loop::@9 [phi:loop::@28->loop::@9] - b9_from_b28: - //SEG69 [29] phi (byte) loop::ss#10 = (byte) loop::ss#3 [phi:loop::@28->loop::@9#0] -- register_copy - jmp b9 - //SEG70 loop::@9 - b9: - //SEG71 [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 ] ) -- _deref_pbuc1=vbuc2 + //SEG54 [27] phi (byte) plex_show_idx#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuz1=vbuc1 + lda #0 + sta plex_show_idx + jmp b11 + //SEG55 [27] phi from loop::@31 to loop::@11 [phi:loop::@31->loop::@11] + b11_from_b31: + //SEG56 [27] phi (byte) loop::ss#6 = (byte) loop::ss#1 [phi:loop::@31->loop::@11#0] -- register_copy + //SEG57 [27] phi (byte) plex_sprite_msb#38 = (byte) plex_sprite_msb#16 [phi:loop::@31->loop::@11#1] -- register_copy + //SEG58 [27] phi (byte) plex_sprite_idx#38 = (byte) plex_sprite_idx#14 [phi:loop::@31->loop::@11#2] -- register_copy + //SEG59 [27] phi (byte) plex_show_idx#18 = (byte) plex_show_idx#14 [phi:loop::@31->loop::@11#3] -- register_copy + jmp b11 + //SEG60 loop::@11 + b11: + //SEG61 [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 ] ) -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL jmp plexShowNextYpos1 - //SEG72 loop::plexShowNextYpos1 + //SEG62 loop::plexShowNextYpos1 plexShowNextYpos1: - //SEG73 [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 ] ) -- vbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 + //SEG63 [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 ] ) -- vbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 ldy plex_show_idx lda PLEX_SORTED_IDX,y tay lda PLEX_YPOS,y sta plexShowNextYpos1_return - jmp b25 - //SEG74 loop::@25 - b25: - //SEG75 [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 ] ) -- vbuz1=vbuz2_minus_vbuc1 + jmp b29 + //SEG64 loop::@29 + b29: + //SEG65 [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 ] ) -- vbuz1=vbuz2_minus_vbuc1 lda plexShowNextYpos1_return sec sbc #8 sta rasterY - jmp b10 - //SEG76 loop::@10 - b10: - //SEG77 [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 ] ) -- _deref_pbuc1_lt_vbuz1_then_la1 + jmp b12 + //SEG66 loop::@12 + b12: + //SEG67 [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 ] ) -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp rasterY - bcc b10 - jmp b12 - //SEG78 loop::@12 - b12: - //SEG79 [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 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 + bcc b12 + jmp b14 + //SEG68 loop::@14 + b14: + //SEG69 [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 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG80 [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 ] ) - //SEG81 [39] phi from loop::@12 to plexShowSprite [phi:loop::@12->plexShowSprite] - plexShowSprite_from_b12: - //SEG82 [39] phi (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#17 [phi:loop::@12->plexShowSprite#0] -- register_copy - //SEG83 [39] phi (byte) plex_show_idx#13 = (byte) plex_show_idx#15 [phi:loop::@12->plexShowSprite#1] -- register_copy - //SEG84 [39] phi (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#15 [phi:loop::@12->plexShowSprite#2] -- register_copy + //SEG70 [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 ] ) jsr plexShowSprite - jmp b28 - //SEG85 loop::@28 - b28: - //SEG86 [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 ] ) -- vbuz1=_inc_vbuz1 - inc ss_3 - //SEG87 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 - lda ss_3 + jmp b31 + //SEG71 loop::@31 + b31: + //SEG72 [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 ] ) -- vbuz1=_inc_vbuz1 + inc ss + //SEG73 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda ss cmp #PLEX_COUNT-1+1 - bne b9_from_b28 - jmp b23 - //SEG88 loop::@23 - b23: - //SEG89 [38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 + bne b11_from_b31 + jmp b27 + //SEG74 loop::@27 + b27: + //SEG75 [36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG90 [12] phi from loop::@23 to loop::@1 [phi:loop::@23->loop::@1] - b1_from_b23: - //SEG91 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@23->loop::@1#0] -- register_copy + //SEG76 [12] phi from loop::@27 to loop::@1 [phi:loop::@27->loop::@1] + b1_from_b27: + //SEG77 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@27->loop::@1#0] -- register_copy jmp b1 } -//SEG92 plexShowSprite +//SEG78 plexShowSprite plexShowSprite: { .label _2 = $15 .label _3 = $16 @@ -5258,184 +3511,184 @@ plexShowSprite: { .label _6 = $18 .label plex_sprite_idx2 = $13 .label xpos_idx = $14 - //SEG93 [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 ] ) -- vbuz1=vbuz2_rol_1 + //SEG79 [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 ] ) -- vbuz1=vbuz2_rol_1 lda plex_sprite_idx asl sta plex_sprite_idx2 - //SEG94 [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 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + //SEG80 [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 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 ldx plex_show_idx lda PLEX_SORTED_IDX,x tax lda PLEX_YPOS,x ldx plex_sprite_idx2 sta SPRITES_YPOS,x - //SEG95 [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 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + //SEG81 [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 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 ldx plex_show_idx lda PLEX_SORTED_IDX,x tax lda PLEX_PTR,x ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - //SEG96 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 + //SEG82 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 ldy plex_show_idx lda PLEX_SORTED_IDX,y asl sta xpos_idx - //SEG97 [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 ] ) -- vbuz1=_lo_pwuc1_derefidx_vbuz2 + //SEG83 [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 ] ) -- vbuz1=_lo_pwuc1_derefidx_vbuz2 ldy xpos_idx lda PLEX_XPOS,y sta _2 - //SEG98 [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 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG84 [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 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda _2 ldy plex_sprite_idx2 sta SPRITES_XPOS,y - //SEG99 [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 ] ) -- vbuz1=_hi_pwuc1_derefidx_vbuz2 + //SEG85 [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 ] ) -- vbuz1=_hi_pwuc1_derefidx_vbuz2 ldy xpos_idx lda PLEX_XPOS+1,y sta _3 - //SEG100 [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 ] ) -- vbuz1_neq_0_then_la1 + //SEG86 [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 ] ) -- vbuz1_neq_0_then_la1 lda _3 bne b1 jmp b4 - //SEG101 plexShowSprite::@4 + //SEG87 plexShowSprite::@4 b4: - //SEG102 [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 ] ) -- vbuz1=vbuc1_bxor_vbuz2 + //SEG88 [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 ] ) -- vbuz1=vbuc1_bxor_vbuz2 lda plex_sprite_msb eor #$ff sta _5 - //SEG103 [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 ] ) -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + //SEG89 [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 ] ) -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 lda SPRITES_XMSB and _5 sta SPRITES_XMSB jmp b2 - //SEG104 plexShowSprite::@2 + //SEG90 plexShowSprite::@2 b2: - //SEG105 [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 ] ) -- vbuz1=vbuz2_plus_1 + //SEG91 [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 ] ) -- vbuz1=vbuz2_plus_1 ldy plex_sprite_idx iny sty _6 - //SEG106 [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 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG92 [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 ] ) -- vbuz1=vbuz2_band_vbuc1 lda #7 and _6 sta plex_sprite_idx - //SEG107 [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 ] ) -- vbuz1=_inc_vbuz1 + //SEG93 [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 ] ) -- vbuz1=_inc_vbuz1 inc plex_show_idx - //SEG108 [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 ] ) -- vbuz1=vbuz1_rol_1 + //SEG94 [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 ] ) -- vbuz1=vbuz1_rol_1 asl plex_sprite_msb - //SEG109 [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 ] ) -- vbuz1_neq_0_then_la1 + //SEG95 [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 ] ) -- vbuz1_neq_0_then_la1 lda plex_sprite_msb bne b7_from_b2 - //SEG110 [55] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] + //SEG96 [52] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] breturn_from_b2: - //SEG111 [55] phi (byte) plex_sprite_msb#17 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 + //SEG97 [52] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb jmp breturn - //SEG112 plexShowSprite::@return + //SEG98 plexShowSprite::@return breturn: - //SEG113 [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 ] ) + //SEG99 [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 ] ) rts - //SEG114 [57] phi from plexShowSprite::@2 to plexShowSprite::@7 [phi:plexShowSprite::@2->plexShowSprite::@7] + //SEG100 [54] phi from plexShowSprite::@2 to plexShowSprite::@7 [phi:plexShowSprite::@2->plexShowSprite::@7] b7_from_b2: jmp b7 - //SEG115 plexShowSprite::@7 + //SEG101 plexShowSprite::@7 b7: - //SEG116 [55] phi from plexShowSprite::@7 to plexShowSprite::@return [phi:plexShowSprite::@7->plexShowSprite::@return] + //SEG102 [52] phi from plexShowSprite::@7 to plexShowSprite::@return [phi:plexShowSprite::@7->plexShowSprite::@return] breturn_from_b7: - //SEG117 [55] phi (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#26 [phi:plexShowSprite::@7->plexShowSprite::@return#0] -- register_copy + //SEG103 [52] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#24 [phi:plexShowSprite::@7->plexShowSprite::@return#0] -- register_copy jmp breturn - //SEG118 plexShowSprite::@1 + //SEG104 plexShowSprite::@1 b1: - //SEG119 [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 ] ) -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG105 [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 ] ) -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora plex_sprite_msb sta SPRITES_XMSB jmp b2 } -//SEG120 plexSort +//SEG106 plexSort plexSort: { .label nxt_idx = $19 .label nxt_y = $1a - .label m = $a - .label s = $b + .label m = 9 + .label s = $a .label s_2 = $1b - //SEG121 [60] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] + //SEG107 [57] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] b1_from_plexSort: - //SEG122 [60] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 + //SEG108 [57] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 lda #0 sta m jmp b1 - //SEG123 [60] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] + //SEG109 [57] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] b1_from_b2: - //SEG124 [60] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy + //SEG110 [57] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy jmp b1 - //SEG125 plexSort::@1 + //SEG111 plexSort::@1 b1: - //SEG126 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG112 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy m lda PLEX_SORTED_IDX+1,y sta nxt_idx - //SEG127 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG113 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy nxt_idx lda PLEX_YPOS,y sta nxt_y - //SEG128 [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 ] ) -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + //SEG114 [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 ] ) -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 lda nxt_y ldx m ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcs b2 jmp b10 - //SEG129 plexSort::@10 + //SEG115 plexSort::@10 b10: - //SEG130 [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 ] ) -- vbuz1=vbuz2 + //SEG116 [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 ] ) -- vbuz1=vbuz2 lda m sta s - //SEG131 [65] phi from plexSort::@10 plexSort::@7 to plexSort::@3 [phi:plexSort::@10/plexSort::@7->plexSort::@3] + //SEG117 [62] phi from plexSort::@10 plexSort::@7 to plexSort::@3 [phi:plexSort::@10/plexSort::@7->plexSort::@3] b3_from_b10: b3_from_b7: - //SEG132 [65] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@10/plexSort::@7->plexSort::@3#0] -- register_copy + //SEG118 [62] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@10/plexSort::@7->plexSort::@3#0] -- register_copy jmp b3 - //SEG133 plexSort::@3 + //SEG119 plexSort::@3 b3: - //SEG134 [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 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG120 [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 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy s lda PLEX_SORTED_IDX,y sta PLEX_SORTED_IDX+1,y - //SEG135 [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 ] ) -- vbuz1=_dec_vbuz1 + //SEG121 [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 ] ) -- vbuz1=_dec_vbuz1 dec s - //SEG136 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG122 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 lda s cmp #$ff bne b7 jmp b5 - //SEG137 plexSort::@5 + //SEG123 plexSort::@5 b5: - //SEG138 [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 ] ) -- vbuz1=_inc_vbuz2 + //SEG124 [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 ] ) -- vbuz1=_inc_vbuz2 ldy s iny sty s_2 - //SEG139 [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 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG125 [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 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda nxt_idx ldy s_2 sta PLEX_SORTED_IDX,y jmp b2 - //SEG140 plexSort::@2 + //SEG126 plexSort::@2 b2: - //SEG141 [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 ] ) -- vbuz1=_inc_vbuz1 + //SEG127 [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 ] ) -- vbuz1=_inc_vbuz1 inc m - //SEG142 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG128 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 lda m cmp #PLEX_COUNT-2+1 bne b1_from_b2 jmp breturn - //SEG143 plexSort::@return + //SEG129 plexSort::@return breturn: - //SEG144 [73] return [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] ) + //SEG130 [70] return [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] ) rts - //SEG145 plexSort::@7 + //SEG131 plexSort::@7 b7: - //SEG146 [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 ] ) -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + //SEG132 [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 ] ) -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 lda nxt_y ldx s ldy PLEX_SORTED_IDX,x @@ -5443,52 +3696,52 @@ plexSort: { bcc b3_from_b7 jmp b5 } -//SEG147 init +//SEG133 init init: { .label _6 = $1c - .label xp = $d - .label sx = $c - .label ss = $f - //SEG148 [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 [ ] ) -- _deref_pbuc1=vbuc2 + .label xp = $c + .label sx = $b + .label ss = $e + //SEG134 [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 [ ] ) -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta D011 - //SEG149 [76] call plexInit [ ] ( main:4::init:7 [ ] ) - //SEG150 [90] phi from init to plexInit [phi:init->plexInit] + //SEG135 [73] call plexInit [ ] ( main:4::init:7 [ ] ) + //SEG136 [87] phi from init to plexInit [phi:init->plexInit] plexInit_from_init: jsr plexInit - //SEG151 [77] phi from init to init::@1 [phi:init->init::@1] + //SEG137 [74] phi from init to init::@1 [phi:init->init::@1] b1_from_init: - //SEG152 [77] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 + //SEG138 [74] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 lda #<$20 sta xp lda #>$20 sta xp+1 - //SEG153 [77] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuz1=vbuc1 + //SEG139 [74] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuz1=vbuc1 lda #0 sta sx jmp b1 - //SEG154 [77] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG140 [74] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG155 [77] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG156 [77] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG141 [74] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG142 [74] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy jmp b1 - //SEG157 init::@1 + //SEG143 init::@1 b1: - //SEG158 [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 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG144 [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 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 ldy sx lda #$ff&SPRITE/$40 sta PLEX_PTR,y - //SEG159 [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 ] ) -- vbuz1=vbuz2_rol_1 + //SEG145 [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 ] ) -- vbuz1=vbuz2_rol_1 lda sx asl sta _6 - //SEG160 [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 ] ) -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG146 [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 ] ) -- pwuc1_derefidx_vbuz1=vwuz2 ldy _6 lda xp sta PLEX_XPOS,y lda xp+1 sta PLEX_XPOS+1,y - //SEG161 [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 ] ) -- vwuz1=vwuz1_plus_vbuc1 + //SEG147 [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 ] ) -- vwuz1=vwuz1_plus_vbuc1 clc lda xp adc #<$c @@ -5496,80 +3749,80 @@ init: { lda xp+1 adc #>$c sta xp+1 - //SEG162 [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 ] ) -- vbuz1=_inc_vbuz1 + //SEG148 [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 ] ) -- vbuz1=_inc_vbuz1 inc sx - //SEG163 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG149 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 lda sx cmp #PLEX_COUNT-1+1 bne b1_from_b1 jmp b3 - //SEG164 init::@3 + //SEG150 init::@3 b3: - //SEG165 [84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG151 [81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG166 [85] phi from init::@3 to init::@2 [phi:init::@3->init::@2] + //SEG152 [82] phi from init::@3 to init::@2 [phi:init::@3->init::@2] b2_from_b3: - //SEG167 [85] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuz1=vbuc1 + //SEG153 [82] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuz1=vbuc1 lda #0 sta ss jmp b2 - //SEG168 [85] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG154 [82] phi from init::@2 to init::@2 [phi:init::@2->init::@2] b2_from_b2: - //SEG169 [85] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG155 [82] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy jmp b2 - //SEG170 init::@2 + //SEG156 init::@2 b2: - //SEG171 [86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG157 [83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 ldy ss lda #GREEN sta SPRITES_COLS,y - //SEG172 [87] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG158 [84] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuz1=_inc_vbuz1 inc ss - //SEG173 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG159 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 lda ss cmp #8 bne b2_from_b2 jmp breturn - //SEG174 init::@return + //SEG160 init::@return breturn: - //SEG175 [89] return [ ] ( main:4::init:7 [ ] ) + //SEG161 [86] return [ ] ( main:4::init:7 [ ] ) rts } -//SEG176 plexInit +//SEG162 plexInit plexInit: { - .label i = $10 - //SEG177 [91] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] + .label i = $f + //SEG163 [88] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] plexSetScreen1_from_plexInit: jmp plexSetScreen1 - //SEG178 plexInit::plexSetScreen1 + //SEG164 plexInit::plexSetScreen1 plexSetScreen1: - //SEG179 [92] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] + //SEG165 [89] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] b1_from_plexSetScreen1: - //SEG180 [92] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuz1=vbuc1 + //SEG166 [89] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG181 [92] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] + //SEG167 [89] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] b1_from_b1: - //SEG182 [92] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy + //SEG168 [89] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy jmp b1 - //SEG183 plexInit::@1 + //SEG169 plexInit::@1 b1: - //SEG184 [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 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG170 [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 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta PLEX_SORTED_IDX,y - //SEG185 [94] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG171 [91] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG186 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG172 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #PLEX_COUNT-1+1 bne b1_from_b1 jmp breturn - //SEG187 plexInit::@return + //SEG173 plexInit::@return breturn: - //SEG188 [96] return [ ] ( main:4::init:7::plexInit:76 [ ] ) + //SEG174 [93] return [ ] ( main:4::init:7::plexInit:73 [ ] ) rts } PLEX_XPOS: .fill 2*PLEX_COUNT, 0 @@ -5577,7 +3830,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++) @@ -5597,85 +3850,88 @@ Statement [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] -Statement [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 ] ) always clobbers reg byte a +Statement [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ] +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ] -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ plexShowSprite::xpos_idx#0 ] -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 [ ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ init::sx#2 init::sx#1 ] -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a -Statement [86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ init::ss#2 init::ss#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 [ ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ init::sx#2 init::sx#1 ] +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a +Statement [83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ init::ss#2 init::ss#1 ] Statement [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 ] ) always clobbers reg byte a Statement [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 ] ) always clobbers reg byte a Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 [ ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [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 ] ) always clobbers reg byte a -Statement [84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a -Statement [86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a +Statement [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 [ ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a +Statement [83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] : zp ZP_BYTE:6 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:12 [ init::sx#2 init::sx#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:13 [ init::xp#2 init::xp#1 ] : zp ZP_WORD:13 , -Potential registers zp ZP_BYTE:15 [ init::ss#2 init::ss#1 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:16 [ plexInit::i#2 plexInit::i#1 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] : zp ZP_BYTE:6 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:10 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:11 [ init::sx#2 init::sx#1 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:12 [ init::xp#2 init::xp#1 ] : zp ZP_WORD:12 , +Potential registers zp ZP_BYTE:14 [ init::ss#2 init::ss#1 ] : zp ZP_BYTE:14 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:15 [ plexInit::i#2 plexInit::i#1 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:16 [ loop::$4 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:18 [ loop::rasterY#0 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ] : zp ZP_BYTE:19 , reg byte x , reg byte y , @@ -5690,59 +3946,56 @@ Potential registers zp ZP_BYTE:27 [ plexSort::s#2 ] : zp ZP_BYTE:27 , reg byte a Potential registers zp ZP_BYTE:28 [ init::$6 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [plexSort] 3,622.83: zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 202: zp ZP_BYTE:27 [ plexSort::s#2 ] 193.58: zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] 150.38: zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] 30.3: zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] -Uplift Scope [loop] 551: zp ZP_BYTE:18 [ loop::rasterY#0 ] 252.5: zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] 252.5: zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] 246.33: zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] 202: zp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ] 180.36: zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] 4.89: zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Uplift Scope [] 233.94: zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] 232.44: zp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] 230.07: zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] -Uplift Scope [init] 33: zp ZP_BYTE:15 [ init::ss#2 init::ss#1 ] 25.3: zp ZP_BYTE:12 [ init::sx#2 init::sx#1 ] 22: zp ZP_BYTE:28 [ init::$6 ] 15.58: zp ZP_WORD:13 [ init::xp#2 init::xp#1 ] -Uplift Scope [plexInit] 38.5: zp ZP_BYTE:16 [ plexInit::i#2 plexInit::i#1 ] +Uplift Scope [plexSort] 3,622.83: zp ZP_BYTE:10 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 202: zp ZP_BYTE:27 [ plexSort::s#2 ] 193.58: zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] 150.38: zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] 30.3: zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] +Uplift Scope [loop] 551: zp ZP_BYTE:18 [ loop::rasterY#0 ] 252.5: zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] 246.33: zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] 202: zp ZP_BYTE:16 [ loop::$4 ] 202: zp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ] 180.36: zp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ] 5.04: zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Uplift Scope [init] 33: zp ZP_BYTE:14 [ init::ss#2 init::ss#1 ] 25.3: zp ZP_BYTE:11 [ init::sx#2 init::sx#1 ] 22: zp ZP_BYTE:28 [ init::$6 ] 15.58: zp ZP_WORD:12 [ init::xp#2 init::xp#1 ] +Uplift Scope [] 27.95: zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] 22.5: zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] 16.59: zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] +Uplift Scope [plexInit] 38.5: zp ZP_BYTE:15 [ plexInit::i#2 plexInit::i#1 ] Uplift Scope [plexShowSprite] 4: zp ZP_BYTE:21 [ plexShowSprite::$2 ] 4: zp ZP_BYTE:22 [ plexShowSprite::$3 ] 4: zp ZP_BYTE:23 [ plexShowSprite::$5 ] 4: zp ZP_BYTE:24 [ plexShowSprite::$6 ] 2: zp ZP_BYTE:20 [ plexShowSprite::xpos_idx#0 ] 1.2: zp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ] Uplift Scope [main] -Uplifting [plexSort] best 81021 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::s#2 ] zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] +Uplifting [plexSort] best 81033 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::s#2 ] zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] Limited combination testing to 100 combinations of 324 possible. -Uplifting [loop] best 79291 combination zp ZP_BYTE:18 [ loop::rasterY#0 ] reg byte y [ loop::sy#2 loop::sy#1 ] zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] zp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ] zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Limited combination testing to 100 combinations of 3888 possible. -Uplifting [] best 79291 combination zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] zp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] -Uplifting [init] best 79001 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] reg byte a [ init::$6 ] zp ZP_WORD:13 [ init::xp#2 init::xp#1 ] -Uplifting [plexInit] best 78881 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] -Uplifting [plexShowSprite] best 78861 combination reg byte a [ plexShowSprite::$2 ] reg byte a [ plexShowSprite::$3 ] reg byte a [ plexShowSprite::$5 ] reg byte a [ plexShowSprite::$6 ] zp ZP_BYTE:20 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplifting [loop] best 78903 combination zp ZP_BYTE:18 [ loop::rasterY#0 ] reg byte y [ loop::sy#2 loop::sy#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] reg byte a [ loop::$4 ] zp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ] zp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Limited combination testing to 100 combinations of 5184 possible. +Uplifting [init] best 78613 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] reg byte a [ init::$6 ] zp ZP_WORD:12 [ init::xp#2 init::xp#1 ] +Uplifting [] best 78613 combination zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] +Uplifting [plexInit] best 78493 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] +Uplifting [plexShowSprite] best 78473 combination reg byte a [ plexShowSprite::$2 ] reg byte a [ plexShowSprite::$3 ] reg byte a [ plexShowSprite::$5 ] reg byte a [ plexShowSprite::$6 ] zp ZP_BYTE:20 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ] Limited combination testing to 100 combinations of 2304 possible. -Uplifting [main] best 78861 combination +Uplifting [main] best 78473 combination Attempting to uplift remaining variables inzp ZP_BYTE:18 [ loop::rasterY#0 ] -Uplifting [loop] best 78861 combination zp ZP_BYTE:18 [ loop::rasterY#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] -Uplifting [loop] best 78861 combination zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] -Uplifting [] best 78861 combination zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] -Attempting to uplift remaining variables inzp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] -Uplifting [] best 78861 combination zp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] -Attempting to uplift remaining variables inzp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] -Uplifting [] best 78861 combination zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] +Uplifting [loop] best 78473 combination zp ZP_BYTE:18 [ loop::rasterY#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ] -Uplifting [loop] best 78261 combination reg byte a [ loop::plexShowNextYpos1_return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] -Uplifting [plexSort] best 78261 combination zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] -Uplifting [loop] best 78261 combination zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] +Uplifting [loop] best 77873 combination reg byte a [ loop::plexShowNextYpos1_return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] +Uplifting [plexSort] best 77873 combination zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ] +Uplifting [loop] best 77873 combination zp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ plexSort::nxt_y#0 ] -Uplifting [plexSort] best 78261 combination zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] +Uplifting [plexSort] best 77873 combination zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] -Uplifting [plexSort] best 78261 combination zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] +Uplifting [plexSort] best 77873 combination zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] +Uplifting [] best 77873 combination zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] +Attempting to uplift remaining variables inzp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] +Uplifting [] best 77873 combination zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] +Uplifting [] best 77873 combination zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Uplifting [loop] best 78261 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Uplifting [loop] best 77873 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ plexShowSprite::xpos_idx#0 ] -Uplifting [plexShowSprite] best 78254 combination reg byte x [ plexShowSprite::xpos_idx#0 ] +Uplifting [plexShowSprite] best 77866 combination reg byte x [ plexShowSprite::xpos_idx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ] -Uplifting [plexShowSprite] best 78247 combination reg byte y [ plexShowSprite::plex_sprite_idx2#0 ] -Coalescing zero page register [ zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] ] with [ zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 loop::ss#10 loop::ss#3 ] ] with [ zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] ] with [ zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] ] with [ zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] ] -Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:3 [ loop::ss#4 loop::ss#1 loop::ss#10 loop::ss#3 plexSort::m#2 plexSort::m#1 ] -Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:4 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 plexSort::nxt_idx#0 ] -Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:5 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 plexSort::nxt_y#0 ] -Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:6 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] -Allocated (was zp ZP_WORD:13) zp ZP_WORD:7 [ init::xp#2 init::xp#1 ] +Uplifting [plexShowSprite] best 77859 combination reg byte y [ plexShowSprite::plex_sprite_idx2#0 ] +Coalescing zero page register [ zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] ] with [ zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] ] with [ zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] ] with [ zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] ] +Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:3 [ plex_show_idx#18 plex_show_idx#14 plexSort::m#2 plexSort::m#1 ] +Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ plex_sprite_idx#38 plex_sprite_idx#14 plexSort::nxt_idx#0 ] +Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:5 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 plexSort::nxt_y#0 ] +Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:6 [ loop::ss#6 loop::ss#1 ] +Allocated (was zp ZP_WORD:12) zp ZP_WORD:7 [ init::xp#2 init::xp#1 ] Allocated (was zp ZP_BYTE:18) zp ZP_BYTE:9 [ loop::rasterY#0 ] ASSEMBLER BEFORE OPTIMIZATION @@ -5769,24 +4022,24 @@ ASSEMBLER BEFORE OPTIMIZATION .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 //SEG2 @begin bbegin: - jmp b28 -//SEG3 @28 -b28: -//SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 51 .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))) }} + jmp b8 +//SEG3 @8 +b8: +//SEG4 kickasm(location (const byte*) YSIN#0) {{ .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))) }} //SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} -//SEG6 [3] phi from @28 to @31 [phi:@28->@31] -b31_from_b28: - jmp b31 -//SEG7 @31 -b31: +//SEG6 [3] phi from @8 to @11 [phi:@8->@11] +b11_from_b8: + jmp b11 +//SEG7 @11 +b11: //SEG8 [4] call main [ ] ( ) jsr main -//SEG9 [5] phi from @31 to @end [phi:@31->@end] -bend_from_b31: +//SEG9 [5] phi from @11 to @end [phi:@11->@end] +bend_from_b11: jmp bend //SEG10 @end bend: @@ -5814,8 +4067,8 @@ main: { //SEG20 loop loop: { .label sin_idx = 2 - .label ss = 3 .label rasterY = 9 + .label ss = 6 //SEG21 [12] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: //SEG22 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 @@ -5864,339 +4117,316 @@ loop: { //SEG39 [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 ] ) -- vbuyy_neq_vbuc1_then_la1 cpy #PLEX_COUNT-1+1 bne b7_from_b7 - jmp b18 - //SEG40 loop::@18 - b18: + jmp b20 + //SEG40 loop::@20 + b20: //SEG41 [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 ] ) -- vbuz1=vbuz1_plus_1 inc sin_idx //SEG42 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL //SEG43 [23] call plexSort [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) - //SEG44 [59] phi from loop::@18 to plexSort [phi:loop::@18->plexSort] - plexSort_from_b18: + //SEG44 [56] phi from loop::@20 to plexSort [phi:loop::@20->plexSort] + plexSort_from_b20: jsr plexSort - jmp b26 - //SEG45 loop::@26 - b26: - //SEG46 [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 - inc BORDERCOL - //SEG47 [25] phi from loop::@26 to loop::@8 [phi:loop::@26->loop::@8] - b8_from_b26: - //SEG48 [25] phi (byte) loop::ss#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#0] -- vbuz1=vbuc1 + jmp b30 + //SEG45 loop::@30 + b30: + //SEG46 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BORDERCOL + jmp b8 + //SEG47 loop::@8 + b8: + //SEG48 [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 ] ) -- vbuaa=_deref_pbuc1_band_vbuc2 + lda D011 + and #$80 + //SEG49 [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 ] ) -- vbuaa_neq_0_then_la1 + cmp #0 + bne b8 + //SEG50 [27] phi from loop::@8 to loop::@11 [phi:loop::@8->loop::@11] + b11_from_b8: + //SEG51 [27] phi (byte) loop::ss#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#0] -- vbuz1=vbuc1 lda #0 sta ss - //SEG49 [25] phi (byte) plex_sprite_msb#29 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@26->loop::@8#1] -- vbuz1=vbuc1 + //SEG52 [27] phi (byte) plex_sprite_msb#38 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@8->loop::@11#1] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb - //SEG50 [25] phi (byte) plex_show_idx#25 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#2] -- vbuz1=vbuc1 - lda #0 - sta plex_show_idx - //SEG51 [25] phi (byte) plex_sprite_idx#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#3] -- vbuz1=vbuc1 + //SEG53 [27] phi (byte) plex_sprite_idx#38 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 lda #0 sta plex_sprite_idx - jmp b8 - //SEG52 [25] phi from loop::@27 to loop::@8 [phi:loop::@27->loop::@8] - b8_from_b27: - //SEG53 [25] phi (byte) loop::ss#4 = (byte) loop::ss#1 [phi:loop::@27->loop::@8#0] -- register_copy - //SEG54 [25] phi (byte) plex_sprite_msb#29 = (byte) plex_sprite_msb#17 [phi:loop::@27->loop::@8#1] -- register_copy - //SEG55 [25] phi (byte) plex_show_idx#25 = (byte) plex_show_idx#15 [phi:loop::@27->loop::@8#2] -- register_copy - //SEG56 [25] phi (byte) plex_sprite_idx#24 = (byte) plex_sprite_idx#15 [phi:loop::@27->loop::@8#3] -- register_copy - jmp b8 - //SEG57 loop::@8 - b8: - //SEG58 [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 ] ) - //SEG59 [39] phi from loop::@8 to plexShowSprite [phi:loop::@8->plexShowSprite] - plexShowSprite_from_b8: - //SEG60 [39] phi (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#29 [phi:loop::@8->plexShowSprite#0] -- register_copy - //SEG61 [39] phi (byte) plex_show_idx#13 = (byte) plex_show_idx#25 [phi:loop::@8->plexShowSprite#1] -- register_copy - //SEG62 [39] phi (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#24 [phi:loop::@8->plexShowSprite#2] -- register_copy - jsr plexShowSprite - jmp b27 - //SEG63 loop::@27 - b27: - //SEG64 [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 ] ) -- vbuz1=_inc_vbuz1 - inc ss - //SEG65 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 - lda ss - cmp #8 - bne b8_from_b27 - //SEG66 [29] phi from loop::@27 to loop::@9 [phi:loop::@27->loop::@9] - b9_from_b27: - //SEG67 [29] phi (byte) loop::ss#10 = (byte/signed byte/word/signed word/dword/signed dword) 8 [phi:loop::@27->loop::@9#0] -- vbuz1=vbuc1 - lda #8 - sta ss - jmp b9 - //SEG68 [29] phi from loop::@28 to loop::@9 [phi:loop::@28->loop::@9] - b9_from_b28: - //SEG69 [29] phi (byte) loop::ss#10 = (byte) loop::ss#3 [phi:loop::@28->loop::@9#0] -- register_copy - jmp b9 - //SEG70 loop::@9 - b9: - //SEG71 [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 ] ) -- _deref_pbuc1=vbuc2 + //SEG54 [27] phi (byte) plex_show_idx#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuz1=vbuc1 + lda #0 + sta plex_show_idx + jmp b11 + //SEG55 [27] phi from loop::@31 to loop::@11 [phi:loop::@31->loop::@11] + b11_from_b31: + //SEG56 [27] phi (byte) loop::ss#6 = (byte) loop::ss#1 [phi:loop::@31->loop::@11#0] -- register_copy + //SEG57 [27] phi (byte) plex_sprite_msb#38 = (byte) plex_sprite_msb#16 [phi:loop::@31->loop::@11#1] -- register_copy + //SEG58 [27] phi (byte) plex_sprite_idx#38 = (byte) plex_sprite_idx#14 [phi:loop::@31->loop::@11#2] -- register_copy + //SEG59 [27] phi (byte) plex_show_idx#18 = (byte) plex_show_idx#14 [phi:loop::@31->loop::@11#3] -- register_copy + jmp b11 + //SEG60 loop::@11 + b11: + //SEG61 [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 ] ) -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL jmp plexShowNextYpos1 - //SEG72 loop::plexShowNextYpos1 + //SEG62 loop::plexShowNextYpos1 plexShowNextYpos1: - //SEG73 [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 ] ) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 + //SEG63 [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 ] ) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 ldy plex_show_idx lda PLEX_SORTED_IDX,y tay lda PLEX_YPOS,y - jmp b25 - //SEG74 loop::@25 - b25: - //SEG75 [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 ] ) -- vbuz1=vbuaa_minus_vbuc1 + jmp b29 + //SEG64 loop::@29 + b29: + //SEG65 [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 ] ) -- vbuz1=vbuaa_minus_vbuc1 sec sbc #8 sta rasterY - jmp b10 - //SEG76 loop::@10 - b10: - //SEG77 [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 ] ) -- _deref_pbuc1_lt_vbuz1_then_la1 + jmp b12 + //SEG66 loop::@12 + b12: + //SEG67 [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 ] ) -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp rasterY - bcc b10 - jmp b12 - //SEG78 loop::@12 - b12: - //SEG79 [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 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 + bcc b12 + jmp b14 + //SEG68 loop::@14 + b14: + //SEG69 [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 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG80 [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 ] ) - //SEG81 [39] phi from loop::@12 to plexShowSprite [phi:loop::@12->plexShowSprite] - plexShowSprite_from_b12: - //SEG82 [39] phi (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#17 [phi:loop::@12->plexShowSprite#0] -- register_copy - //SEG83 [39] phi (byte) plex_show_idx#13 = (byte) plex_show_idx#15 [phi:loop::@12->plexShowSprite#1] -- register_copy - //SEG84 [39] phi (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#15 [phi:loop::@12->plexShowSprite#2] -- register_copy + //SEG70 [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 ] ) jsr plexShowSprite - jmp b28 - //SEG85 loop::@28 - b28: - //SEG86 [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 ] ) -- vbuz1=_inc_vbuz1 + jmp b31 + //SEG71 loop::@31 + b31: + //SEG72 [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 ] ) -- vbuz1=_inc_vbuz1 inc ss - //SEG87 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG73 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 lda ss cmp #PLEX_COUNT-1+1 - bne b9_from_b28 - jmp b23 - //SEG88 loop::@23 - b23: - //SEG89 [38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 + bne b11_from_b31 + jmp b27 + //SEG74 loop::@27 + b27: + //SEG75 [36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG90 [12] phi from loop::@23 to loop::@1 [phi:loop::@23->loop::@1] - b1_from_b23: - //SEG91 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@23->loop::@1#0] -- register_copy + //SEG76 [12] phi from loop::@27 to loop::@1 [phi:loop::@27->loop::@1] + b1_from_b27: + //SEG77 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@27->loop::@1#0] -- register_copy jmp b1 } -//SEG92 plexShowSprite +//SEG78 plexShowSprite plexShowSprite: { - //SEG93 [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 ] ) -- vbuyy=vbuz1_rol_1 + //SEG79 [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 ] ) -- vbuyy=vbuz1_rol_1 lda plex_sprite_idx asl tay - //SEG94 [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 ] ) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuz1 + //SEG80 [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 ] ) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuz1 ldx plex_show_idx lda PLEX_SORTED_IDX,x tax lda PLEX_YPOS,x sta SPRITES_YPOS,y - //SEG95 [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 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + //SEG81 [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 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 ldx plex_show_idx lda PLEX_SORTED_IDX,x tax lda PLEX_PTR,x ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - //SEG96 [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 ] ) -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 + //SEG82 [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 ] ) -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 ldx plex_show_idx lda PLEX_SORTED_IDX,x asl tax - //SEG97 [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 ] ) -- vbuaa=_lo_pwuc1_derefidx_vbuxx + //SEG83 [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 ] ) -- vbuaa=_lo_pwuc1_derefidx_vbuxx lda PLEX_XPOS,x - //SEG98 [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 ] ) -- pbuc1_derefidx_vbuyy=vbuaa + //SEG84 [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 ] ) -- pbuc1_derefidx_vbuyy=vbuaa sta SPRITES_XPOS,y - //SEG99 [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 ] ) -- vbuaa=_hi_pwuc1_derefidx_vbuxx + //SEG85 [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 ] ) -- vbuaa=_hi_pwuc1_derefidx_vbuxx lda PLEX_XPOS+1,x - //SEG100 [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 ] ) -- vbuaa_neq_0_then_la1 + //SEG86 [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 ] ) -- vbuaa_neq_0_then_la1 cmp #0 bne b1 jmp b4 - //SEG101 plexShowSprite::@4 + //SEG87 plexShowSprite::@4 b4: - //SEG102 [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 ] ) -- vbuaa=vbuc1_bxor_vbuz1 + //SEG88 [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 ] ) -- vbuaa=vbuc1_bxor_vbuz1 lda plex_sprite_msb eor #$ff - //SEG103 [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 ] ) -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG89 [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 ] ) -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB jmp b2 - //SEG104 plexShowSprite::@2 + //SEG90 plexShowSprite::@2 b2: - //SEG105 [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 ] ) -- vbuaa=vbuz1_plus_1 + //SEG91 [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 ] ) -- vbuaa=vbuz1_plus_1 lda plex_sprite_idx clc adc #1 - //SEG106 [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 ] ) -- vbuz1=vbuaa_band_vbuc1 + //SEG92 [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 ] ) -- vbuz1=vbuaa_band_vbuc1 and #7 sta plex_sprite_idx - //SEG107 [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 ] ) -- vbuz1=_inc_vbuz1 + //SEG93 [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 ] ) -- vbuz1=_inc_vbuz1 inc plex_show_idx - //SEG108 [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 ] ) -- vbuz1=vbuz1_rol_1 + //SEG94 [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 ] ) -- vbuz1=vbuz1_rol_1 asl plex_sprite_msb - //SEG109 [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 ] ) -- vbuz1_neq_0_then_la1 + //SEG95 [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 ] ) -- vbuz1_neq_0_then_la1 lda plex_sprite_msb bne b7_from_b2 - //SEG110 [55] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] + //SEG96 [52] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] breturn_from_b2: - //SEG111 [55] phi (byte) plex_sprite_msb#17 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 + //SEG97 [52] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb jmp breturn - //SEG112 plexShowSprite::@return + //SEG98 plexShowSprite::@return breturn: - //SEG113 [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 ] ) + //SEG99 [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 ] ) rts - //SEG114 [57] phi from plexShowSprite::@2 to plexShowSprite::@7 [phi:plexShowSprite::@2->plexShowSprite::@7] + //SEG100 [54] phi from plexShowSprite::@2 to plexShowSprite::@7 [phi:plexShowSprite::@2->plexShowSprite::@7] b7_from_b2: jmp b7 - //SEG115 plexShowSprite::@7 + //SEG101 plexShowSprite::@7 b7: - //SEG116 [55] phi from plexShowSprite::@7 to plexShowSprite::@return [phi:plexShowSprite::@7->plexShowSprite::@return] + //SEG102 [52] phi from plexShowSprite::@7 to plexShowSprite::@return [phi:plexShowSprite::@7->plexShowSprite::@return] breturn_from_b7: - //SEG117 [55] phi (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#26 [phi:plexShowSprite::@7->plexShowSprite::@return#0] -- register_copy + //SEG103 [52] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#24 [phi:plexShowSprite::@7->plexShowSprite::@return#0] -- register_copy jmp breturn - //SEG118 plexShowSprite::@1 + //SEG104 plexShowSprite::@1 b1: - //SEG119 [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 ] ) -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG105 [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 ] ) -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora plex_sprite_msb sta SPRITES_XMSB jmp b2 } -//SEG120 plexSort +//SEG106 plexSort plexSort: { .label nxt_idx = 4 .label nxt_y = 5 .label m = 3 - //SEG121 [60] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] + //SEG107 [57] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] b1_from_plexSort: - //SEG122 [60] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 + //SEG108 [57] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 lda #0 sta m jmp b1 - //SEG123 [60] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] + //SEG109 [57] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] b1_from_b2: - //SEG124 [60] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy + //SEG110 [57] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy jmp b1 - //SEG125 plexSort::@1 + //SEG111 plexSort::@1 b1: - //SEG126 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG112 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy m lda PLEX_SORTED_IDX+1,y sta nxt_idx - //SEG127 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG113 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy nxt_idx lda PLEX_YPOS,y sta nxt_y - //SEG128 [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 ] ) -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + //SEG114 [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 ] ) -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 lda nxt_y ldx m ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcs b2 jmp b10 - //SEG129 plexSort::@10 + //SEG115 plexSort::@10 b10: - //SEG130 [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 ] ) -- vbuxx=vbuz1 + //SEG116 [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 ] ) -- vbuxx=vbuz1 ldx m - //SEG131 [65] phi from plexSort::@10 plexSort::@7 to plexSort::@3 [phi:plexSort::@10/plexSort::@7->plexSort::@3] + //SEG117 [62] phi from plexSort::@10 plexSort::@7 to plexSort::@3 [phi:plexSort::@10/plexSort::@7->plexSort::@3] b3_from_b10: b3_from_b7: - //SEG132 [65] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@10/plexSort::@7->plexSort::@3#0] -- register_copy + //SEG118 [62] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@10/plexSort::@7->plexSort::@3#0] -- register_copy jmp b3 - //SEG133 plexSort::@3 + //SEG119 plexSort::@3 b3: - //SEG134 [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 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG120 [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 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda PLEX_SORTED_IDX,x sta PLEX_SORTED_IDX+1,x - //SEG135 [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 ] ) -- vbuxx=_dec_vbuxx + //SEG121 [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 ] ) -- vbuxx=_dec_vbuxx dex - //SEG136 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG122 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b7 jmp b5 - //SEG137 plexSort::@5 + //SEG123 plexSort::@5 b5: - //SEG138 [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 ] ) -- vbuxx=_inc_vbuxx + //SEG124 [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 ] ) -- vbuxx=_inc_vbuxx inx - //SEG139 [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 ] ) -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG125 [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 ] ) -- pbuc1_derefidx_vbuxx=vbuz1 lda nxt_idx sta PLEX_SORTED_IDX,x jmp b2 - //SEG140 plexSort::@2 + //SEG126 plexSort::@2 b2: - //SEG141 [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 ] ) -- vbuz1=_inc_vbuz1 + //SEG127 [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 ] ) -- vbuz1=_inc_vbuz1 inc m - //SEG142 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG128 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 lda m cmp #PLEX_COUNT-2+1 bne b1_from_b2 jmp breturn - //SEG143 plexSort::@return + //SEG129 plexSort::@return breturn: - //SEG144 [73] return [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] ) + //SEG130 [70] return [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] ) rts - //SEG145 plexSort::@7 + //SEG131 plexSort::@7 b7: - //SEG146 [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 ] ) -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 + //SEG132 [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 ] ) -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 lda nxt_y ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcc b3_from_b7 jmp b5 } -//SEG147 init +//SEG133 init init: { .label xp = 7 - //SEG148 [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 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG134 [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 [ ] ) -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta D011 - //SEG149 [76] call plexInit [ ] ( main:4::init:7 [ ] ) - //SEG150 [90] phi from init to plexInit [phi:init->plexInit] + //SEG135 [73] call plexInit [ ] ( main:4::init:7 [ ] ) + //SEG136 [87] phi from init to plexInit [phi:init->plexInit] plexInit_from_init: jsr plexInit - //SEG151 [77] phi from init to init::@1 [phi:init->init::@1] + //SEG137 [74] phi from init to init::@1 [phi:init->init::@1] b1_from_init: - //SEG152 [77] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 + //SEG138 [74] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 lda #<$20 sta xp lda #>$20 sta xp+1 - //SEG153 [77] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 + //SEG139 [74] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG154 [77] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG140 [74] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG155 [77] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG156 [77] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG141 [74] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG142 [74] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy jmp b1 - //SEG157 init::@1 + //SEG143 init::@1 b1: - //SEG158 [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 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG144 [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 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #$ff&SPRITE/$40 sta PLEX_PTR,x - //SEG159 [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 ] ) -- vbuaa=vbuxx_rol_1 + //SEG145 [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 ] ) -- vbuaa=vbuxx_rol_1 txa asl - //SEG160 [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 ] ) -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG146 [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 ] ) -- pwuc1_derefidx_vbuaa=vwuz1 tay lda xp sta PLEX_XPOS,y lda xp+1 sta PLEX_XPOS+1,y - //SEG161 [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 ] ) -- vwuz1=vwuz1_plus_vbuc1 + //SEG147 [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 ] ) -- vwuz1=vwuz1_plus_vbuc1 clc lda xp adc #<$c @@ -6204,72 +4434,72 @@ init: { lda xp+1 adc #>$c sta xp+1 - //SEG162 [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 ] ) -- vbuxx=_inc_vbuxx + //SEG148 [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 ] ) -- vbuxx=_inc_vbuxx inx - //SEG163 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG149 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b1_from_b1 jmp b3 - //SEG164 init::@3 + //SEG150 init::@3 b3: - //SEG165 [84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG151 [81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG166 [85] phi from init::@3 to init::@2 [phi:init::@3->init::@2] + //SEG152 [82] phi from init::@3 to init::@2 [phi:init::@3->init::@2] b2_from_b3: - //SEG167 [85] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuxx=vbuc1 + //SEG153 [82] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG168 [85] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG154 [82] phi from init::@2 to init::@2 [phi:init::@2->init::@2] b2_from_b2: - //SEG169 [85] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG155 [82] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy jmp b2 - //SEG170 init::@2 + //SEG156 init::@2 b2: - //SEG171 [86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG157 [83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG172 [87] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuxx=_inc_vbuxx + //SEG158 [84] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG173 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG159 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2_from_b2 jmp breturn - //SEG174 init::@return + //SEG160 init::@return breturn: - //SEG175 [89] return [ ] ( main:4::init:7 [ ] ) + //SEG161 [86] return [ ] ( main:4::init:7 [ ] ) rts } -//SEG176 plexInit +//SEG162 plexInit plexInit: { - //SEG177 [91] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] + //SEG163 [88] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] plexSetScreen1_from_plexInit: jmp plexSetScreen1 - //SEG178 plexInit::plexSetScreen1 + //SEG164 plexInit::plexSetScreen1 plexSetScreen1: - //SEG179 [92] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] + //SEG165 [89] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] b1_from_plexSetScreen1: - //SEG180 [92] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 + //SEG166 [89] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG181 [92] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] + //SEG167 [89] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] b1_from_b1: - //SEG182 [92] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy + //SEG168 [89] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy jmp b1 - //SEG183 plexInit::@1 + //SEG169 plexInit::@1 b1: - //SEG184 [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 ] ) -- pbuc1_derefidx_vbuxx=vbuxx + //SEG170 [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 ] ) -- pbuc1_derefidx_vbuxx=vbuxx txa sta PLEX_SORTED_IDX,x - //SEG185 [94] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG171 [91] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG186 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG172 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b1_from_b1 jmp breturn - //SEG187 plexInit::@return + //SEG173 plexInit::@return breturn: - //SEG188 [96] return [ ] ( main:4::init:7::plexInit:76 [ ] ) + //SEG174 [93] return [ ] ( main:4::init:7::plexInit:73 [ ] ) rts } PLEX_XPOS: .fill 2*PLEX_COUNT, 0 @@ -6277,7 +4507,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++) @@ -6291,8 +4521,8 @@ plexInit: { ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b28 -Removing instruction jmp b31 +Removing instruction jmp b8 +Removing instruction jmp b11 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp breturn @@ -6300,17 +4530,16 @@ Removing instruction jmp b1 Removing instruction jmp b4 Removing instruction jmp b6 Removing instruction jmp b7 -Removing instruction jmp b18 -Removing instruction jmp b26 +Removing instruction jmp b20 +Removing instruction jmp b30 Removing instruction jmp b8 -Removing instruction jmp b27 -Removing instruction jmp b9 +Removing instruction jmp b11 Removing instruction jmp plexShowNextYpos1 -Removing instruction jmp b25 -Removing instruction jmp b10 +Removing instruction jmp b29 Removing instruction jmp b12 -Removing instruction jmp b28 -Removing instruction jmp b23 +Removing instruction jmp b14 +Removing instruction jmp b31 +Removing instruction jmp b27 Removing instruction jmp b4 Removing instruction jmp b2 Removing instruction jmp breturn @@ -6334,8 +4563,7 @@ Replacing instruction ldy nxt_idx with TAY Removing instruction lda nxt_y Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b7_from_b7 with b7 -Replacing label b8_from_b27 with b8 -Replacing label b9_from_b28 with b9 +Replacing label b11_from_b31 with b11 Replacing label b1 with b4 Replacing label b7_from_b2 with b7 Replacing label b1_from_b2 with b1 @@ -6344,16 +4572,14 @@ Replacing label b1_from_b1 with b1 Replacing label b2_from_b2 with b2 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b28: -Removing instruction b31_from_b28: -Removing instruction bend_from_b31: +Removing instruction b11_from_b8: +Removing instruction b11: +Removing instruction bend_from_b11: Removing instruction b1_from_main: Removing instruction loop_from_b1: Removing instruction b1: Removing instruction b7_from_b7: -Removing instruction b8_from_b27: -Removing instruction plexShowSprite_from_b8: -Removing instruction b9_from_b28: +Removing instruction b11_from_b31: Removing instruction b7_from_b2: Removing instruction breturn_from_b7: Removing instruction b1_from_b2: @@ -6365,26 +4591,23 @@ Removing instruction plexSetScreen1_from_plexInit: Removing instruction b1_from_plexSetScreen1: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b31: +Removing instruction b8: Removing instruction bend: Removing instruction b1: Removing instruction breturn: Removing instruction b1_from_loop: Removing instruction b6: Removing instruction b7_from_b6: -Removing instruction b18: -Removing instruction plexSort_from_b18: -Removing instruction b26: -Removing instruction b8_from_b26: -Removing instruction b27: -Removing instruction b9_from_b27: +Removing instruction b20: +Removing instruction plexSort_from_b20: +Removing instruction b30: +Removing instruction b11_from_b8: Removing instruction plexShowNextYpos1: -Removing instruction b25: -Removing instruction b12: -Removing instruction plexShowSprite_from_b12: -Removing instruction b28: -Removing instruction b23: -Removing instruction b1_from_b23: +Removing instruction b29: +Removing instruction b14: +Removing instruction b31: +Removing instruction b27: +Removing instruction b1_from_b27: Removing instruction b4: Removing instruction breturn_from_b2: Removing instruction b1_from_plexSort: @@ -6401,8 +4624,7 @@ Succesful ASM optimization Pass5UnusedLabelElimination Skipping double jump to breturn in bne b7 Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b7 -Removing instruction jmp b8 -Removing instruction jmp b9 +Removing instruction jmp b11 Removing instruction jmp b1 Removing instruction jmp b1 Removing instruction jmp b2 @@ -6416,8 +4638,8 @@ Removing unreachable instruction jmp breturn Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @28 -(label) @31 +(label) @11 +(label) @8 (label) @begin (label) @end (byte) BLACK @@ -6478,33 +4700,31 @@ FINAL SYMBOL TABLE (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 @@ -6560,31 +4780,29 @@ FINAL SYMBOL TABLE (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 ] @@ -6598,7 +4816,7 @@ reg byte a [ init::$6 ] FINAL ASSEMBLER -Score: 62848 +Score: 62736 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -6623,17 +4841,17 @@ Score: 62848 .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 //SEG2 @begin -//SEG3 @28 -//SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 51 .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))) }} +//SEG3 @8 +//SEG4 kickasm(location (const byte*) YSIN#0) {{ .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))) }} //SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} -//SEG6 [3] phi from @28 to @31 [phi:@28->@31] -//SEG7 @31 +//SEG6 [3] phi from @8 to @11 [phi:@8->@11] +//SEG7 @11 //SEG8 [4] call main [ ] ( ) jsr main -//SEG9 [5] phi from @31 to @end [phi:@31->@end] +//SEG9 [5] phi from @11 to @end [phi:@11->@end] //SEG10 @end //SEG11 main main: { @@ -6653,8 +4871,8 @@ main: { //SEG20 loop loop: { .label sin_idx = 2 - .label ss = 3 .label rasterY = 9 + .label ss = 6 //SEG21 [12] phi from loop to loop::@1 [phi:loop->loop::@1] //SEG22 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 lda #0 @@ -6693,279 +4911,263 @@ loop: { //SEG39 [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 ] ) -- vbuyy_neq_vbuc1_then_la1 cpy #PLEX_COUNT-1+1 bne b7 - //SEG40 loop::@18 + //SEG40 loop::@20 //SEG41 [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 ] ) -- vbuz1=vbuz1_plus_1 inc sin_idx //SEG42 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL //SEG43 [23] call plexSort [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) - //SEG44 [59] phi from loop::@18 to plexSort [phi:loop::@18->plexSort] + //SEG44 [56] phi from loop::@20 to plexSort [phi:loop::@20->plexSort] jsr plexSort - //SEG45 loop::@26 - //SEG46 [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 - inc BORDERCOL - //SEG47 [25] phi from loop::@26 to loop::@8 [phi:loop::@26->loop::@8] - //SEG48 [25] phi (byte) loop::ss#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#0] -- vbuz1=vbuc1 - lda #0 - sta ss - //SEG49 [25] phi (byte) plex_sprite_msb#29 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@26->loop::@8#1] -- vbuz1=vbuc1 - lda #1 - sta plex_sprite_msb - //SEG50 [25] phi (byte) plex_show_idx#25 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#2] -- vbuz1=vbuc1 - lda #0 - sta plex_show_idx - //SEG51 [25] phi (byte) plex_sprite_idx#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#3] -- vbuz1=vbuc1 - sta plex_sprite_idx - //SEG52 [25] phi from loop::@27 to loop::@8 [phi:loop::@27->loop::@8] - //SEG53 [25] phi (byte) loop::ss#4 = (byte) loop::ss#1 [phi:loop::@27->loop::@8#0] -- register_copy - //SEG54 [25] phi (byte) plex_sprite_msb#29 = (byte) plex_sprite_msb#17 [phi:loop::@27->loop::@8#1] -- register_copy - //SEG55 [25] phi (byte) plex_show_idx#25 = (byte) plex_show_idx#15 [phi:loop::@27->loop::@8#2] -- register_copy - //SEG56 [25] phi (byte) plex_sprite_idx#24 = (byte) plex_sprite_idx#15 [phi:loop::@27->loop::@8#3] -- register_copy - //SEG57 loop::@8 - b8: - //SEG58 [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 ] ) - //SEG59 [39] phi from loop::@8 to plexShowSprite [phi:loop::@8->plexShowSprite] - //SEG60 [39] phi (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#29 [phi:loop::@8->plexShowSprite#0] -- register_copy - //SEG61 [39] phi (byte) plex_show_idx#13 = (byte) plex_show_idx#25 [phi:loop::@8->plexShowSprite#1] -- register_copy - //SEG62 [39] phi (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#24 [phi:loop::@8->plexShowSprite#2] -- register_copy - jsr plexShowSprite - //SEG63 loop::@27 - //SEG64 [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 ] ) -- vbuz1=_inc_vbuz1 - inc ss - //SEG65 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 - lda ss - cmp #8 - bne b8 - //SEG66 [29] phi from loop::@27 to loop::@9 [phi:loop::@27->loop::@9] - //SEG67 [29] phi (byte) loop::ss#10 = (byte/signed byte/word/signed word/dword/signed dword) 8 [phi:loop::@27->loop::@9#0] -- vbuz1=vbuc1 - lda #8 - sta ss - //SEG68 [29] phi from loop::@28 to loop::@9 [phi:loop::@28->loop::@9] - //SEG69 [29] phi (byte) loop::ss#10 = (byte) loop::ss#3 [phi:loop::@28->loop::@9#0] -- register_copy - //SEG70 loop::@9 - b9: - //SEG71 [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 ] ) -- _deref_pbuc1=vbuc2 + //SEG45 loop::@30 + //SEG46 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG72 loop::plexShowNextYpos1 - //SEG73 [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 ] ) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 + //SEG47 loop::@8 + b8: + //SEG48 [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 ] ) -- vbuaa=_deref_pbuc1_band_vbuc2 + lda D011 + and #$80 + //SEG49 [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 ] ) -- vbuaa_neq_0_then_la1 + cmp #0 + bne b8 + //SEG50 [27] phi from loop::@8 to loop::@11 [phi:loop::@8->loop::@11] + //SEG51 [27] phi (byte) loop::ss#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#0] -- vbuz1=vbuc1 + lda #0 + sta ss + //SEG52 [27] phi (byte) plex_sprite_msb#38 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@8->loop::@11#1] -- vbuz1=vbuc1 + lda #1 + sta plex_sprite_msb + //SEG53 [27] phi (byte) plex_sprite_idx#38 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 + lda #0 + sta plex_sprite_idx + //SEG54 [27] phi (byte) plex_show_idx#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuz1=vbuc1 + sta plex_show_idx + //SEG55 [27] phi from loop::@31 to loop::@11 [phi:loop::@31->loop::@11] + //SEG56 [27] phi (byte) loop::ss#6 = (byte) loop::ss#1 [phi:loop::@31->loop::@11#0] -- register_copy + //SEG57 [27] phi (byte) plex_sprite_msb#38 = (byte) plex_sprite_msb#16 [phi:loop::@31->loop::@11#1] -- register_copy + //SEG58 [27] phi (byte) plex_sprite_idx#38 = (byte) plex_sprite_idx#14 [phi:loop::@31->loop::@11#2] -- register_copy + //SEG59 [27] phi (byte) plex_show_idx#18 = (byte) plex_show_idx#14 [phi:loop::@31->loop::@11#3] -- register_copy + //SEG60 loop::@11 + b11: + //SEG61 [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 ] ) -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BORDERCOL + //SEG62 loop::plexShowNextYpos1 + //SEG63 [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 ] ) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 ldy plex_show_idx lda PLEX_SORTED_IDX,y tay lda PLEX_YPOS,y - //SEG74 loop::@25 - //SEG75 [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 ] ) -- vbuz1=vbuaa_minus_vbuc1 + //SEG64 loop::@29 + //SEG65 [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 ] ) -- vbuz1=vbuaa_minus_vbuc1 sec sbc #8 sta rasterY - //SEG76 loop::@10 - b10: - //SEG77 [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 ] ) -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG66 loop::@12 + b12: + //SEG67 [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 ] ) -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp rasterY - bcc b10 - //SEG78 loop::@12 - //SEG79 [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 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 + bcc b12 + //SEG68 loop::@14 + //SEG69 [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 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG80 [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 ] ) - //SEG81 [39] phi from loop::@12 to plexShowSprite [phi:loop::@12->plexShowSprite] - //SEG82 [39] phi (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#17 [phi:loop::@12->plexShowSprite#0] -- register_copy - //SEG83 [39] phi (byte) plex_show_idx#13 = (byte) plex_show_idx#15 [phi:loop::@12->plexShowSprite#1] -- register_copy - //SEG84 [39] phi (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#15 [phi:loop::@12->plexShowSprite#2] -- register_copy + //SEG70 [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 ] ) jsr plexShowSprite - //SEG85 loop::@28 - //SEG86 [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 ] ) -- vbuz1=_inc_vbuz1 + //SEG71 loop::@31 + //SEG72 [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 ] ) -- vbuz1=_inc_vbuz1 inc ss - //SEG87 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG73 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 lda ss cmp #PLEX_COUNT-1+1 - bne b9 - //SEG88 loop::@23 - //SEG89 [38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 + bne b11 + //SEG74 loop::@27 + //SEG75 [36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG90 [12] phi from loop::@23 to loop::@1 [phi:loop::@23->loop::@1] - //SEG91 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@23->loop::@1#0] -- register_copy + //SEG76 [12] phi from loop::@27 to loop::@1 [phi:loop::@27->loop::@1] + //SEG77 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@27->loop::@1#0] -- register_copy jmp b4 } -//SEG92 plexShowSprite +//SEG78 plexShowSprite plexShowSprite: { - //SEG93 [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 ] ) -- vbuyy=vbuz1_rol_1 + //SEG79 [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 ] ) -- vbuyy=vbuz1_rol_1 lda plex_sprite_idx asl tay - //SEG94 [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 ] ) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuz1 + //SEG80 [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 ] ) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuz1 ldx plex_show_idx lda PLEX_SORTED_IDX,x tax lda PLEX_YPOS,x sta SPRITES_YPOS,y - //SEG95 [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 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + //SEG81 [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 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 ldx plex_show_idx lda PLEX_SORTED_IDX,x tax lda PLEX_PTR,x ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - //SEG96 [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 ] ) -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 + //SEG82 [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 ] ) -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 ldx plex_show_idx lda PLEX_SORTED_IDX,x asl tax - //SEG97 [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 ] ) -- vbuaa=_lo_pwuc1_derefidx_vbuxx + //SEG83 [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 ] ) -- vbuaa=_lo_pwuc1_derefidx_vbuxx lda PLEX_XPOS,x - //SEG98 [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 ] ) -- pbuc1_derefidx_vbuyy=vbuaa + //SEG84 [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 ] ) -- pbuc1_derefidx_vbuyy=vbuaa sta SPRITES_XPOS,y - //SEG99 [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 ] ) -- vbuaa=_hi_pwuc1_derefidx_vbuxx + //SEG85 [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 ] ) -- vbuaa=_hi_pwuc1_derefidx_vbuxx lda PLEX_XPOS+1,x - //SEG100 [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 ] ) -- vbuaa_neq_0_then_la1 + //SEG86 [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 ] ) -- vbuaa_neq_0_then_la1 cmp #0 bne b1 - //SEG101 plexShowSprite::@4 - //SEG102 [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 ] ) -- vbuaa=vbuc1_bxor_vbuz1 + //SEG87 plexShowSprite::@4 + //SEG88 [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 ] ) -- vbuaa=vbuc1_bxor_vbuz1 lda plex_sprite_msb eor #$ff - //SEG103 [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 ] ) -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG89 [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 ] ) -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB - //SEG104 plexShowSprite::@2 + //SEG90 plexShowSprite::@2 b2: - //SEG105 [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 ] ) -- vbuaa=vbuz1_plus_1 + //SEG91 [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 ] ) -- vbuaa=vbuz1_plus_1 lda plex_sprite_idx clc adc #1 - //SEG106 [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 ] ) -- vbuz1=vbuaa_band_vbuc1 + //SEG92 [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 ] ) -- vbuz1=vbuaa_band_vbuc1 and #7 sta plex_sprite_idx - //SEG107 [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 ] ) -- vbuz1=_inc_vbuz1 + //SEG93 [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 ] ) -- vbuz1=_inc_vbuz1 inc plex_show_idx - //SEG108 [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 ] ) -- vbuz1=vbuz1_rol_1 + //SEG94 [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 ] ) -- vbuz1=vbuz1_rol_1 asl plex_sprite_msb - //SEG109 [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 ] ) -- vbuz1_neq_0_then_la1 + //SEG95 [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 ] ) -- vbuz1_neq_0_then_la1 lda plex_sprite_msb bne breturn - //SEG110 [55] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] - //SEG111 [55] phi (byte) plex_sprite_msb#17 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 + //SEG96 [52] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] + //SEG97 [52] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb - //SEG112 plexShowSprite::@return + //SEG98 plexShowSprite::@return breturn: - //SEG113 [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 ] ) + //SEG99 [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 ] ) rts - //SEG114 [57] phi from plexShowSprite::@2 to plexShowSprite::@7 [phi:plexShowSprite::@2->plexShowSprite::@7] - //SEG115 plexShowSprite::@7 - //SEG116 [55] phi from plexShowSprite::@7 to plexShowSprite::@return [phi:plexShowSprite::@7->plexShowSprite::@return] - //SEG117 [55] phi (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#26 [phi:plexShowSprite::@7->plexShowSprite::@return#0] -- register_copy - //SEG118 plexShowSprite::@1 + //SEG100 [54] phi from plexShowSprite::@2 to plexShowSprite::@7 [phi:plexShowSprite::@2->plexShowSprite::@7] + //SEG101 plexShowSprite::@7 + //SEG102 [52] phi from plexShowSprite::@7 to plexShowSprite::@return [phi:plexShowSprite::@7->plexShowSprite::@return] + //SEG103 [52] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#24 [phi:plexShowSprite::@7->plexShowSprite::@return#0] -- register_copy + //SEG104 plexShowSprite::@1 b1: - //SEG119 [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 ] ) -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG105 [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 ] ) -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora plex_sprite_msb sta SPRITES_XMSB jmp b2 } -//SEG120 plexSort +//SEG106 plexSort plexSort: { .label nxt_idx = 4 .label nxt_y = 5 .label m = 3 - //SEG121 [60] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] - //SEG122 [60] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 + //SEG107 [57] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] + //SEG108 [57] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 lda #0 sta m - //SEG123 [60] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] - //SEG124 [60] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy - //SEG125 plexSort::@1 + //SEG109 [57] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] + //SEG110 [57] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy + //SEG111 plexSort::@1 b1: - //SEG126 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG112 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy m lda PLEX_SORTED_IDX+1,y sta nxt_idx - //SEG127 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG113 [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 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 tay lda PLEX_YPOS,y sta nxt_y - //SEG128 [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 ] ) -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + //SEG114 [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 ] ) -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 ldx m ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcs b2 - //SEG129 plexSort::@10 - //SEG130 [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 ] ) -- vbuxx=vbuz1 - //SEG131 [65] phi from plexSort::@10 plexSort::@7 to plexSort::@3 [phi:plexSort::@10/plexSort::@7->plexSort::@3] - //SEG132 [65] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@10/plexSort::@7->plexSort::@3#0] -- register_copy - //SEG133 plexSort::@3 + //SEG115 plexSort::@10 + //SEG116 [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 ] ) -- vbuxx=vbuz1 + //SEG117 [62] phi from plexSort::@10 plexSort::@7 to plexSort::@3 [phi:plexSort::@10/plexSort::@7->plexSort::@3] + //SEG118 [62] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@10/plexSort::@7->plexSort::@3#0] -- register_copy + //SEG119 plexSort::@3 b3: - //SEG134 [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 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG120 [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 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda PLEX_SORTED_IDX,x sta PLEX_SORTED_IDX+1,x - //SEG135 [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 ] ) -- vbuxx=_dec_vbuxx + //SEG121 [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 ] ) -- vbuxx=_dec_vbuxx dex - //SEG136 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG122 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b7 - //SEG137 plexSort::@5 + //SEG123 plexSort::@5 b5: - //SEG138 [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 ] ) -- vbuxx=_inc_vbuxx + //SEG124 [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 ] ) -- vbuxx=_inc_vbuxx inx - //SEG139 [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 ] ) -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG125 [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 ] ) -- pbuc1_derefidx_vbuxx=vbuz1 lda nxt_idx sta PLEX_SORTED_IDX,x - //SEG140 plexSort::@2 + //SEG126 plexSort::@2 b2: - //SEG141 [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 ] ) -- vbuz1=_inc_vbuz1 + //SEG127 [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 ] ) -- vbuz1=_inc_vbuz1 inc m - //SEG142 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG128 [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 ] ) -- vbuz1_neq_vbuc1_then_la1 lda m cmp #PLEX_COUNT-2+1 bne b1 - //SEG143 plexSort::@return - //SEG144 [73] return [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] ) + //SEG129 plexSort::@return + //SEG130 [70] return [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] ) rts - //SEG145 plexSort::@7 + //SEG131 plexSort::@7 b7: - //SEG146 [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 ] ) -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 + //SEG132 [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 ] ) -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 lda nxt_y ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcc b3 jmp b5 } -//SEG147 init +//SEG133 init init: { .label xp = 7 - //SEG148 [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 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG134 [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 [ ] ) -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta D011 - //SEG149 [76] call plexInit [ ] ( main:4::init:7 [ ] ) - //SEG150 [90] phi from init to plexInit [phi:init->plexInit] + //SEG135 [73] call plexInit [ ] ( main:4::init:7 [ ] ) + //SEG136 [87] phi from init to plexInit [phi:init->plexInit] jsr plexInit - //SEG151 [77] phi from init to init::@1 [phi:init->init::@1] - //SEG152 [77] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 + //SEG137 [74] phi from init to init::@1 [phi:init->init::@1] + //SEG138 [74] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 lda #<$20 sta xp lda #>$20 sta xp+1 - //SEG153 [77] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 + //SEG139 [74] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG154 [77] phi from init::@1 to init::@1 [phi:init::@1->init::@1] - //SEG155 [77] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG156 [77] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy - //SEG157 init::@1 + //SEG140 [74] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG141 [74] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG142 [74] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG143 init::@1 b1: - //SEG158 [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 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG144 [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 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #$ff&SPRITE/$40 sta PLEX_PTR,x - //SEG159 [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 ] ) -- vbuaa=vbuxx_rol_1 + //SEG145 [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 ] ) -- vbuaa=vbuxx_rol_1 txa asl - //SEG160 [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 ] ) -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG146 [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 ] ) -- pwuc1_derefidx_vbuaa=vwuz1 tay lda xp sta PLEX_XPOS,y lda xp+1 sta PLEX_XPOS+1,y - //SEG161 [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 ] ) -- vwuz1=vwuz1_plus_vbuc1 + //SEG147 [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 ] ) -- vwuz1=vwuz1_plus_vbuc1 clc lda xp adc #<$c @@ -6973,55 +5175,55 @@ init: { lda xp+1 adc #>$c sta xp+1 - //SEG162 [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 ] ) -- vbuxx=_inc_vbuxx + //SEG148 [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 ] ) -- vbuxx=_inc_vbuxx inx - //SEG163 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG149 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b1 - //SEG164 init::@3 - //SEG165 [84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG150 init::@3 + //SEG151 [81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG166 [85] phi from init::@3 to init::@2 [phi:init::@3->init::@2] - //SEG167 [85] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuxx=vbuc1 + //SEG152 [82] phi from init::@3 to init::@2 [phi:init::@3->init::@2] + //SEG153 [82] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG168 [85] phi from init::@2 to init::@2 [phi:init::@2->init::@2] - //SEG169 [85] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy - //SEG170 init::@2 + //SEG154 [82] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG155 [82] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG156 init::@2 b2: - //SEG171 [86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG157 [83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG172 [87] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuxx=_inc_vbuxx + //SEG158 [84] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG173 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG159 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG174 init::@return - //SEG175 [89] return [ ] ( main:4::init:7 [ ] ) + //SEG160 init::@return + //SEG161 [86] return [ ] ( main:4::init:7 [ ] ) rts } -//SEG176 plexInit +//SEG162 plexInit plexInit: { - //SEG177 [91] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] - //SEG178 plexInit::plexSetScreen1 - //SEG179 [92] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] - //SEG180 [92] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 + //SEG163 [88] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] + //SEG164 plexInit::plexSetScreen1 + //SEG165 [89] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] + //SEG166 [89] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG181 [92] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] - //SEG182 [92] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy - //SEG183 plexInit::@1 + //SEG167 [89] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] + //SEG168 [89] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy + //SEG169 plexInit::@1 b1: - //SEG184 [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 ] ) -- pbuc1_derefidx_vbuxx=vbuxx + //SEG170 [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 ] ) -- pbuc1_derefidx_vbuxx=vbuxx txa sta PLEX_SORTED_IDX,x - //SEG185 [94] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG171 [91] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG186 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG172 [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 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b1 - //SEG187 plexInit::@return - //SEG188 [96] return [ ] ( main:4::init:7::plexInit:76 [ ] ) + //SEG173 plexInit::@return + //SEG174 [93] return [ ] ( main:4::init:7::plexInit:73 [ ] ) rts } PLEX_XPOS: .fill 2*PLEX_COUNT, 0 @@ -7029,7 +5231,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++) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.sym b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.sym index 632e62686..3b749aebe 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.sym @@ -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 ]