mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-12-28 16:31:36 +00:00
Added a lot of optimizing fragments using illegal opcodes (Thanks Travis Fisher!)
Added synth rule for vubc's.Updated tests.
This commit is contained in:
parent
0993be3f01
commit
667cbde56f
1
src/main/fragment/_deref_pbuc1=vbuaa_band_vbuxx.asm
Normal file
1
src/main/fragment/_deref_pbuc1=vbuaa_band_vbuxx.asm
Normal file
@ -0,0 +1 @@
|
||||
sax {c1}
|
@ -0,0 +1,4 @@
|
||||
lda {c2},y
|
||||
sta {c1},x
|
||||
lda {c2}+1,y
|
||||
sta {c1}+1,x
|
@ -0,0 +1,4 @@
|
||||
lda {c2},x
|
||||
sta {c1},y
|
||||
lda {c2}+1,x
|
||||
sta {c1}+1,y
|
0
src/main/fragment/vbuaa=_byte_vboaa.asm
Normal file
0
src/main/fragment/vbuaa=_byte_vboaa.asm
Normal file
3
src/main/fragment/vbuaa=_neg_vbuxx.asm
Normal file
3
src/main/fragment/vbuaa=_neg_vbuxx.asm
Normal file
@ -0,0 +1,3 @@
|
||||
dex
|
||||
txa
|
||||
eor #$ff
|
3
src/main/fragment/vbuaa=_neg_vbuyy.asm
Normal file
3
src/main/fragment/vbuaa=_neg_vbuyy.asm
Normal file
@ -0,0 +1,3 @@
|
||||
dey
|
||||
tya
|
||||
eor #$ff
|
2
src/main/fragment/vbuaa=vbuxx_plus_1.asm
Normal file
2
src/main/fragment/vbuaa=vbuxx_plus_1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
inx
|
||||
txa
|
2
src/main/fragment/vbuaa=vbuyy_plus_1.asm
Normal file
2
src/main/fragment/vbuaa=vbuyy_plus_1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
iny
|
||||
tya
|
2
src/main/fragment/vbuaa_lt__deref_pbuc1_then_la1.asm
Normal file
2
src/main/fragment/vbuaa_lt__deref_pbuc1_then_la1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
cmp {c1}
|
||||
bcc {la1}
|
2
src/main/fragment/vbuaa_neq__deref_pbuc1_then_la1.asm
Normal file
2
src/main/fragment/vbuaa_neq__deref_pbuc1_then_la1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
cmp {c1}
|
||||
bne {la1}
|
3
src/main/fragment/vbuxx=_neg_vbuaa.asm
Normal file
3
src/main/fragment/vbuxx=_neg_vbuaa.asm
Normal file
@ -0,0 +1,3 @@
|
||||
eor #$ff
|
||||
tax
|
||||
inx
|
2
src/main/fragment/vbuxx=vbuaa_minus_vbuc1.asm
Normal file
2
src/main/fragment/vbuxx=vbuaa_minus_vbuc1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
tax
|
||||
axs #{c1}
|
2
src/main/fragment/vbuxx=vbuaa_plus_vbuc1.asm
Normal file
2
src/main/fragment/vbuxx=vbuaa_plus_vbuc1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
tax
|
||||
axs #-{c1}
|
3
src/main/fragment/vbuxx=vbuc1_minus_vbuaa.asm
Normal file
3
src/main/fragment/vbuxx=vbuc1_minus_vbuaa.asm
Normal file
@ -0,0 +1,3 @@
|
||||
eor #$ff
|
||||
tax
|
||||
axs #{c1}+1
|
1
src/main/fragment/vbuxx=vbuxx_band_vbuaa.asm
Normal file
1
src/main/fragment/vbuxx=vbuxx_band_vbuaa.asm
Normal file
@ -0,0 +1 @@
|
||||
axs #0
|
2
src/main/fragment/vbuxx=vbuxx_minus_vbuc1.asm
Normal file
2
src/main/fragment/vbuxx=vbuxx_minus_vbuc1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
txa
|
||||
axs #{c1}
|
2
src/main/fragment/vbuxx=vbuxx_plus_vbuc1.asm
Normal file
2
src/main/fragment/vbuxx=vbuxx_plus_vbuc1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
txa
|
||||
axs #-{c1}
|
2
src/main/fragment/vbuxx=vbuz1_minus_vbuc1.asm
Normal file
2
src/main/fragment/vbuxx=vbuz1_minus_vbuc1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
lax {z1}
|
||||
axs #{c1}
|
2
src/main/fragment/vbuxx=vbuz1_plus_vbuc1.asm
Normal file
2
src/main/fragment/vbuxx=vbuz1_plus_vbuc1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
lax {z1}
|
||||
axs #-{c1}
|
2
src/main/fragment/vbuxx_lt__deref_pbuc1_then_la1.asm
Normal file
2
src/main/fragment/vbuxx_lt__deref_pbuc1_then_la1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
cpx {c1}
|
||||
bcc {la1}
|
3
src/main/fragment/vbuxx_lt_vbuaa_then_la1.asm
Normal file
3
src/main/fragment/vbuxx_lt_vbuaa_then_la1.asm
Normal file
@ -0,0 +1,3 @@
|
||||
sta $ff
|
||||
cpx $ff
|
||||
bcc {la1}
|
2
src/main/fragment/vbuxx_neq__deref_pbuc1_then_la1.asm
Normal file
2
src/main/fragment/vbuxx_neq__deref_pbuc1_then_la1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
cpx {c1}
|
||||
bne {la1}
|
3
src/main/fragment/vbuyy=_neg_vbuaa.asm
Normal file
3
src/main/fragment/vbuyy=_neg_vbuaa.asm
Normal file
@ -0,0 +1,3 @@
|
||||
eor #$ff
|
||||
tay
|
||||
iny
|
2
src/main/fragment/vbuyy_lt__deref_pbuc1_then_la1.asm
Normal file
2
src/main/fragment/vbuyy_lt__deref_pbuc1_then_la1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
cpy {c1}
|
||||
bcc {la1}
|
3
src/main/fragment/vbuyy_lt_vbuaa_then_la1.asm
Normal file
3
src/main/fragment/vbuyy_lt_vbuaa_then_la1.asm
Normal file
@ -0,0 +1,3 @@
|
||||
sta $ff
|
||||
cpy $ff
|
||||
bcc {la1}
|
2
src/main/fragment/vbuyy_neq__deref_pbuc1_then_la1.asm
Normal file
2
src/main/fragment/vbuyy_neq__deref_pbuc1_then_la1.asm
Normal file
@ -0,0 +1,2 @@
|
||||
cpy {c1}
|
||||
bne {la1}
|
1
src/main/fragment/vbuz1=vbuaa_band_vbuxx.asm
Normal file
1
src/main/fragment/vbuz1=vbuaa_band_vbuxx.asm
Normal file
@ -0,0 +1 @@
|
||||
sax {z1}
|
@ -248,6 +248,8 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
String rvalYy = ".*=.*yy.*|.*_.*yy.*|...yy_(lt|gt|le|ge|eq|neq)_.*";
|
||||
String rvalZ1 = ".*=.*z1.*|.*_.*z1.*|...z1_(lt|gt|le|ge|eq|neq)_.*";
|
||||
String rvalZ2 = ".*=.*z2.*|.*_.*z2.*|...z2_(lt|gt|le|ge|eq|neq)_.*";
|
||||
String lvalC1 = ".*c1.*=.*";
|
||||
String lvalC2 = ".*c2.*=.*";
|
||||
String lvalDerefZ1 = ".*_deref_...z1=.*";
|
||||
String lvalDerefC1 = ".*_deref_...c1=.*";
|
||||
String lvalDerefIdxAa = ".*_derefidx_...aa=.*";
|
||||
@ -434,6 +436,25 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
// Rewrite _deref_pb.z1_ to _vb.aa_ (if other Z1)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)z1(.*z1.*)", rvalAa+"|"+rvalYy+"|"+ lvalDerefZ1, "ldy #0\n"+"lda ({z1}),y", "$1vb$2aa$3", null, null));
|
||||
|
||||
// Replace VB*C1 with AA (only one)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c1(.*)", lvalC1+"|"+rvalAa+"|"+twoC1, "lda #{c1}", "$1vb$2aa$3", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c1(.*)_then_(.*)", rvalAa+"|"+twoC1, "lda #{c1}", "$1vb$2aa$3_then_$4", null, mapC));
|
||||
// Replace VB*C1 with XX (only one)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c1(.*)", lvalC1+"|"+rvalXx+"|"+twoC1, "ldx #{c1}", "$1vb$2xx$3", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c1(.*)_then_(.*)", rvalXx+"|"+twoC1, "ldx #{c1}", "$1vb$2xx$3_then_$4", null, mapC));
|
||||
// Replace VB*C1 with XX (only one)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c1(.*)", lvalC1+"|"+rvalYy+"|"+twoC1, "ldy #{c1}", "$1vb$2yy$3", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c1(.*)_then_(.*)", rvalYy+"|"+twoC1, "ldy #{c1}", "$1vb$2yy$3_then_$4", null, mapC));
|
||||
// Replace VB*C2 with AA (only one)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c2(.*)", lvalC2+"|"+rvalAa+"|"+twoC2, "lda #{c2}", "$1vb$2aa$3", null, mapC3));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c2(.*)_then_(.*)", rvalAa+"|"+twoC2, "lda #{c2}", "$1vb$2aa$3_then_$4", null, mapC3));
|
||||
// Replace VB*C2 with XX (only one)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c2(.*)", lvalC2+"|"+rvalXx+"|"+twoC2, "ldx #{c2}", "$1vb$2xx$3", null, mapC3));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c2(.*)_then_(.*)", rvalXx+"|"+twoC2, "ldx #{c2}", "$1vb$2xx$3_then_$4", null, mapC3));
|
||||
// Replace VB*C2 with YY (only one)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c2(.*)", lvalC2+"|"+rvalYy+"|"+twoC2, "ldy #{c2}", "$1vb$2yy$3", null, mapC3));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c2(.*)_then_(.*)", rvalYy+"|"+twoC2, "ldy #{c2}", "$1vb$2yy$3_then_$4", null, mapC3));
|
||||
|
||||
// Rewrite *C1 to AA (if no other C1s)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*)", rvalAa+"|"+twoC1+"|"+lvalDerefC1, "lda {c1}", "$1vb$2aa$3", null, mapC));
|
||||
// Rewrite *C1 to AA (if other C1s)
|
||||
@ -452,7 +473,6 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*c1.*)", rvalYy+"|"+lvalDerefC1, "ldy {c1}", "$1vb$2yy$3", null, null));
|
||||
// Rewrite *C1 to YY (if other C1s)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*c1.*)_deref_pb(.)c1(.*)", rvalYy+"|"+lvalDerefC1, "ldy {c1}", "$1vb$2yy$3", null, null));
|
||||
|
||||
// Rewrite (Z1),y to AA
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)pb(.)z1_derefidx_vbuyy(.*)_then_(.*)", twoZ1+"|"+rvalAa, "lda ({z1}),y\n" , "$1vb$2aa$3_then_$4", null, mapZ));
|
||||
|
||||
|
@ -173,8 +173,8 @@ main: {
|
||||
//SEG17 [7] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuz1=_inc_vbuz1
|
||||
inc sub
|
||||
//SEG18 [8] if((byte) main::sub#1!=(const byte) SZ#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda sub
|
||||
cmp #SZ+1
|
||||
lda #SZ+1
|
||||
cmp sub
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG19 main::@return
|
||||
|
@ -300,8 +300,8 @@ main: {
|
||||
//SEG26 [10] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuz1=_inc_vbuz1
|
||||
inc sub
|
||||
//SEG27 [11] if((byte) main::sub#1!=(const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda sub
|
||||
cmp #ITEM_SIZE-1+1
|
||||
lda #ITEM_SIZE-1+1
|
||||
cmp sub
|
||||
bne b2_from_b2
|
||||
jmp b3
|
||||
//SEG28 main::@3
|
||||
@ -317,8 +317,8 @@ main: {
|
||||
//SEG30 [13] (byte) main::item#1 ← ++ (byte) main::item#4 -- vbuz1=_inc_vbuz1
|
||||
inc item
|
||||
//SEG31 [14] if((byte) main::item#1!=(const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda item
|
||||
cmp #ITEM_COUNT-1+1
|
||||
lda #ITEM_COUNT-1+1
|
||||
cmp item
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG32 main::@return
|
||||
|
@ -843,8 +843,8 @@ test: {
|
||||
//SEG81 test::@3
|
||||
b3:
|
||||
//SEG82 [31] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) RED#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #RED
|
||||
ldy i
|
||||
sta cols,y
|
||||
jmp breturn
|
||||
//SEG83 test::@return
|
||||
@ -854,8 +854,8 @@ test: {
|
||||
//SEG85 test::@1
|
||||
b1:
|
||||
//SEG86 [33] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #GREEN
|
||||
ldy i
|
||||
sta cols,y
|
||||
jmp breturn
|
||||
}
|
||||
|
@ -23,8 +23,8 @@ main: {
|
||||
jsr init_screen
|
||||
jsr init_plot_tables
|
||||
b2:
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b2
|
||||
inc BGCOL
|
||||
jsr plots
|
||||
@ -108,9 +108,8 @@ init_plot_tables: {
|
||||
sta yoffs+1
|
||||
tax
|
||||
b3:
|
||||
txa
|
||||
and #7
|
||||
sta _6
|
||||
lda #7
|
||||
sax _6
|
||||
lda yoffs
|
||||
ora _6
|
||||
sta plot_ylo,x
|
||||
|
@ -916,8 +916,8 @@ main: {
|
||||
//SEG20 main::@2
|
||||
b2:
|
||||
//SEG21 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b2
|
||||
jmp b3
|
||||
//SEG22 main::@3
|
||||
@ -1087,8 +1087,8 @@ init_plot_tables: {
|
||||
ldy x
|
||||
sta plot_xlo,y
|
||||
//SEG66 [39] *((const byte[$100]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy x
|
||||
lda #>BITMAP
|
||||
ldy x
|
||||
sta plot_xhi,y
|
||||
//SEG67 [40] *((const byte[$100]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2
|
||||
lda bits
|
||||
@ -1159,8 +1159,8 @@ init_plot_tables: {
|
||||
and y
|
||||
sta _10
|
||||
//SEG89 [54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda _10
|
||||
cmp #7
|
||||
lda #7
|
||||
cmp _10
|
||||
bne b4_from_b3
|
||||
jmp b7
|
||||
//SEG90 init_plot_tables::@7
|
||||
@ -1295,15 +1295,12 @@ Statement [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) pl
|
||||
Statement [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[$100]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::plotter#0 plot::$5 ] ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ]
|
||||
Statement [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:19 [ plots::i#2 ] ) always clobbers reg byte y
|
||||
Statement [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) $f8 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a
|
||||
Statement [39] *((const byte[$100]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
|
||||
Statement [39] *((const byte[$100]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a
|
||||
Statement [40] *((const byte[$100]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a
|
||||
Statement [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ]
|
||||
Statement [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a
|
||||
Statement [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ]
|
||||
Statement [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) $2000) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a
|
||||
Statement [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) $14 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y
|
||||
@ -1363,33 +1360,33 @@ Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [plots] best 8995 combination reg byte x [ plots::i#2 plots::i#1 ]
|
||||
Uplifting [init_plot_tables] best 8485 combination zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] zp ZP_BYTE:31 [ init_plot_tables::$7 ] zp ZP_BYTE:32 [ init_plot_tables::$8 ] zp ZP_BYTE:33 [ init_plot_tables::$9 ] zp ZP_BYTE:34 [ init_plot_tables::$10 ] zp ZP_BYTE:30 [ init_plot_tables::$6 ]
|
||||
Uplifting [init_plot_tables] best 8445 combination zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] zp ZP_BYTE:31 [ init_plot_tables::$7 ] zp ZP_BYTE:32 [ init_plot_tables::$8 ] zp ZP_BYTE:33 [ init_plot_tables::$9 ] zp ZP_BYTE:34 [ init_plot_tables::$10 ] zp ZP_BYTE:30 [ init_plot_tables::$6 ]
|
||||
Limited combination testing to 100 combinations of 138240 possible.
|
||||
Uplifting [init_screen] best 8485 combination zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [plot] best 8473 combination zp ZP_BYTE:13 [ plot::y#0 ] zp ZP_BYTE:12 [ plot::x#0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] zp ZP_BYTE:20 [ plot::$8 ] zp ZP_BYTE:23 [ plot::$9 ] zp ZP_WORD:24 [ plot::plotter_y#2 ] zp ZP_BYTE:28 [ plot::$5 ] zp ZP_WORD:26 [ plot::plotter#0 ] zp ZP_WORD:15 [ plot::plotter_x#1 ] zp ZP_WORD:21 [ plot::plotter_y#1 ] zp ZP_WORD:18 [ plot::plotter_x#2 ]
|
||||
Uplifting [init_screen] best 8445 combination zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [plot] best 8433 combination zp ZP_BYTE:13 [ plot::y#0 ] zp ZP_BYTE:12 [ plot::x#0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] zp ZP_BYTE:20 [ plot::$8 ] zp ZP_BYTE:23 [ plot::$9 ] zp ZP_WORD:24 [ plot::plotter_y#2 ] zp ZP_BYTE:28 [ plot::$5 ] zp ZP_WORD:26 [ plot::plotter#0 ] zp ZP_WORD:15 [ plot::plotter_x#1 ] zp ZP_WORD:21 [ plot::plotter_y#1 ] zp ZP_WORD:18 [ plot::plotter_x#2 ]
|
||||
Limited combination testing to 100 combinations of 9216 possible.
|
||||
Uplifting [main] best 8473 combination
|
||||
Uplifting [] best 8473 combination
|
||||
Uplifting [main] best 8433 combination
|
||||
Uplifting [] best 8433 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:31 [ init_plot_tables::$7 ]
|
||||
Uplifting [init_plot_tables] best 8413 combination reg byte a [ init_plot_tables::$7 ]
|
||||
Uplifting [init_plot_tables] best 8373 combination reg byte a [ init_plot_tables::$7 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:32 [ init_plot_tables::$8 ]
|
||||
Uplifting [init_plot_tables] best 8353 combination reg byte a [ init_plot_tables::$8 ]
|
||||
Uplifting [init_plot_tables] best 8313 combination reg byte a [ init_plot_tables::$8 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:33 [ init_plot_tables::$9 ]
|
||||
Uplifting [init_plot_tables] best 8293 combination reg byte a [ init_plot_tables::$9 ]
|
||||
Uplifting [init_plot_tables] best 8253 combination reg byte a [ init_plot_tables::$9 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:34 [ init_plot_tables::$10 ]
|
||||
Uplifting [init_plot_tables] best 8233 combination reg byte a [ init_plot_tables::$10 ]
|
||||
Uplifting [init_plot_tables] best 8213 combination reg byte a [ init_plot_tables::$10 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ plot::y#0 ]
|
||||
Uplifting [plot] best 8233 combination zp ZP_BYTE:13 [ plot::y#0 ]
|
||||
Uplifting [plot] best 8213 combination zp ZP_BYTE:13 [ plot::y#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:30 [ init_plot_tables::$6 ]
|
||||
Uplifting [init_plot_tables] best 8233 combination zp ZP_BYTE:30 [ init_plot_tables::$6 ]
|
||||
Uplifting [init_plot_tables] best 8213 combination zp ZP_BYTE:30 [ init_plot_tables::$6 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:12 [ plot::x#0 ]
|
||||
Uplifting [plot] best 8233 combination zp ZP_BYTE:12 [ plot::x#0 ]
|
||||
Uplifting [plot] best 8213 combination zp ZP_BYTE:12 [ plot::x#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:20 [ plot::$8 ]
|
||||
Uplifting [plot] best 8227 combination reg byte a [ plot::$8 ]
|
||||
Uplifting [plot] best 8207 combination reg byte a [ plot::$8 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:23 [ plot::$9 ]
|
||||
Uplifting [plot] best 8221 combination reg byte a [ plot::$9 ]
|
||||
Uplifting [plot] best 8201 combination reg byte a [ plot::$9 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:28 [ plot::$5 ]
|
||||
Uplifting [plot] best 8215 combination reg byte a [ plot::$5 ]
|
||||
Uplifting [plot] best 8195 combination reg byte a [ plot::$5 ]
|
||||
Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ plot::plotter_x#1 ] ] with [ zp ZP_WORD:18 [ plot::plotter_x#2 ] ] - score: 1
|
||||
Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ plot::plotter_y#1 ] ] with [ zp ZP_WORD:24 [ plot::plotter_y#2 ] ] - score: 1
|
||||
Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp ZP_WORD:26 [ plot::plotter#0 ] ] - score: 1
|
||||
@ -1465,8 +1462,8 @@ main: {
|
||||
//SEG20 main::@2
|
||||
b2:
|
||||
//SEG21 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b2
|
||||
jmp b3
|
||||
//SEG22 main::@3
|
||||
@ -1639,9 +1636,8 @@ init_plot_tables: {
|
||||
//SEG81 init_plot_tables::@3
|
||||
b3:
|
||||
//SEG82 [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
txa
|
||||
and #7
|
||||
sta _6
|
||||
lda #7
|
||||
sax _6
|
||||
//SEG83 [48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1
|
||||
lda yoffs
|
||||
//SEG84 [49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa
|
||||
@ -2000,7 +1996,7 @@ reg byte a [ init_plot_tables::$10 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 6201
|
||||
Score: 6181
|
||||
|
||||
//SEG0 File Comments
|
||||
//SEG1 Basic Upstart
|
||||
@ -2049,8 +2045,8 @@ main: {
|
||||
//SEG20 main::@2
|
||||
b2:
|
||||
//SEG21 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b2
|
||||
//SEG22 main::@3
|
||||
//SEG23 [12] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1
|
||||
@ -2195,9 +2191,8 @@ init_plot_tables: {
|
||||
//SEG81 init_plot_tables::@3
|
||||
b3:
|
||||
//SEG82 [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
txa
|
||||
and #7
|
||||
sta _6
|
||||
lda #7
|
||||
sax _6
|
||||
//SEG83 [48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1
|
||||
lda yoffs
|
||||
//SEG84 [49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa
|
||||
|
@ -168,8 +168,8 @@ main: {
|
||||
//SEG18 [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1
|
||||
inc c
|
||||
//SEG19 [9] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) $1b) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda c
|
||||
cmp #$1b
|
||||
lda #$1b
|
||||
cmp c
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG20 main::@return
|
||||
|
@ -316,8 +316,8 @@ main: {
|
||||
//SEG24 main::@4
|
||||
b4:
|
||||
//SEG25 [13] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #' '
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
//SEG26 main::@3
|
||||
@ -325,8 +325,8 @@ main: {
|
||||
//SEG27 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG28 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$65
|
||||
lda #$65
|
||||
cmp i
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG29 main::@return
|
||||
@ -336,8 +336,8 @@ main: {
|
||||
//SEG31 main::@2
|
||||
b2:
|
||||
//SEG32 [17] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #'*'
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
}
|
||||
@ -375,20 +375,17 @@ isSet: {
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [6] (byte~) main::$0 ← (byte) main::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
||||
Statement [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 [ main::i#2 isSet::b#0 ] ( main:2 [ main::i#2 isSet::b#0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
||||
Statement [13] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) ' ' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [17] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte/signed byte/word/signed word/dword/signed dword) 8 [ isSet::b#0 isSet::$0 ] ( main:2::isSet:9 [ main::i#2 isSet::b#0 isSet::$0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BOOL:4 [ isSet::b#0 ]
|
||||
Statement [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 [ isSet::b#0 isSet::$1 ] ( main:2::isSet:9 [ main::i#2 isSet::b#0 isSet::$1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BOOL:4 [ isSet::b#0 ]
|
||||
Statement [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 [ isSet::return#1 ] ( main:2::isSet:9 [ main::i#2 isSet::return#1 ] ) always clobbers reg byte a
|
||||
Statement [6] (byte~) main::$0 ← (byte) main::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a
|
||||
Statement [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 [ main::i#2 isSet::b#0 ] ( main:2 [ main::i#2 isSet::b#0 ] ) always clobbers reg byte a
|
||||
Statement [13] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) ' ' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [17] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte/signed byte/word/signed word/dword/signed dword) 8 [ isSet::b#0 isSet::$0 ] ( main:2::isSet:9 [ main::i#2 isSet::b#0 isSet::$0 ] ) always clobbers reg byte a
|
||||
Statement [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 [ isSet::b#0 isSet::$1 ] ( main:2::isSet:9 [ main::i#2 isSet::b#0 isSet::$1 ] ) always clobbers reg byte a
|
||||
Statement [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 [ isSet::return#1 ] ( main:2::isSet:9 [ main::i#2 isSet::return#1 ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
|
||||
|
@ -13,9 +13,9 @@ bool_complex: {
|
||||
.label screen = $478
|
||||
ldy #0
|
||||
b1:
|
||||
ldx #1
|
||||
tya
|
||||
and #1
|
||||
tax
|
||||
axs #0
|
||||
tya
|
||||
and #1
|
||||
cpy #$a
|
||||
|
@ -663,8 +663,8 @@ bool_complex: {
|
||||
//SEG40 bool_complex::@2
|
||||
b2:
|
||||
//SEG41 [20] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #'*'
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
//SEG42 bool_complex::@3
|
||||
@ -672,8 +672,8 @@ bool_complex: {
|
||||
//SEG43 [21] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG44 [22] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $15) goto bool_complex::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$15
|
||||
lda #$15
|
||||
cmp i
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG45 bool_complex::@return
|
||||
@ -683,8 +683,8 @@ bool_complex: {
|
||||
//SEG47 bool_complex::@4
|
||||
b4:
|
||||
//SEG48 [24] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #' '
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
//SEG49 bool_complex::@8
|
||||
@ -731,8 +731,8 @@ bool_not: {
|
||||
//SEG61 bool_not::@2
|
||||
b2:
|
||||
//SEG62 [31] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #'*'
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
//SEG63 bool_not::@3
|
||||
@ -740,8 +740,8 @@ bool_not: {
|
||||
//SEG64 [32] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG65 [33] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $15) goto bool_not::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$15
|
||||
lda #$15
|
||||
cmp i
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG66 bool_not::@return
|
||||
@ -751,8 +751,8 @@ bool_not: {
|
||||
//SEG68 bool_not::@4
|
||||
b4:
|
||||
//SEG69 [35] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #' '
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
}
|
||||
@ -792,8 +792,8 @@ bool_or: {
|
||||
//SEG80 bool_or::@4
|
||||
b4:
|
||||
//SEG81 [41] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #' '
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
//SEG82 bool_or::@3
|
||||
@ -801,8 +801,8 @@ bool_or: {
|
||||
//SEG83 [42] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG84 [43] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $15) goto bool_or::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$15
|
||||
lda #$15
|
||||
cmp i
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG85 bool_or::@return
|
||||
@ -812,8 +812,8 @@ bool_or: {
|
||||
//SEG87 bool_or::@2
|
||||
b2:
|
||||
//SEG88 [45] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #'*'
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
}
|
||||
@ -846,8 +846,8 @@ bool_and: {
|
||||
//SEG97 bool_and::@4
|
||||
b4:
|
||||
//SEG98 [50] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #' '
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
//SEG99 bool_and::@3
|
||||
@ -855,8 +855,8 @@ bool_and: {
|
||||
//SEG100 [51] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG101 [52] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $15) goto bool_and::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$15
|
||||
lda #$15
|
||||
cmp i
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG102 bool_and::@return
|
||||
@ -873,29 +873,37 @@ bool_and: {
|
||||
//SEG106 bool_and::@2
|
||||
b2:
|
||||
//SEG107 [55] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #'*'
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [15] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ bool_complex::i#2 bool_complex::$1 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::$1 ] ) always clobbers reg byte a
|
||||
Statement [20] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ bool_complex::i#2 bool_complex::i#1 ]
|
||||
Statement [24] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a
|
||||
Statement [31] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ bool_not::i#2 bool_not::i#1 ]
|
||||
Statement [35] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a
|
||||
Statement [41] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ bool_or::i#2 bool_or::i#1 ]
|
||||
Statement [45] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a
|
||||
Statement [50] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ bool_and::i#2 bool_and::i#1 ]
|
||||
Statement [55] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a
|
||||
Statement [15] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ bool_complex::i#2 bool_complex::$1 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::$1 ] ) always clobbers reg byte a
|
||||
Statement [16] (byte~) bool_complex::$5 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ bool_complex::i#2 bool_complex::$1 bool_complex::$5 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::$1 bool_complex::$5 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ bool_complex::$1 ]
|
||||
Statement [20] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a
|
||||
Statement [24] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a
|
||||
Statement [28] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ bool_not::i#2 bool_not::$1 ] ( main:2::bool_not:9 [ bool_not::i#2 bool_not::$1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ bool_not::i#2 bool_not::i#1 ]
|
||||
Statement [31] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a
|
||||
Statement [35] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a
|
||||
Statement [38] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ bool_or::i#2 bool_or::$1 ] ( main:2::bool_or:7 [ bool_or::i#2 bool_or::$1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ bool_or::i#2 bool_or::i#1 ]
|
||||
Statement [41] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a
|
||||
Statement [45] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a
|
||||
Statement [48] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ bool_and::i#2 bool_and::$1 ] ( main:2::bool_and:5 [ bool_and::i#2 bool_and::$1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ bool_and::i#2 bool_and::i#1 ]
|
||||
Statement [50] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a
|
||||
Statement [55] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a
|
||||
Statement [15] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ bool_complex::i#2 bool_complex::$1 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::$1 ] ) always clobbers reg byte a
|
||||
@ -1014,9 +1022,9 @@ bool_complex: {
|
||||
//SEG32 bool_complex::@1
|
||||
b1:
|
||||
//SEG33 [15] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_band_vbuc1
|
||||
ldx #1
|
||||
tya
|
||||
and #1
|
||||
tax
|
||||
axs #0
|
||||
//SEG34 [16] (byte~) bool_complex::$5 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_band_vbuc1
|
||||
tya
|
||||
and #1
|
||||
@ -1430,9 +1438,9 @@ bool_complex: {
|
||||
//SEG32 bool_complex::@1
|
||||
b1:
|
||||
//SEG33 [15] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_band_vbuc1
|
||||
ldx #1
|
||||
tya
|
||||
and #1
|
||||
tax
|
||||
axs #0
|
||||
//SEG34 [16] (byte~) bool_complex::$5 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_band_vbuc1
|
||||
tya
|
||||
and #1
|
||||
|
@ -740,8 +740,8 @@ bool_complex: {
|
||||
//SEG41 bool_complex::@2
|
||||
b2:
|
||||
//SEG42 [21] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #'*'
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
//SEG43 bool_complex::@3
|
||||
@ -749,8 +749,8 @@ bool_complex: {
|
||||
//SEG44 [22] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG45 [23] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $15) goto bool_complex::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$15
|
||||
lda #$15
|
||||
cmp i
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG46 bool_complex::@return
|
||||
@ -760,8 +760,8 @@ bool_complex: {
|
||||
//SEG48 bool_complex::@4
|
||||
b4:
|
||||
//SEG49 [25] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #' '
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
//SEG50 bool_complex::@8
|
||||
@ -808,8 +808,8 @@ bool_not: {
|
||||
//SEG62 bool_not::@2
|
||||
b2:
|
||||
//SEG63 [32] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #'*'
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
//SEG64 bool_not::@3
|
||||
@ -817,8 +817,8 @@ bool_not: {
|
||||
//SEG65 [33] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG66 [34] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $15) goto bool_not::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$15
|
||||
lda #$15
|
||||
cmp i
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG67 bool_not::@return
|
||||
@ -828,8 +828,8 @@ bool_not: {
|
||||
//SEG69 bool_not::@4
|
||||
b4:
|
||||
//SEG70 [36] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #' '
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
}
|
||||
@ -869,8 +869,8 @@ bool_or: {
|
||||
//SEG81 bool_or::@4
|
||||
b4:
|
||||
//SEG82 [42] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #' '
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
//SEG83 bool_or::@3
|
||||
@ -878,8 +878,8 @@ bool_or: {
|
||||
//SEG84 [43] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG85 [44] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $15) goto bool_or::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$15
|
||||
lda #$15
|
||||
cmp i
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG86 bool_or::@return
|
||||
@ -889,8 +889,8 @@ bool_or: {
|
||||
//SEG88 bool_or::@2
|
||||
b2:
|
||||
//SEG89 [46] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #'*'
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
}
|
||||
@ -923,8 +923,8 @@ bool_and: {
|
||||
//SEG98 bool_and::@4
|
||||
b4:
|
||||
//SEG99 [51] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #' '
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
//SEG100 bool_and::@3
|
||||
@ -932,8 +932,8 @@ bool_and: {
|
||||
//SEG101 [52] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG102 [53] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $15) goto bool_and::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$15
|
||||
lda #$15
|
||||
cmp i
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG103 bool_and::@return
|
||||
@ -950,8 +950,8 @@ bool_and: {
|
||||
//SEG107 bool_and::@2
|
||||
b2:
|
||||
//SEG108 [56] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #'*'
|
||||
ldy i
|
||||
sta screen,y
|
||||
jmp b3
|
||||
}
|
||||
@ -969,17 +969,14 @@ Statement [20] if((bool) bool_complex::o2#0) goto bool_complex::@4 [ bool_comple
|
||||
Statement [21] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a
|
||||
Statement [25] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a
|
||||
Statement [26] if((bool) bool_complex::o2#0) goto bool_complex::@2 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ) always clobbers reg byte a
|
||||
Statement [29] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ bool_not::i#2 bool_not::$1 ] ( main:2::bool_not:9 [ bool_not::i#2 bool_not::$1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ bool_not::i#2 bool_not::i#1 ]
|
||||
Statement [32] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ bool_not::i#2 bool_not::i#1 ]
|
||||
Statement [36] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a
|
||||
Statement [39] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ bool_or::i#2 bool_or::$1 ] ( main:2::bool_or:7 [ bool_or::i#2 bool_or::$1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ bool_or::i#2 bool_or::i#1 ]
|
||||
Statement [42] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ bool_or::i#2 bool_or::i#1 ]
|
||||
Statement [46] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a
|
||||
Statement [49] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ bool_and::i#2 bool_and::$1 ] ( main:2::bool_and:5 [ bool_and::i#2 bool_and::$1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ bool_and::i#2 bool_and::i#1 ]
|
||||
Statement [51] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ bool_and::i#2 bool_and::i#1 ]
|
||||
Statement [56] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a
|
||||
Statement [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte/signed byte/word/signed word/dword/signed dword) $a [ bool_complex::i#2 bool_complex::o1#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 ] ) always clobbers reg byte a
|
||||
Statement [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ) always clobbers reg byte a
|
||||
|
@ -32,9 +32,7 @@ main: {
|
||||
inc cursor+1
|
||||
!:
|
||||
txa
|
||||
clc
|
||||
adc #yd
|
||||
tax
|
||||
axs #-yd
|
||||
cpx #xd
|
||||
bcc b2
|
||||
inc y
|
||||
@ -46,9 +44,7 @@ main: {
|
||||
inc cursor+1
|
||||
!:
|
||||
txa
|
||||
sec
|
||||
sbc #xd
|
||||
tax
|
||||
axs #xd
|
||||
b2:
|
||||
lda x
|
||||
cmp #x1+1
|
||||
|
@ -403,10 +403,9 @@ main: {
|
||||
inc cursor+1
|
||||
!:
|
||||
//SEG25 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #yd
|
||||
clc
|
||||
adc e
|
||||
sta e
|
||||
lax e
|
||||
axs #-yd
|
||||
stx e
|
||||
//SEG26 [10] if((const byte) main::xd#0>(byte) main::e#1) goto main::@2 -- vbuc1_gt_vbuz1_then_la1
|
||||
lda e
|
||||
cmp #xd
|
||||
@ -425,10 +424,9 @@ main: {
|
||||
inc cursor+1
|
||||
!:
|
||||
//SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuz1=vbuz1_minus_vbuc1
|
||||
lda e
|
||||
sec
|
||||
sbc #xd
|
||||
sta e
|
||||
lax e
|
||||
axs #xd
|
||||
stx e
|
||||
//SEG31 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2]
|
||||
b2_from_b1:
|
||||
b2_from_b3:
|
||||
@ -457,28 +455,32 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ ma
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Statement [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ) always clobbers reg byte a
|
||||
Statement [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ) always clobbers reg byte a reg byte x
|
||||
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
||||
Statement [12] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ) always clobbers reg byte a
|
||||
Statement [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:2 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) always clobbers reg byte a
|
||||
Statement [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ) always clobbers reg byte a
|
||||
Statement [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [12] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ) always clobbers reg byte a
|
||||
Statement [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:2 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_WORD:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] : zp ZP_WORD:2 ,
|
||||
Potential registers zp ZP_BYTE:4 [ main::x#2 main::x#1 ] : zp ZP_BYTE:4 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:4 [ main::x#2 main::x#1 ] : zp ZP_BYTE:4 ,
|
||||
Potential registers zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] : zp ZP_BYTE:5 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] : zp ZP_BYTE:6 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] : zp ZP_BYTE:6 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 55: zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 46.75: zp ZP_WORD:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] 29.33: zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] 14.67: zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 1168 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_WORD:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
||||
Uplifting [] best 1168 combination
|
||||
Uplifting [main] best 1088 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_WORD:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
||||
Uplifting [] best 1088 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Uplifting [main] best 1168 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Uplifting [main] best 1088 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
||||
Uplifting [main] best 1168 combination zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
||||
Uplifting [main] best 1088 combination zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
||||
Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
@ -555,9 +557,7 @@ main: {
|
||||
!:
|
||||
//SEG25 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuxx=vbuxx_plus_vbuc1
|
||||
txa
|
||||
clc
|
||||
adc #yd
|
||||
tax
|
||||
axs #-yd
|
||||
//SEG26 [10] if((const byte) main::xd#0>(byte) main::e#1) goto main::@2 -- vbuc1_gt_vbuxx_then_la1
|
||||
cpx #xd
|
||||
bcc b2_from_b1
|
||||
@ -576,9 +576,7 @@ main: {
|
||||
!:
|
||||
//SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuxx=vbuxx_minus_vbuc1
|
||||
txa
|
||||
sec
|
||||
sbc #xd
|
||||
tax
|
||||
axs #xd
|
||||
//SEG31 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2]
|
||||
b2_from_b1:
|
||||
b2_from_b3:
|
||||
@ -680,7 +678,7 @@ zp ZP_BYTE:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 1006
|
||||
Score: 926
|
||||
|
||||
//SEG0 File Comments
|
||||
//SEG1 Basic Upstart
|
||||
@ -742,9 +740,7 @@ main: {
|
||||
!:
|
||||
//SEG25 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuxx=vbuxx_plus_vbuc1
|
||||
txa
|
||||
clc
|
||||
adc #yd
|
||||
tax
|
||||
axs #-yd
|
||||
//SEG26 [10] if((const byte) main::xd#0>(byte) main::e#1) goto main::@2 -- vbuc1_gt_vbuxx_then_la1
|
||||
cpx #xd
|
||||
bcc b2
|
||||
@ -761,9 +757,7 @@ main: {
|
||||
!:
|
||||
//SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuxx=vbuxx_minus_vbuc1
|
||||
txa
|
||||
sec
|
||||
sbc #xd
|
||||
tax
|
||||
axs #xd
|
||||
//SEG31 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2]
|
||||
//SEG32 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy
|
||||
//SEG33 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy
|
||||
|
@ -14,8 +14,8 @@ main: {
|
||||
.label y = 4
|
||||
lda #y0
|
||||
sta y
|
||||
ldy #yd/2
|
||||
ldx #x0
|
||||
ldx #yd/2
|
||||
ldy #x0
|
||||
lda #x0+y0*$28
|
||||
sta idx
|
||||
lda #0
|
||||
@ -31,16 +31,14 @@ main: {
|
||||
lda #STAR
|
||||
!:
|
||||
sta screen
|
||||
inx
|
||||
iny
|
||||
inc idx
|
||||
bne !+
|
||||
inc idx+1
|
||||
!:
|
||||
tya
|
||||
clc
|
||||
adc #yd
|
||||
tay
|
||||
cpy #xd
|
||||
txa
|
||||
axs #-yd
|
||||
cpx #xd
|
||||
bcc b2
|
||||
beq b2
|
||||
inc y
|
||||
@ -51,12 +49,10 @@ main: {
|
||||
bcc !+
|
||||
inc idx+1
|
||||
!:
|
||||
tya
|
||||
sec
|
||||
sbc #xd
|
||||
tay
|
||||
txa
|
||||
axs #xd
|
||||
b2:
|
||||
cpx #x1+1
|
||||
cpy #x1+1
|
||||
bcc b1
|
||||
rts
|
||||
}
|
||||
|
@ -405,10 +405,9 @@ main: {
|
||||
inc idx+1
|
||||
!:
|
||||
//SEG25 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #yd
|
||||
clc
|
||||
adc e
|
||||
sta e
|
||||
lax e
|
||||
axs #-yd
|
||||
stx e
|
||||
//SEG26 [10] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 -- vbuc1_ge_vbuz1_then_la1
|
||||
lda #xd
|
||||
cmp e
|
||||
@ -427,10 +426,9 @@ main: {
|
||||
inc idx+1
|
||||
!:
|
||||
//SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuz1=vbuz1_minus_vbuc1
|
||||
lda e
|
||||
sec
|
||||
sbc #xd
|
||||
sta e
|
||||
lax e
|
||||
axs #xd
|
||||
stx e
|
||||
//SEG31 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2]
|
||||
b2_from_b1:
|
||||
b2_from_b3:
|
||||
@ -472,10 +470,10 @@ REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 55: zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 46.75: zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] 29.33: zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] 14.67: zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 1263 combination reg byte y [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] reg byte x [ main::x#2 main::x#1 ]
|
||||
Uplifting [] best 1263 combination
|
||||
Uplifting [main] best 1183 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] reg byte y [ main::x#2 main::x#1 ]
|
||||
Uplifting [] best 1183 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Uplifting [main] best 1263 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Uplifting [main] best 1183 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ main::y#2 main::y#4 main::y#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
@ -518,10 +516,10 @@ main: {
|
||||
//SEG12 [5] phi (byte) main::y#2 = (const byte) main::y0#0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #y0
|
||||
sta y
|
||||
//SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuyy=vbuc1
|
||||
ldy #yd/2
|
||||
//SEG14 [5] phi (byte) main::x#2 = (const byte) main::x0#0 [phi:main->main::@1#2] -- vbuxx=vbuc1
|
||||
ldx #x0
|
||||
//SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuxx=vbuc1
|
||||
ldx #yd/2
|
||||
//SEG14 [5] phi (byte) main::x#2 = (const byte) main::x0#0 [phi:main->main::@1#2] -- vbuyy=vbuc1
|
||||
ldy #x0
|
||||
//SEG15 [5] phi (word) main::idx#3 = (const byte) main::x0#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28 [phi:main->main::@1#3] -- vwuz1=vbuc1
|
||||
lda #x0+y0*$28
|
||||
sta idx
|
||||
@ -548,20 +546,18 @@ main: {
|
||||
lda #STAR
|
||||
!:
|
||||
sta screen
|
||||
//SEG23 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1
|
||||
inx
|
||||
//SEG23 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_plus_1
|
||||
iny
|
||||
//SEG24 [8] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_plus_1
|
||||
inc idx
|
||||
bne !+
|
||||
inc idx+1
|
||||
!:
|
||||
//SEG25 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuyy=vbuyy_plus_vbuc1
|
||||
tya
|
||||
clc
|
||||
adc #yd
|
||||
tay
|
||||
//SEG26 [10] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 -- vbuc1_ge_vbuyy_then_la1
|
||||
cpy #xd
|
||||
//SEG25 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuxx=vbuxx_plus_vbuc1
|
||||
txa
|
||||
axs #-yd
|
||||
//SEG26 [10] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 -- vbuc1_ge_vbuxx_then_la1
|
||||
cpx #xd
|
||||
bcc b2_from_b1
|
||||
beq b2_from_b1
|
||||
jmp b3
|
||||
@ -577,11 +573,9 @@ main: {
|
||||
bcc !+
|
||||
inc idx+1
|
||||
!:
|
||||
//SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuyy=vbuyy_minus_vbuc1
|
||||
tya
|
||||
sec
|
||||
sbc #xd
|
||||
tay
|
||||
//SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuxx=vbuxx_minus_vbuc1
|
||||
txa
|
||||
axs #xd
|
||||
//SEG31 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2]
|
||||
b2_from_b1:
|
||||
b2_from_b3:
|
||||
@ -591,8 +585,8 @@ main: {
|
||||
jmp b2
|
||||
//SEG35 main::@2
|
||||
b2:
|
||||
//SEG36 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_lt_vbuc1_then_la1
|
||||
cpx #x1+1
|
||||
//SEG36 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuyy_lt_vbuc1_then_la1
|
||||
cpy #x1+1
|
||||
bcc b1_from_b2
|
||||
jmp breturn
|
||||
//SEG37 main::@return
|
||||
@ -645,10 +639,10 @@ FINAL SYMBOL TABLE
|
||||
(byte) main::STAR
|
||||
(const byte) main::STAR#0 STAR = (byte/signed byte/word/signed word/dword/signed dword) $51
|
||||
(byte) main::e
|
||||
(byte) main::e#1 reg byte y 11.0
|
||||
(byte) main::e#2 reg byte y 22.0
|
||||
(byte) main::e#3 reg byte y 5.5
|
||||
(byte) main::e#5 reg byte y 16.5
|
||||
(byte) main::e#1 reg byte x 11.0
|
||||
(byte) main::e#2 reg byte x 22.0
|
||||
(byte) main::e#3 reg byte x 5.5
|
||||
(byte) main::e#5 reg byte x 16.5
|
||||
(word) main::idx
|
||||
(word) main::idx#1 idx zp ZP_WORD:2 8.25
|
||||
(word) main::idx#2 idx zp ZP_WORD:2 11.0
|
||||
@ -657,8 +651,8 @@ FINAL SYMBOL TABLE
|
||||
(byte[$28*$19]) main::screen
|
||||
(const byte[$28*$19]) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte) main::x
|
||||
(byte) main::x#1 reg byte x 3.666666666666667
|
||||
(byte) main::x#2 reg byte x 11.0
|
||||
(byte) main::x#1 reg byte y 3.666666666666667
|
||||
(byte) main::x#2 reg byte y 11.0
|
||||
(byte) main::x0
|
||||
(const byte) main::x0#0 x0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) main::x1
|
||||
@ -677,13 +671,13 @@ FINAL SYMBOL TABLE
|
||||
(const byte) main::yd#0 yd = (const byte) main::y1#0-(const byte) main::y0#0
|
||||
|
||||
zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ]
|
||||
reg byte x [ main::x#2 main::x#1 ]
|
||||
reg byte y [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
reg byte y [ main::x#2 main::x#1 ]
|
||||
reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
zp ZP_BYTE:4 [ main::y#2 main::y#4 main::y#1 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 1101
|
||||
Score: 1021
|
||||
|
||||
//SEG0 File Comments
|
||||
//SEG1 Basic Upstart
|
||||
@ -714,10 +708,10 @@ main: {
|
||||
//SEG12 [5] phi (byte) main::y#2 = (const byte) main::y0#0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #y0
|
||||
sta y
|
||||
//SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuyy=vbuc1
|
||||
ldy #yd/2
|
||||
//SEG14 [5] phi (byte) main::x#2 = (const byte) main::x0#0 [phi:main->main::@1#2] -- vbuxx=vbuc1
|
||||
ldx #x0
|
||||
//SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuxx=vbuc1
|
||||
ldx #yd/2
|
||||
//SEG14 [5] phi (byte) main::x#2 = (const byte) main::x0#0 [phi:main->main::@1#2] -- vbuyy=vbuc1
|
||||
ldy #x0
|
||||
//SEG15 [5] phi (word) main::idx#3 = (const byte) main::x0#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28 [phi:main->main::@1#3] -- vwuz1=vbuc1
|
||||
lda #x0+y0*$28
|
||||
sta idx
|
||||
@ -741,20 +735,18 @@ main: {
|
||||
lda #STAR
|
||||
!:
|
||||
sta screen
|
||||
//SEG23 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1
|
||||
inx
|
||||
//SEG23 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_plus_1
|
||||
iny
|
||||
//SEG24 [8] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_plus_1
|
||||
inc idx
|
||||
bne !+
|
||||
inc idx+1
|
||||
!:
|
||||
//SEG25 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuyy=vbuyy_plus_vbuc1
|
||||
tya
|
||||
clc
|
||||
adc #yd
|
||||
tay
|
||||
//SEG26 [10] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 -- vbuc1_ge_vbuyy_then_la1
|
||||
cpy #xd
|
||||
//SEG25 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuxx=vbuxx_plus_vbuc1
|
||||
txa
|
||||
axs #-yd
|
||||
//SEG26 [10] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 -- vbuc1_ge_vbuxx_then_la1
|
||||
cpx #xd
|
||||
bcc b2
|
||||
beq b2
|
||||
//SEG27 main::@3
|
||||
@ -768,19 +760,17 @@ main: {
|
||||
bcc !+
|
||||
inc idx+1
|
||||
!:
|
||||
//SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuyy=vbuyy_minus_vbuc1
|
||||
tya
|
||||
sec
|
||||
sbc #xd
|
||||
tay
|
||||
//SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuxx=vbuxx_minus_vbuc1
|
||||
txa
|
||||
axs #xd
|
||||
//SEG31 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2]
|
||||
//SEG32 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy
|
||||
//SEG33 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy
|
||||
//SEG34 [14] phi (word) main::idx#5 = (word) main::idx#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy
|
||||
//SEG35 main::@2
|
||||
b2:
|
||||
//SEG36 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_lt_vbuc1_then_la1
|
||||
cpx #x1+1
|
||||
//SEG36 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuyy_lt_vbuc1_then_la1
|
||||
cpy #x1+1
|
||||
bcc b1
|
||||
//SEG37 main::@return
|
||||
//SEG38 [16] return
|
||||
|
@ -9,10 +9,10 @@
|
||||
(byte) main::STAR
|
||||
(const byte) main::STAR#0 STAR = (byte/signed byte/word/signed word/dword/signed dword) $51
|
||||
(byte) main::e
|
||||
(byte) main::e#1 reg byte y 11.0
|
||||
(byte) main::e#2 reg byte y 22.0
|
||||
(byte) main::e#3 reg byte y 5.5
|
||||
(byte) main::e#5 reg byte y 16.5
|
||||
(byte) main::e#1 reg byte x 11.0
|
||||
(byte) main::e#2 reg byte x 22.0
|
||||
(byte) main::e#3 reg byte x 5.5
|
||||
(byte) main::e#5 reg byte x 16.5
|
||||
(word) main::idx
|
||||
(word) main::idx#1 idx zp ZP_WORD:2 8.25
|
||||
(word) main::idx#2 idx zp ZP_WORD:2 11.0
|
||||
@ -21,8 +21,8 @@
|
||||
(byte[$28*$19]) main::screen
|
||||
(const byte[$28*$19]) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte) main::x
|
||||
(byte) main::x#1 reg byte x 3.666666666666667
|
||||
(byte) main::x#2 reg byte x 11.0
|
||||
(byte) main::x#1 reg byte y 3.666666666666667
|
||||
(byte) main::x#2 reg byte y 11.0
|
||||
(byte) main::x0
|
||||
(const byte) main::x0#0 x0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) main::x1
|
||||
@ -41,6 +41,6 @@
|
||||
(const byte) main::yd#0 yd = (const byte) main::y1#0-(const byte) main::y0#0
|
||||
|
||||
zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ]
|
||||
reg byte x [ main::x#2 main::x#1 ]
|
||||
reg byte y [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
reg byte y [ main::x#2 main::x#1 ]
|
||||
reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
zp ZP_BYTE:4 [ main::y#2 main::y#4 main::y#1 ]
|
||||
|
@ -159,8 +159,8 @@ main: {
|
||||
lda #0
|
||||
sta BORDERCOL
|
||||
b5:
|
||||
lda RASTER
|
||||
cmp #$42
|
||||
lda #$42
|
||||
cmp RASTER
|
||||
bne b5
|
||||
nop
|
||||
nop
|
||||
@ -275,8 +275,8 @@ gfx_init_plane_charset8: {
|
||||
cpx #8
|
||||
bne b3
|
||||
inc cr
|
||||
lda cr
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp cr
|
||||
bne b2
|
||||
inc ch
|
||||
lda ch
|
||||
@ -335,8 +335,8 @@ gfx_init_screen0: {
|
||||
cpx #$28
|
||||
bne b2
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
|
@ -2101,8 +2101,8 @@ main: {
|
||||
//SEG41 [29] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1
|
||||
inc j
|
||||
//SEG42 [30] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda j
|
||||
cmp #$10
|
||||
lda #$10
|
||||
cmp j
|
||||
bne b1_from_b1
|
||||
jmp b3
|
||||
//SEG43 main::@3
|
||||
@ -2155,8 +2155,8 @@ main: {
|
||||
//SEG47 main::@5
|
||||
b5:
|
||||
//SEG48 [34] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $42) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$42
|
||||
lda #$42
|
||||
cmp RASTER
|
||||
bne b5
|
||||
jmp b7
|
||||
//SEG49 main::@7
|
||||
@ -2224,8 +2224,8 @@ main: {
|
||||
nop
|
||||
nop
|
||||
//SEG59 [43] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) $f2) goto main::@8 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda rst
|
||||
cmp #$f2
|
||||
lda #$f2
|
||||
cmp rst
|
||||
bne b8
|
||||
jmp b3
|
||||
}
|
||||
@ -2392,8 +2392,8 @@ gfx_init_plane_charset8: {
|
||||
//SEG123 [65] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuz1=_inc_vbuz1
|
||||
inc cp
|
||||
//SEG124 [66] if((byte) gfx_init_plane_charset8::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@3 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda cp
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp cp
|
||||
bne b3_from_b4
|
||||
jmp b6
|
||||
//SEG125 gfx_init_plane_charset8::@6
|
||||
@ -2401,8 +2401,8 @@ gfx_init_plane_charset8: {
|
||||
//SEG126 [67] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1
|
||||
inc cr
|
||||
//SEG127 [68] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda cr
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp cr
|
||||
bne b2_from_b6
|
||||
jmp b7
|
||||
//SEG128 gfx_init_plane_charset8::@7
|
||||
@ -2527,8 +2527,8 @@ gfx_init_screen0: {
|
||||
//SEG164 [87] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuz1=_inc_vbuz1
|
||||
inc cx
|
||||
//SEG165 [88] if((byte) gfx_init_screen0::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto gfx_init_screen0::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda cx
|
||||
cmp #$28
|
||||
lda #$28
|
||||
cmp cx
|
||||
bne b2_from_b2
|
||||
jmp b3
|
||||
//SEG166 gfx_init_screen0::@3
|
||||
@ -2536,8 +2536,8 @@ gfx_init_screen0: {
|
||||
//SEG167 [89] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1
|
||||
inc cy
|
||||
//SEG168 [90] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto gfx_init_screen0::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG169 gfx_init_screen0::@return
|
||||
@ -2572,9 +2572,8 @@ Statement asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop
|
||||
Statement [32] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [33] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [34] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $42) goto main::@5 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [37] (byte~) main::$32 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ main::rst#1 main::$32 ] ( main:2 [ main::rst#1 main::$32 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ main::rst#1 ]
|
||||
Statement [38] (byte~) main::$33 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$32 [ main::rst#1 main::$33 ] ( main:2 [ main::rst#1 main::$33 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ main::rst#1 ]
|
||||
Statement [40] (byte~) main::$34 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::rst#1 main::$34 ] ( main:2 [ main::rst#1 main::$34 ] ) always clobbers reg byte a
|
||||
Statement [51] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] ) always clobbers reg byte a
|
||||
Statement [54] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ) always clobbers reg byte a reg byte y
|
||||
@ -2584,18 +2583,14 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ g
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:10 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Statement [57] (byte~) gfx_init_plane_charset8::$7 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) $80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$7 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$7 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ]
|
||||
Statement [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:11 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ]
|
||||
Statement [71] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] ) always clobbers reg byte a
|
||||
Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a
|
||||
Statement [81] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ) always clobbers reg byte a
|
||||
Statement [82] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
|
||||
Statement [82] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a
|
||||
Statement [83] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ gfx_init_screen0::$1 ]
|
||||
Statement [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y
|
||||
@ -2631,7 +2626,6 @@ Statement [38] (byte~) main::$33 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM
|
||||
Statement [40] (byte~) main::$34 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::rst#1 main::$34 ] ( main:2 [ main::rst#1 main::$34 ] ) always clobbers reg byte a
|
||||
Statement [51] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] ) always clobbers reg byte a
|
||||
Statement [54] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [57] (byte~) gfx_init_plane_charset8::$7 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) $80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$7 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$7 ] ) always clobbers reg byte a
|
||||
Statement [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ) always clobbers reg byte y
|
||||
Statement [71] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] ) always clobbers reg byte a
|
||||
Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a
|
||||
@ -2643,10 +2637,10 @@ Potential registers zp ZP_BYTE:2 [ main::j#2 main::j#1 ] : zp ZP_BYTE:2 , reg by
|
||||
Potential registers zp ZP_BYTE:3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] : zp ZP_BYTE:3 , reg byte x ,
|
||||
Potential registers zp ZP_WORD:4 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] : zp ZP_WORD:4 ,
|
||||
Potential registers zp ZP_BYTE:6 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] : zp ZP_BYTE:6 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:7 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] : zp ZP_BYTE:7 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:7 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] : zp ZP_BYTE:7 , reg byte a , reg byte x ,
|
||||
Potential registers zp ZP_WORD:8 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] : zp ZP_WORD:8 ,
|
||||
Potential registers zp ZP_BYTE:10 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] : zp ZP_BYTE:10 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:11 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] : zp ZP_BYTE:11 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:11 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] : zp ZP_BYTE:11 , reg byte a , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:12 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:13 [ dtvSetCpuBankSegment1::cpuBankIdx#2 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] : zp ZP_BYTE:14 , reg byte x ,
|
||||
@ -2671,7 +2665,7 @@ Uplift Scope [gfx_init]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [gfx_init_plane_charset8] best 98394 combination reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] reg byte a [ gfx_init_plane_charset8::$7 ] reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] zp ZP_BYTE:7 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] zp ZP_WORD:8 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] zp ZP_BYTE:10 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] zp ZP_WORD:4 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] zp ZP_BYTE:6 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] zp ZP_BYTE:3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Limited combination testing to 100 combinations of 512 possible.
|
||||
Limited combination testing to 100 combinations of 1152 possible.
|
||||
Uplifting [gfx_init_screen0] best 95594 combination reg byte a [ gfx_init_screen0::$0 ] reg byte a [ gfx_init_screen0::$2 ] reg byte a [ gfx_init_screen0::$3 ] reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] zp ZP_WORD:16 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] zp ZP_BYTE:24 [ gfx_init_screen0::$1 ] zp ZP_BYTE:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Limited combination testing to 100 combinations of 768 possible.
|
||||
Uplifting [main] best 92994 combination reg byte a [ main::$32 ] reg byte a [ main::$33 ] reg byte a [ main::$34 ] reg byte x [ main::rst#1 ] zp ZP_BYTE:2 [ main::j#2 main::j#1 ]
|
||||
@ -2935,8 +2929,8 @@ main: {
|
||||
//SEG47 main::@5
|
||||
b5:
|
||||
//SEG48 [34] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $42) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$42
|
||||
lda #$42
|
||||
cmp RASTER
|
||||
bne b5
|
||||
jmp b7
|
||||
//SEG49 main::@7
|
||||
@ -3162,8 +3156,8 @@ gfx_init_plane_charset8: {
|
||||
//SEG126 [67] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1
|
||||
inc cr
|
||||
//SEG127 [68] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda cr
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp cr
|
||||
bne b2_from_b6
|
||||
jmp b7
|
||||
//SEG128 gfx_init_plane_charset8::@7
|
||||
@ -3282,8 +3276,8 @@ gfx_init_screen0: {
|
||||
//SEG167 [89] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1
|
||||
inc cy
|
||||
//SEG168 [90] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto gfx_init_screen0::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG169 gfx_init_screen0::@return
|
||||
@ -3926,8 +3920,8 @@ main: {
|
||||
//SEG47 main::@5
|
||||
b5:
|
||||
//SEG48 [34] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $42) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$42
|
||||
lda #$42
|
||||
cmp RASTER
|
||||
bne b5
|
||||
//SEG49 main::@7
|
||||
//SEG50 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
|
||||
@ -4121,8 +4115,8 @@ gfx_init_plane_charset8: {
|
||||
//SEG126 [67] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1
|
||||
inc cr
|
||||
//SEG127 [68] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda cr
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp cr
|
||||
bne b2
|
||||
//SEG128 gfx_init_plane_charset8::@7
|
||||
//SEG129 [69] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1
|
||||
@ -4222,8 +4216,8 @@ gfx_init_screen0: {
|
||||
//SEG167 [89] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1
|
||||
inc cy
|
||||
//SEG168 [90] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto gfx_init_screen0::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b1
|
||||
//SEG169 gfx_init_screen0::@return
|
||||
//SEG170 [91] return
|
||||
|
@ -137,8 +137,8 @@ main: {
|
||||
lda #0
|
||||
sta BORDERCOL
|
||||
b5:
|
||||
lda RASTER
|
||||
cmp #$42
|
||||
lda #$42
|
||||
cmp RASTER
|
||||
bne b5
|
||||
nop
|
||||
nop
|
||||
@ -248,8 +248,8 @@ gfx_init_chunky: {
|
||||
cmp #<$140
|
||||
bne b2
|
||||
inc y
|
||||
lda y
|
||||
cmp #$33
|
||||
lda #$33
|
||||
cmp y
|
||||
bne b1
|
||||
lda #$4000/$4000
|
||||
jsr dtvSetCpuBankSegment1
|
||||
|
@ -1721,8 +1721,8 @@ main: {
|
||||
//SEG35 [23] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1
|
||||
inc j
|
||||
//SEG36 [24] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda j
|
||||
cmp #$10
|
||||
lda #$10
|
||||
cmp j
|
||||
bne b1_from_b1
|
||||
jmp b3
|
||||
//SEG37 main::@3
|
||||
@ -1775,8 +1775,8 @@ main: {
|
||||
//SEG41 main::@5
|
||||
b5:
|
||||
//SEG42 [28] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $42) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$42
|
||||
lda #$42
|
||||
cmp RASTER
|
||||
bne b5
|
||||
jmp b7
|
||||
//SEG43 main::@7
|
||||
@ -1844,8 +1844,8 @@ main: {
|
||||
nop
|
||||
nop
|
||||
//SEG53 [37] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) $f2) goto main::@8 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda rst
|
||||
cmp #$f2
|
||||
lda #$f2
|
||||
cmp rst
|
||||
bne b8
|
||||
jmp b3
|
||||
}
|
||||
@ -1982,8 +1982,8 @@ gfx_init_chunky: {
|
||||
//SEG98 [53] (byte) gfx_init_chunky::y#1 ← ++ (byte) gfx_init_chunky::y#6 -- vbuz1=_inc_vbuz1
|
||||
inc y
|
||||
//SEG99 [54] if((byte) gfx_init_chunky::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $33) goto gfx_init_chunky::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda y
|
||||
cmp #$33
|
||||
lda #$33
|
||||
cmp y
|
||||
bne b1_from_b5
|
||||
//SEG100 [55] phi from gfx_init_chunky::@5 to gfx_init_chunky::@6 [phi:gfx_init_chunky::@5->gfx_init_chunky::@6]
|
||||
b6_from_b5:
|
||||
@ -2046,9 +2046,8 @@ Statement asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop
|
||||
Statement [26] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [27] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [28] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $42) goto main::@5 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [31] (byte~) main::$31 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ main::rst#1 main::$31 ] ( main:2 [ main::rst#1 main::$31 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ main::rst#1 ]
|
||||
Statement [32] (byte~) main::$32 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$31 [ main::rst#1 main::$32 ] ( main:2 [ main::rst#1 main::$32 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ main::rst#1 ]
|
||||
Statement [34] (byte~) main::$33 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::rst#1 main::$33 ] ( main:2 [ main::rst#1 main::$33 ] ) always clobbers reg byte a
|
||||
Statement [42] if((byte*) gfx_init_chunky::gfxb#3!=(word/dword/signed dword) $8000) goto gfx_init_chunky::@3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
@ -2322,8 +2321,8 @@ main: {
|
||||
//SEG41 main::@5
|
||||
b5:
|
||||
//SEG42 [28] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $42) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$42
|
||||
lda #$42
|
||||
cmp RASTER
|
||||
bne b5
|
||||
jmp b7
|
||||
//SEG43 main::@7
|
||||
@ -2514,8 +2513,8 @@ gfx_init_chunky: {
|
||||
//SEG98 [53] (byte) gfx_init_chunky::y#1 ← ++ (byte) gfx_init_chunky::y#6 -- vbuz1=_inc_vbuz1
|
||||
inc y
|
||||
//SEG99 [54] if((byte) gfx_init_chunky::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $33) goto gfx_init_chunky::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda y
|
||||
cmp #$33
|
||||
lda #$33
|
||||
cmp y
|
||||
bne b1_from_b5
|
||||
//SEG100 [55] phi from gfx_init_chunky::@5 to gfx_init_chunky::@6 [phi:gfx_init_chunky::@5->gfx_init_chunky::@6]
|
||||
b6_from_b5:
|
||||
@ -3082,8 +3081,8 @@ main: {
|
||||
//SEG41 main::@5
|
||||
b5:
|
||||
//SEG42 [28] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $42) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$42
|
||||
lda #$42
|
||||
cmp RASTER
|
||||
bne b5
|
||||
//SEG43 main::@7
|
||||
//SEG44 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
|
||||
@ -3250,8 +3249,8 @@ gfx_init_chunky: {
|
||||
//SEG98 [53] (byte) gfx_init_chunky::y#1 ← ++ (byte) gfx_init_chunky::y#6 -- vbuz1=_inc_vbuz1
|
||||
inc y
|
||||
//SEG99 [54] if((byte) gfx_init_chunky::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $33) goto gfx_init_chunky::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda y
|
||||
cmp #$33
|
||||
lda #$33
|
||||
cmp y
|
||||
bne b1
|
||||
//SEG100 [55] phi from gfx_init_chunky::@5 to gfx_init_chunky::@6 [phi:gfx_init_chunky::@5->gfx_init_chunky::@6]
|
||||
//SEG101 gfx_init_chunky::@6
|
||||
|
@ -139,8 +139,8 @@ main: {
|
||||
ldx #0
|
||||
// wait til blitter is ready
|
||||
b2:
|
||||
lda DTV_BLITTER_CONTROL2
|
||||
and #DTV_BLIT_STATUS_BUSY
|
||||
lda #DTV_BLIT_STATUS_BUSY
|
||||
and DTV_BLITTER_CONTROL2
|
||||
cmp #0
|
||||
bne b2
|
||||
// restart
|
||||
|
@ -1383,8 +1383,8 @@ main: {
|
||||
//SEG47 main::@2
|
||||
b2:
|
||||
//SEG48 [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 -- vbuz1=_deref_pbuc1_band_vbuc2
|
||||
lda DTV_BLITTER_CONTROL2
|
||||
and #DTV_BLIT_STATUS_BUSY
|
||||
lda #DTV_BLIT_STATUS_BUSY
|
||||
and DTV_BLITTER_CONTROL2
|
||||
sta _15
|
||||
//SEG49 [38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_neq_0_then_la1
|
||||
lda _15
|
||||
@ -1400,8 +1400,8 @@ main: {
|
||||
//SEG52 [40] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuz1=_inc_vbuz1
|
||||
inc r
|
||||
//SEG53 [41] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda r
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp r
|
||||
bne b2_from_b3
|
||||
jmp breturn
|
||||
//SEG54 main::@return
|
||||
@ -1703,8 +1703,8 @@ main: {
|
||||
//SEG47 main::@2
|
||||
b2:
|
||||
//SEG48 [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 -- vbuaa=_deref_pbuc1_band_vbuc2
|
||||
lda DTV_BLITTER_CONTROL2
|
||||
and #DTV_BLIT_STATUS_BUSY
|
||||
lda #DTV_BLIT_STATUS_BUSY
|
||||
and DTV_BLITTER_CONTROL2
|
||||
//SEG49 [38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuaa_neq_0_then_la1
|
||||
cmp #0
|
||||
bne b2_from_b2
|
||||
@ -2203,8 +2203,8 @@ main: {
|
||||
//SEG47 main::@2
|
||||
b2:
|
||||
//SEG48 [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 -- vbuaa=_deref_pbuc1_band_vbuc2
|
||||
lda DTV_BLITTER_CONTROL2
|
||||
and #DTV_BLIT_STATUS_BUSY
|
||||
lda #DTV_BLIT_STATUS_BUSY
|
||||
and DTV_BLITTER_CONTROL2
|
||||
//SEG49 [38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuaa_neq_0_then_la1
|
||||
cmp #0
|
||||
bne b2
|
||||
|
@ -21,8 +21,8 @@ main: {
|
||||
lda #DTV_HIGHCOLOR|DTV_BORDER_OFF|DTV_BADLINE_OFF
|
||||
sta DTV_CONTROL
|
||||
b4:
|
||||
lda RASTER
|
||||
cmp #$40
|
||||
lda #$40
|
||||
cmp RASTER
|
||||
bne b4
|
||||
// Create rasterbars
|
||||
lda #0
|
||||
|
@ -1125,8 +1125,8 @@ main: {
|
||||
//SEG13 main::@4
|
||||
b4:
|
||||
//SEG14 [7] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $40) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$40
|
||||
lda #$40
|
||||
cmp RASTER
|
||||
bne b4
|
||||
jmp b6
|
||||
//SEG15 main::@6
|
||||
@ -1204,8 +1204,8 @@ main: {
|
||||
//SEG33 [17] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1
|
||||
inc c
|
||||
//SEG34 [18] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto main::@8 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda c
|
||||
cmp #$10
|
||||
lda #$10
|
||||
cmp c
|
||||
bne b8_from_b8
|
||||
jmp b4
|
||||
palette: .byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, $a, $b, $c, $d, $e, $f
|
||||
@ -1281,8 +1281,8 @@ main: {
|
||||
//SEG13 main::@4
|
||||
b4:
|
||||
//SEG14 [7] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $40) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$40
|
||||
lda #$40
|
||||
cmp RASTER
|
||||
bne b4
|
||||
jmp b6
|
||||
//SEG15 main::@6
|
||||
@ -1637,8 +1637,8 @@ main: {
|
||||
//SEG13 main::@4
|
||||
b4:
|
||||
//SEG14 [7] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $40) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$40
|
||||
lda #$40
|
||||
cmp RASTER
|
||||
bne b4
|
||||
//SEG15 main::@6
|
||||
//SEG16 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2
|
||||
|
@ -455,8 +455,8 @@ gfx_mode: {
|
||||
cpx #$28
|
||||
bne b11
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b10
|
||||
// Background colors
|
||||
lda #0
|
||||
@ -502,8 +502,8 @@ gfx_mode: {
|
||||
cpx #$10
|
||||
bne b13
|
||||
b19:
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b19
|
||||
jsr keyboard_event_scan
|
||||
jsr keyboard_event_get
|
||||
@ -555,14 +555,13 @@ keyboard_event_scan: {
|
||||
ldy row
|
||||
cmp keyboard_scan_values,y
|
||||
bne b6
|
||||
lda #8
|
||||
clc
|
||||
adc keycode
|
||||
sta keycode
|
||||
lax keycode
|
||||
axs #-8
|
||||
stx keycode
|
||||
b3:
|
||||
inc row
|
||||
lda row
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp row
|
||||
bne b1
|
||||
lda #KEY_LSHIFT
|
||||
sta keyboard_event_pressed.keycode
|
||||
@ -612,8 +611,8 @@ keyboard_event_scan: {
|
||||
and keyboard_matrix_col_bitmask,x
|
||||
cmp #0
|
||||
beq b5
|
||||
lda keyboard_events_size
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp keyboard_events_size
|
||||
beq b5
|
||||
lda keyboard_matrix_col_bitmask,x
|
||||
and row_scan
|
||||
@ -1015,8 +1014,8 @@ form_mode: {
|
||||
sta preset_current
|
||||
// Let the user change values in the form
|
||||
b5:
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b5
|
||||
jsr form_control
|
||||
txa
|
||||
@ -1355,8 +1354,8 @@ form_control: {
|
||||
cmp #0
|
||||
beq b5
|
||||
dec form_field_idx
|
||||
lda form_field_idx
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp form_field_idx
|
||||
bne b7
|
||||
lda #form_fields_cnt-1
|
||||
sta form_field_idx
|
||||
@ -1368,8 +1367,8 @@ form_control: {
|
||||
rts
|
||||
b5:
|
||||
inc form_field_idx
|
||||
lda form_field_idx
|
||||
cmp #form_fields_cnt
|
||||
lda #form_fields_cnt
|
||||
cmp form_field_idx
|
||||
bne b7
|
||||
lda #0
|
||||
sta form_field_idx
|
||||
@ -1383,9 +1382,9 @@ form_control: {
|
||||
beq b10
|
||||
ldx form_field_idx
|
||||
dec form_fields_val,x
|
||||
lda #$ff
|
||||
ldy form_field_idx
|
||||
lda form_fields_val,y
|
||||
cmp #$ff
|
||||
cmp form_fields_val,y
|
||||
bne b12
|
||||
lda form_fields_max,y
|
||||
sta form_fields_val,y
|
||||
@ -1649,8 +1648,8 @@ gfx_init_plane_fill: {
|
||||
cpx #$28
|
||||
bne b2
|
||||
inc by
|
||||
lda by
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp by
|
||||
bne b1
|
||||
lda #$4000/$4000
|
||||
jsr dtvSetCpuBankSegment1
|
||||
@ -1730,8 +1729,8 @@ gfx_init_plane_horisontal2: {
|
||||
cpx #$28
|
||||
bne b2
|
||||
inc ay
|
||||
lda ay
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp ay
|
||||
bne b1
|
||||
lda #$4000/$4000
|
||||
jsr dtvSetCpuBankSegment1
|
||||
@ -1765,8 +1764,8 @@ gfx_init_plane_vertical: {
|
||||
cpx #$28
|
||||
bne b2
|
||||
inc by
|
||||
lda by
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp by
|
||||
bne b1
|
||||
lda #$4000/$4000
|
||||
jsr dtvSetCpuBankSegment1
|
||||
@ -1804,8 +1803,8 @@ gfx_init_plane_horisontal: {
|
||||
cpx #$28
|
||||
bne b2
|
||||
inc ay
|
||||
lda ay
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp ay
|
||||
bne b1
|
||||
lda #$4000/$4000
|
||||
jsr dtvSetCpuBankSegment1
|
||||
@ -1878,8 +1877,8 @@ gfx_init_plane_charset8: {
|
||||
cpx #8
|
||||
bne b3
|
||||
inc cr
|
||||
lda cr
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp cr
|
||||
bne b2
|
||||
inc ch
|
||||
lda ch
|
||||
@ -1950,8 +1949,8 @@ gfx_init_plane_8bppchunky: {
|
||||
cmp #<$140
|
||||
bne b2
|
||||
inc y
|
||||
lda y
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp y
|
||||
bne b1
|
||||
lda #$4000/$4000
|
||||
jsr dtvSetCpuBankSegment1
|
||||
@ -2280,8 +2279,8 @@ bitmap_clear: {
|
||||
cpx #$c8
|
||||
bne b2
|
||||
inc y
|
||||
lda y
|
||||
cmp #$28
|
||||
lda #$28
|
||||
cmp y
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
@ -2314,9 +2313,8 @@ bitmap_init: {
|
||||
sta yoffs+1
|
||||
tax
|
||||
b3:
|
||||
txa
|
||||
and #7
|
||||
sta _6
|
||||
lda #7
|
||||
sax _6
|
||||
lda yoffs
|
||||
ora _6
|
||||
sta bitmap_plot_ylo,x
|
||||
@ -2404,8 +2402,8 @@ gfx_init_screen4: {
|
||||
cpx #$28
|
||||
bne b2
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
@ -2443,8 +2441,8 @@ gfx_init_screen3: {
|
||||
cpx #$28
|
||||
bne b2
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
@ -2488,8 +2486,8 @@ gfx_init_screen2: {
|
||||
cpx #$28
|
||||
bne b2
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
@ -2520,8 +2518,8 @@ gfx_init_screen1: {
|
||||
cpx #$28
|
||||
bne b2
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
@ -2559,8 +2557,8 @@ gfx_init_screen0: {
|
||||
cpx #$28
|
||||
bne b2
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -361,8 +361,8 @@ mode_8bppchunkybmm: {
|
||||
cmp #<$140
|
||||
bne b3
|
||||
inc y
|
||||
lda y
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp y
|
||||
bne b2
|
||||
lda #$4000/$4000
|
||||
jsr dtvSetCpuBankSegment1
|
||||
@ -376,8 +376,8 @@ mode_ctrl: {
|
||||
b1:
|
||||
// Wait for the raster
|
||||
b4:
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b4
|
||||
ldy #KEY_SPACE
|
||||
jsr keyboard_key_pressed
|
||||
@ -586,8 +586,8 @@ mode_8bpppixelcell: {
|
||||
cpx #$28
|
||||
bne b3
|
||||
inc ay
|
||||
lda ay
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp ay
|
||||
bne b2
|
||||
// 8bpp cells for Plane B (charset) - ROM charset with 256 colors
|
||||
lda #PROCPORT_RAM_CHARROM
|
||||
@ -637,8 +637,8 @@ mode_8bpppixelcell: {
|
||||
cpx #8
|
||||
bne b6
|
||||
inc cr
|
||||
lda cr
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp cr
|
||||
bne b5
|
||||
inc ch
|
||||
lda ch
|
||||
@ -737,8 +737,8 @@ mode_sixsfred: {
|
||||
cpx #$28
|
||||
bne b3
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b2
|
||||
lda #<PLANEA
|
||||
sta gfxa
|
||||
@ -764,8 +764,8 @@ mode_sixsfred: {
|
||||
cpx #$28
|
||||
bne b5
|
||||
inc ay
|
||||
lda ay
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp ay
|
||||
bne b4
|
||||
lda #0
|
||||
sta by
|
||||
@ -787,8 +787,8 @@ mode_sixsfred: {
|
||||
cpx #$28
|
||||
bne b7
|
||||
inc by
|
||||
lda by
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp by
|
||||
bne b6
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
||||
sta dtv_control
|
||||
@ -897,8 +897,8 @@ mode_twoplanebitmap: {
|
||||
cpx #$28
|
||||
bne b3
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b2
|
||||
lda #<PLANEA
|
||||
sta gfxa
|
||||
@ -925,8 +925,8 @@ mode_twoplanebitmap: {
|
||||
cpx #$28
|
||||
bne b5
|
||||
inc ay
|
||||
lda ay
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp ay
|
||||
bne b4
|
||||
lda #0
|
||||
sta by
|
||||
@ -948,8 +948,8 @@ mode_twoplanebitmap: {
|
||||
cpx #$28
|
||||
bne b9
|
||||
inc by
|
||||
lda by
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp by
|
||||
bne b8
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
||||
sta dtv_control
|
||||
@ -1058,8 +1058,8 @@ mode_sixsfred2: {
|
||||
cpx #$28
|
||||
bne b3
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b2
|
||||
lda #<PLANEA
|
||||
sta gfxa
|
||||
@ -1085,8 +1085,8 @@ mode_sixsfred2: {
|
||||
cpx #$28
|
||||
bne b5
|
||||
inc ay
|
||||
lda ay
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp ay
|
||||
bne b4
|
||||
lda #0
|
||||
sta by
|
||||
@ -1108,8 +1108,8 @@ mode_sixsfred2: {
|
||||
cpx #$28
|
||||
bne b7
|
||||
inc by
|
||||
lda by
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp by
|
||||
bne b6
|
||||
lda #DTV_LINEAR
|
||||
sta dtv_control
|
||||
@ -1219,8 +1219,8 @@ mode_hicolmcchar: {
|
||||
cpx #$28
|
||||
bne b3
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b2
|
||||
lda #DTV_HIGHCOLOR
|
||||
sta dtv_control
|
||||
@ -1330,8 +1330,8 @@ mode_hicolecmchar: {
|
||||
cpx #$28
|
||||
bne b3
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b2
|
||||
lda #DTV_HIGHCOLOR
|
||||
sta dtv_control
|
||||
@ -1430,8 +1430,8 @@ mode_hicolstdchar: {
|
||||
cpx #$28
|
||||
bne b3
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b2
|
||||
lda #DTV_HIGHCOLOR
|
||||
sta dtv_control
|
||||
@ -1520,8 +1520,8 @@ mode_stdbitmap: {
|
||||
cpx #$28
|
||||
bne b3
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b2
|
||||
jsr bitmap_init
|
||||
jsr bitmap_clear
|
||||
@ -1845,8 +1845,8 @@ bitmap_clear: {
|
||||
cpx #$c8
|
||||
bne b2
|
||||
inc y
|
||||
lda y
|
||||
cmp #$28
|
||||
lda #$28
|
||||
cmp y
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
@ -1879,9 +1879,8 @@ bitmap_init: {
|
||||
sta yoffs+1
|
||||
tax
|
||||
b3:
|
||||
txa
|
||||
and #7
|
||||
sta _6
|
||||
lda #7
|
||||
sax _6
|
||||
lda yoffs
|
||||
ora _6
|
||||
sta bitmap_plot_ylo,x
|
||||
@ -2009,8 +2008,8 @@ mode_mcchar: {
|
||||
cpx #$28
|
||||
bne b3
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b2
|
||||
lda #0
|
||||
sta dtv_control
|
||||
@ -2122,8 +2121,8 @@ mode_ecmchar: {
|
||||
cpx #$28
|
||||
bne b3
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b2
|
||||
lda #0
|
||||
sta dtv_control
|
||||
@ -2225,8 +2224,8 @@ mode_stdchar: {
|
||||
cpx #$28
|
||||
bne b3
|
||||
inc cy
|
||||
lda cy
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp cy
|
||||
bne b2
|
||||
lda #0
|
||||
sta dtv_control
|
||||
|
File diff suppressed because one or more lines are too long
@ -179,8 +179,8 @@ main: {
|
||||
//SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #4
|
||||
lda #4
|
||||
cmp i
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG19 main::@return
|
||||
|
@ -31,9 +31,8 @@ w: {
|
||||
ldy #0
|
||||
b1:
|
||||
tya
|
||||
clc
|
||||
adc #$578-$546
|
||||
tax
|
||||
axs #-$578-$546
|
||||
lda #b
|
||||
sta SCREEN3,y
|
||||
txa
|
||||
|
@ -401,8 +401,8 @@ main: {
|
||||
//SEG20 [10] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1
|
||||
inc b
|
||||
//SEG21 [11] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda b
|
||||
cmp #$65
|
||||
lda #$65
|
||||
cmp b
|
||||
bne b1_from_b1
|
||||
//SEG22 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
b2_from_b1:
|
||||
@ -439,13 +439,12 @@ w: {
|
||||
//SEG33 w::@1
|
||||
b1:
|
||||
//SEG34 [17] (byte) w::b2#0 ← (word/signed word/dword/signed dword) $578-(word/signed word/dword/signed dword) $546 + (byte) w::i#2 -- vbuz1=vbuc1_plus_vbuz2
|
||||
lda #$578-$546
|
||||
clc
|
||||
adc i
|
||||
sta b2
|
||||
lax i
|
||||
axs #-$578-$546
|
||||
stx b2
|
||||
//SEG35 [18] *((const byte*) SCREEN3#0 + (byte) w::i#2) ← (const byte) w::b#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #b
|
||||
ldy i
|
||||
sta SCREEN3,y
|
||||
//SEG36 [19] *((const byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0 -- pbuc1_derefidx_vbuz1=vbuz2
|
||||
lda b2
|
||||
@ -454,8 +453,8 @@ w: {
|
||||
//SEG37 [20] (byte) w::i#1 ← ++ (byte) w::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG38 [21] if((byte) w::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $b) goto w::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$b
|
||||
lda #$b
|
||||
cmp i
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG39 w::@return
|
||||
@ -468,9 +467,8 @@ REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [6] (byte) main::b2#0 ← (byte/word/signed word/dword/signed dword) $c8 - (byte) main::b#2 [ main::b#2 main::b2#0 ] ( main:2 [ main::b#2 main::b2#0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::b#2 main::b#1 ]
|
||||
Statement [8] (signed byte) main::sb#0 ← - (signed byte)(byte) main::b#2 [ main::b#2 main::sb#0 ] ( main:2 [ main::b#2 main::sb#0 ] ) always clobbers reg byte a
|
||||
Statement [17] (byte) w::b2#0 ← (word/signed word/dword/signed dword) $578-(word/signed word/dword/signed dword) $546 + (byte) w::i#2 [ w::i#2 w::b2#0 ] ( main:2::w:13 [ w::i#2 w::b2#0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ w::i#2 w::i#1 ]
|
||||
Statement [18] *((const byte*) SCREEN3#0 + (byte) w::i#2) ← (const byte) w::b#0 [ w::i#2 w::b2#0 ] ( main:2::w:13 [ w::i#2 w::b2#0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ w::i#2 w::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ w::b2#0 ]
|
||||
Statement [19] *((const byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0 [ w::i#2 ] ( main:2::w:13 [ w::i#2 ] ) always clobbers reg byte a
|
||||
Statement [6] (byte) main::b2#0 ← (byte/word/signed word/dword/signed dword) $c8 - (byte) main::b#2 [ main::b#2 main::b2#0 ] ( main:2 [ main::b#2 main::b2#0 ] ) always clobbers reg byte a
|
||||
@ -489,9 +487,9 @@ Uplift Scope [main] 27.5: zp ZP_BYTE:2 [ main::b#2 main::b#1 ] 22: zp ZP_BYTE:4
|
||||
Uplift Scope [w] 30.25: zp ZP_BYTE:3 [ w::i#2 w::i#1 ] 11: zp ZP_BYTE:6 [ w::b2#0 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 1016 combination reg byte x [ main::b#2 main::b#1 ] reg byte a [ main::b2#0 ] reg byte a [ main::sb#0 ]
|
||||
Uplifting [w] best 836 combination reg byte y [ w::i#2 w::i#1 ] reg byte x [ w::b2#0 ]
|
||||
Uplifting [] best 836 combination
|
||||
Uplifting [main] best 996 combination reg byte x [ main::b#2 main::b#1 ] reg byte a [ main::b2#0 ] reg byte a [ main::sb#0 ]
|
||||
Uplifting [w] best 816 combination reg byte y [ w::i#2 w::i#1 ] reg byte x [ w::b2#0 ]
|
||||
Uplifting [] best 816 combination
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 File Comments
|
||||
@ -585,9 +583,8 @@ w: {
|
||||
b1:
|
||||
//SEG34 [17] (byte) w::b2#0 ← (word/signed word/dword/signed dword) $578-(word/signed word/dword/signed dword) $546 + (byte) w::i#2 -- vbuxx=vbuc1_plus_vbuyy
|
||||
tya
|
||||
clc
|
||||
adc #$578-$546
|
||||
tax
|
||||
axs #-$578-$546
|
||||
//SEG35 [18] *((const byte*) SCREEN3#0 + (byte) w::i#2) ← (const byte) w::b#0 -- pbuc1_derefidx_vbuyy=vbuc2
|
||||
lda #b
|
||||
sta SCREEN3,y
|
||||
@ -688,7 +685,7 @@ reg byte x [ w::b2#0 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 668
|
||||
Score: 648
|
||||
|
||||
//SEG0 File Comments
|
||||
//SEG1 Basic Upstart
|
||||
@ -758,9 +755,8 @@ w: {
|
||||
b1:
|
||||
//SEG34 [17] (byte) w::b2#0 ← (word/signed word/dword/signed dword) $578-(word/signed word/dword/signed dword) $546 + (byte) w::i#2 -- vbuxx=vbuc1_plus_vbuyy
|
||||
tya
|
||||
clc
|
||||
adc #$578-$546
|
||||
tax
|
||||
axs #-$578-$546
|
||||
//SEG35 [18] *((const byte*) SCREEN3#0 + (byte) w::i#2) ← (const byte) w::b#0 -- pbuc1_derefidx_vbuyy=vbuc2
|
||||
lda #b
|
||||
sta SCREEN3,y
|
||||
|
@ -51,8 +51,8 @@ main: {
|
||||
inc sc+1
|
||||
!:
|
||||
inc y
|
||||
lda y
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp y
|
||||
bne b1
|
||||
lda #$37
|
||||
sta PROCPORT
|
||||
|
@ -451,8 +451,8 @@ main: {
|
||||
//SEG41 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuz1=_inc_vbuz1
|
||||
inc x
|
||||
//SEG42 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda x
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp x
|
||||
bne b2_from_b3
|
||||
jmp b5
|
||||
//SEG43 main::@5
|
||||
@ -468,8 +468,8 @@ main: {
|
||||
//SEG45 [19] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1
|
||||
inc y
|
||||
//SEG46 [20] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda y
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp y
|
||||
bne b1_from_b5
|
||||
jmp b6
|
||||
//SEG47 main::@6
|
||||
@ -488,25 +488,21 @@ main: {
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $32 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word/dword/signed dword) $80 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ main::x#2 main::x#1 ]
|
||||
Statement [13] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ main::x#2 main::x#1 ]
|
||||
Statement [18] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) $20 [ main::y#2 main::sc#2 ] ( main:2 [ main::y#2 main::sc#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::y#2 main::y#1 ]
|
||||
Statement [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $37 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $32 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word/dword/signed dword) $80 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ) always clobbers reg byte a
|
||||
Statement [13] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) always clobbers reg byte y
|
||||
Statement [18] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) $20 [ main::y#2 main::sc#2 ] ( main:2 [ main::y#2 main::sc#2 ] ) always clobbers reg byte a
|
||||
Statement [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $37 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ main::y#2 main::y#1 ] : zp ZP_BYTE:2 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] : zp ZP_BYTE:3 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x ,
|
||||
Potential registers zp ZP_WORD:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] : zp ZP_WORD:4 ,
|
||||
Potential registers zp ZP_BYTE:6 [ main::x#2 main::x#1 ] : zp ZP_BYTE:6 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:6 [ main::x#2 main::x#1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:7 [ main::c#2 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:8 [ main::$1 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
@ -515,7 +511,7 @@ Uplift Scope [main] 202: zp ZP_BYTE:8 [ main::$1 ] 176.75: zp ZP_BYTE:6 [ main::
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 7232 combination reg byte a [ main::$1 ] reg byte x [ main::x#2 main::x#1 ] zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] zp ZP_WORD:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] reg byte a [ main::c#2 ] zp ZP_BYTE:2 [ main::y#2 main::y#1 ]
|
||||
Limited combination testing to 100 combinations of 128 possible.
|
||||
Limited combination testing to 100 combinations of 288 possible.
|
||||
Uplifting [] best 7232 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
Uplifting [main] best 7232 combination zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
@ -646,8 +642,8 @@ main: {
|
||||
//SEG45 [19] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1
|
||||
inc y
|
||||
//SEG46 [20] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda y
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp y
|
||||
bne b1_from_b5
|
||||
jmp b6
|
||||
//SEG47 main::@6
|
||||
@ -854,8 +850,8 @@ main: {
|
||||
//SEG45 [19] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1
|
||||
inc y
|
||||
//SEG46 [20] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda y
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp y
|
||||
bne b1
|
||||
//SEG47 main::@6
|
||||
//SEG48 [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $37 -- _deref_pbuc1=vbuc2
|
||||
|
@ -48,8 +48,8 @@ main: {
|
||||
inc colors+1
|
||||
!:
|
||||
inc row
|
||||
lda row
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp row
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
|
@ -333,8 +333,8 @@ main: {
|
||||
//SEG32 [10] (byte) main::column#1 ← ++ (byte) main::column#2 -- vbuz1=_inc_vbuz1
|
||||
inc column
|
||||
//SEG33 [11] if((byte) main::column#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda column
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp column
|
||||
bne b2_from_b2
|
||||
jmp b3
|
||||
//SEG34 main::@3
|
||||
@ -362,8 +362,8 @@ main: {
|
||||
//SEG38 [15] (byte) main::row#1 ← ++ (byte) main::row#4 -- vbuz1=_inc_vbuz1
|
||||
inc row
|
||||
//SEG39 [16] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda row
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp row
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG40 main::@return
|
||||
@ -513,8 +513,8 @@ main: {
|
||||
//SEG38 [15] (byte) main::row#1 ← ++ (byte) main::row#4 -- vbuz1=_inc_vbuz1
|
||||
inc row
|
||||
//SEG39 [16] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda row
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp row
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG40 main::@return
|
||||
@ -682,8 +682,8 @@ main: {
|
||||
//SEG38 [15] (byte) main::row#1 ← ++ (byte) main::row#4 -- vbuz1=_inc_vbuz1
|
||||
inc row
|
||||
//SEG39 [16] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda row
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp row
|
||||
bne b1
|
||||
//SEG40 main::@return
|
||||
//SEG41 [17] return
|
||||
|
@ -23,12 +23,10 @@ irq: {
|
||||
stx regx+1
|
||||
lda #DARK_GREY
|
||||
sta BORDERCOL
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next
|
||||
// Setup next interrupt
|
||||
tax
|
||||
lax irq_raster_next
|
||||
axs #-$15
|
||||
stx irq_raster_next
|
||||
// Setup next interrupt
|
||||
txa
|
||||
and #7
|
||||
cmp #0
|
||||
|
@ -267,10 +267,9 @@ irq: {
|
||||
lda #DARK_GREY
|
||||
sta BORDERCOL
|
||||
//SEG18 [8] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz2_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next_1
|
||||
lax irq_raster_next
|
||||
axs #-$15
|
||||
stx irq_raster_next_1
|
||||
//SEG19 [9] (byte) irq::raster_next#0 ← (byte) irq_raster_next#1 -- vbuz1=vbuz2
|
||||
// Setup next interrupt
|
||||
lda irq_raster_next_1
|
||||
@ -318,19 +317,10 @@ REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] (byte) irq_raster_next#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a
|
||||
Statement [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3 [ ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 [ irq_raster_next#0 ] ( [ irq_raster_next#0 ] ) always clobbers reg byte a
|
||||
Statement [8] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a
|
||||
Statement [10] (byte~) irq::$0 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ irq::raster_next#0 irq::$0 ] ( [ irq::raster_next#0 irq::$0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ]
|
||||
Statement [8] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [15] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( [ ] ) always clobbers reg byte a
|
||||
Statement [16] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y
|
||||
Statement [1] (byte) irq_raster_next#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a
|
||||
Statement [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3 [ ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 [ irq_raster_next#0 ] ( [ irq_raster_next#0 ] ) always clobbers reg byte a
|
||||
Statement [8] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a
|
||||
Statement [10] (byte~) irq::$0 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ irq::raster_next#0 irq::$0 ] ( [ irq::raster_next#0 irq::$0 ] ) always clobbers reg byte a
|
||||
Statement [15] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( [ ] ) always clobbers reg byte a
|
||||
Statement [16] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y
|
||||
Potential registers zp ZP_BYTE:2 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:2 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:3 [ irq_raster_next#0 ] : zp ZP_BYTE:3 ,
|
||||
Potential registers zp ZP_BYTE:4 [ irq_raster_next#1 ] : zp ZP_BYTE:4 ,
|
||||
Potential registers zp ZP_BYTE:5 [ irq::$0 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y ,
|
||||
@ -340,16 +330,16 @@ Uplift Scope [irq] 12.67: zp ZP_BYTE:2 [ irq::raster_next#2 irq::raster_next#0 i
|
||||
Uplift Scope [] 4: zp ZP_BYTE:3 [ irq_raster_next#0 ] 4: zp ZP_BYTE:4 [ irq_raster_next#1 ]
|
||||
Uplift Scope [main]
|
||||
|
||||
Uplifting [irq] best 248 combination reg byte x [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] reg byte a [ irq::$0 ]
|
||||
Uplifting [] best 248 combination zp ZP_BYTE:3 [ irq_raster_next#0 ] zp ZP_BYTE:4 [ irq_raster_next#1 ]
|
||||
Uplifting [main] best 248 combination
|
||||
Uplifting [irq] best 246 combination reg byte x [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] reg byte a [ irq::$0 ]
|
||||
Uplifting [] best 246 combination zp ZP_BYTE:3 [ irq_raster_next#0 ] zp ZP_BYTE:4 [ irq_raster_next#1 ]
|
||||
Uplifting [main] best 246 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ irq_raster_next#0 ]
|
||||
Uplifting [] best 248 combination zp ZP_BYTE:3 [ irq_raster_next#0 ]
|
||||
Uplifting [] best 246 combination zp ZP_BYTE:3 [ irq_raster_next#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ irq_raster_next#1 ]
|
||||
Uplifting [] best 248 combination zp ZP_BYTE:4 [ irq_raster_next#1 ]
|
||||
Uplifting [] best 246 combination zp ZP_BYTE:4 [ irq_raster_next#1 ]
|
||||
Coalescing zero page register with common assignment [ zp ZP_BYTE:3 [ irq_raster_next#0 ] ] with [ zp ZP_BYTE:4 [ irq_raster_next#1 ] ] - score: 1
|
||||
Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ irq_raster_next#0 irq_raster_next#1 ]
|
||||
Interrupt procedure irq clobbers AXCNZV
|
||||
Interrupt procedure irq clobbers AXCNZ
|
||||
Removing interrupt register storage sty regy+1 in SEG16 entry interrupt(HARDWARE_CLOBBER)
|
||||
Removing interrupt register storage regy: in SEG30 [16] return - exit interrupt(HARDWARE_CLOBBER)
|
||||
Removing interrupt register storage ldy #00 in SEG30 [16] return - exit interrupt(HARDWARE_CLOBBER)
|
||||
@ -409,10 +399,9 @@ irq: {
|
||||
lda #DARK_GREY
|
||||
sta BORDERCOL
|
||||
//SEG18 [8] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next
|
||||
lax irq_raster_next
|
||||
axs #-$15
|
||||
stx irq_raster_next
|
||||
//SEG19 [9] (byte) irq::raster_next#0 ← (byte) irq_raster_next#1 -- vbuxx=vbuz1
|
||||
// Setup next interrupt
|
||||
ldx irq_raster_next
|
||||
@ -459,7 +448,8 @@ Removing instruction jmp b2
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing instruction ldx irq_raster_next with TAX
|
||||
Removing instruction ldx irq_raster_next
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
Replacing label b1_from_irq with b1
|
||||
Removing instruction b1:
|
||||
Removing instruction b2_from_b1:
|
||||
@ -510,7 +500,7 @@ reg byte a [ irq::$0 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 157
|
||||
Score: 153
|
||||
|
||||
//SEG0 File Comments
|
||||
//SEG1 Basic Upstart
|
||||
@ -556,13 +546,11 @@ irq: {
|
||||
lda #DARK_GREY
|
||||
sta BORDERCOL
|
||||
//SEG18 [8] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next
|
||||
lax irq_raster_next
|
||||
axs #-$15
|
||||
stx irq_raster_next
|
||||
//SEG19 [9] (byte) irq::raster_next#0 ← (byte) irq_raster_next#1 -- vbuxx=vbuz1
|
||||
// Setup next interrupt
|
||||
tax
|
||||
// Setup next interrupt
|
||||
//SEG20 [10] (byte~) irq::$0 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1
|
||||
txa
|
||||
and #7
|
||||
|
@ -178,11 +178,9 @@ main: {
|
||||
lda RASTER
|
||||
sta key
|
||||
//SEG13 [6] if((byte) main::key#0>(byte/signed byte/word/signed word/dword/signed dword) $20) goto main::@7 -- vbuz1_gt_vbuc1_then_la1
|
||||
lda key
|
||||
cmp #$20
|
||||
beq !+
|
||||
bcs b7_from_b2
|
||||
!:
|
||||
lda #$20
|
||||
cmp key
|
||||
bcc b7_from_b2
|
||||
jmp b9
|
||||
//SEG14 main::@9
|
||||
b9:
|
||||
|
@ -118,14 +118,12 @@ main: {
|
||||
sta SPRITES_COLS,y
|
||||
lda #toSpritePtr2_return
|
||||
sta PLAYFIELD_SPRITE_PTRS_1,y
|
||||
lda #$18
|
||||
clc
|
||||
adc xpos
|
||||
sta xpos
|
||||
lda #$18
|
||||
clc
|
||||
adc ypos
|
||||
sta ypos
|
||||
lax xpos
|
||||
axs #-$18
|
||||
stx xpos
|
||||
lax ypos
|
||||
axs #-$18
|
||||
stx ypos
|
||||
iny
|
||||
cpy #8
|
||||
bne b1
|
||||
@ -134,31 +132,27 @@ main: {
|
||||
rts
|
||||
}
|
||||
loop: {
|
||||
.label _1 = 9
|
||||
.label idx = 3
|
||||
.label s = 3
|
||||
lda #0
|
||||
sta sin_idx
|
||||
b4:
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b4
|
||||
lda sin_idx
|
||||
sta idx
|
||||
ldx #4
|
||||
ldx sin_idx
|
||||
lda #4
|
||||
sta s
|
||||
b5:
|
||||
txa
|
||||
lda s
|
||||
asl
|
||||
sta _1
|
||||
ldy idx
|
||||
lda SIN,y
|
||||
ldy _1
|
||||
tay
|
||||
lda SIN,x
|
||||
sta SPRITES_YPOS,y
|
||||
lda #$a
|
||||
clc
|
||||
adc idx
|
||||
sta idx
|
||||
inx
|
||||
cpx #8
|
||||
txa
|
||||
axs #-$a
|
||||
inc s
|
||||
lda #8
|
||||
cmp s
|
||||
bne b5
|
||||
inc sin_idx
|
||||
jmp b4
|
||||
@ -179,8 +173,8 @@ sprites_irq_init: {
|
||||
lda #CIA_INTERRUPT_CLEAR
|
||||
sta CIA1_INTERRUPT
|
||||
// Set raster line
|
||||
lda VIC_CONTROL
|
||||
and #$7f
|
||||
lda #$7f
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
lda #IRQ_RASTER_FIRST
|
||||
sta RASTER
|
||||
@ -206,21 +200,20 @@ sprites_init: {
|
||||
sta SPRITES_EXPAND_X
|
||||
lda #$18+$f*8
|
||||
sta xpos
|
||||
ldx #0
|
||||
ldy #0
|
||||
b1:
|
||||
txa
|
||||
tya
|
||||
asl
|
||||
tay
|
||||
tax
|
||||
lda xpos
|
||||
sta SPRITES_XPOS,y
|
||||
sta SPRITES_XPOS,x
|
||||
lda #BLACK
|
||||
sta SPRITES_COLS,x
|
||||
lda #$18
|
||||
clc
|
||||
adc xpos
|
||||
sta xpos
|
||||
inx
|
||||
cpx #4
|
||||
sta SPRITES_COLS,y
|
||||
lax xpos
|
||||
axs #-$18
|
||||
stx xpos
|
||||
iny
|
||||
cpy #4
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
@ -229,7 +222,7 @@ sprites_init: {
|
||||
// Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers
|
||||
sprites_irq: {
|
||||
.const toSpritePtr2_return = PLAYFIELD_SPRITES>>6
|
||||
.label raster_sprite_gfx_modify = $a
|
||||
.label raster_sprite_gfx_modify = 9
|
||||
sta rega+1
|
||||
stx regx+1
|
||||
//(*BGCOL)++;
|
||||
@ -254,9 +247,8 @@ sprites_irq: {
|
||||
cmp #0
|
||||
beq b2
|
||||
stx PLAYFIELD_SPRITE_PTRS_2
|
||||
inx
|
||||
txa
|
||||
clc
|
||||
adc #1
|
||||
sta PLAYFIELD_SPRITE_PTRS_2+1
|
||||
sta PLAYFIELD_SPRITE_PTRS_2+2
|
||||
clc
|
||||
@ -264,23 +256,21 @@ sprites_irq: {
|
||||
sta PLAYFIELD_SPRITE_PTRS_2+3
|
||||
b3:
|
||||
inc irq_cnt
|
||||
lda irq_cnt
|
||||
cmp #9
|
||||
lda #9
|
||||
cmp irq_cnt
|
||||
beq b4
|
||||
cmp #$a
|
||||
lda #$a
|
||||
cmp irq_cnt
|
||||
beq b5
|
||||
lda #$14
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_sprite_ypos
|
||||
sta irq_sprite_ypos
|
||||
lda #3
|
||||
clc
|
||||
adc irq_sprite_ptr
|
||||
sta irq_sprite_ptr
|
||||
lax irq_raster_next
|
||||
axs #-$14
|
||||
stx irq_raster_next
|
||||
lax irq_sprite_ypos
|
||||
axs #-$15
|
||||
stx irq_sprite_ypos
|
||||
lax irq_sprite_ptr
|
||||
axs #-3
|
||||
stx irq_sprite_ptr
|
||||
b7:
|
||||
// Setup next interrupt
|
||||
lda irq_raster_next
|
||||
@ -298,20 +288,17 @@ sprites_irq: {
|
||||
sta irq_cnt
|
||||
lda #IRQ_RASTER_FIRST
|
||||
sta irq_raster_next
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_sprite_ypos
|
||||
sta irq_sprite_ypos
|
||||
lda #3
|
||||
clc
|
||||
adc irq_sprite_ptr
|
||||
sta irq_sprite_ptr
|
||||
lax irq_sprite_ypos
|
||||
axs #-$15
|
||||
stx irq_sprite_ypos
|
||||
lax irq_sprite_ptr
|
||||
axs #-3
|
||||
stx irq_sprite_ptr
|
||||
jmp b7
|
||||
b4:
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next
|
||||
lax irq_raster_next
|
||||
axs #-$15
|
||||
stx irq_raster_next
|
||||
lda #SPRITES_FIRST_YPOS
|
||||
sta irq_sprite_ypos
|
||||
lda #toSpritePtr2_return
|
||||
@ -319,13 +306,11 @@ sprites_irq: {
|
||||
jmp b7
|
||||
b2:
|
||||
stx PLAYFIELD_SPRITE_PTRS_1
|
||||
inx
|
||||
stx PLAYFIELD_SPRITE_PTRS_1+1
|
||||
stx PLAYFIELD_SPRITE_PTRS_1+2
|
||||
inx
|
||||
txa
|
||||
clc
|
||||
adc #1
|
||||
sta PLAYFIELD_SPRITE_PTRS_1+1
|
||||
sta PLAYFIELD_SPRITE_PTRS_1+2
|
||||
clc
|
||||
adc #1
|
||||
sta PLAYFIELD_SPRITE_PTRS_1+3
|
||||
jmp b3
|
||||
}
|
||||
|
@ -2327,10 +2327,9 @@ main: {
|
||||
ldy s2
|
||||
sta SPRITES_YPOS,y
|
||||
//SEG50 [25] (byte/signed word/word/dword/signed dword~) main::$4 ← (byte) main::s#2 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_minus_vbuc1
|
||||
lda s
|
||||
sec
|
||||
sbc #3
|
||||
sta _4
|
||||
lax s
|
||||
axs #3
|
||||
stx _4
|
||||
//SEG51 [26] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte/signed word/word/dword/signed dword~) main::$4 -- pbuc1_derefidx_vbuz1=vbuz2
|
||||
lda _4
|
||||
ldy s
|
||||
@ -2344,24 +2343,22 @@ main: {
|
||||
//SEG54 main::@5
|
||||
b5:
|
||||
//SEG55 [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy s
|
||||
lda #toSpritePtr2_return
|
||||
ldy s
|
||||
sta PLAYFIELD_SPRITE_PTRS_1,y
|
||||
//SEG56 [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$18
|
||||
clc
|
||||
adc xpos
|
||||
sta xpos
|
||||
lax xpos
|
||||
axs #-$18
|
||||
stx xpos
|
||||
//SEG57 [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$18
|
||||
clc
|
||||
adc ypos
|
||||
sta ypos
|
||||
lax ypos
|
||||
axs #-$18
|
||||
stx ypos
|
||||
//SEG58 [31] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuz1=_inc_vbuz1
|
||||
inc s
|
||||
//SEG59 [32] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda s
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp s
|
||||
bne b1_from_b5
|
||||
//SEG60 [33] phi from main::@5 to main::@2 [phi:main::@5->main::@2]
|
||||
b2_from_b5:
|
||||
@ -2402,8 +2399,8 @@ loop: {
|
||||
//SEG73 loop::@4
|
||||
b4:
|
||||
//SEG74 [40] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b4
|
||||
jmp b8
|
||||
//SEG75 loop::@8
|
||||
@ -2435,15 +2432,14 @@ loop: {
|
||||
ldy _1
|
||||
sta SPRITES_YPOS,y
|
||||
//SEG86 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte/signed byte/word/signed word/dword/signed dword) $a -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$a
|
||||
clc
|
||||
adc idx
|
||||
sta idx
|
||||
lax idx
|
||||
axs #-$a
|
||||
stx idx
|
||||
//SEG87 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuz1=_inc_vbuz1
|
||||
inc s
|
||||
//SEG88 [47] if((byte) loop::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@5 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda s
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp s
|
||||
bne b5_from_b5
|
||||
jmp b9
|
||||
//SEG89 loop::@9
|
||||
@ -2479,8 +2475,8 @@ sprites_irq_init: {
|
||||
sta CIA1_INTERRUPT
|
||||
//SEG100 [55] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
||||
// Set raster line
|
||||
lda VIC_CONTROL
|
||||
and #$7f
|
||||
lda #$7f
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
//SEG101 [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2
|
||||
lda #IRQ_RASTER_FIRST
|
||||
@ -2546,19 +2542,18 @@ sprites_init: {
|
||||
ldy s2
|
||||
sta SPRITES_XPOS,y
|
||||
//SEG121 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy s
|
||||
lda #BLACK
|
||||
ldy s
|
||||
sta SPRITES_COLS,y
|
||||
//SEG122 [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$18
|
||||
clc
|
||||
adc xpos
|
||||
sta xpos
|
||||
lax xpos
|
||||
axs #-$18
|
||||
stx xpos
|
||||
//SEG123 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1
|
||||
inc s
|
||||
//SEG124 [71] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda s
|
||||
cmp #4
|
||||
lda #4
|
||||
cmp s
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG125 sprites_init::@return
|
||||
@ -2660,34 +2655,31 @@ sprites_irq: {
|
||||
iny
|
||||
sty irq_cnt_1
|
||||
//SEG151 [91] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1
|
||||
lda irq_cnt_1
|
||||
cmp #9
|
||||
lda #9
|
||||
cmp irq_cnt_1
|
||||
beq b4
|
||||
jmp b11
|
||||
//SEG152 sprites_irq::@11
|
||||
b11:
|
||||
//SEG153 [92] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1
|
||||
lda irq_cnt_1
|
||||
cmp #$a
|
||||
lda #$a
|
||||
cmp irq_cnt_1
|
||||
beq b5
|
||||
jmp b12
|
||||
//SEG154 sprites_irq::@12
|
||||
b12:
|
||||
//SEG155 [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 -- vbuz1=vbuz2_plus_vbuc1
|
||||
lda #$14
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next_3
|
||||
lax irq_raster_next
|
||||
axs #-$14
|
||||
stx irq_raster_next_3
|
||||
//SEG156 [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz2_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_sprite_ypos
|
||||
sta irq_sprite_ypos_3
|
||||
lax irq_sprite_ypos
|
||||
axs #-$15
|
||||
stx irq_sprite_ypos_3
|
||||
//SEG157 [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1
|
||||
lda #3
|
||||
clc
|
||||
adc irq_sprite_ptr
|
||||
sta irq_sprite_ptr_3
|
||||
lax irq_sprite_ptr
|
||||
axs #-3
|
||||
stx irq_sprite_ptr_3
|
||||
//SEG158 [96] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7]
|
||||
b7_from_b12:
|
||||
b7_from_b15:
|
||||
@ -2724,23 +2716,20 @@ sprites_irq: {
|
||||
lda #IRQ_RASTER_FIRST
|
||||
sta irq_raster_next_2
|
||||
//SEG168 [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz2_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_sprite_ypos
|
||||
sta irq_sprite_ypos_2
|
||||
lax irq_sprite_ypos
|
||||
axs #-$15
|
||||
stx irq_sprite_ypos_2
|
||||
//SEG169 [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1
|
||||
lda #3
|
||||
clc
|
||||
adc irq_sprite_ptr
|
||||
sta irq_sprite_ptr_2
|
||||
lax irq_sprite_ptr
|
||||
axs #-3
|
||||
stx irq_sprite_ptr_2
|
||||
jmp b7_from_b5
|
||||
//SEG170 sprites_irq::@4
|
||||
b4:
|
||||
//SEG171 [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz2_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next_1
|
||||
lax irq_raster_next
|
||||
axs #-$15
|
||||
stx irq_raster_next_1
|
||||
//SEG172 [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1
|
||||
lda #SPRITES_FIRST_YPOS
|
||||
sta irq_sprite_ypos_1
|
||||
@ -2859,17 +2848,17 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ s
|
||||
Statement [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte y
|
||||
Statement [91] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a
|
||||
Statement [92] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@5 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a
|
||||
Statement [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a
|
||||
Statement [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a
|
||||
Statement [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a
|
||||
Statement [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a
|
||||
Statement [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a
|
||||
Statement [99] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y
|
||||
Statement [100] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a
|
||||
Statement [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a
|
||||
Statement [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a
|
||||
Statement [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a
|
||||
Statement [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a
|
||||
Statement [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a
|
||||
Statement [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a
|
||||
Statement [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a
|
||||
@ -2914,17 +2903,17 @@ Statement [83] if((byte) render_screen_showing#0==(byte/signed byte/word/signed
|
||||
Statement [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte y
|
||||
Statement [91] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a
|
||||
Statement [92] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@5 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a
|
||||
Statement [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a
|
||||
Statement [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a
|
||||
Statement [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a
|
||||
Statement [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a
|
||||
Statement [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a
|
||||
Statement [99] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y
|
||||
Statement [100] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a
|
||||
Statement [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a
|
||||
Statement [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a
|
||||
Statement [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a
|
||||
Statement [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a
|
||||
Statement [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a reg byte x
|
||||
Statement [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a
|
||||
Statement [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ main::s#2 main::s#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
|
||||
@ -2970,62 +2959,60 @@ Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:8 [ sprites_init::s#2 sprites_init:
|
||||
Uplift Scope [sprites_irq] 6.5: zp ZP_BYTE:22 [ sprites_irq::raster_sprite_gfx_modify#0 ] 4: zp ZP_BYTE:21 [ sprites_irq::$0 ] 4: zp ZP_BYTE:25 [ sprites_irq::ptr#4 ] 4: zp ZP_BYTE:35 [ sprites_irq::ptr#2 ] 2.67: zp ZP_BYTE:24 [ sprites_irq::ptr#3 ] 2.67: zp ZP_BYTE:34 [ sprites_irq::ptr#1 ] 2.5: zp ZP_BYTE:20 [ sprites_irq::ypos#0 ] 2.5: zp ZP_BYTE:23 [ sprites_irq::ptr#0 ]
|
||||
Uplift Scope [sprites_irq_init]
|
||||
|
||||
Uplifting [loop] best 10035 combination reg byte x [ loop::s#2 loop::s#1 ] zp ZP_BYTE:18 [ loop::$1 ] zp ZP_BYTE:7 [ loop::idx#2 loop::idx#1 loop::idx#0 ]
|
||||
Uplifting [] best 10035 combination zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ] zp ZP_BYTE:27 [ irq_sprite_ypos#3 ] zp ZP_BYTE:28 [ irq_sprite_ptr#3 ] zp ZP_BYTE:29 [ irq_cnt#2 ] zp ZP_BYTE:30 [ irq_sprite_ypos#2 ] zp ZP_BYTE:31 [ irq_sprite_ptr#2 ] zp ZP_BYTE:32 [ irq_sprite_ypos#1 ] zp ZP_BYTE:33 [ irq_sprite_ptr#1 ] zp ZP_BYTE:10 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] zp ZP_BYTE:26 [ irq_cnt#1 ] zp ZP_BYTE:11 [ render_screen_showing#0 ] zp ZP_BYTE:12 [ irq_raster_next#0 ] zp ZP_BYTE:13 [ irq_sprite_ypos#0 ] zp ZP_BYTE:14 [ irq_sprite_ptr#0 ] zp ZP_BYTE:15 [ irq_cnt#0 ]
|
||||
Uplifting [main] best 9735 combination reg byte y [ main::s#2 main::s#1 ] reg byte a [ main::$4 ] reg byte x [ main::s2#0 ] zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ]
|
||||
Uplifting [loop] best 9613 combination zp ZP_BYTE:6 [ loop::s#2 loop::s#1 ] reg byte a [ loop::$1 ] reg byte x [ loop::idx#2 loop::idx#1 loop::idx#0 ]
|
||||
Uplifting [] best 9613 combination zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ] zp ZP_BYTE:27 [ irq_sprite_ypos#3 ] zp ZP_BYTE:28 [ irq_sprite_ptr#3 ] zp ZP_BYTE:29 [ irq_cnt#2 ] zp ZP_BYTE:30 [ irq_sprite_ypos#2 ] zp ZP_BYTE:31 [ irq_sprite_ptr#2 ] zp ZP_BYTE:32 [ irq_sprite_ypos#1 ] zp ZP_BYTE:33 [ irq_sprite_ptr#1 ] zp ZP_BYTE:10 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] zp ZP_BYTE:26 [ irq_cnt#1 ] zp ZP_BYTE:11 [ render_screen_showing#0 ] zp ZP_BYTE:12 [ irq_raster_next#0 ] zp ZP_BYTE:13 [ irq_sprite_ypos#0 ] zp ZP_BYTE:14 [ irq_sprite_ptr#0 ] zp ZP_BYTE:15 [ irq_cnt#0 ]
|
||||
Uplifting [main] best 9333 combination reg byte y [ main::s#2 main::s#1 ] reg byte a [ main::$4 ] reg byte x [ main::s2#0 ] zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ]
|
||||
Limited combination testing to 100 combinations of 324 possible.
|
||||
Uplifting [sprites_init] best 9565 combination reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte a [ sprites_init::s2#0 ] zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
|
||||
Uplifting [sprites_irq] best 9541 combination zp ZP_BYTE:22 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:34 [ sprites_irq::ptr#1 ] zp ZP_BYTE:20 [ sprites_irq::ypos#0 ] zp ZP_BYTE:23 [ sprites_irq::ptr#0 ]
|
||||
Uplifting [sprites_init] best 9163 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
|
||||
Uplifting [sprites_irq] best 9139 combination zp ZP_BYTE:22 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:34 [ sprites_irq::ptr#1 ] zp ZP_BYTE:20 [ sprites_irq::ypos#0 ] zp ZP_BYTE:23 [ sprites_irq::ptr#0 ]
|
||||
Limited combination testing to 100 combinations of 12288 possible.
|
||||
Uplifting [sprites_irq_init] best 9541 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:18 [ loop::$1 ]
|
||||
Uplifting [loop] best 9541 combination zp ZP_BYTE:18 [ loop::$1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ loop::idx#2 loop::idx#1 loop::idx#0 ]
|
||||
Uplifting [loop] best 9541 combination zp ZP_BYTE:7 [ loop::idx#2 loop::idx#1 loop::idx#0 ]
|
||||
Uplifting [sprites_irq_init] best 9139 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ loop::s#2 loop::s#1 ]
|
||||
Uplifting [loop] best 9139 combination zp ZP_BYTE:6 [ loop::s#2 loop::s#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ]
|
||||
Uplifting [] best 9541 combination zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ]
|
||||
Uplifting [] best 9139 combination zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:27 [ irq_sprite_ypos#3 ]
|
||||
Uplifting [] best 9541 combination zp ZP_BYTE:27 [ irq_sprite_ypos#3 ]
|
||||
Uplifting [] best 9139 combination zp ZP_BYTE:27 [ irq_sprite_ypos#3 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:28 [ irq_sprite_ptr#3 ]
|
||||
Uplifting [] best 9541 combination zp ZP_BYTE:28 [ irq_sprite_ptr#3 ]
|
||||
Uplifting [] best 9139 combination zp ZP_BYTE:28 [ irq_sprite_ptr#3 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:29 [ irq_cnt#2 ]
|
||||
Uplifting [] best 9541 combination zp ZP_BYTE:29 [ irq_cnt#2 ]
|
||||
Uplifting [] best 9139 combination zp ZP_BYTE:29 [ irq_cnt#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:30 [ irq_sprite_ypos#2 ]
|
||||
Uplifting [] best 9541 combination zp ZP_BYTE:30 [ irq_sprite_ypos#2 ]
|
||||
Uplifting [] best 9139 combination zp ZP_BYTE:30 [ irq_sprite_ypos#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:31 [ irq_sprite_ptr#2 ]
|
||||
Uplifting [] best 9541 combination zp ZP_BYTE:31 [ irq_sprite_ptr#2 ]
|
||||
Uplifting [] best 9139 combination zp ZP_BYTE:31 [ irq_sprite_ptr#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:32 [ irq_sprite_ypos#1 ]
|
||||
Uplifting [] best 9541 combination zp ZP_BYTE:32 [ irq_sprite_ypos#1 ]
|
||||
Uplifting [] best 9139 combination zp ZP_BYTE:32 [ irq_sprite_ypos#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:33 [ irq_sprite_ptr#1 ]
|
||||
Uplifting [] best 9541 combination zp ZP_BYTE:33 [ irq_sprite_ptr#1 ]
|
||||
Uplifting [] best 9139 combination zp ZP_BYTE:33 [ irq_sprite_ptr#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
|
||||
Uplifting [sprites_init] best 9541 combination zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
|
||||
Uplifting [sprites_init] best 9139 combination zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:10 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ]
|
||||
Uplifting [] best 9541 combination zp ZP_BYTE:10 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ]
|
||||
Uplifting [] best 9139 combination zp ZP_BYTE:10 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ]
|
||||
Uplifting [main] best 9541 combination zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ]
|
||||
Uplifting [main] best 9139 combination zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ]
|
||||
Uplifting [main] best 9541 combination zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ]
|
||||
Uplifting [main] best 9139 combination zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:22 [ sprites_irq::raster_sprite_gfx_modify#0 ]
|
||||
Uplifting [sprites_irq] best 9541 combination zp ZP_BYTE:22 [ sprites_irq::raster_sprite_gfx_modify#0 ]
|
||||
Uplifting [sprites_irq] best 9139 combination zp ZP_BYTE:22 [ sprites_irq::raster_sprite_gfx_modify#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:26 [ irq_cnt#1 ]
|
||||
Uplifting [] best 9541 combination zp ZP_BYTE:26 [ irq_cnt#1 ]
|
||||
Uplifting [] best 9139 combination zp ZP_BYTE:26 [ irq_cnt#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:34 [ sprites_irq::ptr#1 ]
|
||||
Uplifting [sprites_irq] best 9531 combination reg byte a [ sprites_irq::ptr#1 ]
|
||||
Uplifting [sprites_irq] best 9127 combination reg byte x [ sprites_irq::ptr#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:20 [ sprites_irq::ypos#0 ]
|
||||
Uplifting [sprites_irq] best 9516 combination reg byte a [ sprites_irq::ypos#0 ]
|
||||
Uplifting [sprites_irq] best 9112 combination reg byte a [ sprites_irq::ypos#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:23 [ sprites_irq::ptr#0 ]
|
||||
Uplifting [sprites_irq] best 9505 combination reg byte x [ sprites_irq::ptr#0 ]
|
||||
Uplifting [sprites_irq] best 9097 combination reg byte x [ sprites_irq::ptr#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_screen_showing#0 ]
|
||||
Uplifting [] best 9505 combination zp ZP_BYTE:11 [ render_screen_showing#0 ]
|
||||
Uplifting [] best 9097 combination zp ZP_BYTE:11 [ render_screen_showing#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:12 [ irq_raster_next#0 ]
|
||||
Uplifting [] best 9505 combination zp ZP_BYTE:12 [ irq_raster_next#0 ]
|
||||
Uplifting [] best 9097 combination zp ZP_BYTE:12 [ irq_raster_next#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ irq_sprite_ypos#0 ]
|
||||
Uplifting [] best 9505 combination zp ZP_BYTE:13 [ irq_sprite_ypos#0 ]
|
||||
Uplifting [] best 9097 combination zp ZP_BYTE:13 [ irq_sprite_ypos#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:14 [ irq_sprite_ptr#0 ]
|
||||
Uplifting [] best 9505 combination zp ZP_BYTE:14 [ irq_sprite_ptr#0 ]
|
||||
Uplifting [] best 9097 combination zp ZP_BYTE:14 [ irq_sprite_ptr#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:15 [ irq_cnt#0 ]
|
||||
Uplifting [] best 9505 combination zp ZP_BYTE:15 [ irq_cnt#0 ]
|
||||
Uplifting [] best 9097 combination zp ZP_BYTE:15 [ irq_cnt#0 ]
|
||||
Coalescing zero page register with common assignment [ zp ZP_BYTE:10 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] ] with [ zp ZP_BYTE:12 [ irq_raster_next#0 ] ] - score: 2
|
||||
Coalescing zero page register with common assignment [ zp ZP_BYTE:13 [ irq_sprite_ypos#0 ] ] with [ zp ZP_BYTE:27 [ irq_sprite_ypos#3 ] ] - score: 1
|
||||
Coalescing zero page register with common assignment [ zp ZP_BYTE:13 [ irq_sprite_ypos#0 irq_sprite_ypos#3 ] ] with [ zp ZP_BYTE:30 [ irq_sprite_ypos#2 ] ] - score: 1
|
||||
@ -3034,19 +3021,18 @@ Coalescing zero page register with common assignment [ zp ZP_BYTE:14 [ irq_sprit
|
||||
Coalescing zero page register with common assignment [ zp ZP_BYTE:15 [ irq_cnt#0 ] ] with [ zp ZP_BYTE:26 [ irq_cnt#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ] ] with [ zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 sin_idx#10 sin_idx#3 ] ] with [ zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] ] with [ zp ZP_BYTE:7 [ loop::idx#2 loop::idx#1 loop::idx#0 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] ] with [ zp ZP_BYTE:6 [ loop::s#2 loop::s#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:13 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 ] ] with [ zp ZP_BYTE:32 [ irq_sprite_ypos#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:14 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 ] ] with [ zp ZP_BYTE:33 [ irq_sprite_ptr#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:15 [ irq_cnt#0 irq_cnt#1 ] ] with [ zp ZP_BYTE:29 [ irq_cnt#2 ] ]
|
||||
Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ main::xpos#2 main::xpos#1 sin_idx#10 sin_idx#3 sprites_init::xpos#2 sprites_init::xpos#1 ]
|
||||
Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:3 [ main::ypos#2 main::ypos#1 loop::idx#2 loop::idx#1 loop::idx#0 ]
|
||||
Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:3 [ main::ypos#2 main::ypos#1 loop::s#2 loop::s#1 ]
|
||||
Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:4 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ]
|
||||
Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:5 [ render_screen_showing#0 ]
|
||||
Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:6 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 irq_sprite_ypos#1 ]
|
||||
Allocated (was zp ZP_BYTE:14) zp ZP_BYTE:7 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 irq_sprite_ptr#1 ]
|
||||
Allocated (was zp ZP_BYTE:15) zp ZP_BYTE:8 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ]
|
||||
Allocated (was zp ZP_BYTE:18) zp ZP_BYTE:9 [ loop::$1 ]
|
||||
Allocated (was zp ZP_BYTE:22) zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ]
|
||||
Allocated (was zp ZP_BYTE:22) zp ZP_BYTE:9 [ sprites_irq::raster_sprite_gfx_modify#0 ]
|
||||
Interrupt procedure sprites_irq clobbers AXCNZV
|
||||
Removing interrupt register storage sty regy+1 in SEG128 entry interrupt(HARDWARE_CLOBBER)
|
||||
Removing interrupt register storage regy: in SEG164 [99] return - exit interrupt(HARDWARE_CLOBBER)
|
||||
@ -3271,15 +3257,13 @@ main: {
|
||||
lda #toSpritePtr2_return
|
||||
sta PLAYFIELD_SPRITE_PTRS_1,y
|
||||
//SEG56 [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$18
|
||||
clc
|
||||
adc xpos
|
||||
sta xpos
|
||||
lax xpos
|
||||
axs #-$18
|
||||
stx xpos
|
||||
//SEG57 [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$18
|
||||
clc
|
||||
adc ypos
|
||||
sta ypos
|
||||
lax ypos
|
||||
axs #-$18
|
||||
stx ypos
|
||||
//SEG58 [31] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuyy=_inc_vbuyy
|
||||
iny
|
||||
//SEG59 [32] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuyy_neq_vbuc1_then_la1
|
||||
@ -3309,8 +3293,7 @@ main: {
|
||||
}
|
||||
//SEG69 loop
|
||||
loop: {
|
||||
.label _1 = 9
|
||||
.label idx = 3
|
||||
.label s = 3
|
||||
//SEG70 [39] phi from loop to loop::@1 [phi:loop->loop::@1]
|
||||
b1_from_loop:
|
||||
//SEG71 [39] phi (byte) sin_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1
|
||||
@ -3323,20 +3306,20 @@ loop: {
|
||||
//SEG73 loop::@4
|
||||
b4:
|
||||
//SEG74 [40] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b4
|
||||
jmp b8
|
||||
//SEG75 loop::@8
|
||||
b8:
|
||||
//SEG76 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuz1=vbuz2
|
||||
lda sin_idx
|
||||
sta idx
|
||||
//SEG76 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuxx=vbuz1
|
||||
ldx sin_idx
|
||||
//SEG77 [42] phi from loop::@8 to loop::@5 [phi:loop::@8->loop::@5]
|
||||
b5_from_b8:
|
||||
//SEG78 [42] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@8->loop::@5#0] -- register_copy
|
||||
//SEG79 [42] phi (byte) loop::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:loop::@8->loop::@5#1] -- vbuxx=vbuc1
|
||||
ldx #4
|
||||
//SEG79 [42] phi (byte) loop::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:loop::@8->loop::@5#1] -- vbuz1=vbuc1
|
||||
lda #4
|
||||
sta s
|
||||
jmp b5
|
||||
//SEG80 [42] phi from loop::@5 to loop::@5 [phi:loop::@5->loop::@5]
|
||||
b5_from_b5:
|
||||
@ -3345,24 +3328,21 @@ loop: {
|
||||
jmp b5
|
||||
//SEG83 loop::@5
|
||||
b5:
|
||||
//SEG84 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1
|
||||
txa
|
||||
//SEG84 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1
|
||||
lda s
|
||||
asl
|
||||
sta _1
|
||||
//SEG85 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
|
||||
ldy idx
|
||||
lda SIN,y
|
||||
ldy _1
|
||||
//SEG85 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuxx
|
||||
tay
|
||||
lda SIN,x
|
||||
sta SPRITES_YPOS,y
|
||||
//SEG86 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte/signed byte/word/signed word/dword/signed dword) $a -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$a
|
||||
clc
|
||||
adc idx
|
||||
sta idx
|
||||
//SEG87 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuxx=_inc_vbuxx
|
||||
inx
|
||||
//SEG88 [47] if((byte) loop::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@5 -- vbuxx_neq_vbuc1_then_la1
|
||||
cpx #8
|
||||
//SEG86 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte/signed byte/word/signed word/dword/signed dword) $a -- vbuxx=vbuxx_plus_vbuc1
|
||||
txa
|
||||
axs #-$a
|
||||
//SEG87 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuz1=_inc_vbuz1
|
||||
inc s
|
||||
//SEG88 [47] if((byte) loop::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@5 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda #8
|
||||
cmp s
|
||||
bne b5_from_b5
|
||||
jmp b9
|
||||
//SEG89 loop::@9
|
||||
@ -3398,8 +3378,8 @@ sprites_irq_init: {
|
||||
sta CIA1_INTERRUPT
|
||||
//SEG100 [55] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
||||
// Set raster line
|
||||
lda VIC_CONTROL
|
||||
and #$7f
|
||||
lda #$7f
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
//SEG101 [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2
|
||||
lda #IRQ_RASTER_FIRST
|
||||
@ -3443,8 +3423,8 @@ sprites_init: {
|
||||
//SEG113 [65] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1
|
||||
lda #$18+$f*8
|
||||
sta xpos
|
||||
//SEG114 [65] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
//SEG114 [65] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1
|
||||
ldy #0
|
||||
jmp b1
|
||||
//SEG115 [65] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1]
|
||||
b1_from_b1:
|
||||
@ -3453,25 +3433,24 @@ sprites_init: {
|
||||
jmp b1
|
||||
//SEG118 sprites_init::@1
|
||||
b1:
|
||||
//SEG119 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1
|
||||
txa
|
||||
//SEG119 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1
|
||||
tya
|
||||
asl
|
||||
//SEG120 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1
|
||||
tay
|
||||
tax
|
||||
//SEG120 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1
|
||||
lda xpos
|
||||
sta SPRITES_XPOS,y
|
||||
//SEG121 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2
|
||||
sta SPRITES_XPOS,x
|
||||
//SEG121 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2
|
||||
lda #BLACK
|
||||
sta SPRITES_COLS,x
|
||||
sta SPRITES_COLS,y
|
||||
//SEG122 [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$18
|
||||
clc
|
||||
adc xpos
|
||||
sta xpos
|
||||
//SEG123 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx
|
||||
inx
|
||||
//SEG124 [71] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1
|
||||
cpx #4
|
||||
lax xpos
|
||||
axs #-$18
|
||||
stx xpos
|
||||
//SEG123 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy
|
||||
iny
|
||||
//SEG124 [71] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1
|
||||
cpy #4
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG125 sprites_init::@return
|
||||
@ -3485,7 +3464,7 @@ sprites_init: {
|
||||
// Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers
|
||||
sprites_irq: {
|
||||
.const toSpritePtr2_return = PLAYFIELD_SPRITES>>6
|
||||
.label raster_sprite_gfx_modify = $a
|
||||
.label raster_sprite_gfx_modify = 9
|
||||
//SEG128 entry interrupt(HARDWARE_CLOBBER)
|
||||
sta rega+1
|
||||
stx regx+1
|
||||
@ -3532,9 +3511,8 @@ sprites_irq: {
|
||||
//SEG143 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx
|
||||
stx PLAYFIELD_SPRITE_PTRS_2
|
||||
//SEG144 [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx
|
||||
inx
|
||||
txa
|
||||
clc
|
||||
adc #1
|
||||
//SEG145 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa
|
||||
sta PLAYFIELD_SPRITE_PTRS_2+1
|
||||
//SEG146 [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa
|
||||
@ -3550,34 +3528,31 @@ sprites_irq: {
|
||||
//SEG150 [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1
|
||||
inc irq_cnt
|
||||
//SEG151 [91] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1
|
||||
lda irq_cnt
|
||||
cmp #9
|
||||
lda #9
|
||||
cmp irq_cnt
|
||||
beq b4
|
||||
jmp b11
|
||||
//SEG152 sprites_irq::@11
|
||||
b11:
|
||||
//SEG153 [92] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1
|
||||
lda irq_cnt
|
||||
cmp #$a
|
||||
lda #$a
|
||||
cmp irq_cnt
|
||||
beq b5
|
||||
jmp b12
|
||||
//SEG154 sprites_irq::@12
|
||||
b12:
|
||||
//SEG155 [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$14
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next
|
||||
lax irq_raster_next
|
||||
axs #-$14
|
||||
stx irq_raster_next
|
||||
//SEG156 [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_sprite_ypos
|
||||
sta irq_sprite_ypos
|
||||
lax irq_sprite_ypos
|
||||
axs #-$15
|
||||
stx irq_sprite_ypos
|
||||
//SEG157 [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #3
|
||||
clc
|
||||
adc irq_sprite_ptr
|
||||
sta irq_sprite_ptr
|
||||
lax irq_sprite_ptr
|
||||
axs #-3
|
||||
stx irq_sprite_ptr
|
||||
//SEG158 [96] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7]
|
||||
b7_from_b12:
|
||||
b7_from_b15:
|
||||
@ -3612,23 +3587,20 @@ sprites_irq: {
|
||||
lda #IRQ_RASTER_FIRST
|
||||
sta irq_raster_next
|
||||
//SEG168 [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_sprite_ypos
|
||||
sta irq_sprite_ypos
|
||||
lax irq_sprite_ypos
|
||||
axs #-$15
|
||||
stx irq_sprite_ypos
|
||||
//SEG169 [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #3
|
||||
clc
|
||||
adc irq_sprite_ptr
|
||||
sta irq_sprite_ptr
|
||||
lax irq_sprite_ptr
|
||||
axs #-3
|
||||
stx irq_sprite_ptr
|
||||
jmp b7_from_b5
|
||||
//SEG170 sprites_irq::@4
|
||||
b4:
|
||||
//SEG171 [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next
|
||||
lax irq_raster_next
|
||||
axs #-$15
|
||||
stx irq_raster_next
|
||||
//SEG172 [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1
|
||||
lda #SPRITES_FIRST_YPOS
|
||||
sta irq_sprite_ypos
|
||||
@ -3648,17 +3620,15 @@ sprites_irq: {
|
||||
b2:
|
||||
//SEG178 [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx
|
||||
stx PLAYFIELD_SPRITE_PTRS_1
|
||||
//SEG179 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx
|
||||
//SEG179 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx
|
||||
inx
|
||||
//SEG180 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx
|
||||
stx PLAYFIELD_SPRITE_PTRS_1+1
|
||||
//SEG181 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx
|
||||
stx PLAYFIELD_SPRITE_PTRS_1+2
|
||||
//SEG182 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx
|
||||
inx
|
||||
txa
|
||||
clc
|
||||
adc #1
|
||||
//SEG180 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa
|
||||
sta PLAYFIELD_SPRITE_PTRS_1+1
|
||||
//SEG181 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa
|
||||
sta PLAYFIELD_SPRITE_PTRS_1+2
|
||||
//SEG182 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa
|
||||
clc
|
||||
adc #1
|
||||
//SEG183 [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa
|
||||
sta PLAYFIELD_SPRITE_PTRS_1+3
|
||||
jmp b3
|
||||
@ -3795,8 +3765,6 @@ Removing instruction jmp b1
|
||||
Removing instruction jmp b5
|
||||
Removing instruction jmp b1
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction lda irq_cnt
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @10
|
||||
@ -3964,19 +3932,19 @@ FINAL SYMBOL TABLE
|
||||
(byte) level_bcd
|
||||
(word) lines_bcd
|
||||
(void()) loop()
|
||||
(byte~) loop::$1 $1 zp ZP_BYTE:9 202.0
|
||||
(byte~) loop::$1 reg byte a 202.0
|
||||
(label) loop::@1
|
||||
(label) loop::@4
|
||||
(label) loop::@5
|
||||
(label) loop::@8
|
||||
(label) loop::@9
|
||||
(byte) loop::idx
|
||||
(byte) loop::idx#0 idx zp ZP_BYTE:3 22.0
|
||||
(byte) loop::idx#1 idx zp ZP_BYTE:3 67.33333333333333
|
||||
(byte) loop::idx#2 idx zp ZP_BYTE:3 104.66666666666666
|
||||
(byte) loop::idx#0 reg byte x 22.0
|
||||
(byte) loop::idx#1 reg byte x 67.33333333333333
|
||||
(byte) loop::idx#2 reg byte x 104.66666666666666
|
||||
(byte) loop::s
|
||||
(byte) loop::s#1 reg byte x 151.5
|
||||
(byte) loop::s#2 reg byte x 75.75
|
||||
(byte) loop::s#1 s zp ZP_BYTE:3 151.5
|
||||
(byte) loop::s#2 s zp ZP_BYTE:3 75.75
|
||||
(void()) main()
|
||||
(byte/signed word/word/dword/signed dword~) main::$4 reg byte a 22.0
|
||||
(label) main::@1
|
||||
@ -4043,10 +4011,10 @@ FINAL SYMBOL TABLE
|
||||
(label) sprites_init::@1
|
||||
(label) sprites_init::@return
|
||||
(byte) sprites_init::s
|
||||
(byte) sprites_init::s#1 reg byte x 16.5
|
||||
(byte) sprites_init::s#2 reg byte x 8.8
|
||||
(byte) sprites_init::s#1 reg byte y 16.5
|
||||
(byte) sprites_init::s#2 reg byte y 8.8
|
||||
(byte) sprites_init::s2
|
||||
(byte) sprites_init::s2#0 reg byte a 22.0
|
||||
(byte) sprites_init::s2#0 reg byte x 22.0
|
||||
(byte) sprites_init::xpos
|
||||
(byte) sprites_init::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333
|
||||
(byte) sprites_init::xpos#2 xpos zp ZP_BYTE:2 8.25
|
||||
@ -4066,12 +4034,12 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq()
|
||||
(label) sprites_irq::@return
|
||||
(byte) sprites_irq::ptr
|
||||
(byte) sprites_irq::ptr#0 reg byte x 2.5
|
||||
(byte) sprites_irq::ptr#1 reg byte a 2.6666666666666665
|
||||
(byte) sprites_irq::ptr#1 reg byte x 2.6666666666666665
|
||||
(byte) sprites_irq::ptr#2 reg byte a 4.0
|
||||
(byte) sprites_irq::ptr#3 reg byte a 2.6666666666666665
|
||||
(byte) sprites_irq::ptr#4 reg byte a 4.0
|
||||
(byte) sprites_irq::raster_sprite_gfx_modify
|
||||
(byte) sprites_irq::raster_sprite_gfx_modify#0 raster_sprite_gfx_modify zp ZP_BYTE:10 6.5
|
||||
(byte) sprites_irq::raster_sprite_gfx_modify#0 raster_sprite_gfx_modify zp ZP_BYTE:9 6.5
|
||||
(label) sprites_irq::toSpritePtr2
|
||||
(word~) sprites_irq::toSpritePtr2_$0
|
||||
(word~) sprites_irq::toSpritePtr2_$1
|
||||
@ -4093,9 +4061,9 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq()
|
||||
|
||||
reg byte y [ main::s#2 main::s#1 ]
|
||||
zp ZP_BYTE:2 [ main::xpos#2 main::xpos#1 sin_idx#10 sin_idx#3 sprites_init::xpos#2 sprites_init::xpos#1 ]
|
||||
zp ZP_BYTE:3 [ main::ypos#2 main::ypos#1 loop::idx#2 loop::idx#1 loop::idx#0 ]
|
||||
reg byte x [ loop::s#2 loop::s#1 ]
|
||||
reg byte x [ sprites_init::s#2 sprites_init::s#1 ]
|
||||
zp ZP_BYTE:3 [ main::ypos#2 main::ypos#1 loop::s#2 loop::s#1 ]
|
||||
reg byte x [ loop::idx#2 loop::idx#1 loop::idx#0 ]
|
||||
reg byte y [ sprites_init::s#2 sprites_init::s#1 ]
|
||||
zp ZP_BYTE:4 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ]
|
||||
zp ZP_BYTE:5 [ render_screen_showing#0 ]
|
||||
zp ZP_BYTE:6 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 irq_sprite_ypos#1 ]
|
||||
@ -4103,20 +4071,20 @@ zp ZP_BYTE:7 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 irq_sprite_ptr
|
||||
zp ZP_BYTE:8 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ]
|
||||
reg byte x [ main::s2#0 ]
|
||||
reg byte a [ main::$4 ]
|
||||
zp ZP_BYTE:9 [ loop::$1 ]
|
||||
reg byte a [ sprites_init::s2#0 ]
|
||||
reg byte a [ loop::$1 ]
|
||||
reg byte x [ sprites_init::s2#0 ]
|
||||
reg byte a [ sprites_irq::ypos#0 ]
|
||||
reg byte x [ sprites_irq::$0 ]
|
||||
zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ]
|
||||
zp ZP_BYTE:9 [ sprites_irq::raster_sprite_gfx_modify#0 ]
|
||||
reg byte x [ sprites_irq::ptr#0 ]
|
||||
reg byte a [ sprites_irq::ptr#3 ]
|
||||
reg byte a [ sprites_irq::ptr#4 ]
|
||||
reg byte a [ sprites_irq::ptr#1 ]
|
||||
reg byte x [ sprites_irq::ptr#1 ]
|
||||
reg byte a [ sprites_irq::ptr#2 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 7709
|
||||
Score: 7304
|
||||
|
||||
//SEG0 File Comments
|
||||
//SEG1 Basic Upstart
|
||||
@ -4295,15 +4263,13 @@ main: {
|
||||
lda #toSpritePtr2_return
|
||||
sta PLAYFIELD_SPRITE_PTRS_1,y
|
||||
//SEG56 [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$18
|
||||
clc
|
||||
adc xpos
|
||||
sta xpos
|
||||
lax xpos
|
||||
axs #-$18
|
||||
stx xpos
|
||||
//SEG57 [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$18
|
||||
clc
|
||||
adc ypos
|
||||
sta ypos
|
||||
lax ypos
|
||||
axs #-$18
|
||||
stx ypos
|
||||
//SEG58 [31] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuyy=_inc_vbuyy
|
||||
iny
|
||||
//SEG59 [32] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuyy_neq_vbuc1_then_la1
|
||||
@ -4324,8 +4290,7 @@ main: {
|
||||
}
|
||||
//SEG69 loop
|
||||
loop: {
|
||||
.label _1 = 9
|
||||
.label idx = 3
|
||||
.label s = 3
|
||||
//SEG70 [39] phi from loop to loop::@1 [phi:loop->loop::@1]
|
||||
//SEG71 [39] phi (byte) sin_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
@ -4334,40 +4299,37 @@ loop: {
|
||||
//SEG73 loop::@4
|
||||
b4:
|
||||
//SEG74 [40] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b4
|
||||
//SEG75 loop::@8
|
||||
//SEG76 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuz1=vbuz2
|
||||
lda sin_idx
|
||||
sta idx
|
||||
//SEG76 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuxx=vbuz1
|
||||
ldx sin_idx
|
||||
//SEG77 [42] phi from loop::@8 to loop::@5 [phi:loop::@8->loop::@5]
|
||||
//SEG78 [42] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@8->loop::@5#0] -- register_copy
|
||||
//SEG79 [42] phi (byte) loop::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:loop::@8->loop::@5#1] -- vbuxx=vbuc1
|
||||
ldx #4
|
||||
//SEG79 [42] phi (byte) loop::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:loop::@8->loop::@5#1] -- vbuz1=vbuc1
|
||||
lda #4
|
||||
sta s
|
||||
//SEG80 [42] phi from loop::@5 to loop::@5 [phi:loop::@5->loop::@5]
|
||||
//SEG81 [42] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@5->loop::@5#0] -- register_copy
|
||||
//SEG82 [42] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@5->loop::@5#1] -- register_copy
|
||||
//SEG83 loop::@5
|
||||
b5:
|
||||
//SEG84 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1
|
||||
txa
|
||||
//SEG84 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1
|
||||
lda s
|
||||
asl
|
||||
sta _1
|
||||
//SEG85 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
|
||||
ldy idx
|
||||
lda SIN,y
|
||||
ldy _1
|
||||
//SEG85 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuxx
|
||||
tay
|
||||
lda SIN,x
|
||||
sta SPRITES_YPOS,y
|
||||
//SEG86 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte/signed byte/word/signed word/dword/signed dword) $a -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$a
|
||||
clc
|
||||
adc idx
|
||||
sta idx
|
||||
//SEG87 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuxx=_inc_vbuxx
|
||||
inx
|
||||
//SEG88 [47] if((byte) loop::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@5 -- vbuxx_neq_vbuc1_then_la1
|
||||
cpx #8
|
||||
//SEG86 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte/signed byte/word/signed word/dword/signed dword) $a -- vbuxx=vbuxx_plus_vbuc1
|
||||
txa
|
||||
axs #-$a
|
||||
//SEG87 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuz1=_inc_vbuz1
|
||||
inc s
|
||||
//SEG88 [47] if((byte) loop::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@5 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda #8
|
||||
cmp s
|
||||
bne b5
|
||||
//SEG89 loop::@9
|
||||
//SEG90 [48] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1
|
||||
@ -4400,8 +4362,8 @@ sprites_irq_init: {
|
||||
sta CIA1_INTERRUPT
|
||||
//SEG100 [55] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
||||
// Set raster line
|
||||
lda VIC_CONTROL
|
||||
and #$7f
|
||||
lda #$7f
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
//SEG101 [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2
|
||||
lda #IRQ_RASTER_FIRST
|
||||
@ -4440,32 +4402,31 @@ sprites_init: {
|
||||
//SEG113 [65] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1
|
||||
lda #$18+$f*8
|
||||
sta xpos
|
||||
//SEG114 [65] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
//SEG114 [65] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1
|
||||
ldy #0
|
||||
//SEG115 [65] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1]
|
||||
//SEG116 [65] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy
|
||||
//SEG117 [65] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy
|
||||
//SEG118 sprites_init::@1
|
||||
b1:
|
||||
//SEG119 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1
|
||||
txa
|
||||
//SEG119 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1
|
||||
tya
|
||||
asl
|
||||
//SEG120 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1
|
||||
tay
|
||||
tax
|
||||
//SEG120 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1
|
||||
lda xpos
|
||||
sta SPRITES_XPOS,y
|
||||
//SEG121 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2
|
||||
sta SPRITES_XPOS,x
|
||||
//SEG121 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2
|
||||
lda #BLACK
|
||||
sta SPRITES_COLS,x
|
||||
sta SPRITES_COLS,y
|
||||
//SEG122 [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $18 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$18
|
||||
clc
|
||||
adc xpos
|
||||
sta xpos
|
||||
//SEG123 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx
|
||||
inx
|
||||
//SEG124 [71] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1
|
||||
cpx #4
|
||||
lax xpos
|
||||
axs #-$18
|
||||
stx xpos
|
||||
//SEG123 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy
|
||||
iny
|
||||
//SEG124 [71] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1
|
||||
cpy #4
|
||||
bne b1
|
||||
//SEG125 sprites_init::@return
|
||||
//SEG126 [72] return
|
||||
@ -4477,7 +4438,7 @@ sprites_init: {
|
||||
// Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers
|
||||
sprites_irq: {
|
||||
.const toSpritePtr2_return = PLAYFIELD_SPRITES>>6
|
||||
.label raster_sprite_gfx_modify = $a
|
||||
.label raster_sprite_gfx_modify = 9
|
||||
//SEG128 entry interrupt(HARDWARE_CLOBBER)
|
||||
sta rega+1
|
||||
stx regx+1
|
||||
@ -4519,9 +4480,8 @@ sprites_irq: {
|
||||
//SEG143 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx
|
||||
stx PLAYFIELD_SPRITE_PTRS_2
|
||||
//SEG144 [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx
|
||||
inx
|
||||
txa
|
||||
clc
|
||||
adc #1
|
||||
//SEG145 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa
|
||||
sta PLAYFIELD_SPRITE_PTRS_2+1
|
||||
//SEG146 [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa
|
||||
@ -4536,29 +4496,27 @@ sprites_irq: {
|
||||
//SEG150 [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1
|
||||
inc irq_cnt
|
||||
//SEG151 [91] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1
|
||||
lda irq_cnt
|
||||
cmp #9
|
||||
lda #9
|
||||
cmp irq_cnt
|
||||
beq b4
|
||||
//SEG152 sprites_irq::@11
|
||||
//SEG153 [92] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1
|
||||
cmp #$a
|
||||
lda #$a
|
||||
cmp irq_cnt
|
||||
beq b5
|
||||
//SEG154 sprites_irq::@12
|
||||
//SEG155 [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $14 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$14
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next
|
||||
lax irq_raster_next
|
||||
axs #-$14
|
||||
stx irq_raster_next
|
||||
//SEG156 [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_sprite_ypos
|
||||
sta irq_sprite_ypos
|
||||
lax irq_sprite_ypos
|
||||
axs #-$15
|
||||
stx irq_sprite_ypos
|
||||
//SEG157 [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #3
|
||||
clc
|
||||
adc irq_sprite_ptr
|
||||
sta irq_sprite_ptr
|
||||
lax irq_sprite_ptr
|
||||
axs #-3
|
||||
stx irq_sprite_ptr
|
||||
//SEG158 [96] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7]
|
||||
//SEG159 [96] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy
|
||||
//SEG160 sprites_irq::@7
|
||||
@ -4587,23 +4545,20 @@ sprites_irq: {
|
||||
lda #IRQ_RASTER_FIRST
|
||||
sta irq_raster_next
|
||||
//SEG168 [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_sprite_ypos
|
||||
sta irq_sprite_ypos
|
||||
lax irq_sprite_ypos
|
||||
axs #-$15
|
||||
stx irq_sprite_ypos
|
||||
//SEG169 [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #3
|
||||
clc
|
||||
adc irq_sprite_ptr
|
||||
sta irq_sprite_ptr
|
||||
lax irq_sprite_ptr
|
||||
axs #-3
|
||||
stx irq_sprite_ptr
|
||||
jmp b7
|
||||
//SEG170 sprites_irq::@4
|
||||
b4:
|
||||
//SEG171 [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next
|
||||
lax irq_raster_next
|
||||
axs #-$15
|
||||
stx irq_raster_next
|
||||
//SEG172 [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1
|
||||
lda #SPRITES_FIRST_YPOS
|
||||
sta irq_sprite_ypos
|
||||
@ -4618,17 +4573,15 @@ sprites_irq: {
|
||||
b2:
|
||||
//SEG178 [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx
|
||||
stx PLAYFIELD_SPRITE_PTRS_1
|
||||
//SEG179 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx
|
||||
//SEG179 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx
|
||||
inx
|
||||
//SEG180 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx
|
||||
stx PLAYFIELD_SPRITE_PTRS_1+1
|
||||
//SEG181 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx
|
||||
stx PLAYFIELD_SPRITE_PTRS_1+2
|
||||
//SEG182 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx
|
||||
inx
|
||||
txa
|
||||
clc
|
||||
adc #1
|
||||
//SEG180 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa
|
||||
sta PLAYFIELD_SPRITE_PTRS_1+1
|
||||
//SEG181 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa
|
||||
sta PLAYFIELD_SPRITE_PTRS_1+2
|
||||
//SEG182 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa
|
||||
clc
|
||||
adc #1
|
||||
//SEG183 [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa
|
||||
sta PLAYFIELD_SPRITE_PTRS_1+3
|
||||
jmp b3
|
||||
|
@ -163,19 +163,19 @@
|
||||
(byte) level_bcd
|
||||
(word) lines_bcd
|
||||
(void()) loop()
|
||||
(byte~) loop::$1 $1 zp ZP_BYTE:9 202.0
|
||||
(byte~) loop::$1 reg byte a 202.0
|
||||
(label) loop::@1
|
||||
(label) loop::@4
|
||||
(label) loop::@5
|
||||
(label) loop::@8
|
||||
(label) loop::@9
|
||||
(byte) loop::idx
|
||||
(byte) loop::idx#0 idx zp ZP_BYTE:3 22.0
|
||||
(byte) loop::idx#1 idx zp ZP_BYTE:3 67.33333333333333
|
||||
(byte) loop::idx#2 idx zp ZP_BYTE:3 104.66666666666666
|
||||
(byte) loop::idx#0 reg byte x 22.0
|
||||
(byte) loop::idx#1 reg byte x 67.33333333333333
|
||||
(byte) loop::idx#2 reg byte x 104.66666666666666
|
||||
(byte) loop::s
|
||||
(byte) loop::s#1 reg byte x 151.5
|
||||
(byte) loop::s#2 reg byte x 75.75
|
||||
(byte) loop::s#1 s zp ZP_BYTE:3 151.5
|
||||
(byte) loop::s#2 s zp ZP_BYTE:3 75.75
|
||||
(void()) main()
|
||||
(byte/signed word/word/dword/signed dword~) main::$4 reg byte a 22.0
|
||||
(label) main::@1
|
||||
@ -242,10 +242,10 @@
|
||||
(label) sprites_init::@1
|
||||
(label) sprites_init::@return
|
||||
(byte) sprites_init::s
|
||||
(byte) sprites_init::s#1 reg byte x 16.5
|
||||
(byte) sprites_init::s#2 reg byte x 8.8
|
||||
(byte) sprites_init::s#1 reg byte y 16.5
|
||||
(byte) sprites_init::s#2 reg byte y 8.8
|
||||
(byte) sprites_init::s2
|
||||
(byte) sprites_init::s2#0 reg byte a 22.0
|
||||
(byte) sprites_init::s2#0 reg byte x 22.0
|
||||
(byte) sprites_init::xpos
|
||||
(byte) sprites_init::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333
|
||||
(byte) sprites_init::xpos#2 xpos zp ZP_BYTE:2 8.25
|
||||
@ -265,12 +265,12 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq()
|
||||
(label) sprites_irq::@return
|
||||
(byte) sprites_irq::ptr
|
||||
(byte) sprites_irq::ptr#0 reg byte x 2.5
|
||||
(byte) sprites_irq::ptr#1 reg byte a 2.6666666666666665
|
||||
(byte) sprites_irq::ptr#1 reg byte x 2.6666666666666665
|
||||
(byte) sprites_irq::ptr#2 reg byte a 4.0
|
||||
(byte) sprites_irq::ptr#3 reg byte a 2.6666666666666665
|
||||
(byte) sprites_irq::ptr#4 reg byte a 4.0
|
||||
(byte) sprites_irq::raster_sprite_gfx_modify
|
||||
(byte) sprites_irq::raster_sprite_gfx_modify#0 raster_sprite_gfx_modify zp ZP_BYTE:10 6.5
|
||||
(byte) sprites_irq::raster_sprite_gfx_modify#0 raster_sprite_gfx_modify zp ZP_BYTE:9 6.5
|
||||
(label) sprites_irq::toSpritePtr2
|
||||
(word~) sprites_irq::toSpritePtr2_$0
|
||||
(word~) sprites_irq::toSpritePtr2_$1
|
||||
@ -292,9 +292,9 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq()
|
||||
|
||||
reg byte y [ main::s#2 main::s#1 ]
|
||||
zp ZP_BYTE:2 [ main::xpos#2 main::xpos#1 sin_idx#10 sin_idx#3 sprites_init::xpos#2 sprites_init::xpos#1 ]
|
||||
zp ZP_BYTE:3 [ main::ypos#2 main::ypos#1 loop::idx#2 loop::idx#1 loop::idx#0 ]
|
||||
reg byte x [ loop::s#2 loop::s#1 ]
|
||||
reg byte x [ sprites_init::s#2 sprites_init::s#1 ]
|
||||
zp ZP_BYTE:3 [ main::ypos#2 main::ypos#1 loop::s#2 loop::s#1 ]
|
||||
reg byte x [ loop::idx#2 loop::idx#1 loop::idx#0 ]
|
||||
reg byte y [ sprites_init::s#2 sprites_init::s#1 ]
|
||||
zp ZP_BYTE:4 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ]
|
||||
zp ZP_BYTE:5 [ render_screen_showing#0 ]
|
||||
zp ZP_BYTE:6 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 irq_sprite_ypos#1 ]
|
||||
@ -302,13 +302,13 @@ zp ZP_BYTE:7 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 irq_sprite_ptr
|
||||
zp ZP_BYTE:8 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ]
|
||||
reg byte x [ main::s2#0 ]
|
||||
reg byte a [ main::$4 ]
|
||||
zp ZP_BYTE:9 [ loop::$1 ]
|
||||
reg byte a [ sprites_init::s2#0 ]
|
||||
reg byte a [ loop::$1 ]
|
||||
reg byte x [ sprites_init::s2#0 ]
|
||||
reg byte a [ sprites_irq::ypos#0 ]
|
||||
reg byte x [ sprites_irq::$0 ]
|
||||
zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ]
|
||||
zp ZP_BYTE:9 [ sprites_irq::raster_sprite_gfx_modify#0 ]
|
||||
reg byte x [ sprites_irq::ptr#0 ]
|
||||
reg byte a [ sprites_irq::ptr#3 ]
|
||||
reg byte a [ sprites_irq::ptr#4 ]
|
||||
reg byte a [ sprites_irq::ptr#1 ]
|
||||
reg byte x [ sprites_irq::ptr#1 ]
|
||||
reg byte a [ sprites_irq::ptr#2 ]
|
||||
|
@ -152,11 +152,14 @@
|
||||
.label render_screen_render_33 = 9
|
||||
.label current_xpos_59 = $a
|
||||
.label current_piece_gfx_64 = 5
|
||||
.label current_piece_char_68 = $b
|
||||
.label render_screen_render_69 = 9
|
||||
.label current_xpos_128 = $a
|
||||
.label current_xpos_129 = $a
|
||||
.label current_piece_gfx_118 = 5
|
||||
.label current_piece_gfx_119 = 5
|
||||
.label current_piece_char_106 = $b
|
||||
.label current_piece_char_107 = $b
|
||||
.label current_piece_98 = 5
|
||||
.label current_piece_99 = 5
|
||||
.label current_piece_100 = 5
|
||||
@ -194,18 +197,19 @@ main: {
|
||||
jsr play_spawn_current
|
||||
ldx #$40
|
||||
jsr render_playfield
|
||||
ldy current_ypos
|
||||
ldx current_ypos
|
||||
lda current_xpos
|
||||
sta current_xpos_128
|
||||
lda current_piece_gfx
|
||||
sta current_piece_gfx_118
|
||||
lda current_piece_gfx+1
|
||||
sta current_piece_gfx_118+1
|
||||
ldx current_piece_char
|
||||
lda current_piece_char
|
||||
sta current_piece_char_106
|
||||
lda #$40
|
||||
sta render_screen_render_33
|
||||
jsr render_moving
|
||||
ldy play_spawn_current.piece_idx
|
||||
ldx play_spawn_current.piece_idx
|
||||
lda #$40
|
||||
jsr render_next
|
||||
ldy play_spawn_current._0
|
||||
@ -232,8 +236,8 @@ main: {
|
||||
b1:
|
||||
// Wait for a frame to pass
|
||||
b4:
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b4
|
||||
jsr render_show
|
||||
jsr keyboard_event_scan
|
||||
@ -252,7 +256,7 @@ main: {
|
||||
beq b1
|
||||
ldx render_screen_render
|
||||
jsr render_playfield
|
||||
ldy current_ypos
|
||||
ldx current_ypos
|
||||
lda render_screen_render
|
||||
sta render_screen_render_69
|
||||
lda current_xpos
|
||||
@ -261,10 +265,11 @@ main: {
|
||||
sta current_piece_gfx_119
|
||||
lda current_piece_gfx+1
|
||||
sta current_piece_gfx_119+1
|
||||
ldx current_piece_char
|
||||
lda current_piece_char
|
||||
sta current_piece_char_107
|
||||
jsr render_moving
|
||||
lda render_screen_render
|
||||
ldy next_piece_idx
|
||||
ldx next_piece_idx
|
||||
jsr render_next
|
||||
jsr render_score
|
||||
jsr render_screen_swap
|
||||
@ -413,14 +418,14 @@ render_next: {
|
||||
lda #>PLAYFIELD_SCREEN_1+next_area_offset
|
||||
sta screen_next_area+1
|
||||
b2:
|
||||
tya
|
||||
txa
|
||||
asl
|
||||
tax
|
||||
lda PIECES_NEXT_CHARS,y
|
||||
tay
|
||||
lda PIECES_NEXT_CHARS,x
|
||||
sta next_piece_char
|
||||
lda PIECES,x
|
||||
lda PIECES,y
|
||||
sta next_piece_gfx
|
||||
lda PIECES+1,x
|
||||
lda PIECES+1,y
|
||||
sta next_piece_gfx+1
|
||||
lda #0
|
||||
sta l
|
||||
@ -454,8 +459,8 @@ render_next: {
|
||||
inc screen_next_area+1
|
||||
!:
|
||||
inc l
|
||||
lda l
|
||||
cmp #4
|
||||
lda #4
|
||||
cmp l
|
||||
bne b3
|
||||
rts
|
||||
b5:
|
||||
@ -467,36 +472,32 @@ render_next: {
|
||||
// Render the current moving piece at position (current_xpos, current_ypos)
|
||||
// Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this.
|
||||
render_moving: {
|
||||
.label ypos2 = $b
|
||||
.label ypos2 = $c
|
||||
.label screen_line = 7
|
||||
.label xpos = $e
|
||||
.label i = $d
|
||||
.label l = $c
|
||||
.label c = $f
|
||||
tya
|
||||
.label xpos = $f
|
||||
.label i = $e
|
||||
.label l = $d
|
||||
txa
|
||||
asl
|
||||
sta ypos2
|
||||
lda #0
|
||||
sta l
|
||||
sta i
|
||||
b1:
|
||||
lda ypos2
|
||||
cmp #2
|
||||
beq !+
|
||||
bcs b2
|
||||
!:
|
||||
lda #4
|
||||
clc
|
||||
adc i
|
||||
sta i
|
||||
lda #2
|
||||
cmp ypos2
|
||||
bcc b2
|
||||
lax i
|
||||
axs #-4
|
||||
stx i
|
||||
b3:
|
||||
lda ypos2
|
||||
clc
|
||||
adc #2
|
||||
sta ypos2
|
||||
inc l
|
||||
lda l
|
||||
cmp #4
|
||||
lda #4
|
||||
cmp l
|
||||
bne b1
|
||||
rts
|
||||
b2:
|
||||
@ -510,22 +511,20 @@ render_moving: {
|
||||
sta screen_line+1
|
||||
lda current_xpos_59
|
||||
sta xpos
|
||||
lda #0
|
||||
sta c
|
||||
ldx #0
|
||||
b4:
|
||||
ldy i
|
||||
lda (current_piece_gfx_64),y
|
||||
inc i
|
||||
cmp #0
|
||||
beq b5
|
||||
lda current_piece_char_68
|
||||
ldy xpos
|
||||
txa
|
||||
sta (screen_line),y
|
||||
b5:
|
||||
inc xpos
|
||||
inc c
|
||||
lda c
|
||||
cmp #4
|
||||
inx
|
||||
cpx #4
|
||||
bne b4
|
||||
jmp b3
|
||||
}
|
||||
@ -563,12 +562,12 @@ render_playfield: {
|
||||
!:
|
||||
inc i
|
||||
inc c
|
||||
lda c
|
||||
cmp #PLAYFIELD_COLS-1+1
|
||||
lda #PLAYFIELD_COLS-1+1
|
||||
cmp c
|
||||
bne b2
|
||||
inc l
|
||||
lda l
|
||||
cmp #PLAYFIELD_LINES-1+1
|
||||
lda #PLAYFIELD_LINES-1+1
|
||||
cmp l
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
@ -618,11 +617,10 @@ play_move_rotate: {
|
||||
breturn:
|
||||
rts
|
||||
b2:
|
||||
lda #$10
|
||||
clc
|
||||
adc current_orientation
|
||||
and #$3f
|
||||
sta orientation
|
||||
lax current_orientation
|
||||
axs #-$10
|
||||
lda #$3f
|
||||
sax orientation
|
||||
b4:
|
||||
lda current_xpos
|
||||
sta play_collision.xpos
|
||||
@ -647,11 +645,10 @@ play_move_rotate: {
|
||||
lda #1
|
||||
jmp breturn
|
||||
b1:
|
||||
lda current_orientation
|
||||
sec
|
||||
sbc #$10
|
||||
and #$3f
|
||||
sta orientation
|
||||
lax current_orientation
|
||||
axs #$10
|
||||
lda #$3f
|
||||
sax orientation
|
||||
jmp b4
|
||||
}
|
||||
// Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries
|
||||
@ -734,8 +731,8 @@ play_collision: {
|
||||
adc #2
|
||||
sta ypos2
|
||||
inc l
|
||||
lda l
|
||||
cmp #4
|
||||
lda #4
|
||||
cmp l
|
||||
bne b20
|
||||
lda #COLLISION_NONE
|
||||
jmp breturn
|
||||
@ -902,8 +899,8 @@ play_spawn_current: {
|
||||
lda #7
|
||||
sta piece_idx
|
||||
b2:
|
||||
lda piece_idx
|
||||
cmp #7
|
||||
lda #7
|
||||
cmp piece_idx
|
||||
beq b3
|
||||
rts
|
||||
b3:
|
||||
@ -974,11 +971,9 @@ play_update_score: {
|
||||
play_increase_level: {
|
||||
inc level
|
||||
// Update speed of moving tetrominos down
|
||||
lda level
|
||||
cmp #$1d
|
||||
beq !+
|
||||
bcs b1
|
||||
!:
|
||||
lda #$1d
|
||||
cmp level
|
||||
bcc b1
|
||||
ldy level
|
||||
lda MOVEDOWN_SLOW_SPEEDS,y
|
||||
sta current_movedown_slow
|
||||
@ -993,10 +988,9 @@ play_increase_level: {
|
||||
cmp #$a
|
||||
bne b3
|
||||
// If level low nybble hits $a change to $10
|
||||
lda #6
|
||||
clc
|
||||
adc level_bcd
|
||||
sta level_bcd
|
||||
lax level_bcd
|
||||
axs #-6
|
||||
stx level_bcd
|
||||
b3:
|
||||
// Increase the score values gained
|
||||
sed
|
||||
@ -1059,21 +1053,19 @@ play_remove_lines: {
|
||||
sta playfield,x
|
||||
dex
|
||||
inc x
|
||||
lda x
|
||||
cmp #PLAYFIELD_COLS-1+1
|
||||
lda #PLAYFIELD_COLS-1+1
|
||||
cmp x
|
||||
bne b2
|
||||
lda full
|
||||
cmp #1
|
||||
lda #1
|
||||
cmp full
|
||||
bne b4
|
||||
txa
|
||||
clc
|
||||
adc #PLAYFIELD_COLS
|
||||
tax
|
||||
axs #-PLAYFIELD_COLS
|
||||
inc removed
|
||||
b4:
|
||||
inc y
|
||||
lda y
|
||||
cmp #PLAYFIELD_LINES-1+1
|
||||
lda #PLAYFIELD_LINES-1+1
|
||||
cmp y
|
||||
bne b1
|
||||
b5:
|
||||
// Write zeros in the rest of the lines
|
||||
@ -1131,8 +1123,8 @@ play_lock_current: {
|
||||
adc #2
|
||||
sta ypos2
|
||||
inc l
|
||||
lda l
|
||||
cmp #4
|
||||
lda #4
|
||||
cmp l
|
||||
bne b7
|
||||
rts
|
||||
b7:
|
||||
@ -1198,14 +1190,13 @@ keyboard_event_scan: {
|
||||
ldy row
|
||||
cmp keyboard_scan_values,y
|
||||
bne b6
|
||||
lda #8
|
||||
clc
|
||||
adc keycode
|
||||
sta keycode
|
||||
lax keycode
|
||||
axs #-8
|
||||
stx keycode
|
||||
b3:
|
||||
inc row
|
||||
lda row
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp row
|
||||
bne b1
|
||||
lda #KEY_LSHIFT
|
||||
sta keyboard_event_pressed.keycode
|
||||
@ -1254,8 +1245,8 @@ keyboard_event_scan: {
|
||||
and keyboard_matrix_col_bitmask,x
|
||||
cmp #0
|
||||
beq b5
|
||||
lda keyboard_events_size
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp keyboard_events_size
|
||||
beq b5
|
||||
lda keyboard_matrix_col_bitmask,x
|
||||
and row_scan
|
||||
@ -1330,17 +1321,17 @@ play_init: {
|
||||
sta pli
|
||||
lda #>playfield
|
||||
sta pli+1
|
||||
ldx #0
|
||||
ldy #0
|
||||
b1:
|
||||
txa
|
||||
tya
|
||||
asl
|
||||
tay
|
||||
tax
|
||||
lda pli
|
||||
sta playfield_lines,y
|
||||
sta playfield_lines,x
|
||||
lda pli+1
|
||||
sta playfield_lines+1,y
|
||||
sta playfield_lines+1,x
|
||||
lda idx
|
||||
sta playfield_lines_idx,x
|
||||
sta playfield_lines_idx,y
|
||||
lda #PLAYFIELD_COLS
|
||||
clc
|
||||
adc pli
|
||||
@ -1348,12 +1339,11 @@ play_init: {
|
||||
bcc !+
|
||||
inc pli+1
|
||||
!:
|
||||
lda #PLAYFIELD_COLS
|
||||
clc
|
||||
adc idx
|
||||
sta idx
|
||||
inx
|
||||
cpx #PLAYFIELD_LINES-1+1
|
||||
lax idx
|
||||
axs #-PLAYFIELD_COLS
|
||||
stx idx
|
||||
iny
|
||||
cpy #PLAYFIELD_LINES-1+1
|
||||
bne b1
|
||||
lda #PLAYFIELD_COLS*PLAYFIELD_LINES
|
||||
sta playfield_lines_idx+PLAYFIELD_LINES
|
||||
@ -1396,8 +1386,8 @@ sprites_irq_init: {
|
||||
lda #CIA_INTERRUPT_CLEAR
|
||||
sta CIA1_INTERRUPT
|
||||
// Set raster line
|
||||
lda VIC_CONTROL
|
||||
and #$7f
|
||||
lda #$7f
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
lda #IRQ_RASTER_FIRST
|
||||
sta RASTER
|
||||
@ -1423,21 +1413,20 @@ sprites_init: {
|
||||
sta SPRITES_EXPAND_X
|
||||
lda #$18+$f*8
|
||||
sta xpos
|
||||
ldx #0
|
||||
ldy #0
|
||||
b1:
|
||||
txa
|
||||
tya
|
||||
asl
|
||||
tay
|
||||
tax
|
||||
lda xpos
|
||||
sta SPRITES_XPOS,y
|
||||
sta SPRITES_XPOS,x
|
||||
lda #BLACK
|
||||
sta SPRITES_COLS,x
|
||||
lda #$18
|
||||
clc
|
||||
adc xpos
|
||||
sta xpos
|
||||
inx
|
||||
cpx #4
|
||||
sta SPRITES_COLS,y
|
||||
lax xpos
|
||||
axs #-$18
|
||||
stx xpos
|
||||
iny
|
||||
cpy #4
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
@ -1604,8 +1593,8 @@ render_screen_original: {
|
||||
cpx #$28
|
||||
bne b4
|
||||
inc y
|
||||
lda y
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp y
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
@ -1649,9 +1638,8 @@ sprites_irq: {
|
||||
cmp #0
|
||||
beq b2
|
||||
stx PLAYFIELD_SPRITE_PTRS_2
|
||||
inx
|
||||
txa
|
||||
clc
|
||||
adc #1
|
||||
sta PLAYFIELD_SPRITE_PTRS_2+1
|
||||
sta PLAYFIELD_SPRITE_PTRS_2+2
|
||||
clc
|
||||
@ -1659,23 +1647,21 @@ sprites_irq: {
|
||||
sta PLAYFIELD_SPRITE_PTRS_2+3
|
||||
b3:
|
||||
inc irq_cnt
|
||||
lda irq_cnt
|
||||
cmp #9
|
||||
lda #9
|
||||
cmp irq_cnt
|
||||
beq b4
|
||||
cmp #$a
|
||||
lda #$a
|
||||
cmp irq_cnt
|
||||
beq b5
|
||||
lda #$14
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_sprite_ypos
|
||||
sta irq_sprite_ypos
|
||||
lda #3
|
||||
clc
|
||||
adc irq_sprite_ptr
|
||||
sta irq_sprite_ptr
|
||||
lax irq_raster_next
|
||||
axs #-$14
|
||||
stx irq_raster_next
|
||||
lax irq_sprite_ypos
|
||||
axs #-$15
|
||||
stx irq_sprite_ypos
|
||||
lax irq_sprite_ptr
|
||||
axs #-3
|
||||
stx irq_sprite_ptr
|
||||
b7:
|
||||
// Setup next interrupt
|
||||
lda irq_raster_next
|
||||
@ -1693,20 +1679,17 @@ sprites_irq: {
|
||||
sta irq_cnt
|
||||
lda #IRQ_RASTER_FIRST
|
||||
sta irq_raster_next
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_sprite_ypos
|
||||
sta irq_sprite_ypos
|
||||
lda #3
|
||||
clc
|
||||
adc irq_sprite_ptr
|
||||
sta irq_sprite_ptr
|
||||
lax irq_sprite_ypos
|
||||
axs #-$15
|
||||
stx irq_sprite_ypos
|
||||
lax irq_sprite_ptr
|
||||
axs #-3
|
||||
stx irq_sprite_ptr
|
||||
jmp b7
|
||||
b4:
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next
|
||||
lax irq_raster_next
|
||||
axs #-$15
|
||||
stx irq_raster_next
|
||||
lda #SPRITES_FIRST_YPOS
|
||||
sta irq_sprite_ypos
|
||||
lda #toSpritePtr2_return
|
||||
@ -1714,13 +1697,11 @@ sprites_irq: {
|
||||
jmp b7
|
||||
b2:
|
||||
stx PLAYFIELD_SPRITE_PTRS_1
|
||||
inx
|
||||
stx PLAYFIELD_SPRITE_PTRS_1+1
|
||||
stx PLAYFIELD_SPRITE_PTRS_1+2
|
||||
inx
|
||||
txa
|
||||
clc
|
||||
adc #1
|
||||
sta PLAYFIELD_SPRITE_PTRS_1+1
|
||||
sta PLAYFIELD_SPRITE_PTRS_1+2
|
||||
clc
|
||||
adc #1
|
||||
sta PLAYFIELD_SPRITE_PTRS_1+3
|
||||
jmp b3
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -332,12 +332,12 @@
|
||||
(byte*~) current_piece#99 current_piece#99 zp ZP_WORD:5 4.0
|
||||
(byte) current_piece_char
|
||||
(byte) current_piece_char#10 current_piece_char zp ZP_BYTE:28 187.38888888888889
|
||||
(byte~) current_piece_char#106 reg byte x 4.0
|
||||
(byte~) current_piece_char#107 reg byte x 22.0
|
||||
(byte~) current_piece_char#106 current_piece_char#106 zp ZP_BYTE:11 4.0
|
||||
(byte~) current_piece_char#107 current_piece_char#107 zp ZP_BYTE:11 22.0
|
||||
(byte) current_piece_char#16 current_piece_char zp ZP_BYTE:28 3.3421052631578956
|
||||
(byte) current_piece_char#30 current_piece_char zp ZP_BYTE:28 6.0
|
||||
(byte) current_piece_char#5 current_piece_char zp ZP_BYTE:28 0.23529411764705882
|
||||
(byte) current_piece_char#68 reg byte x 50.699999999999996
|
||||
(byte) current_piece_char#68 current_piece_char#68 zp ZP_BYTE:11 50.699999999999996
|
||||
(byte*) current_piece_gfx
|
||||
(byte*) current_piece_gfx#112 current_piece_gfx zp ZP_WORD:30 187.38888888888889
|
||||
(byte*~) current_piece_gfx#118 current_piece_gfx#118 zp ZP_WORD:5 2.0
|
||||
@ -362,10 +362,10 @@
|
||||
(byte) current_xpos#6 current_xpos zp ZP_BYTE:32 4.0
|
||||
(byte) current_xpos#8 current_xpos zp ZP_BYTE:32 4.0
|
||||
(byte) current_ypos
|
||||
(byte~) current_ypos#104 reg byte y 1.0
|
||||
(byte~) current_ypos#105 reg byte y 4.4
|
||||
(byte~) current_ypos#104 reg byte x 1.0
|
||||
(byte~) current_ypos#105 reg byte x 4.4
|
||||
(byte) current_ypos#11 current_ypos zp ZP_BYTE:16 3.297297297297297
|
||||
(byte) current_ypos#13 reg byte y 15.0
|
||||
(byte) current_ypos#13 reg byte x 15.0
|
||||
(byte) current_ypos#19 current_ypos zp ZP_BYTE:16 1.683544303797468
|
||||
(byte) current_ypos#3 current_ypos zp ZP_BYTE:16 4.0
|
||||
(byte) current_ypos#39 current_ypos zp ZP_BYTE:16 6.0
|
||||
@ -551,12 +551,12 @@
|
||||
(byte) main::render#1 reg byte a 202.0
|
||||
(byte) next_piece_idx
|
||||
(byte) next_piece_idx#10 next_piece_idx zp ZP_BYTE:33 2.608695652173914
|
||||
(byte) next_piece_idx#12 reg byte y 3.4
|
||||
(byte) next_piece_idx#12 reg byte x 3.4
|
||||
(byte) next_piece_idx#16 next_piece_idx zp ZP_BYTE:33 3.3421052631578956
|
||||
(byte) next_piece_idx#17 next_piece_idx zp ZP_BYTE:33 6.0
|
||||
(byte) next_piece_idx#31 next_piece_idx zp ZP_BYTE:33 6.0
|
||||
(byte~) next_piece_idx#84 reg byte y 4.0
|
||||
(byte~) next_piece_idx#85 reg byte y 22.0
|
||||
(byte~) next_piece_idx#84 reg byte x 4.0
|
||||
(byte~) next_piece_idx#85 reg byte x 22.0
|
||||
(byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation)
|
||||
(byte~) play_collision::$7 reg byte a 20002.0
|
||||
(label) play_collision::@1
|
||||
@ -636,7 +636,7 @@
|
||||
(byte) play_increase_level::b4
|
||||
(byte) play_increase_level::b4#0 reg byte a 4004.0
|
||||
(void()) play_init()
|
||||
(byte~) play_init::$1 reg byte a 22.0
|
||||
(byte~) play_init::$1 reg byte x 22.0
|
||||
(label) play_init::@1
|
||||
(label) play_init::@2
|
||||
(label) play_init::@3
|
||||
@ -650,8 +650,8 @@
|
||||
(byte) play_init::idx#1 idx zp ZP_BYTE:2 7.333333333333333
|
||||
(byte) play_init::idx#2 idx zp ZP_BYTE:2 6.6000000000000005
|
||||
(byte) play_init::j
|
||||
(byte) play_init::j#1 reg byte x 16.5
|
||||
(byte) play_init::j#2 reg byte x 7.333333333333333
|
||||
(byte) play_init::j#1 reg byte y 16.5
|
||||
(byte) play_init::j#2 reg byte y 7.333333333333333
|
||||
(byte*) play_init::pli
|
||||
(byte*) play_init::pli#1 pli zp ZP_WORD:5 5.5
|
||||
(byte*) play_init::pli#2 pli zp ZP_WORD:5 8.25
|
||||
@ -736,8 +736,8 @@
|
||||
(byte) play_move_leftright::return#0 reg byte a 4.0
|
||||
(byte) play_move_leftright::return#2 reg byte a 0.6666666666666666
|
||||
(byte()) play_move_rotate((byte) play_move_rotate::key_event)
|
||||
(byte/signed word/word/dword/signed dword~) play_move_rotate::$2 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword~) play_move_rotate::$4 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword~) play_move_rotate::$2 reg byte x 4.0
|
||||
(byte/signed word/word/dword/signed dword~) play_move_rotate::$4 reg byte x 4.0
|
||||
(byte~) play_move_rotate::$6 reg byte a 4.0
|
||||
(label) play_move_rotate::@1
|
||||
(label) play_move_rotate::@11
|
||||
@ -924,31 +924,31 @@
|
||||
(label) render_moving::@8
|
||||
(label) render_moving::@return
|
||||
(byte) render_moving::c
|
||||
(byte) render_moving::c#1 c zp ZP_BYTE:15 1501.5
|
||||
(byte) render_moving::c#2 c zp ZP_BYTE:15 333.6666666666667
|
||||
(byte) render_moving::c#1 reg byte x 1501.5
|
||||
(byte) render_moving::c#2 reg byte x 333.6666666666667
|
||||
(byte) render_moving::current_cell
|
||||
(byte) render_moving::current_cell#0 reg byte a 1001.0
|
||||
(byte) render_moving::i
|
||||
(byte) render_moving::i#1 i zp ZP_BYTE:13 202.0
|
||||
(byte) render_moving::i#2 i zp ZP_BYTE:13 500.5
|
||||
(byte) render_moving::i#3 i zp ZP_BYTE:13 60.599999999999994
|
||||
(byte) render_moving::i#4 i zp ZP_BYTE:13 1552.0
|
||||
(byte) render_moving::i#8 i zp ZP_BYTE:13 300.75
|
||||
(byte) render_moving::i#1 i zp ZP_BYTE:14 202.0
|
||||
(byte) render_moving::i#2 i zp ZP_BYTE:14 500.5
|
||||
(byte) render_moving::i#3 i zp ZP_BYTE:14 60.599999999999994
|
||||
(byte) render_moving::i#4 i zp ZP_BYTE:14 1552.0
|
||||
(byte) render_moving::i#8 i zp ZP_BYTE:14 300.75
|
||||
(byte) render_moving::l
|
||||
(byte) render_moving::l#1 l zp ZP_BYTE:12 151.5
|
||||
(byte) render_moving::l#4 l zp ZP_BYTE:12 12.625
|
||||
(byte) render_moving::l#1 l zp ZP_BYTE:13 151.5
|
||||
(byte) render_moving::l#4 l zp ZP_BYTE:13 12.625
|
||||
(byte*) render_moving::screen_line
|
||||
(byte*) render_moving::screen_line#0 screen_line zp ZP_WORD:7 110.19999999999999
|
||||
(byte) render_moving::xpos
|
||||
(byte) render_moving::xpos#0 xpos zp ZP_BYTE:14 202.0
|
||||
(byte) render_moving::xpos#1 xpos zp ZP_BYTE:14 667.3333333333334
|
||||
(byte) render_moving::xpos#2 xpos zp ZP_BYTE:14 620.8
|
||||
(byte) render_moving::xpos#0 xpos zp ZP_BYTE:15 202.0
|
||||
(byte) render_moving::xpos#1 xpos zp ZP_BYTE:15 667.3333333333334
|
||||
(byte) render_moving::xpos#2 xpos zp ZP_BYTE:15 620.8
|
||||
(byte) render_moving::ypos2
|
||||
(byte) render_moving::ypos2#0 ypos2 zp ZP_BYTE:11 4.0
|
||||
(byte) render_moving::ypos2#1 ypos2 zp ZP_BYTE:11 67.33333333333333
|
||||
(byte) render_moving::ypos2#2 ypos2 zp ZP_BYTE:11 27.06666666666667
|
||||
(byte) render_moving::ypos2#0 ypos2 zp ZP_BYTE:12 4.0
|
||||
(byte) render_moving::ypos2#1 ypos2 zp ZP_BYTE:12 67.33333333333333
|
||||
(byte) render_moving::ypos2#2 ypos2 zp ZP_BYTE:12 27.06666666666667
|
||||
(void()) render_next()
|
||||
(byte~) render_next::$6 reg byte x 1.0
|
||||
(byte~) render_next::$6 reg byte y 1.0
|
||||
(label) render_next::@11
|
||||
(label) render_next::@2
|
||||
(label) render_next::@3
|
||||
@ -1138,10 +1138,10 @@
|
||||
(label) sprites_init::@1
|
||||
(label) sprites_init::@return
|
||||
(byte) sprites_init::s
|
||||
(byte) sprites_init::s#1 reg byte x 16.5
|
||||
(byte) sprites_init::s#2 reg byte x 8.8
|
||||
(byte) sprites_init::s#1 reg byte y 16.5
|
||||
(byte) sprites_init::s#2 reg byte y 8.8
|
||||
(byte) sprites_init::s2
|
||||
(byte) sprites_init::s2#0 reg byte a 22.0
|
||||
(byte) sprites_init::s2#0 reg byte x 22.0
|
||||
(byte) sprites_init::xpos
|
||||
(byte) sprites_init::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333
|
||||
(byte) sprites_init::xpos#2 xpos zp ZP_BYTE:2 8.25
|
||||
@ -1161,7 +1161,7 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq()
|
||||
(label) sprites_irq::@return
|
||||
(byte) sprites_irq::ptr
|
||||
(byte) sprites_irq::ptr#0 reg byte x 2.5
|
||||
(byte) sprites_irq::ptr#1 reg byte a 2.6666666666666665
|
||||
(byte) sprites_irq::ptr#1 reg byte x 2.6666666666666665
|
||||
(byte) sprites_irq::ptr#2 reg byte a 4.0
|
||||
(byte) sprites_irq::ptr#3 reg byte a 2.6666666666666665
|
||||
(byte) sprites_irq::ptr#4 reg byte a 4.0
|
||||
@ -1194,17 +1194,17 @@ zp ZP_WORD:7 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_
|
||||
reg byte y [ render_bcd::only_low#6 ]
|
||||
reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ]
|
||||
reg byte a [ render_screen_render#15 render_screen_render#68 ]
|
||||
reg byte y [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ]
|
||||
reg byte x [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ]
|
||||
zp ZP_BYTE:9 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
|
||||
reg byte x [ render_next::c#2 render_next::c#1 ]
|
||||
reg byte y [ current_ypos#13 current_ypos#104 current_ypos#105 ]
|
||||
reg byte x [ current_ypos#13 current_ypos#104 current_ypos#105 ]
|
||||
zp ZP_BYTE:10 [ current_xpos#59 current_xpos#128 current_xpos#129 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 render_next::next_piece_char#0 keyboard_event_pressed::row_bits#0 ]
|
||||
reg byte x [ current_piece_char#68 current_piece_char#106 current_piece_char#107 ]
|
||||
zp ZP_BYTE:11 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ]
|
||||
zp ZP_BYTE:12 [ render_moving::l#4 render_moving::l#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::c#0 ]
|
||||
zp ZP_BYTE:13 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 play_collision::l#6 play_collision::l#1 ]
|
||||
zp ZP_BYTE:14 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ]
|
||||
zp ZP_BYTE:15 [ render_moving::c#2 render_moving::c#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ]
|
||||
zp ZP_BYTE:11 [ current_piece_char#68 current_piece_char#106 current_piece_char#107 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ]
|
||||
zp ZP_BYTE:12 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::c#0 ]
|
||||
zp ZP_BYTE:13 [ render_moving::l#4 render_moving::l#1 play_collision::l#6 play_collision::l#1 ]
|
||||
zp ZP_BYTE:14 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ]
|
||||
zp ZP_BYTE:15 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ]
|
||||
reg byte x [ render_moving::c#2 render_moving::c#1 ]
|
||||
reg byte x [ render_screen_render#22 render_screen_render#70 ]
|
||||
reg byte a [ play_move_rotate::return#2 ]
|
||||
reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
|
||||
@ -1235,9 +1235,9 @@ reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 ke
|
||||
reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
|
||||
zp ZP_BYTE:35 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ]
|
||||
reg byte a [ render_show::d018val#3 ]
|
||||
reg byte x [ play_init::j#2 play_init::j#1 ]
|
||||
reg byte y [ play_init::j#2 play_init::j#1 ]
|
||||
reg byte x [ play_init::b#2 play_init::b#1 ]
|
||||
reg byte x [ sprites_init::s#2 sprites_init::s#1 ]
|
||||
reg byte y [ sprites_init::s#2 sprites_init::s#1 ]
|
||||
reg byte x [ render_init::i#2 render_init::i#1 ]
|
||||
reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ]
|
||||
zp ZP_BYTE:36 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ]
|
||||
@ -1254,7 +1254,7 @@ reg byte a [ render_bcd::$3 ]
|
||||
reg byte a [ render_bcd::$4 ]
|
||||
reg byte a [ render_bcd::$5 ]
|
||||
reg byte a [ render_bcd::$6 ]
|
||||
reg byte x [ render_next::$6 ]
|
||||
reg byte y [ render_next::$6 ]
|
||||
reg byte a [ render_next::cell#0 ]
|
||||
reg byte a [ render_moving::$2 ]
|
||||
reg byte a [ render_moving::current_cell#0 ]
|
||||
@ -1269,10 +1269,10 @@ reg byte a [ play_movement::$3 ]
|
||||
reg byte a [ play_move_rotate::key_event#0 ]
|
||||
reg byte a [ play_move_rotate::return#0 ]
|
||||
reg byte a [ play_movement::$4 ]
|
||||
reg byte a [ play_move_rotate::$2 ]
|
||||
reg byte x [ play_move_rotate::$2 ]
|
||||
reg byte a [ play_collision::return#14 ]
|
||||
reg byte a [ play_move_rotate::$6 ]
|
||||
reg byte a [ play_move_rotate::$4 ]
|
||||
reg byte x [ play_move_rotate::$4 ]
|
||||
zp ZP_BYTE:42 [ play_collision::i#1 ]
|
||||
reg byte a [ play_collision::$7 ]
|
||||
reg byte a [ play_collision::return#13 ]
|
||||
@ -1318,9 +1318,9 @@ reg byte a [ keyboard_event_scan::$4 ]
|
||||
reg byte a [ keyboard_event_scan::event_type#0 ]
|
||||
reg byte a [ keyboard_event_scan::$11 ]
|
||||
reg byte a [ keyboard_matrix_read::return#0 ]
|
||||
reg byte a [ play_init::$1 ]
|
||||
reg byte x [ play_init::$1 ]
|
||||
reg byte a [ play_init::b4#0 ]
|
||||
reg byte a [ sprites_init::s2#0 ]
|
||||
reg byte x [ sprites_init::s2#0 ]
|
||||
reg byte a [ render_init::$13 ]
|
||||
reg byte a [ render_init::$14 ]
|
||||
reg byte a [ sprites_irq::ypos#0 ]
|
||||
@ -1329,5 +1329,5 @@ zp ZP_BYTE:47 [ sprites_irq::raster_sprite_gfx_modify#0 ]
|
||||
reg byte x [ sprites_irq::ptr#0 ]
|
||||
reg byte a [ sprites_irq::ptr#3 ]
|
||||
reg byte a [ sprites_irq::ptr#4 ]
|
||||
reg byte a [ sprites_irq::ptr#1 ]
|
||||
reg byte x [ sprites_irq::ptr#1 ]
|
||||
reg byte a [ sprites_irq::ptr#2 ]
|
||||
|
@ -171,8 +171,8 @@ main: {
|
||||
//SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #3
|
||||
lda #3
|
||||
cmp i
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG19 main::@return
|
||||
|
@ -8,9 +8,8 @@ main: {
|
||||
ldy #0
|
||||
b1:
|
||||
tya
|
||||
clc
|
||||
adc #$c
|
||||
tax
|
||||
axs #-$c
|
||||
lda #'a'
|
||||
sta screen,x
|
||||
lda #BLACK
|
||||
|
@ -176,23 +176,22 @@ main: {
|
||||
//SEG15 main::@1
|
||||
b1:
|
||||
//SEG16 [6] (byte) main::y#0 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) $c -- vbuz1=vbuz2_plus_vbuc1
|
||||
lda #$c
|
||||
clc
|
||||
adc x
|
||||
sta y
|
||||
lax x
|
||||
axs #-$c
|
||||
stx y
|
||||
//SEG17 [7] *((const byte*) main::screen#0 + (byte) main::y#0) ← (byte) 'a' -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy y
|
||||
lda #'a'
|
||||
ldy y
|
||||
sta screen,y
|
||||
//SEG18 [8] *((const byte*) main::cols#0 + (byte) main::y#0) ← (const byte) main::BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy y
|
||||
lda #BLACK
|
||||
ldy y
|
||||
sta cols,y
|
||||
//SEG19 [9] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuz1=_inc_vbuz1
|
||||
inc x
|
||||
//SEG20 [10] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) $b) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda x
|
||||
cmp #$b
|
||||
lda #$b
|
||||
cmp x
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG21 main::@return
|
||||
@ -202,9 +201,8 @@ main: {
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [6] (byte) main::y#0 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) $c [ main::x#2 main::y#0 ] ( main:2 [ main::x#2 main::y#0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::x#2 main::x#1 ]
|
||||
Statement [7] *((const byte*) main::screen#0 + (byte) main::y#0) ← (byte) 'a' [ main::x#2 main::y#0 ] ( main:2 [ main::x#2 main::y#0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::y#0 ]
|
||||
Statement [8] *((const byte*) main::cols#0 + (byte) main::y#0) ← (const byte) main::BLACK#0 [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a
|
||||
Statement [6] (byte) main::y#0 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) $c [ main::x#2 main::y#0 ] ( main:2 [ main::x#2 main::y#0 ] ) always clobbers reg byte a
|
||||
@ -217,8 +215,8 @@ REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 24.75: zp ZP_BYTE:2 [ main::x#2 main::x#1 ] 16.5: zp ZP_BYTE:3 [ main::y#0 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 413 combination reg byte y [ main::x#2 main::x#1 ] reg byte x [ main::y#0 ]
|
||||
Uplifting [] best 413 combination
|
||||
Uplifting [main] best 393 combination reg byte y [ main::x#2 main::x#1 ] reg byte x [ main::y#0 ]
|
||||
Uplifting [] best 393 combination
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 File Comments
|
||||
@ -261,9 +259,8 @@ main: {
|
||||
b1:
|
||||
//SEG16 [6] (byte) main::y#0 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) $c -- vbuxx=vbuyy_plus_vbuc1
|
||||
tya
|
||||
clc
|
||||
adc #$c
|
||||
tax
|
||||
axs #-$c
|
||||
//SEG17 [7] *((const byte*) main::screen#0 + (byte) main::y#0) ← (byte) 'a' -- pbuc1_derefidx_vbuxx=vbuc2
|
||||
lda #'a'
|
||||
sta screen,x
|
||||
@ -331,7 +328,7 @@ reg byte x [ main::y#0 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 311
|
||||
Score: 291
|
||||
|
||||
//SEG0 File Comments
|
||||
//SEG1 Basic Upstart
|
||||
@ -360,9 +357,8 @@ main: {
|
||||
b1:
|
||||
//SEG16 [6] (byte) main::y#0 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) $c -- vbuxx=vbuyy_plus_vbuc1
|
||||
tya
|
||||
clc
|
||||
adc #$c
|
||||
tax
|
||||
axs #-$c
|
||||
//SEG17 [7] *((const byte*) main::screen#0 + (byte) main::y#0) ← (byte) 'a' -- pbuc1_derefidx_vbuxx=vbuc2
|
||||
lda #'a'
|
||||
sta screen,x
|
||||
|
@ -332,14 +332,14 @@ main: {
|
||||
tya
|
||||
sta plots,y
|
||||
//SEG17 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #0
|
||||
ldy i
|
||||
sta SCREEN,y
|
||||
//SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$28
|
||||
lda #$28
|
||||
cmp i
|
||||
bne b1_from_b1
|
||||
//SEG20 [10] phi from main::@1 main::@2 to main::@2 [phi:main::@1/main::@2->main::@2]
|
||||
b2_from_b1:
|
||||
|
@ -338,10 +338,9 @@ sum: {
|
||||
.label return_3 = 9
|
||||
.label b = 2
|
||||
//SEG35 [19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 -- vbuz1=vbuc1_plus_vbuz2
|
||||
lda #main.reverse
|
||||
clc
|
||||
adc b
|
||||
sta return_3
|
||||
lax b
|
||||
axs #-main.reverse
|
||||
stx return_3
|
||||
jmp breturn
|
||||
//SEG36 sum::@return
|
||||
breturn:
|
||||
@ -350,7 +349,6 @@ sum: {
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:9 [ sum::return#3 ] main:2::sum:13 [ sum::return#3 ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ sum::b#3 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:3 [ sum::return#0 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:4 [ main::$0 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y ,
|
||||
|
@ -182,8 +182,8 @@ main: {
|
||||
//SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #3
|
||||
lda #3
|
||||
cmp i
|
||||
bne b1_from_b1
|
||||
jmp b2
|
||||
//SEG20 main::@2
|
||||
|
@ -211,8 +211,8 @@ main: {
|
||||
//SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp i
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG19 main::@return
|
||||
|
@ -200,14 +200,14 @@ main: {
|
||||
//SEG16 main::@1
|
||||
b1:
|
||||
//SEG17 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy i
|
||||
lda #STAR+1
|
||||
ldy i
|
||||
sta SCREEN,y
|
||||
//SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $50) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$50
|
||||
lda #$50
|
||||
cmp i
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG20 main::@return
|
||||
|
@ -250,26 +250,22 @@ main: {
|
||||
//SEG21 main::@5
|
||||
b5:
|
||||
//SEG22 [10] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@2 -- vbuz1_eq_vbuc1_then_la1
|
||||
lda _1
|
||||
cmp #$1f
|
||||
lda #$1f
|
||||
cmp _1
|
||||
beq b2
|
||||
jmp b1_from_b5
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [8] (byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f [ rpc#1 key#1 main::$1 ] ( main:2 [ rpc#1 key#1 main::$1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ rpc#4 rpc#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ key#1 ]
|
||||
Statement [8] (byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f [ rpc#1 key#1 main::$1 ] ( main:2 [ rpc#1 key#1 main::$1 ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ rpc#4 rpc#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:3 [ key#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:2 [ rpc#4 rpc#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:3 [ key#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:4 [ main::$1 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [] 255.6: zp ZP_BYTE:2 [ rpc#4 rpc#1 ] 151.5: zp ZP_BYTE:3 [ key#1 ]
|
||||
Uplift Scope [main] 101: zp ZP_BYTE:4 [ main::$1 ]
|
||||
|
||||
Uplifting [] best 2742 combination reg byte y [ rpc#4 rpc#1 ] reg byte x [ key#1 ]
|
||||
Uplifting [] best 2542 combination reg byte y [ rpc#4 rpc#1 ] reg byte x [ key#1 ]
|
||||
Uplifting [main] best 2142 combination reg byte a [ main::$1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
|
@ -202,8 +202,8 @@ main: {
|
||||
//SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG20 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$65
|
||||
lda #$65
|
||||
cmp i
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG21 main::@return
|
||||
|
@ -85,19 +85,19 @@ anim: {
|
||||
//signed byte xmin = 0;
|
||||
//signed byte xmax = 0;
|
||||
b4:
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b4
|
||||
b7:
|
||||
lda RASTER
|
||||
cmp #$fe
|
||||
lda #$fe
|
||||
cmp RASTER
|
||||
bne b7
|
||||
b10:
|
||||
lda RASTER
|
||||
cmp #$fd
|
||||
lda #$fd
|
||||
cmp RASTER
|
||||
bne b10
|
||||
inc BORDERCOL
|
||||
ldx sx
|
||||
ldy sx
|
||||
jsr calculate_matrix
|
||||
jsr store_matrix
|
||||
lda #0
|
||||
@ -138,8 +138,8 @@ anim: {
|
||||
adc yp
|
||||
sta SPRITES_YPOS,x
|
||||
inc i
|
||||
lda i
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp i
|
||||
bne b13
|
||||
lda #LIGHT_GREY
|
||||
sta BORDERCOL
|
||||
@ -189,8 +189,7 @@ debug_print: {
|
||||
lda #>print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
lda sy
|
||||
tax
|
||||
ldx sy
|
||||
lda #<print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
|
||||
@ -202,8 +201,7 @@ debug_print: {
|
||||
sta print_sbyte_at.at+1
|
||||
ldx #sz
|
||||
jsr print_sbyte_at
|
||||
lda rotation_matrix
|
||||
tax
|
||||
ldx rotation_matrix
|
||||
lda #<print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
|
||||
@ -322,13 +320,12 @@ debug_print: {
|
||||
ldy i
|
||||
ldx yps,y
|
||||
jsr print_sbyte_at
|
||||
lda #4
|
||||
clc
|
||||
adc c
|
||||
sta c
|
||||
lax c
|
||||
axs #-4
|
||||
stx c
|
||||
inc i
|
||||
lda i
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp i
|
||||
beq !b1+
|
||||
jmp b1
|
||||
!b1:
|
||||
@ -384,9 +381,8 @@ print_byte_at: {
|
||||
lda print_hextab,y
|
||||
sta print_char_at.ch
|
||||
jsr print_char_at
|
||||
txa
|
||||
and #$f
|
||||
tax
|
||||
lda #$f
|
||||
axs #0
|
||||
inc print_char_at.at
|
||||
bne !+
|
||||
inc print_char_at.at+1
|
||||
@ -543,7 +539,7 @@ store_matrix: {
|
||||
// Prepare the 3x3 rotation matrix into rotation_matrix[]
|
||||
// Angles sx, sy, sz are based on 2*PI=$100
|
||||
// Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt
|
||||
// calculate_matrix(signed byte register(X) sx, signed byte zeropage(3) sy)
|
||||
// calculate_matrix(signed byte register(Y) sx, signed byte zeropage(3) sy)
|
||||
calculate_matrix: {
|
||||
.label sy = 3
|
||||
.label t1 = 4
|
||||
@ -555,19 +551,16 @@ calculate_matrix: {
|
||||
.label t8 = $e
|
||||
.label t9 = $f
|
||||
.label t10 = $10
|
||||
lda sy
|
||||
sec
|
||||
sbc #sz
|
||||
sta t1
|
||||
lda #sz
|
||||
clc
|
||||
adc sy
|
||||
tay
|
||||
txa
|
||||
lax sy
|
||||
axs #sz
|
||||
stx t1
|
||||
lax sy
|
||||
axs #-sz
|
||||
tya
|
||||
clc
|
||||
adc #sz
|
||||
sta t3
|
||||
txa
|
||||
tya
|
||||
sec
|
||||
sbc #sz
|
||||
sta t4
|
||||
@ -576,36 +569,36 @@ calculate_matrix: {
|
||||
clc
|
||||
adc $ff
|
||||
sta t5
|
||||
txa
|
||||
tya
|
||||
sec
|
||||
sbc t1
|
||||
sta t6
|
||||
txa
|
||||
tya
|
||||
clc
|
||||
adc t1
|
||||
sta t7
|
||||
tya
|
||||
stx $ff
|
||||
txa
|
||||
sty $ff
|
||||
sec
|
||||
sbc $ff
|
||||
sta t8
|
||||
txa
|
||||
tya
|
||||
eor #$ff
|
||||
sec
|
||||
adc sy
|
||||
sta t9
|
||||
txa
|
||||
tya
|
||||
clc
|
||||
adc sy
|
||||
sta t10
|
||||
ldx t1
|
||||
ldy t1
|
||||
clc
|
||||
lda COSH,x
|
||||
adc COSH,y
|
||||
sta rotation_matrix
|
||||
sec
|
||||
lda SINH,x
|
||||
sbc SINH,y
|
||||
lda SINH,y
|
||||
sbc SINH,x
|
||||
sta rotation_matrix+1
|
||||
ldy sy
|
||||
clc
|
||||
@ -719,7 +712,7 @@ debug_print_init: {
|
||||
.label _88 = 6
|
||||
.label _91 = 6
|
||||
.label _92 = 6
|
||||
.label col = 4
|
||||
.label j = 4
|
||||
.label c = 2
|
||||
.label i = 3
|
||||
jsr print_cls
|
||||
@ -866,12 +859,11 @@ debug_print_init: {
|
||||
ldy i
|
||||
ldx zs,y
|
||||
jsr print_sbyte_at
|
||||
ldx #0
|
||||
lda #0
|
||||
sta j
|
||||
b2:
|
||||
lda #8
|
||||
clc
|
||||
adc i
|
||||
sta col
|
||||
lax i
|
||||
axs #-8
|
||||
lda c
|
||||
clc
|
||||
adc #<at_cols
|
||||
@ -879,14 +871,14 @@ debug_print_init: {
|
||||
lda #>at_cols
|
||||
adc #0
|
||||
sta _59+1
|
||||
txa
|
||||
lda j
|
||||
clc
|
||||
adc _60
|
||||
sta _60
|
||||
bcc !+
|
||||
inc _60+1
|
||||
!:
|
||||
lda col
|
||||
txa
|
||||
ldy #0
|
||||
sta (_60),y
|
||||
lda c
|
||||
@ -896,14 +888,14 @@ debug_print_init: {
|
||||
lda #>at_cols+$28*1
|
||||
adc #0
|
||||
sta _63+1
|
||||
txa
|
||||
lda j
|
||||
clc
|
||||
adc _64
|
||||
sta _64
|
||||
bcc !+
|
||||
inc _64+1
|
||||
!:
|
||||
lda col
|
||||
txa
|
||||
ldy #0
|
||||
sta (_64),y
|
||||
lda c
|
||||
@ -913,14 +905,14 @@ debug_print_init: {
|
||||
lda #>at_cols+$28*2
|
||||
adc #0
|
||||
sta _67+1
|
||||
txa
|
||||
lda j
|
||||
clc
|
||||
adc _68
|
||||
sta _68
|
||||
bcc !+
|
||||
inc _68+1
|
||||
!:
|
||||
lda col
|
||||
txa
|
||||
ldy #0
|
||||
sta (_68),y
|
||||
lda c
|
||||
@ -930,14 +922,14 @@ debug_print_init: {
|
||||
lda #>at_cols+$28*3
|
||||
adc #0
|
||||
sta _71+1
|
||||
txa
|
||||
lda j
|
||||
clc
|
||||
adc _72
|
||||
sta _72
|
||||
bcc !+
|
||||
inc _72+1
|
||||
!:
|
||||
lda col
|
||||
txa
|
||||
ldy #0
|
||||
sta (_72),y
|
||||
lda c
|
||||
@ -947,14 +939,14 @@ debug_print_init: {
|
||||
lda #>at_cols+$28*4
|
||||
adc #0
|
||||
sta _75+1
|
||||
txa
|
||||
lda j
|
||||
clc
|
||||
adc _76
|
||||
sta _76
|
||||
bcc !+
|
||||
inc _76+1
|
||||
!:
|
||||
lda col
|
||||
txa
|
||||
ldy #0
|
||||
sta (_76),y
|
||||
lda c
|
||||
@ -964,14 +956,14 @@ debug_print_init: {
|
||||
lda #>at_cols+$28*5
|
||||
adc #0
|
||||
sta _79+1
|
||||
txa
|
||||
lda j
|
||||
clc
|
||||
adc _80
|
||||
sta _80
|
||||
bcc !+
|
||||
inc _80+1
|
||||
!:
|
||||
lda col
|
||||
txa
|
||||
ldy #0
|
||||
sta (_80),y
|
||||
lda c
|
||||
@ -981,14 +973,14 @@ debug_print_init: {
|
||||
lda #>at_cols+$28*6
|
||||
adc #0
|
||||
sta _83+1
|
||||
txa
|
||||
lda j
|
||||
clc
|
||||
adc _84
|
||||
sta _84
|
||||
bcc !+
|
||||
inc _84+1
|
||||
!:
|
||||
lda col
|
||||
txa
|
||||
ldy #0
|
||||
sta (_84),y
|
||||
lda c
|
||||
@ -998,14 +990,14 @@ debug_print_init: {
|
||||
lda #>at_cols+$28*7
|
||||
adc #0
|
||||
sta _87+1
|
||||
txa
|
||||
lda j
|
||||
clc
|
||||
adc _88
|
||||
sta _88
|
||||
bcc !+
|
||||
inc _88+1
|
||||
!:
|
||||
lda col
|
||||
txa
|
||||
ldy #0
|
||||
sta (_88),y
|
||||
lda c
|
||||
@ -1015,28 +1007,28 @@ debug_print_init: {
|
||||
lda #>at_cols+$28*8
|
||||
adc #0
|
||||
sta _91+1
|
||||
txa
|
||||
lda j
|
||||
clc
|
||||
adc _92
|
||||
sta _92
|
||||
bcc !+
|
||||
inc _92+1
|
||||
!:
|
||||
lda col
|
||||
txa
|
||||
ldy #0
|
||||
sta (_92),y
|
||||
inx
|
||||
cpx #4
|
||||
inc j
|
||||
lda #4
|
||||
cmp j
|
||||
beq !b2+
|
||||
jmp b2
|
||||
!b2:
|
||||
lda #4
|
||||
clc
|
||||
adc c
|
||||
sta c
|
||||
lax c
|
||||
axs #-4
|
||||
stx c
|
||||
inc i
|
||||
lda i
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp i
|
||||
beq !b1+
|
||||
jmp b1
|
||||
!b1:
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -161,7 +161,7 @@
|
||||
(signed byte~) calculate_matrix::$34 reg byte a 4.0
|
||||
(label) calculate_matrix::@return
|
||||
(signed byte) calculate_matrix::sx
|
||||
(signed byte) calculate_matrix::sx#0 reg byte x 2.4545454545454546
|
||||
(signed byte) calculate_matrix::sx#0 reg byte y 2.4545454545454546
|
||||
(signed byte) calculate_matrix::sy
|
||||
(signed byte) calculate_matrix::sy#0 sy zp ZP_BYTE:3 1.5333333333333332
|
||||
(signed byte) calculate_matrix::sz
|
||||
@ -170,7 +170,7 @@
|
||||
(signed byte) calculate_matrix::t10
|
||||
(signed byte) calculate_matrix::t10#0 t10 zp ZP_BYTE:16 0.18181818181818182
|
||||
(signed byte) calculate_matrix::t2
|
||||
(signed byte) calculate_matrix::t2#0 reg byte y 0.9090909090909092
|
||||
(signed byte) calculate_matrix::t2#0 reg byte x 0.9090909090909092
|
||||
(signed byte) calculate_matrix::t3
|
||||
(signed byte) calculate_matrix::t3#0 t3 zp ZP_BYTE:5 0.29411764705882354
|
||||
(signed byte) calculate_matrix::t4
|
||||
@ -261,7 +261,7 @@
|
||||
(byte) debug_print::print_sbyte_pos2_row
|
||||
(const byte) debug_print::print_sbyte_pos2_row#0 print_sbyte_pos2_row = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(signed byte) debug_print::print_sbyte_pos2_sb
|
||||
(signed byte) debug_print::print_sbyte_pos2_sb#0 reg byte a 4.0
|
||||
(signed byte) debug_print::print_sbyte_pos2_sb#0 reg byte x 4.0
|
||||
(label) debug_print::print_sbyte_pos3
|
||||
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos3_$0
|
||||
(byte*~) debug_print::print_sbyte_pos3_$1
|
||||
@ -280,7 +280,7 @@
|
||||
(byte) debug_print::print_sbyte_pos4_row
|
||||
(const byte) debug_print::print_sbyte_pos4_row#0 print_sbyte_pos4_row = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(signed byte) debug_print::print_sbyte_pos4_sb
|
||||
(signed byte) debug_print::print_sbyte_pos4_sb#0 reg byte a 4.0
|
||||
(signed byte) debug_print::print_sbyte_pos4_sb#0 reg byte x 4.0
|
||||
(label) debug_print::print_sbyte_pos5
|
||||
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos5_$0
|
||||
(byte*~) debug_print::print_sbyte_pos5_$1
|
||||
@ -378,13 +378,13 @@
|
||||
(byte) debug_print_init::c#1 c zp ZP_BYTE:2 7.333333333333333
|
||||
(byte) debug_print_init::c#2 c zp ZP_BYTE:2 23.512195121951223
|
||||
(byte) debug_print_init::col
|
||||
(byte) debug_print_init::col#0 col zp ZP_BYTE:4 37.40740740740741
|
||||
(byte) debug_print_init::col#0 reg byte x 37.40740740740741
|
||||
(byte) debug_print_init::i
|
||||
(byte) debug_print_init::i#1 i zp ZP_BYTE:3 16.5
|
||||
(byte) debug_print_init::i#2 i zp ZP_BYTE:3 3.7142857142857144
|
||||
(byte) debug_print_init::j
|
||||
(byte) debug_print_init::j#1 reg byte x 151.5
|
||||
(byte) debug_print_init::j#2 reg byte x 38.31034482758621
|
||||
(byte) debug_print_init::j#1 j zp ZP_BYTE:4 151.5
|
||||
(byte) debug_print_init::j#2 j zp ZP_BYTE:4 38.31034482758621
|
||||
(const string) debug_print_init::str str = (string) "sx@"
|
||||
(const string) debug_print_init::str1 str1 = (string) "sy@"
|
||||
(const string) debug_print_init::str10 str10 = (string) "xp@"
|
||||
@ -557,22 +557,21 @@
|
||||
|
||||
zp ZP_BYTE:2 [ sx#10 sx#3 debug_print_init::c#2 debug_print_init::c#1 ]
|
||||
zp ZP_BYTE:3 [ sy#10 sy#3 calculate_matrix::sy#0 debug_print_init::i#2 debug_print_init::i#1 ]
|
||||
zp ZP_BYTE:4 [ anim::i#2 anim::i#1 debug_print::c#2 debug_print::c#1 calculate_matrix::t1#0 debug_print_init::col#0 ]
|
||||
zp ZP_BYTE:4 [ anim::i#2 anim::i#1 debug_print::c#2 debug_print::c#1 debug_print_init::j#2 debug_print_init::j#1 calculate_matrix::t1#0 ]
|
||||
zp ZP_BYTE:5 [ debug_print::i#2 debug_print::i#1 rotate_matrix::y#0 calculate_matrix::t3#0 ]
|
||||
zp ZP_WORD:6 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 debug_print_init::$59 debug_print_init::$60 debug_print_init::$63 debug_print_init::$64 debug_print_init::$67 debug_print_init::$68 debug_print_init::$71 debug_print_init::$72 debug_print_init::$75 debug_print_init::$76 debug_print_init::$79 debug_print_init::$80 debug_print_init::$83 debug_print_init::$84 debug_print_init::$87 debug_print_init::$88 debug_print_init::$91 debug_print_init::$92 ]
|
||||
reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
|
||||
zp ZP_BYTE:8 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 rotate_matrix::z#0 calculate_matrix::t4#0 ]
|
||||
reg byte x [ debug_print_init::j#2 debug_print_init::j#1 ]
|
||||
zp ZP_WORD:9 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
|
||||
reg byte x [ sprites_init::i#2 sprites_init::i#1 ]
|
||||
reg byte x [ calculate_matrix::sx#0 ]
|
||||
reg byte y [ calculate_matrix::sx#0 ]
|
||||
reg byte x [ rotate_matrix::x#0 ]
|
||||
reg byte x [ anim::i2#0 ]
|
||||
reg byte a [ anim::$8 ]
|
||||
reg byte a [ anim::$10 ]
|
||||
reg byte x [ debug_print::print_sbyte_pos1_sb#0 ]
|
||||
reg byte a [ debug_print::print_sbyte_pos2_sb#0 ]
|
||||
reg byte a [ debug_print::print_sbyte_pos4_sb#0 ]
|
||||
reg byte x [ debug_print::print_sbyte_pos2_sb#0 ]
|
||||
reg byte x [ debug_print::print_sbyte_pos4_sb#0 ]
|
||||
reg byte x [ debug_print::print_sbyte_pos5_sb#0 ]
|
||||
reg byte x [ debug_print::print_sbyte_pos6_sb#0 ]
|
||||
reg byte x [ debug_print::print_sbyte_pos7_sb#0 ]
|
||||
@ -583,7 +582,7 @@ reg byte x [ debug_print::print_sbyte_pos11_sb#0 ]
|
||||
reg byte x [ debug_print::print_sbyte_pos12_sb#0 ]
|
||||
reg byte a [ print_byte_at::$0 ]
|
||||
reg byte x [ print_byte_at::$2 ]
|
||||
reg byte y [ calculate_matrix::t2#0 ]
|
||||
reg byte x [ calculate_matrix::t2#0 ]
|
||||
zp ZP_BYTE:11 [ calculate_matrix::t5#0 ]
|
||||
zp ZP_BYTE:12 [ calculate_matrix::t6#0 ]
|
||||
zp ZP_BYTE:13 [ calculate_matrix::t7#0 ]
|
||||
@ -615,3 +614,4 @@ reg byte a [ calculate_matrix::$31 ]
|
||||
reg byte a [ calculate_matrix::$32 ]
|
||||
reg byte a [ calculate_matrix::$33 ]
|
||||
reg byte a [ calculate_matrix::$34 ]
|
||||
reg byte x [ debug_print_init::col#0 ]
|
||||
|
@ -146,10 +146,9 @@ print_byte: {
|
||||
tay
|
||||
lda print_hextab,y
|
||||
jsr print_char
|
||||
txa
|
||||
and #$f
|
||||
tay
|
||||
lda print_hextab,y
|
||||
lda #$f
|
||||
axs #0
|
||||
lda print_hextab,x
|
||||
jsr print_char
|
||||
rts
|
||||
}
|
||||
@ -255,16 +254,14 @@ mulf_init: {
|
||||
sta mulf_sqr1+$100,x
|
||||
txa
|
||||
eor #$ff
|
||||
clc
|
||||
adc #1
|
||||
tay
|
||||
iny
|
||||
lda val
|
||||
sta mulf_sqr1,y
|
||||
txa
|
||||
eor #$ff
|
||||
clc
|
||||
adc #1
|
||||
tay
|
||||
iny
|
||||
lda val
|
||||
sta mulf_sqr1+$100,y
|
||||
sta mulf_sqr2+1,x
|
||||
|
@ -2464,8 +2464,8 @@ mulf_init: {
|
||||
//SEG207 [102] (byte) mulf_init::i#1 ← ++ (byte) mulf_init::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG208 [103] if((byte) mulf_init::i#1!=(byte/word/signed word/dword/signed dword) $81) goto mulf_init::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$81
|
||||
lda #$81
|
||||
cmp i
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG209 mulf_init::@return
|
||||
@ -2600,22 +2600,22 @@ Uplift Scope [main]
|
||||
Uplift Scope [do_perspective]
|
||||
Uplift Scope [perspective]
|
||||
|
||||
Uplifting [mulf_init] best 4498 combination reg byte x [ mulf_init::i#2 mulf_init::i#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$8 ] zp ZP_BYTE:24 [ mulf_init::$10 ] zp ZP_WORD:16 [ mulf_init::add#2 mulf_init::add#1 ] zp ZP_BYTE:20 [ mulf_init::val#0 ] zp ZP_WORD:13 [ mulf_init::sqr#2 mulf_init::sqr#1 ]
|
||||
Uplifting [mulf_init] best 4458 combination reg byte x [ mulf_init::i#2 mulf_init::i#1 ] reg byte y [ mulf_init::$2 ] reg byte y [ mulf_init::$4 ] reg byte a [ mulf_init::$8 ] zp ZP_BYTE:24 [ mulf_init::$10 ] zp ZP_WORD:16 [ mulf_init::add#2 mulf_init::add#1 ] zp ZP_BYTE:20 [ mulf_init::val#0 ] zp ZP_WORD:13 [ mulf_init::sqr#2 mulf_init::sqr#1 ]
|
||||
Limited combination testing to 100 combinations of 2304 possible.
|
||||
Uplifting [] best 4498 combination zp ZP_WORD:2 [ print_line_cursor#11 print_line_cursor#1 ] zp ZP_WORD:8 [ print_char_cursor#44 print_char_cursor#69 print_char_cursor#2 print_char_cursor#74 print_char_cursor#12 print_char_cursor#1 ]
|
||||
Uplifting [print_str] best 4498 combination zp ZP_WORD:4 [ print_str::str#7 print_str::str#9 print_str::str#0 ]
|
||||
Uplifting [print_cls] best 4498 combination zp ZP_WORD:11 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||
Uplifting [print_byte] best 4479 combination reg byte x [ print_byte::b#3 print_byte::b#5 print_byte::b#6 print_byte::b#7 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ]
|
||||
Uplifting [print_char] best 4464 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
|
||||
Uplifting [print_sbyte] best 4449 combination reg byte x [ print_sbyte::b#6 print_sbyte::b#0 print_sbyte::b#4 ]
|
||||
Uplifting [print_ln] best 4449 combination
|
||||
Uplifting [main] best 4449 combination
|
||||
Uplifting [do_perspective] best 4449 combination
|
||||
Uplifting [perspective] best 4449 combination
|
||||
Uplifting [] best 4458 combination zp ZP_WORD:2 [ print_line_cursor#11 print_line_cursor#1 ] zp ZP_WORD:8 [ print_char_cursor#44 print_char_cursor#69 print_char_cursor#2 print_char_cursor#74 print_char_cursor#12 print_char_cursor#1 ]
|
||||
Uplifting [print_str] best 4458 combination zp ZP_WORD:4 [ print_str::str#7 print_str::str#9 print_str::str#0 ]
|
||||
Uplifting [print_cls] best 4458 combination zp ZP_WORD:11 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||
Uplifting [print_byte] best 4437 combination reg byte x [ print_byte::b#3 print_byte::b#5 print_byte::b#6 print_byte::b#7 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ]
|
||||
Uplifting [print_char] best 4422 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
|
||||
Uplifting [print_sbyte] best 4407 combination reg byte x [ print_sbyte::b#6 print_sbyte::b#0 print_sbyte::b#4 ]
|
||||
Uplifting [print_ln] best 4407 combination
|
||||
Uplifting [main] best 4407 combination
|
||||
Uplifting [do_perspective] best 4407 combination
|
||||
Uplifting [perspective] best 4407 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:24 [ mulf_init::$10 ]
|
||||
Uplifting [mulf_init] best 4409 combination reg byte a [ mulf_init::$10 ]
|
||||
Uplifting [mulf_init] best 4367 combination reg byte a [ mulf_init::$10 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:20 [ mulf_init::val#0 ]
|
||||
Uplifting [mulf_init] best 4409 combination zp ZP_BYTE:20 [ mulf_init::val#0 ]
|
||||
Uplifting [mulf_init] best 4367 combination zp ZP_BYTE:20 [ mulf_init::val#0 ]
|
||||
Coalescing zero page register [ zp ZP_WORD:2 [ print_line_cursor#11 print_line_cursor#1 ] ] with [ zp ZP_WORD:4 [ print_str::str#7 print_str::str#9 print_str::str#0 ] ]
|
||||
Coalescing zero page register [ zp ZP_WORD:2 [ print_line_cursor#11 print_line_cursor#1 print_str::str#7 print_str::str#9 print_str::str#0 ] ] with [ zp ZP_WORD:11 [ print_cls::sc#2 print_cls::sc#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_WORD:2 [ print_line_cursor#11 print_line_cursor#1 print_str::str#7 print_str::str#9 print_str::str#0 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:13 [ mulf_init::sqr#2 mulf_init::sqr#1 ] ]
|
||||
@ -2977,12 +2977,11 @@ print_byte: {
|
||||
jmp b1
|
||||
//SEG124 print_byte::@1
|
||||
b1:
|
||||
//SEG125 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuxx_band_vbuc1
|
||||
txa
|
||||
and #$f
|
||||
//SEG126 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa
|
||||
tay
|
||||
lda print_hextab,y
|
||||
//SEG125 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuxx=vbuxx_band_vbuc1
|
||||
lda #$f
|
||||
axs #0
|
||||
//SEG126 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx
|
||||
lda print_hextab,x
|
||||
//SEG127 [57] call print_char
|
||||
//SEG128 [59] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
|
||||
print_char_from_b1:
|
||||
@ -3191,22 +3190,20 @@ mulf_init: {
|
||||
//SEG194 [89] *((const byte[$200]) mulf_sqr1#0+(word/signed word/dword/signed dword) $100 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1
|
||||
lda val
|
||||
sta mulf_sqr1+$100,x
|
||||
//SEG195 [90] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 -- vbuaa=_neg_vbuxx
|
||||
//SEG195 [90] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 -- vbuyy=_neg_vbuxx
|
||||
txa
|
||||
eor #$ff
|
||||
clc
|
||||
adc #1
|
||||
//SEG196 [91] *((const byte[$200]) mulf_sqr1#0 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1
|
||||
tay
|
||||
iny
|
||||
//SEG196 [91] *((const byte[$200]) mulf_sqr1#0 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuyy=vbuz1
|
||||
lda val
|
||||
sta mulf_sqr1,y
|
||||
//SEG197 [92] (byte~) mulf_init::$4 ← - (byte) mulf_init::i#2 -- vbuaa=_neg_vbuxx
|
||||
//SEG197 [92] (byte~) mulf_init::$4 ← - (byte) mulf_init::i#2 -- vbuyy=_neg_vbuxx
|
||||
txa
|
||||
eor #$ff
|
||||
clc
|
||||
adc #1
|
||||
//SEG198 [93] *((const byte[$200]) mulf_sqr1#0+(word/signed word/dword/signed dword) $100 + (byte~) mulf_init::$4) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1
|
||||
tay
|
||||
iny
|
||||
//SEG198 [93] *((const byte[$200]) mulf_sqr1#0+(word/signed word/dword/signed dword) $100 + (byte~) mulf_init::$4) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuyy=vbuz1
|
||||
lda val
|
||||
sta mulf_sqr1+$100,y
|
||||
//SEG199 [94] *((const byte[$200]) mulf_sqr2#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1
|
||||
@ -3545,8 +3542,8 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@return
|
||||
(void()) mulf_init()
|
||||
(byte/signed word/word/dword/signed dword~) mulf_init::$10 reg byte a 22.0
|
||||
(byte~) mulf_init::$2 reg byte a 22.0
|
||||
(byte~) mulf_init::$4 reg byte a 22.0
|
||||
(byte~) mulf_init::$2 reg byte y 22.0
|
||||
(byte~) mulf_init::$4 reg byte y 22.0
|
||||
(byte/signed word/word/dword/signed dword~) mulf_init::$8 reg byte a 22.0
|
||||
(label) mulf_init::@1
|
||||
(label) mulf_init::@return
|
||||
@ -3572,7 +3569,7 @@ FINAL SYMBOL TABLE
|
||||
(signed byte) perspective::z
|
||||
(void()) print_byte((byte) print_byte::b)
|
||||
(byte~) print_byte::$0 reg byte a 4.0
|
||||
(byte~) print_byte::$2 reg byte a 4.0
|
||||
(byte~) print_byte::$2 reg byte x 4.0
|
||||
(label) print_byte::@1
|
||||
(label) print_byte::@return
|
||||
(byte) print_byte::b
|
||||
@ -3644,16 +3641,16 @@ zp ZP_WORD:4 [ print_char_cursor#44 print_char_cursor#69 print_char_cursor#2 pri
|
||||
reg byte x [ print_sbyte::b#6 print_sbyte::b#0 print_sbyte::b#4 ]
|
||||
reg byte x [ mulf_init::i#2 mulf_init::i#1 ]
|
||||
reg byte a [ print_byte::$0 ]
|
||||
reg byte a [ print_byte::$2 ]
|
||||
reg byte x [ print_byte::$2 ]
|
||||
zp ZP_BYTE:6 [ mulf_init::val#0 ]
|
||||
reg byte a [ mulf_init::$2 ]
|
||||
reg byte a [ mulf_init::$4 ]
|
||||
reg byte y [ mulf_init::$2 ]
|
||||
reg byte y [ mulf_init::$4 ]
|
||||
reg byte a [ mulf_init::$8 ]
|
||||
reg byte a [ mulf_init::$10 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 3781
|
||||
Score: 3739
|
||||
|
||||
//SEG0 File Comments
|
||||
// 3D Rotation using a Rotation Matrix
|
||||
@ -3928,12 +3925,11 @@ print_byte: {
|
||||
//SEG123 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy
|
||||
jsr print_char
|
||||
//SEG124 print_byte::@1
|
||||
//SEG125 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuxx_band_vbuc1
|
||||
txa
|
||||
and #$f
|
||||
//SEG126 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa
|
||||
tay
|
||||
lda print_hextab,y
|
||||
//SEG125 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuxx=vbuxx_band_vbuc1
|
||||
lda #$f
|
||||
axs #0
|
||||
//SEG126 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx
|
||||
lda print_hextab,x
|
||||
//SEG127 [57] call print_char
|
||||
//SEG128 [59] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
|
||||
//SEG129 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy
|
||||
@ -4105,22 +4101,20 @@ mulf_init: {
|
||||
sta mulf_sqr1,x
|
||||
//SEG194 [89] *((const byte[$200]) mulf_sqr1#0+(word/signed word/dword/signed dword) $100 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1
|
||||
sta mulf_sqr1+$100,x
|
||||
//SEG195 [90] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 -- vbuaa=_neg_vbuxx
|
||||
//SEG195 [90] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 -- vbuyy=_neg_vbuxx
|
||||
txa
|
||||
eor #$ff
|
||||
clc
|
||||
adc #1
|
||||
//SEG196 [91] *((const byte[$200]) mulf_sqr1#0 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1
|
||||
tay
|
||||
iny
|
||||
//SEG196 [91] *((const byte[$200]) mulf_sqr1#0 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuyy=vbuz1
|
||||
lda val
|
||||
sta mulf_sqr1,y
|
||||
//SEG197 [92] (byte~) mulf_init::$4 ← - (byte) mulf_init::i#2 -- vbuaa=_neg_vbuxx
|
||||
//SEG197 [92] (byte~) mulf_init::$4 ← - (byte) mulf_init::i#2 -- vbuyy=_neg_vbuxx
|
||||
txa
|
||||
eor #$ff
|
||||
clc
|
||||
adc #1
|
||||
//SEG198 [93] *((const byte[$200]) mulf_sqr1#0+(word/signed word/dword/signed dword) $100 + (byte~) mulf_init::$4) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1
|
||||
tay
|
||||
iny
|
||||
//SEG198 [93] *((const byte[$200]) mulf_sqr1#0+(word/signed word/dword/signed dword) $100 + (byte~) mulf_init::$4) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuyy=vbuz1
|
||||
lda val
|
||||
sta mulf_sqr1+$100,y
|
||||
//SEG199 [94] *((const byte[$200]) mulf_sqr2#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1
|
||||
|
@ -112,8 +112,8 @@
|
||||
(label) main::@return
|
||||
(void()) mulf_init()
|
||||
(byte/signed word/word/dword/signed dword~) mulf_init::$10 reg byte a 22.0
|
||||
(byte~) mulf_init::$2 reg byte a 22.0
|
||||
(byte~) mulf_init::$4 reg byte a 22.0
|
||||
(byte~) mulf_init::$2 reg byte y 22.0
|
||||
(byte~) mulf_init::$4 reg byte y 22.0
|
||||
(byte/signed word/word/dword/signed dword~) mulf_init::$8 reg byte a 22.0
|
||||
(label) mulf_init::@1
|
||||
(label) mulf_init::@return
|
||||
@ -139,7 +139,7 @@
|
||||
(signed byte) perspective::z
|
||||
(void()) print_byte((byte) print_byte::b)
|
||||
(byte~) print_byte::$0 reg byte a 4.0
|
||||
(byte~) print_byte::$2 reg byte a 4.0
|
||||
(byte~) print_byte::$2 reg byte x 4.0
|
||||
(label) print_byte::@1
|
||||
(label) print_byte::@return
|
||||
(byte) print_byte::b
|
||||
@ -211,9 +211,9 @@ zp ZP_WORD:4 [ print_char_cursor#44 print_char_cursor#69 print_char_cursor#2 pri
|
||||
reg byte x [ print_sbyte::b#6 print_sbyte::b#0 print_sbyte::b#4 ]
|
||||
reg byte x [ mulf_init::i#2 mulf_init::i#1 ]
|
||||
reg byte a [ print_byte::$0 ]
|
||||
reg byte a [ print_byte::$2 ]
|
||||
reg byte x [ print_byte::$2 ]
|
||||
zp ZP_BYTE:6 [ mulf_init::val#0 ]
|
||||
reg byte a [ mulf_init::$2 ]
|
||||
reg byte a [ mulf_init::$4 ]
|
||||
reg byte y [ mulf_init::$2 ]
|
||||
reg byte y [ mulf_init::$4 ]
|
||||
reg byte a [ mulf_init::$8 ]
|
||||
reg byte a [ mulf_init::$10 ]
|
||||
|
@ -357,8 +357,8 @@ bitmap_clear: {
|
||||
cpx #$c8
|
||||
bne b2
|
||||
inc y
|
||||
lda y
|
||||
cmp #$28
|
||||
lda #$28
|
||||
cmp y
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
@ -391,9 +391,8 @@ bitmap_init: {
|
||||
sta yoffs+1
|
||||
tax
|
||||
b3:
|
||||
txa
|
||||
and #7
|
||||
sta _6
|
||||
lda #7
|
||||
sax _6
|
||||
lda yoffs
|
||||
ora _6
|
||||
sta bitmap_plot_ylo,x
|
||||
|
@ -3704,8 +3704,8 @@ bitmap_clear: {
|
||||
//SEG319 [166] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1
|
||||
inc x
|
||||
//SEG320 [167] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) $c8) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda x
|
||||
cmp #$c8
|
||||
lda #$c8
|
||||
cmp x
|
||||
bne b2_from_b2
|
||||
jmp b3
|
||||
//SEG321 bitmap_clear::@3
|
||||
@ -3713,8 +3713,8 @@ bitmap_clear: {
|
||||
//SEG322 [168] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1
|
||||
inc y
|
||||
//SEG323 [169] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda y
|
||||
cmp #$28
|
||||
lda #$28
|
||||
cmp y
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG324 bitmap_clear::@return
|
||||
@ -3760,8 +3760,8 @@ bitmap_init: {
|
||||
ldy x
|
||||
sta bitmap_plot_xlo,y
|
||||
//SEG336 [175] *((const byte[$100]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy x
|
||||
lda #>BITMAP
|
||||
ldy x
|
||||
sta bitmap_plot_xhi,y
|
||||
//SEG337 [176] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2
|
||||
lda bits
|
||||
@ -3832,8 +3832,8 @@ bitmap_init: {
|
||||
and y
|
||||
sta _10
|
||||
//SEG359 [190] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda _10
|
||||
cmp #7
|
||||
lda #7
|
||||
cmp _10
|
||||
bne b4_from_b3
|
||||
jmp b7
|
||||
//SEG360 bitmap_init::@7
|
||||
@ -3979,15 +3979,12 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:31 [ b
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ bitmap_clear::x#2 bitmap_clear::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:34 [ bitmap_clear::x#2 bitmap_clear::x#1 ]
|
||||
Statement [173] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ) always clobbers reg byte a
|
||||
Statement [175] *((const byte[$100]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP#0 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
Statement [175] *((const byte[$100]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP#0 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a
|
||||
Statement [176] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a
|
||||
Statement [183] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Statement [189] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ) always clobbers reg byte a
|
||||
Statement [191] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Statement [4] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
@ -4112,89 +4109,89 @@ Uplifting [bitmap_line_ydxd] best 274457 combination zp ZP_BYTE:28 [ bitmap_line
|
||||
Limited combination testing to 100 combinations of 256 possible.
|
||||
Uplifting [bitmap_clear] best 273557 combination zp ZP_WORD:32 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:61 [ bitmap_clear::$3 ]
|
||||
Uplifting [lines] best 273557 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ]
|
||||
Uplifting [bitmap_init] best 273047 combination zp ZP_WORD:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$0 ] zp ZP_BYTE:65 [ bitmap_init::$7 ] zp ZP_BYTE:66 [ bitmap_init::$8 ] zp ZP_BYTE:67 [ bitmap_init::$9 ] zp ZP_BYTE:68 [ bitmap_init::$10 ] zp ZP_BYTE:64 [ bitmap_init::$6 ]
|
||||
Uplifting [bitmap_init] best 273007 combination zp ZP_WORD:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$0 ] zp ZP_BYTE:65 [ bitmap_init::$7 ] zp ZP_BYTE:66 [ bitmap_init::$8 ] zp ZP_BYTE:67 [ bitmap_init::$9 ] zp ZP_BYTE:68 [ bitmap_init::$10 ] zp ZP_BYTE:64 [ bitmap_init::$6 ]
|
||||
Limited combination testing to 100 combinations of 138240 possible.
|
||||
Uplifting [init_screen] best 273047 combination zp ZP_WORD:29 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [bitmap_line] best 272733 combination reg byte y [ bitmap_line::y1#0 ] zp ZP_BYTE:42 [ bitmap_line::y0#0 ] zp ZP_BYTE:41 [ bitmap_line::x1#0 ] zp ZP_BYTE:40 [ bitmap_line::x0#0 ] zp ZP_BYTE:45 [ bitmap_line::yd#2 ] zp ZP_BYTE:46 [ bitmap_line::yd#1 ] zp ZP_BYTE:48 [ bitmap_line::yd#10 ] zp ZP_BYTE:49 [ bitmap_line::yd#11 ] zp ZP_BYTE:44 [ bitmap_line::xd#2 ] zp ZP_BYTE:47 [ bitmap_line::xd#1 ]
|
||||
Uplifting [init_screen] best 273007 combination zp ZP_WORD:29 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [bitmap_line] best 272693 combination reg byte y [ bitmap_line::y1#0 ] zp ZP_BYTE:42 [ bitmap_line::y0#0 ] zp ZP_BYTE:41 [ bitmap_line::x1#0 ] zp ZP_BYTE:40 [ bitmap_line::x0#0 ] zp ZP_BYTE:45 [ bitmap_line::yd#2 ] zp ZP_BYTE:46 [ bitmap_line::yd#1 ] zp ZP_BYTE:48 [ bitmap_line::yd#10 ] zp ZP_BYTE:49 [ bitmap_line::yd#11 ] zp ZP_BYTE:44 [ bitmap_line::xd#2 ] zp ZP_BYTE:47 [ bitmap_line::xd#1 ]
|
||||
Limited combination testing to 100 combinations of 186624 possible.
|
||||
Uplifting [main] best 272733 combination
|
||||
Uplifting [] best 272733 combination
|
||||
Uplifting [main] best 272693 combination
|
||||
Uplifting [] best 272693 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:8 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ]
|
||||
Uplifting [bitmap_line_xdyi] best 272733 combination zp ZP_BYTE:8 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ]
|
||||
Uplifting [bitmap_line_xdyi] best 272693 combination zp ZP_BYTE:8 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:16 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ]
|
||||
Uplifting [bitmap_line_ydxi] best 272733 combination zp ZP_BYTE:16 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ]
|
||||
Uplifting [bitmap_line_ydxi] best 272693 combination zp ZP_BYTE:16 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:22 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ]
|
||||
Uplifting [bitmap_line_xdyd] best 272733 combination zp ZP_BYTE:22 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ]
|
||||
Uplifting [bitmap_line_xdyd] best 272693 combination zp ZP_BYTE:22 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:28 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
|
||||
Uplifting [bitmap_line_ydxd] best 272733 combination zp ZP_BYTE:28 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
|
||||
Uplifting [bitmap_line_ydxd] best 272693 combination zp ZP_BYTE:28 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
|
||||
Uplifting [bitmap_line_xdyi] best 272733 combination zp ZP_BYTE:7 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
|
||||
Uplifting [bitmap_line_xdyi] best 272693 combination zp ZP_BYTE:7 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:21 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
|
||||
Uplifting [bitmap_line_xdyd] best 272733 combination zp ZP_BYTE:21 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
|
||||
Uplifting [bitmap_line_xdyd] best 272693 combination zp ZP_BYTE:21 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:50 [ bitmap_line_xdyi::$6 ]
|
||||
Uplifting [bitmap_line_xdyi] best 272733 combination zp ZP_BYTE:50 [ bitmap_line_xdyi::$6 ]
|
||||
Uplifting [bitmap_line_xdyi] best 272693 combination zp ZP_BYTE:50 [ bitmap_line_xdyi::$6 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:59 [ bitmap_line_xdyd::$6 ]
|
||||
Uplifting [bitmap_line_xdyd] best 272733 combination zp ZP_BYTE:59 [ bitmap_line_xdyd::$6 ]
|
||||
Uplifting [bitmap_line_xdyd] best 272693 combination zp ZP_BYTE:59 [ bitmap_line_xdyd::$6 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:15 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ]
|
||||
Uplifting [bitmap_line_ydxi] best 272733 combination zp ZP_BYTE:15 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ]
|
||||
Uplifting [bitmap_line_ydxi] best 272693 combination zp ZP_BYTE:15 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:27 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ]
|
||||
Uplifting [bitmap_line_ydxd] best 272733 combination zp ZP_BYTE:27 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ]
|
||||
Uplifting [bitmap_line_ydxd] best 272693 combination zp ZP_BYTE:27 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ lines::l#2 lines::l#1 ]
|
||||
Uplifting [lines] best 272733 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ]
|
||||
Uplifting [lines] best 272693 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ]
|
||||
Uplifting [bitmap_line_xdyi] best 272733 combination zp ZP_BYTE:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ]
|
||||
Uplifting [bitmap_line_xdyi] best 272693 combination zp ZP_BYTE:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:12 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ]
|
||||
Uplifting [bitmap_line_ydxi] best 272733 combination zp ZP_BYTE:12 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ]
|
||||
Uplifting [bitmap_line_ydxi] best 272693 combination zp ZP_BYTE:12 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:18 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ]
|
||||
Uplifting [bitmap_line_xdyd] best 272733 combination zp ZP_BYTE:18 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ]
|
||||
Uplifting [bitmap_line_xdyd] best 272693 combination zp ZP_BYTE:18 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:24 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ]
|
||||
Uplifting [bitmap_line_ydxd] best 272733 combination zp ZP_BYTE:24 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ]
|
||||
Uplifting [bitmap_line_ydxd] best 272693 combination zp ZP_BYTE:24 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ]
|
||||
Uplifting [bitmap_line_xdyi] best 272733 combination zp ZP_BYTE:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ]
|
||||
Uplifting [bitmap_line_xdyi] best 272693 combination zp ZP_BYTE:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:11 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ]
|
||||
Uplifting [bitmap_line_ydxi] best 272733 combination zp ZP_BYTE:11 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ]
|
||||
Uplifting [bitmap_line_ydxi] best 272693 combination zp ZP_BYTE:11 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:17 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ]
|
||||
Uplifting [bitmap_line_xdyd] best 272733 combination zp ZP_BYTE:17 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ]
|
||||
Uplifting [bitmap_line_xdyd] best 272693 combination zp ZP_BYTE:17 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:23 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ]
|
||||
Uplifting [bitmap_line_ydxd] best 272733 combination zp ZP_BYTE:23 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ]
|
||||
Uplifting [bitmap_line_ydxd] best 272693 combination zp ZP_BYTE:23 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ]
|
||||
Uplifting [bitmap_line_xdyi] best 272733 combination zp ZP_BYTE:5 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ]
|
||||
Uplifting [bitmap_line_xdyi] best 272693 combination zp ZP_BYTE:5 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ]
|
||||
Uplifting [bitmap_line_ydxi] best 272733 combination zp ZP_BYTE:13 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ]
|
||||
Uplifting [bitmap_line_ydxi] best 272693 combination zp ZP_BYTE:13 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:19 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ]
|
||||
Uplifting [bitmap_line_xdyd] best 272733 combination zp ZP_BYTE:19 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ]
|
||||
Uplifting [bitmap_line_xdyd] best 272693 combination zp ZP_BYTE:19 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ]
|
||||
Uplifting [bitmap_line_ydxd] best 272733 combination zp ZP_BYTE:25 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ]
|
||||
Uplifting [bitmap_line_ydxd] best 272693 combination zp ZP_BYTE:25 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:65 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 272673 combination reg byte a [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 272633 combination reg byte a [ bitmap_init::$7 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:66 [ bitmap_init::$8 ]
|
||||
Uplifting [bitmap_init] best 272613 combination reg byte a [ bitmap_init::$8 ]
|
||||
Uplifting [bitmap_init] best 272573 combination reg byte a [ bitmap_init::$8 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:67 [ bitmap_init::$9 ]
|
||||
Uplifting [bitmap_init] best 272553 combination reg byte a [ bitmap_init::$9 ]
|
||||
Uplifting [bitmap_init] best 272513 combination reg byte a [ bitmap_init::$9 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:68 [ bitmap_init::$10 ]
|
||||
Uplifting [bitmap_init] best 272493 combination reg byte a [ bitmap_init::$10 ]
|
||||
Uplifting [bitmap_init] best 272473 combination reg byte a [ bitmap_init::$10 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
|
||||
Uplifting [bitmap_clear] best 272493 combination zp ZP_BYTE:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
|
||||
Uplifting [bitmap_clear] best 272473 combination zp ZP_BYTE:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:64 [ bitmap_init::$6 ]
|
||||
Uplifting [bitmap_init] best 272493 combination zp ZP_BYTE:64 [ bitmap_init::$6 ]
|
||||
Uplifting [bitmap_init] best 272473 combination zp ZP_BYTE:64 [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:42 [ bitmap_line::y0#0 ]
|
||||
Uplifting [bitmap_line] best 272493 combination zp ZP_BYTE:42 [ bitmap_line::y0#0 ]
|
||||
Uplifting [bitmap_line] best 272473 combination zp ZP_BYTE:42 [ bitmap_line::y0#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:41 [ bitmap_line::x1#0 ]
|
||||
Uplifting [bitmap_line] best 272493 combination zp ZP_BYTE:41 [ bitmap_line::x1#0 ]
|
||||
Uplifting [bitmap_line] best 272473 combination zp ZP_BYTE:41 [ bitmap_line::x1#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:40 [ bitmap_line::x0#0 ]
|
||||
Uplifting [bitmap_line] best 272493 combination zp ZP_BYTE:40 [ bitmap_line::x0#0 ]
|
||||
Uplifting [bitmap_line] best 272473 combination zp ZP_BYTE:40 [ bitmap_line::x0#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:45 [ bitmap_line::yd#2 ]
|
||||
Uplifting [bitmap_line] best 272493 combination zp ZP_BYTE:45 [ bitmap_line::yd#2 ]
|
||||
Uplifting [bitmap_line] best 272473 combination zp ZP_BYTE:45 [ bitmap_line::yd#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:46 [ bitmap_line::yd#1 ]
|
||||
Uplifting [bitmap_line] best 272493 combination zp ZP_BYTE:46 [ bitmap_line::yd#1 ]
|
||||
Uplifting [bitmap_line] best 272473 combination zp ZP_BYTE:46 [ bitmap_line::yd#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:48 [ bitmap_line::yd#10 ]
|
||||
Uplifting [bitmap_line] best 272493 combination zp ZP_BYTE:48 [ bitmap_line::yd#10 ]
|
||||
Uplifting [bitmap_line] best 272473 combination zp ZP_BYTE:48 [ bitmap_line::yd#10 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:49 [ bitmap_line::yd#11 ]
|
||||
Uplifting [bitmap_line] best 272493 combination zp ZP_BYTE:49 [ bitmap_line::yd#11 ]
|
||||
Uplifting [bitmap_line] best 272473 combination zp ZP_BYTE:49 [ bitmap_line::yd#11 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:44 [ bitmap_line::xd#2 ]
|
||||
Uplifting [bitmap_line] best 272493 combination zp ZP_BYTE:44 [ bitmap_line::xd#2 ]
|
||||
Uplifting [bitmap_line] best 272473 combination zp ZP_BYTE:44 [ bitmap_line::xd#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:47 [ bitmap_line::xd#1 ]
|
||||
Uplifting [bitmap_line] best 272493 combination zp ZP_BYTE:47 [ bitmap_line::xd#1 ]
|
||||
Uplifting [bitmap_line] best 272473 combination zp ZP_BYTE:47 [ bitmap_line::xd#1 ]
|
||||
Coalescing zero page register with common assignment [ zp ZP_BYTE:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] ] with [ zp ZP_BYTE:45 [ bitmap_line::yd#2 ] ] - score: 1
|
||||
Coalescing zero page register with common assignment [ zp ZP_BYTE:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#2 ] ] with [ zp ZP_BYTE:49 [ bitmap_line::yd#11 ] ] - score: 1
|
||||
Coalescing zero page register with common assignment [ zp ZP_BYTE:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] ] with [ zp ZP_BYTE:44 [ bitmap_line::xd#2 ] ] - score: 1
|
||||
@ -5047,8 +5044,8 @@ bitmap_clear: {
|
||||
//SEG322 [168] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1
|
||||
inc y
|
||||
//SEG323 [169] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda y
|
||||
cmp #$28
|
||||
lda #$28
|
||||
cmp y
|
||||
bne b1_from_b3
|
||||
jmp breturn
|
||||
//SEG324 bitmap_clear::@return
|
||||
@ -5123,9 +5120,8 @@ bitmap_init: {
|
||||
//SEG351 bitmap_init::@3
|
||||
b3:
|
||||
//SEG352 [183] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
txa
|
||||
and #7
|
||||
sta _6
|
||||
lda #7
|
||||
sax _6
|
||||
//SEG353 [184] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
|
||||
lda yoffs
|
||||
//SEG354 [185] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa
|
||||
@ -5788,7 +5784,7 @@ reg byte a [ bitmap_init::$10 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 221043
|
||||
Score: 221023
|
||||
|
||||
//SEG0 File Comments
|
||||
//SEG1 Basic Upstart
|
||||
@ -6473,8 +6469,8 @@ bitmap_clear: {
|
||||
//SEG322 [168] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1
|
||||
inc y
|
||||
//SEG323 [169] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda y
|
||||
cmp #$28
|
||||
lda #$28
|
||||
cmp y
|
||||
bne b1
|
||||
//SEG324 bitmap_clear::@return
|
||||
//SEG325 [170] return
|
||||
@ -6536,9 +6532,8 @@ bitmap_init: {
|
||||
//SEG351 bitmap_init::@3
|
||||
b3:
|
||||
//SEG352 [183] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
txa
|
||||
and #7
|
||||
sta _6
|
||||
lda #7
|
||||
sax _6
|
||||
//SEG353 [184] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
|
||||
lda yoffs
|
||||
//SEG354 [185] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa
|
||||
|
@ -137,8 +137,8 @@ main: {
|
||||
lda #$20
|
||||
jsr plot_chargen
|
||||
inc i
|
||||
lda i
|
||||
cmp #4
|
||||
lda #4
|
||||
cmp i
|
||||
bne b2
|
||||
lda #0
|
||||
sta cur_pos
|
||||
@ -204,8 +204,8 @@ main: {
|
||||
jsr plot_chargen
|
||||
b12:
|
||||
inc ch
|
||||
lda ch
|
||||
cmp #$40
|
||||
lda #$40
|
||||
cmp ch
|
||||
bne b10
|
||||
jmp b3
|
||||
str: .text "f1@"
|
||||
@ -297,8 +297,8 @@ plot_chargen: {
|
||||
inc sc+1
|
||||
!:
|
||||
inc y
|
||||
lda y
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp y
|
||||
bne b2
|
||||
lda #$37
|
||||
sta PROCPORT
|
||||
|
@ -2738,8 +2738,8 @@ main: {
|
||||
//SEG55 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG56 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #4
|
||||
lda #4
|
||||
cmp i
|
||||
bne b2_from_b29
|
||||
//SEG57 [22] phi from main::@29 to main::@3 [phi:main::@29->main::@3]
|
||||
b3_from_b29:
|
||||
@ -2928,8 +2928,8 @@ main: {
|
||||
lda keyboard_get_keycode.return_2
|
||||
sta key
|
||||
//SEG124 [54] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) $3f) goto main::@11 -- vbuz1_eq_vbuc1_then_la1
|
||||
lda key
|
||||
cmp #$3f
|
||||
lda #$3f
|
||||
cmp key
|
||||
beq b11_from_b35
|
||||
jmp b21
|
||||
//SEG125 main::@21
|
||||
@ -2992,8 +2992,8 @@ main: {
|
||||
//SEG149 [65] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1
|
||||
inc ch
|
||||
//SEG150 [66] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) $40) goto main::@10 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda ch
|
||||
cmp #$40
|
||||
lda #$40
|
||||
cmp ch
|
||||
bne b10_from_b12
|
||||
//SEG151 [22] phi from main::@12 to main::@3 [phi:main::@12->main::@3]
|
||||
b3_from_b12:
|
||||
@ -3211,8 +3211,8 @@ plot_chargen: {
|
||||
//SEG217 [95] (byte) plot_chargen::x#1 ← ++ (byte) plot_chargen::x#2 -- vbuz1=_inc_vbuz1
|
||||
inc x
|
||||
//SEG218 [96] if((byte) plot_chargen::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@3 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda x
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp x
|
||||
bne b3_from_b4
|
||||
jmp b7
|
||||
//SEG219 plot_chargen::@7
|
||||
@ -3228,8 +3228,8 @@ plot_chargen: {
|
||||
//SEG221 [98] (byte) plot_chargen::y#1 ← ++ (byte) plot_chargen::y#2 -- vbuz1=_inc_vbuz1
|
||||
inc y
|
||||
//SEG222 [99] if((byte) plot_chargen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda y
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp y
|
||||
bne b2_from_b7
|
||||
jmp b8
|
||||
//SEG223 plot_chargen::@8
|
||||
@ -3488,9 +3488,6 @@ Statement [83] (word~) plot_chargen::$8 ← (word) mul8u::return#2 [ plot_charge
|
||||
Statement [84] (byte*) plot_chargen::sc#0 ← (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) plot_chargen::$8 [ plot_chargen::chargen#5 plot_chargen::sc#0 ] ( main:2::plot_chargen:19 [ main::i#2 plot_chargen::chargen#5 plot_chargen::sc#0 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 plot_chargen::sc#0 ] ) always clobbers reg byte a
|
||||
Statement [86] (byte) plot_chargen::bits#0 ← *((byte*) plot_chargen::chargen#5 + (byte) plot_chargen::y#2) [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] ( main:2::plot_chargen:19 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ plot_chargen::y#2 plot_chargen::y#1 ]
|
||||
Statement [88] (byte~) plot_chargen::$10 ← (byte) plot_chargen::bits#2 & (byte/word/signed word/dword/signed dword) $80 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 plot_chargen::$10 ] ( main:2::plot_chargen:19 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 plot_chargen::$10 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 plot_chargen::$10 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ plot_chargen::x#2 plot_chargen::x#1 ]
|
||||
Statement [92] *((byte*) plot_chargen::sc#3) ← (byte) plot_chargen::c#2 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] ( main:2::plot_chargen:19 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ plot_chargen::y#2 plot_chargen::y#1 ]
|
||||
@ -3501,14 +3498,10 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ ma
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ main::ch#2 main::ch#1 ]
|
||||
Statement [97] (byte*) plot_chargen::sc#2 ← (byte*) plot_chargen::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) $20 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] ( main:2::plot_chargen:19 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] ) always clobbers reg byte a
|
||||
Statement [100] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $37 [ ] ( main:2::plot_chargen:19 [ main::i#2 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 ] ) always clobbers reg byte a
|
||||
Statement [107] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::plot_chargen:19::mul8u:81 [ main::i#2 plot_chargen::chargen#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::plot_chargen:64::mul8u:81 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ]
|
||||
Statement [109] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::plot_chargen:19::mul8u:81 [ main::i#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::plot_chargen:64::mul8u:81 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a
|
||||
Statement [114] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ keyboard_key_pressed::key#6 keyboard_key_pressed::key#5 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ]
|
||||
Statement [115] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ keyboard_key_pressed::colidx#0 ]
|
||||
Statement [120] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
|
||||
Statement [122] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_key_pressed:23::keyboard_matrix_read:117 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:28::keyboard_matrix_read:117 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:117 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:38::keyboard_matrix_read:117 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:43::keyboard_matrix_read:117 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:56::keyboard_matrix_read:117 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
|
||||
Statement [123] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:23::keyboard_matrix_read:117 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:28::keyboard_matrix_read:117 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:117 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:38::keyboard_matrix_read:117 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:43::keyboard_matrix_read:117 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:56::keyboard_matrix_read:117 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
|
||||
Statement [129] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2 [ print_str_at::str#5 print_str_at::at#5 ] ( main:2::print_str_at:10 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:12 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:14 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:16 [ print_str_at::str#5 print_str_at::at#5 ] ) always clobbers reg byte a reg byte y
|
||||
@ -3524,15 +3517,12 @@ Statement [82] (word) mul8u::return#2 ← (word) mul8u::res#2 [ plot_chargen::ch
|
||||
Statement [83] (word~) plot_chargen::$8 ← (word) mul8u::return#2 [ plot_chargen::chargen#5 plot_chargen::$8 ] ( main:2::plot_chargen:19 [ main::i#2 plot_chargen::chargen#5 plot_chargen::$8 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 plot_chargen::$8 ] ) always clobbers reg byte a
|
||||
Statement [84] (byte*) plot_chargen::sc#0 ← (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) plot_chargen::$8 [ plot_chargen::chargen#5 plot_chargen::sc#0 ] ( main:2::plot_chargen:19 [ main::i#2 plot_chargen::chargen#5 plot_chargen::sc#0 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 plot_chargen::sc#0 ] ) always clobbers reg byte a
|
||||
Statement [86] (byte) plot_chargen::bits#0 ← *((byte*) plot_chargen::chargen#5 + (byte) plot_chargen::y#2) [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] ( main:2::plot_chargen:19 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [88] (byte~) plot_chargen::$10 ← (byte) plot_chargen::bits#2 & (byte/word/signed word/dword/signed dword) $80 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 plot_chargen::$10 ] ( main:2::plot_chargen:19 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 plot_chargen::$10 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 plot_chargen::$10 ] ) always clobbers reg byte a
|
||||
Statement [92] *((byte*) plot_chargen::sc#3) ← (byte) plot_chargen::c#2 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] ( main:2::plot_chargen:19 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] ) always clobbers reg byte y
|
||||
Statement [97] (byte*) plot_chargen::sc#2 ← (byte*) plot_chargen::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) $20 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] ( main:2::plot_chargen:19 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] ) always clobbers reg byte a
|
||||
Statement [100] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $37 [ ] ( main:2::plot_chargen:19 [ main::i#2 ] main:2::plot_chargen:64 [ main::cur_pos#12 main::shift#10 main::ch#2 ] ) always clobbers reg byte a
|
||||
Statement [107] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::plot_chargen:19::mul8u:81 [ main::i#2 plot_chargen::chargen#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::plot_chargen:64::mul8u:81 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a
|
||||
Statement [109] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::plot_chargen:19::mul8u:81 [ main::i#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::plot_chargen:64::mul8u:81 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a
|
||||
Statement [114] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
|
||||
Statement [115] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a
|
||||
Statement [120] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
|
||||
Statement [122] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_key_pressed:23::keyboard_matrix_read:117 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:28::keyboard_matrix_read:117 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:117 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:38::keyboard_matrix_read:117 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:43::keyboard_matrix_read:117 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:56::keyboard_matrix_read:117 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
|
||||
Statement [123] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:23::keyboard_matrix_read:117 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:28::keyboard_matrix_read:117 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:117 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:38::keyboard_matrix_read:117 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:43::keyboard_matrix_read:117 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:56::keyboard_matrix_read:117 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
|
||||
Statement [129] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2 [ print_str_at::str#5 print_str_at::at#5 ] ( main:2::print_str_at:10 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:12 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:14 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:16 [ print_str_at::str#5 print_str_at::at#5 ] ) always clobbers reg byte a reg byte y
|
||||
@ -3548,14 +3538,14 @@ Potential registers zp ZP_BYTE:10 [ plot_chargen::shift#2 plot_chargen::shift#1
|
||||
Potential registers zp ZP_BYTE:11 [ plot_chargen::pos#2 plot_chargen::pos#0 plot_chargen::pos#1 ] : zp ZP_BYTE:11 , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_WORD:12 [ plot_chargen::chargen#5 plot_chargen::chargen#0 plot_chargen::chargen#1 ] : zp ZP_WORD:12 ,
|
||||
Potential registers zp ZP_BYTE:14 [ plot_chargen::y#2 plot_chargen::y#1 ] : zp ZP_BYTE:14 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ] : zp ZP_BYTE:15 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ] : zp ZP_BYTE:15 , reg byte a , reg byte x ,
|
||||
Potential registers zp ZP_WORD:16 [ plot_chargen::sc#3 plot_chargen::sc#7 plot_chargen::sc#2 plot_chargen::sc#0 plot_chargen::sc#1 ] : zp ZP_WORD:16 ,
|
||||
Potential registers zp ZP_BYTE:18 [ plot_chargen::x#2 plot_chargen::x#1 ] : zp ZP_BYTE:18 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:18 [ plot_chargen::x#2 plot_chargen::x#1 ] : zp ZP_BYTE:18 , reg byte a , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:19 [ plot_chargen::c#2 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:20 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] : zp ZP_BYTE:20 , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_WORD:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] : zp ZP_WORD:21 ,
|
||||
Potential registers zp ZP_WORD:23 [ mul8u::mb#2 mul8u::mb#1 ] : zp ZP_WORD:23 ,
|
||||
Potential registers zp ZP_BYTE:25 [ keyboard_key_pressed::key#6 keyboard_key_pressed::key#5 ] : zp ZP_BYTE:25 , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:25 [ keyboard_key_pressed::key#6 keyboard_key_pressed::key#5 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_WORD:26 [ print_str_at::str#5 print_str_at::str#7 print_str_at::str#4 ] : zp ZP_WORD:26 ,
|
||||
Potential registers zp ZP_WORD:28 [ print_str_at::at#5 print_str_at::at#7 print_str_at::at#4 ] : zp ZP_WORD:28 ,
|
||||
Potential registers zp ZP_BYTE:30 [ keyboard_key_pressed::return#2 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y ,
|
||||
@ -3598,56 +3588,56 @@ Uplift Scope [keyboard_matrix_read] 4: zp ZP_BYTE:56 [ keyboard_matrix_read::row
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [plot_chargen] best 819629 combination reg byte a [ plot_chargen::$10 ] reg byte x [ plot_chargen::x#2 plot_chargen::x#1 ] zp ZP_BYTE:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ] zp ZP_WORD:16 [ plot_chargen::sc#3 plot_chargen::sc#7 plot_chargen::sc#2 plot_chargen::sc#0 plot_chargen::sc#1 ] reg byte a [ plot_chargen::c#2 ] zp ZP_BYTE:14 [ plot_chargen::y#2 plot_chargen::y#1 ] zp ZP_BYTE:10 [ plot_chargen::shift#2 plot_chargen::shift#1 ] zp ZP_BYTE:9 [ plot_chargen::ch#2 plot_chargen::ch#1 ] zp ZP_BYTE:11 [ plot_chargen::pos#2 plot_chargen::pos#0 plot_chargen::pos#1 ] zp ZP_WORD:12 [ plot_chargen::chargen#5 plot_chargen::chargen#0 plot_chargen::chargen#1 ] zp ZP_WORD:44 [ plot_chargen::$0 ] zp ZP_WORD:46 [ plot_chargen::$1 ] zp ZP_WORD:50 [ plot_chargen::$8 ]
|
||||
Limited combination testing to 100 combinations of 4608 possible.
|
||||
Limited combination testing to 100 combinations of 10368 possible.
|
||||
Uplifting [mul8u] best 810626 combination zp ZP_WORD:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:23 [ mul8u::mb#2 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp ZP_WORD:48 [ mul8u::return#2 ]
|
||||
Uplifting [main] best 808826 combination reg byte a [ main::pressed#2 main::pressed#1 ] zp ZP_BYTE:7 [ main::ch#2 main::ch#1 ] reg byte a [ main::key#0 ] zp ZP_BYTE:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#12 ] zp ZP_WORD:2 [ main::sc#2 main::sc#1 ] zp ZP_BYTE:4 [ main::i#2 main::i#1 ] zp ZP_BYTE:31 [ main::$15 ] zp ZP_BYTE:33 [ main::$18 ] zp ZP_BYTE:35 [ main::$21 ] zp ZP_BYTE:37 [ main::$24 ] zp ZP_BYTE:39 [ main::$27 ] zp ZP_BYTE:6 [ main::shift#10 ]
|
||||
Limited combination testing to 100 combinations of 262144 possible.
|
||||
Uplifting [keyboard_key_pressed] best 807989 combination reg byte x [ keyboard_key_pressed::key#6 keyboard_key_pressed::key#5 ] reg byte a [ keyboard_key_pressed::return#14 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#10 ] zp ZP_BYTE:34 [ keyboard_key_pressed::return#11 ] zp ZP_BYTE:36 [ keyboard_key_pressed::return#12 ] zp ZP_BYTE:38 [ keyboard_key_pressed::return#13 ] zp ZP_BYTE:59 [ keyboard_key_pressed::return#0 ] zp ZP_BYTE:55 [ keyboard_key_pressed::rowidx#0 ] zp ZP_BYTE:58 [ keyboard_key_pressed::$2 ] zp ZP_BYTE:54 [ keyboard_key_pressed::colidx#0 ]
|
||||
Limited combination testing to 100 combinations of 2359296 possible.
|
||||
Uplifting [keyboard_get_keycode] best 806783 combination reg byte a [ keyboard_get_keycode::return#2 ] reg byte x [ keyboard_get_keycode::ch#0 ] reg byte a [ keyboard_get_keycode::return#0 ]
|
||||
Uplifting [print_str_at] best 806783 combination zp ZP_WORD:26 [ print_str_at::str#5 print_str_at::str#7 print_str_at::str#4 ] zp ZP_WORD:28 [ print_str_at::at#5 print_str_at::at#7 print_str_at::at#4 ]
|
||||
Uplifting [keyboard_matrix_read] best 806765 combination reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#0 ]
|
||||
Uplifting [] best 806765 combination
|
||||
Uplifting [keyboard_key_pressed] best 807987 combination reg byte x [ keyboard_key_pressed::key#6 keyboard_key_pressed::key#5 ] reg byte a [ keyboard_key_pressed::return#14 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#10 ] zp ZP_BYTE:34 [ keyboard_key_pressed::return#11 ] zp ZP_BYTE:36 [ keyboard_key_pressed::return#12 ] zp ZP_BYTE:38 [ keyboard_key_pressed::return#13 ] zp ZP_BYTE:59 [ keyboard_key_pressed::return#0 ] zp ZP_BYTE:55 [ keyboard_key_pressed::rowidx#0 ] zp ZP_BYTE:58 [ keyboard_key_pressed::$2 ] zp ZP_BYTE:54 [ keyboard_key_pressed::colidx#0 ]
|
||||
Limited combination testing to 100 combinations of 3145728 possible.
|
||||
Uplifting [keyboard_get_keycode] best 806781 combination reg byte a [ keyboard_get_keycode::return#2 ] reg byte x [ keyboard_get_keycode::ch#0 ] reg byte a [ keyboard_get_keycode::return#0 ]
|
||||
Uplifting [print_str_at] best 806781 combination zp ZP_WORD:26 [ print_str_at::str#5 print_str_at::str#7 print_str_at::str#4 ] zp ZP_WORD:28 [ print_str_at::at#5 print_str_at::at#7 print_str_at::at#4 ]
|
||||
Uplifting [keyboard_matrix_read] best 806763 combination reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#0 ]
|
||||
Uplifting [] best 806763 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ]
|
||||
Uplifting [plot_chargen] best 806765 combination zp ZP_BYTE:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ]
|
||||
Uplifting [plot_chargen] best 806763 combination zp ZP_BYTE:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:14 [ plot_chargen::y#2 plot_chargen::y#1 ]
|
||||
Uplifting [plot_chargen] best 806765 combination zp ZP_BYTE:14 [ plot_chargen::y#2 plot_chargen::y#1 ]
|
||||
Uplifting [plot_chargen] best 806763 combination zp ZP_BYTE:14 [ plot_chargen::y#2 plot_chargen::y#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:10 [ plot_chargen::shift#2 plot_chargen::shift#1 ]
|
||||
Uplifting [plot_chargen] best 806459 combination reg byte x [ plot_chargen::shift#2 plot_chargen::shift#1 ]
|
||||
Uplifting [plot_chargen] best 806457 combination reg byte x [ plot_chargen::shift#2 plot_chargen::shift#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ main::ch#2 main::ch#1 ]
|
||||
Uplifting [main] best 806459 combination zp ZP_BYTE:7 [ main::ch#2 main::ch#1 ]
|
||||
Uplifting [main] best 806457 combination zp ZP_BYTE:7 [ main::ch#2 main::ch#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:9 [ plot_chargen::ch#2 plot_chargen::ch#1 ]
|
||||
Uplifting [plot_chargen] best 806153 combination reg byte a [ plot_chargen::ch#2 plot_chargen::ch#1 ]
|
||||
Uplifting [plot_chargen] best 806151 combination reg byte a [ plot_chargen::ch#2 plot_chargen::ch#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:11 [ plot_chargen::pos#2 plot_chargen::pos#0 plot_chargen::pos#1 ]
|
||||
Uplifting [plot_chargen] best 805824 combination reg byte y [ plot_chargen::pos#2 plot_chargen::pos#0 plot_chargen::pos#1 ]
|
||||
Uplifting [plot_chargen] best 805822 combination reg byte y [ plot_chargen::pos#2 plot_chargen::pos#0 plot_chargen::pos#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#12 ]
|
||||
Uplifting [main] best 805824 combination zp ZP_BYTE:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#12 ]
|
||||
Uplifting [main] best 805822 combination zp ZP_BYTE:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#12 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::i#2 main::i#1 ]
|
||||
Uplifting [main] best 805824 combination zp ZP_BYTE:4 [ main::i#2 main::i#1 ]
|
||||
Uplifting [main] best 805822 combination zp ZP_BYTE:4 [ main::i#2 main::i#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:31 [ main::$15 ]
|
||||
Uplifting [main] best 805764 combination reg byte a [ main::$15 ]
|
||||
Uplifting [main] best 805762 combination reg byte a [ main::$15 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:33 [ main::$18 ]
|
||||
Uplifting [main] best 805704 combination reg byte a [ main::$18 ]
|
||||
Uplifting [main] best 805702 combination reg byte a [ main::$18 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:34 [ keyboard_key_pressed::return#11 ]
|
||||
Uplifting [keyboard_key_pressed] best 805644 combination reg byte a [ keyboard_key_pressed::return#11 ]
|
||||
Uplifting [keyboard_key_pressed] best 805642 combination reg byte a [ keyboard_key_pressed::return#11 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:35 [ main::$21 ]
|
||||
Uplifting [main] best 805584 combination reg byte a [ main::$21 ]
|
||||
Uplifting [main] best 805582 combination reg byte a [ main::$21 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:36 [ keyboard_key_pressed::return#12 ]
|
||||
Uplifting [keyboard_key_pressed] best 805524 combination reg byte a [ keyboard_key_pressed::return#12 ]
|
||||
Uplifting [keyboard_key_pressed] best 805522 combination reg byte a [ keyboard_key_pressed::return#12 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:37 [ main::$24 ]
|
||||
Uplifting [main] best 805464 combination reg byte a [ main::$24 ]
|
||||
Uplifting [main] best 805462 combination reg byte a [ main::$24 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:38 [ keyboard_key_pressed::return#13 ]
|
||||
Uplifting [keyboard_key_pressed] best 805404 combination reg byte a [ keyboard_key_pressed::return#13 ]
|
||||
Uplifting [keyboard_key_pressed] best 805402 combination reg byte a [ keyboard_key_pressed::return#13 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:39 [ main::$27 ]
|
||||
Uplifting [main] best 805344 combination reg byte a [ main::$27 ]
|
||||
Uplifting [main] best 805342 combination reg byte a [ main::$27 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:59 [ keyboard_key_pressed::return#0 ]
|
||||
Uplifting [keyboard_key_pressed] best 804891 combination reg byte a [ keyboard_key_pressed::return#0 ]
|
||||
Uplifting [keyboard_key_pressed] best 804889 combination reg byte a [ keyboard_key_pressed::return#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::shift#10 ]
|
||||
Uplifting [main] best 804891 combination zp ZP_BYTE:6 [ main::shift#10 ]
|
||||
Uplifting [main] best 804889 combination zp ZP_BYTE:6 [ main::shift#10 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:55 [ keyboard_key_pressed::rowidx#0 ]
|
||||
Uplifting [keyboard_key_pressed] best 804887 combination reg byte a [ keyboard_key_pressed::rowidx#0 ]
|
||||
Uplifting [keyboard_key_pressed] best 804885 combination reg byte a [ keyboard_key_pressed::rowidx#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:58 [ keyboard_key_pressed::$2 ]
|
||||
Uplifting [keyboard_key_pressed] best 804881 combination reg byte a [ keyboard_key_pressed::$2 ]
|
||||
Uplifting [keyboard_key_pressed] best 804879 combination reg byte a [ keyboard_key_pressed::$2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:54 [ keyboard_key_pressed::colidx#0 ]
|
||||
Uplifting [keyboard_key_pressed] best 804877 combination reg byte y [ keyboard_key_pressed::colidx#0 ]
|
||||
Coalescing zero page register with common assignment [ zp ZP_WORD:12 [ plot_chargen::chargen#5 plot_chargen::chargen#0 plot_chargen::chargen#1 ] ] with [ zp ZP_WORD:46 [ plot_chargen::$1 ] ] - score: 1
|
||||
@ -3899,8 +3889,8 @@ main: {
|
||||
//SEG55 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG56 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #4
|
||||
lda #4
|
||||
cmp i
|
||||
bne b2_from_b29
|
||||
//SEG57 [22] phi from main::@29 to main::@3 [phi:main::@29->main::@3]
|
||||
b3_from_b29:
|
||||
@ -4107,8 +4097,8 @@ main: {
|
||||
//SEG149 [65] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1
|
||||
inc ch
|
||||
//SEG150 [66] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) $40) goto main::@10 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda ch
|
||||
cmp #$40
|
||||
lda #$40
|
||||
cmp ch
|
||||
bne b10_from_b12
|
||||
//SEG151 [22] phi from main::@12 to main::@3 [phi:main::@12->main::@3]
|
||||
b3_from_b12:
|
||||
@ -4316,8 +4306,8 @@ plot_chargen: {
|
||||
//SEG221 [98] (byte) plot_chargen::y#1 ← ++ (byte) plot_chargen::y#2 -- vbuz1=_inc_vbuz1
|
||||
inc y
|
||||
//SEG222 [99] if((byte) plot_chargen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda y
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp y
|
||||
bne b2_from_b7
|
||||
jmp b8
|
||||
//SEG223 plot_chargen::@8
|
||||
@ -5356,8 +5346,8 @@ main: {
|
||||
//SEG55 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG56 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #4
|
||||
lda #4
|
||||
cmp i
|
||||
bne b2
|
||||
//SEG57 [22] phi from main::@29 to main::@3 [phi:main::@29->main::@3]
|
||||
//SEG58 [22] phi (byte) main::cur_pos#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->main::@3#0] -- vbuz1=vbuc1
|
||||
@ -5517,8 +5507,8 @@ main: {
|
||||
//SEG149 [65] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1
|
||||
inc ch
|
||||
//SEG150 [66] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) $40) goto main::@10 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda ch
|
||||
cmp #$40
|
||||
lda #$40
|
||||
cmp ch
|
||||
bne b10
|
||||
//SEG151 [22] phi from main::@12 to main::@3 [phi:main::@12->main::@3]
|
||||
//SEG152 [22] phi (byte) main::cur_pos#24 = (byte) main::cur_pos#12 [phi:main::@12->main::@3#0] -- register_copy
|
||||
@ -5682,8 +5672,8 @@ plot_chargen: {
|
||||
//SEG221 [98] (byte) plot_chargen::y#1 ← ++ (byte) plot_chargen::y#2 -- vbuz1=_inc_vbuz1
|
||||
inc y
|
||||
//SEG222 [99] if((byte) plot_chargen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda y
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp y
|
||||
bne b2
|
||||
//SEG223 plot_chargen::@8
|
||||
//SEG224 [100] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $37 -- _deref_pbuc1=vbuc2
|
||||
|
@ -98,12 +98,11 @@ main: {
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
inc j
|
||||
lda j
|
||||
cmp #9
|
||||
lda #9
|
||||
cmp j
|
||||
bne b3
|
||||
inc i
|
||||
lda i
|
||||
cmp #9
|
||||
cmp i
|
||||
bne b2
|
||||
rts
|
||||
}
|
||||
|
@ -1283,8 +1283,8 @@ main: {
|
||||
//SEG29 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuz1=_inc_vbuz1
|
||||
inc k
|
||||
//SEG30 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda k
|
||||
cmp #9
|
||||
lda #9
|
||||
cmp k
|
||||
bne b1_from_b8
|
||||
//SEG31 [14] phi from main::@8 to main::@2 [phi:main::@8->main::@2]
|
||||
b2_from_b8:
|
||||
@ -1393,8 +1393,8 @@ main: {
|
||||
//SEG67 [30] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1
|
||||
inc j
|
||||
//SEG68 [31] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda j
|
||||
cmp #9
|
||||
lda #9
|
||||
cmp j
|
||||
bne b3_from_b11
|
||||
jmp b5
|
||||
//SEG69 main::@5
|
||||
@ -1402,8 +1402,8 @@ main: {
|
||||
//SEG70 [32] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG71 [33] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #9
|
||||
lda #9
|
||||
cmp i
|
||||
bne b2_from_b5
|
||||
jmp breturn
|
||||
//SEG72 main::@return
|
||||
@ -1617,14 +1617,14 @@ init_screen: {
|
||||
//SEG133 init_screen::@1
|
||||
b1:
|
||||
//SEG134 [66] *(((byte*))(word/dword/signed dword) $d800 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy l
|
||||
lda #WHITE
|
||||
ldy l
|
||||
sta $d800,y
|
||||
//SEG135 [67] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuz1=_inc_vbuz1
|
||||
inc l
|
||||
//SEG136 [68] if((byte) init_screen::l#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto init_screen::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda l
|
||||
cmp #$28
|
||||
lda #$28
|
||||
cmp l
|
||||
bne b1_from_b1
|
||||
//SEG137 [69] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2]
|
||||
b2_from_b1:
|
||||
@ -1671,8 +1671,8 @@ init_screen: {
|
||||
//SEG149 [75] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuz1=_inc_vbuz1
|
||||
inc m
|
||||
//SEG150 [76] if((byte) init_screen::m#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto init_screen::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda m
|
||||
cmp #$19
|
||||
lda #$19
|
||||
cmp m
|
||||
bne b2_from_b2
|
||||
jmp breturn
|
||||
//SEG151 init_screen::@return
|
||||
@ -2102,8 +2102,8 @@ main: {
|
||||
//SEG67 [30] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1
|
||||
inc j
|
||||
//SEG68 [31] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda j
|
||||
cmp #9
|
||||
lda #9
|
||||
cmp j
|
||||
bne b3_from_b11
|
||||
jmp b5
|
||||
//SEG69 main::@5
|
||||
@ -2111,8 +2111,8 @@ main: {
|
||||
//SEG70 [32] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG71 [33] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #9
|
||||
lda #9
|
||||
cmp i
|
||||
bne b2_from_b5
|
||||
jmp breturn
|
||||
//SEG72 main::@return
|
||||
@ -2502,6 +2502,8 @@ Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp b1
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction lda #9
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
Removing instruction bbegin:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
|
||||
@ -2645,7 +2647,7 @@ reg byte a [ fmul8::return#1 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 10536
|
||||
Score: 10516
|
||||
|
||||
//SEG0 File Comments
|
||||
// Seriously fast multiply 8-bit version (8bit*8bit=8bit)
|
||||
@ -2816,15 +2818,14 @@ main: {
|
||||
//SEG67 [30] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1
|
||||
inc j
|
||||
//SEG68 [31] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda j
|
||||
cmp #9
|
||||
lda #9
|
||||
cmp j
|
||||
bne b3
|
||||
//SEG69 main::@5
|
||||
//SEG70 [32] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG71 [33] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #9
|
||||
cmp i
|
||||
bne b2
|
||||
//SEG72 main::@return
|
||||
//SEG73 [34] return
|
||||
|
@ -29,8 +29,8 @@ main: {
|
||||
lda #CIA_INTERRUPT_CLEAR
|
||||
sta CIA1_INTERRUPT
|
||||
// Set raster line to $fa
|
||||
lda VIC_CONTROL
|
||||
and #$7f
|
||||
lda #$7f
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
lda #$fa
|
||||
sta RASTER
|
||||
@ -50,8 +50,8 @@ irq_bottom_2: {
|
||||
lda #WHITE
|
||||
sta BORDERCOL
|
||||
// Set screen height back to 25 lines (preparing for the next screen)
|
||||
lda VIC_CONTROL
|
||||
ora #VIC_RSEL
|
||||
lda #VIC_RSEL
|
||||
ora VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
// Acknowledge the IRQ
|
||||
lda #IRQ_RASTER
|
||||
@ -72,8 +72,8 @@ irq_bottom_1: {
|
||||
lda #WHITE
|
||||
sta BORDERCOL
|
||||
// Set screen height to 24 lines - this is done after the border should have started drawing - so it wont start
|
||||
lda VIC_CONTROL
|
||||
and #$ff^VIC_RSEL
|
||||
lda #$ff^VIC_RSEL
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
// Acknowledge the IRQ
|
||||
lda #IRQ_RASTER
|
||||
|
@ -607,8 +607,8 @@ main: {
|
||||
sta CIA1_INTERRUPT
|
||||
//SEG13 [7] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
||||
// Set raster line to $fa
|
||||
lda VIC_CONTROL
|
||||
and #$7f
|
||||
lda #$7f
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
//SEG14 [8] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) $fa -- _deref_pbuc1=vbuc2
|
||||
lda #$fa
|
||||
@ -640,8 +640,8 @@ irq_bottom_2: {
|
||||
sta BORDERCOL
|
||||
//SEG23 [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
// Set screen height back to 25 lines (preparing for the next screen)
|
||||
lda VIC_CONTROL
|
||||
ora #VIC_RSEL
|
||||
lda #VIC_RSEL
|
||||
ora VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
//SEG24 [15] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
||||
// Acknowledge the IRQ
|
||||
@ -674,8 +674,8 @@ irq_bottom_1: {
|
||||
sta BORDERCOL
|
||||
//SEG33 [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/word/signed word/dword/signed dword) $ff^(const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
||||
// Set screen height to 24 lines - this is done after the border should have started drawing - so it wont start
|
||||
lda VIC_CONTROL
|
||||
and #$ff^VIC_RSEL
|
||||
lda #$ff^VIC_RSEL
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
//SEG34 [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
||||
// Acknowledge the IRQ
|
||||
@ -785,8 +785,8 @@ main: {
|
||||
sta CIA1_INTERRUPT
|
||||
//SEG13 [7] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
||||
// Set raster line to $fa
|
||||
lda VIC_CONTROL
|
||||
and #$7f
|
||||
lda #$7f
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
//SEG14 [8] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) $fa -- _deref_pbuc1=vbuc2
|
||||
lda #$fa
|
||||
@ -818,8 +818,8 @@ irq_bottom_2: {
|
||||
sta BORDERCOL
|
||||
//SEG23 [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
// Set screen height back to 25 lines (preparing for the next screen)
|
||||
lda VIC_CONTROL
|
||||
ora #VIC_RSEL
|
||||
lda #VIC_RSEL
|
||||
ora VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
//SEG24 [15] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
||||
// Acknowledge the IRQ
|
||||
@ -852,8 +852,8 @@ irq_bottom_1: {
|
||||
sta BORDERCOL
|
||||
//SEG33 [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/word/signed word/dword/signed dword) $ff^(const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
||||
// Set screen height to 24 lines - this is done after the border should have started drawing - so it wont start
|
||||
lda VIC_CONTROL
|
||||
and #$ff^VIC_RSEL
|
||||
lda #$ff^VIC_RSEL
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
//SEG34 [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
||||
// Acknowledge the IRQ
|
||||
@ -1054,8 +1054,8 @@ main: {
|
||||
sta CIA1_INTERRUPT
|
||||
//SEG13 [7] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
||||
// Set raster line to $fa
|
||||
lda VIC_CONTROL
|
||||
and #$7f
|
||||
lda #$7f
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
//SEG14 [8] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) $fa -- _deref_pbuc1=vbuc2
|
||||
lda #$fa
|
||||
@ -1085,8 +1085,8 @@ irq_bottom_2: {
|
||||
sta BORDERCOL
|
||||
//SEG23 [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
// Set screen height back to 25 lines (preparing for the next screen)
|
||||
lda VIC_CONTROL
|
||||
ora #VIC_RSEL
|
||||
lda #VIC_RSEL
|
||||
ora VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
//SEG24 [15] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
||||
// Acknowledge the IRQ
|
||||
@ -1117,8 +1117,8 @@ irq_bottom_1: {
|
||||
sta BORDERCOL
|
||||
//SEG33 [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/word/signed word/dword/signed dword) $ff^(const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
||||
// Set screen height to 24 lines - this is done after the border should have started drawing - so it wont start
|
||||
lda VIC_CONTROL
|
||||
and #$ff^VIC_RSEL
|
||||
lda #$ff^VIC_RSEL
|
||||
and VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
//SEG34 [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
||||
// Acknowledge the IRQ
|
||||
|
@ -41,21 +41,19 @@ loop: {
|
||||
lda #0
|
||||
sta sin_idx
|
||||
b4:
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b4
|
||||
inc BORDERCOL
|
||||
ldy sin_idx
|
||||
ldx #0
|
||||
ldx sin_idx
|
||||
ldy #0
|
||||
b7:
|
||||
lda YSIN,y
|
||||
sta PLEX_YPOS,x
|
||||
tya
|
||||
clc
|
||||
adc #8
|
||||
tay
|
||||
inx
|
||||
cpx #PLEX_COUNT-1+1
|
||||
lda YSIN,x
|
||||
sta PLEX_YPOS,y
|
||||
txa
|
||||
axs #-8
|
||||
iny
|
||||
cpy #PLEX_COUNT-1+1
|
||||
bne b7
|
||||
inc sin_idx
|
||||
inc BORDERCOL
|
||||
@ -63,8 +61,8 @@ loop: {
|
||||
lda #BLACK
|
||||
sta BORDERCOL
|
||||
b8:
|
||||
lda D011
|
||||
and #VIC_RST8
|
||||
lda #VIC_RST8
|
||||
and D011
|
||||
cmp #0
|
||||
bne b8
|
||||
lda #0
|
||||
@ -89,8 +87,8 @@ loop: {
|
||||
inc BORDERCOL
|
||||
jsr plexShowSprite
|
||||
inc ss
|
||||
lda ss
|
||||
cmp #PLEX_COUNT-1+1
|
||||
lda #PLEX_COUNT-1+1
|
||||
cmp ss
|
||||
bne b11
|
||||
lda #BLACK
|
||||
sta BORDERCOL
|
||||
@ -112,11 +110,11 @@ plexShowSprite: {
|
||||
adc #$15
|
||||
ldy plex_free_next
|
||||
sta PLEX_FREE_YPOS,y
|
||||
tya
|
||||
clc
|
||||
adc #1
|
||||
and #7
|
||||
sta plex_free_next
|
||||
ldx plex_free_next
|
||||
inx
|
||||
lda #7
|
||||
sax plex_free_next
|
||||
ldx plex_show_idx
|
||||
ldy PLEX_SORTED_IDX,x
|
||||
lda PLEX_PTR,y
|
||||
ldx plex_sprite_idx
|
||||
@ -136,11 +134,10 @@ plexShowSprite: {
|
||||
and SPRITES_XMSB
|
||||
sta SPRITES_XMSB
|
||||
b2:
|
||||
lda plex_sprite_idx
|
||||
clc
|
||||
adc #1
|
||||
and #7
|
||||
sta plex_sprite_idx
|
||||
ldx plex_sprite_idx
|
||||
inx
|
||||
lda #7
|
||||
sax plex_sprite_idx
|
||||
inc plex_show_idx
|
||||
asl plex_sprite_msb
|
||||
lda plex_sprite_msb
|
||||
@ -194,8 +191,8 @@ plexSort: {
|
||||
sta PLEX_SORTED_IDX,x
|
||||
b2:
|
||||
inc m
|
||||
lda m
|
||||
cmp #PLEX_COUNT-2+1
|
||||
lda #PLEX_COUNT-2+1
|
||||
cmp m
|
||||
bne b1
|
||||
ldx #0
|
||||
plexFreePrepare1_b1:
|
||||
|
@ -2453,8 +2453,8 @@ loop: {
|
||||
//SEG25 loop::@4
|
||||
b4:
|
||||
//SEG26 [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b4
|
||||
jmp b6
|
||||
//SEG27 loop::@6
|
||||
@ -2484,15 +2484,14 @@ loop: {
|
||||
ldy sy
|
||||
sta PLEX_YPOS,y
|
||||
//SEG38 [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1
|
||||
lda #8
|
||||
clc
|
||||
adc y_idx
|
||||
sta y_idx
|
||||
lax y_idx
|
||||
axs #-8
|
||||
stx y_idx
|
||||
//SEG39 [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 -- vbuz1=_inc_vbuz1
|
||||
inc sy
|
||||
//SEG40 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda sy
|
||||
cmp #PLEX_COUNT-1+1
|
||||
lda #PLEX_COUNT-1+1
|
||||
cmp sy
|
||||
bne b7_from_b7
|
||||
jmp b20
|
||||
//SEG41 loop::@20
|
||||
@ -2515,8 +2514,8 @@ loop: {
|
||||
//SEG48 loop::@8
|
||||
b8:
|
||||
//SEG49 [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_RST8#0 -- vbuz1=_deref_pbuc1_band_vbuc2
|
||||
lda D011
|
||||
and #VIC_RST8
|
||||
lda #VIC_RST8
|
||||
and D011
|
||||
sta _4
|
||||
//SEG50 [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 -- vbuz1_neq_0_then_la1
|
||||
lda _4
|
||||
@ -2581,8 +2580,8 @@ loop: {
|
||||
//SEG73 [33] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 -- vbuz1=_inc_vbuz1
|
||||
inc ss
|
||||
//SEG74 [34] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda ss
|
||||
cmp #PLEX_COUNT-1+1
|
||||
lda #PLEX_COUNT-1+1
|
||||
cmp ss
|
||||
bne b11_from_b31
|
||||
jmp b27
|
||||
//SEG75 loop::@27
|
||||
@ -2625,10 +2624,9 @@ plexShowSprite: {
|
||||
//SEG83 plexShowSprite::plexFreeAdd1
|
||||
plexFreeAdd1:
|
||||
//SEG84 [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 -- vbuz1=vbuz2_plus_vbuc1
|
||||
lda #$15
|
||||
clc
|
||||
adc plexFreeAdd1_ypos
|
||||
sta plexFreeAdd1__0
|
||||
lax plexFreeAdd1_ypos
|
||||
axs #-$15
|
||||
stx plexFreeAdd1__0
|
||||
//SEG85 [40] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 -- pbuc1_derefidx_vbuz1=vbuz2
|
||||
lda plexFreeAdd1__0
|
||||
ldy plex_free_next
|
||||
@ -2791,8 +2789,8 @@ plexSort: {
|
||||
//SEG129 [68] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuz1=_dec_vbuz1
|
||||
dec s
|
||||
//SEG130 [69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@8 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda s
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp s
|
||||
bne b8
|
||||
jmp b5
|
||||
//SEG131 plexSort::@5
|
||||
@ -2811,8 +2809,8 @@ plexSort: {
|
||||
//SEG135 [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1
|
||||
inc m
|
||||
//SEG136 [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda m
|
||||
cmp #PLEX_COUNT-2+1
|
||||
lda #PLEX_COUNT-2+1
|
||||
cmp m
|
||||
bne b1_from_b2
|
||||
//SEG137 [74] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1]
|
||||
plexFreePrepare1_from_b2:
|
||||
@ -2832,14 +2830,14 @@ plexSort: {
|
||||
//SEG143 plexSort::plexFreePrepare1_@1
|
||||
plexFreePrepare1_b1:
|
||||
//SEG144 [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy plexFreePrepare1_s
|
||||
lda #0
|
||||
ldy plexFreePrepare1_s
|
||||
sta PLEX_FREE_YPOS,y
|
||||
//SEG145 [77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuz1=_inc_vbuz1
|
||||
inc plexFreePrepare1_s
|
||||
//SEG146 [78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda plexFreePrepare1_s
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp plexFreePrepare1_s
|
||||
bne plexFreePrepare1_b1_from_plexFreePrepare1_b1
|
||||
jmp breturn
|
||||
//SEG147 plexSort::@return
|
||||
@ -2889,8 +2887,8 @@ init: {
|
||||
//SEG161 init::@1
|
||||
b1:
|
||||
//SEG162 [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) $40 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy sx
|
||||
lda #$ff&SPRITE/$40
|
||||
ldy sx
|
||||
sta PLEX_PTR,y
|
||||
//SEG163 [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1
|
||||
lda sx
|
||||
@ -2913,8 +2911,8 @@ init: {
|
||||
//SEG166 [88] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuz1=_inc_vbuz1
|
||||
inc sx
|
||||
//SEG167 [89] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda sx
|
||||
cmp #PLEX_COUNT-1+1
|
||||
lda #PLEX_COUNT-1+1
|
||||
cmp sx
|
||||
bne b1_from_b1
|
||||
jmp b3
|
||||
//SEG168 init::@3
|
||||
@ -2936,14 +2934,14 @@ init: {
|
||||
//SEG174 init::@2
|
||||
b2:
|
||||
//SEG175 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
||||
ldy ss
|
||||
lda #GREEN
|
||||
ldy ss
|
||||
sta SPRITES_COLS,y
|
||||
//SEG176 [93] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuz1=_inc_vbuz1
|
||||
inc ss
|
||||
//SEG177 [94] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda ss
|
||||
cmp #8
|
||||
lda #8
|
||||
cmp ss
|
||||
bne b2_from_b2
|
||||
jmp breturn
|
||||
//SEG178 init::@return
|
||||
@ -2979,8 +2977,8 @@ plexInit: {
|
||||
//SEG189 [100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG190 [101] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #PLEX_COUNT-1+1
|
||||
lda #PLEX_COUNT-1+1
|
||||
cmp i
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG191 plexInit::@return
|
||||
@ -3029,17 +3027,14 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ pl
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ]
|
||||
Statement [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a
|
||||
Statement [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a
|
||||
Statement [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ]
|
||||
Statement [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a
|
||||
Statement [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ]
|
||||
Statement [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte a
|
||||
Statement [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ]
|
||||
Statement [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$4 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$4 ] ) always clobbers reg byte a
|
||||
Statement [49] (byte/word/dword~) plexShowSprite::$6 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$6 ] ) always clobbers reg byte a
|
||||
Statement [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$6 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ) always clobbers reg byte a
|
||||
Statement [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plex_sprite_idx#15 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plex_sprite_idx#15 ] ) always clobbers reg byte a
|
||||
Statement [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ) always clobbers reg byte a
|
||||
Statement [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ]
|
||||
@ -3067,15 +3062,12 @@ Statement [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_R
|
||||
Statement [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ) always clobbers reg byte a
|
||||
Statement [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a
|
||||
Statement [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a
|
||||
Statement [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ) always clobbers reg byte a
|
||||
Statement [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a
|
||||
Statement [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a
|
||||
Statement [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte a
|
||||
Statement [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$3 ] ) always clobbers reg byte a
|
||||
Statement [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$4 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$4 ] ) always clobbers reg byte a
|
||||
Statement [49] (byte/word/dword~) plexShowSprite::$6 ← (byte/word/signed word/dword/signed dword) $ff ^ (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::$6 ] ) always clobbers reg byte a
|
||||
Statement [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$6 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ) always clobbers reg byte a
|
||||
Statement [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plex_sprite_idx#15 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plex_sprite_idx#15 ] ) always clobbers reg byte a
|
||||
Statement [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 ] ) always clobbers reg byte a
|
||||
Statement [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) always clobbers reg byte a
|
||||
Statement [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a
|
||||
@ -3129,60 +3121,60 @@ Uplift Scope [plexInit] 38.5: zp ZP_BYTE:17 [ plexInit::i#2 plexInit::i#1 ]
|
||||
Uplift Scope [plexShowSprite] 4: zp ZP_BYTE:22 [ plexShowSprite::plexFreeAdd1_$0#0 ] 4: zp ZP_BYTE:23 [ plexShowSprite::plexFreeAdd1_$1#0 ] 4: zp ZP_BYTE:25 [ plexShowSprite::$3 ] 4: zp ZP_BYTE:26 [ plexShowSprite::$4 ] 4: zp ZP_BYTE:27 [ plexShowSprite::$6 ] 4: zp ZP_BYTE:28 [ plexShowSprite::$7 ] 3: zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 2: zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] 0.6: zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ]
|
||||
Uplift Scope [main]
|
||||
|
||||
Uplifting [plexSort] best 82580 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] zp ZP_BYTE:31 [ plexSort::s#2 ] zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ]
|
||||
Uplifting [plexSort] best 82378 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] zp ZP_BYTE:31 [ plexSort::s#2 ] zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ]
|
||||
Limited combination testing to 10 combinations of 972 possible.
|
||||
Uplifting [loop] best 81380 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] reg byte x [ loop::sy#2 loop::sy#1 ] zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] zp ZP_BYTE:18 [ loop::$4 ] zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
|
||||
Uplifting [loop] best 81178 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] reg byte y [ loop::sy#2 loop::sy#1 ] zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] zp ZP_BYTE:18 [ loop::$4 ] zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
|
||||
Limited combination testing to 10 combinations of 1296 possible.
|
||||
Uplifting [init] best 81130 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp ZP_BYTE:32 [ init::$6 ] zp ZP_WORD:14 [ init::xp#2 init::xp#1 ]
|
||||
Uplifting [init] best 80928 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp ZP_BYTE:32 [ init::$6 ] zp ZP_WORD:14 [ init::xp#2 init::xp#1 ]
|
||||
Limited combination testing to 10 combinations of 36 possible.
|
||||
Uplifting [] best 81130 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ]
|
||||
Uplifting [] best 80928 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ]
|
||||
Limited combination testing to 10 combinations of 81 possible.
|
||||
Uplifting [plexInit] best 81010 combination reg byte x [ plexInit::i#2 plexInit::i#1 ]
|
||||
Uplifting [plexShowSprite] best 81000 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$1#0 ] zp ZP_BYTE:25 [ plexShowSprite::$3 ] zp ZP_BYTE:26 [ plexShowSprite::$4 ] zp ZP_BYTE:27 [ plexShowSprite::$6 ] zp ZP_BYTE:28 [ plexShowSprite::$7 ] zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ]
|
||||
Uplifting [plexInit] best 80808 combination reg byte x [ plexInit::i#2 plexInit::i#1 ]
|
||||
Uplifting [plexShowSprite] best 80798 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1#0 ] zp ZP_BYTE:25 [ plexShowSprite::$3 ] zp ZP_BYTE:26 [ plexShowSprite::$4 ] zp ZP_BYTE:27 [ plexShowSprite::$6 ] zp ZP_BYTE:28 [ plexShowSprite::$7 ] zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ]
|
||||
Limited combination testing to 10 combinations of 147456 possible.
|
||||
Uplifting [main] best 81000 combination
|
||||
Uplifting [main] best 80798 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ]
|
||||
Uplifting [loop] best 81000 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ]
|
||||
Uplifting [loop] best 80798 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
|
||||
Uplifting [loop] best 80470 combination reg byte y [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
|
||||
Uplifting [loop] best 80068 combination reg byte x [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:18 [ loop::$4 ]
|
||||
Uplifting [loop] best 79870 combination reg byte a [ loop::$4 ]
|
||||
Uplifting [loop] best 79468 combination reg byte a [ loop::$4 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:31 [ plexSort::s#2 ]
|
||||
Uplifting [plexSort] best 79270 combination reg byte x [ plexSort::s#2 ]
|
||||
Uplifting [plexSort] best 78868 combination reg byte x [ plexSort::s#2 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ]
|
||||
Uplifting [plexSort] best 79270 combination zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ]
|
||||
Uplifting [plexSort] best 78868 combination zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ]
|
||||
Uplifting [loop] best 79270 combination zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ]
|
||||
Uplifting [loop] best 78868 combination zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:30 [ plexSort::nxt_y#0 ]
|
||||
Uplifting [plexSort] best 79270 combination zp ZP_BYTE:30 [ plexSort::nxt_y#0 ]
|
||||
Uplifting [plexSort] best 78868 combination zp ZP_BYTE:30 [ plexSort::nxt_y#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:29 [ plexSort::nxt_idx#0 ]
|
||||
Uplifting [plexSort] best 79270 combination zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ]
|
||||
Uplifting [plexSort] best 78868 combination zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ]
|
||||
Uplifting [] best 79270 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ]
|
||||
Uplifting [] best 78868 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ]
|
||||
Uplifting [] best 79270 combination zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ]
|
||||
Uplifting [] best 78868 combination zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:32 [ init::$6 ]
|
||||
Uplifting [init] best 79230 combination reg byte a [ init::$6 ]
|
||||
Uplifting [init] best 78828 combination reg byte a [ init::$6 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ]
|
||||
Uplifting [] best 79230 combination zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ]
|
||||
Uplifting [] best 78828 combination zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ]
|
||||
Uplifting [] best 79230 combination zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ]
|
||||
Uplifting [] best 78828 combination zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
|
||||
Uplifting [loop] best 79230 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
|
||||
Uplifting [loop] best 78828 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ plexShowSprite::$3 ]
|
||||
Uplifting [plexShowSprite] best 79224 combination reg byte a [ plexShowSprite::$3 ]
|
||||
Uplifting [plexShowSprite] best 78822 combination reg byte a [ plexShowSprite::$3 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:26 [ plexShowSprite::$4 ]
|
||||
Uplifting [plexShowSprite] best 79218 combination reg byte a [ plexShowSprite::$4 ]
|
||||
Uplifting [plexShowSprite] best 78816 combination reg byte a [ plexShowSprite::$4 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:27 [ plexShowSprite::$6 ]
|
||||
Uplifting [plexShowSprite] best 79212 combination reg byte a [ plexShowSprite::$6 ]
|
||||
Uplifting [plexShowSprite] best 78810 combination reg byte a [ plexShowSprite::$6 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:28 [ plexShowSprite::$7 ]
|
||||
Uplifting [plexShowSprite] best 79208 combination reg byte a [ plexShowSprite::$7 ]
|
||||
Uplifting [plexShowSprite] best 78804 combination reg byte x [ plexShowSprite::$7 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
||||
Uplifting [plexShowSprite] best 79199 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
||||
Uplifting [plexShowSprite] best 78795 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ]
|
||||
Uplifting [plexShowSprite] best 79192 combination reg byte x [ plexShowSprite::xpos_idx#0 ]
|
||||
Uplifting [plexShowSprite] best 78788 combination reg byte x [ plexShowSprite::xpos_idx#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ]
|
||||
Uplifting [plexShowSprite] best 79192 combination zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ]
|
||||
Uplifting [plexShowSprite] best 78788 combination zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] ] with [ zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] ] with [ zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] ] with [ zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] ]
|
||||
@ -3286,20 +3278,20 @@ loop: {
|
||||
//SEG25 loop::@4
|
||||
b4:
|
||||
//SEG26 [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b4
|
||||
jmp b6
|
||||
//SEG27 loop::@6
|
||||
b6:
|
||||
//SEG28 [14] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1
|
||||
inc BORDERCOL
|
||||
//SEG29 [15] (byte~) loop::y_idx#3 ← (byte) loop::sin_idx#6 -- vbuyy=vbuz1
|
||||
ldy sin_idx
|
||||
//SEG29 [15] (byte~) loop::y_idx#3 ← (byte) loop::sin_idx#6 -- vbuxx=vbuz1
|
||||
ldx sin_idx
|
||||
//SEG30 [16] phi from loop::@6 to loop::@7 [phi:loop::@6->loop::@7]
|
||||
b7_from_b6:
|
||||
//SEG31 [16] phi (byte) loop::sy#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@6->loop::@7#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
//SEG31 [16] phi (byte) loop::sy#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@6->loop::@7#0] -- vbuyy=vbuc1
|
||||
ldy #0
|
||||
//SEG32 [16] phi (byte) loop::y_idx#2 = (byte~) loop::y_idx#3 [phi:loop::@6->loop::@7#1] -- register_copy
|
||||
jmp b7
|
||||
//SEG33 [16] phi from loop::@7 to loop::@7 [phi:loop::@7->loop::@7]
|
||||
@ -3309,18 +3301,16 @@ loop: {
|
||||
jmp b7
|
||||
//SEG36 loop::@7
|
||||
b7:
|
||||
//SEG37 [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
|
||||
lda YSIN,y
|
||||
sta PLEX_YPOS,x
|
||||
//SEG38 [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuyy=vbuyy_plus_vbuc1
|
||||
tya
|
||||
clc
|
||||
adc #8
|
||||
tay
|
||||
//SEG39 [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 -- vbuxx=_inc_vbuxx
|
||||
inx
|
||||
//SEG40 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 -- vbuxx_neq_vbuc1_then_la1
|
||||
cpx #PLEX_COUNT-1+1
|
||||
//SEG37 [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuxx
|
||||
lda YSIN,x
|
||||
sta PLEX_YPOS,y
|
||||
//SEG38 [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuxx=vbuxx_plus_vbuc1
|
||||
txa
|
||||
axs #-8
|
||||
//SEG39 [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 -- vbuyy=_inc_vbuyy
|
||||
iny
|
||||
//SEG40 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 -- vbuyy_neq_vbuc1_then_la1
|
||||
cpy #PLEX_COUNT-1+1
|
||||
bne b7_from_b7
|
||||
jmp b20
|
||||
//SEG41 loop::@20
|
||||
@ -3343,8 +3333,8 @@ loop: {
|
||||
//SEG48 loop::@8
|
||||
b8:
|
||||
//SEG49 [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_RST8#0 -- vbuaa=_deref_pbuc1_band_vbuc2
|
||||
lda D011
|
||||
and #VIC_RST8
|
||||
lda #VIC_RST8
|
||||
and D011
|
||||
//SEG50 [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 -- vbuaa_neq_0_then_la1
|
||||
cmp #0
|
||||
bne b8
|
||||
@ -3407,8 +3397,8 @@ loop: {
|
||||
//SEG73 [33] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 -- vbuz1=_inc_vbuz1
|
||||
inc ss
|
||||
//SEG74 [34] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda ss
|
||||
cmp #PLEX_COUNT-1+1
|
||||
lda #PLEX_COUNT-1+1
|
||||
cmp ss
|
||||
bne b11_from_b31
|
||||
jmp b27
|
||||
//SEG75 loop::@27
|
||||
@ -3446,13 +3436,12 @@ plexShowSprite: {
|
||||
//SEG85 [40] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 -- pbuc1_derefidx_vbuz1=vbuaa
|
||||
ldy plex_free_next
|
||||
sta PLEX_FREE_YPOS,y
|
||||
//SEG86 [41] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 ← (byte) plex_free_next#17 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1
|
||||
lda plex_free_next
|
||||
clc
|
||||
adc #1
|
||||
//SEG87 [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1
|
||||
and #7
|
||||
sta plex_free_next
|
||||
//SEG86 [41] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 ← (byte) plex_free_next#17 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1
|
||||
ldx plex_free_next
|
||||
inx
|
||||
//SEG87 [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
lda #7
|
||||
sax plex_free_next
|
||||
jmp b7
|
||||
//SEG88 plexShowSprite::@7
|
||||
b7:
|
||||
@ -3489,13 +3478,12 @@ plexShowSprite: {
|
||||
jmp b2
|
||||
//SEG98 plexShowSprite::@2
|
||||
b2:
|
||||
//SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1
|
||||
lda plex_sprite_idx
|
||||
clc
|
||||
adc #1
|
||||
//SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1
|
||||
and #7
|
||||
sta plex_sprite_idx
|
||||
//SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1
|
||||
ldx plex_sprite_idx
|
||||
inx
|
||||
//SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
lda #7
|
||||
sax plex_sprite_idx
|
||||
//SEG101 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1
|
||||
inc plex_show_idx
|
||||
//SEG102 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1
|
||||
@ -3605,8 +3593,8 @@ plexSort: {
|
||||
//SEG135 [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1
|
||||
inc m
|
||||
//SEG136 [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda m
|
||||
cmp #PLEX_COUNT-2+1
|
||||
lda #PLEX_COUNT-2+1
|
||||
cmp m
|
||||
bne b1_from_b2
|
||||
//SEG137 [74] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1]
|
||||
plexFreePrepare1_from_b2:
|
||||
@ -3831,7 +3819,6 @@ Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #0
|
||||
Replacing instruction lda plex_free_next with TYA
|
||||
Replacing instruction ldy nxt_idx with TAY
|
||||
Removing instruction lda nxt_y
|
||||
Replacing instruction ldx #0 with TAX
|
||||
@ -3913,7 +3900,6 @@ Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp b1
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction ldx plex_show_idx
|
||||
Removing instruction ldx m
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
Removing instruction bbegin:
|
||||
@ -4079,12 +4065,12 @@ FINAL SYMBOL TABLE
|
||||
(byte) loop::ss#1 ss zp ZP_BYTE:7 151.5
|
||||
(byte) loop::ss#6 ss zp ZP_BYTE:7 33.666666666666664
|
||||
(byte) loop::sy
|
||||
(byte) loop::sy#1 reg byte x 151.5
|
||||
(byte) loop::sy#2 reg byte x 101.0
|
||||
(byte) loop::sy#1 reg byte y 151.5
|
||||
(byte) loop::sy#2 reg byte y 101.0
|
||||
(byte) loop::y_idx
|
||||
(byte) loop::y_idx#1 reg byte y 67.33333333333333
|
||||
(byte) loop::y_idx#2 reg byte y 157.0
|
||||
(byte~) loop::y_idx#3 reg byte y 22.0
|
||||
(byte) loop::y_idx#1 reg byte x 67.33333333333333
|
||||
(byte) loop::y_idx#2 reg byte x 157.0
|
||||
(byte~) loop::y_idx#3 reg byte x 22.0
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
@ -4102,7 +4088,7 @@ FINAL SYMBOL TABLE
|
||||
(byte~) plexShowSprite::$3 reg byte a 4.0
|
||||
(byte~) plexShowSprite::$4 reg byte a 4.0
|
||||
(byte/word/dword~) plexShowSprite::$6 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword~) plexShowSprite::$7 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword~) plexShowSprite::$7 reg byte x 4.0
|
||||
(label) plexShowSprite::@1
|
||||
(label) plexShowSprite::@2
|
||||
(label) plexShowSprite::@4
|
||||
@ -4113,7 +4099,7 @@ FINAL SYMBOL TABLE
|
||||
(byte/signed word/word/dword/signed dword~) plexShowSprite::plexFreeAdd1_$0
|
||||
(byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword~) plexShowSprite::plexFreeAdd1_$1
|
||||
(byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 reg byte x 4.0
|
||||
(byte/word/dword~) plexShowSprite::plexFreeAdd1_$2
|
||||
(byte) plexShowSprite::plexFreeAdd1_ypos
|
||||
(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0
|
||||
@ -4163,8 +4149,8 @@ FINAL SYMBOL TABLE
|
||||
(byte) plex_sprite_msb#44 plex_sprite_msb zp ZP_BYTE:6 4.458333333333332
|
||||
|
||||
zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
|
||||
reg byte y [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
|
||||
reg byte x [ loop::sy#2 loop::sy#1 ]
|
||||
reg byte x [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
|
||||
reg byte y [ loop::sy#2 loop::sy#1 ]
|
||||
zp ZP_BYTE:3 [ plex_free_next#17 plex_free_next#13 plexSort::m#2 plexSort::m#1 ]
|
||||
zp ZP_BYTE:4 [ plex_sprite_idx#44 plex_sprite_idx#15 plexSort::nxt_idx#0 ]
|
||||
zp ZP_BYTE:5 [ plex_show_idx#44 plex_show_idx#15 plexSort::nxt_y#0 ]
|
||||
@ -4180,18 +4166,18 @@ reg byte a [ loop::$4 ]
|
||||
zp ZP_BYTE:10 [ loop::plexFreeNextYpos1_return#0 plexShowSprite::plex_sprite_idx2#0 ]
|
||||
reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
||||
reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ]
|
||||
reg byte a [ plexShowSprite::plexFreeAdd1_$1#0 ]
|
||||
reg byte x [ plexShowSprite::plexFreeAdd1_$1#0 ]
|
||||
reg byte x [ plexShowSprite::xpos_idx#0 ]
|
||||
reg byte a [ plexShowSprite::$3 ]
|
||||
reg byte a [ plexShowSprite::$4 ]
|
||||
reg byte a [ plexShowSprite::$6 ]
|
||||
reg byte a [ plexShowSprite::$7 ]
|
||||
reg byte x [ plexShowSprite::$7 ]
|
||||
reg byte x [ plexSort::s#2 ]
|
||||
reg byte a [ init::$6 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 63550
|
||||
Score: 63150
|
||||
|
||||
//SEG0 File Comments
|
||||
// A simple usage of the flexible sprite multiplexer routine
|
||||
@ -4263,35 +4249,33 @@ loop: {
|
||||
//SEG25 loop::@4
|
||||
b4:
|
||||
//SEG26 [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
bne b4
|
||||
//SEG27 loop::@6
|
||||
//SEG28 [14] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1
|
||||
inc BORDERCOL
|
||||
//SEG29 [15] (byte~) loop::y_idx#3 ← (byte) loop::sin_idx#6 -- vbuyy=vbuz1
|
||||
ldy sin_idx
|
||||
//SEG29 [15] (byte~) loop::y_idx#3 ← (byte) loop::sin_idx#6 -- vbuxx=vbuz1
|
||||
ldx sin_idx
|
||||
//SEG30 [16] phi from loop::@6 to loop::@7 [phi:loop::@6->loop::@7]
|
||||
//SEG31 [16] phi (byte) loop::sy#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@6->loop::@7#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
//SEG31 [16] phi (byte) loop::sy#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@6->loop::@7#0] -- vbuyy=vbuc1
|
||||
ldy #0
|
||||
//SEG32 [16] phi (byte) loop::y_idx#2 = (byte~) loop::y_idx#3 [phi:loop::@6->loop::@7#1] -- register_copy
|
||||
//SEG33 [16] phi from loop::@7 to loop::@7 [phi:loop::@7->loop::@7]
|
||||
//SEG34 [16] phi (byte) loop::sy#2 = (byte) loop::sy#1 [phi:loop::@7->loop::@7#0] -- register_copy
|
||||
//SEG35 [16] phi (byte) loop::y_idx#2 = (byte) loop::y_idx#1 [phi:loop::@7->loop::@7#1] -- register_copy
|
||||
//SEG36 loop::@7
|
||||
b7:
|
||||
//SEG37 [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
|
||||
lda YSIN,y
|
||||
sta PLEX_YPOS,x
|
||||
//SEG38 [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuyy=vbuyy_plus_vbuc1
|
||||
tya
|
||||
clc
|
||||
adc #8
|
||||
tay
|
||||
//SEG39 [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 -- vbuxx=_inc_vbuxx
|
||||
inx
|
||||
//SEG40 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 -- vbuxx_neq_vbuc1_then_la1
|
||||
cpx #PLEX_COUNT-1+1
|
||||
//SEG37 [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuxx
|
||||
lda YSIN,x
|
||||
sta PLEX_YPOS,y
|
||||
//SEG38 [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuxx=vbuxx_plus_vbuc1
|
||||
txa
|
||||
axs #-8
|
||||
//SEG39 [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 -- vbuyy=_inc_vbuyy
|
||||
iny
|
||||
//SEG40 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 -- vbuyy_neq_vbuc1_then_la1
|
||||
cpy #PLEX_COUNT-1+1
|
||||
bne b7
|
||||
//SEG41 loop::@20
|
||||
//SEG42 [21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1
|
||||
@ -4308,8 +4292,8 @@ loop: {
|
||||
//SEG48 loop::@8
|
||||
b8:
|
||||
//SEG49 [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_RST8#0 -- vbuaa=_deref_pbuc1_band_vbuc2
|
||||
lda D011
|
||||
and #VIC_RST8
|
||||
lda #VIC_RST8
|
||||
and D011
|
||||
//SEG50 [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 -- vbuaa_neq_0_then_la1
|
||||
cmp #0
|
||||
bne b8
|
||||
@ -4359,8 +4343,8 @@ loop: {
|
||||
//SEG73 [33] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 -- vbuz1=_inc_vbuz1
|
||||
inc ss
|
||||
//SEG74 [34] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda ss
|
||||
cmp #PLEX_COUNT-1+1
|
||||
lda #PLEX_COUNT-1+1
|
||||
cmp ss
|
||||
bne b11
|
||||
//SEG75 loop::@27
|
||||
//SEG76 [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2
|
||||
@ -4393,15 +4377,15 @@ plexShowSprite: {
|
||||
//SEG85 [40] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 -- pbuc1_derefidx_vbuz1=vbuaa
|
||||
ldy plex_free_next
|
||||
sta PLEX_FREE_YPOS,y
|
||||
//SEG86 [41] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 ← (byte) plex_free_next#17 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1
|
||||
tya
|
||||
clc
|
||||
adc #1
|
||||
//SEG87 [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1
|
||||
and #7
|
||||
sta plex_free_next
|
||||
//SEG86 [41] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 ← (byte) plex_free_next#17 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1
|
||||
ldx plex_free_next
|
||||
inx
|
||||
//SEG87 [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
lda #7
|
||||
sax plex_free_next
|
||||
//SEG88 plexShowSprite::@7
|
||||
//SEG89 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2
|
||||
ldx plex_show_idx
|
||||
ldy PLEX_SORTED_IDX,x
|
||||
lda PLEX_PTR,y
|
||||
ldx plex_sprite_idx
|
||||
@ -4430,13 +4414,12 @@ plexShowSprite: {
|
||||
sta SPRITES_XMSB
|
||||
//SEG98 plexShowSprite::@2
|
||||
b2:
|
||||
//SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1
|
||||
lda plex_sprite_idx
|
||||
clc
|
||||
adc #1
|
||||
//SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1
|
||||
and #7
|
||||
sta plex_sprite_idx
|
||||
//SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1
|
||||
ldx plex_sprite_idx
|
||||
inx
|
||||
//SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
lda #7
|
||||
sax plex_sprite_idx
|
||||
//SEG101 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1
|
||||
inc plex_show_idx
|
||||
//SEG102 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1
|
||||
@ -4526,8 +4509,8 @@ plexSort: {
|
||||
//SEG135 [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1
|
||||
inc m
|
||||
//SEG136 [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||
lda m
|
||||
cmp #PLEX_COUNT-2+1
|
||||
lda #PLEX_COUNT-2+1
|
||||
cmp m
|
||||
bne b1
|
||||
//SEG137 [74] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1]
|
||||
//SEG138 plexSort::plexFreePrepare1
|
||||
|
@ -154,12 +154,12 @@
|
||||
(byte) loop::ss#1 ss zp ZP_BYTE:7 151.5
|
||||
(byte) loop::ss#6 ss zp ZP_BYTE:7 33.666666666666664
|
||||
(byte) loop::sy
|
||||
(byte) loop::sy#1 reg byte x 151.5
|
||||
(byte) loop::sy#2 reg byte x 101.0
|
||||
(byte) loop::sy#1 reg byte y 151.5
|
||||
(byte) loop::sy#2 reg byte y 101.0
|
||||
(byte) loop::y_idx
|
||||
(byte) loop::y_idx#1 reg byte y 67.33333333333333
|
||||
(byte) loop::y_idx#2 reg byte y 157.0
|
||||
(byte~) loop::y_idx#3 reg byte y 22.0
|
||||
(byte) loop::y_idx#1 reg byte x 67.33333333333333
|
||||
(byte) loop::y_idx#2 reg byte x 157.0
|
||||
(byte~) loop::y_idx#3 reg byte x 22.0
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
@ -177,7 +177,7 @@
|
||||
(byte~) plexShowSprite::$3 reg byte a 4.0
|
||||
(byte~) plexShowSprite::$4 reg byte a 4.0
|
||||
(byte/word/dword~) plexShowSprite::$6 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword~) plexShowSprite::$7 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword~) plexShowSprite::$7 reg byte x 4.0
|
||||
(label) plexShowSprite::@1
|
||||
(label) plexShowSprite::@2
|
||||
(label) plexShowSprite::@4
|
||||
@ -188,7 +188,7 @@
|
||||
(byte/signed word/word/dword/signed dword~) plexShowSprite::plexFreeAdd1_$0
|
||||
(byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword~) plexShowSprite::plexFreeAdd1_$1
|
||||
(byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 reg byte a 4.0
|
||||
(byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 reg byte x 4.0
|
||||
(byte/word/dword~) plexShowSprite::plexFreeAdd1_$2
|
||||
(byte) plexShowSprite::plexFreeAdd1_ypos
|
||||
(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0
|
||||
@ -238,8 +238,8 @@
|
||||
(byte) plex_sprite_msb#44 plex_sprite_msb zp ZP_BYTE:6 4.458333333333332
|
||||
|
||||
zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
|
||||
reg byte y [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
|
||||
reg byte x [ loop::sy#2 loop::sy#1 ]
|
||||
reg byte x [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
|
||||
reg byte y [ loop::sy#2 loop::sy#1 ]
|
||||
zp ZP_BYTE:3 [ plex_free_next#17 plex_free_next#13 plexSort::m#2 plexSort::m#1 ]
|
||||
zp ZP_BYTE:4 [ plex_sprite_idx#44 plex_sprite_idx#15 plexSort::nxt_idx#0 ]
|
||||
zp ZP_BYTE:5 [ plex_show_idx#44 plex_show_idx#15 plexSort::nxt_y#0 ]
|
||||
@ -255,11 +255,11 @@ reg byte a [ loop::$4 ]
|
||||
zp ZP_BYTE:10 [ loop::plexFreeNextYpos1_return#0 plexShowSprite::plex_sprite_idx2#0 ]
|
||||
reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ]
|
||||
reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ]
|
||||
reg byte a [ plexShowSprite::plexFreeAdd1_$1#0 ]
|
||||
reg byte x [ plexShowSprite::plexFreeAdd1_$1#0 ]
|
||||
reg byte x [ plexShowSprite::xpos_idx#0 ]
|
||||
reg byte a [ plexShowSprite::$3 ]
|
||||
reg byte a [ plexShowSprite::$4 ]
|
||||
reg byte a [ plexShowSprite::$6 ]
|
||||
reg byte a [ plexShowSprite::$7 ]
|
||||
reg byte x [ plexShowSprite::$7 ]
|
||||
reg byte x [ plexSort::s#2 ]
|
||||
reg byte a [ init::$6 ]
|
||||
|
@ -15,8 +15,8 @@ main: {
|
||||
jsr music.init
|
||||
// Wait for the RASTER
|
||||
b2:
|
||||
lda RASTER
|
||||
cmp #$fd
|
||||
lda #$fd
|
||||
cmp RASTER
|
||||
bne b2
|
||||
inc BORDERCOL
|
||||
// Play the music
|
||||
|
@ -550,8 +550,8 @@ main: {
|
||||
//SEG14 main::@2
|
||||
b2:
|
||||
//SEG15 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $fd) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$fd
|
||||
lda #$fd
|
||||
cmp RASTER
|
||||
bne b2
|
||||
jmp b3
|
||||
//SEG16 main::@3
|
||||
@ -626,8 +626,8 @@ main: {
|
||||
//SEG14 main::@2
|
||||
b2:
|
||||
//SEG15 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $fd) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$fd
|
||||
lda #$fd
|
||||
cmp RASTER
|
||||
bne b2
|
||||
jmp b3
|
||||
//SEG16 main::@3
|
||||
@ -796,8 +796,8 @@ main: {
|
||||
//SEG14 main::@2
|
||||
b2:
|
||||
//SEG15 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $fd) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda RASTER
|
||||
cmp #$fd
|
||||
lda #$fd
|
||||
cmp RASTER
|
||||
bne b2
|
||||
//SEG16 main::@3
|
||||
//SEG17 [8] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user