mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-03-24 15:32:58 +00:00
Optimized unrolled plasma to ~16.500 cycles per screen.
This commit is contained in:
parent
8234877eeb
commit
aecf1ea7b2
@ -1,5 +1,6 @@
|
||||
// A KickC version of the plasma routine from the CC65 samples
|
||||
// This version has an unrolled inner loop to reach ~50FPS
|
||||
// This version has an unrolled inner loop to reach 50+FPS
|
||||
// This version also optimizes the inner loop by calculating the Y buffer as a set of differences
|
||||
// (w)2001 by groepaz/hitmen
|
||||
// Cleanup and porting to CC65 by Ullrich von Bassewitz.
|
||||
// Ported to KickC by Jesper Gravgaard.
|
||||
@ -45,8 +46,12 @@ void doplasma(unsigned char* screen) {
|
||||
|
||||
unsigned char c1a = c1A;
|
||||
unsigned char c1b = c1B;
|
||||
unsigned char yprev = 0;
|
||||
// Calculate ybuff as a bunch of differences
|
||||
for (unsigned char i = 0; i < 25; ++i) {
|
||||
ybuf[i] = (SINTABLE[c1a] + SINTABLE[c1b]);
|
||||
unsigned char yval = (SINTABLE[c1a] + SINTABLE[c1b]);
|
||||
ybuf[i] = yval - yprev;
|
||||
yprev = yval;
|
||||
c1a += 4;
|
||||
c1b += 9;
|
||||
}
|
||||
@ -62,10 +67,13 @@ void doplasma(unsigned char* screen) {
|
||||
c2A += 2;
|
||||
c2B -= 3;
|
||||
for (unsigned char i = 0; i < 40; ++i) {
|
||||
unsigned char xval = xbuf[i];
|
||||
// Find the first value on the row
|
||||
unsigned char val = xbuf[i];
|
||||
// Calculate the next values as sums of diffs
|
||||
// Use experimental loop unrolling to increase the speed
|
||||
inline for (unsigned char ii = 0; ii < 25; ++ii) {
|
||||
(screen+ii*40)[i] = xval + ybuf[ii];
|
||||
val += ybuf[ii];
|
||||
(screen+ii*40)[i] = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -78,22 +78,31 @@ doplasma: {
|
||||
sta c1a
|
||||
lda c1B
|
||||
sta c1b
|
||||
lda #0
|
||||
sta i
|
||||
b1:
|
||||
ldy c1a
|
||||
lda SINTABLE,y
|
||||
ldy c1b
|
||||
clc
|
||||
adc SINTABLE,y
|
||||
ldy i
|
||||
sta ybuf,y
|
||||
sta ybuf
|
||||
lda #1
|
||||
sta i
|
||||
// Calculate ybuff as a bunch of differences
|
||||
b1:
|
||||
lax c1a
|
||||
axs #-[4]
|
||||
stx c1a
|
||||
lax c1b
|
||||
axs #-[9]
|
||||
stx c1b
|
||||
ldy c1a
|
||||
lda SINTABLE,y
|
||||
ldy c1b
|
||||
clc
|
||||
adc SINTABLE,y
|
||||
ldy i
|
||||
sec
|
||||
sbc ybuf+-1,y
|
||||
sta ybuf,y
|
||||
inc i
|
||||
lda i
|
||||
cmp #$19
|
||||
@ -137,105 +146,81 @@ doplasma: {
|
||||
stx c2B
|
||||
ldx #0
|
||||
b5:
|
||||
ldy xbuf,x
|
||||
// Use experimental loop unrolling to increase the speed
|
||||
tya
|
||||
lda xbuf,x
|
||||
clc
|
||||
adc ybuf
|
||||
sta SCREEN1,x
|
||||
tya
|
||||
// Calculate the next values as sums of diffs
|
||||
// Use experimental loop unrolling to increase the speed
|
||||
clc
|
||||
adc ybuf+1
|
||||
sta SCREEN1+1*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+2
|
||||
sta SCREEN1+2*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+3
|
||||
sta SCREEN1+3*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+4
|
||||
sta SCREEN1+4*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+5
|
||||
sta SCREEN1+5*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+6
|
||||
sta SCREEN1+6*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+7
|
||||
sta SCREEN1+7*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+8
|
||||
sta SCREEN1+8*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+9
|
||||
sta SCREEN1+9*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$a
|
||||
sta SCREEN1+$a*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$b
|
||||
sta SCREEN1+$b*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$c
|
||||
sta SCREEN1+$c*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$d
|
||||
sta SCREEN1+$d*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$e
|
||||
sta SCREEN1+$e*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$f
|
||||
sta SCREEN1+$f*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$10
|
||||
sta SCREEN1+$10*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$11
|
||||
sta SCREEN1+$11*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$12
|
||||
sta SCREEN1+$12*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$13
|
||||
sta SCREEN1+$13*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$14
|
||||
sta SCREEN1+$14*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$15
|
||||
sta SCREEN1+$15*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$16
|
||||
sta SCREEN1+$16*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$17
|
||||
sta SCREEN1+$17*$28,x
|
||||
tya
|
||||
clc
|
||||
adc ybuf+$18
|
||||
sta SCREEN1+$18*$28,x
|
||||
|
@ -46,238 +46,238 @@ main::@4: scope:[main] from main::@3
|
||||
doplasma: scope:[doplasma] from main::@4
|
||||
[19] (byte) doplasma::c1a#0 ← (byte) c1A#1
|
||||
[20] (byte) doplasma::c1b#0 ← (byte) c1B#1
|
||||
[21] (byte~) doplasma::$0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#0) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#0)
|
||||
[22] *((const byte[$19]) doplasma::ybuf#0) ← (byte~) doplasma::$0
|
||||
to:doplasma::@1
|
||||
doplasma::@1: scope:[doplasma] from doplasma doplasma::@1
|
||||
[21] (byte) doplasma::i#2 ← phi( doplasma/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@1/(byte) doplasma::i#1 )
|
||||
[21] (byte) doplasma::c1b#2 ← phi( doplasma/(byte) doplasma::c1b#0 doplasma::@1/(byte) doplasma::c1b#1 )
|
||||
[21] (byte) doplasma::c1a#2 ← phi( doplasma/(byte) doplasma::c1a#0 doplasma::@1/(byte) doplasma::c1a#1 )
|
||||
[22] (byte~) doplasma::$0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#2)
|
||||
[23] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$0
|
||||
[23] (byte) doplasma::i#2 ← phi( doplasma/(byte/signed byte/word/signed word/dword/signed dword) 1 doplasma::@1/(byte) doplasma::i#1 )
|
||||
[23] (byte) doplasma::c1b#2 ← phi( doplasma/(byte) doplasma::c1b#0 doplasma::@1/(byte) doplasma::c1b#1 )
|
||||
[23] (byte) doplasma::c1a#2 ← phi( doplasma/(byte) doplasma::c1a#0 doplasma::@1/(byte) doplasma::c1a#1 )
|
||||
[24] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[25] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
[26] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2
|
||||
[27] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@1
|
||||
[26] (byte~) doplasma::$1 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#1) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#1)
|
||||
[27] (byte~) doplasma::$3 ← (byte~) doplasma::$1 - *((const byte[$19]) doplasma::ybuf#0+-(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) doplasma::i#2)
|
||||
[28] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$3
|
||||
[29] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2
|
||||
[30] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@1
|
||||
to:doplasma::@2
|
||||
doplasma::@2: scope:[doplasma] from doplasma::@1
|
||||
[28] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[29] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
[30] (byte) doplasma::c2a#0 ← (byte) c2A#1
|
||||
[31] (byte) doplasma::c2b#0 ← (byte) c2B#1
|
||||
[31] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[32] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
[33] (byte) doplasma::c2a#0 ← (byte) c2A#1
|
||||
[34] (byte) doplasma::c2b#0 ← (byte) c2B#1
|
||||
to:doplasma::@3
|
||||
doplasma::@3: scope:[doplasma] from doplasma::@2 doplasma::@3
|
||||
[32] (byte) doplasma::i1#2 ← phi( doplasma::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@3/(byte) doplasma::i1#1 )
|
||||
[32] (byte) doplasma::c2b#2 ← phi( doplasma::@2/(byte) doplasma::c2b#0 doplasma::@3/(byte) doplasma::c2b#1 )
|
||||
[32] (byte) doplasma::c2a#2 ← phi( doplasma::@2/(byte) doplasma::c2a#0 doplasma::@3/(byte) doplasma::c2a#1 )
|
||||
[33] (byte~) doplasma::$2 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2)
|
||||
[34] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$2
|
||||
[35] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[36] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[37] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2
|
||||
[38] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3
|
||||
[35] (byte) doplasma::i1#2 ← phi( doplasma::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@3/(byte) doplasma::i1#1 )
|
||||
[35] (byte) doplasma::c2b#2 ← phi( doplasma::@2/(byte) doplasma::c2b#0 doplasma::@3/(byte) doplasma::c2b#1 )
|
||||
[35] (byte) doplasma::c2a#2 ← phi( doplasma::@2/(byte) doplasma::c2a#0 doplasma::@3/(byte) doplasma::c2a#1 )
|
||||
[36] (byte~) doplasma::$5 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2)
|
||||
[37] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$5
|
||||
[38] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[39] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[40] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2
|
||||
[41] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3
|
||||
to:doplasma::@4
|
||||
doplasma::@4: scope:[doplasma] from doplasma::@3
|
||||
[39] (byte) c2A#3 ← (byte) c2A#1 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[40] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[42] (byte) c2A#3 ← (byte) c2A#1 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[43] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
to:doplasma::@5
|
||||
doplasma::@5: scope:[doplasma] from doplasma::@4 doplasma::@7
|
||||
[41] (byte) doplasma::i2#2 ← phi( doplasma::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@7/(byte) doplasma::i2#1 )
|
||||
[42] (byte) doplasma::xval#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2)
|
||||
[44] (byte) doplasma::i2#2 ← phi( doplasma::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@7/(byte) doplasma::i2#1 )
|
||||
[45] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) + *((const byte[$19]) doplasma::ybuf#0)
|
||||
[46] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte) doplasma::val#0
|
||||
to:doplasma::@6
|
||||
doplasma::@6: scope:[doplasma] from doplasma::@5
|
||||
[43] (byte~) doplasma::$6 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0)
|
||||
[44] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte~) doplasma::$6
|
||||
[47] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1)
|
||||
[48] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1
|
||||
to:doplasma::@6_1
|
||||
doplasma::@6_1: scope:[doplasma] from doplasma::@6
|
||||
[45] (byte~) doplasma::$11 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1)
|
||||
[46] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$11
|
||||
[49] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2)
|
||||
[50] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#4
|
||||
to:doplasma::@6_2
|
||||
doplasma::@6_2: scope:[doplasma] from doplasma::@6_1
|
||||
[47] (byte~) doplasma::$14 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2)
|
||||
[48] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$14
|
||||
[51] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3)
|
||||
[52] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#6
|
||||
to:doplasma::@6_3
|
||||
doplasma::@6_3: scope:[doplasma] from doplasma::@6_2
|
||||
[49] (byte~) doplasma::$17 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3)
|
||||
[50] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$17
|
||||
[53] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4)
|
||||
[54] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#8
|
||||
to:doplasma::@6_4
|
||||
doplasma::@6_4: scope:[doplasma] from doplasma::@6_3
|
||||
[51] (byte~) doplasma::$20 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4)
|
||||
[52] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$20
|
||||
[55] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5)
|
||||
[56] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10
|
||||
to:doplasma::@6_5
|
||||
doplasma::@6_5: scope:[doplasma] from doplasma::@6_4
|
||||
[53] (byte~) doplasma::$23 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5)
|
||||
[54] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$23
|
||||
[57] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6)
|
||||
[58] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#12
|
||||
to:doplasma::@6_6
|
||||
doplasma::@6_6: scope:[doplasma] from doplasma::@6_5
|
||||
[55] (byte~) doplasma::$26 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6)
|
||||
[56] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$26
|
||||
[59] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7)
|
||||
[60] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#14
|
||||
to:doplasma::@6_7
|
||||
doplasma::@6_7: scope:[doplasma] from doplasma::@6_6
|
||||
[57] (byte~) doplasma::$29 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7)
|
||||
[58] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$29
|
||||
[61] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8)
|
||||
[62] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#16
|
||||
to:doplasma::@6_8
|
||||
doplasma::@6_8: scope:[doplasma] from doplasma::@6_7
|
||||
[59] (byte~) doplasma::$32 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8)
|
||||
[60] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$32
|
||||
[63] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9)
|
||||
[64] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#18
|
||||
to:doplasma::@6_9
|
||||
doplasma::@6_9: scope:[doplasma] from doplasma::@6_8
|
||||
[61] (byte~) doplasma::$35 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9)
|
||||
[62] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$35
|
||||
[65] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a)
|
||||
[66] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#20
|
||||
to:doplasma::@6_10
|
||||
doplasma::@6_10: scope:[doplasma] from doplasma::@6_9
|
||||
[63] (byte~) doplasma::$38 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a)
|
||||
[64] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$38
|
||||
[67] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b)
|
||||
[68] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#22
|
||||
to:doplasma::@6_11
|
||||
doplasma::@6_11: scope:[doplasma] from doplasma::@6_10
|
||||
[65] (byte~) doplasma::$41 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b)
|
||||
[66] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$41
|
||||
[69] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c)
|
||||
[70] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#24
|
||||
to:doplasma::@6_12
|
||||
doplasma::@6_12: scope:[doplasma] from doplasma::@6_11
|
||||
[67] (byte~) doplasma::$44 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c)
|
||||
[68] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$44
|
||||
[71] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d)
|
||||
[72] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#26
|
||||
to:doplasma::@6_13
|
||||
doplasma::@6_13: scope:[doplasma] from doplasma::@6_12
|
||||
[69] (byte~) doplasma::$47 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d)
|
||||
[70] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$47
|
||||
[73] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e)
|
||||
[74] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#28
|
||||
to:doplasma::@6_14
|
||||
doplasma::@6_14: scope:[doplasma] from doplasma::@6_13
|
||||
[71] (byte~) doplasma::$50 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e)
|
||||
[72] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$50
|
||||
[75] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f)
|
||||
[76] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#30
|
||||
to:doplasma::@6_15
|
||||
doplasma::@6_15: scope:[doplasma] from doplasma::@6_14
|
||||
[73] (byte~) doplasma::$53 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f)
|
||||
[74] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$53
|
||||
[77] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10)
|
||||
[78] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#32
|
||||
to:doplasma::@6_16
|
||||
doplasma::@6_16: scope:[doplasma] from doplasma::@6_15
|
||||
[75] (byte~) doplasma::$56 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10)
|
||||
[76] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$56
|
||||
[79] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11)
|
||||
[80] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#34
|
||||
to:doplasma::@6_17
|
||||
doplasma::@6_17: scope:[doplasma] from doplasma::@6_16
|
||||
[77] (byte~) doplasma::$59 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11)
|
||||
[78] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$59
|
||||
[81] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12)
|
||||
[82] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#36
|
||||
to:doplasma::@6_18
|
||||
doplasma::@6_18: scope:[doplasma] from doplasma::@6_17
|
||||
[79] (byte~) doplasma::$62 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12)
|
||||
[80] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$62
|
||||
[83] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13)
|
||||
[84] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#38
|
||||
to:doplasma::@6_19
|
||||
doplasma::@6_19: scope:[doplasma] from doplasma::@6_18
|
||||
[81] (byte~) doplasma::$65 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13)
|
||||
[82] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$65
|
||||
[85] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14)
|
||||
[86] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#40
|
||||
to:doplasma::@6_20
|
||||
doplasma::@6_20: scope:[doplasma] from doplasma::@6_19
|
||||
[83] (byte~) doplasma::$68 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14)
|
||||
[84] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$68
|
||||
[87] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15)
|
||||
[88] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#42
|
||||
to:doplasma::@6_21
|
||||
doplasma::@6_21: scope:[doplasma] from doplasma::@6_20
|
||||
[85] (byte~) doplasma::$71 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15)
|
||||
[86] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$71
|
||||
[89] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16)
|
||||
[90] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#44
|
||||
to:doplasma::@6_22
|
||||
doplasma::@6_22: scope:[doplasma] from doplasma::@6_21
|
||||
[87] (byte~) doplasma::$74 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16)
|
||||
[88] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$74
|
||||
[91] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17)
|
||||
[92] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#46
|
||||
to:doplasma::@6_23
|
||||
doplasma::@6_23: scope:[doplasma] from doplasma::@6_22
|
||||
[89] (byte~) doplasma::$77 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17)
|
||||
[90] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$77
|
||||
to:doplasma::@6_24
|
||||
doplasma::@6_24: scope:[doplasma] from doplasma::@6_23
|
||||
[91] (byte~) doplasma::$80 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18)
|
||||
[92] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$80
|
||||
[93] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18)
|
||||
[94] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#48
|
||||
to:doplasma::@7
|
||||
doplasma::@7: scope:[doplasma] from doplasma::@6_24
|
||||
[93] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2
|
||||
[94] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5
|
||||
doplasma::@7: scope:[doplasma] from doplasma::@6_23
|
||||
[95] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2
|
||||
[96] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5
|
||||
to:doplasma::@return
|
||||
doplasma::@return: scope:[doplasma] from doplasma::@7
|
||||
[95] return
|
||||
[97] return
|
||||
to:@return
|
||||
makecharset: scope:[makecharset] from main::@2
|
||||
[96] phi()
|
||||
[97] call sid_rnd_init
|
||||
[98] phi()
|
||||
[99] call sid_rnd_init
|
||||
to:makecharset::@10
|
||||
makecharset::@10: scope:[makecharset] from makecharset
|
||||
[98] phi()
|
||||
[99] call print_cls
|
||||
[100] phi()
|
||||
[101] call print_cls
|
||||
to:makecharset::@1
|
||||
makecharset::@1: scope:[makecharset] from makecharset::@10 makecharset::@9
|
||||
[100] (byte*) print_char_cursor#45 ← phi( makecharset::@10/(const byte*) print_line_cursor#0 makecharset::@9/(byte*) print_char_cursor#18 )
|
||||
[100] (word) makecharset::c#2 ← phi( makecharset::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@9/(word) makecharset::c#1 )
|
||||
[101] (byte~) makecharset::$2 ← < (word) makecharset::c#2
|
||||
[102] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2)
|
||||
[102] (byte*) print_char_cursor#45 ← phi( makecharset::@10/(const byte*) print_line_cursor#0 makecharset::@9/(byte*) print_char_cursor#18 )
|
||||
[102] (word) makecharset::c#2 ← phi( makecharset::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@9/(word) makecharset::c#1 )
|
||||
[103] (byte~) makecharset::$2 ← < (word) makecharset::c#2
|
||||
[104] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2)
|
||||
to:makecharset::@2
|
||||
makecharset::@2: scope:[makecharset] from makecharset::@1 makecharset::@6
|
||||
[103] (byte) makecharset::i#7 ← phi( makecharset::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@6/(byte) makecharset::i#1 )
|
||||
[105] (byte) makecharset::i#7 ← phi( makecharset::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@6/(byte) makecharset::i#1 )
|
||||
to:makecharset::@3
|
||||
makecharset::@3: scope:[makecharset] from makecharset::@2 makecharset::@4
|
||||
[104] (byte) makecharset::b#2 ← phi( makecharset::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@4/(byte) makecharset::b#3 )
|
||||
[104] (byte) makecharset::ii#2 ← phi( makecharset::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@4/(byte) makecharset::ii#1 )
|
||||
[105] call sid_rnd
|
||||
[106] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0
|
||||
[106] (byte) makecharset::b#2 ← phi( makecharset::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@4/(byte) makecharset::b#3 )
|
||||
[106] (byte) makecharset::ii#2 ← phi( makecharset::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@4/(byte) makecharset::ii#1 )
|
||||
[107] call sid_rnd
|
||||
[108] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0
|
||||
to:makecharset::@11
|
||||
makecharset::@11: scope:[makecharset] from makecharset::@3
|
||||
[107] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2
|
||||
[108] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff
|
||||
[109] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4
|
||||
[109] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2
|
||||
[110] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff
|
||||
[111] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4
|
||||
to:makecharset::@5
|
||||
makecharset::@5: scope:[makecharset] from makecharset::@11
|
||||
[110] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2)
|
||||
[112] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2)
|
||||
to:makecharset::@4
|
||||
makecharset::@4: scope:[makecharset] from makecharset::@11 makecharset::@5
|
||||
[111] (byte) makecharset::b#3 ← phi( makecharset::@11/(byte) makecharset::b#2 makecharset::@5/(byte) makecharset::b#1 )
|
||||
[112] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2
|
||||
[113] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3
|
||||
[113] (byte) makecharset::b#3 ← phi( makecharset::@11/(byte) makecharset::b#2 makecharset::@5/(byte) makecharset::b#1 )
|
||||
[114] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2
|
||||
[115] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3
|
||||
to:makecharset::@6
|
||||
makecharset::@6: scope:[makecharset] from makecharset::@4
|
||||
[114] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[115] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7
|
||||
[116] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3
|
||||
[117] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7
|
||||
[118] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2
|
||||
[116] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[117] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7
|
||||
[118] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3
|
||||
[119] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7
|
||||
[120] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2
|
||||
to:makecharset::@7
|
||||
makecharset::@7: scope:[makecharset] from makecharset::@6
|
||||
[119] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[120] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9
|
||||
[121] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[122] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9
|
||||
to:makecharset::@8
|
||||
makecharset::@8: scope:[makecharset] from makecharset::@7
|
||||
[121] phi()
|
||||
[122] call print_char
|
||||
[123] phi()
|
||||
[124] call print_char
|
||||
to:makecharset::@9
|
||||
makecharset::@9: scope:[makecharset] from makecharset::@7 makecharset::@8
|
||||
[123] (byte*) print_char_cursor#18 ← phi( makecharset::@8/(byte*) print_char_cursor#1 makecharset::@7/(byte*) print_char_cursor#45 )
|
||||
[124] (word) makecharset::c#1 ← ++ (word) makecharset::c#2
|
||||
[125] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1
|
||||
[125] (byte*) print_char_cursor#18 ← phi( makecharset::@8/(byte*) print_char_cursor#1 makecharset::@7/(byte*) print_char_cursor#45 )
|
||||
[126] (word) makecharset::c#1 ← ++ (word) makecharset::c#2
|
||||
[127] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1
|
||||
to:makecharset::@return
|
||||
makecharset::@return: scope:[makecharset] from makecharset::@9
|
||||
[126] return
|
||||
[128] return
|
||||
to:@return
|
||||
print_char: scope:[print_char] from makecharset::@8
|
||||
[127] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0
|
||||
[128] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45
|
||||
[129] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0
|
||||
[130] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45
|
||||
to:print_char::@return
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
[129] return
|
||||
to:@return
|
||||
sid_rnd: scope:[sid_rnd] from makecharset::@3
|
||||
[130] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0)
|
||||
to:sid_rnd::@return
|
||||
sid_rnd::@return: scope:[sid_rnd] from sid_rnd
|
||||
[131] return
|
||||
to:@return
|
||||
sid_rnd: scope:[sid_rnd] from makecharset::@3
|
||||
[132] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0)
|
||||
to:sid_rnd::@return
|
||||
sid_rnd::@return: scope:[sid_rnd] from sid_rnd
|
||||
[133] return
|
||||
to:@return
|
||||
print_cls: scope:[print_cls] from makecharset::@10
|
||||
[132] phi()
|
||||
[134] phi()
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[133] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[134] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[135] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[136] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1
|
||||
[135] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[136] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[137] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[138] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[137] return
|
||||
[139] return
|
||||
to:@return
|
||||
sid_rnd_init: scope:[sid_rnd_init] from makecharset
|
||||
[138] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff
|
||||
[139] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0
|
||||
[140] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff
|
||||
[141] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0
|
||||
to:sid_rnd_init::@return
|
||||
sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init
|
||||
[140] return
|
||||
[142] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -111,45 +111,22 @@
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte) c1A
|
||||
(byte) c1A#1 c1A zp ZP_BYTE:4 1.3636363636363638
|
||||
(byte) c1A#3 c1A zp ZP_BYTE:4 0.18840579710144925
|
||||
(byte) c1A#1 c1A zp ZP_BYTE:4 1.0714285714285714
|
||||
(byte) c1A#3 c1A zp ZP_BYTE:4 0.1911764705882353
|
||||
(byte) c1B
|
||||
(byte) c1B#1 c1B zp ZP_BYTE:5 1.25
|
||||
(byte) c1B#3 c1B zp ZP_BYTE:5 0.1911764705882353
|
||||
(byte) c1B#1 c1B zp ZP_BYTE:5 0.9999999999999999
|
||||
(byte) c1B#3 c1B zp ZP_BYTE:5 0.19402985074626866
|
||||
(byte) c2A
|
||||
(byte) c2A#1 c2A zp ZP_BYTE:6 0.6818181818181819
|
||||
(byte) c2A#3 c2A zp ZP_BYTE:6 0.22413793103448276
|
||||
(byte) c2A#1 c2A zp ZP_BYTE:6 0.6
|
||||
(byte) c2A#3 c2A zp ZP_BYTE:6 0.22807017543859648
|
||||
(byte) c2B
|
||||
(byte) c2B#1 c2B zp ZP_BYTE:7 0.6521739130434783
|
||||
(byte) c2B#3 c2B zp ZP_BYTE:7 0.22807017543859648
|
||||
(byte) c2B#1 c2B zp ZP_BYTE:7 0.5769230769230769
|
||||
(byte) c2B#3 c2B zp ZP_BYTE:7 0.23214285714285715
|
||||
(void()) doplasma((byte*) doplasma::screen)
|
||||
(byte~) doplasma::$0 reg byte a 202.0
|
||||
(byte~) doplasma::$11 reg byte a 202.0
|
||||
(byte~) doplasma::$14 reg byte a 202.0
|
||||
(byte~) doplasma::$17 reg byte a 202.0
|
||||
(byte~) doplasma::$2 reg byte a 202.0
|
||||
(byte~) doplasma::$20 reg byte a 202.0
|
||||
(byte~) doplasma::$23 reg byte a 202.0
|
||||
(byte~) doplasma::$26 reg byte a 202.0
|
||||
(byte~) doplasma::$29 reg byte a 202.0
|
||||
(byte~) doplasma::$32 reg byte a 202.0
|
||||
(byte~) doplasma::$35 reg byte a 202.0
|
||||
(byte~) doplasma::$38 reg byte a 202.0
|
||||
(byte~) doplasma::$41 reg byte a 202.0
|
||||
(byte~) doplasma::$44 reg byte a 202.0
|
||||
(byte~) doplasma::$47 reg byte a 202.0
|
||||
(byte~) doplasma::$50 reg byte a 202.0
|
||||
(byte~) doplasma::$53 reg byte a 202.0
|
||||
(byte~) doplasma::$56 reg byte a 202.0
|
||||
(byte~) doplasma::$59 reg byte a 202.0
|
||||
(byte~) doplasma::$6 reg byte a 202.0
|
||||
(byte~) doplasma::$62 reg byte a 202.0
|
||||
(byte~) doplasma::$65 reg byte a 202.0
|
||||
(byte~) doplasma::$68 reg byte a 202.0
|
||||
(byte~) doplasma::$71 reg byte a 202.0
|
||||
(byte~) doplasma::$74 reg byte a 202.0
|
||||
(byte~) doplasma::$77 reg byte a 202.0
|
||||
(byte~) doplasma::$80 reg byte a 202.0
|
||||
(byte~) doplasma::$0 reg byte a 4.0
|
||||
(byte~) doplasma::$1 reg byte a 202.0
|
||||
(byte~) doplasma::$3 reg byte a 202.0
|
||||
(byte~) doplasma::$5 reg byte a 202.0
|
||||
(label) doplasma::@1
|
||||
(label) doplasma::@2
|
||||
(label) doplasma::@3
|
||||
@ -172,7 +149,6 @@
|
||||
(label) doplasma::@6_21
|
||||
(label) doplasma::@6_22
|
||||
(label) doplasma::@6_23
|
||||
(label) doplasma::@6_24
|
||||
(label) doplasma::@6_3
|
||||
(label) doplasma::@6_4
|
||||
(label) doplasma::@6_5
|
||||
@ -183,13 +159,13 @@
|
||||
(label) doplasma::@7
|
||||
(label) doplasma::@return
|
||||
(byte) doplasma::c1a
|
||||
(byte) doplasma::c1a#0 c1a zp ZP_BYTE:8 2.0
|
||||
(byte) doplasma::c1a#1 c1a zp ZP_BYTE:8 50.5
|
||||
(byte) doplasma::c1a#2 c1a zp ZP_BYTE:8 101.66666666666666
|
||||
(byte) doplasma::c1a#0 c1a zp ZP_BYTE:8 1.5
|
||||
(byte) doplasma::c1a#1 c1a zp ZP_BYTE:8 43.285714285714285
|
||||
(byte) doplasma::c1a#2 c1a zp ZP_BYTE:8 204.0
|
||||
(byte) doplasma::c1b
|
||||
(byte) doplasma::c1b#0 c1b zp ZP_BYTE:9 4.0
|
||||
(byte) doplasma::c1b#1 c1b zp ZP_BYTE:9 67.33333333333333
|
||||
(byte) doplasma::c1b#2 c1b zp ZP_BYTE:9 76.25
|
||||
(byte) doplasma::c1b#0 c1b zp ZP_BYTE:9 2.0
|
||||
(byte) doplasma::c1b#1 c1b zp ZP_BYTE:9 50.5
|
||||
(byte) doplasma::c1b#2 c1b zp ZP_BYTE:9 102.0
|
||||
(byte) doplasma::c2a
|
||||
(byte) doplasma::c2a#0 c2a zp ZP_BYTE:8 2.0
|
||||
(byte) doplasma::c2a#1 c2a zp ZP_BYTE:8 50.5
|
||||
@ -200,19 +176,43 @@
|
||||
(byte) doplasma::c2b#2 c2b zp ZP_BYTE:9 76.25
|
||||
(byte) doplasma::i
|
||||
(byte) doplasma::i#1 i zp ZP_BYTE:10 151.5
|
||||
(byte) doplasma::i#2 i zp ZP_BYTE:10 60.599999999999994
|
||||
(byte) doplasma::i#2 i zp ZP_BYTE:10 67.33333333333333
|
||||
(byte) doplasma::i1
|
||||
(byte) doplasma::i1#1 i1 zp ZP_BYTE:10 151.5
|
||||
(byte) doplasma::i1#2 i1 zp ZP_BYTE:10 60.599999999999994
|
||||
(byte) doplasma::i2
|
||||
(byte) doplasma::i2#1 reg byte x 151.5
|
||||
(byte) doplasma::i2#2 reg byte x 54.3846153846154
|
||||
(byte) doplasma::i2#2 reg byte x 55.45098039215691
|
||||
(byte) doplasma::ii
|
||||
(byte*) doplasma::screen
|
||||
(byte) doplasma::val
|
||||
(byte) doplasma::val#0 reg byte a 151.5
|
||||
(byte) doplasma::val#1 reg byte a 151.5
|
||||
(byte) doplasma::val#10 reg byte a 151.5
|
||||
(byte) doplasma::val#12 reg byte a 151.5
|
||||
(byte) doplasma::val#14 reg byte a 151.5
|
||||
(byte) doplasma::val#16 reg byte a 151.5
|
||||
(byte) doplasma::val#18 reg byte a 151.5
|
||||
(byte) doplasma::val#20 reg byte a 151.5
|
||||
(byte) doplasma::val#22 reg byte a 151.5
|
||||
(byte) doplasma::val#24 reg byte a 151.5
|
||||
(byte) doplasma::val#26 reg byte a 151.5
|
||||
(byte) doplasma::val#28 reg byte a 151.5
|
||||
(byte) doplasma::val#30 reg byte a 151.5
|
||||
(byte) doplasma::val#32 reg byte a 151.5
|
||||
(byte) doplasma::val#34 reg byte a 151.5
|
||||
(byte) doplasma::val#36 reg byte a 151.5
|
||||
(byte) doplasma::val#38 reg byte a 151.5
|
||||
(byte) doplasma::val#4 reg byte a 151.5
|
||||
(byte) doplasma::val#40 reg byte a 151.5
|
||||
(byte) doplasma::val#42 reg byte a 151.5
|
||||
(byte) doplasma::val#44 reg byte a 151.5
|
||||
(byte) doplasma::val#46 reg byte a 151.5
|
||||
(byte) doplasma::val#48 reg byte a 202.0
|
||||
(byte) doplasma::val#6 reg byte a 151.5
|
||||
(byte) doplasma::val#8 reg byte a 151.5
|
||||
(byte[$28]) doplasma::xbuf
|
||||
(const byte[$28]) doplasma::xbuf#0 xbuf = { fill( $28, 0) }
|
||||
(byte) doplasma::xval
|
||||
(byte) doplasma::xval#0 reg byte y 53.59183673469388
|
||||
(byte[$19]) doplasma::ybuf
|
||||
(const byte[$19]) doplasma::ybuf#0 ybuf = { fill( $19, 0) }
|
||||
(void()) main()
|
||||
@ -314,33 +314,34 @@ zp ZP_WORD:11 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ]
|
||||
reg byte x [ makecharset::ii#2 makecharset::ii#1 ]
|
||||
reg byte y [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ]
|
||||
reg byte a [ doplasma::$0 ]
|
||||
reg byte a [ doplasma::$2 ]
|
||||
reg byte y [ doplasma::xval#0 ]
|
||||
reg byte a [ doplasma::$6 ]
|
||||
reg byte a [ doplasma::$11 ]
|
||||
reg byte a [ doplasma::$14 ]
|
||||
reg byte a [ doplasma::$17 ]
|
||||
reg byte a [ doplasma::$20 ]
|
||||
reg byte a [ doplasma::$23 ]
|
||||
reg byte a [ doplasma::$26 ]
|
||||
reg byte a [ doplasma::$29 ]
|
||||
reg byte a [ doplasma::$32 ]
|
||||
reg byte a [ doplasma::$35 ]
|
||||
reg byte a [ doplasma::$38 ]
|
||||
reg byte a [ doplasma::$41 ]
|
||||
reg byte a [ doplasma::$44 ]
|
||||
reg byte a [ doplasma::$47 ]
|
||||
reg byte a [ doplasma::$50 ]
|
||||
reg byte a [ doplasma::$53 ]
|
||||
reg byte a [ doplasma::$56 ]
|
||||
reg byte a [ doplasma::$59 ]
|
||||
reg byte a [ doplasma::$62 ]
|
||||
reg byte a [ doplasma::$65 ]
|
||||
reg byte a [ doplasma::$68 ]
|
||||
reg byte a [ doplasma::$71 ]
|
||||
reg byte a [ doplasma::$74 ]
|
||||
reg byte a [ doplasma::$77 ]
|
||||
reg byte a [ doplasma::$80 ]
|
||||
reg byte a [ doplasma::$1 ]
|
||||
reg byte a [ doplasma::$3 ]
|
||||
reg byte a [ doplasma::$5 ]
|
||||
reg byte a [ doplasma::val#0 ]
|
||||
reg byte a [ doplasma::val#1 ]
|
||||
reg byte a [ doplasma::val#4 ]
|
||||
reg byte a [ doplasma::val#6 ]
|
||||
reg byte a [ doplasma::val#8 ]
|
||||
reg byte a [ doplasma::val#10 ]
|
||||
reg byte a [ doplasma::val#12 ]
|
||||
reg byte a [ doplasma::val#14 ]
|
||||
reg byte a [ doplasma::val#16 ]
|
||||
reg byte a [ doplasma::val#18 ]
|
||||
reg byte a [ doplasma::val#20 ]
|
||||
reg byte a [ doplasma::val#22 ]
|
||||
reg byte a [ doplasma::val#24 ]
|
||||
reg byte a [ doplasma::val#26 ]
|
||||
reg byte a [ doplasma::val#28 ]
|
||||
reg byte a [ doplasma::val#30 ]
|
||||
reg byte a [ doplasma::val#32 ]
|
||||
reg byte a [ doplasma::val#34 ]
|
||||
reg byte a [ doplasma::val#36 ]
|
||||
reg byte a [ doplasma::val#38 ]
|
||||
reg byte a [ doplasma::val#40 ]
|
||||
reg byte a [ doplasma::val#42 ]
|
||||
reg byte a [ doplasma::val#44 ]
|
||||
reg byte a [ doplasma::val#46 ]
|
||||
reg byte a [ doplasma::val#48 ]
|
||||
reg byte a [ makecharset::$2 ]
|
||||
reg byte a [ sid_rnd::return#2 ]
|
||||
reg byte a [ makecharset::$3 ]
|
||||
|
Loading…
x
Reference in New Issue
Block a user