mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-23 08:32:39 +00:00
Working on blackhole. Added a ton of fragments & and some synth.
This commit is contained in:
parent
30de557d61
commit
a3c5bb06da
5
src/main/fragment/_deref_pptc1_derefidx_vbuyy=vbuaa.asm
Normal file
5
src/main/fragment/_deref_pptc1_derefidx_vbuyy=vbuaa.asm
Normal file
@ -0,0 +1,5 @@
|
||||
ldx {c1},y
|
||||
stx !+ +1
|
||||
ldx {c1}+1,y
|
||||
stx !+ +2
|
||||
!: sta $ffff
|
9
src/main/fragment/_deref_pptz1_derefidx_vbuc1=vbuaa.asm
Normal file
9
src/main/fragment/_deref_pptz1_derefidx_vbuc1=vbuaa.asm
Normal file
@ -0,0 +1,9 @@
|
||||
pha
|
||||
ldy #{c1}
|
||||
lda ({z1}),y
|
||||
sta !+ +1
|
||||
iny
|
||||
lda ({z1}),y
|
||||
sta !+ +2
|
||||
pla
|
||||
!: sta $ffff
|
8
src/main/fragment/_deref_pptz1_derefidx_vbuc1=vbuxx.asm
Normal file
8
src/main/fragment/_deref_pptz1_derefidx_vbuc1=vbuxx.asm
Normal file
@ -0,0 +1,8 @@
|
||||
ldy #{c1}
|
||||
lda ({z1}),y
|
||||
sta !+ +1
|
||||
iny
|
||||
lda ({z1}),y
|
||||
sta !+ +2
|
||||
txa
|
||||
!: sta $ffff
|
5
src/main/fragment/_deref_pwuz1=_dec__deref_pwuz1.asm
Normal file
5
src/main/fragment/_deref_pwuz1=_dec__deref_pwuz1.asm
Normal file
@ -0,0 +1,5 @@
|
||||
ldy #0
|
||||
lda ({z1}),y
|
||||
sec
|
||||
sbc #1
|
||||
sta ({z1}),y
|
6
src/main/fragment/_deref_pwuz1_neq_0_then_la1.asm
Normal file
6
src/main/fragment/_deref_pwuz1_neq_0_then_la1.asm
Normal file
@ -0,0 +1,6 @@
|
||||
ldy #0
|
||||
lda ({z1}),y
|
||||
bne {la1}
|
||||
iny
|
||||
lda ({z1}),y
|
||||
bne {la1}
|
@ -0,0 +1,3 @@
|
||||
lda {c3},x
|
||||
ldy {c2},x
|
||||
sta {c1},y
|
@ -0,0 +1,3 @@
|
||||
lda {c3},x
|
||||
ldy {c2},x
|
||||
sta {c1},y
|
@ -0,0 +1,3 @@
|
||||
lda ({z1}),y
|
||||
tay
|
||||
lda {c1},y
|
4
src/main/fragment/pptc1_derefidx_vbuxx=pbuc2.asm
Normal file
4
src/main/fragment/pptc1_derefidx_vbuxx=pbuc2.asm
Normal file
@ -0,0 +1,4 @@
|
||||
lda #<{c2}
|
||||
sta {c1},x
|
||||
lda #>{c2}
|
||||
sta {c1}+1,x
|
4
src/main/fragment/pptc1_derefidx_vbuyy=pbuc2.asm
Normal file
4
src/main/fragment/pptc1_derefidx_vbuyy=pbuc2.asm
Normal file
@ -0,0 +1,4 @@
|
||||
lda #<{c2}
|
||||
sta {c1},y
|
||||
lda #>{c2}
|
||||
sta {c1}+1,y
|
@ -0,0 +1,5 @@
|
||||
lda {c1},x
|
||||
bne !+
|
||||
dec {c1}+1,x
|
||||
!:
|
||||
dec {c1},x
|
@ -0,0 +1,4 @@
|
||||
lda {c1}+1,x
|
||||
bne {la1}
|
||||
lda {c1},x
|
||||
bne {la1}
|
@ -0,0 +1,4 @@
|
||||
lda {c1}+1,y
|
||||
bne {la1}
|
||||
lda {c1},y
|
||||
bne {la1}
|
2
src/main/fragment/vbuaa=_byte__deref_pwuz1.asm
Normal file
2
src/main/fragment/vbuaa=_byte__deref_pwuz1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
ldy #0
|
||||
lda ({z1}),y
|
1
src/main/fragment/vbuaa=_byte_pwuc1_derefidx_vbuxx.asm
Normal file
1
src/main/fragment/vbuaa=_byte_pwuc1_derefidx_vbuxx.asm
Normal file
@ -0,0 +1 @@
|
||||
lda {c1},x
|
1
src/main/fragment/vbuaa=_byte_pwuc1_derefidx_vbuyy.asm
Normal file
1
src/main/fragment/vbuaa=_byte_pwuc1_derefidx_vbuyy.asm
Normal file
@ -0,0 +1 @@
|
||||
lda {c1},y
|
12
src/main/fragment/vwuz1=vwuz1_rol_6.asm
Normal file
12
src/main/fragment/vwuz1=vwuz1_rol_6.asm
Normal file
@ -0,0 +1,12 @@
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
16
src/main/fragment/vwuz1=vwuz2_rol_6.asm
Normal file
16
src/main/fragment/vwuz1=vwuz2_rol_6.asm
Normal file
@ -0,0 +1,16 @@
|
||||
lda {z2}
|
||||
asl
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
rol
|
||||
sta {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
@ -210,16 +210,16 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
mapZ3.put("z3", "z2");
|
||||
Map<String, String> mapZ4 = new LinkedHashMap<>();
|
||||
mapZ3.put("z4", "z3");
|
||||
Map<String, String> mapC = new LinkedHashMap<>();
|
||||
mapC.put("c2", "c1");
|
||||
mapC.put("c3", "c2");
|
||||
mapC.put("c4", "c3");
|
||||
Map<String, String> mapC2 = new LinkedHashMap<>();
|
||||
mapC2.put("c2", "c1");
|
||||
mapC2.put("c3", "c2");
|
||||
mapC2.put("c4", "c3");
|
||||
Map<String, String> mapC3 = new LinkedHashMap<>();
|
||||
mapC3.put("c3", "c2");
|
||||
mapC3.put("c4", "c3");
|
||||
Map<String, String> mapZC = new LinkedHashMap<>();
|
||||
mapZC.putAll(mapZ);
|
||||
mapZC.putAll(mapC);
|
||||
mapZC.putAll(mapC2);
|
||||
Map<String, String> mapSToU = new LinkedHashMap<>();
|
||||
mapSToU.put("vbsz1", "vbuz1");
|
||||
mapSToU.put("vbsz2", "vbuz2");
|
||||
@ -296,6 +296,8 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
// Presence of unwanted single symbols
|
||||
String oneZ2 = ".*z2.*";
|
||||
String derefC1 = ".*c1_deref.*";
|
||||
String derefC2 = ".*c2_deref.*";
|
||||
String derefC3 = ".*c3_deref.*";
|
||||
|
||||
List<AsmFragmentTemplateSynthesisRule> synths = new ArrayList<>();
|
||||
|
||||
@ -511,21 +513,31 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("p..([cz].)=_(inc|dec)_p..([cz].)", null, null, "vwu$1=_$2_vwu$3", null, null));
|
||||
|
||||
// Synthesize constants using AA/XX/YY
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)vbuc1(.*)", rvalAa+"|"+"|"+ derefC1, "lda #{c1}", "$1=$2vbuaa$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)vbsc1(.*)", rvalAa+"|"+"|"+ derefC1, "lda #{c1}", "$1=$2vbsaa$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)vbuc1(.*)", rvalYy+"|"+"|"+ derefC1, "ldy #{c1}", "$1=$2vbuyy$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)vbsc1(.*)", rvalYy+"|"+"|"+ derefC1, "ldy #{c1}", "$1=$2vbsyy$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)vbuc1(.*)", rvalXx+"|"+"|"+ derefC1, "ldx #{c1}", "$1=$2vbuxx$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)vbsc1(.*)", rvalXx+"|"+"|"+ derefC1, "ldx #{c1}", "$1=$2vbsxx$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c1(.*)", rvalAa+"|"+"|"+ derefC1, "lda #{c1}", "$1vb$2aa$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c1(.*)", rvalYy+"|"+"|"+ derefC1, "ldy #{c1}", "$1vb$2yy$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c1(.*)", rvalXx+"|"+"|"+ derefC1, "ldx #{c1}", "$1vb$2xx$3", null, null));
|
||||
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c2(.*)", rvalAa+"|"+"|"+ derefC2, "lda #{c2}", "$1vb$2aa$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c2(.*)", rvalYy+"|"+"|"+ derefC2, "ldy #{c2}", "$1vb$2yy$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c2(.*)", rvalXx+"|"+"|"+ derefC2, "ldx #{c2}", "$1vb$2xx$3", null, null));
|
||||
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c3(.*)", rvalAa+"|"+"|"+ derefC3, "lda #{c3}", "$1vb$2aa$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c3(.*)", rvalYy+"|"+"|"+ derefC3, "ldy #{c3}", "$1vb$2yy$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c3(.*)", rvalXx+"|"+"|"+ derefC3, "ldx #{c3}", "$1vb$2xx$3", null, null));
|
||||
|
||||
// Rewrite any signed dereference (.*_derefidx_vbs.*) to unsigned (.*_derefidx_vbu.*)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_derefidx_vbs(.*)", null, null, "$1_derefidx_vbu$2", null, null));
|
||||
|
||||
// If no C1 is present in the signature map other Cs down to take its place
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*c2.*)", ".*c1.*", null, "$1", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*c2.*)", ".*c1.*", null, "$1", null, mapC2));
|
||||
// If no C2 is present in the signature map other Cs down to take its place
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*c3.*)", ".*c2.*", null, "$1", null, mapC3));
|
||||
|
||||
// Rewrite trailing right-size (Z1),y to use AA
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)z1_derefidx_vbuyy", twoZ1+"|"+rvalAa, "lda ({z1}),y", "$1=$2vb$3aa", null, mapZ, null));
|
||||
// Rewrite trailing right-size (Z1),y to use AA - when 2 Z1
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z1(.*)pb(.)z1_derefidx_vbuyy", rvalAa, "lda ({z1}),y", "$1z1$2vb$3aa", null, null, null));
|
||||
|
||||
// OLD STYLE REWRITES - written when only one rule could be taken
|
||||
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuz1=(.*)", twoZ1+"|"+twoC1, null, "vb$1aa=$2", "ldx {z1}\n" + "sta {c1},x", mapZC));
|
||||
@ -552,18 +564,18 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_derefidx_vbuz2(.*)_derefidx_vbuz2(.*)", threeZ2+"|"+rvalYy+"|"+lvalDerefIdxZ2, "ldy {z2}", "$1_derefidx_vbuyy$2_derefidx_vbuyy$3", null, mapZ));
|
||||
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuz1=(.*c1.*)", twoZ1, null, "vb$1aa=$2", "ldx {z1}\n" + "sta {c1},x", mapZ));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuz1=(.*z1.*)", twoC1, null, "vb$1aa=$2", "ldx {z1}\n" + "sta {c1},x", mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuz1=(.*z1.*)", twoC1, null, "vb$1aa=$2", "ldx {z1}\n" + "sta {c1},x", mapC2));
|
||||
|
||||
// Convert X/Y-based array indexing of a constant pointer into A-register by prefixing lda cn,x / lda cn,y ( ...pb.c1_derefidx_vbuxx... / ...pb.c1_derefidx_vbuyy... -> ...vb.aa... )
|
||||
|
||||
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuxx(.*)", rvalAa+"|"+twoC1, "lda {c1},x", "$1=$2vb$3aa$4", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuxx(.*)", rvalYy+"|"+twoC1, "ldy {c1},x", "$1=$2vb$3yy$4", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuxx(.*)", rvalAa+"|"+twoC1, "lda {c1},x", "$1=$2vb$3aa$4", null, mapC2));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuxx(.*)", rvalYy+"|"+twoC1, "ldy {c1},x", "$1=$2vb$3yy$4", null, mapC2));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*c1.*)pb(.)c1_derefidx_vbuxx(.*)", rvalAa, "lda {c1},x", "$1=$2vb$3aa$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuxx(.*c1.*)", rvalAa, "lda {c1},x", "$1=$2vb$3aa$4", null, null));
|
||||
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuyy(.*)", rvalAa+"|"+twoC1, "lda {c1},y", "$1=$2vb$3aa$4", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuyy(.*)", rvalXx+"|"+twoC1, "ldx {c1},y", "$1=$2vb$3xx$4", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuyy(.*)", rvalAa+"|"+twoC1, "lda {c1},y", "$1=$2vb$3aa$4", null, mapC2));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuyy(.*)", rvalXx+"|"+twoC1, "ldx {c1},y", "$1=$2vb$3xx$4", null, mapC2));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*c1.*)pb(.)c1_derefidx_vbuyy(.*)", rvalAa, "lda {c1},y", "$1=$2vb$3aa$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuyy(.*c1.*)", rvalAa, "lda {c1},y", "$1=$2vb$3aa$4", null, null));
|
||||
|
||||
@ -579,9 +591,9 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_derefidx_vbuz1_(.*)", rvalYy+"|"+twoZ1, "ldy {z1}", "$1_derefidx_vbuyy_$2", null, mapZ));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_derefidx_vbuz1_(lt|gt|le|ge|eq|neq)_(.*)", rvalXx+"|"+twoZ1, "ldx {z1}", "$1_derefidx_vbuxx_$2_$3", null, mapZ));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuyy_(lt|gt|le|ge|eq|neq)_(.*)", rvalAa+"|"+twoC1, "lda {c1},y", "vb$1aa_$2_$3", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuyy_(lt|gt|le|ge|eq|neq)_(.*)", rvalAa+"|"+twoC1, "lda {c1},y", "vb$1aa_$2_$3", null, mapC2));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuyy_(lt|gt|le|ge|eq|neq)_(.*c1.*)", rvalAa, "lda {c1},y", "vb$1aa_$2_$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx_(lt|gt|le|ge|eq|neq)_(.*)", rvalAa+"|"+twoC1, "lda {c1},x", "vb$1aa_$2_$3", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx_(lt|gt|le|ge|eq|neq)_(.*)", rvalAa+"|"+twoC1, "lda {c1},x", "vb$1aa_$2_$3", null, mapC2));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx_(lt|gt|le|ge|eq|neq)_(.*c1.*)", rvalAa, "lda {c1},x", "vb$1aa_$2_$3", null, null));
|
||||
|
||||
// Use unsigned ASM to synthesize signed ASM ( ...vbs... -> ...vbu... )
|
||||
|
@ -5,15 +5,15 @@ import "multiply"
|
||||
|
||||
// Address of the screen
|
||||
const byte* SCREEN = 0x0400;
|
||||
// Sprite data for the animating sprites
|
||||
const byte* SPRITE_DATA = 0x2000;
|
||||
|
||||
// Copy of the screen used for finding chars to process
|
||||
byte[1000] SCREEN_COPY;
|
||||
|
||||
// Max number of chars processed at once
|
||||
const byte NUM_PROCESSING = 8;
|
||||
const byte NUM_PROCESSING = 1;
|
||||
|
||||
// Sprite data for the animating sprites
|
||||
const align(64) byte[NUM_PROCESSING*64] SPRITE_DATA;
|
||||
|
||||
// Struct holding char being processed
|
||||
struct ProcessingChar {
|
||||
@ -95,9 +95,12 @@ void startProcessing(struct ProcessingChar center) {
|
||||
// Copy char into sprite
|
||||
// TODO: Copy chargen data
|
||||
byte* spriteData = SPRITE_DATA+(word)spriteIdx*64;
|
||||
for( byte i: 0..7) *spriteData++ = 0xff;
|
||||
for( byte i: 0..7) {
|
||||
*spriteData = 0xff;
|
||||
spriteData += 3;
|
||||
}
|
||||
word spriteX = 24 + (word)center.x*8;
|
||||
byte spriteY = 30 + center.y*8;
|
||||
byte spriteY = 50 + center.y*8;
|
||||
byte spritePtr = (byte)(SPRITE_DATA/64)+spriteIdx;
|
||||
byte* screenPtr = SCREEN+(word)center.y*40+center.x;
|
||||
// Put the sprite into the PROCESSING array
|
||||
@ -107,31 +110,33 @@ void startProcessing(struct ProcessingChar center) {
|
||||
// Process any chars in the PROCESSING array
|
||||
void processChars() {
|
||||
for( byte i: 0..NUM_PROCESSING-1 ) {
|
||||
if(PROCESSING[i].status!=STATUS_FREE) {
|
||||
if(PROCESSING[i].status==STATUS_NEW) {
|
||||
struct ProcessingSprite* processing = PROCESSING+i;
|
||||
byte bitmask = 1<<processing->id;
|
||||
if(processing->status!=STATUS_FREE) {
|
||||
if(processing->status==STATUS_NEW) {
|
||||
// Clear the char on the screen
|
||||
*PROCESSING[i].screenPtr = ' ';
|
||||
*(processing->screenPtr) = ' ';
|
||||
// Enable the sprite
|
||||
*SPRITES_ENABLE |= 1<<PROCESSING[i].id;
|
||||
*SPRITES_ENABLE |= bitmask;
|
||||
// Set sprite pointer
|
||||
*(SCREEN+SPRITE_PTRS+PROCESSING[i].id) = PROCESSING[i].ptr;
|
||||
*(SCREEN+SPRITE_PTRS+processing->id) = processing->ptr;
|
||||
// Set status
|
||||
PROCESSING[i].status = STATUS_PROCESSING;
|
||||
processing->status = STATUS_PROCESSING;
|
||||
}
|
||||
// Set sprite position
|
||||
if(>PROCESSING[i].x) {
|
||||
*SPRITES_XMSB |= (1<<PROCESSING[i].id);
|
||||
if(>processing->x) {
|
||||
*SPRITES_XMSB |= bitmask;
|
||||
} else {
|
||||
*SPRITES_XMSB &= 0xff ^ (1<<PROCESSING[i].id);
|
||||
*SPRITES_XMSB &= 0xff ^ bitmask;
|
||||
}
|
||||
SPRITES_XPOS[i<<2] = (byte)PROCESSING[i].x;
|
||||
SPRITES_YPOS[i<<2] = PROCESSING[i].y;
|
||||
SPRITES_XPOS[i*2] = (byte)processing->x;
|
||||
SPRITES_YPOS[i*2] = processing->y;
|
||||
// Move sprite
|
||||
if(--(PROCESSING[i].x)==0) {
|
||||
if(--(processing->x)==0) {
|
||||
// Set status
|
||||
PROCESSING[i].status = STATUS_FREE;
|
||||
processing->status = STATUS_FREE;
|
||||
// Disable the sprite
|
||||
*SPRITES_ENABLE &= 0xff ^ (1<<PROCESSING[i].id);
|
||||
*SPRITES_ENABLE &= 0xff ^ bitmask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,13 @@
|
||||
// Black Hole at the center of the BASIC screen sucking in any letters
|
||||
// Black Hole at the center of the BASIC screen sucking in letters
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.const OFFSET_STRUCT_PROCESSINGCHAR_Y = 1
|
||||
.const OFFSET_STRUCT_PROCESSINGCHAR_DIST = 2
|
||||
.const SIZEOF_POINTER = 2
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_Y = 2
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 3
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 4
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = 5
|
||||
.const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = 6
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
@ -12,7 +16,13 @@
|
||||
.label PROCPORT = 1
|
||||
// RAM in $A000, $E000 I/O in $D000
|
||||
.const PROCPORT_RAM_IO = $35
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
.const SPRITE_PTRS = $3f8
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label SPRITES_XMSB = $d010
|
||||
.label RASTER = $d012
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
@ -22,8 +32,6 @@
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
// CIA#1 Interrupt Status & Control Register
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
@ -33,33 +41,68 @@
|
||||
.const WHITE = 1
|
||||
.const BLUE = 6
|
||||
.const LIGHT_BLUE = $e
|
||||
// Address of the screen
|
||||
.label SCREEN = $400
|
||||
// Sprite data for the animating sprites
|
||||
.label SPRITE_DATA = $2000
|
||||
// Max number of chars processed at once
|
||||
.const NUM_PROCESSING = 1
|
||||
// Distance value meaning not found
|
||||
.const NOT_FOUND = $ffff
|
||||
.const NUM_PROCESSING = $10
|
||||
// Values for ProcessingSprite.status
|
||||
.const STATUS_FREE = 0
|
||||
.const STATUS_NEW = 1
|
||||
.const STATUS_PROCESSING = 2
|
||||
.const RASTER_IRQ_TOP = $30
|
||||
.const RASTER_IRQ_MIDDLE = $ff
|
||||
main: {
|
||||
.label src = 2
|
||||
.label dst = 4
|
||||
.label center_dist = $f
|
||||
.label sp = 2
|
||||
.label src = 4
|
||||
.label dst = 6
|
||||
.label center_dist = $13
|
||||
ldy #0
|
||||
// Init processing array
|
||||
b1:
|
||||
tya
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
tax
|
||||
lda #0
|
||||
sta PROCESSING,x
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,x
|
||||
lda #<NOT_FOUND
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,x
|
||||
lda #>NOT_FOUND
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,x
|
||||
sta PROCESSING+1,x
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x
|
||||
lda #STATUS_FREE
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x
|
||||
lda #<0
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x
|
||||
iny
|
||||
cpy #NUM_PROCESSING-1+1
|
||||
cpy #1
|
||||
bne b1
|
||||
lda #<SPRITE_DATA
|
||||
sta sp
|
||||
lda #>SPRITE_DATA
|
||||
sta sp+1
|
||||
// Clear sprites
|
||||
b2:
|
||||
lda #0
|
||||
tay
|
||||
sta (sp),y
|
||||
inc sp
|
||||
bne !+
|
||||
inc sp+1
|
||||
!:
|
||||
lda sp+1
|
||||
cmp #>SPRITE_DATA+SIZEOF_POINTER
|
||||
bcc b2
|
||||
bne !+
|
||||
lda sp
|
||||
cmp #<SPRITE_DATA+SIZEOF_POINTER
|
||||
bcc b2
|
||||
!:
|
||||
jsr setupRasterIrq
|
||||
lda #<SCREEN_COPY
|
||||
sta dst
|
||||
@ -69,8 +112,10 @@ main: {
|
||||
sta src
|
||||
lda #>SCREEN
|
||||
sta src+1
|
||||
// Fill screen with some chars
|
||||
//for( byte* sc: SCREEN..SCREEN+999) *sc = 'a'+(<sc&0x1f);
|
||||
// Copy screen to screen copy
|
||||
b3:
|
||||
b4:
|
||||
ldy #0
|
||||
lda (src),y
|
||||
sta (dst),y
|
||||
@ -84,97 +129,229 @@ main: {
|
||||
!:
|
||||
lda src+1
|
||||
cmp #>SCREEN+$3e8
|
||||
bne b3
|
||||
bne b4
|
||||
lda src
|
||||
cmp #<SCREEN+$3e8
|
||||
bne b3
|
||||
bne b4
|
||||
jsr initSquareTables
|
||||
b2:
|
||||
b3:
|
||||
// Main loop
|
||||
jsr getCharToProcess
|
||||
ldy getCharToProcess.return_x
|
||||
ldx getCharToProcess.return_y
|
||||
lda center_dist+1
|
||||
cmp #>NOT_FOUND
|
||||
bne b6
|
||||
bne b7
|
||||
lda center_dist
|
||||
cmp #<NOT_FOUND
|
||||
bne b6
|
||||
b7:
|
||||
bne b7
|
||||
b8:
|
||||
inc SCREEN+$3e7
|
||||
jmp b7
|
||||
b6:
|
||||
jmp b8
|
||||
b7:
|
||||
sty startProcessing.center_x
|
||||
stx startProcessing.center_y
|
||||
jsr startProcessing
|
||||
jmp b2
|
||||
jmp b3
|
||||
}
|
||||
// Start processing a char - by inserting it into the PROCESSING array
|
||||
// startProcessing(byte zeropage($17) center_x, byte zeropage($18) center_y, word zeropage($f) center_dist)
|
||||
// startProcessing(byte zeropage($1c) center_x, byte zeropage($1d) center_y)
|
||||
startProcessing: {
|
||||
.label center_x = $17
|
||||
.label center_y = $18
|
||||
.label center_dist = $f
|
||||
.label freeIdx = 6
|
||||
lda #$ff
|
||||
sta freeIdx
|
||||
.label _0 = 9
|
||||
.label _1 = 9
|
||||
.label _3 = $1e
|
||||
.label _4 = $1e
|
||||
.label _11 = $21
|
||||
.label _12 = $21
|
||||
.label _13 = $21
|
||||
.label center_x = $1c
|
||||
.label center_y = $1d
|
||||
.label i = 8
|
||||
.label spriteData = 9
|
||||
.label spriteX = $1e
|
||||
.label spritePtr = $20
|
||||
.label screenPtr = $21
|
||||
.label freeIdx = 8
|
||||
.label _30 = $23
|
||||
.label _31 = $21
|
||||
ldx #$ff
|
||||
b1:
|
||||
ldx #0
|
||||
lda #0
|
||||
sta i
|
||||
b2:
|
||||
txa
|
||||
lda i
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
tay
|
||||
lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,y
|
||||
cmp #>NOT_FOUND
|
||||
bne b3
|
||||
lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,y
|
||||
cmp #<NOT_FOUND
|
||||
bne b3
|
||||
lda #STATUS_FREE
|
||||
cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y
|
||||
beq !b3+
|
||||
jmp b3
|
||||
!b3:
|
||||
b4:
|
||||
cpx #$ff
|
||||
beq b6
|
||||
txa
|
||||
lda #$ff
|
||||
cmp freeIdx
|
||||
bne !b8+
|
||||
jmp b8
|
||||
!b8:
|
||||
lda freeIdx
|
||||
sta _0
|
||||
lda #0
|
||||
sta _0+1
|
||||
asl _1
|
||||
rol _1+1
|
||||
asl _1
|
||||
rol _1+1
|
||||
asl _1
|
||||
rol _1+1
|
||||
asl _1
|
||||
rol _1+1
|
||||
asl _1
|
||||
rol _1+1
|
||||
asl _1
|
||||
rol _1+1
|
||||
clc
|
||||
lda spriteData
|
||||
adc #<SPRITE_DATA
|
||||
sta spriteData
|
||||
lda spriteData+1
|
||||
adc #>SPRITE_DATA
|
||||
sta spriteData+1
|
||||
ldx #0
|
||||
b6:
|
||||
lda #$ff
|
||||
ldy #0
|
||||
sta (spriteData),y
|
||||
lda #3
|
||||
clc
|
||||
adc spriteData
|
||||
sta spriteData
|
||||
bcc !+
|
||||
inc spriteData+1
|
||||
!:
|
||||
inx
|
||||
cpx #8
|
||||
bne b6
|
||||
lda center_x
|
||||
sta _3
|
||||
lda #0
|
||||
sta _3+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
lda #$18
|
||||
clc
|
||||
adc spriteX
|
||||
sta spriteX
|
||||
bcc !+
|
||||
inc spriteX+1
|
||||
!:
|
||||
lda center_y
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
clc
|
||||
adc #$32
|
||||
tay
|
||||
lax freeIdx
|
||||
axs #-[SPRITE_DATA/$40]
|
||||
stx spritePtr
|
||||
lda center_y
|
||||
sta _11
|
||||
lda #0
|
||||
sta _11+1
|
||||
lda _11
|
||||
asl
|
||||
sta _30
|
||||
lda _11+1
|
||||
rol
|
||||
sta _30+1
|
||||
asl _30
|
||||
rol _30+1
|
||||
lda _31
|
||||
clc
|
||||
adc _30
|
||||
sta _31
|
||||
lda _31+1
|
||||
adc _30+1
|
||||
sta _31+1
|
||||
asl _12
|
||||
rol _12+1
|
||||
asl _12
|
||||
rol _12+1
|
||||
asl _12
|
||||
rol _12+1
|
||||
clc
|
||||
lda _13
|
||||
adc #<SCREEN
|
||||
sta _13
|
||||
lda _13+1
|
||||
adc #>SCREEN
|
||||
sta _13+1
|
||||
lda center_x
|
||||
clc
|
||||
adc screenPtr
|
||||
sta screenPtr
|
||||
bcc !+
|
||||
inc screenPtr+1
|
||||
!:
|
||||
lda freeIdx
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
tax
|
||||
lda center_x
|
||||
lda spriteX
|
||||
sta PROCESSING,x
|
||||
lda center_y
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,x
|
||||
lda center_dist
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,x
|
||||
lda center_dist+1
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,x
|
||||
lda spriteX+1
|
||||
sta PROCESSING+1,x
|
||||
tya
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x
|
||||
lda freeIdx
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x
|
||||
lda spritePtr
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x
|
||||
lda #STATUS_NEW
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x
|
||||
lda screenPtr
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x
|
||||
lda screenPtr+1
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x
|
||||
rts
|
||||
b6:
|
||||
stx freeIdx
|
||||
b8:
|
||||
ldx freeIdx
|
||||
jmp b1
|
||||
b3:
|
||||
inx
|
||||
cpx #NUM_PROCESSING-1+1
|
||||
bne b2
|
||||
ldx freeIdx
|
||||
inc i
|
||||
lda #1
|
||||
cmp i
|
||||
beq !b2+
|
||||
jmp b2
|
||||
!b2:
|
||||
stx freeIdx
|
||||
jmp b4
|
||||
}
|
||||
// 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 = $19
|
||||
.label _10 = $19
|
||||
.label _11 = $19
|
||||
.label return_dist = $f
|
||||
.label x = $a
|
||||
.label dist = $f
|
||||
.label screen_line = 7
|
||||
.label y = 9
|
||||
.label return_x = $d
|
||||
.label return_y = $e
|
||||
.label closest_dist = $b
|
||||
.label closest_x = $d
|
||||
.label closest_y = $e
|
||||
.label _15 = $1b
|
||||
.label _16 = $19
|
||||
.label _9 = $25
|
||||
.label _10 = $25
|
||||
.label _11 = $25
|
||||
.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 = $27
|
||||
.label _16 = $25
|
||||
lda #0
|
||||
sta closest_y
|
||||
sta closest_x
|
||||
@ -314,10 +491,10 @@ getCharToProcess: {
|
||||
}
|
||||
// initialize SQUARES table
|
||||
initSquareTables: {
|
||||
.label _6 = $13
|
||||
.label _14 = $13
|
||||
.label x = $11
|
||||
.label y = $12
|
||||
.label _6 = $17
|
||||
.label _14 = $17
|
||||
.label x = $15
|
||||
.label y = $16
|
||||
lda #0
|
||||
sta x
|
||||
b1:
|
||||
@ -383,9 +560,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 = $15
|
||||
.label res = $13
|
||||
.label return = $13
|
||||
.label mb = $19
|
||||
.label res = $17
|
||||
.label return = $17
|
||||
lda #0
|
||||
sta res
|
||||
sta res+1
|
||||
@ -479,144 +656,119 @@ irqBottom: {
|
||||
}
|
||||
// Process any chars in the PROCESSING array
|
||||
processChars: {
|
||||
.label _3 = $1f
|
||||
.label _4 = $1f
|
||||
.label _5 = $1f
|
||||
.label _7 = $23
|
||||
.label _8 = $23
|
||||
.label _9 = $23
|
||||
.label processing_x = $1d
|
||||
.label processing_y = $1e
|
||||
.label _22 = $21
|
||||
.label _23 = $1f
|
||||
.label _25 = $25
|
||||
.label _26 = $23
|
||||
ldx #0
|
||||
.label processing = $29
|
||||
.label bitmask = $2b
|
||||
.label i = $1b
|
||||
lda #0
|
||||
sta i
|
||||
b1:
|
||||
txa
|
||||
lda i
|
||||
asl
|
||||
asl
|
||||
tay
|
||||
lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,y
|
||||
cmp #<NOT_FOUND
|
||||
bne !+
|
||||
lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,y
|
||||
cmp #>NOT_FOUND
|
||||
bne !b2+
|
||||
jmp b2
|
||||
!b2:
|
||||
asl
|
||||
clc
|
||||
adc #<PROCESSING
|
||||
sta processing
|
||||
lda #>PROCESSING
|
||||
adc #0
|
||||
sta processing+1
|
||||
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
||||
lda (processing),y
|
||||
tax
|
||||
lda #1
|
||||
cpx #0
|
||||
beq !e+
|
||||
!:
|
||||
asl
|
||||
dex
|
||||
bne !-
|
||||
!e:
|
||||
sta bitmask
|
||||
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
||||
lda (processing),y
|
||||
cmp #STATUS_FREE
|
||||
beq b2
|
||||
lda (processing),y
|
||||
cmp #STATUS_NEW
|
||||
bne b3
|
||||
// Clear the char on the screen
|
||||
ldx #' '
|
||||
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
||||
lda (processing),y
|
||||
sta !++1
|
||||
iny
|
||||
lda (processing),y
|
||||
sta !++2
|
||||
txa
|
||||
asl
|
||||
asl
|
||||
tay
|
||||
lda PROCESSING,y
|
||||
sta processing_x
|
||||
lda PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_Y,y
|
||||
sta processing_y
|
||||
sta _3
|
||||
lda #0
|
||||
sta _3+1
|
||||
lda _3
|
||||
asl
|
||||
sta _22
|
||||
lda _3+1
|
||||
rol
|
||||
sta _22+1
|
||||
asl _22
|
||||
rol _22+1
|
||||
lda _23
|
||||
clc
|
||||
adc _22
|
||||
sta _23
|
||||
lda _23+1
|
||||
adc _22+1
|
||||
sta _23+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
clc
|
||||
lda _5
|
||||
adc #<COLS
|
||||
sta _5
|
||||
lda _5+1
|
||||
adc #>COLS
|
||||
sta _5+1
|
||||
lda #WHITE
|
||||
ldy processing_x
|
||||
sta (_5),y
|
||||
lda processing_y
|
||||
sta _7
|
||||
lda #0
|
||||
sta _7+1
|
||||
lda _7
|
||||
asl
|
||||
sta _25
|
||||
lda _7+1
|
||||
rol
|
||||
sta _25+1
|
||||
asl _25
|
||||
rol _25+1
|
||||
lda _26
|
||||
clc
|
||||
adc _25
|
||||
sta _26
|
||||
lda _26+1
|
||||
adc _25+1
|
||||
sta _26+1
|
||||
asl _8
|
||||
rol _8+1
|
||||
asl _8
|
||||
rol _8+1
|
||||
asl _8
|
||||
rol _8+1
|
||||
clc
|
||||
lda _9
|
||||
adc #<SCREEN
|
||||
sta _9
|
||||
lda _9+1
|
||||
adc #>SCREEN
|
||||
sta _9+1
|
||||
lda (_9),y
|
||||
cmp #' '
|
||||
beq b3
|
||||
lda (_9),y
|
||||
cmp #' '
|
||||
beq !+
|
||||
bcs b4
|
||||
!:
|
||||
ldy processing_x
|
||||
lda (_9),y
|
||||
clc
|
||||
adc #1
|
||||
sta (_9),y
|
||||
sta $ffff
|
||||
// Enable the sprite
|
||||
lda SPRITES_ENABLE
|
||||
ora bitmask
|
||||
sta SPRITES_ENABLE
|
||||
// Set sprite pointer
|
||||
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
||||
lda (processing),y
|
||||
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
||||
lda (processing),y
|
||||
tay
|
||||
lda SCREEN+SPRITE_PTRS,y
|
||||
// Set status
|
||||
lda #STATUS_PROCESSING
|
||||
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
||||
sta (processing),y
|
||||
b3:
|
||||
ldy #1
|
||||
lda (processing),y
|
||||
// Set sprite position
|
||||
cmp #0
|
||||
bne b4
|
||||
lda #$ff
|
||||
eor bitmask
|
||||
and SPRITES_XMSB
|
||||
sta SPRITES_XMSB
|
||||
b5:
|
||||
lda i
|
||||
asl
|
||||
tax
|
||||
ldy #0
|
||||
lda (processing),y
|
||||
sta SPRITES_XPOS,x
|
||||
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
||||
lda (processing),y
|
||||
sta SPRITES_YPOS,x
|
||||
ldy #0
|
||||
lda (processing),y
|
||||
sec
|
||||
sbc #1
|
||||
sta (processing),y
|
||||
lda (processing),y
|
||||
bne b2
|
||||
iny
|
||||
lda (processing),y
|
||||
bne b2
|
||||
// Set status
|
||||
lda #STATUS_FREE
|
||||
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
||||
sta (processing),y
|
||||
lda #$ff
|
||||
eor bitmask
|
||||
// Disable the sprite
|
||||
and SPRITES_ENABLE
|
||||
sta SPRITES_ENABLE
|
||||
b2:
|
||||
inx
|
||||
cpx #NUM_PROCESSING-1+1
|
||||
inc i
|
||||
lda #1
|
||||
cmp i
|
||||
beq !b1+
|
||||
jmp b1
|
||||
!b1:
|
||||
rts
|
||||
b4:
|
||||
ldy processing_x
|
||||
lda (_9),y
|
||||
sec
|
||||
sbc #1
|
||||
sta (_9),y
|
||||
jmp b2
|
||||
b3:
|
||||
txa
|
||||
asl
|
||||
asl
|
||||
tay
|
||||
lda #<NOT_FOUND
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST,y
|
||||
lda #>NOT_FOUND
|
||||
sta PROCESSING+OFFSET_STRUCT_PROCESSINGCHAR_DIST+1,y
|
||||
jmp b2
|
||||
lda SPRITES_XMSB
|
||||
ora bitmask
|
||||
sta SPRITES_XMSB
|
||||
jmp b5
|
||||
}
|
||||
// Raster Interrupt at the top of the screen
|
||||
irqTop: {
|
||||
@ -664,5 +816,5 @@ irqTop: {
|
||||
SQUARES_X: .fill 2*$28, 0
|
||||
// SQUARES_Y[i] = (i-12)*(i-12)
|
||||
SQUARES_Y: .fill 2*$19, 0
|
||||
// Chars currently being processed in the interrupt
|
||||
PROCESSING: .fill 4*NUM_PROCESSING, 0
|
||||
// Sprites currently being processed in the interrupt
|
||||
PROCESSING: .fill 8*NUM_PROCESSING, 0
|
||||
|
@ -12,339 +12,380 @@ main: scope:[main] from @1
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
[5] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 )
|
||||
[6] (byte~) main::$14 ← (byte) main::i#2 << (byte) 2
|
||||
[7] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$14) ← (byte) 0
|
||||
[8] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) main::$14) ← (byte) 0
|
||||
[9] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) main::$14) ← (const word) NOT_FOUND#0
|
||||
[10] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||
[11] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@1
|
||||
[6] (byte~) main::$17 ← (byte) main::i#2 << (byte) 3
|
||||
[7] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$17) ← (byte) 0
|
||||
[8] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$17) ← (byte) 0
|
||||
[9] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$17) ← (byte) 0
|
||||
[10] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$17) ← (byte) 0
|
||||
[11] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$17) ← (const byte) STATUS_FREE#0
|
||||
[12] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$17) ← (byte*) 0
|
||||
[13] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||
[14] if((byte) main::i#1!=(byte) 1) goto main::@1
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[12] phi()
|
||||
[13] call setupRasterIrq
|
||||
main::@2: scope:[main] from main::@1 main::@2
|
||||
[15] (byte*) main::sp#2 ← phi( main::@1/(const byte*) SPRITE_DATA#0 main::@2/(byte*) main::sp#1 )
|
||||
[16] *((byte*) main::sp#2) ← (byte) 0
|
||||
[17] (byte*) main::sp#1 ← ++ (byte*) main::sp#2
|
||||
[18] if((byte*) main::sp#1<(const byte*) SPRITE_DATA#0+(const byte) SIZEOF_POINTER) goto main::@2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2 main::@3
|
||||
[14] (byte*) main::dst#2 ← phi( main::@2/(const byte[$3e8]) SCREEN_COPY#0 main::@3/(byte*) main::dst#1 )
|
||||
[14] (byte*) main::src#2 ← phi( main::@2/(const byte*) SCREEN#0 main::@3/(byte*) main::src#1 )
|
||||
[15] *((byte*) main::dst#2) ← *((byte*) main::src#2)
|
||||
[16] (byte*) main::src#1 ← ++ (byte*) main::src#2
|
||||
[17] (byte*) main::dst#1 ← ++ (byte*) main::dst#2
|
||||
[18] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@3
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
[19] phi()
|
||||
[20] call initSquareTables
|
||||
[20] call setupRasterIrq
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@4
|
||||
[21] (byte*) main::dst#2 ← phi( main::@3/(const byte[$3e8]) SCREEN_COPY#0 main::@4/(byte*) main::dst#1 )
|
||||
[21] (byte*) main::src#2 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(byte*) main::src#1 )
|
||||
[22] *((byte*) main::dst#2) ← *((byte*) main::src#2)
|
||||
[23] (byte*) main::src#1 ← ++ (byte*) main::src#2
|
||||
[24] (byte*) main::dst#1 ← ++ (byte*) main::dst#2
|
||||
[25] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@4
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4 main::@6
|
||||
[21] phi()
|
||||
[22] call getCharToProcess
|
||||
[23] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1
|
||||
[24] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1
|
||||
[25] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1
|
||||
main::@5: scope:[main] from main::@4
|
||||
[26] phi()
|
||||
[27] call initSquareTables
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5 main::@7
|
||||
[28] phi()
|
||||
[29] call getCharToProcess
|
||||
[30] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1
|
||||
[31] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1
|
||||
[32] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@6
|
||||
[33] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0
|
||||
[34] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0
|
||||
[35] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0
|
||||
[36] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@7
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@5
|
||||
[26] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0
|
||||
[27] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0
|
||||
[28] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0
|
||||
[29] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@6
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@7 main::@8
|
||||
[30] *((const byte*) SCREEN#0+(word) $3e7) ← ++ *((const byte*) SCREEN#0+(word) $3e7)
|
||||
to:main::@7
|
||||
main::@6: scope:[main] from main::@8
|
||||
[31] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0
|
||||
[32] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0
|
||||
[33] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0
|
||||
[34] call startProcessing
|
||||
to:main::@5
|
||||
startProcessing: scope:[startProcessing] from main::@6
|
||||
[35] phi()
|
||||
main::@8: scope:[main] from main::@8 main::@9
|
||||
[37] *((const byte*) SCREEN#0+(word) $3e7) ← ++ *((const byte*) SCREEN#0+(word) $3e7)
|
||||
to:main::@8
|
||||
main::@7: scope:[main] from main::@9
|
||||
[38] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0
|
||||
[39] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0
|
||||
[40] call startProcessing
|
||||
to:main::@6
|
||||
startProcessing: scope:[startProcessing] from main::@7
|
||||
[41] phi()
|
||||
to:startProcessing::@1
|
||||
startProcessing::@1: scope:[startProcessing] from startProcessing startProcessing::@6
|
||||
[36] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@6/(byte~) startProcessing::freeIdx#7 )
|
||||
startProcessing::@1: scope:[startProcessing] from startProcessing startProcessing::@8
|
||||
[42] (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
|
||||
[37] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 )
|
||||
[38] (byte~) startProcessing::$5 ← (byte) startProcessing::i#2 << (byte) 2
|
||||
[39] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$5)!=(const word) NOT_FOUND#0) goto startProcessing::@3
|
||||
[43] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 )
|
||||
[44] (byte~) startProcessing::$21 ← (byte) startProcessing::i#2 << (byte) 3
|
||||
[45] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE#0) goto startProcessing::@3
|
||||
to:startProcessing::@4
|
||||
startProcessing::@4: scope:[startProcessing] from startProcessing::@2 startProcessing::@7
|
||||
[40] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@7/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 )
|
||||
[41] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@6
|
||||
startProcessing::@4: scope:[startProcessing] from startProcessing::@2 startProcessing::@9
|
||||
[46] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 )
|
||||
[47] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8
|
||||
to:startProcessing::@5
|
||||
startProcessing::@5: scope:[startProcessing] from startProcessing::@4
|
||||
[42] (byte~) startProcessing::$6 ← (byte) startProcessing::freeIdx#2 << (byte) 2
|
||||
[43] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$6) ← (byte) startProcessing::center_x#0
|
||||
[44] *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) startProcessing::$6) ← (byte) startProcessing::center_y#0
|
||||
[45] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) startProcessing::$6) ← (word) startProcessing::center_dist#0
|
||||
[48] (word~) startProcessing::$0 ← (word)(byte) startProcessing::freeIdx#2
|
||||
[49] (word~) startProcessing::$1 ← (word~) startProcessing::$0 << (byte) 6
|
||||
[50] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$1
|
||||
to:startProcessing::@6
|
||||
startProcessing::@6: scope:[startProcessing] from startProcessing::@5 startProcessing::@6
|
||||
[51] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 )
|
||||
[51] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 )
|
||||
[52] *((byte*) startProcessing::spriteData#2) ← (byte) $ff
|
||||
[53] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3
|
||||
[54] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2
|
||||
[55] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6
|
||||
to:startProcessing::@7
|
||||
startProcessing::@7: scope:[startProcessing] from startProcessing::@6
|
||||
[56] (word~) startProcessing::$3 ← (word)(byte) startProcessing::center_x#0
|
||||
[57] (word~) startProcessing::$4 ← (word~) startProcessing::$3 << (byte) 3
|
||||
[58] (word) startProcessing::spriteX#0 ← (byte) $18 + (word~) startProcessing::$4
|
||||
[59] (byte~) startProcessing::$6 ← (byte) startProcessing::center_y#0 << (byte) 3
|
||||
[60] (byte) startProcessing::spriteY#0 ← (byte) $32 + (byte~) startProcessing::$6
|
||||
[61] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2
|
||||
[62] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_y#0
|
||||
[63] (word) startProcessing::$30 ← (word~) startProcessing::$11 << (byte) 2
|
||||
[64] (word) startProcessing::$31 ← (word) startProcessing::$30 + (word~) startProcessing::$11
|
||||
[65] (word~) startProcessing::$12 ← (word) startProcessing::$31 << (byte) 3
|
||||
[66] (byte*~) startProcessing::$13 ← (const byte*) SCREEN#0 + (word~) startProcessing::$12
|
||||
[67] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$13 + (byte) startProcessing::center_x#0
|
||||
[68] (byte~) startProcessing::$22 ← (byte) startProcessing::freeIdx#2 << (byte) 3
|
||||
[69] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0
|
||||
[70] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteY#0
|
||||
[71] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2
|
||||
[72] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0
|
||||
[73] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW#0
|
||||
[74] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0
|
||||
to:startProcessing::@return
|
||||
startProcessing::@return: scope:[startProcessing] from startProcessing::@5
|
||||
[46] return
|
||||
startProcessing::@return: scope:[startProcessing] from startProcessing::@7
|
||||
[75] return
|
||||
to:@return
|
||||
startProcessing::@6: scope:[startProcessing] from startProcessing::@4
|
||||
[47] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2
|
||||
startProcessing::@8: scope:[startProcessing] from startProcessing::@4
|
||||
[76] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2
|
||||
to:startProcessing::@1
|
||||
startProcessing::@3: scope:[startProcessing] from startProcessing::@2
|
||||
[48] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2
|
||||
[49] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2
|
||||
to:startProcessing::@7
|
||||
startProcessing::@7: scope:[startProcessing] from startProcessing::@3
|
||||
[50] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6
|
||||
[77] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2
|
||||
[78] if((byte) startProcessing::i#1!=(byte) 1) goto startProcessing::@2
|
||||
to:startProcessing::@9
|
||||
startProcessing::@9: scope:[startProcessing] from startProcessing::@3
|
||||
[79] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6
|
||||
to:startProcessing::@4
|
||||
getCharToProcess: scope:[getCharToProcess] from main::@5
|
||||
[51] phi()
|
||||
getCharToProcess: scope:[getCharToProcess] from main::@6
|
||||
[80] phi()
|
||||
to:getCharToProcess::@1
|
||||
getCharToProcess::@1: scope:[getCharToProcess] from getCharToProcess getCharToProcess::@9
|
||||
[52] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 )
|
||||
[52] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 )
|
||||
[52] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 )
|
||||
[52] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 )
|
||||
[52] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(const byte[$3e8]) SCREEN_COPY#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 )
|
||||
[81] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 )
|
||||
[81] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 )
|
||||
[81] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 )
|
||||
[81] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 )
|
||||
[81] (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
|
||||
[53] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 )
|
||||
[53] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 )
|
||||
[53] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 )
|
||||
[53] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 )
|
||||
[54] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11
|
||||
[82] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 )
|
||||
[82] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 )
|
||||
[82] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 )
|
||||
[82] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 )
|
||||
[83] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11
|
||||
to:getCharToProcess::@4
|
||||
getCharToProcess::@4: scope:[getCharToProcess] from getCharToProcess::@2
|
||||
[55] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1
|
||||
[56] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1
|
||||
[57] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14)
|
||||
[58] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12
|
||||
[84] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1
|
||||
[85] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1
|
||||
[86] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14)
|
||||
[87] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12
|
||||
to:getCharToProcess::@5
|
||||
getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4
|
||||
[59] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2
|
||||
[60] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7
|
||||
[88] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2
|
||||
[89] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7
|
||||
to:getCharToProcess::@3
|
||||
getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5
|
||||
[61] (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 )
|
||||
[61] (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 )
|
||||
[61] (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 )
|
||||
[62] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2
|
||||
[63] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10
|
||||
[90] (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 )
|
||||
[90] (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 )
|
||||
[90] (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 )
|
||||
[91] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2
|
||||
[92] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10
|
||||
to:getCharToProcess::@6
|
||||
getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3
|
||||
[64] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28
|
||||
[65] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7
|
||||
[66] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9
|
||||
[93] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28
|
||||
[94] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7
|
||||
[95] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9
|
||||
to:getCharToProcess::@7
|
||||
getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6
|
||||
[67] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return
|
||||
[96] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return
|
||||
to:getCharToProcess::@8
|
||||
getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7
|
||||
[68] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1
|
||||
[69] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2
|
||||
[70] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9
|
||||
[71] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3
|
||||
[72] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10
|
||||
[73] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' '
|
||||
[97] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1
|
||||
[98] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2
|
||||
[99] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9
|
||||
[100] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3
|
||||
[101] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10
|
||||
[102] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' '
|
||||
to:getCharToProcess::@return
|
||||
getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8
|
||||
[74] return
|
||||
[103] return
|
||||
to:@return
|
||||
getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6
|
||||
[75] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1
|
||||
[104] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1
|
||||
to:getCharToProcess::@1
|
||||
getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3
|
||||
[76] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1
|
||||
[105] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1
|
||||
to:getCharToProcess::@2
|
||||
getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4
|
||||
[77] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2
|
||||
[106] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2
|
||||
to:getCharToProcess::@3
|
||||
getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2
|
||||
[78] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2
|
||||
[107] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2
|
||||
to:getCharToProcess::@3
|
||||
initSquareTables: scope:[initSquareTables] from main::@4
|
||||
[79] phi()
|
||||
initSquareTables: scope:[initSquareTables] from main::@5
|
||||
[108] phi()
|
||||
to:initSquareTables::@1
|
||||
initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9
|
||||
[80] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 )
|
||||
[81] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2
|
||||
[109] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 )
|
||||
[110] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2
|
||||
to:initSquareTables::@3
|
||||
initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1
|
||||
[82] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14
|
||||
[111] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14
|
||||
to:initSquareTables::@4
|
||||
initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3
|
||||
[83] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 )
|
||||
[84] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0
|
||||
[85] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0
|
||||
[86] call mul8u
|
||||
[87] (word) mul8u::return#2 ← (word) mul8u::res#2
|
||||
[112] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 )
|
||||
[113] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0
|
||||
[114] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0
|
||||
[115] call mul8u
|
||||
[116] (word) mul8u::return#2 ← (word) mul8u::res#2
|
||||
to:initSquareTables::@9
|
||||
initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4
|
||||
[88] (word~) initSquareTables::$6 ← (word) mul8u::return#2
|
||||
[89] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1
|
||||
[90] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6
|
||||
[91] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2
|
||||
[92] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1
|
||||
[117] (word~) initSquareTables::$6 ← (word) mul8u::return#2
|
||||
[118] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1
|
||||
[119] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6
|
||||
[120] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2
|
||||
[121] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1
|
||||
to:initSquareTables::@5
|
||||
initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9
|
||||
[93] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 )
|
||||
[94] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6
|
||||
[122] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 )
|
||||
[123] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6
|
||||
to:initSquareTables::@7
|
||||
initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5
|
||||
[95] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c
|
||||
[124] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c
|
||||
to:initSquareTables::@8
|
||||
initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7
|
||||
[96] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 )
|
||||
[97] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0
|
||||
[98] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0
|
||||
[99] call mul8u
|
||||
[100] (word) mul8u::return#3 ← (word) mul8u::res#2
|
||||
[125] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 )
|
||||
[126] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0
|
||||
[127] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0
|
||||
[128] call mul8u
|
||||
[129] (word) mul8u::return#3 ← (word) mul8u::res#2
|
||||
to:initSquareTables::@10
|
||||
initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8
|
||||
[101] (word~) initSquareTables::$14 ← (word) mul8u::return#3
|
||||
[102] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1
|
||||
[103] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14
|
||||
[104] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2
|
||||
[105] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5
|
||||
[130] (word~) initSquareTables::$14 ← (word) mul8u::return#3
|
||||
[131] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1
|
||||
[132] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14
|
||||
[133] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2
|
||||
[134] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5
|
||||
to:initSquareTables::@return
|
||||
initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10
|
||||
[106] return
|
||||
[135] return
|
||||
to:@return
|
||||
initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5
|
||||
[107] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2
|
||||
[136] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2
|
||||
to:initSquareTables::@8
|
||||
initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1
|
||||
[108] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2
|
||||
[137] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2
|
||||
to:initSquareTables::@4
|
||||
mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8
|
||||
[109] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 )
|
||||
[109] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 )
|
||||
[138] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 )
|
||||
[138] (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
|
||||
[110] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 )
|
||||
[110] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 )
|
||||
[110] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 )
|
||||
[111] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
|
||||
[139] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 )
|
||||
[139] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 )
|
||||
[139] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 )
|
||||
[140] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
|
||||
to:mul8u::@return
|
||||
mul8u::@return: scope:[mul8u] from mul8u::@1
|
||||
[112] return
|
||||
[141] return
|
||||
to:@return
|
||||
mul8u::@2: scope:[mul8u] from mul8u::@1
|
||||
[113] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1
|
||||
[114] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3
|
||||
[142] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1
|
||||
[143] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3
|
||||
to:mul8u::@4
|
||||
mul8u::@4: scope:[mul8u] from mul8u::@2
|
||||
[115] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
|
||||
[144] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
|
||||
to:mul8u::@3
|
||||
mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4
|
||||
[116] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
|
||||
[117] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1
|
||||
[118] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1
|
||||
[145] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
|
||||
[146] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1
|
||||
[147] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1
|
||||
to:mul8u::@1
|
||||
setupRasterIrq: scope:[setupRasterIrq] from main::@2
|
||||
setupRasterIrq: scope:[setupRasterIrq] from main::@3
|
||||
asm { sei }
|
||||
[120] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
[121] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
|
||||
[122] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
|
||||
[149] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
[150] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
|
||||
[151] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
|
||||
to:setupRasterIrq::@1
|
||||
setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq
|
||||
[123] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f
|
||||
[152] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f
|
||||
to:setupRasterIrq::@2
|
||||
setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1
|
||||
[124] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0
|
||||
[125] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
|
||||
[126] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0
|
||||
[153] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0
|
||||
[154] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
|
||||
[155] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0
|
||||
asm { cli }
|
||||
to:setupRasterIrq::@return
|
||||
setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2
|
||||
[128] return
|
||||
[157] return
|
||||
to:@return
|
||||
irqBottom: scope:[irqBottom] from
|
||||
[129] phi()
|
||||
[158] phi()
|
||||
to:irqBottom::@1
|
||||
irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1
|
||||
[130] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 )
|
||||
[131] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2
|
||||
[132] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1
|
||||
[159] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 )
|
||||
[160] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2
|
||||
[161] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1
|
||||
to:irqBottom::@2
|
||||
irqBottom::@2: scope:[irqBottom] from irqBottom::@1
|
||||
[133] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0
|
||||
[134] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
|
||||
[135] call processChars
|
||||
[162] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0
|
||||
[163] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
|
||||
[164] call processChars
|
||||
to:irqBottom::@3
|
||||
irqBottom::@3: scope:[irqBottom] from irqBottom::@2
|
||||
[136] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0
|
||||
[137] *((const byte*) BGCOL#0) ← (const byte) BLUE#0
|
||||
[138] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0
|
||||
[139] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop()
|
||||
[140] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
|
||||
[165] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0
|
||||
[166] *((const byte*) BGCOL#0) ← (const byte) BLUE#0
|
||||
[167] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0
|
||||
[168] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop()
|
||||
[169] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
|
||||
to:irqBottom::@return
|
||||
irqBottom::@return: scope:[irqBottom] from irqBottom::@3
|
||||
[141] return
|
||||
[170] return
|
||||
to:@return
|
||||
processChars: scope:[processChars] from irqBottom::@2
|
||||
[142] phi()
|
||||
[171] phi()
|
||||
to:processChars::@1
|
||||
processChars::@1: scope:[processChars] from processChars processChars::@2
|
||||
[143] (byte) processChars::i#2 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 )
|
||||
[144] (byte~) processChars::$14 ← (byte) processChars::i#2 << (byte) 2
|
||||
[145] if(*((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$14)==(const word) NOT_FOUND#0) goto processChars::@2
|
||||
to:processChars::@5
|
||||
processChars::@5: scope:[processChars] from processChars::@1
|
||||
[146] (byte~) processChars::$15 ← (byte) processChars::i#2 << (byte) 2
|
||||
[147] (byte) processChars::processing_x#0 ← *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$15)
|
||||
[148] (byte) processChars::processing_y#0 ← *((byte*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y + (byte~) processChars::$15)
|
||||
[149] (word~) processChars::$3 ← (word)(byte) processChars::processing_y#0
|
||||
[150] (word) processChars::$22 ← (word~) processChars::$3 << (byte) 2
|
||||
[151] (word) processChars::$23 ← (word) processChars::$22 + (word~) processChars::$3
|
||||
[152] (word~) processChars::$4 ← (word) processChars::$23 << (byte) 3
|
||||
[153] (byte*~) processChars::$5 ← (const byte*) COLS#0 + (word~) processChars::$4
|
||||
[154] *((byte*~) processChars::$5 + (byte) processChars::processing_x#0) ← (const byte) WHITE#0
|
||||
[155] (word~) processChars::$7 ← (word)(byte) processChars::processing_y#0
|
||||
[156] (word) processChars::$25 ← (word~) processChars::$7 << (byte) 2
|
||||
[157] (word) processChars::$26 ← (word) processChars::$25 + (word~) processChars::$7
|
||||
[158] (word~) processChars::$8 ← (word) processChars::$26 << (byte) 3
|
||||
[159] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (word~) processChars::$8
|
||||
[160] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)==(byte) ' ') goto processChars::@3
|
||||
[172] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 )
|
||||
[173] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 3
|
||||
[174] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$18
|
||||
[175] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)
|
||||
[176] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2
|
||||
to:processChars::@8
|
||||
processChars::@8: scope:[processChars] from processChars::@1
|
||||
[177] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3
|
||||
to:processChars::@9
|
||||
processChars::@9: scope:[processChars] from processChars::@8
|
||||
[178] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' '
|
||||
[179] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0
|
||||
[180] *((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)
|
||||
[181] *((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::@8 processChars::@9
|
||||
[182] (byte~) processChars::$9 ← > *((word*)(struct ProcessingSprite*) processChars::processing#0)
|
||||
[183] if((byte) 0!=(byte~) processChars::$9) goto processChars::@4
|
||||
to:processChars::@6
|
||||
processChars::@6: scope:[processChars] from processChars::@5
|
||||
[161] if(*((byte*~) processChars::$9 + (byte) processChars::processing_x#0)>(byte) ' ') goto processChars::@4
|
||||
processChars::@6: scope:[processChars] from processChars::@3
|
||||
[184] (byte~) processChars::$10 ← (byte) $ff ^ (byte) processChars::bitmask#0
|
||||
[185] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$10
|
||||
to:processChars::@5
|
||||
processChars::@5: scope:[processChars] from processChars::@4 processChars::@6
|
||||
[186] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1
|
||||
[187] (byte~) processChars::$12 ← (byte)*((word*)(struct ProcessingSprite*) processChars::processing#0)
|
||||
[188] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$13) ← (byte~) processChars::$12
|
||||
[189] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$13) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)
|
||||
[190] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← -- *((word*)(struct ProcessingSprite*) processChars::processing#0)
|
||||
[191] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)!=(byte) 0) goto processChars::@2
|
||||
to:processChars::@7
|
||||
processChars::@7: scope:[processChars] from processChars::@6
|
||||
[162] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← ++ *((byte*~) processChars::$9 + (byte) processChars::processing_x#0)
|
||||
processChars::@7: scope:[processChars] from processChars::@5
|
||||
[192] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0
|
||||
[193] (byte~) processChars::$16 ← (byte) $ff ^ (byte) processChars::bitmask#0
|
||||
[194] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$16
|
||||
to:processChars::@2
|
||||
processChars::@2: scope:[processChars] from processChars::@1 processChars::@3 processChars::@4 processChars::@7
|
||||
[163] (byte) processChars::i#1 ← ++ (byte) processChars::i#2
|
||||
[164] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1
|
||||
processChars::@2: scope:[processChars] from processChars::@1 processChars::@5 processChars::@7
|
||||
[195] (byte) processChars::i#1 ← ++ (byte) processChars::i#10
|
||||
[196] if((byte) processChars::i#1!=(byte) 1) goto processChars::@1
|
||||
to:processChars::@return
|
||||
processChars::@return: scope:[processChars] from processChars::@2
|
||||
[165] return
|
||||
[197] return
|
||||
to:@return
|
||||
processChars::@4: scope:[processChars] from processChars::@6
|
||||
[166] *((byte*~) processChars::$9 + (byte) processChars::processing_x#0) ← -- *((byte*~) processChars::$9 + (byte) processChars::processing_x#0)
|
||||
to:processChars::@2
|
||||
processChars::@3: scope:[processChars] from processChars::@5
|
||||
[167] (byte~) processChars::$16 ← (byte) processChars::i#2 << (byte) 2
|
||||
[168] *((word*)(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST + (byte~) processChars::$16) ← (const word) NOT_FOUND#0
|
||||
to:processChars::@2
|
||||
processChars::@4: scope:[processChars] from processChars::@3
|
||||
[198] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0
|
||||
to:processChars::@5
|
||||
irqTop: scope:[irqTop] from
|
||||
[169] phi()
|
||||
[199] phi()
|
||||
to:irqTop::@1
|
||||
irqTop::@1: scope:[irqTop] from irqTop irqTop::@1
|
||||
[170] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 )
|
||||
[171] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2
|
||||
[172] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1
|
||||
[200] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 )
|
||||
[201] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2
|
||||
[202] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1
|
||||
to:irqTop::@2
|
||||
irqTop::@2: scope:[irqTop] from irqTop::@1
|
||||
[173] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0
|
||||
[174] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
|
||||
[203] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0
|
||||
[204] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
|
||||
to:irqTop::@3
|
||||
irqTop::@3: scope:[irqTop] from irqTop::@2 irqTop::@3
|
||||
[175] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 )
|
||||
[176] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2
|
||||
[177] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3
|
||||
[205] (byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) 0 irqTop::@3/(byte) irqTop::i1#1 )
|
||||
[206] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2
|
||||
[207] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@3
|
||||
to:irqTop::@4
|
||||
irqTop::@4: scope:[irqTop] from irqTop::@3
|
||||
[178] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0
|
||||
[179] *((const byte*) BGCOL#0) ← (const byte) BLUE#0
|
||||
[180] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0
|
||||
[181] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom()
|
||||
[182] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
|
||||
[208] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0
|
||||
[209] *((const byte*) BGCOL#0) ← (const byte) BLUE#0
|
||||
[210] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0
|
||||
[211] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom()
|
||||
[212] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
|
||||
to:irqTop::@return
|
||||
irqTop::@return: scope:[irqTop] from irqTop::@4
|
||||
[183] return
|
||||
[213] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -11,8 +11,6 @@
|
||||
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = (byte*) 56333
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte) $7f
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = (byte*) 55296
|
||||
(void()**) HARDWARE_IRQ
|
||||
(const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = (void()**) 65534
|
||||
(byte*) IRQ_ENABLE
|
||||
@ -26,11 +24,14 @@
|
||||
(word) NOT_FOUND
|
||||
(const word) NOT_FOUND#0 NOT_FOUND = (word) $ffff
|
||||
(byte) NUM_PROCESSING
|
||||
(const byte) NUM_PROCESSING#0 NUM_PROCESSING = (byte) $10
|
||||
(const byte) OFFSET_STRUCT_PROCESSINGCHAR_DIST OFFSET_STRUCT_PROCESSINGCHAR_DIST = (byte) 2
|
||||
(const byte) OFFSET_STRUCT_PROCESSINGCHAR_Y OFFSET_STRUCT_PROCESSINGCHAR_Y = (byte) 1
|
||||
(struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING
|
||||
(const struct ProcessingChar[NUM_PROCESSING#0]) PROCESSING#0 PROCESSING = { fill( NUM_PROCESSING#0, 0) }
|
||||
(const byte) NUM_PROCESSING#0 NUM_PROCESSING = (byte) 1
|
||||
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 3
|
||||
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 4
|
||||
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) 6
|
||||
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) 5
|
||||
(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) }
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = (byte*) 1
|
||||
(byte*) PROCPORT_DDR
|
||||
@ -42,6 +43,12 @@
|
||||
(word) ProcessingChar::dist
|
||||
(byte) ProcessingChar::x
|
||||
(byte) ProcessingChar::y
|
||||
(byte) ProcessingSprite::id
|
||||
(byte) ProcessingSprite::ptr
|
||||
(byte*) ProcessingSprite::screenPtr
|
||||
(byte) ProcessingSprite::status
|
||||
(word) ProcessingSprite::x
|
||||
(byte) ProcessingSprite::y
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = (byte*) 53266
|
||||
(byte) RASTER_IRQ_MIDDLE
|
||||
@ -52,22 +59,41 @@
|
||||
(const byte*) SCREEN#0 SCREEN = (byte*) 1024
|
||||
(byte[$3e8]) SCREEN_COPY
|
||||
(const byte[$3e8]) SCREEN_COPY#0 SCREEN_COPY = { fill( $3e8, 0) }
|
||||
(const byte) SIZEOF_POINTER SIZEOF_POINTER = (byte) 2
|
||||
(byte*) SPRITES_ENABLE
|
||||
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = (byte*) 53269
|
||||
(byte*) SPRITES_XMSB
|
||||
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = (byte*) 53264
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = (byte*) 53248
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = (byte*) 53249
|
||||
(byte*) SPRITE_DATA
|
||||
(const byte*) SPRITE_DATA#0 SPRITE_DATA = (byte*) 8192
|
||||
(word) SPRITE_PTRS
|
||||
(const word) SPRITE_PTRS#0 SPRITE_PTRS = (word) $3f8
|
||||
(word[$28]) SQUARES_X
|
||||
(const word[$28]) SQUARES_X#0 SQUARES_X = { fill( $28, 0) }
|
||||
(word[$19]) SQUARES_Y
|
||||
(const word[$19]) SQUARES_Y#0 SQUARES_Y = { fill( $19, 0) }
|
||||
(byte) STATUS_FREE
|
||||
(const byte) STATUS_FREE#0 STATUS_FREE = (byte) 0
|
||||
(byte) STATUS_NEW
|
||||
(const byte) STATUS_NEW#0 STATUS_NEW = (byte) 1
|
||||
(byte) STATUS_PROCESSING
|
||||
(const byte) STATUS_PROCESSING#0 STATUS_PROCESSING = (byte) 2
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = (byte*) 53265
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte) 1
|
||||
(struct ProcessingChar()) getCharToProcess()
|
||||
(word~) getCharToProcess::$10 $10 zp ZP_WORD:25 4.0
|
||||
(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:25 4.0
|
||||
(word~) getCharToProcess::$10 $10 zp ZP_WORD:37 4.0
|
||||
(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:37 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:27 4.0
|
||||
(word) getCharToProcess::$16 $16 zp ZP_WORD:25 4.0
|
||||
(word~) getCharToProcess::$9 $9 zp ZP_WORD:25 3.0
|
||||
(word) getCharToProcess::$15 $15 zp ZP_WORD:39 4.0
|
||||
(word) getCharToProcess::$16 $16 zp ZP_WORD:37 4.0
|
||||
(word~) getCharToProcess::$9 $9 zp ZP_WORD:37 3.0
|
||||
(label) getCharToProcess::@1
|
||||
(label) getCharToProcess::@10
|
||||
(label) getCharToProcess::@11
|
||||
@ -83,50 +109,50 @@
|
||||
(label) getCharToProcess::@return
|
||||
(struct ProcessingChar) getCharToProcess::closest
|
||||
(word) getCharToProcess::closest_dist
|
||||
(word~) getCharToProcess::closest_dist#10 closest_dist zp ZP_WORD:11 202.0
|
||||
(word~) getCharToProcess::closest_dist#12 closest_dist zp ZP_WORD:11 2002.0
|
||||
(word) getCharToProcess::closest_dist#2 closest_dist zp ZP_WORD:11 684.1666666666667
|
||||
(word) getCharToProcess::closest_dist#8 closest_dist zp ZP_WORD:11 202.0
|
||||
(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
|
||||
(byte) getCharToProcess::closest_x
|
||||
(byte) getCharToProcess::closest_x#7 closest_x zp ZP_BYTE:13 388.0
|
||||
(byte) getCharToProcess::closest_x#9 closest_x zp ZP_BYTE:13 202.0
|
||||
(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_y
|
||||
(byte) getCharToProcess::closest_y#7 closest_y zp ZP_BYTE:14 388.0
|
||||
(byte) getCharToProcess::closest_y#9 closest_y zp ZP_BYTE:14 202.0
|
||||
(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
|
||||
(word) getCharToProcess::dist
|
||||
(word) getCharToProcess::dist#0 dist zp ZP_WORD:15 750.75
|
||||
(word) getCharToProcess::dist#0 dist zp ZP_WORD:19 750.75
|
||||
(struct ProcessingChar) getCharToProcess::return
|
||||
(word) getCharToProcess::return_dist
|
||||
(word) getCharToProcess::return_dist#0 return_dist zp ZP_WORD:15 7.333333333333333
|
||||
(word) getCharToProcess::return_dist#1 return_dist zp ZP_WORD:15 242.23529411764704
|
||||
(word~) getCharToProcess::return_dist#5 return_dist zp ZP_WORD:15 2002.0
|
||||
(word~) getCharToProcess::return_dist#6 return_dist zp ZP_WORD:15 2002.0
|
||||
(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
|
||||
(byte) getCharToProcess::return_x
|
||||
(byte) getCharToProcess::return_x#0 reg byte y 7.333333333333333
|
||||
(byte) getCharToProcess::return_x#1 return_x zp ZP_BYTE:13 242.23529411764704
|
||||
(byte~) getCharToProcess::return_x#7 return_x zp ZP_BYTE:13 1001.0
|
||||
(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_y
|
||||
(byte) getCharToProcess::return_y#0 reg byte x 7.333333333333333
|
||||
(byte) getCharToProcess::return_y#1 return_y zp ZP_BYTE:14 228.66666666666669
|
||||
(byte~) getCharToProcess::return_y#7 return_y zp ZP_BYTE:14 2002.0
|
||||
(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::screen_line
|
||||
(byte*) getCharToProcess::screen_line#1 screen_line zp ZP_WORD:7 50.5
|
||||
(byte*) getCharToProcess::screen_line#4 screen_line zp ZP_WORD:7 80.2
|
||||
(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::x
|
||||
(byte) getCharToProcess::x#1 x zp ZP_BYTE:10 1001.0
|
||||
(byte) getCharToProcess::x#2 x zp ZP_BYTE:10 455.0
|
||||
(byte) getCharToProcess::x#1 x zp ZP_BYTE:14 1001.0
|
||||
(byte) getCharToProcess::x#2 x zp ZP_BYTE:14 455.0
|
||||
(byte) getCharToProcess::y
|
||||
(byte) getCharToProcess::y#1 y zp ZP_BYTE:9 101.0
|
||||
(byte) getCharToProcess::y#7 y zp ZP_BYTE:9 137.75
|
||||
(byte) getCharToProcess::y#1 y zp ZP_BYTE:13 101.0
|
||||
(byte) getCharToProcess::y#7 y zp ZP_BYTE:13 137.75
|
||||
(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:19 11.0
|
||||
(word~) initSquareTables::$14 $14 zp ZP_WORD:23 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:19 11.0
|
||||
(word~) initSquareTables::$6 $6 zp ZP_WORD:23 11.0
|
||||
(label) initSquareTables::@1
|
||||
(label) initSquareTables::@10
|
||||
(label) initSquareTables::@2
|
||||
@ -139,13 +165,13 @@
|
||||
(label) initSquareTables::@9
|
||||
(label) initSquareTables::@return
|
||||
(byte) initSquareTables::x
|
||||
(byte) initSquareTables::x#1 x zp ZP_BYTE:17 16.5
|
||||
(byte) initSquareTables::x#2 x zp ZP_BYTE:17 5.5
|
||||
(byte) initSquareTables::x#1 x zp ZP_BYTE:21 16.5
|
||||
(byte) initSquareTables::x#2 x zp ZP_BYTE:21 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:18 16.5
|
||||
(byte) initSquareTables::y#2 y zp ZP_BYTE:18 5.5
|
||||
(byte) initSquareTables::y#1 y zp ZP_BYTE:22 16.5
|
||||
(byte) initSquareTables::y#2 y zp ZP_BYTE:22 5.5
|
||||
(byte) initSquareTables::y_dist
|
||||
(byte) initSquareTables::y_dist#0 reg byte a 22.0
|
||||
interrupt(HARDWARE_ALL)(void()) irqBottom()
|
||||
@ -169,8 +195,8 @@ 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::$14 reg byte x 14.666666666666666
|
||||
(struct ProcessingChar~) main::$7
|
||||
(struct ProcessingChar~) main::$10
|
||||
(byte~) main::$17 reg byte x 12.833333333333334
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
@ -179,22 +205,26 @@ interrupt(HARDWARE_ALL)(void()) irqTop()
|
||||
(label) main::@6
|
||||
(label) main::@7
|
||||
(label) main::@8
|
||||
(label) main::@9
|
||||
(struct ProcessingChar) main::center
|
||||
(word) main::center_dist
|
||||
(word) main::center_dist#0 center_dist zp ZP_WORD:15 8.25
|
||||
(word) main::center_dist#0 center_dist zp ZP_WORD:19 22.0
|
||||
(byte) main::center_x
|
||||
(byte) main::center_x#0 reg byte y 5.5
|
||||
(byte) main::center_y
|
||||
(byte) main::center_y#0 reg byte x 5.5
|
||||
(byte*) main::dst
|
||||
(byte*) main::dst#1 dst zp ZP_WORD:4 11.0
|
||||
(byte*) main::dst#2 dst zp ZP_WORD:4 11.0
|
||||
(byte*) main::dst#1 dst zp ZP_WORD:6 11.0
|
||||
(byte*) main::dst#2 dst zp ZP_WORD:6 11.0
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte y 16.5
|
||||
(byte) main::i#2 reg byte y 6.6000000000000005
|
||||
(byte) main::i#2 reg byte y 4.125
|
||||
(byte*) main::sp
|
||||
(byte*) main::sp#1 sp zp ZP_WORD:2 16.5
|
||||
(byte*) main::sp#2 sp zp ZP_WORD:2 16.5
|
||||
(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
|
||||
(byte*) main::src#1 src zp ZP_WORD:4 11.0
|
||||
(byte*) main::src#2 src zp ZP_WORD:4 16.5
|
||||
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
|
||||
(byte~) mul8u::$1 reg byte a 202.0
|
||||
(label) mul8u::@1
|
||||
@ -212,30 +242,23 @@ 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:21 24.0
|
||||
(word) mul8u::mb#1 mb zp ZP_WORD:21 202.0
|
||||
(word) mul8u::mb#2 mb zp ZP_WORD:21 43.57142857142858
|
||||
(word) mul8u::mb#0 mb zp ZP_WORD:25 24.0
|
||||
(word) mul8u::mb#1 mb zp ZP_WORD:25 202.0
|
||||
(word) mul8u::mb#2 mb zp ZP_WORD:25 43.57142857142858
|
||||
(word) mul8u::res
|
||||
(word) mul8u::res#1 res zp ZP_WORD:19 202.0
|
||||
(word) mul8u::res#2 res zp ZP_WORD:19 46.42857142857143
|
||||
(word) mul8u::res#6 res zp ZP_WORD:19 101.0
|
||||
(word) mul8u::res#1 res zp ZP_WORD:23 202.0
|
||||
(word) mul8u::res#2 res zp ZP_WORD:23 46.42857142857143
|
||||
(word) mul8u::res#6 res zp ZP_WORD:23 101.0
|
||||
(word) mul8u::return
|
||||
(word) mul8u::return#2 return zp ZP_WORD:19 22.0
|
||||
(word) mul8u::return#3 return zp ZP_WORD:19 22.0
|
||||
(word) mul8u::return#2 return zp ZP_WORD:23 22.0
|
||||
(word) mul8u::return#3 return zp ZP_WORD:23 22.0
|
||||
(void()) processChars()
|
||||
(byte~) processChars::$14 reg byte a 22.0
|
||||
(byte~) processChars::$15 reg byte y 16.5
|
||||
(byte~) processChars::$10 reg byte a 22.0
|
||||
(byte~) processChars::$12 reg byte a 22.0
|
||||
(byte~) processChars::$13 reg byte x 11.0
|
||||
(byte~) processChars::$16 reg byte a 22.0
|
||||
(word) processChars::$22 $22 zp ZP_WORD:33 22.0
|
||||
(word) processChars::$23 $23 zp ZP_WORD:31 22.0
|
||||
(word) processChars::$25 $25 zp ZP_WORD:37 22.0
|
||||
(word) processChars::$26 $26 zp ZP_WORD:35 22.0
|
||||
(word~) processChars::$3 $3 zp ZP_WORD:31 16.5
|
||||
(word~) processChars::$4 $4 zp ZP_WORD:31 22.0
|
||||
(byte*~) processChars::$5 $5 zp ZP_WORD:31 22.0
|
||||
(word~) processChars::$7 $7 zp ZP_WORD:35 16.5
|
||||
(word~) processChars::$8 $8 zp ZP_WORD:35 22.0
|
||||
(byte*~) processChars::$9 $9 zp ZP_WORD:35 25.666666666666668
|
||||
(byte~) processChars::$18 reg byte a 22.0
|
||||
(byte~) processChars::$9 reg byte a 22.0
|
||||
(label) processChars::@1
|
||||
(label) processChars::@2
|
||||
(label) processChars::@3
|
||||
@ -243,16 +266,16 @@ interrupt(HARDWARE_ALL)(void()) irqTop()
|
||||
(label) processChars::@5
|
||||
(label) processChars::@6
|
||||
(label) processChars::@7
|
||||
(label) processChars::@8
|
||||
(label) processChars::@9
|
||||
(label) processChars::@return
|
||||
(byte) processChars::bitmask
|
||||
(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:43 2.8947368421052633
|
||||
(byte) processChars::i
|
||||
(byte) processChars::i#1 reg byte x 16.5
|
||||
(byte) processChars::i#2 reg byte x 2.391304347826087
|
||||
(struct ProcessingChar) processChars::processing
|
||||
(byte*) processChars::processing_ptr
|
||||
(byte) processChars::processing_x
|
||||
(byte) processChars::processing_x#0 processing_x zp ZP_BYTE:29 5.866666666666666
|
||||
(byte) processChars::processing_y
|
||||
(byte) processChars::processing_y#0 processing_y zp ZP_BYTE:30 1.5714285714285714
|
||||
(byte) processChars::i#1 i zp ZP_BYTE:27 16.5
|
||||
(byte) processChars::i#10 i zp ZP_BYTE:27 1.8333333333333333
|
||||
(struct ProcessingSprite*) processChars::processing
|
||||
(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:41 0.5789473684210527
|
||||
(void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine)
|
||||
(label) setupRasterIrq::@1
|
||||
(label) setupRasterIrq::@2
|
||||
@ -261,8 +284,18 @@ 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)
|
||||
(byte~) startProcessing::$5 reg byte a 2002.0
|
||||
(byte~) startProcessing::$6 reg byte x 2.6666666666666665
|
||||
(word~) startProcessing::$0 $0 zp ZP_WORD:9 4.0
|
||||
(word~) startProcessing::$1 $1 zp ZP_WORD:9 4.0
|
||||
(word~) startProcessing::$11 $11 zp ZP_WORD:33 3.0
|
||||
(word~) startProcessing::$12 $12 zp ZP_WORD:33 4.0
|
||||
(byte*~) startProcessing::$13 $13 zp ZP_WORD:33 4.0
|
||||
(byte~) startProcessing::$21 reg byte a 2002.0
|
||||
(byte~) startProcessing::$22 reg byte x 2.333333333333333
|
||||
(word~) startProcessing::$3 $3 zp ZP_WORD:30 4.0
|
||||
(word) startProcessing::$30 $30 zp ZP_WORD:35 4.0
|
||||
(word) startProcessing::$31 $31 zp ZP_WORD:33 4.0
|
||||
(word~) startProcessing::$4 $4 zp ZP_WORD:30 4.0
|
||||
(byte~) startProcessing::$6 reg byte a 4.0
|
||||
(label) startProcessing::@1
|
||||
(label) startProcessing::@2
|
||||
(label) startProcessing::@3
|
||||
@ -270,70 +303,95 @@ interrupt(HARDWARE_ALL)(void()) irqTop()
|
||||
(label) startProcessing::@5
|
||||
(label) startProcessing::@6
|
||||
(label) startProcessing::@7
|
||||
(label) startProcessing::@8
|
||||
(label) startProcessing::@9
|
||||
(label) startProcessing::@return
|
||||
(struct ProcessingChar) startProcessing::center
|
||||
(word) startProcessing::center_dist
|
||||
(word) startProcessing::center_dist#0 center_dist zp ZP_WORD:15 0.8666666666666666
|
||||
(byte) startProcessing::center_x
|
||||
(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:23 0.8666666666666666
|
||||
(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:28 0.40625
|
||||
(byte) startProcessing::center_y
|
||||
(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:24 0.8666666666666666
|
||||
(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:29 0.5
|
||||
(byte) startProcessing::freeIdx
|
||||
(byte) startProcessing::freeIdx#2 reg byte x 653.0
|
||||
(byte) startProcessing::freeIdx#6 freeIdx zp ZP_BYTE:6 33.666666666666664
|
||||
(byte~) startProcessing::freeIdx#7 freeIdx zp ZP_BYTE:6 202.0
|
||||
(byte~) startProcessing::freeIdx#8 reg byte x 202.0
|
||||
(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:8 52.39999999999999
|
||||
(byte) startProcessing::freeIdx#6 reg byte x 33.666666666666664
|
||||
(byte~) startProcessing::freeIdx#7 reg byte x 202.0
|
||||
(byte~) startProcessing::freeIdx#8 freeIdx zp ZP_BYTE:8 202.0
|
||||
(byte) startProcessing::i
|
||||
(byte) startProcessing::i#1 reg byte x 1501.5
|
||||
(byte) startProcessing::i#2 reg byte x 1334.6666666666667
|
||||
(byte) startProcessing::i#1 i zp ZP_BYTE:8 1501.5
|
||||
(byte) startProcessing::i#2 i zp ZP_BYTE:8 1334.6666666666667
|
||||
(byte) startProcessing::i1
|
||||
(byte) startProcessing::i1#1 reg byte x 151.5
|
||||
(byte) startProcessing::i1#2 reg byte x 67.33333333333333
|
||||
(byte*) startProcessing::screenPtr
|
||||
(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:33 0.5714285714285714
|
||||
(byte*) startProcessing::spriteData
|
||||
(byte*) startProcessing::spriteData#0 spriteData zp ZP_WORD:9 4.0
|
||||
(byte*) startProcessing::spriteData#1 spriteData zp ZP_WORD:9 67.33333333333333
|
||||
(byte*) startProcessing::spriteData#2 spriteData zp ZP_WORD:9 152.5
|
||||
(byte) startProcessing::spriteIdx
|
||||
(byte) startProcessing::spritePtr
|
||||
(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:32 0.36363636363636365
|
||||
(word) startProcessing::spriteX
|
||||
(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:30 0.36363636363636365
|
||||
(byte) startProcessing::spriteY
|
||||
(byte) startProcessing::spriteY#0 reg byte y 0.4
|
||||
|
||||
reg byte y [ main::i#2 main::i#1 ]
|
||||
zp ZP_WORD:2 [ main::src#2 main::src#1 ]
|
||||
zp ZP_WORD:4 [ main::dst#2 main::dst#1 ]
|
||||
zp ZP_BYTE:6 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
|
||||
reg byte x [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
|
||||
zp ZP_WORD:7 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ]
|
||||
zp ZP_BYTE:9 [ getCharToProcess::y#7 getCharToProcess::y#1 ]
|
||||
zp ZP_BYTE:10 [ getCharToProcess::x#2 getCharToProcess::x#1 ]
|
||||
zp ZP_WORD:11 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ]
|
||||
zp ZP_BYTE:13 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
|
||||
zp ZP_BYTE:14 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
|
||||
zp ZP_WORD:15 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 startProcessing::center_dist#0 ]
|
||||
zp ZP_BYTE:17 [ initSquareTables::x#2 initSquareTables::x#1 ]
|
||||
zp ZP_WORD:2 [ main::sp#2 main::sp#1 ]
|
||||
zp ZP_WORD:4 [ main::src#2 main::src#1 ]
|
||||
zp ZP_WORD:6 [ main::dst#2 main::dst#1 ]
|
||||
reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
|
||||
zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
|
||||
zp ZP_WORD:9 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$1 startProcessing::$0 ]
|
||||
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_BYTE:21 [ initSquareTables::x#2 initSquareTables::x#1 ]
|
||||
reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ]
|
||||
zp ZP_BYTE:18 [ initSquareTables::y#2 initSquareTables::y#1 ]
|
||||
zp ZP_BYTE:22 [ 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:19 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ]
|
||||
zp ZP_WORD:21 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
|
||||
zp ZP_WORD:23 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ]
|
||||
zp ZP_WORD:25 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
|
||||
reg byte x [ irqBottom::i#2 irqBottom::i#1 ]
|
||||
reg byte x [ processChars::i#2 processChars::i#1 ]
|
||||
zp ZP_BYTE:27 [ processChars::i#10 processChars::i#1 ]
|
||||
reg byte x [ irqTop::i#2 irqTop::i#1 ]
|
||||
reg byte x [ irqTop::i1#2 irqTop::i1#1 ]
|
||||
reg byte x [ main::$14 ]
|
||||
reg byte x [ main::$17 ]
|
||||
reg byte y [ getCharToProcess::return_x#0 ]
|
||||
reg byte x [ getCharToProcess::return_y#0 ]
|
||||
reg byte y [ main::center_x#0 ]
|
||||
reg byte x [ main::center_y#0 ]
|
||||
zp ZP_BYTE:23 [ startProcessing::center_x#0 ]
|
||||
zp ZP_BYTE:24 [ startProcessing::center_y#0 ]
|
||||
reg byte a [ startProcessing::$5 ]
|
||||
reg byte x [ startProcessing::$6 ]
|
||||
zp ZP_BYTE:28 [ startProcessing::center_x#0 ]
|
||||
zp ZP_BYTE:29 [ startProcessing::center_y#0 ]
|
||||
reg byte a [ startProcessing::$21 ]
|
||||
zp ZP_WORD:30 [ startProcessing::$3 startProcessing::$4 startProcessing::spriteX#0 ]
|
||||
reg byte a [ startProcessing::$6 ]
|
||||
reg byte y [ startProcessing::spriteY#0 ]
|
||||
zp ZP_BYTE:32 [ startProcessing::spritePtr#0 ]
|
||||
zp ZP_WORD:33 [ startProcessing::$11 startProcessing::$31 startProcessing::$12 startProcessing::$13 startProcessing::screenPtr#0 ]
|
||||
zp ZP_WORD:35 [ startProcessing::$30 ]
|
||||
reg byte x [ startProcessing::$22 ]
|
||||
reg byte x [ getCharToProcess::$13 ]
|
||||
reg byte a [ getCharToProcess::$14 ]
|
||||
zp ZP_WORD:25 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ]
|
||||
zp ZP_WORD:27 [ getCharToProcess::$15 ]
|
||||
zp ZP_WORD:37 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ]
|
||||
zp ZP_WORD:39 [ getCharToProcess::$15 ]
|
||||
reg byte a [ initSquareTables::$16 ]
|
||||
reg byte a [ initSquareTables::$17 ]
|
||||
reg byte a [ mul8u::$1 ]
|
||||
reg byte a [ processChars::$14 ]
|
||||
reg byte y [ processChars::$15 ]
|
||||
zp ZP_BYTE:29 [ processChars::processing_x#0 ]
|
||||
zp ZP_BYTE:30 [ processChars::processing_y#0 ]
|
||||
zp ZP_WORD:31 [ processChars::$3 processChars::$23 processChars::$4 processChars::$5 ]
|
||||
zp ZP_WORD:33 [ processChars::$22 ]
|
||||
zp ZP_WORD:35 [ processChars::$7 processChars::$26 processChars::$8 processChars::$9 ]
|
||||
zp ZP_WORD:37 [ processChars::$25 ]
|
||||
reg byte a [ processChars::$18 ]
|
||||
zp ZP_WORD:41 [ processChars::processing#0 ]
|
||||
zp ZP_BYTE:43 [ processChars::bitmask#0 ]
|
||||
reg byte a [ processChars::$9 ]
|
||||
reg byte a [ processChars::$10 ]
|
||||
reg byte x [ processChars::$13 ]
|
||||
reg byte a [ processChars::$12 ]
|
||||
reg byte a [ processChars::$16 ]
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,43 @@
|
||||
CANNOT SYNTHESIZE vbuz1=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuz1_band_pbuz3_derefidx_vbuc2
|
||||
CANNOT SYNTHESIZE vbuxx=pbuz1_derefidx_vbuc1_band_pbuz2_derefidx_vbuc2
|
||||
CANNOT SYNTHESIZE _deref_pbuz1=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2
|
||||
CANNOT SYNTHESIZE pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2
|
||||
vbuz1=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2 < vbuaa=pbuz1_derefidx_vbuc1_band_pbuz2_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuc1 < vbuaa=pbuz1_derefidx_vbuc2_band_pbuz2_derefidx_vbuc1 < vbuaa=pbuz2_derefidx_vbuc1_band_pbuz1_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuyy_band_pbuz1_derefidx_vbuc2 < vbuaa=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuc2_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:18.0
|
||||
ldy #{c1}
|
||||
lda ({z2}),y
|
||||
ldy #{c2}
|
||||
and ({z3}),y
|
||||
sta {z1}
|
||||
pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuz1_band_pbuz3_derefidx_vbuc2 < pbuc1_derefidx_vbuxx=pbuz2_derefidx_vbuz1_band_pbuz3_derefidx_vbuc2 < pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuz2_band_pbuz3_derefidx_vbuc2 < pbuc1_derefidx_vbuxx=pbuz3_derefidx_vbuc2_band_pbuz1_derefidx_vbuz2 < pbuc1_derefidx_vbuxx=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuz3 < pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuc2_band_pbuz2_derefidx_vbuz3 < pbuc1_derefidx_vbuxx=pbuz2_derefidx_vbuz3_band_pbuz1_derefidx_vbuc2 < pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuz3_band_pbuz2_derefidx_vbuc2 < pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuz3_band_pbuz2_derefidx_vbuyy < pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuz2_band_pbuz3_derefidx_vbuyy < pbuc1_derefidx_vbuxx=pbuz3_derefidx_vbuyy_band_pbuz1_derefidx_vbuz2 < pbuc1_derefidx_vbuxx=pbuz2_derefidx_vbuyy_band_pbuz1_derefidx_vbuz3 < pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuz3 < pbuc1_derefidx_vbuxx=pbuz2_derefidx_vbuz3_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz2_derefidx_vbuz3_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuz2_band_vbuaa < vbuaa=pbuz1_derefidx_vbuyy_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A X Y cycles:24.0
|
||||
ldx {z1}
|
||||
ldy #{c2}
|
||||
lda ({z3}),y
|
||||
ldy {z1}
|
||||
and ({z2}),y
|
||||
sta {c1},x
|
||||
pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuz1_band_pbuz3_derefidx_vbuc2 < pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuc2 < pbuc1_derefidx_vbuyy=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuyy < pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuc2_band_vbuaa < pbuc1_derefidx_vbuyy=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:27.0
|
||||
ldy {z1}
|
||||
lda ({z2}),y
|
||||
sty $ff
|
||||
|
||||
ldy #{c2}
|
||||
and ({z3}),y
|
||||
ldy $ff
|
||||
sta {c1},y
|
||||
vbuxx=pbuz1_derefidx_vbuc1_band_pbuz2_derefidx_vbuc2 < vbuxx=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuc1 < vbuxx=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuyy < vbuxx=pbuz1_derefidx_vbuc2_band_vbuaa < vbuxx=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuxx=vbuaa_band_pbuz1_derefidx_vbuyy < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A X Y cycles:17.0
|
||||
ldy #{c1}
|
||||
lda ({z1}),y
|
||||
ldy #{c2}
|
||||
and ({z2}),y
|
||||
tax
|
||||
_deref_pbuz1=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2 < _deref_pbuz1=pbuz3_derefidx_vbuc2_band_pbuz2_derefidx_vbuc1 < _deref_pbuz1=pbuz2_derefidx_vbuc2_band_pbuz3_derefidx_vbuc1 < _deref_pbuz1=pbuz3_derefidx_vbuc1_band_pbuz2_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuc1_band_pbuz1_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuyy_band_pbuz1_derefidx_vbuc2 < vbuaa=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuc2_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:23.0
|
||||
ldy #{c1}
|
||||
lda ({z2}),y
|
||||
ldy #{c2}
|
||||
and ({z3}),y
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2 < pbuz1_derefidx_vbuaa=pbuz3_derefidx_vbuc2_band_pbuz2_derefidx_vbuc1 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuc2_band_pbuz3_derefidx_vbuc1 < pbuz1_derefidx_vbuaa=pbuz3_derefidx_vbuc1_band_pbuz2_derefidx_vbuc2 < pbuz1_derefidx_vbuaa=pbuz3_derefidx_vbuyy_band_pbuz2_derefidx_vbuc2 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy_band_pbuz3_derefidx_vbuc2 < pbuz1_derefidx_vbuaa=pbuz3_derefidx_vbuc2_band_pbuz2_derefidx_vbuyy < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuc2_band_pbuz3_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuc2_band_pbuz2_derefidx_vbuyy < vbuaa=pbuz2_derefidx_vbuyy_band_pbuz1_derefidx_vbuc2 < vbuaa=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuc2_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:27.0
|
||||
ldy #{c1}
|
||||
sta $ff
|
||||
lda ({z2}),y
|
||||
ldy #{c2}
|
||||
and ({z3}),y
|
||||
ldy $ff
|
||||
sta ({z1}),y
|
||||
|
Loading…
Reference in New Issue
Block a user