1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-04-09 05:37:16 +00:00

Improved bash-script to allow -fragmentdir option. Added blackhole sprite vx/vy support. Added a few word fragments.

This commit is contained in:
jespergravgaard 2019-06-15 21:10:06 +02:00
parent 986e02fde6
commit 94b0dbcffc
11 changed files with 3899 additions and 3304 deletions

@ -0,0 +1,12 @@
sty $ff
clc
lda ({z1}),y
ldy #0
adc ({z1}),y
sta ({z1}),y
ldy $ff
iny
lda ({z1}),y
ldy #1
adc ({z1}),y
sta ({z1}),y

@ -0,0 +1,11 @@
ldy #{c2}
clc
lda ({z1}),y
ldy #{c1}
adc ({z1}),y
sta ({z1}),y
ldy #{c2}+1
lda ({z1}),y
ldy #{c1}+1
adc ({z1}),y
sta ({z1}),y

@ -1,4 +0,0 @@
lda {z2}
sta {z1}
lda #0
sta {z1}+1

@ -0,0 +1,2 @@
clc
adc #1

@ -0,0 +1,7 @@
sta {z1}
// sign-extend the byte
ora #$7f
bmi !+
lda #0
!:
sta {z1}+1

@ -12,5 +12,12 @@ export KICKC_FRAGMENT_HOME="$KICKC_HOME/fragment"
# KICKC_JAR
export KICKC_JAR=$KICKC_HOME/lib/kickc-*.jar
echo java -jar $KICKC_JAR -I $KICKC_STDLIB_HOME $*
java -jar $KICKC_JAR -I $KICKC_STDLIB_HOME -F $KICKC_FRAGMENT_HOME $*
# Parse parameters (overriding defaults)
export PARAM="";
while [[ "$#" -gt 0 ]]; do case $1 in
-F|--fragmentdir) export KICKC_FRAGMENT_HOME="$2"; shift; shift;;
*) export PARAM="$PARAM $1"; shift;;
esac; done
echo java -jar $KICKC_JAR -I $KICKC_STDLIB_HOME -F $KICKC_FRAGMENT_HOME $PARAM
java -jar $KICKC_JAR -I $KICKC_STDLIB_HOME -F $KICKC_FRAGMENT_HOME $PARAM

