mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-26 12:49:21 +00:00
Added missing fragments and a few new pretty hairy synthesis rules.. Closes #577
This commit is contained in:
parent
9a38de88ce
commit
5c0618f9e8
212
src/main/fragment/cache/fragment-cache-csg65ce02.asm
vendored
212
src/main/fragment/cache/fragment-cache-csg65ce02.asm
vendored
@ -1,4 +1,4 @@
|
||||
//KICKC FRAGMENT CACHE 10dedb3bb9 10dedb58e1
|
||||
//KICKC FRAGMENT CACHE 1005e43111 1005e44e5d
|
||||
//FRAGMENT vbuz1=vbuc1
|
||||
lda #{c1}
|
||||
sta {z1}
|
||||
@ -7,6 +7,16 @@ lda #<{c1}
|
||||
sta {z1}
|
||||
lda #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT vbuz1=_deref_pbuc1
|
||||
lda {c1}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1_lt_vbuc1_then_la1
|
||||
lda {z1}
|
||||
cmp #{c1}
|
||||
bcc {la1}
|
||||
//FRAGMENT vbuz1=vbuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vduz1=vduz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
@ -16,10 +26,52 @@ lda {z2}+2
|
||||
sta {z1}+2
|
||||
lda {z2}+3
|
||||
sta {z1}+3
|
||||
//FRAGMENT vbuz1_lt_vbuc1_then_la1
|
||||
lda {z1}
|
||||
cmp #{c1}
|
||||
bcc {la1}
|
||||
//FRAGMENT vwuz1=_word_vbuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_rol_2
|
||||
lda {z2}
|
||||
asl
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
rol
|
||||
sta {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_plus_vwuz3
|
||||
lda {z2}
|
||||
clc
|
||||
adc {z3}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
adc {z3}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_rol_3
|
||||
lda {z2}
|
||||
asl
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
rol
|
||||
sta {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
//FRAGMENT pbuz1=pbuc1_plus_vwuz2
|
||||
clc
|
||||
lda {z2}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuz1_plus_vbuc1
|
||||
lda #{c1}
|
||||
clc
|
||||
@ -44,15 +96,9 @@ inw {z1}
|
||||
lda #{c1}
|
||||
cmp {z1}
|
||||
bne {la1}
|
||||
//FRAGMENT vbuz1=vbuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT _deref_pbuc1=vbuc2
|
||||
lda #{c2}
|
||||
sta {c1}
|
||||
//FRAGMENT vbuz1=_deref_pbuc1
|
||||
lda {c1}
|
||||
sta {z1}
|
||||
//FRAGMENT vduz1=vduc1
|
||||
lda #<{c1}
|
||||
sta {z1}
|
||||
@ -149,11 +195,6 @@ cmp {z1}
|
||||
beq {la1}
|
||||
!:
|
||||
bcc {la1}
|
||||
//FRAGMENT pbuz1=pbuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
@ -333,9 +374,34 @@ lda {z1}
|
||||
sec
|
||||
sbc {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuaa=_deref_pbuc1
|
||||
lda {c1}
|
||||
//FRAGMENT vbuxx=_deref_pbuc1
|
||||
ldx {c1}
|
||||
//FRAGMENT vbuaa_lt_vbuc1_then_la1
|
||||
cmp #{c1}
|
||||
bcc {la1}
|
||||
//FRAGMENT vbuaa=vbuz1
|
||||
lda {z1}
|
||||
//FRAGMENT vbuxx=vbuz1
|
||||
ldx {z1}
|
||||
//FRAGMENT vbuz1=vbuxx
|
||||
stx {z1}
|
||||
//FRAGMENT vwuz1=_word_vbuxx
|
||||
txa
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=_word_vbuyy
|
||||
tya
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=_word_vbuzz
|
||||
tza
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1_derefidx_vbuaa=vbuc1
|
||||
taz
|
||||
lda #{c1}
|
||||
@ -371,10 +437,6 @@ cmp #{c1}
|
||||
bne {la1}
|
||||
//FRAGMENT vbuz1=vbuaa
|
||||
sta {z1}
|
||||
//FRAGMENT vbuaa=_deref_pbuc1
|
||||
lda {c1}
|
||||
//FRAGMENT vbuxx=_deref_pbuc1
|
||||
ldx {c1}
|
||||
//FRAGMENT pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx
|
||||
inc {c1},x
|
||||
//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuc2_then_la1
|
||||
@ -387,10 +449,6 @@ tay
|
||||
lda {c1},y
|
||||
cmp #{c2}
|
||||
beq {la1}
|
||||
//FRAGMENT vbuaa=vbuz1
|
||||
lda {z1}
|
||||
//FRAGMENT vbuxx=vbuz1
|
||||
ldx {z1}
|
||||
//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1
|
||||
ldy {z1}
|
||||
lda {c1},y
|
||||
@ -1842,8 +1900,6 @@ sta ({z1}),y
|
||||
tza
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
//FRAGMENT vbuz1=vbuxx
|
||||
stx {z1}
|
||||
//FRAGMENT vbuaa_le_vbuc1_then_la1
|
||||
cmp #{c1}
|
||||
bcc {la1}
|
||||
@ -2168,6 +2224,10 @@ sbc #1
|
||||
//FRAGMENT vbuc1_eq_vbuyy_then_la1
|
||||
cpy #{c1}
|
||||
beq {la1}
|
||||
//FRAGMENT vbuyy=_deref_pbuc1
|
||||
ldy {c1}
|
||||
//FRAGMENT vbuzz=_deref_pbuc1
|
||||
ldz {c1}
|
||||
//FRAGMENT vbuyy_le_vbuaa_then_la1
|
||||
sty $ff
|
||||
cmp $ff
|
||||
@ -2206,6 +2266,26 @@ dex
|
||||
stz $ff
|
||||
cpy $ff
|
||||
bcc {la1}
|
||||
//FRAGMENT vwuz1=vwuz2_plus_vwuz1
|
||||
lda {z1}
|
||||
clc
|
||||
adc {z2}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuc1_plus_vwuz1
|
||||
clc
|
||||
lda {z1}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz1_rol_3
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
//FRAGMENT pbuc1_derefidx_vbuzz=vbuzz
|
||||
tza
|
||||
tax
|
||||
@ -2439,83 +2519,3 @@ sty {c1}
|
||||
//FRAGMENT _deref_pbsc1=vbszz
|
||||
tza
|
||||
sta {c1}
|
||||
//FRAGMENT vwuz1=_word_vbuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_rol_2
|
||||
lda {z2}
|
||||
asl
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
rol
|
||||
sta {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_plus_vwuz3
|
||||
lda {z2}
|
||||
clc
|
||||
adc {z3}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
adc {z3}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_rol_3
|
||||
lda {z2}
|
||||
asl
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
rol
|
||||
sta {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
//FRAGMENT pbuz1=pbuc1_plus_vwuz2
|
||||
clc
|
||||
lda {z2}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=_word_vbuxx
|
||||
txa
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=_word_vbuyy
|
||||
tya
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=_word_vbuzz
|
||||
tza
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT vbuyy=_deref_pbuc1
|
||||
ldy {c1}
|
||||
//FRAGMENT vbuzz=_deref_pbuc1
|
||||
ldz {c1}
|
||||
//FRAGMENT vwuz1=vwuz2_plus_vwuz1
|
||||
lda {z1}
|
||||
clc
|
||||
adc {z2}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuc1_plus_vwuz1
|
||||
clc
|
||||
lda {z1}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz1_rol_3
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
|
@ -1,4 +1,4 @@
|
||||
//KICKC FRAGMENT CACHE 10dedb3bb9 10dedb58e1
|
||||
//KICKC FRAGMENT CACHE 1005e43111 1005e44e5d
|
||||
//FRAGMENT _deref_pbuc1=vbuc2
|
||||
lda #{c2}
|
||||
sta {c1}
|
||||
|
@ -1,4 +1,4 @@
|
||||
//KICKC FRAGMENT CACHE 10dedb3bb9 10dedb58e1
|
||||
//KICKC FRAGMENT CACHE 1005e43111 1005e44e5d
|
||||
//FRAGMENT vbuz1=vbuc1
|
||||
lda #{c1}
|
||||
sta {z1}
|
||||
|
3898
src/main/fragment/cache/fragment-cache-mos6502x.asm
vendored
3898
src/main/fragment/cache/fragment-cache-mos6502x.asm
vendored
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
//KICKC FRAGMENT CACHE 10dedb3bb9 10dedb58e1
|
||||
//KICKC FRAGMENT CACHE 1005e43111 1005e44e5d
|
||||
//FRAGMENT vbuz1=_deref_pbuc1
|
||||
lda {c1}
|
||||
sta {z1}
|
||||
|
@ -0,0 +1,2 @@
|
||||
clc
|
||||
adc {m1}+1
|
@ -0,0 +1,5 @@
|
||||
cmp {m1}
|
||||
bcc !+
|
||||
lda {m1}+1
|
||||
beq {la1}
|
||||
!:
|
4
src/main/fragment/mos6502-common/vwum1=vbuaa_ror_1.asm
Normal file
4
src/main/fragment/mos6502-common/vwum1=vbuaa_ror_1.asm
Normal file
@ -0,0 +1,4 @@
|
||||
lsr
|
||||
sta {m1}
|
||||
lda #0
|
||||
sta {m1}+1
|
@ -0,0 +1,4 @@
|
||||
ldy {m1}+1
|
||||
bne {la1}
|
||||
cmp {m1}
|
||||
bcc {la1}
|
@ -1,7 +1,5 @@
|
||||
lda {m1}+1
|
||||
bne {la1}
|
||||
lda {m1}
|
||||
cmp #{c1}
|
||||
beq !+
|
||||
bcs {la1}
|
||||
!:
|
||||
lda #{c1}
|
||||
cmp {m1}
|
||||
bcc {la1}
|
||||
|
@ -0,0 +1,4 @@
|
||||
lda {m1}+1
|
||||
bne {la1}
|
||||
cpx {m1}
|
||||
bcc {la1}
|
@ -0,0 +1,4 @@
|
||||
lda {m1}+1
|
||||
bne {la1}
|
||||
cpy {m1}
|
||||
bcc {la1}
|
@ -362,6 +362,8 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
String rvalAa = ".*=.*aa.*|.*_.*aa.*|...aa_(lt|gt|le|ge|eq|neq)_.*";
|
||||
String rvalXx = ".*=.*xx.*|.*_.*xx.*|...xx_(lt|gt|le|ge|eq|neq)_.*";
|
||||
String rvalYy = ".*=.*yy.*|.*_.*yy.*|...yy_(lt|gt|le|ge|eq|neq)_.*";
|
||||
String rvalYy2 = ".*=.*yy.*";
|
||||
String rvalXx2 = ".*=.*xx.*";
|
||||
String rvalZz = ".*=.*zz.*|.*_.*zz.*|...zz_(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)_.*";
|
||||
@ -775,17 +777,23 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
// Rewrite left-size C1,y to use AA and a STA C1,y
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuyy=(.*)", null, null, "vb$1aa=$2", "sta {c1},y", null, "yy"));
|
||||
// Rewrite C1,y to save and reload YY from $FF
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuyy=(.*)", null, "sty $ff\n" , "vb$1aa=$2", "ldy $ff\nsta {c1},y", null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuyy=(.*)", null, "sty $ff" , "vb$1aa=$2", "ldy $ff\nsta {c1},y", null));
|
||||
// Rewrite C1,y to use AA
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuyy=(.*)", null, null , "vb$1aa=$2", "sta {c1},y", null, "yy"));
|
||||
// Rewrite (Z1),y to save and reload YY from $FF
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuyy=(.*)", twoZM1, "sty $ff\n" , "vb$1aa=$2", "ldy $ff\nsta ({z1}),y", mapZM1));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuyy=(.*)", twoZM1, "sty $ff" , "vb$1aa=$2", "ldy $ff\nsta ({z1}),y", mapZM1));
|
||||
// Rewrite (Z1),y to use AA
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuyy=(.*)", twoZM1, null , "vb$1aa=$2", "sta ({z1}),y", mapZM1, "yy"));
|
||||
if(targetCpu.getCpu65xx().hasRegisterZ())
|
||||
// Rewrite (Z1),z to save and reload ZZ from $FF
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuzz=(.*)", twoZM1, "stz $ff\n" , "vb$1aa=$2", "ldz $ff\nsta ({z1}),z", mapZM1));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuzz=(.*)", twoZM1, "stz $ff" , "vb$1aa=$2", "ldz $ff\nsta ({z1}),z", mapZM1));
|
||||
|
||||
// Rewrite left-size C1,x to use AA and a STA C1,x
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx=(.*)", null, null, "vb$1aa=$2", "sta {c1},x", null, "xx"));
|
||||
// Rewrite C1,x to save and reload XX from $FF
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx=(.*)", null, "stx $ff\n" , "vb$1aa=$2", "ldx $ff\nsta {c1},x", null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx=(.*)", null, "stx $ff" , "vb$1aa=$2", "ldx $ff\nsta {c1},x", null));
|
||||
// Rewrite C1,x to use AA
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx=(.*)", null, null , "vb$1aa=$2", "sta {c1},x", null, "xx"));
|
||||
// Rewrite (Z1),x to save Y to $FF and reload it into YY
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuxx=(.*)", twoZM1, "stx $ff" , "vb$1aa=$2", "ldy $ff\nsta ({z1}),y", mapZM1));
|
||||
if(targetCpu.getCpu65xx().hasRegisterZ())
|
||||
@ -904,6 +912,11 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
// Remove any parenthesis ending up around values
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)\\(([vp][bwd][us][mzcaxy][123456axyz])\\)(.*)", null, null, "$1$2$3", null, null));
|
||||
|
||||
// Rewrite (pbuc1_derefidx_vbuxx) to use YY
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)\\(pb(.)c1_derefidx_vbuxx\\)(.*)", rvalYy+"|"+twoC1, "ldy {c1},x" , "$1vb$2yy$3", null, mapC1, "yy"));
|
||||
// Rewrite 2 * (pbuc1_derefidx_vbuxx) to use YY
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)\\(pb(.)c1_derefidx_vbuxx\\)(.*)\\(pb(.)c1_derefidx_vbuxx\\)(.*)", rvalYy+"|"+threeC1, "ldy {c1},x" , "$1vb$2yy$3vb$4yy$5", null, mapC1, "yy"));
|
||||
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_derefidx_vbuz1_(.*)", rvalYy+"|"+twoZM1, "ldy {z1}", "$1_derefidx_vbuyy_$2", null, mapZM1));
|
||||
if(targetCpu.getCpu65xx().hasRegisterZ())
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_derefidx_vbuz1_(.*)", rvalZz+"|"+twoZM1, "ldz {z1}", "$1_derefidx_vbuzz_$2", null, mapZM1));
|
||||
|
@ -301,14 +301,11 @@ main: {
|
||||
ldy #5
|
||||
tax
|
||||
lda (d),y
|
||||
sty.z $ff
|
||||
stx.z $ff
|
||||
clc
|
||||
adc.z $ff
|
||||
ldy.z $ff
|
||||
sta (d),y
|
||||
// if (d->vx<-32)
|
||||
ldy #5
|
||||
lda (d),y
|
||||
sec
|
||||
sbc #-$20
|
||||
@ -328,9 +325,8 @@ main: {
|
||||
!:
|
||||
bmi __b21
|
||||
// d->ax=-1
|
||||
lda #7
|
||||
tay
|
||||
lda #-1
|
||||
ldy #7
|
||||
sta (d),y
|
||||
__b21:
|
||||
// if (d->y>248<<F)
|
||||
@ -359,9 +355,8 @@ main: {
|
||||
!:
|
||||
bpl __b23
|
||||
// d->vy=1<<F
|
||||
lda #6
|
||||
tay
|
||||
lda #1<<F
|
||||
ldy #6
|
||||
sta (d),y
|
||||
__b23:
|
||||
// d->x+=d->vx
|
||||
@ -468,16 +463,14 @@ main: {
|
||||
jmp __b17
|
||||
__b22:
|
||||
// d->vy=-1<<F
|
||||
lda #6
|
||||
tay
|
||||
lda #-1<<F
|
||||
ldy #6
|
||||
sta (d),y
|
||||
jmp __b23
|
||||
__b20:
|
||||
// d->ax=1
|
||||
lda #7
|
||||
tay
|
||||
lda #1
|
||||
ldy #7
|
||||
sta (d),y
|
||||
jmp __b21
|
||||
__b13:
|
||||
@ -517,14 +510,12 @@ main: {
|
||||
lda #>$70<<F
|
||||
sta (d1),y
|
||||
// d->vx=(sbyte)i
|
||||
lda #5
|
||||
tay
|
||||
ldy #5
|
||||
txa
|
||||
sta (d1),y
|
||||
// d->ax=1
|
||||
lda #7
|
||||
tay
|
||||
lda #1
|
||||
ldy #7
|
||||
sta (d1),y
|
||||
// d->y=24<<F
|
||||
ldy #3
|
||||
@ -534,14 +525,12 @@ main: {
|
||||
lda #>$18<<F
|
||||
sta (d1),y
|
||||
// d->vy=1<<F
|
||||
lda #6
|
||||
tay
|
||||
lda #1<<F
|
||||
ldy #6
|
||||
sta (d1),y
|
||||
// d->ay=1
|
||||
lda #8
|
||||
tay
|
||||
lda #1
|
||||
ldy #8
|
||||
sta (d1),y
|
||||
// i+=1
|
||||
inx
|
||||
|
@ -3346,31 +3346,31 @@ Uplift Scope [$4]
|
||||
Uplift Scope [$5]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [Print00] best 71417 combination reg byte x [ Print00::v#5 Print00::v#3 Print00::v0#0 Print00::v#1 Print00::v#2 ] reg byte y [ Print00::c#5 Print00::c#2 ] reg byte y [ Print00::c#10 Print00::c#4 ]
|
||||
Uplifting [GetSprite] best 70121 combination reg byte x [ GetSprite::return#2 GetSprite::t0#3 GetSprite::t0#2 ] reg byte x [ GetSprite::return#4 ]
|
||||
Uplifting [AddSprite] best 68878 combination reg byte y [ AddSprite::t0#3 AddSprite::t0#2 ] reg byte x [ AddSprite::sn#1 ]
|
||||
Uplifting [main] best 68458 combination zp[1]:13 [ main::i#22 main::i#9 ] zp[2]:14 [ main::d#10 main::d#2 ] zp[2]:28 [ main::$27 ] zp[2]:30 [ main::$28 ] zp[2]:17 [ main::oCount#7 main::oCount#17 main::oCount#20 main::oCount#2 ] zp[1]:16 [ main::objects#12 main::objects#9 main::objects#17 main::objects#1 main::objects#15 ] reg byte x [ main::i#12 main::i#2 ] reg byte x [ main::i#14 main::i#4 ] zp[2]:6 [ main::c#11 main::c#4 ] zp[2]:4 [ main::c#10 main::c#2 ] reg byte x [ main::i#17 main::i#7 ] zp[1]:32 [ main::$132 ] reg byte a [ main::$52 ] zp[2]:38 [ main::$112 ] zp[2]:40 [ main::$109 ] zp[2]:42 [ main::$110 ] zp[2]:10 [ main::c#16 main::c#18 main::c#7 ] zp[1]:9 [ main::type#4 main::type#10 main::type#2 ] zp[1]:26 [ main::i#11 ] zp[2]:36 [ main::$111 ] zp[1]:12 [ main::stopIt#5 main::stopIt#15 ] zp[2]:34 [ main::d1#0 ]
|
||||
Uplifting [Print00] best 69937 combination reg byte x [ Print00::v#5 Print00::v#3 Print00::v0#0 Print00::v#1 Print00::v#2 ] reg byte y [ Print00::c#5 Print00::c#2 ] reg byte y [ Print00::c#10 Print00::c#4 ]
|
||||
Uplifting [GetSprite] best 68641 combination reg byte x [ GetSprite::return#2 GetSprite::t0#3 GetSprite::t0#2 ] reg byte x [ GetSprite::return#4 ]
|
||||
Uplifting [AddSprite] best 67398 combination reg byte y [ AddSprite::t0#3 AddSprite::t0#2 ] reg byte x [ AddSprite::sn#1 ]
|
||||
Uplifting [main] best 66978 combination zp[1]:13 [ main::i#22 main::i#9 ] zp[2]:14 [ main::d#10 main::d#2 ] zp[2]:28 [ main::$27 ] zp[2]:30 [ main::$28 ] zp[2]:17 [ main::oCount#7 main::oCount#17 main::oCount#20 main::oCount#2 ] zp[1]:16 [ main::objects#12 main::objects#9 main::objects#17 main::objects#1 main::objects#15 ] reg byte x [ main::i#12 main::i#2 ] reg byte x [ main::i#14 main::i#4 ] zp[2]:6 [ main::c#11 main::c#4 ] zp[2]:4 [ main::c#10 main::c#2 ] reg byte x [ main::i#17 main::i#7 ] zp[1]:32 [ main::$132 ] reg byte a [ main::$52 ] zp[2]:38 [ main::$112 ] zp[2]:40 [ main::$109 ] zp[2]:42 [ main::$110 ] zp[2]:10 [ main::c#16 main::c#18 main::c#7 ] zp[1]:9 [ main::type#4 main::type#10 main::type#2 ] zp[1]:26 [ main::i#11 ] zp[2]:36 [ main::$111 ] zp[1]:12 [ main::stopIt#5 main::stopIt#15 ] zp[2]:34 [ main::d1#0 ]
|
||||
Limited combination testing to 100 combinations of 1728 possible.
|
||||
Uplifting [DelSprite] best 68422 combination reg byte x [ DelSprite::sn#0 ]
|
||||
Uplifting [$0] best 68422 combination
|
||||
Uplifting [$1] best 68422 combination
|
||||
Uplifting [$2] best 68422 combination
|
||||
Uplifting [$3] best 68422 combination
|
||||
Uplifting [$4] best 68422 combination
|
||||
Uplifting [$5] best 68422 combination
|
||||
Uplifting [] best 68422 combination
|
||||
Uplifting [DelSprite] best 66942 combination reg byte x [ DelSprite::sn#0 ]
|
||||
Uplifting [$0] best 66942 combination
|
||||
Uplifting [$1] best 66942 combination
|
||||
Uplifting [$2] best 66942 combination
|
||||
Uplifting [$3] best 66942 combination
|
||||
Uplifting [$4] best 66942 combination
|
||||
Uplifting [$5] best 66942 combination
|
||||
Uplifting [] best 66942 combination
|
||||
Attempting to uplift remaining variables inzp[1]:13 [ main::i#22 main::i#9 ]
|
||||
Uplifting [main] best 68422 combination zp[1]:13 [ main::i#22 main::i#9 ]
|
||||
Uplifting [main] best 66942 combination zp[1]:13 [ main::i#22 main::i#9 ]
|
||||
Attempting to uplift remaining variables inzp[1]:16 [ main::objects#12 main::objects#9 main::objects#17 main::objects#1 main::objects#15 ]
|
||||
Uplifting [main] best 68422 combination zp[1]:16 [ main::objects#12 main::objects#9 main::objects#17 main::objects#1 main::objects#15 ]
|
||||
Uplifting [main] best 66942 combination zp[1]:16 [ main::objects#12 main::objects#9 main::objects#17 main::objects#1 main::objects#15 ]
|
||||
Attempting to uplift remaining variables inzp[1]:32 [ main::$132 ]
|
||||
Uplifting [main] best 68402 combination reg byte a [ main::$132 ]
|
||||
Uplifting [main] best 66922 combination reg byte a [ main::$132 ]
|
||||
Attempting to uplift remaining variables inzp[1]:9 [ main::type#4 main::type#10 main::type#2 ]
|
||||
Uplifting [main] best 68402 combination zp[1]:9 [ main::type#4 main::type#10 main::type#2 ]
|
||||
Uplifting [main] best 66922 combination zp[1]:9 [ main::type#4 main::type#10 main::type#2 ]
|
||||
Attempting to uplift remaining variables inzp[1]:26 [ main::i#11 ]
|
||||
Uplifting [main] best 68192 combination reg byte x [ main::i#11 ]
|
||||
Uplifting [main] best 66712 combination reg byte x [ main::i#11 ]
|
||||
Attempting to uplift remaining variables inzp[1]:12 [ main::stopIt#5 main::stopIt#15 ]
|
||||
Uplifting [main] best 68192 combination zp[1]:12 [ main::stopIt#5 main::stopIt#15 ]
|
||||
Uplifting [main] best 66712 combination zp[1]:12 [ main::stopIt#5 main::stopIt#15 ]
|
||||
Allocated (was zp[2]:4) zp[2]:2 [ main::c#10 main::c#2 ]
|
||||
Allocated (was zp[2]:6) zp[2]:4 [ main::c#11 main::c#4 ]
|
||||
Allocated (was zp[1]:9) zp[1]:6 [ main::type#4 main::type#10 main::type#2 ]
|
||||
@ -3826,11 +3826,9 @@ main: {
|
||||
ldy #5
|
||||
tax
|
||||
lda (d),y
|
||||
sty.z $ff
|
||||
stx.z $ff
|
||||
clc
|
||||
adc.z $ff
|
||||
ldy.z $ff
|
||||
sta (d),y
|
||||
// [68] if(((signed byte*)main::d#10)[5]<-$20) goto main::@20 -- pbsz1_derefidx_vbuc1_lt_vbsc2_then_la1
|
||||
ldy #5
|
||||
@ -3857,9 +3855,8 @@ main: {
|
||||
// main::@26
|
||||
__b26:
|
||||
// [70] ((signed byte*)main::d#10)[7] = -1 -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #7
|
||||
tay
|
||||
lda #-1
|
||||
ldy #7
|
||||
sta (d),y
|
||||
jmp __b21
|
||||
// main::@21
|
||||
@ -3894,9 +3891,8 @@ main: {
|
||||
// main::@28
|
||||
__b28:
|
||||
// [73] ((signed byte*)main::d#10)[6] = (signed byte)1<<F -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #6
|
||||
tay
|
||||
lda #1<<F
|
||||
ldy #6
|
||||
sta (d),y
|
||||
jmp __b23
|
||||
// main::@23
|
||||
@ -4015,17 +4011,15 @@ main: {
|
||||
// main::@22
|
||||
__b22:
|
||||
// [84] ((signed byte*)main::d#10)[6] = (signed byte)-1<<F -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #6
|
||||
tay
|
||||
lda #-1<<F
|
||||
ldy #6
|
||||
sta (d),y
|
||||
jmp __b23
|
||||
// main::@20
|
||||
__b20:
|
||||
// [85] ((signed byte*)main::d#10)[7] = 1 -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #7
|
||||
tay
|
||||
lda #1
|
||||
ldy #7
|
||||
sta (d),y
|
||||
jmp __b21
|
||||
// main::@13
|
||||
@ -4081,14 +4075,12 @@ main: {
|
||||
lda #>$70<<F
|
||||
sta (d1),y
|
||||
// [95] ((signed byte*)main::d1#0)[5] = (signed byte)main::i#17 -- pbsz1_derefidx_vbuc1=vbsxx
|
||||
lda #5
|
||||
tay
|
||||
ldy #5
|
||||
txa
|
||||
sta (d1),y
|
||||
// [96] ((signed byte*)main::d1#0)[7] = 1 -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #7
|
||||
tay
|
||||
lda #1
|
||||
ldy #7
|
||||
sta (d1),y
|
||||
// [97] ((signed word*)main::d1#0)[3] = (signed word)$18<<F -- pwsz1_derefidx_vbuc1=vwsc2
|
||||
ldy #3
|
||||
@ -4098,14 +4090,12 @@ main: {
|
||||
lda #>$18<<F
|
||||
sta (d1),y
|
||||
// [98] ((signed byte*)main::d1#0)[6] = (signed byte)1<<F -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #6
|
||||
tay
|
||||
lda #1<<F
|
||||
ldy #6
|
||||
sta (d1),y
|
||||
// [99] ((signed byte*)main::d1#0)[8] = 1 -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #8
|
||||
tay
|
||||
lda #1
|
||||
ldy #8
|
||||
sta (d1),y
|
||||
jmp __b15
|
||||
// main::@15
|
||||
@ -4460,6 +4450,7 @@ Removing instruction lda #>0
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #>0
|
||||
Removing instruction lda #>0
|
||||
Removing instruction ldy #5
|
||||
Removing instruction ldy #0
|
||||
Removing instruction ldy #0
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
@ -4562,8 +4553,8 @@ Fixing long branch [101] bcc __b9 to bcs
|
||||
Fixing long branch [107] bcc __b9 to bcs
|
||||
Fixing long branch [145] bcc __b13 to bcs
|
||||
Fixing long branch [166] bcc __b18 to bcs
|
||||
Fixing long branch [263] bmi __b20 to bpl
|
||||
Fixing long branch [288] bmi __b22 to bpl
|
||||
Fixing long branch [260] bmi __b20 to bpl
|
||||
Fixing long branch [284] bmi __b22 to bpl
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
void AddSprite(byte AddSprite::sn)
|
||||
@ -4697,7 +4688,7 @@ zp[2]:28 [ main::$110 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 62612
|
||||
Score: 60932
|
||||
|
||||
// File Comments
|
||||
// bubbles64 - Q&D C64 port of the bubbles demo from vbcc6502's NES exmaples
|
||||
@ -5135,15 +5126,12 @@ main: {
|
||||
ldy #5
|
||||
tax
|
||||
lda (d),y
|
||||
sty.z $ff
|
||||
stx.z $ff
|
||||
clc
|
||||
adc.z $ff
|
||||
ldy.z $ff
|
||||
sta (d),y
|
||||
// if (d->vx<-32)
|
||||
// [68] if(((signed byte*)main::d#10)[5]<-$20) goto main::@20 -- pbsz1_derefidx_vbuc1_lt_vbsc2_then_la1
|
||||
ldy #5
|
||||
lda (d),y
|
||||
sec
|
||||
sbc #-$20
|
||||
@ -5167,9 +5155,8 @@ main: {
|
||||
// main::@26
|
||||
// d->ax=-1
|
||||
// [70] ((signed byte*)main::d#10)[7] = -1 -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #7
|
||||
tay
|
||||
lda #-1
|
||||
ldy #7
|
||||
sta (d),y
|
||||
// main::@21
|
||||
__b21:
|
||||
@ -5204,9 +5191,8 @@ main: {
|
||||
// main::@28
|
||||
// d->vy=1<<F
|
||||
// [73] ((signed byte*)main::d#10)[6] = (signed byte)1<<F -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #6
|
||||
tay
|
||||
lda #1<<F
|
||||
ldy #6
|
||||
sta (d),y
|
||||
// main::@23
|
||||
__b23:
|
||||
@ -5331,18 +5317,16 @@ main: {
|
||||
__b22:
|
||||
// d->vy=-1<<F
|
||||
// [84] ((signed byte*)main::d#10)[6] = (signed byte)-1<<F -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #6
|
||||
tay
|
||||
lda #-1<<F
|
||||
ldy #6
|
||||
sta (d),y
|
||||
jmp __b23
|
||||
// main::@20
|
||||
__b20:
|
||||
// d->ax=1
|
||||
// [85] ((signed byte*)main::d#10)[7] = 1 -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #7
|
||||
tay
|
||||
lda #1
|
||||
ldy #7
|
||||
sta (d),y
|
||||
jmp __b21
|
||||
// main::@13
|
||||
@ -5398,15 +5382,13 @@ main: {
|
||||
sta (d1),y
|
||||
// d->vx=(sbyte)i
|
||||
// [95] ((signed byte*)main::d1#0)[5] = (signed byte)main::i#17 -- pbsz1_derefidx_vbuc1=vbsxx
|
||||
lda #5
|
||||
tay
|
||||
ldy #5
|
||||
txa
|
||||
sta (d1),y
|
||||
// d->ax=1
|
||||
// [96] ((signed byte*)main::d1#0)[7] = 1 -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #7
|
||||
tay
|
||||
lda #1
|
||||
ldy #7
|
||||
sta (d1),y
|
||||
// d->y=24<<F
|
||||
// [97] ((signed word*)main::d1#0)[3] = (signed word)$18<<F -- pwsz1_derefidx_vbuc1=vwsc2
|
||||
@ -5418,15 +5400,13 @@ main: {
|
||||
sta (d1),y
|
||||
// d->vy=1<<F
|
||||
// [98] ((signed byte*)main::d1#0)[6] = (signed byte)1<<F -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #6
|
||||
tay
|
||||
lda #1<<F
|
||||
ldy #6
|
||||
sta (d1),y
|
||||
// d->ay=1
|
||||
// [99] ((signed byte*)main::d1#0)[8] = 1 -- pbsz1_derefidx_vbuc1=vbsc2
|
||||
lda #8
|
||||
tay
|
||||
lda #1
|
||||
ldy #8
|
||||
sta (d1),y
|
||||
// main::@15
|
||||
// i+=1
|
||||
|
@ -56,10 +56,10 @@
|
||||
.label PETSCII = $1000
|
||||
.label COSTAB = SINTAB+$40
|
||||
// The current canvas being rendered to the screen - in D018 format.
|
||||
.label canvas_show_memory = $11
|
||||
.label canvas_show_memory = $13
|
||||
// Flag signalling that the canvas on screen needs to be updated.
|
||||
// Set to 1 by the renderer when a new canvas is ready for showing, and to 0 by the raster when the canvas is shown on screen.
|
||||
.label canvas_show_flag = $12
|
||||
.label canvas_show_flag = $14
|
||||
__start: {
|
||||
.const __init1_toD0181_return = (>(SCREEN&$3fff)*4)|(>CANVAS2)/4&$f
|
||||
// canvas_show_memory = toD018(SCREEN, CANVAS2)
|
||||
@ -146,12 +146,12 @@ main: {
|
||||
// Setup 16x16 canvas for rendering
|
||||
.label screen = 5
|
||||
.label y = 2
|
||||
.label x0 = $13
|
||||
.label y0 = $14
|
||||
.label x0 = $15
|
||||
.label y0 = $16
|
||||
.label x1 = $c
|
||||
.label y1 = $15
|
||||
.label y1 = $17
|
||||
.label x2 = $c
|
||||
.label y2 = $16
|
||||
.label y2 = $18
|
||||
.label p0_idx = 7
|
||||
.label p1_idx = 8
|
||||
.label p2_idx = 9
|
||||
@ -389,12 +389,12 @@ kbhit: {
|
||||
rts
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// memset(void* zp($1f) str, byte register(X) c, word zp($1c) num)
|
||||
// memset(void* zp($20) str, byte register(X) c, word zp($1e) num)
|
||||
memset: {
|
||||
.label end = $1c
|
||||
.label dst = $1f
|
||||
.label num = $1c
|
||||
.label str = $1f
|
||||
.label end = $1e
|
||||
.label dst = $20
|
||||
.label num = $1e
|
||||
.label str = $20
|
||||
// if(num>0)
|
||||
lda.z num
|
||||
bne !+
|
||||
@ -493,27 +493,27 @@ clock_start: {
|
||||
}
|
||||
// Draw a EOR friendly line between two points
|
||||
// Uses bresenham line drawing routine
|
||||
// line(byte zp($f) x1, byte zp($10) y1, byte zp($c) x2, byte zp($d) y2)
|
||||
// line(byte zp($10) x1, byte zp($11) y1, byte zp($c) x2, byte zp($d) y2)
|
||||
line: {
|
||||
.label plot2___1 = $1e
|
||||
.label plot5___1 = $27
|
||||
.label x1 = $f
|
||||
.label y1 = $10
|
||||
.label x1 = $10
|
||||
.label y1 = $11
|
||||
.label x2 = $c
|
||||
.label y2 = $d
|
||||
.label x = $f
|
||||
.label y = $10
|
||||
.label dx = $17
|
||||
.label dy = $18
|
||||
.label sx = $19
|
||||
.label sy = $1a
|
||||
.label plot1_column = $21
|
||||
.label plot2_y = $1b
|
||||
.label plot2_column = $1c
|
||||
.label plot3_column = $1f
|
||||
.label e1 = $e
|
||||
.label plot4_column = $23
|
||||
.label plot5_column = $25
|
||||
.label x = $10
|
||||
.label y = $11
|
||||
.label dx = $19
|
||||
.label dy = $1a
|
||||
.label sx = $1b
|
||||
.label sy = $1c
|
||||
.label e2 = $12
|
||||
.label plot1_column = $22
|
||||
.label e = $e
|
||||
.label plot2_y = $1d
|
||||
.label plot2_column = $1e
|
||||
.label plot3_column = $20
|
||||
.label e1 = $f
|
||||
.label plot4_column = $24
|
||||
.label plot5_column = $26
|
||||
.label plot6_column = $28
|
||||
// abs_u8(x2-x1)
|
||||
lda.z x2
|
||||
@ -570,7 +570,7 @@ line: {
|
||||
// e = dy/2
|
||||
lda.z dy
|
||||
lsr
|
||||
tax
|
||||
sta.z e
|
||||
__b6:
|
||||
// y += sy
|
||||
lda.z y
|
||||
@ -578,14 +578,13 @@ line: {
|
||||
adc.z sy
|
||||
sta.z y
|
||||
// e += dx
|
||||
txa
|
||||
lda.z e
|
||||
clc
|
||||
adc.z dx
|
||||
tax
|
||||
sta.z e
|
||||
// if(e>dy)
|
||||
lda.z dy
|
||||
stx.z $ff
|
||||
cmp.z $ff
|
||||
cmp.z e
|
||||
bcs __b7
|
||||
// plot(x, y-sy)
|
||||
lda.z y
|
||||
@ -607,13 +606,11 @@ line: {
|
||||
// x&7
|
||||
lda #7
|
||||
and.z x
|
||||
sta.z plot2___1
|
||||
// column[y] |= plot_bit[x&7]
|
||||
ldy.z plot2_y
|
||||
tax
|
||||
lda (plot2_column),y
|
||||
ldy.z plot2___1
|
||||
ora plot_bit,y
|
||||
ldy.z plot2_y
|
||||
ora plot_bit,x
|
||||
sta (plot2_column),y
|
||||
// x += sx
|
||||
lda.z x
|
||||
@ -621,10 +618,10 @@ line: {
|
||||
adc.z sx
|
||||
sta.z x
|
||||
// e -= dy
|
||||
txa
|
||||
lda.z e
|
||||
sec
|
||||
sbc.z dy
|
||||
tax
|
||||
sta.z e
|
||||
__b7:
|
||||
// while (y != y2)
|
||||
lda.z y
|
||||
@ -740,7 +737,7 @@ line: {
|
||||
// e = dx/2
|
||||
lda.z dx
|
||||
lsr
|
||||
tax
|
||||
sta.z e2
|
||||
plot5:
|
||||
// x/8
|
||||
lda.z x
|
||||
@ -757,13 +754,11 @@ line: {
|
||||
// x&7
|
||||
lda #7
|
||||
and.z x
|
||||
sta.z plot5___1
|
||||
// column[y] |= plot_bit[x&7]
|
||||
ldy.z y
|
||||
tax
|
||||
lda (plot5_column),y
|
||||
ldy.z plot5___1
|
||||
ora plot_bit,y
|
||||
ldy.z y
|
||||
ora plot_bit,x
|
||||
sta (plot5_column),y
|
||||
// x += sx
|
||||
lda.z x
|
||||
@ -771,14 +766,13 @@ line: {
|
||||
adc.z sx
|
||||
sta.z x
|
||||
// e += dy
|
||||
txa
|
||||
lda.z e2
|
||||
clc
|
||||
adc.z dy
|
||||
tax
|
||||
sta.z e2
|
||||
// if(e>dx)
|
||||
lda.z dx
|
||||
stx.z $ff
|
||||
cmp.z $ff
|
||||
cmp.z e2
|
||||
bcs __b13
|
||||
// y += sy
|
||||
tya
|
||||
@ -786,10 +780,10 @@ line: {
|
||||
adc.z sy
|
||||
sta.z y
|
||||
// e -= dx
|
||||
txa
|
||||
lda.z e2
|
||||
sec
|
||||
sbc.z dx
|
||||
tax
|
||||
sta.z e2
|
||||
__b13:
|
||||
// while (x != x2)
|
||||
lda.z x
|
||||
@ -818,11 +812,11 @@ line: {
|
||||
rts
|
||||
}
|
||||
// EOR fill from the line buffer onto the canvas
|
||||
// eorfill(byte* zp($1f) canvas)
|
||||
// eorfill(byte* zp($20) canvas)
|
||||
eorfill: {
|
||||
.label canvas = $1f
|
||||
.label line_column = $1c
|
||||
.label fill_column = $1f
|
||||
.label canvas = $20
|
||||
.label line_column = $1e
|
||||
.label fill_column = $20
|
||||
lda #<LINE_BUFFER
|
||||
sta.z line_column
|
||||
lda #>LINE_BUFFER
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -52,23 +52,23 @@ byte abs_u8::u
|
||||
byte abs_u8::u#0 reg byte a 2002.0
|
||||
byte abs_u8::u#1 reg byte a 2002.0
|
||||
byte abs_u8::u#2 reg byte a 10668.333333333332
|
||||
volatile byte canvas_show_flag loadstore zp[1]:18 19.75
|
||||
volatile byte canvas_show_memory loadstore zp[1]:17 2.9855072463768115
|
||||
volatile byte canvas_show_flag loadstore zp[1]:20 19.75
|
||||
volatile byte canvas_show_memory loadstore zp[1]:19 2.9855072463768115
|
||||
void clock_start()
|
||||
void eorfill(byte* eorfill::line_buffer , byte* eorfill::canvas)
|
||||
byte* eorfill::canvas
|
||||
byte* eorfill::canvas#0 canvas zp[2]:31 551.0
|
||||
byte* eorfill::canvas#0 canvas zp[2]:32 551.0
|
||||
byte eorfill::eor
|
||||
byte eorfill::eor#0 reg byte a 150001.5
|
||||
byte eorfill::eor#1 reg byte a 1000001.0
|
||||
byte eorfill::eor#2 reg byte a 1050001.5
|
||||
byte* eorfill::fill_column
|
||||
byte* eorfill::fill_column#1 fill_column zp[2]:31 100001.0
|
||||
byte* eorfill::fill_column#2 fill_column zp[2]:31 130100.5
|
||||
byte* eorfill::fill_column#1 fill_column zp[2]:32 100001.0
|
||||
byte* eorfill::fill_column#2 fill_column zp[2]:32 130100.5
|
||||
byte* eorfill::line_buffer
|
||||
byte* eorfill::line_column
|
||||
byte* eorfill::line_column#1 line_column zp[2]:28 66667.33333333333
|
||||
byte* eorfill::line_column#2 line_column zp[2]:28 144444.88888888888
|
||||
byte* eorfill::line_column#1 line_column zp[2]:30 66667.33333333333
|
||||
byte* eorfill::line_column#2 line_column zp[2]:30 144444.88888888888
|
||||
byte eorfill::x
|
||||
byte eorfill::x#1 reg byte x 200002.0
|
||||
byte eorfill::x#2 reg byte x 27273.0
|
||||
@ -95,60 +95,60 @@ byte kbhit::return#2 reg byte a 4.0
|
||||
void line(byte* line::canvas , byte line::x1 , byte line::y1 , byte line::x2 , byte line::y2)
|
||||
byte* line::canvas
|
||||
byte line::dx
|
||||
byte line::dx#0 dx zp[1]:23 19462.805970149253
|
||||
byte line::dx#0 dx zp[1]:25 19462.805970149253
|
||||
byte line::dy
|
||||
byte line::dy#0 dy zp[1]:24 22285.85714285714
|
||||
byte line::dy#0 dy zp[1]:26 22285.85714285714
|
||||
byte line::e
|
||||
byte line::e#0 reg byte x 2002.0
|
||||
byte line::e#1 reg byte x 44444.88888888889
|
||||
byte line::e#2 reg byte x 200002.0
|
||||
byte line::e#3 reg byte x 100501.5
|
||||
byte line::e#5 reg byte x 150001.5
|
||||
byte line::e#0 e zp[1]:14 2002.0
|
||||
byte line::e#1 e zp[1]:14 44444.88888888889
|
||||
byte line::e#2 e zp[1]:14 200002.0
|
||||
byte line::e#3 e zp[1]:14 100501.5
|
||||
byte line::e#5 e zp[1]:14 150001.5
|
||||
byte line::e1
|
||||
byte line::e1#0 e1 zp[1]:14 2002.0
|
||||
byte line::e1#1 e1 zp[1]:14 1033334.6666666666
|
||||
byte line::e1#2 e1 zp[1]:14 28571.714285714286
|
||||
byte line::e1#3 e1 zp[1]:14 1050502.0
|
||||
byte line::e1#0 e1 zp[1]:15 2002.0
|
||||
byte line::e1#1 e1 zp[1]:15 1033334.6666666666
|
||||
byte line::e1#2 e1 zp[1]:15 28571.714285714286
|
||||
byte line::e1#3 e1 zp[1]:15 1050502.0
|
||||
byte line::e2
|
||||
byte line::e2#0 reg byte x 2002.0
|
||||
byte line::e2#1 reg byte x 133334.66666666666
|
||||
byte line::e2#2 reg byte x 200002.0
|
||||
byte line::e2#3 reg byte x 28714.714285714286
|
||||
byte line::e2#7 reg byte x 150001.5
|
||||
byte line::e2#0 e2 zp[1]:18 2002.0
|
||||
byte line::e2#1 e2 zp[1]:18 133334.66666666666
|
||||
byte line::e2#2 e2 zp[1]:18 200002.0
|
||||
byte line::e2#3 e2 zp[1]:18 28714.714285714286
|
||||
byte line::e2#7 e2 zp[1]:18 150001.5
|
||||
byte~ line::plot1_$0 reg byte a 2002.0
|
||||
byte~ line::plot1_$1 reg byte a 2002.0
|
||||
byte~ line::plot1_$2 reg byte a 2002.0
|
||||
byte* line::plot1_column
|
||||
byte* line::plot1_column#0 plot1_column zp[2]:33 1501.5
|
||||
byte* line::plot1_column#0 plot1_column zp[2]:34 1501.5
|
||||
byte line::plot1_x
|
||||
byte line::plot1_y
|
||||
byte~ line::plot2_$0 reg byte a 200002.0
|
||||
byte~ line::plot2_$1 zp[1]:30 200002.0
|
||||
byte~ line::plot2_$1 reg byte a 200002.0
|
||||
byte~ line::plot2_$2 reg byte a 200002.0
|
||||
byte* line::plot2_column
|
||||
byte* line::plot2_column#0 plot2_column zp[2]:28 150001.5
|
||||
byte* line::plot2_column#0 plot2_column zp[2]:30 150001.5
|
||||
byte line::plot2_x
|
||||
byte line::plot2_y
|
||||
byte line::plot2_y#0 plot2_y zp[1]:27 60000.600000000006
|
||||
byte line::plot2_y#0 plot2_y zp[1]:29 60000.600000000006
|
||||
byte~ line::plot3_$0 reg byte a 2002.0
|
||||
byte~ line::plot3_$1 reg byte a 2002.0
|
||||
byte~ line::plot3_$2 reg byte a 2002.0
|
||||
byte* line::plot3_column
|
||||
byte* line::plot3_column#0 plot3_column zp[2]:31 1501.5
|
||||
byte* line::plot3_column#0 plot3_column zp[2]:32 1501.5
|
||||
byte line::plot3_x
|
||||
byte line::plot3_y
|
||||
byte~ line::plot4_$0 reg byte a 200002.0
|
||||
byte~ line::plot4_$1 reg byte a 200002.0
|
||||
byte~ line::plot4_$2 reg byte a 200002.0
|
||||
byte* line::plot4_column
|
||||
byte* line::plot4_column#0 plot4_column zp[2]:35 150001.5
|
||||
byte* line::plot4_column#0 plot4_column zp[2]:36 150001.5
|
||||
byte line::plot4_x
|
||||
byte line::plot4_y
|
||||
byte~ line::plot5_$0 reg byte a 200002.0
|
||||
byte~ line::plot5_$1 zp[1]:39 200002.0
|
||||
byte~ line::plot5_$1 reg byte a 200002.0
|
||||
byte~ line::plot5_$2 reg byte a 200002.0
|
||||
byte* line::plot5_column
|
||||
byte* line::plot5_column#0 plot5_column zp[2]:37 150001.5
|
||||
byte* line::plot5_column#0 plot5_column zp[2]:38 150001.5
|
||||
byte line::plot5_x
|
||||
byte line::plot5_y
|
||||
byte~ line::plot6_$0 reg byte a 2002.0
|
||||
@ -159,42 +159,42 @@ byte* line::plot6_column#0 plot6_column zp[2]:40 1501.5
|
||||
byte line::plot6_x
|
||||
byte line::plot6_y
|
||||
byte line::sx
|
||||
byte line::sx#0 sx zp[1]:25 5135.6949152542375
|
||||
byte line::sx#0 sx zp[1]:27 5135.6949152542375
|
||||
byte line::sy
|
||||
byte line::sy#0 sy zp[1]:26 23672.836363636365
|
||||
byte line::sy#0 sy zp[1]:28 23672.836363636365
|
||||
byte line::x
|
||||
byte line::x#0 x zp[1]:15 228.4375
|
||||
byte line::x#1 x zp[1]:15 100001.0
|
||||
byte line::x#10 x zp[1]:15 66834.16666666666
|
||||
byte line::x#12 x zp[1]:15 30200.5
|
||||
byte line::x#15 x zp[1]:15 50100.6
|
||||
byte line::x#17 x zp[1]:15 60401.0
|
||||
byte line::x#18 x zp[1]:15 550251.25
|
||||
byte line::x#19 x zp[1]:15 62500.625
|
||||
byte line::x#0 x zp[1]:16 228.4375
|
||||
byte line::x#1 x zp[1]:16 100001.0
|
||||
byte line::x#10 x zp[1]:16 66834.16666666666
|
||||
byte line::x#12 x zp[1]:16 30200.5
|
||||
byte line::x#15 x zp[1]:16 50100.6
|
||||
byte line::x#17 x zp[1]:16 60401.0
|
||||
byte line::x#18 x zp[1]:16 550251.25
|
||||
byte line::x#19 x zp[1]:16 62500.625
|
||||
byte line::x1
|
||||
byte line::x1#0 x1 zp[1]:15 50.5
|
||||
byte line::x1#1 x1 zp[1]:15 50.5
|
||||
byte line::x1#2 x1 zp[1]:15 50.5
|
||||
byte line::x1#0 x1 zp[1]:16 50.5
|
||||
byte line::x1#1 x1 zp[1]:16 50.5
|
||||
byte line::x1#2 x1 zp[1]:16 50.5
|
||||
byte line::x2
|
||||
byte line::x2#0 x2 zp[1]:12 101.0
|
||||
byte line::x2#1 x2 zp[1]:12 101.0
|
||||
byte line::x2#15 x2 zp[1]:12 3612.625
|
||||
byte line::x2#2 x2 zp[1]:12 101.0
|
||||
byte line::y
|
||||
byte line::y#0 y zp[1]:16 239.27777777777777
|
||||
byte line::y#1 y zp[1]:16 1001.0
|
||||
byte line::y#10 y zp[1]:16 23647.411764705877
|
||||
byte line::y#11 y zp[1]:16 2101004.0
|
||||
byte line::y#12 y zp[1]:16 209091.36363636365
|
||||
byte line::y#13 y zp[1]:16 55667.33333333333
|
||||
byte line::y#15 y zp[1]:16 50334.16666666667
|
||||
byte line::y#17 y zp[1]:16 583.9166666666667
|
||||
byte line::y#4 y zp[1]:16 100001.0
|
||||
byte line::y#7 y zp[1]:16 201003.0
|
||||
byte line::y#0 y zp[1]:17 239.27777777777777
|
||||
byte line::y#1 y zp[1]:17 1001.0
|
||||
byte line::y#10 y zp[1]:17 23647.411764705877
|
||||
byte line::y#11 y zp[1]:17 2101004.0
|
||||
byte line::y#12 y zp[1]:17 209091.36363636365
|
||||
byte line::y#13 y zp[1]:17 55667.33333333333
|
||||
byte line::y#15 y zp[1]:17 50334.16666666667
|
||||
byte line::y#17 y zp[1]:17 583.9166666666667
|
||||
byte line::y#4 y zp[1]:17 100001.0
|
||||
byte line::y#7 y zp[1]:17 201003.0
|
||||
byte line::y1
|
||||
byte line::y1#0 y1 zp[1]:16 67.33333333333333
|
||||
byte line::y1#1 y1 zp[1]:16 67.33333333333333
|
||||
byte line::y1#2 y1 zp[1]:16 67.33333333333333
|
||||
byte line::y1#0 y1 zp[1]:17 67.33333333333333
|
||||
byte line::y1#1 y1 zp[1]:17 67.33333333333333
|
||||
byte line::y1#2 y1 zp[1]:17 67.33333333333333
|
||||
byte line::y2
|
||||
byte line::y2#0 y2 zp[1]:13 202.0
|
||||
byte line::y2#1 y2 zp[1]:13 202.0
|
||||
@ -238,7 +238,7 @@ byte main::x
|
||||
byte main::x#1 reg byte y 2002.0
|
||||
byte main::x#2 reg byte y 1001.0
|
||||
byte main::x0
|
||||
byte main::x0#0 x0 zp[1]:19 16.833333333333332
|
||||
byte main::x0#0 x0 zp[1]:21 16.833333333333332
|
||||
byte main::x1
|
||||
byte main::x1#0 x1 zp[1]:12 33.666666666666664
|
||||
byte main::x2
|
||||
@ -247,25 +247,25 @@ byte main::y
|
||||
byte main::y#1 y zp[1]:2 202.0
|
||||
byte main::y#2 y zp[1]:2 36.72727272727273
|
||||
byte main::y0
|
||||
byte main::y0#0 y0 zp[1]:20 16.833333333333332
|
||||
byte main::y0#0 y0 zp[1]:22 16.833333333333332
|
||||
byte main::y1
|
||||
byte main::y1#0 y1 zp[1]:21 33.666666666666664
|
||||
byte main::y1#0 y1 zp[1]:23 33.666666666666664
|
||||
byte main::y2
|
||||
byte main::y2#0 y2 zp[1]:22 43.285714285714285
|
||||
byte main::y2#0 y2 zp[1]:24 43.285714285714285
|
||||
void* memset(void* memset::str , byte memset::c , word memset::num)
|
||||
byte memset::c
|
||||
byte memset::c#6 reg byte x 12500.125
|
||||
byte* memset::dst
|
||||
byte* memset::dst#1 dst zp[2]:31 200002.0
|
||||
byte* memset::dst#2 dst zp[2]:31 133668.3333333333
|
||||
byte* memset::dst#4 dst zp[2]:31 2002.0
|
||||
byte* memset::dst#1 dst zp[2]:32 200002.0
|
||||
byte* memset::dst#2 dst zp[2]:32 133668.3333333333
|
||||
byte* memset::dst#4 dst zp[2]:32 2002.0
|
||||
byte* memset::end
|
||||
byte* memset::end#0 end zp[2]:28 16833.666666666664
|
||||
byte* memset::end#0 end zp[2]:30 16833.666666666664
|
||||
word memset::num
|
||||
word memset::num#4 num zp[2]:28 1001.0
|
||||
word memset::num#4 num zp[2]:30 1001.0
|
||||
void* memset::return
|
||||
void* memset::str
|
||||
void* memset::str#5 str zp[2]:31
|
||||
void* memset::str#5 str zp[2]:32
|
||||
const byte* plot_bit[8] = { $80, $40, $20, $10, 8, 4, 2, 1 }
|
||||
const byte** plot_column[$10] = { LINE_BUFFER, LINE_BUFFER+(byte)1*$80, LINE_BUFFER+(word)2*$80, LINE_BUFFER+(word)3*$80, LINE_BUFFER+(word)4*$80, LINE_BUFFER+(word)5*$80, LINE_BUFFER+(word)6*$80, LINE_BUFFER+(word)7*$80, LINE_BUFFER+(word)8*$80, LINE_BUFFER+(word)9*$80, LINE_BUFFER+(word)$a*$80, LINE_BUFFER+(word)$b*$80, LINE_BUFFER+(word)$c*$80, LINE_BUFFER+(word)$d*$80, LINE_BUFFER+(word)$e*$80, LINE_BUFFER+(word)$f*$80 }
|
||||
void setup_irq()
|
||||
@ -292,55 +292,55 @@ reg byte x [ main::c#2 main::c#4 main::c#1 ]
|
||||
reg byte x [ memset::c#6 ]
|
||||
zp[1]:12 [ line::x2#15 line::x2#0 line::x2#1 line::x2#2 main::x1#0 main::x2#0 ]
|
||||
zp[1]:13 [ line::y2#13 line::y2#10 line::y2#0 line::y2#1 line::y2#2 line::y2#3 ]
|
||||
reg byte x [ line::e#3 line::e#0 line::e#5 line::e#2 line::e#1 ]
|
||||
zp[1]:14 [ line::e1#3 line::e1#0 line::e1#1 line::e1#2 ]
|
||||
zp[1]:15 [ line::x#10 line::x#12 line::x#18 line::x#15 line::x#0 line::x1#0 line::x1#1 line::x1#2 line::x#17 line::x#1 line::x#19 ]
|
||||
zp[1]:16 [ line::y#13 line::y#15 line::y#11 line::y#7 line::y#17 line::y#0 line::y1#0 line::y1#1 line::y1#2 line::y#1 line::y#10 line::y#12 line::y#4 ]
|
||||
reg byte x [ line::e2#3 line::e2#7 line::e2#0 line::e2#2 line::e2#1 ]
|
||||
zp[1]:14 [ line::e#3 line::e#0 line::e#5 line::e#2 line::e#1 ]
|
||||
zp[1]:15 [ line::e1#3 line::e1#0 line::e1#1 line::e1#2 ]
|
||||
zp[1]:16 [ line::x#10 line::x#12 line::x#18 line::x#15 line::x#0 line::x1#0 line::x1#1 line::x1#2 line::x#17 line::x#1 line::x#19 ]
|
||||
zp[1]:17 [ line::y#13 line::y#15 line::y#11 line::y#7 line::y#17 line::y#0 line::y1#0 line::y1#1 line::y1#2 line::y#1 line::y#10 line::y#12 line::y#4 ]
|
||||
zp[1]:18 [ line::e2#3 line::e2#7 line::e2#0 line::e2#2 line::e2#1 ]
|
||||
reg byte x [ eorfill::x#2 eorfill::x#1 ]
|
||||
reg byte y [ eorfill::y#2 eorfill::y#1 ]
|
||||
reg byte a [ eorfill::eor#2 eorfill::eor#0 eorfill::eor#1 ]
|
||||
reg byte a [ abs_u8::return#4 abs_u8::return#2 abs_u8::u#2 abs_u8::u#0 abs_u8::u#1 ]
|
||||
reg byte a [ sgn_u8::u#2 sgn_u8::u#0 sgn_u8::u#1 ]
|
||||
reg byte a [ sgn_u8::return#4 ]
|
||||
zp[1]:17 [ canvas_show_memory ]
|
||||
zp[1]:18 [ canvas_show_flag ]
|
||||
zp[1]:19 [ canvas_show_memory ]
|
||||
zp[1]:20 [ canvas_show_flag ]
|
||||
reg byte a [ kbhit::return#2 ]
|
||||
reg byte a [ irq_bottom_2::$0 ]
|
||||
zp[1]:19 [ main::x0#0 ]
|
||||
zp[1]:20 [ main::y0#0 ]
|
||||
zp[1]:21 [ main::y1#0 ]
|
||||
zp[1]:22 [ main::y2#0 ]
|
||||
zp[1]:21 [ main::x0#0 ]
|
||||
zp[1]:22 [ main::y0#0 ]
|
||||
zp[1]:23 [ main::y1#0 ]
|
||||
zp[1]:24 [ main::y2#0 ]
|
||||
reg byte a [ kbhit::return#0 ]
|
||||
reg byte a [ abs_u8::return#0 ]
|
||||
zp[1]:23 [ line::dx#0 ]
|
||||
zp[1]:25 [ line::dx#0 ]
|
||||
reg byte a [ abs_u8::return#1 ]
|
||||
zp[1]:24 [ line::dy#0 ]
|
||||
zp[1]:26 [ line::dy#0 ]
|
||||
reg byte a [ sgn_u8::return#0 ]
|
||||
zp[1]:25 [ line::sx#0 ]
|
||||
zp[1]:27 [ line::sx#0 ]
|
||||
reg byte a [ sgn_u8::return#1 ]
|
||||
zp[1]:26 [ line::sy#0 ]
|
||||
zp[1]:27 [ line::plot2_y#0 ]
|
||||
zp[1]:28 [ line::sy#0 ]
|
||||
zp[1]:29 [ line::plot2_y#0 ]
|
||||
reg byte a [ line::plot2_$0 ]
|
||||
reg byte a [ line::plot2_$2 ]
|
||||
zp[2]:28 [ line::plot2_column#0 eorfill::line_column#2 eorfill::line_column#1 memset::num#4 memset::end#0 ]
|
||||
zp[1]:30 [ line::plot2_$1 ]
|
||||
zp[2]:30 [ line::plot2_column#0 eorfill::line_column#2 eorfill::line_column#1 memset::num#4 memset::end#0 ]
|
||||
reg byte a [ line::plot2_$1 ]
|
||||
reg byte a [ line::plot3_$0 ]
|
||||
reg byte a [ line::plot3_$2 ]
|
||||
zp[2]:31 [ line::plot3_column#0 eorfill::fill_column#2 eorfill::canvas#0 eorfill::fill_column#1 memset::str#5 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
zp[2]:32 [ line::plot3_column#0 eorfill::fill_column#2 eorfill::canvas#0 eorfill::fill_column#1 memset::str#5 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
reg byte a [ line::plot3_$1 ]
|
||||
reg byte a [ line::plot1_$0 ]
|
||||
reg byte a [ line::plot1_$2 ]
|
||||
zp[2]:33 [ line::plot1_column#0 ]
|
||||
zp[2]:34 [ line::plot1_column#0 ]
|
||||
reg byte a [ line::plot1_$1 ]
|
||||
reg byte a [ line::plot4_$0 ]
|
||||
reg byte a [ line::plot4_$2 ]
|
||||
zp[2]:35 [ line::plot4_column#0 ]
|
||||
zp[2]:36 [ line::plot4_column#0 ]
|
||||
reg byte a [ line::plot4_$1 ]
|
||||
reg byte a [ line::plot5_$0 ]
|
||||
reg byte a [ line::plot5_$2 ]
|
||||
zp[2]:37 [ line::plot5_column#0 ]
|
||||
zp[1]:39 [ line::plot5_$1 ]
|
||||
zp[2]:38 [ line::plot5_column#0 ]
|
||||
reg byte a [ line::plot5_$1 ]
|
||||
reg byte a [ line::plot6_$0 ]
|
||||
reg byte a [ line::plot6_$2 ]
|
||||
zp[2]:40 [ line::plot6_column#0 ]
|
||||
|
@ -50,11 +50,9 @@ position_sprite: {
|
||||
// if (x > 255)
|
||||
lda.z x+1
|
||||
bne __b1
|
||||
lda.z x
|
||||
cmp #$ff
|
||||
beq !+
|
||||
bcs __b1
|
||||
!:
|
||||
lda #$ff
|
||||
cmp.z x
|
||||
bcc __b1
|
||||
// 1 << spriteno
|
||||
lda #1
|
||||
ldy.z spriteno
|
||||
|
@ -330,17 +330,17 @@ Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [position_sprite] best 925 combination reg byte a [ position_sprite::$2 ] reg byte a [ position_sprite::$4 ] reg byte a [ position_sprite::$5 ] reg byte a [ position_sprite::$6 ] zp[1]:8 [ position_sprite::$1 ] zp[1]:5 [ position_sprite::spriteno#0 ] zp[2]:6 [ position_sprite::x#0 ]
|
||||
Uplifting [position_sprite] best 923 combination reg byte a [ position_sprite::$2 ] reg byte a [ position_sprite::$4 ] reg byte a [ position_sprite::$5 ] reg byte a [ position_sprite::$6 ] zp[1]:8 [ position_sprite::$1 ] zp[1]:5 [ position_sprite::spriteno#0 ] zp[2]:6 [ position_sprite::x#0 ]
|
||||
Limited combination testing to 100 combinations of 2304 possible.
|
||||
Uplifting [main] best 805 combination reg byte x [ main::s#2 main::s#1 ] zp[2]:3 [ main::xpos#2 main::xpos#1 ]
|
||||
Uplifting [MOS6526_CIA] best 805 combination
|
||||
Uplifting [MOS6569_VICII] best 805 combination
|
||||
Uplifting [MOS6581_SID] best 805 combination
|
||||
Uplifting [] best 805 combination
|
||||
Uplifting [main] best 803 combination reg byte x [ main::s#2 main::s#1 ] zp[2]:3 [ main::xpos#2 main::xpos#1 ]
|
||||
Uplifting [MOS6526_CIA] best 803 combination
|
||||
Uplifting [MOS6569_VICII] best 803 combination
|
||||
Uplifting [MOS6581_SID] best 803 combination
|
||||
Uplifting [] best 803 combination
|
||||
Attempting to uplift remaining variables inzp[1]:8 [ position_sprite::$1 ]
|
||||
Uplifting [position_sprite] best 798 combination reg byte y [ position_sprite::$1 ]
|
||||
Uplifting [position_sprite] best 796 combination reg byte y [ position_sprite::$1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:5 [ position_sprite::spriteno#0 ]
|
||||
Uplifting [position_sprite] best 798 combination zp[1]:5 [ position_sprite::spriteno#0 ]
|
||||
Uplifting [position_sprite] best 796 combination zp[1]:5 [ position_sprite::spriteno#0 ]
|
||||
Coalescing zero page register [ zp[2]:3 [ main::xpos#2 main::xpos#1 ] ] with [ zp[2]:6 [ position_sprite::x#0 ] ] - score: 1
|
||||
Allocated (was zp[2]:3) zp[2]:2 [ main::xpos#2 main::xpos#1 position_sprite::x#0 ]
|
||||
Allocated (was zp[1]:5) zp[1]:4 [ position_sprite::spriteno#0 ]
|
||||
@ -423,11 +423,9 @@ position_sprite: {
|
||||
// [13] if(position_sprite::x#0>$ff) goto position_sprite::@1 -- vwuz1_gt_vbuc1_then_la1
|
||||
lda.z x+1
|
||||
bne __b1
|
||||
lda.z x
|
||||
cmp #$ff
|
||||
beq !+
|
||||
bcs __b1
|
||||
!:
|
||||
lda #$ff
|
||||
cmp.z x
|
||||
bcc __b1
|
||||
jmp __b2
|
||||
// position_sprite::@2
|
||||
__b2:
|
||||
@ -527,7 +525,7 @@ reg byte a [ position_sprite::$6 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 555
|
||||
Score: 553
|
||||
|
||||
// File Comments
|
||||
// Tests rolling sprite MSB by variable amount
|
||||
@ -607,11 +605,9 @@ position_sprite: {
|
||||
// [13] if(position_sprite::x#0>$ff) goto position_sprite::@1 -- vwuz1_gt_vbuc1_then_la1
|
||||
lda.z x+1
|
||||
bne __b1
|
||||
lda.z x
|
||||
cmp #$ff
|
||||
beq !+
|
||||
bcs __b1
|
||||
!:
|
||||
lda #$ff
|
||||
cmp.z x
|
||||
bcc __b1
|
||||
// position_sprite::@2
|
||||
// 1 << spriteno
|
||||
// [14] position_sprite::$4 = 1 << position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1
|
||||
|
Loading…
Reference in New Issue
Block a user