1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-10-10 20:23:47 +00:00

Improved readability a bit.

This commit is contained in:
jespergravgaard 2018-10-20 21:05:11 +02:00
parent 87933460f3
commit 5896f483b7
5 changed files with 148 additions and 153 deletions

View File

@ -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] = <xpos;
SPRITES_YPOS[i2] = ypos;

View File

@ -105,7 +105,7 @@ anim: {
sta xpos+1
lda xpos
clc
adc #$59+$18+$3c
adc #$18+$95
sta xpos
lda xpos+1
adc #0

View File

@ -92,22 +92,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 ] )

View File

@ -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

View File

@ -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 ]