@ -34,6 +34,10 @@ struct ProcessingSprite {
word x;
// sprite y-position. Fixed point [12.4]. Values (30-228)
word y;
// sprite x velocity. Fixed point [12.4]
word vx;
// sprite y velocity. Fixed point [12.4]
word vy;
// sprite ID (0-7)
byte id;
// sprite pointer (0-255)
@ -58,7 +62,7 @@ void main() {
// Copy screen to screen copy
for( byte* src=SCREEN, dst=SCREEN_COPY; src!=SCREEN+1000; src++, dst++) *dst = *src;
// Init processing array
for( byte i: 0..NUM_PROCESSING-1 ) PROCESSING[i] = { 0, 0, 0, 0, STATUS_FREE, 0};
for( byte i: 0..NUM_PROCESSING-1 ) PROCESSING[i] = { 0, 0, 0, 0, 0, 0, STATUS_FREE, 0};
// Init sprites
initSprites();
// Set-up raster interrupts
@ -132,7 +136,7 @@ void startProcessing(struct ProcessingChar center) {
word spriteY = (BORDER_YPOS_TOP + (word)center.y*8) << 4;
byte spritePtr = (byte)(SPRITE_DATA/64)+spriteIdx;
// Put the sprite into the PROCESSING array
PROCESSING[spriteIdx] = { spriteX, spriteY, spriteIdx, spritePtr, STATUS_NEW, screenPtr };
PROCESSING[spriteIdx] = { spriteX, spriteY, (word)-((signed byte)spriteIdx*2-8), (word)-16, spriteIdx, spritePtr, STATUS_NEW, screenPtr };
}
const word XPOS_LEFTMOST = (word)(BORDER_XPOS_LEFT-8)<<4;
@ -172,8 +176,8 @@ void processChars() {
// Disable the sprite
*SPRITES_ENABLE &= 0xff ^ bitmask;
} else {
processing->y -= 16;
processing->x -= 16;
processing->x += processing->vx;
processing->y += processing->vy;
}
numActive++;
}

@ -3,10 +3,12 @@
:BasicUpstart(main)
.pc = $80d "Program"
.const OFFSET_STRUCT_PROCESSINGSPRITE_Y = 2
.const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 4
.const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 5
.const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = 6
.const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = 7
.const OFFSET_STRUCT_PROCESSINGSPRITE_VX = 4
.const OFFSET_STRUCT_PROCESSINGSPRITE_VY = 6
.const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 8
.const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 9
.const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $a
.const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $b
// Processor port data direction register
.label PROCPORT_DDR = 0
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
@ -72,7 +74,8 @@
main: {
.label src = 2
.label dst = 4
.label center_dist = $13
.label i = 6
.label center_dist = $14
jsr initSquareTables
lda #<SCREEN_COPY
sta dst
@ -101,22 +104,28 @@ main: {
lda src
cmp #<SCREEN+$3e8
bne b1
ldy #0
lda #0
sta i
// Init processing array
b2:
tya
lda i
asl
asl
asl
sty $ff
clc
adc $ff
adc i
asl
asl
clc
adc i
tax
lda #0
sta PROCESSING,x
sta PROCESSING+1,x
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x
lda #STATUS_FREE
@ -124,8 +133,9 @@ main: {
lda #<0
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x
iny
cpy #NUM_PROCESSING-1+1
inc i
lda #NUM_PROCESSING-1+1
cmp i
bne b2
jsr initSprites
jsr setupRasterIrq
@ -150,33 +160,34 @@ main: {
jmp b3
}
// Start processing a char - by inserting it into the PROCESSING array
// startProcessing(byte zeropage($1f) center_x, byte zeropage($20) center_y)
// startProcessing(byte zeropage($20) center_x, byte zeropage($21) center_y)
startProcessing: {
.label _0 = $21
.label _1 = $21
.label _2 = $21
.label _4 = 9
.label _5 = 9
.label _7 = 7
.label _8 = 7
.label _10 = $27
.label _11 = $27
.label _12 = $27
.label _14 = $29
.label _15 = $29
.label _16 = $29
.label center_x = $1f
.label center_y = $20
.label i = 6
.label screenPtr = $25
.label spriteData = 9
.label chargenData = 7
.label spriteX = $27
.label spriteY = $29
.label spritePtr = $2b
.label freeIdx = 6
.label _38 = $23
.label _39 = $21
.label _0 = $22
.label _1 = $22
.label _2 = $22
.label _4 = $a
.label _5 = $a
.label _7 = 8
.label _8 = 8
.label _10 = $28
.label _11 = $28
.label _12 = $28
.label _14 = $2a
.label _15 = $2a
.label _16 = $2a
.label _25 = $2d
.label center_x = $20
.label center_y = $21
.label i = 7
.label screenPtr = $26
.label spriteData = $a
.label chargenData = 8
.label spriteX = $28
.label spriteY = $2a
.label spritePtr = $2c
.label freeIdx = 7
.label _48 = $24
.label _49 = $22
ldx #$ff
b1:
lda #0
@ -184,6 +195,8 @@ startProcessing: {
b2:
lda i
asl
clc
adc i
asl
asl
clc
@ -206,19 +219,19 @@ startProcessing: {
sta _0+1
lda _0
asl
sta _38
sta _48
lda _0+1
rol
sta _38+1
asl _38
rol _38+1
lda _39
sta _48+1
asl _48
rol _48+1
lda _49
clc
adc _38
sta _39
lda _39+1
adc _38+1
sta _39+1
adc _48
sta _49
lda _49+1
adc _48+1
sta _49+1
asl _1
rol _1+1
asl _1
@ -360,6 +373,21 @@ startProcessing: {
stx spritePtr
lda freeIdx
asl
sec
sbc #8
eor #$ff
clc
adc #1
sta _25
ora #$7f
bmi !+
lda #0
!:
sta _25+1
lda freeIdx
asl
clc
adc freeIdx
asl
asl
clc
@ -373,6 +401,14 @@ startProcessing: {
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x
lda spriteY+1
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x
lda _25
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x
lda _25+1
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x
lda #<-$10
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x
lda #>-$10
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x
lda freeIdx
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x
lda spritePtr
@ -400,21 +436,21 @@ startProcessing: {
// Find the non-space char closest to the center of the screen
// If no non-space char is found the distance will be 0xffff
getCharToProcess: {
.label _9 = $2c
.label _10 = $2c
.label _11 = $2c
.label return_dist = $13
.label x = $e
.label dist = $13
.label screen_line = $b
.label y = $d
.label return_x = $11
.label return_y = $12
.label closest_dist = $f
.label closest_x = $11
.label closest_y = $12
.label _15 = $2e
.label _16 = $2c
.label _9 = $2f
.label _10 = $2f
.label _11 = $2f
.label return_dist = $14
.label x = $f
.label dist = $14
.label screen_line = $c
.label y = $e
.label return_x = $12
.label return_y = $13
.label closest_dist = $10
.label closest_x = $12
.label closest_y = $13
.label _15 = $31
.label _16 = $2f
lda #0
sta closest_y
sta closest_x
@ -582,7 +618,7 @@ setupRasterIrq: {
}
// Initialize sprites
initSprites: {
.label sp = $15
.label sp = $16
lda #<SPRITE_DATA
sta sp
lda #>SPRITE_DATA
@ -620,10 +656,10 @@ initSprites: {
}
// initialize SQUARES table
initSquareTables: {
.label _6 = $19
.label _14 = $19
.label x = $17
.label y = $18
.label _6 = $1a
.label _14 = $1a
.label x = $18
.label y = $19
lda #0
sta x
b1:
@ -689,9 +725,9 @@ initSquareTables: {
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
// mul8u(byte register(X) a, byte register(A) b)
mul8u: {
.label mb = $1b
.label res = $19
.label return = $19
.label mb = $1c
.label res = $1a
.label return = $1a
lda #0
sta res
sta res+1
@ -757,18 +793,20 @@ irqBottom: {
}
// Process any chars in the PROCESSING array
processChars: {
.label _17 = $35
.label processing = $30
.label bitmask = $32
.label i = $1d
.label xpos = $33
.label numActive = $1e
.label _17 = $38
.label processing = $33
.label bitmask = $35
.label i = $1e
.label xpos = $36
.label numActive = $1f
lda #0
sta numActive
sta i
b1:
lda i
asl
clc
adc i
asl
asl
clc
@ -897,23 +935,29 @@ processChars: {
cmp #<YPOS_UPMOST
bcc b6
!:
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX
sty $ff
clc
lda (processing),y
sec
sbc #<$10
sta (processing),y
iny
lda (processing),y
sbc #>$10
sta (processing),y
ldy #0
lda (processing),y
sec
sbc #<$10
adc (processing),y
sta (processing),y
ldy $ff
iny
lda (processing),y
sbc #>$10
ldy #1
adc (processing),y
sta (processing),y
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY
clc
lda (processing),y
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
adc (processing),y
sta (processing),y
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY+1
lda (processing),y
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1
adc (processing),y
sta (processing),y
b7:
inc numActive
@ -992,4 +1036,4 @@ irqTop: {
// SQUARES_Y[i] = (i-12)*(i-12)
SQUARES_Y: .fill 2*$19, 0
// Sprites currently being processed in the interrupt
PROCESSING: .fill 9*NUM_PROCESSING, 0
PROCESSING: .fill $d*NUM_PROCESSING, 0

@ -21,424 +21,440 @@ main::@1: scope:[main] from main main::@1
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
[11] (byte) main::i#2 ← phi( main::@1/(byte) 0 main::@2/(byte) main::i#1 )
[12] (byte) main::$22 ← (byte) main::i#2 << (byte) 3
[13] (byte~) main::$15 ← (byte) main::$22 + (byte) main::i#2
[14] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0
[15] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0
[16] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0
[17] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0
[18] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0
[19] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0
[20] (byte) main::i#1 ← ++ (byte) main::i#2
[21] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2
[12] (byte) main::$24 ← (byte) main::i#2 << (byte) 1
[13] (byte) main::$25 ← (byte) main::$24 + (byte) main::i#2
[14] (byte) main::$26 ← (byte) main::$25 << (byte) 2
[15] (byte~) main::$15 ← (byte) main::$26 + (byte) main::i#2
[16] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$15) ← (byte) 0
[17] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$15) ← (byte) 0
[18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$15) ← (byte) 0
[19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$15) ← (byte) 0
[20] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$15) ← (byte) 0
[21] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$15) ← (byte) 0
[22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$15) ← (const byte) STATUS_FREE#0
[23] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$15) ← (byte*) 0
[24] (byte) main::i#1 ← ++ (byte) main::i#2
[25] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@2
[22] phi()
[23] call initSprites
[26] phi()
[27] call initSprites
to:main::@7
main::@7: scope:[main] from main::@3
[24] phi()
[25] call setupRasterIrq
[28] phi()
[29] call setupRasterIrq
to:main::@4
main::@4: scope:[main] from main::@5 main::@7
[26] phi()
[27] call getCharToProcess
[28] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1
[29] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1
[30] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1
[30] phi()
[31] call getCharToProcess
[32] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1
[33] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1
[34] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1
to:main::@8
main::@8: scope:[main] from main::@4
[31] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0
[32] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0
[33] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0
[34] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5
[35] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0
[36] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0
[37] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0
[38] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5
to:main::@6
main::@6: scope:[main] from main::@6 main::@8
[35] *((const byte*) COLS#0+(word) $3e7) ← ++ *((const byte*) COLS#0+(word) $3e7)
[39] *((const byte*) COLS#0+(word) $3e7) ← ++ *((const byte*) COLS#0+(word) $3e7)
to:main::@6
main::@5: scope:[main] from main::@8
[36] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0
[37] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0
[38] call startProcessing
[40] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0
[41] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0
[42] call startProcessing
to:main::@4
startProcessing: scope:[startProcessing] from main::@5
[39] phi()
[43] phi()
to:startProcessing::@1
startProcessing::@1: scope:[startProcessing] from startProcessing startProcessing::@8
[40] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@8/(byte~) startProcessing::freeIdx#7 )
[44] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@8/(byte~) startProcessing::freeIdx#7 )
to:startProcessing::@2
startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3
[41] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 )
[42] (byte) startProcessing::$36 ← (byte) startProcessing::i#2 << (byte) 3
[43] (byte~) startProcessing::$27 ← (byte) startProcessing::$36 + (byte) startProcessing::i#2
[44] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE#0) goto startProcessing::@3
[45] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 )
[46] (byte) startProcessing::$44 ← (byte) startProcessing::i#2 << (byte) 1
[47] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2
[48] (byte) startProcessing::$46 ← (byte) startProcessing::$45 << (byte) 2
[49] (byte~) startProcessing::$33 ← (byte) startProcessing::$46 + (byte) startProcessing::i#2
[50] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$33)!=(const byte) STATUS_FREE#0) goto startProcessing::@3
to:startProcessing::@4
startProcessing::@4: scope:[startProcessing] from startProcessing::@2 startProcessing::@9
[45] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 )
[46] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8
[51] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 )
[52] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8
to:startProcessing::@5
startProcessing::@5: scope:[startProcessing] from startProcessing::@4
[47] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0
[48] (word) startProcessing::$38 ← (word~) startProcessing::$0 << (byte) 2
[49] (word) startProcessing::$39 ← (word) startProcessing::$38 + (word~) startProcessing::$0
[50] (word~) startProcessing::$1 ← (word) startProcessing::$39 << (byte) 3
[51] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1
[52] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0
[53] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2
[54] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6
[55] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5
[56] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0)
[57] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0
[58] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3
[59] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8
[53] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0
[54] (word) startProcessing::$48 ← (word~) startProcessing::$0 << (byte) 2
[55] (word) startProcessing::$49 ← (word) startProcessing::$48 + (word~) startProcessing::$0
[56] (word~) startProcessing::$1 ← (word) startProcessing::$49 << (byte) 3
[57] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1
[58] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0
[59] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2
[60] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6
[61] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5
[62] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0)
[63] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0
[64] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3
[65] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8
asm { sei }
[61] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0
[67] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0
to:startProcessing::@6
startProcessing::@6: scope:[startProcessing] from startProcessing::@5 startProcessing::@6
[62] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 )
[62] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 )
[62] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 )
[63] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2)
[64] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3
[65] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2
[66] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2
[67] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6
[68] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 )
[68] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 )
[68] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 )
[69] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2)
[70] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3
[71] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2
[72] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2
[73] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6
to:startProcessing::@7
startProcessing::@7: scope:[startProcessing] from startProcessing::@6
[68] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
[74] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
asm { cli }
[70] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0
[71] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3
[72] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11
[73] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4
[74] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0
[75] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3
[76] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15
[77] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4
[78] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2
[79] (byte) startProcessing::$41 ← (byte) startProcessing::freeIdx#2 << (byte) 3
[80] (byte~) startProcessing::$28 ← (byte) startProcessing::$41 + (byte) startProcessing::freeIdx#2
[81] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0
[82] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0
[83] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2
[84] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0
[85] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW#0
[86] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0
[76] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0
[77] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3
[78] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11
[79] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4
[80] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0
[81] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3
[82] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15
[83] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4
[84] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2
[85] (signed byte~) startProcessing::$22 ← (signed byte)(byte) startProcessing::freeIdx#2 << (byte) 1
[86] (signed byte~) startProcessing::$23 ← (signed byte~) startProcessing::$22 - (signed byte) 8
[87] (signed byte~) startProcessing::$24 ← - (signed byte~) startProcessing::$23
[88] (word~) startProcessing::$25 ← (word)(signed byte~) startProcessing::$24
[89] (byte) startProcessing::$51 ← (byte) startProcessing::freeIdx#2 << (byte) 1
[90] (byte) startProcessing::$52 ← (byte) startProcessing::$51 + (byte) startProcessing::freeIdx#2
[91] (byte) startProcessing::$53 ← (byte) startProcessing::$52 << (byte) 2
[92] (byte~) startProcessing::$34 ← (byte) startProcessing::$53 + (byte) startProcessing::freeIdx#2
[93] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$34) ← (word) startProcessing::spriteX#0
[94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$34) ← (word) startProcessing::spriteY#0
[95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$34) ← (word~) startProcessing::$25
[96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$34) ← (word) -$10
[97] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$34) ← (byte) startProcessing::freeIdx#2
[98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$34) ← (byte) startProcessing::spritePtr#0
[99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$34) ← (const byte) STATUS_NEW#0
[100] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$34) ← (byte*) startProcessing::screenPtr#0
to:startProcessing::@return
startProcessing::@return: scope:[startProcessing] from startProcessing::@7
[87] return
[101] return
to:@return
startProcessing::@8: scope:[startProcessing] from startProcessing::@4
[88] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2
[102] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2
to:startProcessing::@1
startProcessing::@3: scope:[startProcessing] from startProcessing::@2
[89] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2
[90] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2
[103] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2
[104] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2
to:startProcessing::@9
startProcessing::@9: scope:[startProcessing] from startProcessing::@3
[91] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6
[105] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6
to:startProcessing::@4
getCharToProcess: scope:[getCharToProcess] from main::@4
[92] phi()
[106] phi()
to:getCharToProcess::@1
getCharToProcess::@1: scope:[getCharToProcess] from getCharToProcess getCharToProcess::@9
[93] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 )
[93] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 )
[93] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 )
[93] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 )
[93] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(const byte[$3e8]) SCREEN_COPY#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 )
[107] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 )
[107] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 )
[107] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 )
[107] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 )
[107] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(const byte[$3e8]) SCREEN_COPY#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 )
to:getCharToProcess::@2
getCharToProcess::@2: scope:[getCharToProcess] from getCharToProcess::@1 getCharToProcess::@10
[94] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 )
[94] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 )
[94] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 )
[94] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 )
[95] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11
[108] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 )
[108] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 )
[108] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 )
[108] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 )
[109] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11
to:getCharToProcess::@4
getCharToProcess::@4: scope:[getCharToProcess] from getCharToProcess::@2
[96] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1
[97] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1
[98] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14)
[99] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12
[110] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1
[111] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1
[112] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14)
[113] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12
to:getCharToProcess::@5
getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4
[100] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2
[101] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7
[114] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2
[115] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7
to:getCharToProcess::@3
getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5
[102] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 )
[102] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 )
[102] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 )
[103] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2
[104] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10
[116] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 )
[116] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 )
[116] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 )
[117] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2
[118] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10
to:getCharToProcess::@6
getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3
[105] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28
[106] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7
[107] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9
[119] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28
[120] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7
[121] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9
to:getCharToProcess::@7
getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6
[108] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return
[122] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return
to:getCharToProcess::@8
getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7
[109] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1
[110] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2
[111] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9
[112] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3
[113] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10
[114] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' '
[123] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1
[124] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2
[125] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9
[126] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3
[127] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10
[128] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' '
to:getCharToProcess::@return
getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8
[115] return
[129] return
to:@return
getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6
[116] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1
[130] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1
to:getCharToProcess::@1
getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3
[117] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1
[131] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1
to:getCharToProcess::@2
getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4
[118] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2
[132] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2
to:getCharToProcess::@3
getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2
[119] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2
[133] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2
to:getCharToProcess::@3
setupRasterIrq: scope:[setupRasterIrq] from main::@7
asm { sei }
[121] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
[122] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
[123] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
[135] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
[136] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
[137] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
to:setupRasterIrq::@1
setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq
[124] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f
[138] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f
to:setupRasterIrq::@2
setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1
[125] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0
[126] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
[127] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0
[139] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0
[140] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
[141] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0
asm { cli }
to:setupRasterIrq::@return
setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2
[129] return
[143] return
to:@return
initSprites: scope:[initSprites] from main::@3
[130] phi()
[144] phi()
to:initSprites::@1
initSprites::@1: scope:[initSprites] from initSprites initSprites::@1
[131] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 )
[132] *((byte*) initSprites::sp#2) ← (byte) 0
[133] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2
[134] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1
[145] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 )
[146] *((byte*) initSprites::sp#2) ← (byte) 0
[147] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2
[148] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1
to:initSprites::@2
initSprites::@2: scope:[initSprites] from initSprites::@1 initSprites::@2
[135] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 )
[136] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0
[137] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2
[138] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2
[149] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 )
[150] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0
[151] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2
[152] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2
to:initSprites::@3
initSprites::@3: scope:[initSprites] from initSprites::@2
[139] *((const byte*) SPRITES_MC#0) ← (byte) 0
[140] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0
[141] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0
[153] *((const byte*) SPRITES_MC#0) ← (byte) 0
[154] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0
[155] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0
to:initSprites::@return
initSprites::@return: scope:[initSprites] from initSprites::@3
[142] return
[156] return
to:@return
initSquareTables: scope:[initSquareTables] from main
[143] phi()
[157] phi()
to:initSquareTables::@1
initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9
[144] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 )
[145] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2
[158] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 )
[159] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2
to:initSquareTables::@3
initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1
[146] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14
[160] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14
to:initSquareTables::@4
initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3
[147] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 )
[148] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0
[149] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0
[150] call mul8u
[151] (word) mul8u::return#2 ← (word) mul8u::res#2
[161] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 )
[162] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0
[163] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0
[164] call mul8u
[165] (word) mul8u::return#2 ← (word) mul8u::res#2
to:initSquareTables::@9
initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4
[152] (word~) initSquareTables::$6 ← (word) mul8u::return#2
[153] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1
[154] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6
[155] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2
[156] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1
[166] (word~) initSquareTables::$6 ← (word) mul8u::return#2
[167] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1
[168] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6
[169] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2
[170] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1
to:initSquareTables::@5
initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9
[157] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 )
[158] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6
[171] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 )
[172] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6
to:initSquareTables::@7
initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5
[159] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c
[173] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c
to:initSquareTables::@8
initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7
[160] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 )
[161] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0
[162] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0
[163] call mul8u
[164] (word) mul8u::return#3 ← (word) mul8u::res#2
[174] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 )
[175] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0
[176] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0
[177] call mul8u
[178] (word) mul8u::return#3 ← (word) mul8u::res#2
to:initSquareTables::@10
initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8
[165] (word~) initSquareTables::$14 ← (word) mul8u::return#3
[166] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1
[167] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14
[168] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2
[169] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5
[179] (word~) initSquareTables::$14 ← (word) mul8u::return#3
[180] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1
[181] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14
[182] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2
[183] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5
to:initSquareTables::@return
initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10
[170] return
[184] return
to:@return
initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5
[171] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2
[185] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2
to:initSquareTables::@8
initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1
[172] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2
[186] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2
to:initSquareTables::@4
mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8
[173] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 )
[173] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 )
[187] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 )
[187] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 )
to:mul8u::@1
mul8u::@1: scope:[mul8u] from mul8u mul8u::@3
[174] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 )
[174] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 )
[174] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 )
[175] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
[188] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 )
[188] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 )
[188] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 )
[189] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
to:mul8u::@return
mul8u::@return: scope:[mul8u] from mul8u::@1
[176] return
[190] return
to:@return
mul8u::@2: scope:[mul8u] from mul8u::@1
[177] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1
[178] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3
[191] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1
[192] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3
to:mul8u::@4
mul8u::@4: scope:[mul8u] from mul8u::@2
[179] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
[193] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
to:mul8u::@3
mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4
[180] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
[181] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1
[182] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1
[194] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
[195] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1
[196] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1
to:mul8u::@1
irqBottom: scope:[irqBottom] from
[183] phi()
[197] phi()
to:irqBottom::@1
irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1
[184] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 )
[185] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2
[186] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1
[198] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 )
[199] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2
[200] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1
to:irqBottom::@2
irqBottom::@2: scope:[irqBottom] from irqBottom::@1
[187] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0
[188] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
[189] call processChars
[201] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0
[202] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
[203] call processChars
to:irqBottom::@3
irqBottom::@3: scope:[irqBottom] from irqBottom::@2
[190] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0
[191] *((const byte*) BGCOL#0) ← (const byte) BLUE#0
[192] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0
[193] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop()
[194] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
[204] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0
[205] *((const byte*) BGCOL#0) ← (const byte) BLUE#0
[206] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0
[207] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop()
[208] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
to:irqBottom::@return
irqBottom::@return: scope:[irqBottom] from irqBottom::@3
[195] return
[209] return
to:@return
processChars: scope:[processChars] from irqBottom::@2
[196] phi()
[210] phi()
to:processChars::@1
processChars::@1: scope:[processChars] from processChars processChars::@2
[197] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 )
[197] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 )
[198] (byte) processChars::$42 ← (byte) processChars::i#10 << (byte) 3
[199] (byte~) processChars::$24 ← (byte) processChars::$42 + (byte) processChars::i#10
[200] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24
[201] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)
[202] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2
[211] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 )
[211] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 )
[212] (byte) processChars::$44 ← (byte) processChars::i#10 << (byte) 1
[213] (byte) processChars::$45 ← (byte) processChars::$44 + (byte) processChars::i#10
[214] (byte) processChars::$46 ← (byte) processChars::$45 << (byte) 2
[215] (byte~) processChars::$24 ← (byte) processChars::$46 + (byte) processChars::i#10
[216] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$24
[217] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)
[218] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2
to:processChars::@10
processChars::@10: scope:[processChars] from processChars::@1
[203] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3
[219] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3
to:processChars::@11
processChars::@11: scope:[processChars] from processChars::@10
[204] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' '
[205] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0
[206] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR)
[207] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0
[220] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' '
[221] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0
[222] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR)
[223] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0
to:processChars::@3
processChars::@3: scope:[processChars] from processChars::@10 processChars::@11
[208] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4
[209] (byte~) processChars::$12 ← > (word) processChars::xpos#0
[210] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4
[224] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4
[225] (byte~) processChars::$12 ← > (word) processChars::xpos#0
[226] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4
to:processChars::@8
processChars::@8: scope:[processChars] from processChars::@3
[211] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0
[212] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13
[227] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0
[228] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13
to:processChars::@5
processChars::@5: scope:[processChars] from processChars::@4 processChars::@8
[213] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1
[214] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0
[215] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15
[216] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4
[217] (byte~) processChars::$18 ← (byte)(word~) processChars::$17
[218] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18
[219] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6
[229] (byte~) processChars::$16 ← (byte) processChars::i#10 << (byte) 1
[230] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0
[231] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$15
[232] (word~) processChars::$17 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4
[233] (byte~) processChars::$18 ← (byte)(word~) processChars::$17
[234] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$16) ← (byte~) processChars::$18
[235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6
to:processChars::@13
processChars::@13: scope:[processChars] from processChars::@5
[220] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6
[236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_UPMOST#0) goto processChars::@6
to:processChars::@9
processChars::@9: scope:[processChars] from processChars::@13
[221] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) - (byte) $10
[222] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) - (byte) $10
[237] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX)
[238] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY)
to:processChars::@7
processChars::@7: scope:[processChars] from processChars::@6 processChars::@9
[223] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10
[239] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10
to:processChars::@2
processChars::@2: scope:[processChars] from processChars::@1 processChars::@7
[224] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 )
[225] (byte) processChars::i#1 ← ++ (byte) processChars::i#10
[226] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1
[240] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 )
[241] (byte) processChars::i#1 ← ++ (byte) processChars::i#10
[242] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1
to:processChars::@12
processChars::@12: scope:[processChars] from processChars::@2
[227] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3
[228] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1
[243] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3
[244] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1
to:processChars::@return
processChars::@return: scope:[processChars] from processChars::@12
[229] return
[245] return
to:@return
processChars::@6: scope:[processChars] from processChars::@13 processChars::@5
[230] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0
[231] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0
[232] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22
[246] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0
[247] (byte~) processChars::$22 ← (byte) $ff ^ (byte) processChars::bitmask#0
[248] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$22
to:processChars::@7
processChars::@4: scope:[processChars] from processChars::@3
[233] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0
[249] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0
to:processChars::@5
irqTop: scope:[irqTop] from
[234] phi()
[250] phi()
to:irqTop::@1
irqTop::@1: scope:[irqTop] from irqTop irqTop::@1
[235] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 )
[236] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2
[237] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1
[251] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 )
[252] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2
[253] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1
to:irqTop::@2
irqTop::@2: scope:[irqTop] from irqTop::@1
[238] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0
[239] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
[254] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0
[255] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
to:irqTop::@3
irqTop::@3: scope:[irqTop] from irqTop::@2 irqTop::@3
[240] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 )
[241] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2
[242] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3
[256] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 )
[257] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2
[258] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3
to:irqTop::@4
irqTop::@4: scope:[irqTop] from irqTop::@3
[243] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0
[244] *((const byte*) BGCOL#0) ← (const byte) BLUE#0
[245] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0
[246] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom()
[247] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
[259] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0
[260] *((const byte*) BGCOL#0) ← (const byte) BLUE#0
[261] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0
[262] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom()
[263] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
to:irqTop::@return
irqTop::@return: scope:[irqTop] from irqTop::@4
[248] return
[264] return
to:@return

File diff suppressed because it is too large Load Diff

@ -33,10 +33,12 @@
(const word) NOT_FOUND#0 NOT_FOUND = (word) $ffff
(byte) NUM_PROCESSING
(const byte) NUM_PROCESSING#0 NUM_PROCESSING = (byte) 8
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 4
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 5
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) 7
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) 6
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 8
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 9
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) $b
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) $a
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX OFFSET_STRUCT_PROCESSINGSPRITE_VX = (byte) 4
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY OFFSET_STRUCT_PROCESSINGSPRITE_VY = (byte) 6
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y OFFSET_STRUCT_PROCESSINGSPRITE_Y = (byte) 2
(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING
(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 PROCESSING = { fill( NUM_PROCESSING#0, 0) }
@ -57,6 +59,8 @@
(byte) ProcessingSprite::ptr
(byte*) ProcessingSprite::screenPtr
(byte) ProcessingSprite::status
(word) ProcessingSprite::vx
(word) ProcessingSprite::vy
(word) ProcessingSprite::x
(word) ProcessingSprite::y
(byte*) RASTER
@ -108,13 +112,13 @@
(word) YPOS_UPMOST
(const word) YPOS_UPMOST#0 YPOS_UPMOST = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8<<(byte) 4
(struct ProcessingChar()) getCharToProcess()
(word~) getCharToProcess::$10 $10 zp ZP_WORD:44 4.0
(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:44 4.0
(word~) getCharToProcess::$10 $10 zp ZP_WORD:47 4.0
(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:47 4.0
(byte~) getCharToProcess::$13 reg byte x 1001.0
(byte~) getCharToProcess::$14 reg byte a 2002.0
(word) getCharToProcess::$15 $15 zp ZP_WORD:46 4.0
(word) getCharToProcess::$16 $16 zp ZP_WORD:44 4.0
(word~) getCharToProcess::$9 $9 zp ZP_WORD:44 3.0
(word) getCharToProcess::$15 $15 zp ZP_WORD:49 4.0
(word) getCharToProcess::$16 $16 zp ZP_WORD:47 4.0
(word~) getCharToProcess::$9 $9 zp ZP_WORD:47 3.0
(label) getCharToProcess::@1
(label) getCharToProcess::@10
(label) getCharToProcess::@11
@ -130,41 +134,41 @@
(label) getCharToProcess::@return
(struct ProcessingChar) getCharToProcess::closest
(word) getCharToProcess::closest_dist
(word~) getCharToProcess::closest_dist#10 closest_dist zp ZP_WORD:15 202.0
(word~) getCharToProcess::closest_dist#12 closest_dist zp ZP_WORD:15 2002.0
(word) getCharToProcess::closest_dist#2 closest_dist zp ZP_WORD:15 684.1666666666667
(word) getCharToProcess::closest_dist#8 closest_dist zp ZP_WORD:15 202.0
(word~) getCharToProcess::closest_dist#10 closest_dist zp ZP_WORD:16 202.0
(word~) getCharToProcess::closest_dist#12 closest_dist zp ZP_WORD:16 2002.0
(word) getCharToProcess::closest_dist#2 closest_dist zp ZP_WORD:16 684.1666666666667
(word) getCharToProcess::closest_dist#8 closest_dist zp ZP_WORD:16 202.0
(byte) getCharToProcess::closest_x
(byte) getCharToProcess::closest_x#7 closest_x zp ZP_BYTE:17 388.0
(byte) getCharToProcess::closest_x#9 closest_x zp ZP_BYTE:17 202.0
(byte) getCharToProcess::closest_x#7 closest_x zp ZP_BYTE:18 388.0
(byte) getCharToProcess::closest_x#9 closest_x zp ZP_BYTE:18 202.0
(byte) getCharToProcess::closest_y
(byte) getCharToProcess::closest_y#7 closest_y zp ZP_BYTE:18 388.0
(byte) getCharToProcess::closest_y#9 closest_y zp ZP_BYTE:18 202.0
(byte) getCharToProcess::closest_y#7 closest_y zp ZP_BYTE:19 388.0
(byte) getCharToProcess::closest_y#9 closest_y zp ZP_BYTE:19 202.0
(word) getCharToProcess::dist
(word) getCharToProcess::dist#0 dist zp ZP_WORD:19 750.75
(word) getCharToProcess::dist#0 dist zp ZP_WORD:20 750.75
(struct ProcessingChar) getCharToProcess::return
(word) getCharToProcess::return_dist
(word) getCharToProcess::return_dist#0 return_dist zp ZP_WORD:19 7.333333333333333
(word) getCharToProcess::return_dist#1 return_dist zp ZP_WORD:19 242.23529411764704
(word~) getCharToProcess::return_dist#5 return_dist zp ZP_WORD:19 2002.0
(word~) getCharToProcess::return_dist#6 return_dist zp ZP_WORD:19 2002.0
(word) getCharToProcess::return_dist#0 return_dist zp ZP_WORD:20 7.333333333333333
(word) getCharToProcess::return_dist#1 return_dist zp ZP_WORD:20 242.23529411764704
(word~) getCharToProcess::return_dist#5 return_dist zp ZP_WORD:20 2002.0
(word~) getCharToProcess::return_dist#6 return_dist zp ZP_WORD:20 2002.0
(byte) getCharToProcess::return_x
(byte) getCharToProcess::return_x#0 reg byte x 7.333333333333333
(byte) getCharToProcess::return_x#1 return_x zp ZP_BYTE:17 242.23529411764704
(byte~) getCharToProcess::return_x#7 return_x zp ZP_BYTE:17 1001.0
(byte) getCharToProcess::return_x#1 return_x zp ZP_BYTE:18 242.23529411764704
(byte~) getCharToProcess::return_x#7 return_x zp ZP_BYTE:18 1001.0
(byte) getCharToProcess::return_y
(byte) getCharToProcess::return_y#0 reg byte y 7.333333333333333
(byte) getCharToProcess::return_y#1 return_y zp ZP_BYTE:18 228.66666666666669
(byte~) getCharToProcess::return_y#7 return_y zp ZP_BYTE:18 2002.0
(byte) getCharToProcess::return_y#1 return_y zp ZP_BYTE:19 228.66666666666669
(byte~) getCharToProcess::return_y#7 return_y zp ZP_BYTE:19 2002.0
(byte*) getCharToProcess::screen_line
(byte*) getCharToProcess::screen_line#1 screen_line zp ZP_WORD:11 50.5
(byte*) getCharToProcess::screen_line#4 screen_line zp ZP_WORD:11 80.2
(byte*) getCharToProcess::screen_line#1 screen_line zp ZP_WORD:12 50.5
(byte*) getCharToProcess::screen_line#4 screen_line zp ZP_WORD:12 80.2
(byte) getCharToProcess::x
(byte) getCharToProcess::x#1 x zp ZP_BYTE:14 1001.0
(byte) getCharToProcess::x#2 x zp ZP_BYTE:14 455.0
(byte) getCharToProcess::x#1 x zp ZP_BYTE:15 1001.0
(byte) getCharToProcess::x#2 x zp ZP_BYTE:15 455.0
(byte) getCharToProcess::y
(byte) getCharToProcess::y#1 y zp ZP_BYTE:13 101.0
(byte) getCharToProcess::y#7 y zp ZP_BYTE:13 137.75
(byte) getCharToProcess::y#1 y zp ZP_BYTE:14 101.0
(byte) getCharToProcess::y#7 y zp ZP_BYTE:14 137.75
(void()) initSprites()
(label) initSprites::@1
(label) initSprites::@2
@ -174,17 +178,17 @@
(byte) initSprites::i#1 reg byte x 16.5
(byte) initSprites::i#2 reg byte x 16.5
(byte*) initSprites::sp
(byte*) initSprites::sp#1 sp zp ZP_WORD:21 16.5
(byte*) initSprites::sp#2 sp zp ZP_WORD:21 16.5
(byte*) initSprites::sp#1 sp zp ZP_WORD:22 16.5
(byte*) initSprites::sp#2 sp zp ZP_WORD:22 16.5
(void()) initSquareTables()
(byte~) initSquareTables::$10 reg byte a 22.0
(byte~) initSquareTables::$12 reg byte a 22.0
(word~) initSquareTables::$14 $14 zp ZP_WORD:25 11.0
(word~) initSquareTables::$14 $14 zp ZP_WORD:26 11.0
(byte~) initSquareTables::$16 reg byte a 22.0
(byte~) initSquareTables::$17 reg byte a 22.0
(byte~) initSquareTables::$2 reg byte a 22.0
(byte~) initSquareTables::$4 reg byte a 22.0
(word~) initSquareTables::$6 $6 zp ZP_WORD:25 11.0
(word~) initSquareTables::$6 $6 zp ZP_WORD:26 11.0
(label) initSquareTables::@1
(label) initSquareTables::@10
(label) initSquareTables::@2
@ -197,13 +201,13 @@
(label) initSquareTables::@9
(label) initSquareTables::@return
(byte) initSquareTables::x
(byte) initSquareTables::x#1 x zp ZP_BYTE:23 16.5
(byte) initSquareTables::x#2 x zp ZP_BYTE:23 5.5
(byte) initSquareTables::x#1 x zp ZP_BYTE:24 16.5
(byte) initSquareTables::x#2 x zp ZP_BYTE:24 5.5
(byte) initSquareTables::x_dist
(byte) initSquareTables::x_dist#0 reg byte a 22.0
(byte) initSquareTables::y
(byte) initSquareTables::y#1 y zp ZP_BYTE:24 16.5
(byte) initSquareTables::y#2 y zp ZP_BYTE:24 5.5
(byte) initSquareTables::y#1 y zp ZP_BYTE:25 16.5
(byte) initSquareTables::y#2 y zp ZP_BYTE:25 5.5
(byte) initSquareTables::y_dist
(byte) initSquareTables::y_dist#0 reg byte a 22.0
interrupt(HARDWARE_ALL)(void()) irqBottom()
@ -227,8 +231,10 @@ interrupt(HARDWARE_ALL)(void()) irqTop()
(byte) irqTop::i1#1 reg byte x 16.5
(byte) irqTop::i1#2 reg byte x 22.0
(void()) main()
(byte~) main::$15 reg byte x 12.833333333333334
(byte) main::$22 reg byte a 22.0
(byte~) main::$15 reg byte x 12.375
(byte) main::$24 reg byte a 22.0
(byte) main::$25 reg byte a 22.0
(byte) main::$26 reg byte a 22.0
(struct ProcessingChar~) main::$8
(label) main::@1
(label) main::@2
@ -240,7 +246,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop()
(label) main::@8
(struct ProcessingChar) main::center
(word) main::center_dist
(word) main::center_dist#0 center_dist zp ZP_WORD:19 22.0
(word) main::center_dist#0 center_dist zp ZP_WORD:20 22.0
(byte) main::center_x
(byte) main::center_x#0 reg byte x 5.5
(byte) main::center_y
@ -249,8 +255,8 @@ interrupt(HARDWARE_ALL)(void()) irqTop()
(byte*) main::dst#1 dst zp ZP_WORD:4 11.0
(byte*) main::dst#2 dst zp ZP_WORD:4 11.0
(byte) main::i
(byte) main::i#1 reg byte y 16.5
(byte) main::i#2 reg byte y 4.888888888888889
(byte) main::i#1 i zp ZP_BYTE:6 16.5
(byte) main::i#2 i zp ZP_BYTE:6 4.230769230769231
(byte*) main::src
(byte*) main::src#1 src zp ZP_WORD:2 11.0
(byte*) main::src#2 src zp ZP_WORD:2 16.5
@ -271,27 +277,29 @@ interrupt(HARDWARE_ALL)(void()) irqTop()
(byte) mul8u::b#0 reg byte a 22.0
(byte) mul8u::b#1 reg byte a 22.0
(word) mul8u::mb
(word) mul8u::mb#0 mb zp ZP_WORD:27 24.0
(word) mul8u::mb#1 mb zp ZP_WORD:27 202.0
(word) mul8u::mb#2 mb zp ZP_WORD:27 43.57142857142858
(word) mul8u::mb#0 mb zp ZP_WORD:28 24.0
(word) mul8u::mb#1 mb zp ZP_WORD:28 202.0
(word) mul8u::mb#2 mb zp ZP_WORD:28 43.57142857142858
(word) mul8u::res
(word) mul8u::res#1 res zp ZP_WORD:25 202.0
(word) mul8u::res#2 res zp ZP_WORD:25 46.42857142857143
(word) mul8u::res#6 res zp ZP_WORD:25 101.0
(word) mul8u::res#1 res zp ZP_WORD:26 202.0
(word) mul8u::res#2 res zp ZP_WORD:26 46.42857142857143
(word) mul8u::res#6 res zp ZP_WORD:26 101.0
(word) mul8u::return
(word) mul8u::return#2 return zp ZP_WORD:25 22.0
(word) mul8u::return#3 return zp ZP_WORD:25 22.0
(word) mul8u::return#2 return zp ZP_WORD:26 22.0
(word) mul8u::return#3 return zp ZP_WORD:26 22.0
(void()) processChars()
(byte~) processChars::$1 reg byte x 4.0
(byte~) processChars::$12 reg byte a 22.0
(byte~) processChars::$13 reg byte a 22.0
(byte~) processChars::$15 reg byte a 22.0
(byte~) processChars::$16 reg byte x 6.6000000000000005
(word~) processChars::$17 $17 zp ZP_WORD:53 11.0
(word~) processChars::$17 $17 zp ZP_WORD:56 11.0
(byte~) processChars::$18 reg byte a 22.0
(byte~) processChars::$22 reg byte a 22.0
(byte~) processChars::$24 reg byte a 22.0
(byte) processChars::$42 reg byte a 22.0
(byte) processChars::$44 reg byte a 22.0
(byte) processChars::$45 reg byte a 22.0
(byte) processChars::$46 reg byte a 22.0
(label) processChars::@1
(label) processChars::@10
(label) processChars::@11
@ -307,18 +315,18 @@ interrupt(HARDWARE_ALL)(void()) irqTop()
(label) processChars::@9
(label) processChars::@return
(byte) processChars::bitmask
(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:50 2.5
(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:53 2.5
(byte) processChars::i
(byte) processChars::i#1 i zp ZP_BYTE:29 16.5
(byte) processChars::i#10 i zp ZP_BYTE:29 1.71875
(byte) processChars::i#1 i zp ZP_BYTE:30 16.5
(byte) processChars::i#10 i zp ZP_BYTE:30 1.9411764705882353
(byte) processChars::numActive
(byte) processChars::numActive#1 numActive zp ZP_BYTE:30 22.0
(byte) processChars::numActive#10 numActive zp ZP_BYTE:30 1.0999999999999999
(byte) processChars::numActive#3 numActive zp ZP_BYTE:30 11.666666666666666
(byte) processChars::numActive#1 numActive zp ZP_BYTE:31 22.0
(byte) processChars::numActive#10 numActive zp ZP_BYTE:31 1.03125
(byte) processChars::numActive#3 numActive zp ZP_BYTE:31 11.666666666666666
(struct ProcessingSprite*) processChars::processing
(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:48 0.4782608695652174
(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:51 0.4782608695652174
(word) processChars::xpos
(word) processChars::xpos#0 xpos zp ZP_WORD:51 3.142857142857143
(word) processChars::xpos#0 xpos zp ZP_WORD:54 3.142857142857143
(void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine)
(label) setupRasterIrq::@1
(label) setupRasterIrq::@2
@ -327,25 +335,33 @@ interrupt(HARDWARE_ALL)(void()) irqTop()
(const void()*) setupRasterIrq::irqRoutine#0 irqRoutine = &interrupt(HARDWARE_ALL)(void()) irqTop()
(word) setupRasterIrq::raster
(void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist)
(word~) startProcessing::$0 $0 zp ZP_WORD:33 3.0
(word~) startProcessing::$1 $1 zp ZP_WORD:33 4.0
(word~) startProcessing::$10 $10 zp ZP_WORD:39 4.0
(word~) startProcessing::$11 $11 zp ZP_WORD:39 4.0
(word~) startProcessing::$12 $12 zp ZP_WORD:39 4.0
(word~) startProcessing::$14 $14 zp ZP_WORD:41 4.0
(word~) startProcessing::$15 $15 zp ZP_WORD:41 4.0
(word~) startProcessing::$16 $16 zp ZP_WORD:41 4.0
(byte*~) startProcessing::$2 $2 zp ZP_WORD:33 1.2000000000000002
(byte~) startProcessing::$27 reg byte a 2002.0
(byte~) startProcessing::$28 reg byte x 2.333333333333333
(byte) startProcessing::$36 reg byte a 2002.0
(word) startProcessing::$38 $38 zp ZP_WORD:35 4.0
(word) startProcessing::$39 $39 zp ZP_WORD:33 4.0
(word~) startProcessing::$4 $4 zp ZP_WORD:9 4.0
(byte) startProcessing::$41 reg byte a 4.0
(word~) startProcessing::$5 $5 zp ZP_WORD:9 4.0
(word~) startProcessing::$7 $7 zp ZP_WORD:7 4.0
(word~) startProcessing::$8 $8 zp ZP_WORD:7 4.0
(word~) startProcessing::$0 $0 zp ZP_WORD:34 3.0
(word~) startProcessing::$1 $1 zp ZP_WORD:34 4.0
(word~) startProcessing::$10 $10 zp ZP_WORD:40 4.0
(word~) startProcessing::$11 $11 zp ZP_WORD:40 4.0
(word~) startProcessing::$12 $12 zp ZP_WORD:40 4.0
(word~) startProcessing::$14 $14 zp ZP_WORD:42 4.0
(word~) startProcessing::$15 $15 zp ZP_WORD:42 4.0
(word~) startProcessing::$16 $16 zp ZP_WORD:42 4.0
(byte*~) startProcessing::$2 $2 zp ZP_WORD:34 1.2000000000000002
(signed byte~) startProcessing::$22 reg byte a 4.0
(signed byte~) startProcessing::$23 reg byte a 4.0
(signed byte~) startProcessing::$24 reg byte a 2.0
(word~) startProcessing::$25 $25 zp ZP_WORD:45 0.5714285714285714
(byte~) startProcessing::$33 reg byte a 2002.0
(byte~) startProcessing::$34 reg byte x 2.25
(word~) startProcessing::$4 $4 zp ZP_WORD:10 4.0
(byte) startProcessing::$44 reg byte a 2002.0
(byte) startProcessing::$45 reg byte a 2002.0
(byte) startProcessing::$46 reg byte a 2002.0
(word) startProcessing::$48 $48 zp ZP_WORD:36 4.0
(word) startProcessing::$49 $49 zp ZP_WORD:34 4.0
(word~) startProcessing::$5 $5 zp ZP_WORD:10 4.0
(byte) startProcessing::$51 reg byte a 4.0
(byte) startProcessing::$52 reg byte a 4.0
(byte) startProcessing::$53 reg byte a 4.0
(word~) startProcessing::$7 $7 zp ZP_WORD:8 4.0
(word~) startProcessing::$8 $8 zp ZP_WORD:8 4.0
(label) startProcessing::@1
(label) startProcessing::@2
(label) startProcessing::@3
@ -359,107 +375,119 @@ interrupt(HARDWARE_ALL)(void()) irqTop()
(struct ProcessingChar) startProcessing::center
(word) startProcessing::center_dist
(byte) startProcessing::center_x
(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:31 0.40540540540540543
(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:32 0.3846153846153846
(byte) startProcessing::center_y
(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:32 0.275
(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:33 0.2619047619047619
(byte) startProcessing::ch
(byte) startProcessing::ch#0 reg byte a 2.0
(byte*) startProcessing::chargenData
(byte*) startProcessing::chargenData#0 chargenData zp ZP_WORD:7 1.3333333333333333
(byte*) startProcessing::chargenData#1 chargenData zp ZP_WORD:7 67.33333333333333
(byte*) startProcessing::chargenData#2 chargenData zp ZP_WORD:7 101.66666666666666
(byte*) startProcessing::chargenData#0 chargenData zp ZP_WORD:8 1.3333333333333333
(byte*) startProcessing::chargenData#1 chargenData zp ZP_WORD:8 67.33333333333333
(byte*) startProcessing::chargenData#2 chargenData zp ZP_WORD:8 101.66666666666666
(byte) startProcessing::freeIdx
(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:6 34.52631578947369
(byte) startProcessing::freeIdx#6 reg byte x 28.857142857142858
(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:7 28.56521739130435
(byte) startProcessing::freeIdx#6 reg byte x 22.444444444444443
(byte~) startProcessing::freeIdx#7 reg byte x 202.0
(byte~) startProcessing::freeIdx#8 freeIdx zp ZP_BYTE:6 202.0
(byte~) startProcessing::freeIdx#8 freeIdx zp ZP_BYTE:7 202.0
(byte) startProcessing::i
(byte) startProcessing::i#1 i zp ZP_BYTE:6 1501.5
(byte) startProcessing::i#2 i zp ZP_BYTE:6 1251.25
(byte) startProcessing::i#1 i zp ZP_BYTE:7 1501.5
(byte) startProcessing::i#2 i zp ZP_BYTE:7 1001.0000000000001
(byte) startProcessing::i1
(byte) startProcessing::i1#1 reg byte x 151.5
(byte) startProcessing::i1#2 reg byte x 50.5
(byte*) startProcessing::screenPtr
(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:37 0.11764705882352941
(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:38 0.09523809523809523
(byte*) startProcessing::spriteData
(byte*) startProcessing::spriteData#0 spriteData zp ZP_WORD:9 0.5714285714285714
(byte*) startProcessing::spriteData#1 spriteData zp ZP_WORD:9 50.5
(byte*) startProcessing::spriteData#2 spriteData zp ZP_WORD:9 152.5
(byte*) startProcessing::spriteData#0 spriteData zp ZP_WORD:10 0.5714285714285714
(byte*) startProcessing::spriteData#1 spriteData zp ZP_WORD:10 50.5
(byte*) startProcessing::spriteData#2 spriteData zp ZP_WORD:10 152.5
(byte) startProcessing::spriteIdx
(byte) startProcessing::spritePtr
(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:43 0.6666666666666666
(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:44 0.2857142857142857
(word) startProcessing::spriteX
(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:39 0.5
(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:40 0.2857142857142857
(word) startProcessing::spriteY
(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:41 0.8
(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:42 0.36363636363636365
zp ZP_WORD:2 [ main::src#2 main::src#1 ]
zp ZP_WORD:4 [ main::dst#2 main::dst#1 ]
reg byte y [ main::i#2 main::i#1 ]
zp ZP_BYTE:6 [ main::i#2 main::i#1 ]
reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
zp ZP_BYTE:6 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
zp ZP_WORD:7 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 startProcessing::$7 ]
zp ZP_WORD:9 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 startProcessing::$4 ]
zp ZP_BYTE:7 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
zp ZP_WORD:8 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 startProcessing::$7 ]
zp ZP_WORD:10 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 startProcessing::$4 ]
reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ]
zp ZP_WORD:11 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ]
zp ZP_BYTE:13 [ getCharToProcess::y#7 getCharToProcess::y#1 ]
zp ZP_BYTE:14 [ getCharToProcess::x#2 getCharToProcess::x#1 ]
zp ZP_WORD:15 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ]
zp ZP_BYTE:17 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
zp ZP_BYTE:18 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
zp ZP_WORD:19 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 ]
zp ZP_WORD:21 [ initSprites::sp#2 initSprites::sp#1 ]
zp ZP_WORD:12 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ]
zp ZP_BYTE:14 [ getCharToProcess::y#7 getCharToProcess::y#1 ]
zp ZP_BYTE:15 [ getCharToProcess::x#2 getCharToProcess::x#1 ]
zp ZP_WORD:16 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ]
zp ZP_BYTE:18 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
zp ZP_BYTE:19 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
zp ZP_WORD:20 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 ]
zp ZP_WORD:22 [ initSprites::sp#2 initSprites::sp#1 ]
reg byte x [ initSprites::i#2 initSprites::i#1 ]
zp ZP_BYTE:23 [ initSquareTables::x#2 initSquareTables::x#1 ]
zp ZP_BYTE:24 [ initSquareTables::x#2 initSquareTables::x#1 ]
reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ]
zp ZP_BYTE:24 [ initSquareTables::y#2 initSquareTables::y#1 ]
zp ZP_BYTE:25 [ initSquareTables::y#2 initSquareTables::y#1 ]
reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ]
reg byte a [ mul8u::b#1 ]
reg byte a [ mul8u::b#0 ]
reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ]
zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ]
zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ]
zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
reg byte x [ irqBottom::i#2 irqBottom::i#1 ]
zp ZP_BYTE:29 [ processChars::i#10 processChars::i#1 ]
zp ZP_BYTE:30 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
zp ZP_BYTE:30 [ processChars::i#10 processChars::i#1 ]
zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
reg byte x [ irqTop::i#2 irqTop::i#1 ]
reg byte x [ irqTop::i1#2 irqTop::i1#1 ]
reg byte a [ main::$22 ]
reg byte a [ main::$24 ]
reg byte a [ main::$25 ]
reg byte a [ main::$26 ]
reg byte x [ main::$15 ]
reg byte x [ getCharToProcess::return_x#0 ]
reg byte y [ getCharToProcess::return_y#0 ]
reg byte x [ main::center_x#0 ]
reg byte y [ main::center_y#0 ]
zp ZP_BYTE:31 [ startProcessing::center_x#0 ]
zp ZP_BYTE:32 [ startProcessing::center_y#0 ]
reg byte a [ startProcessing::$36 ]
reg byte a [ startProcessing::$27 ]
zp ZP_WORD:33 [ startProcessing::$0 startProcessing::$39 startProcessing::$1 startProcessing::$2 ]
zp ZP_WORD:35 [ startProcessing::$38 ]
zp ZP_WORD:37 [ startProcessing::screenPtr#0 ]
zp ZP_BYTE:32 [ startProcessing::center_x#0 ]
zp ZP_BYTE:33 [ startProcessing::center_y#0 ]
reg byte a [ startProcessing::$44 ]
reg byte a [ startProcessing::$45 ]
reg byte a [ startProcessing::$46 ]
reg byte a [ startProcessing::$33 ]
zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$49 startProcessing::$1 startProcessing::$2 ]
zp ZP_WORD:36 [ startProcessing::$48 ]
zp ZP_WORD:38 [ startProcessing::screenPtr#0 ]
reg byte a [ startProcessing::ch#0 ]
zp ZP_WORD:39 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ]
zp ZP_WORD:41 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ]
zp ZP_BYTE:43 [ startProcessing::spritePtr#0 ]
reg byte a [ startProcessing::$41 ]
reg byte x [ startProcessing::$28 ]
zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ]
zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ]
zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ]
reg byte a [ startProcessing::$22 ]
reg byte a [ startProcessing::$23 ]
reg byte a [ startProcessing::$24 ]
zp ZP_WORD:45 [ startProcessing::$25 ]
reg byte a [ startProcessing::$51 ]
reg byte a [ startProcessing::$52 ]
reg byte a [ startProcessing::$53 ]
reg byte x [ startProcessing::$34 ]
reg byte x [ getCharToProcess::$13 ]
reg byte a [ getCharToProcess::$14 ]
zp ZP_WORD:44 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ]
zp ZP_WORD:46 [ getCharToProcess::$15 ]
zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ]
zp ZP_WORD:49 [ getCharToProcess::$15 ]
reg byte a [ initSquareTables::$16 ]
reg byte a [ initSquareTables::$17 ]
reg byte a [ mul8u::$1 ]
reg byte a [ processChars::$42 ]
reg byte a [ processChars::$44 ]
reg byte a [ processChars::$45 ]
reg byte a [ processChars::$46 ]
reg byte a [ processChars::$24 ]
zp ZP_WORD:48 [ processChars::processing#0 ]
zp ZP_BYTE:50 [ processChars::bitmask#0 ]
zp ZP_WORD:51 [ processChars::xpos#0 ]
zp ZP_WORD:51 [ processChars::processing#0 ]
zp ZP_BYTE:53 [ processChars::bitmask#0 ]
zp ZP_WORD:54 [ processChars::xpos#0 ]
reg byte a [ processChars::$12 ]
reg byte a [ processChars::$13 ]
reg byte x [ processChars::$16 ]
reg byte a [ processChars::$15 ]
zp ZP_WORD:53 [ processChars::$17 ]
zp ZP_WORD:56 [ processChars::$17 ]
reg byte a [ processChars::$18 ]
reg byte x [ processChars::$1 ]
reg byte a [ processChars::$22 ]