diff --git a/src/test/kc/examples/rotate/rotate.kc b/src/test/kc/examples/rotate/rotate.kc index 10c831cea..ba4d539b3 100644 --- a/src/test/kc/examples/rotate/rotate.kc +++ b/src/test/kc/examples/rotate/rotate.kc @@ -1,5 +1,4 @@ -// Angles: sf[0.8] : $80=PI, $100 = 2*PI -// Values: sin(x) in [-1;1] sf[0.16] : -1.0: -$7fff 1.0:$7fff +// 2D rotattion of 8 sprites import "c64" import "fastmultiply" @@ -7,7 +6,9 @@ import "fastmultiply" byte* SCREEN = $0400; byte* SPRITE = $3000; -// Sine and Cosine tables - // signed fixed [-$7f,$7f] +// Sine and Cosine tables +// Angles: $00=0, $80=PI,$100=2*PI +// Sine/Cosine: signed fixed [-$7f,$7f] byte* COS = $2000; byte* SIN = COS+$40; // sin(x) = cos(x+PI/2) @@ -48,13 +49,12 @@ void anim() { mulf8s_prepare(sin_a); xr -= mulf8s_prepared(y)<<1; // signed fixed[8.8] yr += mulf8s_prepared(x)<<1; // signed fixed[8.8] - signed word xpos = ((signed byte) >xr) + 89 + 24 + 60; + signed word xpos = ((signed byte) >xr) + 24 /*border*/ + 149 /*center*/; sprite_msb = sprite_msb>>1; if(>xpos!=0) { sprite_msb |= $80; } - //signed word ypos = ((signed byte) >yr) + 89 + 51; - byte ypos = (>yr) + 89 + 51; // Effectively the same as <(((signed byte) >yr) + 89 + 51;) + byte ypos = (>yr) + 89 /*center*/+ 51 /*border*/; byte i2 = i<<1; SPRITES_XPOS[i2] = (signed word) anim::xr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ) - [44] (signed byte~) anim::$16 ← (signed byte)(byte~) anim::$13 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$16 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$16 ] ) - [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$16 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 60 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) + [44] (signed byte~) anim::$15 ← (signed byte)(byte~) anim::$13 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$15 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$15 ] ) + [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) [46] (byte) anim::sprite_msb#1 ← (byte) anim::sprite_msb#10 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) - [47] (byte~) anim::$19 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ) - [48] if((byte~) anim::$19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) + [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ) + [48] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) to:anim::@14 anim::@14: scope:[anim] from anim::@24 [49] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte/word/signed word/dword/signed dword) 128 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ) to:anim::@8 anim::@8: scope:[anim] from anim::@14 anim::@24 [50] (byte) anim::sprite_msb#5 ← phi( anim::@14/(byte) anim::sprite_msb#2 anim::@24/(byte) anim::sprite_msb#1 ) [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::yr#1 anim::xpos#0 ] ) - [51] (byte~) anim::$23 ← > (signed word) anim::yr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$23 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$23 ] ) - [52] (byte) anim::ypos#0 ← (byte~) anim::$23 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) + [51] (byte~) anim::$22 ← > (signed word) anim::yr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$22 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$22 ] ) + [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) [53] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ) - [54] (byte~) anim::$26 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ) - [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$26 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ) + [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ) + [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ) [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ) [57] (byte) anim::i#1 ← ++ (byte) anim::i#10 [ anim::angle#10 anim::i#1 anim::sprite_msb#5 ] ( main:3::anim:8 [ anim::angle#10 anim::i#1 anim::sprite_msb#5 ] ) [58] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@7 [ anim::angle#10 anim::i#1 anim::sprite_msb#5 ] ( main:3::anim:8 [ anim::angle#10 anim::i#1 anim::sprite_msb#5 ] ) diff --git a/src/test/ref/examples/rotate/rotate.log b/src/test/ref/examples/rotate/rotate.log index ab1e5d779..869940c92 100644 --- a/src/test/ref/examples/rotate/rotate.log +++ b/src/test/ref/examples/rotate/rotate.log @@ -466,16 +466,15 @@ anim::@24: scope:[anim] from anim::@23 (signed word) anim::yr#1 ← (signed word) anim::yr#2 + (signed word~) anim::$12 (byte~) anim::$13 ← > (signed word) anim::xr#3 (signed byte~) anim::$14 ← ((signed byte)) (byte~) anim::$13 - (signed word/signed byte/signed dword~) anim::$15 ← (signed byte~) anim::$14 + (byte/signed byte/word/signed word/dword/signed dword) 89 - (signed word/signed dword/signed byte~) anim::$16 ← (signed word/signed byte/signed dword~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24 - (signed word/signed dword/signed byte~) anim::$17 ← (signed word/signed dword/signed byte~) anim::$16 + (byte/signed byte/word/signed word/dword/signed dword) 60 - (signed word) anim::xpos#0 ← (signed word/signed dword/signed byte~) anim::$17 - (byte~) anim::$18 ← (byte) anim::sprite_msb#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) anim::sprite_msb#1 ← (byte~) anim::$18 - (byte~) anim::$19 ← > (signed word) anim::xpos#0 - (bool~) anim::$20 ← (byte~) anim::$19 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) anim::$21 ← ! (bool~) anim::$20 - if((bool~) anim::$21) goto anim::@8 + (signed word/signed byte/signed dword~) anim::$15 ← (signed byte~) anim::$14 + (byte/signed byte/word/signed word/dword/signed dword) 24 + (signed word/signed dword~) anim::$16 ← (signed word/signed byte/signed dword~) anim::$15 + (byte/word/signed word/dword/signed dword) 149 + (signed word) anim::xpos#0 ← (signed word/signed dword~) anim::$16 + (byte~) anim::$17 ← (byte) anim::sprite_msb#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) anim::sprite_msb#1 ← (byte~) anim::$17 + (byte~) anim::$18 ← > (signed word) anim::xpos#0 + (bool~) anim::$19 ← (byte~) anim::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) anim::$20 ← ! (bool~) anim::$19 + if((bool~) anim::$20) goto anim::@8 to:anim::@14 anim::@8: scope:[anim] from anim::@14 anim::@24 (signed byte) anim::sin_a#7 ← phi( anim::@14/(signed byte) anim::sin_a#8 anim::@24/(signed byte) anim::sin_a#9 ) @@ -487,18 +486,18 @@ anim::@8: scope:[anim] from anim::@14 anim::@24 (signed word) anim::xpos#1 ← phi( anim::@14/(signed word) anim::xpos#2 anim::@24/(signed word) anim::xpos#0 ) (byte) anim::i#3 ← phi( anim::@14/(byte) anim::i#4 anim::@24/(byte) anim::i#5 ) (signed word) anim::yr#3 ← phi( anim::@14/(signed word) anim::yr#5 anim::@24/(signed word) anim::yr#1 ) - (byte~) anim::$22 ← > (signed word) anim::yr#3 - (byte/signed word/word/dword/signed dword~) anim::$23 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89 - (byte/signed word/word/dword/signed dword~) anim::$24 ← (byte/signed word/word/dword/signed dword~) anim::$23 + (byte/signed byte/word/signed word/dword/signed dword) 51 - (byte) anim::ypos#0 ← (byte/signed word/word/dword/signed dword~) anim::$24 - (byte~) anim::$25 ← (byte) anim::i#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) anim::i2#0 ← (byte~) anim::$25 - (byte~) anim::$26 ← < (signed word) anim::xpos#1 - *((byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$26 + (byte~) anim::$21 ← > (signed word) anim::yr#3 + (byte/signed word/word/dword/signed dword~) anim::$22 ← (byte~) anim::$21 + (byte/signed byte/word/signed word/dword/signed dword) 89 + (byte/signed word/word/dword/signed dword~) anim::$23 ← (byte/signed word/word/dword/signed dword~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 51 + (byte) anim::ypos#0 ← (byte/signed word/word/dword/signed dword~) anim::$23 + (byte~) anim::$24 ← (byte) anim::i#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) anim::i2#0 ← (byte~) anim::$24 + (byte~) anim::$25 ← < (signed word) anim::xpos#1 + *((byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25 *((byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 (byte) anim::i#1 ← (byte) anim::i#3 + rangenext(0,7) - (bool~) anim::$27 ← (byte) anim::i#1 != rangelast(0,7) - if((bool~) anim::$27) goto anim::@7 + (bool~) anim::$26 ← (byte) anim::i#1 != rangelast(0,7) + if((bool~) anim::$26) goto anim::@7 to:anim::@15 anim::@14: scope:[anim] from anim::@24 (signed byte) anim::sin_a#8 ← phi( anim::@24/(signed byte) anim::sin_a#9 ) @@ -659,19 +658,18 @@ SYMBOL TABLE SSA (byte~) anim::$13 (signed byte~) anim::$14 (signed word/signed byte/signed dword~) anim::$15 -(signed word/signed dword/signed byte~) anim::$16 -(signed word/signed dword/signed byte~) anim::$17 +(signed word/signed dword~) anim::$16 +(byte~) anim::$17 (byte~) anim::$18 -(byte~) anim::$19 +(bool~) anim::$19 (signed byte~) anim::$2 (bool~) anim::$20 -(bool~) anim::$21 -(byte~) anim::$22 +(byte~) anim::$21 +(byte/signed word/word/dword/signed dword~) anim::$22 (byte/signed word/word/dword/signed dword~) anim::$23 -(byte/signed word/word/dword/signed dword~) anim::$24 +(byte~) anim::$24 (byte~) anim::$25 -(byte~) anim::$26 -(bool~) anim::$27 +(bool~) anim::$26 (signed word~) anim::$4 (signed word~) anim::$5 (signed word~) anim::$6 @@ -1041,7 +1039,7 @@ Inversing boolean not (bool~) mulf_init::$4 ← (byte~) mulf_init::$2 != (byte/s Inversing boolean not (bool~) mulf_init::$14 ← (byte) mulf_init::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) mulf_init::$13 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) mulf8s_prepared::$3 ← *((signed byte*) mulf8s_prepared::memA#0) >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) mulf8s_prepared::$9 ← (signed byte) mulf8s_prepared::b#5 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) mulf8s_prepared::$8 ← (signed byte) mulf8s_prepared::b#5 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) anim::$21 ← (byte~) anim::$19 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) anim::$20 ← (byte~) anim::$19 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) anim::$20 ← (byte~) anim::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) anim::$19 ← (byte~) anim::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) mulf_init::sqr1_hi#0 = (byte*~) mulf_init::$0 Alias (byte*) mulf_init::sqr1_lo#0 = (byte*~) mulf_init::$1 @@ -1099,10 +1097,10 @@ Alias (byte) mulf8u_prepare::a#1 = (byte) anim::mulf8s_prepare2_$0#0 Alias (signed word) mulf8s_prepared::return#4 = (signed word) mulf8s_prepared::return#9 Alias (signed word) mulf8s_prepared::return#10 = (signed word) mulf8s_prepared::return#5 Alias (signed word) anim::xr#1 = (signed word) anim::xr#3 -Alias (signed word) anim::xpos#0 = (signed word/signed dword/signed byte~) anim::$17 (signed word) anim::xpos#2 -Alias (byte) anim::sprite_msb#1 = (byte~) anim::$18 (byte) anim::sprite_msb#4 -Alias (byte) anim::ypos#0 = (byte/signed word/word/dword/signed dword~) anim::$24 -Alias (byte) anim::i2#0 = (byte~) anim::$25 +Alias (signed word) anim::xpos#0 = (signed word/signed dword~) anim::$16 (signed word) anim::xpos#2 +Alias (byte) anim::sprite_msb#1 = (byte~) anim::$17 (byte) anim::sprite_msb#4 +Alias (byte) anim::ypos#0 = (byte/signed word/word/dword/signed dword~) anim::$23 +Alias (byte) anim::i2#0 = (byte~) anim::$24 Alias (signed word) anim::yr#1 = (signed word) anim::yr#5 Alias (byte) anim::sprite_msb#5 = (byte) anim::sprite_msb#7 Alias (byte) anim::angle#3 = (byte) anim::angle#5 @@ -1164,8 +1162,8 @@ Simple Condition (bool~) mulf8s_prepared::$3 if(*((signed byte*) mulf8s_prepared Simple Condition (bool~) mulf8s_prepared::$9 if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 Simple Condition (bool~) init::$4 if((byte) init::i#1!=rangelast(0,7)) goto init::@1 Simple Condition (bool~) anim::$0 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@5 -Simple Condition (bool~) anim::$21 if((byte~) anim::$19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 -Simple Condition (bool~) anim::$27 if((byte) anim::i#1!=rangelast(0,7)) goto anim::@7 +Simple Condition (bool~) anim::$20 if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 +Simple Condition (bool~) anim::$26 if((byte) anim::i#1!=rangelast(0,7)) goto anim::@7 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 @@ -1223,7 +1221,6 @@ Constant (const signed byte[8]) ys#0 = { $4, 0, 70, $5, 70, $6, 0, 70 } Successful SSA optimization Pass2ConstantIdentification Constant (const byte) init::$3 = ((byte))init::$2 Successful SSA optimization Pass2ConstantIdentification -Consolidated constant in assignment anim::$16 Consolidated constant in assignment anim::xpos#0 Consolidated constant in assignment anim::ypos#0 Successful SSA optimization Pass2ConstantAdditionElimination @@ -1232,8 +1229,7 @@ Successful SSA optimization Pass2ConstantIfs Fixing inline constructor with mulf8u_prepared::$0 ← *(mulf8u_prepared::memB#0) w= *(mulf8u_prepared::resL#0) Successful SSA optimization Pass2FixInlineConstructors Inferred type updated to signed byte in (signed word/signed byte/signed dword~) anim::$15 ← (signed byte~) anim::$14 -Inferred type updated to signed byte in (signed word/signed dword/signed byte~) anim::$16 ← (signed byte~) anim::$15 -Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) anim::$23 ← (byte~) anim::$22 +Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) anim::$22 ← (byte~) anim::$21 Eliminating Noop Cast (byte) mulf8u_prepared::b#0 ← ((byte)) (signed byte) mulf8s_prepared::b#4 Eliminating Noop Cast (byte~) mulf8s_prepared::$6 ← ((byte)) (signed byte) mulf8s_prepared::b#4 Eliminating Noop Cast (signed word) mulf8s_prepared::return#0 ← ((signed word)) (word) mulf8s_prepared::m#4 @@ -1260,8 +1256,7 @@ Culled Empty Block (label) anim::@19 Culled Empty Block (label) anim::@22 Successful SSA optimization Pass2CullEmptyBlocks Alias (word) mulf8u_prepared::return#0 = (word~) mulf8u_prepared::$0 -Alias (signed byte~) anim::$16 = (signed byte~) anim::$15 -Alias (byte~) anim::$23 = (byte~) anim::$22 +Alias (byte~) anim::$22 = (byte~) anim::$21 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (byte*) COS#5 Self Phi Eliminated (byte*) SIN#3 @@ -1478,22 +1473,22 @@ anim::@24: scope:[anim] from anim::@23 [41] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$12 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$12 ] ) [42] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$12 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ) [43] (byte~) anim::$13 ← > (signed word) anim::xr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ) - [44] (signed byte~) anim::$16 ← (signed byte)(byte~) anim::$13 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$16 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$16 ] ) - [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$16 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 60 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) + [44] (signed byte~) anim::$15 ← (signed byte)(byte~) anim::$13 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$15 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$15 ] ) + [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) [46] (byte) anim::sprite_msb#1 ← (byte) anim::sprite_msb#10 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) - [47] (byte~) anim::$19 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ) - [48] if((byte~) anim::$19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) + [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ) + [48] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) to:anim::@14 anim::@14: scope:[anim] from anim::@24 [49] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte/word/signed word/dword/signed dword) 128 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ) to:anim::@8 anim::@8: scope:[anim] from anim::@14 anim::@24 [50] (byte) anim::sprite_msb#5 ← phi( anim::@14/(byte) anim::sprite_msb#2 anim::@24/(byte) anim::sprite_msb#1 ) [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::yr#1 anim::xpos#0 ] ) - [51] (byte~) anim::$23 ← > (signed word) anim::yr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$23 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$23 ] ) - [52] (byte) anim::ypos#0 ← (byte~) anim::$23 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) + [51] (byte~) anim::$22 ← > (signed word) anim::yr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$22 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$22 ] ) + [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) [53] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ) - [54] (byte~) anim::$26 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ) - [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$26 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ) + [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ) + [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ) [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ) [57] (byte) anim::i#1 ← ++ (byte) anim::i#10 [ anim::angle#10 anim::i#1 anim::sprite_msb#5 ] ( main:3::anim:8 [ anim::angle#10 anim::i#1 anim::sprite_msb#5 ] ) [58] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@7 [ anim::angle#10 anim::i#1 anim::sprite_msb#5 ] ( main:3::anim:8 [ anim::angle#10 anim::i#1 anim::sprite_msb#5 ] ) @@ -1641,10 +1636,10 @@ VARIABLE REGISTER WEIGHTS (signed word~) anim::$11 202.0 (signed word~) anim::$12 202.0 (byte~) anim::$13 101.0 -(signed byte~) anim::$16 202.0 -(byte~) anim::$19 202.0 -(byte~) anim::$23 202.0 -(byte~) anim::$26 202.0 +(signed byte~) anim::$15 202.0 +(byte~) anim::$18 202.0 +(byte~) anim::$22 202.0 +(byte~) anim::$25 202.0 (signed word~) anim::$4 202.0 (signed word~) anim::$6 202.0 (signed word~) anim::$9 202.0 @@ -1798,13 +1793,13 @@ Added variable anim::$11 to zero page equivalence class [ anim::$11 ] Added variable anim::$12 to zero page equivalence class [ anim::$12 ] Added variable anim::yr#1 to zero page equivalence class [ anim::yr#1 ] Added variable anim::$13 to zero page equivalence class [ anim::$13 ] -Added variable anim::$16 to zero page equivalence class [ anim::$16 ] +Added variable anim::$15 to zero page equivalence class [ anim::$15 ] Added variable anim::xpos#0 to zero page equivalence class [ anim::xpos#0 ] -Added variable anim::$19 to zero page equivalence class [ anim::$19 ] -Added variable anim::$23 to zero page equivalence class [ anim::$23 ] +Added variable anim::$18 to zero page equivalence class [ anim::$18 ] +Added variable anim::$22 to zero page equivalence class [ anim::$22 ] Added variable anim::ypos#0 to zero page equivalence class [ anim::ypos#0 ] Added variable anim::i2#0 to zero page equivalence class [ anim::i2#0 ] -Added variable anim::$26 to zero page equivalence class [ anim::$26 ] +Added variable anim::$25 to zero page equivalence class [ anim::$25 ] Added variable mulf8u_prepared::return#2 to zero page equivalence class [ mulf8u_prepared::return#2 ] Added variable mulf8s_prepared::$5 to zero page equivalence class [ mulf8s_prepared::$5 ] Added variable mulf8s_prepared::$15 to zero page equivalence class [ mulf8s_prepared::$15 ] @@ -1848,13 +1843,13 @@ Complete equivalence classes [ anim::$12 ] [ anim::yr#1 ] [ anim::$13 ] -[ anim::$16 ] +[ anim::$15 ] [ anim::xpos#0 ] -[ anim::$19 ] -[ anim::$23 ] +[ anim::$18 ] +[ anim::$22 ] [ anim::ypos#0 ] [ anim::i2#0 ] -[ anim::$26 ] +[ anim::$25 ] [ mulf8u_prepared::return#2 ] [ mulf8s_prepared::$5 ] [ mulf8s_prepared::$15 ] @@ -1897,13 +1892,13 @@ Allocated zp ZP_WORD:48 [ anim::$11 ] Allocated zp ZP_WORD:50 [ anim::$12 ] Allocated zp ZP_WORD:52 [ anim::yr#1 ] Allocated zp ZP_BYTE:54 [ anim::$13 ] -Allocated zp ZP_BYTE:55 [ anim::$16 ] +Allocated zp ZP_BYTE:55 [ anim::$15 ] Allocated zp ZP_WORD:56 [ anim::xpos#0 ] -Allocated zp ZP_BYTE:58 [ anim::$19 ] -Allocated zp ZP_BYTE:59 [ anim::$23 ] +Allocated zp ZP_BYTE:58 [ anim::$18 ] +Allocated zp ZP_BYTE:59 [ anim::$22 ] Allocated zp ZP_BYTE:60 [ anim::ypos#0 ] Allocated zp ZP_BYTE:61 [ anim::i2#0 ] -Allocated zp ZP_BYTE:62 [ anim::$26 ] +Allocated zp ZP_BYTE:62 [ anim::$25 ] Allocated zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] Allocated zp ZP_BYTE:65 [ mulf8s_prepared::$5 ] Allocated zp ZP_BYTE:66 [ mulf8s_prepared::$15 ] @@ -1979,10 +1974,10 @@ anim: { .label _11 = $30 .label _12 = $32 .label _13 = $36 - .label _16 = $37 - .label _19 = $3a - .label _23 = $3b - .label _26 = $3e + .label _15 = $37 + .label _18 = $3a + .label _22 = $3b + .label _25 = $3e .label x = $18 .label y = $19 .label xr = $1e @@ -2200,11 +2195,11 @@ anim: { //SEG82 [43] (byte~) anim::$13 ← > (signed word) anim::xr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ) -- vbuz1=_hi_vwsz2 lda xr_1+1 sta _13 - //SEG83 [44] (signed byte~) anim::$16 ← (signed byte)(byte~) anim::$13 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$16 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$16 ] ) -- vbsz1=vbsz2 + //SEG83 [44] (signed byte~) anim::$15 ← (signed byte)(byte~) anim::$13 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$15 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$15 ] ) -- vbsz1=vbsz2 lda _13 - sta _16 - //SEG84 [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$16 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 60 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) -- vwsz1=vbsz2_plus_vbuc1 - lda _16 + sta _15 + //SEG84 [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) -- vwsz1=vbsz2_plus_vbuc1 + lda _15 sta xpos ora #$7f bmi !+ @@ -2213,18 +2208,18 @@ anim: { sta xpos+1 lda xpos clc - adc #$59+$18+$3c + adc #$18+$95 sta xpos lda xpos+1 adc #0 sta xpos+1 //SEG85 [46] (byte) anim::sprite_msb#1 ← (byte) anim::sprite_msb#10 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) -- vbuz1=vbuz1_ror_1 lsr sprite_msb - //SEG86 [47] (byte~) anim::$19 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ) -- vbuz1=_hi_vwsz2 + //SEG86 [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ) -- vbuz1=_hi_vwsz2 lda xpos+1 - sta _19 - //SEG87 [48] if((byte~) anim::$19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) -- vbuz1_eq_0_then_la1 - lda _19 + sta _18 + //SEG87 [48] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) -- vbuz1_eq_0_then_la1 + lda _18 beq b8_from_b24 jmp b14 //SEG88 anim::@14 @@ -2240,23 +2235,23 @@ anim: { jmp b8 //SEG92 anim::@8 b8: - //SEG93 [51] (byte~) anim::$23 ← > (signed word) anim::yr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$23 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$23 ] ) -- vbuz1=_hi_vwsz2 + //SEG93 [51] (byte~) anim::$22 ← > (signed word) anim::yr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$22 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$22 ] ) -- vbuz1=_hi_vwsz2 lda yr_1+1 - sta _23 - //SEG94 [52] (byte) anim::ypos#0 ← (byte~) anim::$23 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) -- vbuz1=vbuz2_plus_vbuc1 + sta _22 + //SEG94 [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) -- vbuz1=vbuz2_plus_vbuc1 lda #$59+$33 clc - adc _23 + adc _22 sta ypos //SEG95 [53] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ) -- vbuz1=vbuz2_rol_1 lda i asl sta i2 - //SEG96 [54] (byte~) anim::$26 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ) -- vbuz1=_lo_vwsz2 + //SEG96 [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ) -- vbuz1=_lo_vwsz2 lda xpos - sta _26 - //SEG97 [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$26 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _26 + sta _25 + //SEG97 [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + lda _25 ldy i2 sta SPRITES_XPOS,y //SEG98 [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 @@ -2706,7 +2701,7 @@ mulf_init: { REGISTER UPLIFT POTENTIAL REGISTERS -Equivalence Class zp ZP_BYTE:59 [ anim::$23 ] has ALU potential. +Equivalence Class zp ZP_BYTE:59 [ anim::$22 ] has ALU potential. Statement [12] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 [ anim::angle#10 ] ( main:3::anim:8 [ anim::angle#10 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] Statement [17] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS#0 + (byte) anim::angle#10) [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] ) always clobbers reg byte a @@ -2730,13 +2725,13 @@ Statement [40] (signed word~) anim::$11 ← (signed word) mulf8s_prepared::retur Statement [41] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$12 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$12 ] ) always clobbers reg byte a Statement [42] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$12 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ) always clobbers reg byte a Statement [43] (byte~) anim::$13 ← > (signed word) anim::xr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ) always clobbers reg byte a -Statement [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$16 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 60 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) always clobbers reg byte a -Statement [47] (byte~) anim::$19 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ) always clobbers reg byte a +Statement [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) always clobbers reg byte a +Statement [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ) always clobbers reg byte a Statement [49] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte/word/signed word/dword/signed dword) 128 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ) always clobbers reg byte a -Statement [52] (byte) anim::ypos#0 ← (byte~) anim::$23 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) always clobbers reg byte a +Statement [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) always clobbers reg byte a Statement [53] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ anim::ypos#0 ] -Statement [54] (byte~) anim::$26 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ) always clobbers reg byte a +Statement [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ anim::i2#0 ] Statement [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ) always clobbers reg byte a Statement [61] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ anim::angle#1 ] ( main:3::anim:8 [ anim::angle#1 ] ) always clobbers reg byte a @@ -2800,12 +2795,12 @@ Statement [40] (signed word~) anim::$11 ← (signed word) mulf8s_prepared::retur Statement [41] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$12 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$12 ] ) always clobbers reg byte a Statement [42] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$12 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ) always clobbers reg byte a Statement [43] (byte~) anim::$13 ← > (signed word) anim::xr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ) always clobbers reg byte a -Statement [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$16 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 60 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) always clobbers reg byte a -Statement [47] (byte~) anim::$19 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ) always clobbers reg byte a +Statement [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) always clobbers reg byte a +Statement [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ) always clobbers reg byte a Statement [49] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte/word/signed word/dword/signed dword) 128 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ) always clobbers reg byte a -Statement [52] (byte) anim::ypos#0 ← (byte~) anim::$23 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) always clobbers reg byte a +Statement [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) always clobbers reg byte a Statement [53] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ) always clobbers reg byte a -Statement [54] (byte~) anim::$26 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ) always clobbers reg byte a +Statement [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ) always clobbers reg byte a Statement [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ) always clobbers reg byte a Statement [61] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ anim::angle#1 ] ( main:3::anim:8 [ anim::angle#1 ] ) always clobbers reg byte a Statement [64] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] ) always clobbers reg byte a @@ -2867,13 +2862,13 @@ Potential registers zp ZP_WORD:48 [ anim::$11 ] : zp ZP_WORD:48 , Potential registers zp ZP_WORD:50 [ anim::$12 ] : zp ZP_WORD:50 , Potential registers zp ZP_WORD:52 [ anim::yr#1 ] : zp ZP_WORD:52 , Potential registers zp ZP_BYTE:54 [ anim::$13 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:55 [ anim::$16 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:55 [ anim::$15 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:56 [ anim::xpos#0 ] : zp ZP_WORD:56 , -Potential registers zp ZP_BYTE:58 [ anim::$19 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:59 [ anim::$23 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:58 [ anim::$18 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:59 [ anim::$22 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , reg byte alu , Potential registers zp ZP_BYTE:60 [ anim::ypos#0 ] : zp ZP_BYTE:60 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:61 [ anim::i2#0 ] : zp ZP_BYTE:61 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:62 [ anim::$26 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:62 [ anim::$25 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] : zp ZP_WORD:63 , Potential registers zp ZP_BYTE:65 [ mulf8s_prepared::$5 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:66 [ mulf8s_prepared::$15 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , @@ -2885,7 +2880,7 @@ Potential registers zp ZP_BYTE:72 [ mulf_init::$5 ] : zp ZP_BYTE:72 , reg byte a Potential registers zp ZP_BYTE:73 [ mulf_init::$6 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [anim] 344.2: zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] 202: zp ZP_WORD:28 [ anim::$4 ] 202: zp ZP_WORD:34 [ anim::$6 ] 202: zp ZP_WORD:40 [ anim::$9 ] 202: zp ZP_WORD:42 [ anim::$10 ] 202: zp ZP_WORD:48 [ anim::$11 ] 202: zp ZP_WORD:50 [ anim::$12 ] 202: zp ZP_BYTE:55 [ anim::$16 ] 202: zp ZP_BYTE:58 [ anim::$19 ] 202: zp ZP_BYTE:59 [ anim::$23 ] 202: zp ZP_BYTE:62 [ anim::$26 ] 163.24: zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] 101: zp ZP_BYTE:54 [ anim::$13 ] 101: zp ZP_BYTE:61 [ anim::i2#0 ] 50.5: zp ZP_BYTE:60 [ anim::ypos#0 ] 33.67: zp ZP_WORD:56 [ anim::xpos#0 ] 28.86: zp ZP_WORD:44 [ anim::xr#1 ] 22.44: zp ZP_WORD:52 [ anim::yr#1 ] 20.2: zp ZP_BYTE:25 [ anim::y#0 ] 15.54: zp ZP_WORD:30 [ anim::xr#0 ] 14.43: zp ZP_WORD:36 [ anim::yr#0 ] 13.77: zp ZP_BYTE:24 [ anim::x#0 ] 11.45: zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] +Uplift Scope [anim] 344.2: zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] 202: zp ZP_WORD:28 [ anim::$4 ] 202: zp ZP_WORD:34 [ anim::$6 ] 202: zp ZP_WORD:40 [ anim::$9 ] 202: zp ZP_WORD:42 [ anim::$10 ] 202: zp ZP_WORD:48 [ anim::$11 ] 202: zp ZP_WORD:50 [ anim::$12 ] 202: zp ZP_BYTE:55 [ anim::$15 ] 202: zp ZP_BYTE:58 [ anim::$18 ] 202: zp ZP_BYTE:59 [ anim::$22 ] 202: zp ZP_BYTE:62 [ anim::$25 ] 163.24: zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] 101: zp ZP_BYTE:54 [ anim::$13 ] 101: zp ZP_BYTE:61 [ anim::i2#0 ] 50.5: zp ZP_BYTE:60 [ anim::ypos#0 ] 33.67: zp ZP_WORD:56 [ anim::xpos#0 ] 28.86: zp ZP_WORD:44 [ anim::xr#1 ] 22.44: zp ZP_WORD:52 [ anim::yr#1 ] 20.2: zp ZP_BYTE:25 [ anim::y#0 ] 15.54: zp ZP_WORD:30 [ anim::xr#0 ] 14.43: zp ZP_WORD:36 [ anim::yr#0 ] 13.77: zp ZP_BYTE:24 [ anim::x#0 ] 11.45: zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] Uplift Scope [mulf8s_prepared] 839.23: zp ZP_BYTE:5 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] 202: zp ZP_WORD:26 [ mulf8s_prepared::return#2 ] 202: zp ZP_WORD:32 [ mulf8s_prepared::return#3 ] 202: zp ZP_WORD:38 [ mulf8s_prepared::return#4 ] 202: zp ZP_WORD:46 [ mulf8s_prepared::return#10 ] 13.17: zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp ZP_BYTE:65 [ mulf8s_prepared::$5 ] 4: zp ZP_BYTE:66 [ mulf8s_prepared::$15 ] 4: zp ZP_BYTE:67 [ mulf8s_prepared::$11 ] 4: zp ZP_BYTE:68 [ mulf8s_prepared::$16 ] Uplift Scope [mulf8u_prepare] 608: zp ZP_BYTE:8 [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#4 ] Uplift Scope [mulf_init] 45.1: zp ZP_WORD:16 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:10 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:71 [ mulf_init::$2 ] 22: zp ZP_BYTE:72 [ mulf_init::$5 ] 22: zp ZP_BYTE:73 [ mulf_init::$6 ] 20.62: zp ZP_WORD:19 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:21 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:13 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] @@ -2894,7 +2889,7 @@ Uplift Scope [mulf8u_prepared] 4: zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] 1. Uplift Scope [main] Uplift Scope [] -Uplifting [anim] best 53476 combination zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] zp ZP_WORD:28 [ anim::$4 ] zp ZP_WORD:34 [ anim::$6 ] zp ZP_WORD:40 [ anim::$9 ] zp ZP_WORD:42 [ anim::$10 ] zp ZP_WORD:48 [ anim::$11 ] zp ZP_WORD:50 [ anim::$12 ] reg byte a [ anim::$16 ] reg byte a [ anim::$19 ] reg byte a [ anim::$23 ] zp ZP_BYTE:62 [ anim::$26 ] zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] zp ZP_BYTE:54 [ anim::$13 ] zp ZP_BYTE:61 [ anim::i2#0 ] zp ZP_BYTE:60 [ anim::ypos#0 ] zp ZP_WORD:56 [ anim::xpos#0 ] zp ZP_WORD:44 [ anim::xr#1 ] zp ZP_WORD:52 [ anim::yr#1 ] zp ZP_BYTE:25 [ anim::y#0 ] zp ZP_WORD:30 [ anim::xr#0 ] zp ZP_WORD:36 [ anim::yr#0 ] zp ZP_BYTE:24 [ anim::x#0 ] zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] +Uplifting [anim] best 53476 combination zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] zp ZP_WORD:28 [ anim::$4 ] zp ZP_WORD:34 [ anim::$6 ] zp ZP_WORD:40 [ anim::$9 ] zp ZP_WORD:42 [ anim::$10 ] zp ZP_WORD:48 [ anim::$11 ] zp ZP_WORD:50 [ anim::$12 ] reg byte a [ anim::$15 ] reg byte a [ anim::$18 ] reg byte a [ anim::$22 ] zp ZP_BYTE:62 [ anim::$25 ] zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] zp ZP_BYTE:54 [ anim::$13 ] zp ZP_BYTE:61 [ anim::i2#0 ] zp ZP_BYTE:60 [ anim::ypos#0 ] zp ZP_WORD:56 [ anim::xpos#0 ] zp ZP_WORD:44 [ anim::xr#1 ] zp ZP_WORD:52 [ anim::yr#1 ] zp ZP_BYTE:25 [ anim::y#0 ] zp ZP_WORD:30 [ anim::xr#0 ] zp ZP_WORD:36 [ anim::yr#0 ] zp ZP_BYTE:24 [ anim::x#0 ] zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] Limited combination testing to 100 combinations of 368640 possible. Uplifting [mulf8s_prepared] best 52255 combination reg byte y [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] zp ZP_WORD:26 [ mulf8s_prepared::return#2 ] zp ZP_WORD:32 [ mulf8s_prepared::return#3 ] zp ZP_WORD:38 [ mulf8s_prepared::return#4 ] zp ZP_WORD:46 [ mulf8s_prepared::return#10 ] zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$11 ] zp ZP_BYTE:68 [ mulf8s_prepared::$16 ] Limited combination testing to 100 combinations of 512 possible. @@ -2907,8 +2902,8 @@ Uplifting [main] best 51272 combination Uplifting [] best 51272 combination Attempting to uplift remaining variables inzp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] Uplifting [anim] best 51272 combination zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:62 [ anim::$26 ] -Uplifting [anim] best 50672 combination reg byte a [ anim::$26 ] +Attempting to uplift remaining variables inzp ZP_BYTE:62 [ anim::$25 ] +Uplifting [anim] best 50672 combination reg byte a [ anim::$25 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] Uplifting [anim] best 50672 combination zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:54 [ anim::$13 ] @@ -3195,9 +3190,9 @@ anim: { sta yr+1 //SEG82 [43] (byte~) anim::$13 ← > (signed word) anim::xr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ) -- vbuaa=_hi_vwsz1 lda xr+1 - //SEG83 [44] (signed byte~) anim::$16 ← (signed byte)(byte~) anim::$13 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$16 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$16 ] ) - // (signed byte~) anim::$16 = (signed byte)(byte~) anim::$13 // register copy reg byte a - //SEG84 [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$16 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 60 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) -- vwsz1=vbsaa_plus_vbuc1 + //SEG83 [44] (signed byte~) anim::$15 ← (signed byte)(byte~) anim::$13 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$15 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$15 ] ) + // (signed byte~) anim::$15 = (signed byte)(byte~) anim::$13 // register copy reg byte a + //SEG84 [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) -- vwsz1=vbsaa_plus_vbuc1 sta xpos ora #$7f bmi !+ @@ -3206,16 +3201,16 @@ anim: { sta xpos+1 lda xpos clc - adc #$59+$18+$3c + adc #$18+$95 sta xpos lda xpos+1 adc #0 sta xpos+1 //SEG85 [46] (byte) anim::sprite_msb#1 ← (byte) anim::sprite_msb#10 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) -- vbuz1=vbuz1_ror_1 lsr sprite_msb - //SEG86 [47] (byte~) anim::$19 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ) -- vbuaa=_hi_vwsz1 + //SEG86 [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ) -- vbuaa=_hi_vwsz1 lda xpos+1 - //SEG87 [48] if((byte~) anim::$19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) -- vbuaa_eq_0_then_la1 + //SEG87 [48] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b8_from_b24 jmp b14 @@ -3232,9 +3227,9 @@ anim: { jmp b8 //SEG92 anim::@8 b8: - //SEG93 [51] (byte~) anim::$23 ← > (signed word) anim::yr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$23 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$23 ] ) -- vbuaa=_hi_vwsz1 + //SEG93 [51] (byte~) anim::$22 ← > (signed word) anim::yr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$22 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$22 ] ) -- vbuaa=_hi_vwsz1 lda yr+1 - //SEG94 [52] (byte) anim::ypos#0 ← (byte~) anim::$23 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) -- vbuyy=vbuaa_plus_vbuc1 + //SEG94 [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) -- vbuyy=vbuaa_plus_vbuc1 clc adc #$59+$33 tay @@ -3242,9 +3237,9 @@ anim: { lda i asl tax - //SEG96 [54] (byte~) anim::$26 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ) -- vbuaa=_lo_vwsz1 + //SEG96 [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ) -- vbuaa=_lo_vwsz1 lda xpos - //SEG97 [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$26 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG97 [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x //SEG98 [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ) -- pbuc1_derefidx_vbuxx=vbuyy tya @@ -3817,10 +3812,10 @@ FINAL SYMBOL TABLE (signed word~) anim::$11 $11 zp ZP_WORD:5 202.0 (signed word~) anim::$12 $12 zp ZP_WORD:5 202.0 (byte~) anim::$13 reg byte a 101.0 -(signed byte~) anim::$16 reg byte a 202.0 -(byte~) anim::$19 reg byte a 202.0 -(byte~) anim::$23 reg byte a 202.0 -(byte~) anim::$26 reg byte a 202.0 +(signed byte~) anim::$15 reg byte a 202.0 +(byte~) anim::$18 reg byte a 202.0 +(byte~) anim::$22 reg byte a 202.0 +(byte~) anim::$25 reg byte a 202.0 (signed word~) anim::$4 $4 zp ZP_WORD:7 202.0 (signed word~) anim::$6 $6 zp ZP_WORD:9 202.0 (signed word~) anim::$9 $9 zp ZP_WORD:5 202.0 @@ -4001,12 +3996,12 @@ reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_BYTE:11 [ anim::x#0 ] zp ZP_BYTE:12 [ anim::y#0 ] reg byte a [ anim::$13 ] -reg byte a [ anim::$16 ] -reg byte a [ anim::$19 ] -reg byte a [ anim::$23 ] +reg byte a [ anim::$15 ] +reg byte a [ anim::$18 ] +reg byte a [ anim::$22 ] reg byte y [ anim::ypos#0 ] reg byte x [ anim::i2#0 ] -reg byte a [ anim::$26 ] +reg byte a [ anim::$25 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$11 ] @@ -4207,9 +4202,9 @@ anim: { sta yr+1 //SEG82 [43] (byte~) anim::$13 ← > (signed word) anim::xr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$13 ] ) -- vbuaa=_hi_vwsz1 lda xr+1 - //SEG83 [44] (signed byte~) anim::$16 ← (signed byte)(byte~) anim::$13 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$16 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$16 ] ) - // (signed byte~) anim::$16 = (signed byte)(byte~) anim::$13 // register copy reg byte a - //SEG84 [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$16 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 60 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) -- vwsz1=vbsaa_plus_vbuc1 + //SEG83 [44] (signed byte~) anim::$15 ← (signed byte)(byte~) anim::$13 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$15 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$15 ] ) + // (signed byte~) anim::$15 = (signed byte)(byte~) anim::$13 // register copy reg byte a + //SEG84 [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) -- vwsz1=vbsaa_plus_vbuc1 sta xpos ora #$7f bmi !+ @@ -4218,15 +4213,15 @@ anim: { sta xpos+1 lda xpos clc - adc #$59+$18+$3c + adc #$18+$95 sta xpos lda xpos+1 adc #0 sta xpos+1 //SEG85 [46] (byte) anim::sprite_msb#1 ← (byte) anim::sprite_msb#10 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) -- vbuz1=vbuz1_ror_1 lsr sprite_msb - //SEG86 [47] (byte~) anim::$19 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$19 ] ) -- vbuaa=_hi_vwsz1 - //SEG87 [48] if((byte~) anim::$19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) -- vbuaa_eq_0_then_la1 + //SEG86 [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$18 ] ) -- vbuaa=_hi_vwsz1 + //SEG87 [48] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b8 //SEG88 anim::@14 @@ -4238,9 +4233,9 @@ anim: { //SEG91 [50] phi (byte) anim::sprite_msb#5 = (byte) anim::sprite_msb#2 [phi:anim::@14/anim::@24->anim::@8#0] -- register_copy //SEG92 anim::@8 b8: - //SEG93 [51] (byte~) anim::$23 ← > (signed word) anim::yr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$23 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$23 ] ) -- vbuaa=_hi_vwsz1 + //SEG93 [51] (byte~) anim::$22 ← > (signed word) anim::yr#1 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$22 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::$22 ] ) -- vbuaa=_hi_vwsz1 lda yr+1 - //SEG94 [52] (byte) anim::ypos#0 ← (byte~) anim::$23 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) -- vbuyy=vbuaa_plus_vbuc1 + //SEG94 [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 ] ) -- vbuyy=vbuaa_plus_vbuc1 clc adc #$59+$33 tay @@ -4248,9 +4243,9 @@ anim: { lda i asl tax - //SEG96 [54] (byte~) anim::$26 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$26 ] ) -- vbuaa=_lo_vwsz1 + //SEG96 [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$25 ] ) -- vbuaa=_lo_vwsz1 lda xpos - //SEG97 [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$26 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG97 [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x //SEG98 [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#5 ] ) -- pbuc1_derefidx_vbuxx=vbuyy tya diff --git a/src/test/ref/examples/rotate/rotate.sym b/src/test/ref/examples/rotate/rotate.sym index c386cd7b1..5dc631d19 100644 --- a/src/test/ref/examples/rotate/rotate.sym +++ b/src/test/ref/examples/rotate/rotate.sym @@ -32,10 +32,10 @@ (signed word~) anim::$11 $11 zp ZP_WORD:5 202.0 (signed word~) anim::$12 $12 zp ZP_WORD:5 202.0 (byte~) anim::$13 reg byte a 101.0 -(signed byte~) anim::$16 reg byte a 202.0 -(byte~) anim::$19 reg byte a 202.0 -(byte~) anim::$23 reg byte a 202.0 -(byte~) anim::$26 reg byte a 202.0 +(signed byte~) anim::$15 reg byte a 202.0 +(byte~) anim::$18 reg byte a 202.0 +(byte~) anim::$22 reg byte a 202.0 +(byte~) anim::$25 reg byte a 202.0 (signed word~) anim::$4 $4 zp ZP_WORD:7 202.0 (signed word~) anim::$6 $6 zp ZP_WORD:9 202.0 (signed word~) anim::$9 $9 zp ZP_WORD:5 202.0 @@ -216,12 +216,12 @@ reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_BYTE:11 [ anim::x#0 ] zp ZP_BYTE:12 [ anim::y#0 ] reg byte a [ anim::$13 ] -reg byte a [ anim::$16 ] -reg byte a [ anim::$19 ] -reg byte a [ anim::$23 ] +reg byte a [ anim::$15 ] +reg byte a [ anim::$18 ] +reg byte a [ anim::$22 ] reg byte y [ anim::ypos#0 ] reg byte x [ anim::i2#0 ] -reg byte a [ anim::$26 ] +reg byte a [ anim::$25 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$11 ]