mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-11 04:37:29 +00:00
Updated test data. Added borderline pacman example.
This commit is contained in:
parent
e024ac6086
commit
03a25b8915
@ -1,4 +1,4 @@
|
||||
//KICKC FRAGMENT CACHE fdb40b9db fdb40d86d
|
||||
//KICKC FRAGMENT CACHE f0802c8e6 f0802e789
|
||||
//FRAGMENT vbuz1=vbuc1
|
||||
lda #{c1}
|
||||
sta {z1}
|
||||
|
@ -1,4 +1,4 @@
|
||||
//KICKC FRAGMENT CACHE fdb40b9db fdb40d86d
|
||||
//KICKC FRAGMENT CACHE f0802c8e6 f0802e789
|
||||
//FRAGMENT _deref_pbuc1=vbuc2
|
||||
lda #{c2}
|
||||
sta {c1}
|
||||
@ -1398,11 +1398,153 @@ asw {z1}
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
//FRAGMENT _deref_pbuc1=_inc__deref_pbuc1
|
||||
inc {c1}
|
||||
//FRAGMENT vwuz1=vbuc1
|
||||
lda #<{c1}
|
||||
sta {z1}
|
||||
lda #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT _deref_pbuc1_eq_vbuz1_then_la1
|
||||
lda {c1}
|
||||
cmp {z1}
|
||||
beq {la1}
|
||||
//FRAGMENT _deref_pbuc1=_dec__deref_pbuc1
|
||||
dec {c1}
|
||||
//FRAGMENT pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
|
||||
ldx {z1}
|
||||
inc {c1},x
|
||||
//FRAGMENT vwuz1=vwuc1
|
||||
lda #<{c1}
|
||||
sta {z1}
|
||||
lda #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT vbuz1=_lo_vwuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=_hi_vwuz2
|
||||
lda {z2}+1
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuz2_bor_vbuz3
|
||||
lda {z2}
|
||||
ora {z3}
|
||||
sta {z1}
|
||||
//FRAGMENT _deref_pwuc1=vwuc2
|
||||
lda #<{c2}
|
||||
sta {c1}
|
||||
lda #>{c2}
|
||||
sta {c1}+1
|
||||
//FRAGMENT _deref_qbuc1=pbuc2
|
||||
lda #<{c2}
|
||||
sta {c1}
|
||||
lda #>{c2}
|
||||
sta {c1}+1
|
||||
//FRAGMENT _deref_pbuc1_eq_vbuaa_then_la1
|
||||
cmp {c1}
|
||||
beq {la1}
|
||||
//FRAGMENT pbuc1_derefidx_vbuaa=_inc_pbuc1_derefidx_vbuaa
|
||||
tax
|
||||
inc {c1},x
|
||||
//FRAGMENT pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx
|
||||
inc {c1},x
|
||||
//FRAGMENT vbuaa=_lo_vwuz1
|
||||
lda {z1}
|
||||
//FRAGMENT vbuxx=_lo_vwuz1
|
||||
ldx {z1}
|
||||
//FRAGMENT vbuaa=_hi_vwuz1
|
||||
lda {z1}+1
|
||||
//FRAGMENT vbuxx=_hi_vwuz1
|
||||
ldx {z1}+1
|
||||
//FRAGMENT vbuz1=vbuxx_bor_vbuz2
|
||||
txa
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuyy_bor_vbuz2
|
||||
tya
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuzz_bor_vbuz2
|
||||
tza
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuz2_bor_vbuaa
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuxx_bor_vbuaa
|
||||
stx $ff
|
||||
ora $ff
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuyy_bor_vbuaa
|
||||
sty $ff
|
||||
ora $ff
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuzz_bor_vbuaa
|
||||
tay
|
||||
tza
|
||||
sty $ff
|
||||
ora $ff
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuz2_bor_vbuxx
|
||||
txa
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuxx_bor_vbuxx
|
||||
stx {z1}
|
||||
//FRAGMENT vbuyy=_lo_vwuz1
|
||||
ldy {z1}
|
||||
//FRAGMENT vbuzz=_lo_vwuz1
|
||||
ldz {z1}
|
||||
//FRAGMENT vbuyy=_hi_vwuz1
|
||||
ldy {z1}+1
|
||||
//FRAGMENT vbuzz=_hi_vwuz1
|
||||
ldz {z1}+1
|
||||
//FRAGMENT vbuz1=vbuz2_bor_vbuyy
|
||||
tya
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT pbuc1_derefidx_vbuyy=_inc_pbuc1_derefidx_vbuyy
|
||||
lda {c1},y
|
||||
inc
|
||||
sta {c1},y
|
||||
//FRAGMENT pbuc1_derefidx_vbuzz=_inc_pbuc1_derefidx_vbuzz
|
||||
tza
|
||||
tax
|
||||
inc {c1},x
|
||||
//FRAGMENT _deref_pbuc1_eq_vbuxx_then_la1
|
||||
cpx {c1}
|
||||
beq {la1}
|
||||
//FRAGMENT _deref_pbuc1_eq_vbuyy_then_la1
|
||||
cpy {c1}
|
||||
beq {la1}
|
||||
//FRAGMENT _deref_pbuc1_eq_vbuzz_then_la1
|
||||
cpz {c1}
|
||||
beq {la1}
|
||||
//FRAGMENT vbuaa=vbuz1_bor_vbuaa
|
||||
ora {z1}
|
||||
//FRAGMENT vbuxx=vbuz1_bor_vbuaa
|
||||
ora {z1}
|
||||
tax
|
||||
//FRAGMENT vbuyy=vbuz1_bor_vbuaa
|
||||
ora {z1}
|
||||
tay
|
||||
//FRAGMENT vbuzz=vbuz1_bor_vbuaa
|
||||
ora {z1}
|
||||
taz
|
||||
//FRAGMENT vbuz1=vbuz2_bor_vbuzz
|
||||
tza
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuaa=vbuxx_bor_vbuaa
|
||||
stx $ff
|
||||
ora $ff
|
||||
//FRAGMENT vbuaa=vbuyy_bor_vbuaa
|
||||
sty $ff
|
||||
ora $ff
|
||||
//FRAGMENT vbuaa=vbuzz_bor_vbuaa
|
||||
tay
|
||||
tza
|
||||
sty $ff
|
||||
ora $ff
|
||||
//FRAGMENT vduz1=vduc1
|
||||
lda #<{c1}
|
||||
sta {z1}
|
||||
@ -1456,16 +1598,6 @@ lda {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vbuz1=_lo_vwuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=_hi_vwuz2
|
||||
lda {z2}+1
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuz2_bor_vbuz3
|
||||
lda {z2}
|
||||
ora {z3}
|
||||
sta {z1}
|
||||
//FRAGMENT vduz1=vduz2_ror_4
|
||||
lda {z2}+3
|
||||
lsr
|
||||
@ -2052,49 +2184,6 @@ dey
|
||||
bne !-
|
||||
!e:
|
||||
taz
|
||||
//FRAGMENT vbuaa=_lo_vwuz1
|
||||
lda {z1}
|
||||
//FRAGMENT vbuxx=_lo_vwuz1
|
||||
ldx {z1}
|
||||
//FRAGMENT vbuaa=_hi_vwuz1
|
||||
lda {z1}+1
|
||||
//FRAGMENT vbuxx=_hi_vwuz1
|
||||
ldx {z1}+1
|
||||
//FRAGMENT vbuz1=vbuxx_bor_vbuz2
|
||||
txa
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuyy_bor_vbuz2
|
||||
tya
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuzz_bor_vbuz2
|
||||
tza
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuz2_bor_vbuaa
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuxx_bor_vbuaa
|
||||
stx $ff
|
||||
ora $ff
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuyy_bor_vbuaa
|
||||
sty $ff
|
||||
ora $ff
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuzz_bor_vbuaa
|
||||
tay
|
||||
tza
|
||||
sty $ff
|
||||
ora $ff
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuz2_bor_vbuxx
|
||||
txa
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuxx_bor_vbuxx
|
||||
stx {z1}
|
||||
//FRAGMENT vbuaa=_hi__word_vduz1
|
||||
lda {z1}+1
|
||||
//FRAGMENT vbuxx=_hi__word_vduz1
|
||||
@ -2159,20 +2248,6 @@ tay
|
||||
tza
|
||||
ora {z1}
|
||||
taz
|
||||
//FRAGMENT vbuaa=vbuz1_bor_vbuaa
|
||||
ora {z1}
|
||||
//FRAGMENT vbuxx=vbuz1_bor_vbuaa
|
||||
ora {z1}
|
||||
tax
|
||||
//FRAGMENT vbuyy=vbuz1_bor_vbuaa
|
||||
ora {z1}
|
||||
tay
|
||||
//FRAGMENT vbuzz=vbuz1_bor_vbuaa
|
||||
ora {z1}
|
||||
taz
|
||||
//FRAGMENT vbuaa=vbuxx_bor_vbuaa
|
||||
stx $ff
|
||||
ora $ff
|
||||
//FRAGMENT vbuxx=vbuxx_bor_vbuaa
|
||||
stx $ff
|
||||
ora $ff
|
||||
@ -2185,9 +2260,6 @@ tay
|
||||
stx $ff
|
||||
ora $ff
|
||||
taz
|
||||
//FRAGMENT vbuaa=vbuyy_bor_vbuaa
|
||||
sty $ff
|
||||
ora $ff
|
||||
//FRAGMENT vbuxx=vbuyy_bor_vbuaa
|
||||
sty $ff
|
||||
ora $ff
|
||||
@ -2200,11 +2272,6 @@ tay
|
||||
sty $ff
|
||||
ora $ff
|
||||
taz
|
||||
//FRAGMENT vbuaa=vbuzz_bor_vbuaa
|
||||
tay
|
||||
tza
|
||||
sty $ff
|
||||
ora $ff
|
||||
//FRAGMENT vbuxx=vbuzz_bor_vbuaa
|
||||
tax
|
||||
tza
|
||||
@ -2238,18 +2305,6 @@ tay
|
||||
txa
|
||||
ora {z1}
|
||||
taz
|
||||
//FRAGMENT vbuyy=_lo_vwuz1
|
||||
ldy {z1}
|
||||
//FRAGMENT vbuzz=_lo_vwuz1
|
||||
ldz {z1}
|
||||
//FRAGMENT vbuyy=_hi_vwuz1
|
||||
ldy {z1}+1
|
||||
//FRAGMENT vbuzz=_hi_vwuz1
|
||||
ldz {z1}+1
|
||||
//FRAGMENT vbuz1=vbuz2_bor_vbuyy
|
||||
tya
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuyy=_hi__word_vduz1
|
||||
ldy {z1}+1
|
||||
//FRAGMENT vbuzz=_hi__word_vduz1
|
||||
@ -2276,10 +2331,6 @@ tza
|
||||
tax
|
||||
tya
|
||||
sta {c1},x
|
||||
//FRAGMENT vbuz1=vbuz2_bor_vbuzz
|
||||
tza
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuyy=vbuaa
|
||||
tay
|
||||
//FRAGMENT vbuzz=vbuaa
|
||||
|
@ -1,4 +1,4 @@
|
||||
//KICKC FRAGMENT CACHE fdb40b9db fdb40d86d
|
||||
//KICKC FRAGMENT CACHE f0802c8e6 f0802e789
|
||||
//FRAGMENT vbuz1=vbuc1
|
||||
lda #{c1}
|
||||
sta {z1}
|
||||
|
2764
src/main/fragment/cache/fragment-cache-mos6502x.asm
vendored
2764
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 fdb40b9db fdb40d86d
|
||||
//KICKC FRAGMENT CACHE f0802c8e6 f0802e789
|
||||
//FRAGMENT _deref_pbuc1=_inc__deref_pbuc1
|
||||
inc {c1}
|
||||
//FRAGMENT isr_hardware_all_entry
|
||||
|
363
src/main/fragment/cache/fragment-cache-wdc65c02.asm
vendored
363
src/main/fragment/cache/fragment-cache-wdc65c02.asm
vendored
@ -1,4 +1,4 @@
|
||||
//KICKC FRAGMENT CACHE fdb40b9db fdb40d86d
|
||||
//KICKC FRAGMENT CACHE f0802c8e6 f0802e789
|
||||
//FRAGMENT vbuz1=vbuc1
|
||||
lda #{c1}
|
||||
sta {z1}
|
||||
@ -2969,6 +2969,166 @@ sta {z1}+3
|
||||
//FRAGMENT vbuz1=vbuaa_bor_vbuz1
|
||||
ora {z1}
|
||||
sta {z1}
|
||||
//FRAGMENT _deref_pssc1=_deref_pssc2_memcpy_vbuc3
|
||||
ldy #{c3}
|
||||
!:
|
||||
lda {c2}-1,y
|
||||
sta {c1}-1,y
|
||||
dey
|
||||
bne !-
|
||||
//FRAGMENT vduz1=vwsc1
|
||||
NO_SYNTHESIS
|
||||
//FRAGMENT _deref_pwuc1=vbuc2
|
||||
lda #0
|
||||
sta {c1}+1
|
||||
lda #<{c2}
|
||||
sta {c1}
|
||||
//FRAGMENT vwuz1=vwuz2_bor_vbuz3
|
||||
lda {z3}
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_ror_5
|
||||
lda {z2}+1
|
||||
lsr
|
||||
sta {z1}+1
|
||||
lda {z2}
|
||||
ror
|
||||
sta {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
//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 vbuz1=_byte_vwuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vwuz1=vwuz2_band_vwuc1
|
||||
lda {z2}
|
||||
and #<{c1}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
and #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuz2_plus_vwuc1
|
||||
clc
|
||||
lda {z2}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1_neq_vwuc1_then_la1
|
||||
lda {z1}+1
|
||||
cmp #>{c1}
|
||||
bne {la1}
|
||||
lda {z1}
|
||||
cmp #<{c1}
|
||||
bne {la1}
|
||||
//FRAGMENT _deref_pbuz1=vbuc1
|
||||
lda #{c1}
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
//FRAGMENT 0_neq__deref_pbuz1_then_la1
|
||||
ldy #0
|
||||
lda ({z1}),y
|
||||
cmp #0
|
||||
bne {la1}
|
||||
//FRAGMENT vwuz1=vwuz2_bor_vbuxx
|
||||
txa
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_bor_vbuyy
|
||||
tya
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=_word_vbuaa
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT vbuaa=_byte_vwuz1
|
||||
lda {z1}
|
||||
//FRAGMENT vbuxx=_byte_vwuz1
|
||||
lda {z1}
|
||||
tax
|
||||
//FRAGMENT vbuyy=_byte_vwuz1
|
||||
lda {z1}
|
||||
tay
|
||||
//FRAGMENT vduz1=vduz2_plus_vduz1
|
||||
lda {z1}
|
||||
clc
|
||||
adc {z2}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc {z2}+1
|
||||
sta {z1}+1
|
||||
lda {z1}+2
|
||||
adc {z2}+2
|
||||
sta {z1}+2
|
||||
lda {z1}+3
|
||||
adc {z2}+3
|
||||
sta {z1}+3
|
||||
//FRAGMENT pbuz1=pbuz1_plus_vwuc1
|
||||
clc
|
||||
lda {z1}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz1_rol_8
|
||||
lda {z1}
|
||||
sta {z1}+1
|
||||
lda #0
|
||||
sta {z1}
|
||||
//FRAGMENT vwuz1=vwuz1_bor_vbuxx
|
||||
txa
|
||||
ora {z1}
|
||||
sta {z1}
|
||||
//FRAGMENT vwuz1=vwuz1_rol_3
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz1_band_vwuc1
|
||||
lda {z1}
|
||||
and #<{c1}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
and #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz1_ror_5
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
//FRAGMENT vbuz1=_deref_pbuc1_band__deref_pbuc2
|
||||
lda {c1}
|
||||
and {c2}
|
||||
@ -2986,10 +3146,6 @@ sta {z1}
|
||||
lda {z2}+1
|
||||
adc #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT _deref_pbuz1=vbuc1
|
||||
lda #{c1}
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
//FRAGMENT vbuz1=pbuz2_derefidx_vbuz3
|
||||
ldy {z3}
|
||||
lda ({z2}),y
|
||||
@ -3017,10 +3173,6 @@ tay
|
||||
//FRAGMENT pbuc1_derefidx_vbuaa=vbuaa
|
||||
tax
|
||||
sta {c1},x
|
||||
//FRAGMENT vwuz1=_word_vbuaa
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT vbuz1_lt_vbuaa_then_la1
|
||||
cmp {z1}
|
||||
beq !+
|
||||
@ -3162,6 +3314,84 @@ cpy {z1}
|
||||
beq !+
|
||||
bcs {la1}
|
||||
!:
|
||||
//FRAGMENT isr_rom_sys_cx16_entry
|
||||
|
||||
//FRAGMENT vwuz1_neq_vbuc1_then_la1
|
||||
NO_SYNTHESIS
|
||||
//FRAGMENT vbuz1_lt_vbuc1_then_la1
|
||||
lda {z1}
|
||||
cmp #{c1}
|
||||
bcc {la1}
|
||||
//FRAGMENT isr_rom_sys_cx16_exit
|
||||
jmp $e034
|
||||
//FRAGMENT _deref_pwuc1=_deref_pwuz1
|
||||
ldy #0
|
||||
lda ({z1}),y
|
||||
sta {c1}
|
||||
iny
|
||||
lda ({z1}),y
|
||||
sta {c1}+1
|
||||
//FRAGMENT pbuz1=pbuz1_plus_vbuc1
|
||||
lda #{c1}
|
||||
clc
|
||||
adc {z1}
|
||||
sta {z1}
|
||||
bcc !+
|
||||
inc {z1}+1
|
||||
!:
|
||||
//FRAGMENT vwuz1=vwuz1_plus_vbuc1
|
||||
lda #{c1}
|
||||
clc
|
||||
adc {z1}
|
||||
sta {z1}
|
||||
bcc !+
|
||||
inc {z1}+1
|
||||
!:
|
||||
//FRAGMENT vwuz1_lt_vbuc1_then_la1
|
||||
lda {z1}+1
|
||||
bne !+
|
||||
lda {z1}
|
||||
cmp #{c1}
|
||||
bcc {la1}
|
||||
!:
|
||||
//FRAGMENT vwuz1=vwuz1_minus_vbuc1
|
||||
sec
|
||||
lda {z1}
|
||||
sbc #{c1}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
sbc #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT _deref_qprc1=pprc2
|
||||
lda #<{c2}
|
||||
sta {c1}
|
||||
lda #>{c2}
|
||||
sta {c1}+1
|
||||
//FRAGMENT _deref_pwuc1=_deref_pwuc1_plus_vbuc2
|
||||
NO_SYNTHESIS
|
||||
//FRAGMENT _deref_pwuc1=_deref_pwuc1_plus_vbsc2
|
||||
NO_SYNTHESIS
|
||||
//FRAGMENT _deref_pwuc1=_deref_pwuc1_plus_vwuc2
|
||||
lda #<{c2}
|
||||
clc
|
||||
adc {c1}
|
||||
sta {c1}
|
||||
lda #>{c2}
|
||||
adc {c1}+1
|
||||
sta {c1}+1
|
||||
//FRAGMENT pbuz1_neq_pbuz2_then_la1
|
||||
lda {z1}+1
|
||||
cmp {z2}+1
|
||||
bne {la1}
|
||||
lda {z1}
|
||||
cmp {z2}
|
||||
bne {la1}
|
||||
//FRAGMENT vbuaa_lt_vbuc1_then_la1
|
||||
cmp #{c1}
|
||||
bcc {la1}
|
||||
//FRAGMENT vbuxx_lt_vbuc1_then_la1
|
||||
cpx #{c1}
|
||||
bcc {la1}
|
||||
//FRAGMENT vbuz1=vbuz2_plus_1
|
||||
lda {z2}
|
||||
inc
|
||||
@ -3215,8 +3445,6 @@ lda #<{c1}
|
||||
sta {z1}
|
||||
lda #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT isr_rom_sys_cx16_entry
|
||||
|
||||
//FRAGMENT vwsz1=vwsz1_plus_vwsz2
|
||||
lda {z1}
|
||||
clc
|
||||
@ -3263,13 +3491,6 @@ ldy {c1}+1
|
||||
sty $ff
|
||||
ldy #0
|
||||
sta ($fe),y
|
||||
//FRAGMENT isr_rom_sys_cx16_exit
|
||||
jmp $e034
|
||||
//FRAGMENT _deref_qprc1=pprc2
|
||||
lda #<{c2}
|
||||
sta {c1}
|
||||
lda #>{c2}
|
||||
sta {c1}+1
|
||||
//FRAGMENT vbuz1=_deref_(_deref_qbuc1)
|
||||
ldy {c1}
|
||||
sty $fe
|
||||
@ -3826,48 +4047,6 @@ sta {z1}+2
|
||||
lda {z2}+3
|
||||
adc #0
|
||||
sta {z1}+3
|
||||
//FRAGMENT vwuz1=vwuz2_bor_vbuz3
|
||||
lda {z3}
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_ror_5
|
||||
lda {z2}+1
|
||||
lsr
|
||||
sta {z1}+1
|
||||
lda {z2}
|
||||
ror
|
||||
sta {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
//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 vbuz1=_byte_vwuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vwuz1=vwuz2_band_vwuc1
|
||||
lda {z2}
|
||||
and #<{c1}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
and #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_plus_vwuc1
|
||||
clc
|
||||
lda {z2}
|
||||
@ -3890,10 +4069,6 @@ sta {z1}+2
|
||||
lda {z1}+3
|
||||
adc #0
|
||||
sta {z1}+3
|
||||
//FRAGMENT vbuz1_lt_vbuc1_then_la1
|
||||
lda {z1}
|
||||
cmp #{c1}
|
||||
bcc {la1}
|
||||
//FRAGMENT vbuz1=_byte_vduz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
@ -3938,29 +4113,6 @@ sta {z1}+2
|
||||
lda {z1}+3
|
||||
sbc {z2}+3
|
||||
sta {z1}+3
|
||||
//FRAGMENT vwuz1=vwuz2_bor_vbuxx
|
||||
txa
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_bor_vbuyy
|
||||
tya
|
||||
ora {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vbuaa=_byte_vwuz1
|
||||
lda {z1}
|
||||
//FRAGMENT vbuxx=_byte_vwuz1
|
||||
lda {z1}
|
||||
tax
|
||||
//FRAGMENT vbuyy=_byte_vwuz1
|
||||
lda {z1}
|
||||
tay
|
||||
//FRAGMENT vbuaa_lt_vbuc1_then_la1
|
||||
cmp #{c1}
|
||||
bcc {la1}
|
||||
//FRAGMENT vbuaa=_byte_vduz1
|
||||
lda {z1}
|
||||
//FRAGMENT vbuxx=_byte_vduz1
|
||||
@ -4040,46 +4192,9 @@ lda {c1}+2,y
|
||||
sta {z1}+2
|
||||
lda {c1}+3,y
|
||||
sta {z1}+3
|
||||
//FRAGMENT vbuxx_lt_vbuc1_then_la1
|
||||
cpx #{c1}
|
||||
bcc {la1}
|
||||
//FRAGMENT vbuyy_ge_vbuz1_then_la1
|
||||
cpy {z1}
|
||||
bcs {la1}
|
||||
//FRAGMENT vwuz1=vwuz1_rol_8
|
||||
lda {z1}
|
||||
sta {z1}+1
|
||||
lda #0
|
||||
sta {z1}
|
||||
//FRAGMENT vwuz1=vwuz1_bor_vbuxx
|
||||
txa
|
||||
ora {z1}
|
||||
sta {z1}
|
||||
//FRAGMENT vwuz1=vwuz1_rol_3
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz1_band_vwuc1
|
||||
lda {z1}
|
||||
and #<{c1}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
and #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz1_ror_5
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
//FRAGMENT isr_rom_min_cx16_entry
|
||||
|
||||
//FRAGMENT vbuz1_ge_vbuc1_then_la1
|
||||
|
@ -0,0 +1,7 @@
|
||||
sec
|
||||
lda #<{c1}
|
||||
sbc {c2}
|
||||
sta {m1}
|
||||
lda #>{c1}
|
||||
sbc {c2}+1
|
||||
sta {m1}+1
|
@ -49,6 +49,11 @@ public class TestPrograms {
|
||||
assertError("problem-arraysize-decl.c", "BAR is not constant or is not defined");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testComplexBorderlinePacman() throws IOException, URISyntaxException {
|
||||
compileAndCompare("complex/borderline_pacman/pacman.c");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testComplexNew30YearsLowResolution() throws IOException, URISyntaxException {
|
||||
compileAndCompare("complex/new_30_years_low_resolution/new_30_years_low_resolution.c");
|
||||
|
18
src/test/kc/complex/borderline_pacman/byteboozer.c
Normal file
18
src/test/kc/complex/borderline_pacman/byteboozer.c
Normal file
@ -0,0 +1,18 @@
|
||||
// ByteBoozer decruncher
|
||||
// https://github.com/p-a/kickass-cruncher-plugins
|
||||
|
||||
// Decrunch crunched data using ByteBoozer
|
||||
// - crunched: Pointer to the start of the crunched data
|
||||
void byteboozer_decrunch(char* crunched) {
|
||||
asm {
|
||||
ldy crunched
|
||||
ldx crunched+1
|
||||
jsr b2.Decrunch
|
||||
}
|
||||
}
|
||||
|
||||
// The byteboozer decruncher
|
||||
export char BYTEBOOZER[] = kickasm(resource "byteboozer_decrunch.asm") {{
|
||||
.const B2_ZP_BASE = $fc
|
||||
#import "byteboozer_decrunch.asm"
|
||||
}};
|
6
src/test/kc/complex/borderline_pacman/byteboozer.h
Normal file
6
src/test/kc/complex/borderline_pacman/byteboozer.h
Normal file
@ -0,0 +1,6 @@
|
||||
// ByteBoozer decruncher
|
||||
// https://github.com/p-a/kickass-cruncher-plugins
|
||||
|
||||
// Decrunch crunched data using ByteBoozer
|
||||
// - crunched: Pointer to the start of the crunched data
|
||||
void byteboozer_decrunch(char* crunched);
|
182
src/test/kc/complex/borderline_pacman/byteboozer_decrunch.asm
Normal file
182
src/test/kc/complex/borderline_pacman/byteboozer_decrunch.asm
Normal file
@ -0,0 +1,182 @@
|
||||
// ByteBoozer Decruncher /HCL May.2003
|
||||
// B2 Decruncher December 2014
|
||||
|
||||
.importonce
|
||||
.filenamespace b2
|
||||
|
||||
// You must set .const B2_ZP_BASE prior the import of this file
|
||||
.if (B2_ZP_BASE > $ff) {
|
||||
.error "B2_ZP_BASE must be in zeropage. Was $" + toHexString(B2_ZP_BASE,4)
|
||||
}
|
||||
|
||||
|
||||
.label zp_base = B2_ZP_BASE
|
||||
.label bits = zp_base
|
||||
.label put = zp_base + 2
|
||||
|
||||
.macro @B2_DECRUNCH(addr) {
|
||||
ldy #<addr
|
||||
ldx #>addr
|
||||
jsr b2.Decrunch
|
||||
}
|
||||
|
||||
.macro GetNextBit() {
|
||||
asl bits
|
||||
bne DgEnd
|
||||
jsr GetNewBits
|
||||
DgEnd:
|
||||
}
|
||||
|
||||
.macro GetLen() {
|
||||
lda #1
|
||||
GlLoop:
|
||||
:GetNextBit()
|
||||
bcc GlEnd
|
||||
:GetNextBit()
|
||||
rol
|
||||
bpl GlLoop
|
||||
GlEnd:
|
||||
}
|
||||
|
||||
Decrunch:
|
||||
sty Get1+1
|
||||
sty Get2+1
|
||||
sty Get3+1
|
||||
stx Get1+2
|
||||
stx Get2+2
|
||||
stx Get3+2
|
||||
|
||||
ldx #0
|
||||
jsr GetNewBits
|
||||
sty put-1,x
|
||||
cpx #2
|
||||
bcc *-7
|
||||
lda #$80
|
||||
sta bits
|
||||
DLoop:
|
||||
:GetNextBit()
|
||||
bcs Match
|
||||
Literal:
|
||||
// Literal run.. get length.
|
||||
:GetLen()
|
||||
sta LLen+1
|
||||
|
||||
ldy #0
|
||||
LLoop:
|
||||
Get3:
|
||||
lda $feed,x
|
||||
inx
|
||||
bne *+5
|
||||
jsr GnbInc
|
||||
L1: sta (put),y
|
||||
iny
|
||||
LLen:
|
||||
cpy #0
|
||||
bne LLoop
|
||||
|
||||
clc
|
||||
tya
|
||||
adc put
|
||||
sta put
|
||||
bcc *+4
|
||||
inc put+1
|
||||
|
||||
iny
|
||||
beq DLoop
|
||||
|
||||
// Has to continue with a match..
|
||||
|
||||
Match:
|
||||
// Match.. get length.
|
||||
:GetLen()
|
||||
sta MLen+1
|
||||
|
||||
// Length 255 -> EOF
|
||||
cmp #$ff
|
||||
beq End
|
||||
|
||||
// Get num bits
|
||||
cmp #2
|
||||
lda #0
|
||||
rol
|
||||
:GetNextBit()
|
||||
rol
|
||||
:GetNextBit()
|
||||
rol
|
||||
tay
|
||||
lda Tab,y
|
||||
beq M8
|
||||
|
||||
// Get bits < 8
|
||||
M_1:
|
||||
:GetNextBit()
|
||||
rol
|
||||
bcs M_1
|
||||
bmi MShort
|
||||
M8:
|
||||
// Get byte
|
||||
eor #$ff
|
||||
tay
|
||||
Get2:
|
||||
lda $feed,x
|
||||
inx
|
||||
bne *+5
|
||||
jsr GnbInc
|
||||
jmp Mdone
|
||||
MShort:
|
||||
ldy #$ff
|
||||
Mdone:
|
||||
//clc
|
||||
adc put
|
||||
sta MLda+1
|
||||
tya
|
||||
adc put+1
|
||||
sta MLda+2
|
||||
|
||||
ldy #$ff
|
||||
MLoop:
|
||||
iny
|
||||
MLda:
|
||||
lda $beef,y
|
||||
sta (put),y
|
||||
MLen:
|
||||
cpy #0
|
||||
bne MLoop
|
||||
|
||||
//sec
|
||||
tya
|
||||
adc put
|
||||
sta put
|
||||
bcc *+4
|
||||
inc put+1
|
||||
|
||||
jmp DLoop
|
||||
|
||||
End:
|
||||
rts
|
||||
|
||||
GetNewBits:
|
||||
Get1:
|
||||
ldy $feed,x
|
||||
sty bits
|
||||
rol bits
|
||||
inx
|
||||
bne GnbEnd
|
||||
GnbInc:
|
||||
inc Get1+2
|
||||
inc Get2+2
|
||||
inc Get3+2
|
||||
GnbEnd:
|
||||
rts
|
||||
|
||||
Tab:
|
||||
// Short offsets
|
||||
.byte %11011111 // 3
|
||||
.byte %11111011 // 6
|
||||
.byte %00000000 // 8
|
||||
.byte %10000000 // 10
|
||||
// Long offsets
|
||||
.byte %11101111 // 4
|
||||
.byte %11111101 // 7
|
||||
.byte %10000000 // 10
|
||||
.byte %11110000 // 13
|
95
src/test/kc/complex/borderline_pacman/code-merger.c
Normal file
95
src/test/kc/complex/borderline_pacman/code-merger.c
Normal file
@ -0,0 +1,95 @@
|
||||
// Cycle-based code merger
|
||||
// Usable for merging unrolled cycle-exact logic code into an unrolled cycle-exact raster code.
|
||||
|
||||
|
||||
// Merge unrolled cycle-exact logic code into an unrolled cycle-exact raster code.
|
||||
// The logic-code is merged into the raster code ensuring cycle-exact execution. If a logic-code block does not fit within the remaining cycle-budget of a raster-slot then NOPs/BIT $EA are used to reach the cycle-budget.
|
||||
// If the logic-code runs out before the raster-code ends then the remaining raster-slots are filled with NOP/BIT$EA.
|
||||
// If the raster-code runs out before the logic-code then the rest of the logic-code is added at the end.
|
||||
// An RTS is added at the very end.
|
||||
//
|
||||
// Parameters:
|
||||
// - dest_code: Address where the merged code is placed
|
||||
// - raster_code: The unrolled raster code blocks with information about cycles to be filled. Format is decribed below.
|
||||
// - logic_code: The unrolled logic code with information about cycles spent. Format is decribed below.
|
||||
//
|
||||
// Format of unrolled raster code.
|
||||
// A number of blocks that have the following structure:
|
||||
// <nn>* 0xff <cc>
|
||||
// <nn>* : some bytes of code. any number of bytes are allowed.
|
||||
// 0xff : signals the end of a block.
|
||||
// <cc> : If <cc> is 00 then this is the last block of the unrolled raster code.
|
||||
// If <cc> is non-zero it means that <cc> cycles must be spent here (the cycle budget of the slot). The merger merges logic code into the slot and fills with NOP's to match the number of cycles needed.
|
||||
//
|
||||
// Format of unrolled logic code.
|
||||
// A number of blocks that has the following structure:
|
||||
// <cc> <nn>* 0xff
|
||||
// <cc> : If <cc> is 00 then this is the last block of the unrolled logic code. No more bytes are used.
|
||||
// If <cc> is non-zero it holds the number of cycles used by the block of code.
|
||||
// <nn>* : some bytes of code. any number of bytes are allowed. This code uses exactly the number of cycles specified by <cc>
|
||||
// 0xff : signals the end of a block.
|
||||
void merge_code(char* dest_code, char* raster_code, char * logic_code) {
|
||||
|
||||
// Cycle-count signalling the last block of the logic-code
|
||||
const char LOGIC_EXIT = 0x00;
|
||||
// Value signalling the end of a block of the logic-code
|
||||
const char LOGIC_END = 0xff;
|
||||
// Cycle-count signalling the last block of the raster-code
|
||||
const char RASTER_EXIT = 0x00;
|
||||
// Value signalling the end of a block of the raster-code
|
||||
const char RASTER_END = 0xff;
|
||||
|
||||
for(;;) {
|
||||
// Output raster code until meeting RASTER_END signalling the end of a block
|
||||
while(*raster_code!=RASTER_END) *dest_code++ = *raster_code++;
|
||||
// move past the end marker (RASTER_END)
|
||||
raster_code++;
|
||||
// Find the number of cycles
|
||||
char cycle_budget = *raster_code++;
|
||||
if(cycle_budget==RASTER_EXIT)
|
||||
// This is the end of the raster code.
|
||||
break;
|
||||
// Fit the cycle budget with logic-code
|
||||
while(cycle_budget>0) {
|
||||
// Find the number of logic code cycles
|
||||
char logic_cycles = *logic_code;
|
||||
// Check if logic code exists and fits the cycle-budget (ensure that it does not leave a single cycle in the budget)
|
||||
if(logic_cycles!=LOGIC_EXIT && (logic_cycles < cycle_budget-1 || logic_cycles==cycle_budget)) {
|
||||
// Skip the cycle count
|
||||
logic_code++;
|
||||
// Fill in the logic-code
|
||||
while(*logic_code!=LOGIC_END) *dest_code++ = *logic_code++;
|
||||
// move past the end marker (LOGIC_END)
|
||||
logic_code++;
|
||||
// Reduce the cycle budget
|
||||
cycle_budget -= logic_cycles;
|
||||
// Move to the next logic block
|
||||
continue;
|
||||
}
|
||||
// No more logic-code or not enough room in the budget
|
||||
break;
|
||||
}
|
||||
// Fit the cycle budget with NOPs
|
||||
while(cycle_budget>0) {
|
||||
if(cycle_budget==3) {
|
||||
*dest_code++ = 0x24; // BIT $EA
|
||||
*dest_code++ = 0xEA;
|
||||
cycle_budget -= 3;
|
||||
} else {
|
||||
*dest_code++ = 0xEA; // NOP
|
||||
cycle_budget -= 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
// No more raster code - fill in the rest of the logic code
|
||||
while(*logic_code!=LOGIC_EXIT) {
|
||||
// Skip the cycle count
|
||||
logic_code++;
|
||||
// Fill in the logic-code
|
||||
while(*logic_code!=LOGIC_END) *dest_code++ = *logic_code++;
|
||||
// move past the end marker (LOGIC_END)
|
||||
logic_code++;
|
||||
}
|
||||
// And add an RTS
|
||||
*dest_code++ = 0x60; // RTS
|
||||
}
|
BIN
src/test/kc/complex/borderline_pacman/pacman-2chn-simpler.prg
Normal file
BIN
src/test/kc/complex/borderline_pacman/pacman-2chn-simpler.prg
Normal file
Binary file not shown.
BIN
src/test/kc/complex/borderline_pacman/pacman-bobs.ase
Normal file
BIN
src/test/kc/complex/borderline_pacman/pacman-bobs.ase
Normal file
Binary file not shown.
63
src/test/kc/complex/borderline_pacman/pacman-bobs.c
Normal file
63
src/test/kc/complex/borderline_pacman/pacman-bobs.c
Normal file
@ -0,0 +1,63 @@
|
||||
// BOB data: One table per bob byte (left/right, mask/pixels = 4 tables). The index into the table is the bob_id + row*BOB_ROW_SIZE.
|
||||
char BOB_GRAPHICS_CRUNCHED[] = kickasm(resource "pacman-bobs.png", uses BOB_MASK_LEFT) {{
|
||||
.modify B2() {
|
||||
.pc = BOB_MASK_LEFT "BOB GRAPHICS TABLES"
|
||||
.var bobs_pic = LoadPicture("pacman-bobs.png", List().add($000000, $352879, $bfce72, $883932))
|
||||
// TABLE char BOB_MASK_LEFT[BOB_ROW_SIZE*6]
|
||||
.for(var row=0; row<6;row++) {
|
||||
.align BOB_ROW_SIZE
|
||||
.for(var pac=0; pac<9;pac++)
|
||||
.for(var scroll=0; scroll<4;scroll++)
|
||||
.byte bobs_pic.getMulticolorByte(0,scroll*6+row)
|
||||
.for(var ghost=0; ghost<8;ghost++)
|
||||
.for(var scroll=0; scroll<4;scroll++)
|
||||
.byte bobs_pic.getMulticolorByte(0,24+scroll*6+row)
|
||||
.for(var ghost=0; ghost<8;ghost++)
|
||||
.for(var scroll=0; scroll<4;scroll++)
|
||||
.byte bobs_pic.getMulticolorByte(0,48+scroll*6+row)
|
||||
}
|
||||
// TABLE char BOB_MASK_RIGT[BOB_ROW_SIZE*6]
|
||||
.for(var row=0; row<6;row++) {
|
||||
.align BOB_ROW_SIZE
|
||||
.for(var pac=0; pac<9;pac++)
|
||||
.for(var scroll=0; scroll<4;scroll++)
|
||||
.byte bobs_pic.getMulticolorByte(1,scroll*6+row)
|
||||
.for(var ghost=0; ghost<8;ghost++)
|
||||
.for(var scroll=0; scroll<4;scroll++)
|
||||
.byte bobs_pic.getMulticolorByte(1,24+scroll*6+row)
|
||||
.for(var blue=0; blue<8;blue++)
|
||||
.for(var scroll=0; scroll<4;scroll++)
|
||||
.byte bobs_pic.getMulticolorByte(1,48+scroll*6+row)
|
||||
}
|
||||
// TABLE char BOB_PIXEL_LEFT[BOB_ROW_SIZE*6]
|
||||
.for(var row=0; row<6;row++) {
|
||||
.align BOB_ROW_SIZE
|
||||
.for(var pac=0; pac<9;pac++)
|
||||
.for(var scroll=0; scroll<4;scroll++)
|
||||
.byte bobs_pic.getMulticolorByte(2+pac*2,scroll*6+row)
|
||||
.for(var ghost=0; ghost<8;ghost++)
|
||||
.for(var scroll=0; scroll<4;scroll++)
|
||||
.byte bobs_pic.getMulticolorByte(2+ghost*2,24+scroll*6+row)
|
||||
.for(var ghost=0; ghost<8;ghost++)
|
||||
.for(var scroll=0; scroll<4;scroll++)
|
||||
.byte bobs_pic.getMulticolorByte(2+ghost*2,48+scroll*6+row)
|
||||
}
|
||||
// TABLE char BOB_PIXEL_RIGT[BOB_ROW_SIZE*6]
|
||||
.for(var row=0; row<6;row++) {
|
||||
.align BOB_ROW_SIZE
|
||||
.for(var pac=0; pac<9;pac++)
|
||||
.for(var scroll=0; scroll<4;scroll++)
|
||||
.byte bobs_pic.getMulticolorByte(3+pac*2,scroll*6+row)
|
||||
.for(var ghost=0; ghost<8;ghost++)
|
||||
.for(var scroll=0; scroll<4;scroll++)
|
||||
.byte bobs_pic.getMulticolorByte(3+ghost*2,24+scroll*6+row)
|
||||
.for(var ghost=0; ghost<8;ghost++)
|
||||
.for(var scroll=0; scroll<4;scroll++)
|
||||
.byte bobs_pic.getMulticolorByte(3+ghost*2,48+scroll*6+row)
|
||||
}
|
||||
}
|
||||
}};
|
||||
|
||||
|
||||
|
||||
|
BIN
src/test/kc/complex/borderline_pacman/pacman-bobs.png
Normal file
BIN
src/test/kc/complex/borderline_pacman/pacman-bobs.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
src/test/kc/complex/borderline_pacman/pacman-gameover.aseprite
Normal file
BIN
src/test/kc/complex/borderline_pacman/pacman-gameover.aseprite
Normal file
Binary file not shown.
12
src/test/kc/complex/borderline_pacman/pacman-gameover.c
Normal file
12
src/test/kc/complex/borderline_pacman/pacman-gameover.c
Normal file
@ -0,0 +1,12 @@
|
||||
// Game Over graphics 25 xcol * 25 ypos bytes
|
||||
char GAMEOVER_GFX_CRUNCHED[] = kickasm(resource "pacman-gameover.png", uses GAMEOVER_GFX) {{
|
||||
.modify B2() {
|
||||
.pc = GAMEOVER_GFX "GAMEOVER GRAPHICS" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
|
||||
.var pic_gameover = LoadPicture("pacman-gameover.png", List().add($000000, $352879, $bfce72, $883932))
|
||||
.for(var xcol=0; xcol<25; xcol++) {
|
||||
.for(var ypos=0; ypos<25; ypos++) {
|
||||
.byte pic_gameover.getMulticolorByte(xcol,ypos)
|
||||
}
|
||||
}
|
||||
}
|
||||
}};
|
BIN
src/test/kc/complex/borderline_pacman/pacman-gameover.png
Normal file
BIN
src/test/kc/complex/borderline_pacman/pacman-gameover.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 978 B |
367
src/test/kc/complex/borderline_pacman/pacman-logic-code.c
Normal file
367
src/test/kc/complex/borderline_pacman/pacman-logic-code.c
Normal file
@ -0,0 +1,367 @@
|
||||
|
||||
// Renders the BOBs at the given positions
|
||||
// The bob logic code will be merged with raster code using code-merger.c
|
||||
// First restores the canvas from previously rendered bobs, and then renders the bobs at the given positions.
|
||||
// BOBs are 16px*6px graphics (2 x-columns * 6px) with masks and pixels
|
||||
// Uses the bobs_xcol, bobs_yfine, bobs_bob_id and bob_restore for data about the bobs
|
||||
// Implemented in inline kick assembler
|
||||
|
||||
char LOGIC_CODE_CRUNCHED[] = kickasm(uses bobs_xcol, uses bobs_yfine, uses bobs_bob_id, uses bobs_restore, uses RENDER_INDEX, uses RENDER_OFFSET_CANVAS_LO, uses RENDER_OFFSET_CANVAS_HI, uses RENDER_OFFSET_YPOS_INC, uses SIZE_BOB_RESTORE, uses BOB_ROW_SIZE, uses NUM_BOBS, uses left_render_index_xcol, uses left_canvas, uses left_ypos_inc_offset, uses rigt_render_index_xcol, uses rigt_canvas, uses rigt_ypos_inc_offset, uses BOB_MASK_LEFT, uses BOB_PIXEL_LEFT, uses BOB_MASK_RIGT, uses BOB_PIXEL_RIGT, uses canvas_base_hi, uses bobs_restore_base, uses RENDER_YPOS_INC, uses logic_tile_ptr, uses logic_tile_xcol, uses logic_tile_yfine, uses logic_tile_left_idx, uses logic_tile_right_idx ) {{
|
||||
.macro LOGIC_BEGIN(cycles) {
|
||||
.byte cycles
|
||||
}
|
||||
.macro LOGIC_END() {
|
||||
.byte $ff
|
||||
}
|
||||
.modify B2() {
|
||||
.pc = LOGIC_CODE_UNMERGED "LOGIC CODE UNMERGED"
|
||||
LOGIC_BEGIN(2)
|
||||
clc
|
||||
LOGIC_END()
|
||||
|
||||
// ******************************************
|
||||
// Restores the canvas under the rendered bobs
|
||||
// ******************************************
|
||||
|
||||
.for(var bob=NUM_BOBS-1;bob>=0; bob--) {
|
||||
//LOGIC_BEGIN(6)
|
||||
//inc $d021
|
||||
//LOGIC_END()
|
||||
|
||||
LOGIC_BEGIN(3)
|
||||
ldx bobs_restore_base
|
||||
LOGIC_END()
|
||||
// char * volatile left_canvas = *((char**)&bob_restore[0]);
|
||||
LOGIC_BEGIN(7)
|
||||
lda bobs_restore+SIZE_BOB_RESTORE*bob+0,x
|
||||
sta.z left_canvas
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(7)
|
||||
lda bobs_restore+SIZE_BOB_RESTORE*bob+1,x
|
||||
sta.z left_canvas+1
|
||||
LOGIC_END()
|
||||
// char left_ypos_inc_offset = bob_restore[2];
|
||||
LOGIC_BEGIN(7)
|
||||
lda bobs_restore+SIZE_BOB_RESTORE*bob+2,x
|
||||
sta.z left_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
// char * volatile rigt_canvas = *((char**)&bob_restore[3]);
|
||||
LOGIC_BEGIN(7)
|
||||
lda bobs_restore+SIZE_BOB_RESTORE*bob+3,x
|
||||
sta.z rigt_canvas
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(7)
|
||||
lda bobs_restore+SIZE_BOB_RESTORE*bob+4,x
|
||||
sta.z rigt_canvas+1
|
||||
LOGIC_END()
|
||||
// char rigt_ypos_inc_offset = bob_restore[5];
|
||||
LOGIC_BEGIN(7)
|
||||
lda bobs_restore+SIZE_BOB_RESTORE*bob+5,x
|
||||
sta.z rigt_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
|
||||
// Restore Bob Rows
|
||||
LOGIC_BEGIN(2)
|
||||
ldy #0
|
||||
LOGIC_END()
|
||||
.for(var row=0;row<6;row++) {
|
||||
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
|
||||
LOGIC_BEGIN(3)
|
||||
ldx.z left_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(5)
|
||||
inc.z left_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(18)
|
||||
lda RENDER_YPOS_INC,x
|
||||
adc.z left_canvas
|
||||
sta.z left_canvas
|
||||
lda.z left_canvas+1
|
||||
adc #0
|
||||
sta.z left_canvas+1
|
||||
LOGIC_END()
|
||||
//rigt_canvas += RENDER_YPOS_INC[rigt_ypos_inc_offset++];
|
||||
LOGIC_BEGIN(3)
|
||||
ldx.z rigt_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(5)
|
||||
inc.z rigt_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(18)
|
||||
lda RENDER_YPOS_INC,x
|
||||
adc.z rigt_canvas
|
||||
sta.z rigt_canvas
|
||||
lda.z rigt_canvas+1
|
||||
adc #0
|
||||
sta.z rigt_canvas+1
|
||||
LOGIC_END()
|
||||
|
||||
LOGIC_BEGIN(3)
|
||||
ldx bobs_restore_base
|
||||
LOGIC_END()
|
||||
// *left_canvas = bob_restore[6] ;
|
||||
LOGIC_BEGIN(10)
|
||||
lda bobs_restore+SIZE_BOB_RESTORE*bob+6+row,x
|
||||
sta (left_canvas),y
|
||||
LOGIC_END()
|
||||
// *rigt_canvas = bob_restore[7];
|
||||
LOGIC_BEGIN(10)
|
||||
lda bobs_restore+SIZE_BOB_RESTORE*bob+12+row,x
|
||||
sta (rigt_canvas),y
|
||||
LOGIC_END()
|
||||
}
|
||||
}
|
||||
|
||||
// ******************************************
|
||||
// Render two tiles on the canvas
|
||||
// ******************************************
|
||||
|
||||
// y==0 from bob restore
|
||||
LOGIC_BEGIN(12)
|
||||
// char tile_left_idx = 4 * logic_tile_ptr[0];
|
||||
lda (logic_tile_ptr),y
|
||||
asl
|
||||
asl
|
||||
sta logic_tile_left_idx
|
||||
LOGIC_END()
|
||||
// char logic_tile_right_idx = 4 * logic_tile_ptr[1];
|
||||
LOGIC_BEGIN(2)
|
||||
iny
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(12)
|
||||
lda (logic_tile_ptr),y
|
||||
asl
|
||||
asl
|
||||
sta logic_tile_right_idx
|
||||
LOGIC_END()
|
||||
// char * render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, ytile*2 };
|
||||
LOGIC_BEGIN(8)
|
||||
lda #>RENDER_INDEX
|
||||
adc logic_tile_xcol
|
||||
sta.z left_render_index_xcol+1
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(6)
|
||||
lda logic_tile_yfine
|
||||
sta.z left_render_index_xcol
|
||||
LOGIC_END()
|
||||
|
||||
// unsigned int canvas_offset = {render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] };
|
||||
// char * left_canvas = canvas_base_hi*$100 + canvas_offset;
|
||||
LOGIC_BEGIN(2)
|
||||
ldy #RENDER_OFFSET_CANVAS_LO
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(8)
|
||||
lda (left_render_index_xcol),y
|
||||
sta.z left_canvas
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(2)
|
||||
ldy #RENDER_OFFSET_CANVAS_HI
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(11)
|
||||
lda (left_render_index_xcol),y
|
||||
adc canvas_base_hi
|
||||
sta.z left_canvas+1
|
||||
LOGIC_END()
|
||||
// char left_ypos_inc_offset = render_index_xcol[RENDER_OFFSET_YPOS_INC];
|
||||
LOGIC_BEGIN(2)
|
||||
ldy #RENDER_OFFSET_YPOS_INC
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(8)
|
||||
lda (left_render_index_xcol),y
|
||||
sta.z left_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
|
||||
// Render Tile Rows
|
||||
LOGIC_BEGIN(2)
|
||||
ldy #0
|
||||
LOGIC_END()
|
||||
.for(var row=0;row<4;row++) {
|
||||
|
||||
// *left_canvas = tile_left_pixels[y] | tile_right_pixels[y];
|
||||
LOGIC_BEGIN(3)
|
||||
ldx logic_tile_left_idx
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(17)
|
||||
lda TILES_LEFT+row,x
|
||||
ldx logic_tile_right_idx
|
||||
ora TILES_RIGHT+row,x
|
||||
sta (left_canvas),y
|
||||
LOGIC_END()
|
||||
|
||||
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
|
||||
LOGIC_BEGIN(3)
|
||||
ldx.z left_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(18)
|
||||
lda RENDER_YPOS_INC,x
|
||||
adc.z left_canvas
|
||||
sta.z left_canvas
|
||||
lda.z left_canvas+1
|
||||
adc #0
|
||||
sta.z left_canvas+1
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(5)
|
||||
inc.z left_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
}
|
||||
|
||||
// ******************************************
|
||||
// Renders the BOBs at the given positions
|
||||
// ******************************************
|
||||
|
||||
.for(var bob=0;bob<NUM_BOBS; bob++) {
|
||||
// char * left_render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, yfine };
|
||||
// char * rigt_render_index_xcol = (char*){ (>RENDER_INDEX) + xcol+1, yfine };
|
||||
|
||||
//LOGIC_BEGIN(6)
|
||||
//inc $d021
|
||||
//LOGIC_END()
|
||||
|
||||
LOGIC_BEGIN(14)
|
||||
lda #>RENDER_INDEX
|
||||
adc bobs_xcol+bob
|
||||
sta.z left_render_index_xcol+1
|
||||
adc #1
|
||||
sta.z rigt_render_index_xcol+1
|
||||
LOGIC_END()
|
||||
|
||||
LOGIC_BEGIN(10)
|
||||
lda bobs_yfine+bob
|
||||
sta.z left_render_index_xcol
|
||||
sta.z rigt_render_index_xcol
|
||||
LOGIC_END()
|
||||
|
||||
// char * left_canvas = (char*){ left_render_index_xcol[85], left_render_index_xcol[0] };
|
||||
// bob_restore[0] = <left_canvas; bob_restore[1] = >left_canvas;
|
||||
// char * rigt_canvas = (char*){ rigt_render_index_xcol[85], rigt_render_index_xcol[0] };
|
||||
// bob_restore[3] = <rigt_canvas; bob_restore[4] = >rigt_canvas;
|
||||
LOGIC_BEGIN(3)
|
||||
ldx bobs_restore_base
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(2)
|
||||
ldy #RENDER_OFFSET_CANVAS_LO
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(13)
|
||||
lda (left_render_index_xcol),y
|
||||
sta.z left_canvas
|
||||
sta bobs_restore+SIZE_BOB_RESTORE*bob+0,x
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(13)
|
||||
lda (rigt_render_index_xcol),y
|
||||
sta.z rigt_canvas
|
||||
sta bobs_restore+SIZE_BOB_RESTORE*bob+3,x
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(2)
|
||||
ldy #RENDER_OFFSET_CANVAS_HI
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(16)
|
||||
lda (left_render_index_xcol),y
|
||||
adc canvas_base_hi
|
||||
sta.z left_canvas+1
|
||||
sta bobs_restore+SIZE_BOB_RESTORE*bob+1,x
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(16)
|
||||
lda (rigt_render_index_xcol),y
|
||||
adc canvas_base_hi
|
||||
sta.z rigt_canvas+1
|
||||
sta bobs_restore+SIZE_BOB_RESTORE*bob+4,x
|
||||
LOGIC_END()
|
||||
|
||||
// char left_ypos_inc_offset = left_render_index_xcol[170];
|
||||
// bob_restore[2] = left_ypos_inc_offset;
|
||||
// char rigt_ypos_inc_offset = rigt_render_index_xcol[170];
|
||||
// bob_restore[5] = rigt_ypos_inc_offset;
|
||||
|
||||
LOGIC_BEGIN(2)
|
||||
ldy #RENDER_OFFSET_YPOS_INC
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(13)
|
||||
lda (left_render_index_xcol),y
|
||||
sta.z left_ypos_inc_offset
|
||||
sta bobs_restore+SIZE_BOB_RESTORE*bob+2,x
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(13)
|
||||
lda (rigt_render_index_xcol),y
|
||||
sta.z rigt_ypos_inc_offset
|
||||
sta bobs_restore+SIZE_BOB_RESTORE*bob+5,x
|
||||
LOGIC_END()
|
||||
|
||||
// Render Bob Rows
|
||||
LOGIC_BEGIN(2)
|
||||
ldy #0
|
||||
LOGIC_END()
|
||||
.for(var row=0;row<6;row++) {
|
||||
|
||||
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
|
||||
LOGIC_BEGIN(3)
|
||||
ldx.z left_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(18)
|
||||
lda RENDER_YPOS_INC,x
|
||||
adc.z left_canvas
|
||||
sta.z left_canvas
|
||||
lda.z left_canvas+1
|
||||
adc #0
|
||||
sta.z left_canvas+1
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(5)
|
||||
inc.z left_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
//rigt_canvas += RENDER_YPOS_INC[rigt_ypos_inc_offset++];
|
||||
LOGIC_BEGIN(3)
|
||||
ldx.z rigt_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(18)
|
||||
lda RENDER_YPOS_INC,x
|
||||
adc.z rigt_canvas
|
||||
sta.z rigt_canvas
|
||||
lda.z rigt_canvas+1
|
||||
adc #0
|
||||
sta.z rigt_canvas+1
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(5)
|
||||
inc.z rigt_ypos_inc_offset
|
||||
LOGIC_END()
|
||||
|
||||
// bob_restore[6] = *left_canvas;
|
||||
// *left_canvas = *left_canvas & BOB_MASK_LEFT_0[bob_id] | BOB_PIXEL_LEFT_0[bob_id];
|
||||
LOGIC_BEGIN(3)
|
||||
ldx bobs_restore_base
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(10)
|
||||
lda (left_canvas),y
|
||||
sta bobs_restore+SIZE_BOB_RESTORE*bob+6+row,x
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(10)
|
||||
lda (rigt_canvas),y
|
||||
sta bobs_restore+SIZE_BOB_RESTORE*bob+12+row,x
|
||||
LOGIC_END()
|
||||
|
||||
LOGIC_BEGIN(4)
|
||||
ldx bobs_bob_id+bob
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(19)
|
||||
lda (left_canvas),y
|
||||
and BOB_MASK_LEFT+row*BOB_ROW_SIZE,x
|
||||
ora BOB_PIXEL_LEFT+row*BOB_ROW_SIZE,x
|
||||
sta (left_canvas),y
|
||||
LOGIC_END()
|
||||
// bob_restore[7] = *rigt_canvas;
|
||||
// *rigt_canvas = *rigt_canvas & BOB_MASK_RIGT_0[bob_id] | BOB_PIXEL_RIGT_0[bob_id];
|
||||
LOGIC_BEGIN(19)
|
||||
lda (rigt_canvas),y
|
||||
and BOB_MASK_RIGT+row*BOB_ROW_SIZE,x
|
||||
ora BOB_PIXEL_RIGT+row*BOB_ROW_SIZE,x
|
||||
sta (rigt_canvas),y
|
||||
LOGIC_END()
|
||||
}
|
||||
}
|
||||
//LOGIC_BEGIN(6)
|
||||
//lda #0
|
||||
//sta $d021
|
||||
//LOGIC_END()
|
||||
|
||||
LOGIC_BEGIN(0) // end of logic code
|
||||
}
|
||||
}};
|
||||
|
66
src/test/kc/complex/borderline_pacman/pacman-logic-data.c
Normal file
66
src/test/kc/complex/borderline_pacman/pacman-logic-data.c
Normal file
@ -0,0 +1,66 @@
|
||||
// The number of bobs rendered
|
||||
const char NUM_BOBS = 5;
|
||||
// The size of the BOB restore structure
|
||||
const char SIZE_BOB_RESTORE = 18;
|
||||
|
||||
// The BOB x column position (0-24) (a column is 8 pixels)
|
||||
char bobs_xcol[NUM_BOBS] = { 10, 10, 10, 10, 10, };
|
||||
// The BOB y fine position (0-99). The y-position is a line on the screen. Since every second line is black each ypos represents a 2 pixel distance.
|
||||
char bobs_yfine[NUM_BOBS] = { 45, 45, 45, 45, 45, };
|
||||
// The BOB ID in the BOB data tables
|
||||
char bobs_bob_id[NUM_BOBS] = { 0, 0, 0, 0, 0, };
|
||||
// The BOB restore data: 18 bytes per BOB. Doubled for double-buffering.
|
||||
// char * left_canvas;
|
||||
// char left_ypos_inc_offset;
|
||||
// char * right_canvas;
|
||||
// char right_ypos_inc_offset;
|
||||
// char[12] restore_pixels;
|
||||
__align(0x100) char bobs_restore[NUM_BOBS*SIZE_BOB_RESTORE*2];
|
||||
|
||||
// Pointer to the tile to render in the logic code
|
||||
volatile char* logic_tile_ptr;
|
||||
// The x-column of the tile to render
|
||||
volatile char logic_tile_xcol;
|
||||
// The y-fine of the tile to render
|
||||
volatile char logic_tile_yfine;
|
||||
// The ID*4 of the left tile to render
|
||||
volatile char logic_tile_left_idx;
|
||||
// The ID*4 of the right tile to render
|
||||
volatile char logic_tile_right_idx;
|
||||
|
||||
// Initialize bobs_restore with data to prevent crash on the first call
|
||||
void init_bobs_restore() {
|
||||
char * CANVAS_HIDDEN = 0xea00;
|
||||
char * bob_restore = bobs_restore;
|
||||
for(char bob=0;bob<NUM_BOBS*2;bob++) {
|
||||
for(char i=0;i<SIZE_BOB_RESTORE;i++)
|
||||
bob_restore[i] = 0;
|
||||
bob_restore[0] = <CANVAS_HIDDEN;
|
||||
bob_restore[1] = >CANVAS_HIDDEN;
|
||||
bob_restore[3] = <CANVAS_HIDDEN;
|
||||
bob_restore[4] = >CANVAS_HIDDEN;
|
||||
bob_restore += SIZE_BOB_RESTORE;
|
||||
}
|
||||
|
||||
// Also set the logic tile to something sane
|
||||
logic_tile_ptr = LEVEL_TILES + 64*18 + 12 ;
|
||||
logic_tile_xcol = 12;
|
||||
logic_tile_yfine = 35;
|
||||
}
|
||||
|
||||
// Variables used by the logic-code renderer and restorer
|
||||
char * volatile left_render_index_xcol;
|
||||
char * volatile left_canvas;
|
||||
volatile char left_ypos_inc_offset;
|
||||
char * volatile rigt_render_index_xcol;
|
||||
char * volatile rigt_canvas;
|
||||
volatile char rigt_ypos_inc_offset;
|
||||
// The high-byte of the start-address of the canvas currently being rendered to
|
||||
volatile char canvas_base_hi;
|
||||
// The offset used for bobs_restore - used to achieve double buffering
|
||||
volatile char bobs_restore_base;
|
||||
|
||||
// Empty logic-code to be merged into the raster-code for testing
|
||||
char LOGIC_CODE_EMPTY[] = kickasm {{
|
||||
.byte 00 // end of logic code
|
||||
}};
|
121
src/test/kc/complex/borderline_pacman/pacman-raster-code.c
Normal file
121
src/test/kc/complex/borderline_pacman/pacman-raster-code.c
Normal file
@ -0,0 +1,121 @@
|
||||
// Raster-code for displaying 9 sprites on the entire screen - with open side borders
|
||||
// The uncrunched code will be merged with logic code using code-merger.c
|
||||
// The unmerged raster-code is identical for both buffers!
|
||||
|
||||
char RASTER_CODE_CRUNCHED[] = kickasm(uses VICII_CONTROL2, uses BORDER_COLOR, uses RASTER_CODE_UNMERGED, uses side_sprites_color, uses side_sprites_mc, uses bottom_sprites_color, uses bottom_sprites_mc) {{
|
||||
.macro RASTER_CYCLES(cycles) {
|
||||
.byte $ff, cycles
|
||||
}
|
||||
.modify B2() {
|
||||
.pc = RASTER_CODE_UNMERGED "RASTER CODE UNMERGED"
|
||||
RASTER_CYCLES(29)
|
||||
// Line 7 cycle 44
|
||||
// Raster Line
|
||||
.var raster_line = 7
|
||||
// Line in the sprite
|
||||
.var sprite_line = 20
|
||||
// Current sprite ypos
|
||||
.var sprite_ypos = 7
|
||||
// Current sprite screen (graphics bank not important since sprite layout in the banks is identical)
|
||||
.var sprite_screen = SCREENS_1
|
||||
.var available_cycles = 0;
|
||||
.for(var i=0;i<293;i++) {
|
||||
// Line cycle count
|
||||
.var line_cycles = 46
|
||||
.if(raster_line>=70 && raster_line<238) {
|
||||
// Only 2 sprites on these lines - so more cycles available
|
||||
.eval line_cycles = 58
|
||||
}
|
||||
// Create 9th sprite by moving sprite 0
|
||||
.if(mod(raster_line,2)==0) {
|
||||
lda #$6f
|
||||
sta $d000
|
||||
} else {
|
||||
lda #$e7
|
||||
sta $d000
|
||||
}
|
||||
.eval line_cycles -= 6;
|
||||
lda #$8
|
||||
// Cycle 50. LSR abs is a 6 cycle RWM instruction.
|
||||
lsr VICII_CONTROL2
|
||||
sta VICII_CONTROL2
|
||||
.eval line_cycles -= 12;
|
||||
.eval raster_line++
|
||||
.eval sprite_line++
|
||||
.if(sprite_line==21) {
|
||||
.eval sprite_line = 0
|
||||
.eval sprite_ypos += 21
|
||||
}
|
||||
// Set sprite single-color mode on splash
|
||||
.if(raster_line==53) {
|
||||
lda side_sprites_mc
|
||||
sta $d01c
|
||||
lda side_sprites_color
|
||||
sta $d027
|
||||
sta $d028
|
||||
.eval line_cycles -= 18
|
||||
}
|
||||
// Set sprite multi-color mode on splash
|
||||
.if(raster_line==248) {
|
||||
lda bottom_sprites_mc
|
||||
sta $d01c
|
||||
lda bottom_sprites_color
|
||||
sta $d027
|
||||
sta $d028
|
||||
.eval line_cycles -= 18
|
||||
//.print "raster:"+raster_line+" multi-color"
|
||||
}
|
||||
// Open top border
|
||||
.if(raster_line==55) {
|
||||
lda #VICII_RSEL|VICII_ECM|VICII_BMM|7
|
||||
sta VICII_CONTROL1
|
||||
.eval line_cycles -= 6
|
||||
//.print "raster:"+raster_line+" top border rsel=1"
|
||||
}
|
||||
// Open bottom border
|
||||
.if(raster_line==250) {
|
||||
lda #VICII_ECM|VICII_BMM|7 // DEN=0, RSEL=0
|
||||
sta VICII_CONTROL1
|
||||
.eval line_cycles -= 6
|
||||
//.print "raster:"+raster_line+" bottom border rsel=0"
|
||||
}
|
||||
// Move sprites down
|
||||
.if(sprite_line>=2 && sprite_line<=9) {
|
||||
.if(sprite_ypos<300) {
|
||||
.var sprite_id = sprite_line-2
|
||||
.if(sprite_id==0 || sprite_id==1 || sprite_ypos<=55 || sprite_ypos>=(246-21)) {
|
||||
lda #sprite_ypos
|
||||
sta SPRITES_YPOS+2*sprite_id
|
||||
.eval line_cycles -= 6;
|
||||
//.print "raster:"+raster_line+" sprite:"+sprite_id+" ypos:"+sprite_ypos
|
||||
}
|
||||
}
|
||||
}
|
||||
// Change sprite data
|
||||
.if(sprite_line==20) {
|
||||
.eval sprite_screen += $400
|
||||
lda #sprite_screen/$40
|
||||
sta VICII_MEMORY
|
||||
.eval line_cycles -= 6
|
||||
//.print "raster:"+raster_line+" sprite data $"+toHexString(sprite_screen)
|
||||
}
|
||||
// Spend the rest of the cycles on NOPS
|
||||
.if(line_cycles<0 || line_cycles==1) .error "Too many cycles spent on line "+raster_line
|
||||
.if(line_cycles>0) {
|
||||
//.print "raster:"+raster_line+" cycles $"+toHexString(line_cycles)
|
||||
RASTER_CYCLES(line_cycles)
|
||||
.eval line_cycles -= line_cycles
|
||||
.eval available_cycles += line_cycles
|
||||
}
|
||||
}
|
||||
//.print "Available cycles: "+available_cycles
|
||||
|
||||
lda #$6f
|
||||
sta $d000
|
||||
lda #$8
|
||||
// Cycle 50. LSR abs is a 6 cycle RWM instruction.
|
||||
lsr VICII_CONTROL2
|
||||
sta VICII_CONTROL2
|
||||
RASTER_CYCLES(00) // End of raster code
|
||||
}
|
||||
}};
|
150
src/test/kc/complex/borderline_pacman/pacman-render.c
Normal file
150
src/test/kc/complex/borderline_pacman/pacman-render.c
Normal file
@ -0,0 +1,150 @@
|
||||
// Address of the first pixel each x column
|
||||
char* RENDER_XCOLS[26] = {
|
||||
0x0000, 0x0001, 0x0002,
|
||||
0x0400, 0x0401, 0x0402,
|
||||
0x0800, 0x0801, 0x0802,
|
||||
0x0c00, 0x0c01, 0x0c02,
|
||||
0x1000, 0x1001, 0x1002,
|
||||
0x1400, 0x1401, 0x1402,
|
||||
0x1800, 0x1801, 0x1802,
|
||||
0x1c00, 0x1c01, 0x1c02,
|
||||
0x0000, 0x0000
|
||||
};
|
||||
|
||||
// Offset for each y-position from the first pixel of an X column
|
||||
unsigned int RENDER_YPOS[149] = {
|
||||
0x000+0, 0x000+0,
|
||||
0x000+0, 0x000+6, 0x000+12, 0x000+18, 0x000+24, 0x000+30, 0x000+36, 0x000+42, 0x000+48, 0x000+54, 0x000+60,
|
||||
0x040+3, 0x040+9, 0x040+15, 0x040+21, 0x040+27, 0x040+33, 0x040+39, 0x040+45, 0x040+51, 0x040+57,
|
||||
0x080+0, 0x080+6, 0x080+12, 0x080+18, 0x080+24, 0x080+30, 0x080+36, 0x080+42, 0x080+48, 0x080+54, 0x080+60,
|
||||
0x0c0+3, 0x0c0+9, 0x0c0+15, 0x0c0+21, 0x0c0+27, 0x0c0+33, 0x0c0+39, 0x0c0+45, 0x0c0+51, 0x0c0+57,
|
||||
0x100+0, 0x100+6, 0x100+12, 0x100+18, 0x100+24, 0x100+30, 0x100+36, 0x100+42, 0x100+48, 0x100+54, 0x100+60,
|
||||
0x140+3, 0x140+9, 0x140+15, 0x140+21, 0x140+27, 0x140+33, 0x140+39, 0x140+45, 0x140+51, 0x140+57,
|
||||
0x180+0, 0x180+6, 0x180+12, 0x180+18, 0x180+24, 0x180+30, 0x180+36, 0x180+42, 0x180+48, 0x180+54, 0x180+60,
|
||||
0x1c0+3, 0x1c0+9, 0x1c0+15, 0x1c0+21, 0x1c0+27, 0x1c0+33, 0x1c0+39, 0x1c0+45, 0x1c0+51, 0x1c0+57,
|
||||
0x200+0, 0x200+6, 0x200+12, 0x200+18, 0x200+24, 0x200+30, 0x200+36, 0x200+42, 0x200+48, 0x200+54, 0x200+60,
|
||||
0x240+3, 0x240+9, 0x240+15, 0x240+21, 0x240+27, 0x240+33, 0x240+39, 0x240+45, 0x240+51, 0x240+57,
|
||||
0x280+0, 0x280+6, 0x280+12, 0x280+18, 0x280+24, 0x280+30, 0x280+36, 0x280+42, 0x280+48, 0x280+54, 0x280+60,
|
||||
0x2c0+3, 0x2c0+9, 0x2c0+15, 0x2c0+21, 0x2c0+27, 0x2c0+33, 0x2c0+39, 0x2c0+45, 0x2c0+51, 0x2c0+57,
|
||||
0x300+0, 0x300+6, 0x300+12, 0x300+18, 0x300+24, 0x300+30, 0x300+36, 0x300+42, 0x300+48, 0x300+54, 0x300+60,
|
||||
0x340+3, 0x340+9, 0x340+15, 0x340+21, 0x340+27, 0x340+33, 0x340+39, 0x340+45, 0x340+51, 0x340+57,
|
||||
};
|
||||
|
||||
// Offset for each y-position from the first pixel of an X column in sprite#9
|
||||
unsigned int RENDER_YPOS_9TH[149] = {
|
||||
0x000+3, 0x000+3,
|
||||
0x000+3, 0x000+9, 0x000+15, 0x000+21, 0x000+27, 0x000+33, 0x000+39, 0x000+45, 0x000+51, 0x000+57,
|
||||
0x040+0, 0x040+6, 0x040+12, 0x040+18, 0x040+24, 0x040+30, 0x040+36, 0x040+42, 0x040+48, 0x040+54, 0x040+60,
|
||||
0x080+3, 0x080+9, 0x080+15, 0x080+21, 0x080+27, 0x080+33, 0x080+39, 0x080+45, 0x080+51, 0x080+57,
|
||||
0x0c0+0, 0x0c0+6, 0x0c0+12, 0x0c0+18, 0x0c0+24, 0x0c0+30, 0x0c0+36, 0x0c0+42, 0x0c0+48, 0x0c0+54, 0x0c0+60,
|
||||
0x100+3, 0x100+9, 0x100+15, 0x100+21, 0x100+27, 0x100+33, 0x100+39, 0x100+45, 0x100+51, 0x100+57,
|
||||
0x140+0, 0x140+6, 0x140+12, 0x140+18, 0x140+24, 0x140+30, 0x140+36, 0x140+42, 0x140+48, 0x140+54, 0x140+60,
|
||||
0x180+3, 0x180+9, 0x180+15, 0x180+21, 0x180+27, 0x180+33, 0x180+39, 0x180+45, 0x180+51, 0x180+57,
|
||||
0x1c0+0, 0x1c0+6, 0x1c0+12, 0x1c0+18, 0x1c0+24, 0x1c0+30, 0x1c0+36, 0x1c0+42, 0x1c0+48, 0x1c0+54, 0x1c0+60,
|
||||
0x200+3, 0x200+9, 0x200+15, 0x200+21, 0x200+27, 0x200+33, 0x200+39, 0x200+45, 0x200+51, 0x200+57,
|
||||
0x240+0, 0x240+6, 0x240+12, 0x240+18, 0x240+24, 0x240+30, 0x240+36, 0x240+42, 0x240+48, 0x240+54, 0x240+60,
|
||||
0x280+3, 0x280+9, 0x280+15, 0x280+21, 0x280+27, 0x280+33, 0x280+39, 0x280+45, 0x280+51, 0x280+57,
|
||||
0x2c0+0, 0x2c0+6, 0x2c0+12, 0x2c0+18, 0x2c0+24, 0x2c0+30, 0x2c0+36, 0x2c0+42, 0x2c0+48, 0x2c0+54, 0x2c0+60,
|
||||
0x300+3, 0x300+9, 0x300+15, 0x300+21, 0x300+27, 0x300+33, 0x300+39, 0x300+45, 0x300+51, 0x300+57,
|
||||
0x340+0, 0x340+6, 0x340+12, 0x340+18, 0x340+24, 0x340+30, 0x340+36, 0x340+42, 0x340+48, 0x340+54, 0x340+60,
|
||||
};
|
||||
|
||||
// Increment for each y-position from the first pixel of an X column
|
||||
__align(0x20) char RENDER_YPOS_INC[160] = {
|
||||
0, 0,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
||||
};
|
||||
|
||||
const char RENDER_OFFSET_CANVAS_LO = 0x00;
|
||||
const char RENDER_OFFSET_CANVAS_HI = 0x50;
|
||||
const char RENDER_OFFSET_YPOS_INC = 0xa0;
|
||||
|
||||
// Initialize the RENDER_INDEX table from sub-tables
|
||||
void init_render_index() {
|
||||
char* render_index = RENDER_INDEX;
|
||||
for(char x_col=0;x_col<26;x_col++) {
|
||||
unsigned int * render_ypos_table = RENDER_YPOS;
|
||||
char ypos_inc_offset = 0;
|
||||
if(x_col>=24) {
|
||||
// Special column in sprite#9
|
||||
render_ypos_table = RENDER_YPOS_9TH;
|
||||
ypos_inc_offset = 11;
|
||||
}
|
||||
char * render_index_xcol = render_index;
|
||||
char * canvas_xcol = RENDER_XCOLS[x_col];
|
||||
for(char y_pos=0;y_pos<148;y_pos+=2) {
|
||||
char * canvas = canvas_xcol + render_ypos_table[(unsigned int)y_pos];
|
||||
render_index_xcol[RENDER_OFFSET_CANVAS_LO] = <canvas;
|
||||
render_index_xcol[RENDER_OFFSET_CANVAS_HI] = >canvas;
|
||||
render_index_xcol[RENDER_OFFSET_YPOS_INC] = ypos_inc_offset;
|
||||
ypos_inc_offset += 2;
|
||||
if(ypos_inc_offset>=23) ypos_inc_offset-=21; // Keep ypos_inc_index as low as possible
|
||||
render_index_xcol++;
|
||||
}
|
||||
render_index += 0x100;
|
||||
}
|
||||
// Fix the first entry of the inc_offset in the last column (set it to point to 0,0,6,6...)
|
||||
(RENDER_INDEX+24*0x100)[RENDER_OFFSET_YPOS_INC] = 0;
|
||||
(RENDER_INDEX+25*0x100)[RENDER_OFFSET_YPOS_INC] = 0;
|
||||
}
|
||||
|
||||
// Render graphic pixels into the 9 all-border sprites
|
||||
// - xcol: x column (0-24). The x-column represents 8 bits of data, 4 mc pixels, 16 on-screen pixels (due to x-expanded sprites)
|
||||
// - ypos: y position (0-145). The y-position is a line on the screen. Since every second line is black each ypos represents a 2 pixel distance.
|
||||
// - pixels: The pixel data to set
|
||||
void render(char xcol, char ypos, char pixels) {
|
||||
char ytile = ypos/4;
|
||||
char * render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, ytile*2 };
|
||||
unsigned int canvas_offset = { render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] };
|
||||
char * canvas1 = SPRITES_1 + canvas_offset;
|
||||
char * canvas2 = SPRITES_2 + canvas_offset;
|
||||
char ypos_inc_offset = render_index_xcol[RENDER_OFFSET_YPOS_INC];
|
||||
// Move the last few y-pixels
|
||||
char ypix = ypos&3;
|
||||
for(char i=0;i<ypix;i++) {
|
||||
canvas1 += RENDER_YPOS_INC[ypos_inc_offset];
|
||||
canvas2 += RENDER_YPOS_INC[ypos_inc_offset];
|
||||
ypos_inc_offset++;
|
||||
}
|
||||
// Render the pixels
|
||||
*canvas1 = pixels;
|
||||
*canvas2 = pixels;
|
||||
}
|
||||
|
||||
// Renders 2x1 tiles on the canvas.
|
||||
// Tiles are 4x4 px. This renders 8px x 4px.
|
||||
// - xcol: The x column position (0-24) (a column is 8 pixels)
|
||||
// - ytile: The y tile position (0-37). Tile y position 0 is a special half-tile at the top of the screen.
|
||||
// - tile_left: The left tile ID.
|
||||
// - tile_right: The right tile ID.
|
||||
void render_tiles(char xcol, char ytile, char tile_left, char tile_right) {
|
||||
char * tile_left_pixels = TILES_LEFT + tile_left*4;
|
||||
char * tile_right_pixels = TILES_RIGHT + tile_right*4;
|
||||
char * render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, ytile*2 };
|
||||
unsigned int canvas_offset = {render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] };
|
||||
char * canvas1 = SPRITES_1 + canvas_offset;
|
||||
char * canvas2 = SPRITES_2 + canvas_offset;
|
||||
char ypos_inc_offset = render_index_xcol[RENDER_OFFSET_YPOS_INC];
|
||||
for(char y=0;y<4;y++) {
|
||||
char pixels = tile_left_pixels[y] | tile_right_pixels[y];
|
||||
*canvas1 = pixels;
|
||||
*canvas2 = pixels;
|
||||
canvas1 += RENDER_YPOS_INC[ypos_inc_offset];
|
||||
canvas2 += RENDER_YPOS_INC[ypos_inc_offset];
|
||||
ypos_inc_offset++;
|
||||
}
|
||||
}
|
30
src/test/kc/complex/borderline_pacman/pacman-sounds-test.c
Normal file
30
src/test/kc/complex/borderline_pacman/pacman-sounds-test.c
Normal file
@ -0,0 +1,30 @@
|
||||
// Sound effects for pacman
|
||||
|
||||
#pragma target(c64)
|
||||
#pragma emulator("C64Debugger")
|
||||
#include <c64.h>
|
||||
#include <conio.h>
|
||||
#include <6502.h>
|
||||
|
||||
#include "pacman-sounds.c"
|
||||
|
||||
void main() {
|
||||
|
||||
// Prevent Interrupt
|
||||
SEI();
|
||||
|
||||
pacman_sound_init();
|
||||
pacman_ch1_enabled = 1;
|
||||
|
||||
for(;;) {
|
||||
// Wait for raster
|
||||
while(VICII->RASTER!=0xfe) ;
|
||||
VICII->BORDER_COLOR = WHITE;
|
||||
pacman_sound_play();
|
||||
VICII->BORDER_COLOR = BLUE;
|
||||
while(VICII->RASTER!=0x10) ;
|
||||
if(kbhit())
|
||||
pacman_ch1_enabled = 1;
|
||||
}
|
||||
|
||||
}
|
37
src/test/kc/complex/borderline_pacman/pacman-sounds.c
Normal file
37
src/test/kc/complex/borderline_pacman/pacman-sounds.c
Normal file
@ -0,0 +1,37 @@
|
||||
// Sound effects for pacman
|
||||
|
||||
#include <c64.h>
|
||||
|
||||
void pacman_sound_init() {
|
||||
// Set master volume
|
||||
SID->VOLUME_FILTER_MODE = 0x0f;
|
||||
|
||||
// Channel 1 is Pacman eating sound
|
||||
SID->CH1_FREQ = 0;
|
||||
SID->CH1_PULSE_WIDTH = 0;
|
||||
SID->CH1_CONTROL = 0;
|
||||
SID->CH1_ATTACK_DECAY = 0;
|
||||
SID->CH1_SUSTAIN_RELEASE = 0xf0;
|
||||
|
||||
}
|
||||
|
||||
// Pacman eating sound
|
||||
char PACMAN_CH1_FREQ_HI[] = {0x23, 0x1d, 0x1a, 0x17, 0x15, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x1a, 0x1c, 0x1d, 0x20, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, };
|
||||
char PACMAN_CH1_CONTROL[] = {0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, };
|
||||
|
||||
// Is the pacman eating sound enabled
|
||||
volatile char pacman_ch1_enabled = 0;
|
||||
// Index into the eating sound
|
||||
volatile char pacman_ch1_idx = 0;
|
||||
|
||||
void pacman_sound_play() {
|
||||
if(pacman_ch1_enabled) {
|
||||
// Play the entire sound - and then reset and disable it
|
||||
*SID_CH1_FREQ_HI = PACMAN_CH1_FREQ_HI[pacman_ch1_idx];
|
||||
SID->CH1_CONTROL = PACMAN_CH1_CONTROL[pacman_ch1_idx];
|
||||
if(++pacman_ch1_idx==sizeof(PACMAN_CH1_FREQ_HI)) {
|
||||
pacman_ch1_idx = 0;
|
||||
pacman_ch1_enabled = 0;
|
||||
}
|
||||
}
|
||||
}
|
BIN
src/test/kc/complex/borderline_pacman/pacman-splash.ase
Normal file
BIN
src/test/kc/complex/borderline_pacman/pacman-splash.ase
Normal file
Binary file not shown.
25
src/test/kc/complex/borderline_pacman/pacman-splash.c
Normal file
25
src/test/kc/complex/borderline_pacman/pacman-splash.c
Normal file
@ -0,0 +1,25 @@
|
||||
// Splash screen 25 xcol * 147 ypos bytes
|
||||
char SPLASH_CRUNCHED[] = kickasm(resource "pacman-splash.png", uses SPLASH) {{
|
||||
.modify B2() {
|
||||
.pc = SPLASH "SPLASH SCREEN" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
|
||||
.var pic_splash_mc = LoadPicture("pacman-splash.png", List().add($000000, $352879, $bfce72, $883932))
|
||||
// 0:BLACK, 1:YELLOW
|
||||
.var pic_splash_yellow = LoadPicture("pacman-splash.png", List().add($000000, $bfce72))
|
||||
// 0:BLACK, 1:BLUE
|
||||
.var pic_splash_blue = LoadPicture("pacman-splash.png", List().add($000000, $352879))
|
||||
.for(var xcol=0; xcol<25; xcol++) {
|
||||
.for(var ypos=0; ypos<147; ypos++) {
|
||||
.if(ypos>25 && ypos<123) {
|
||||
// Sprites in the sides are in single color blue on splash screen
|
||||
.byte pic_splash_blue.getSinglecolorByte(xcol,ypos)
|
||||
} else .if(xcol>2 && xcol<21) {
|
||||
// Sprites 2-7 are in single color yellow on splash screen
|
||||
.byte pic_splash_yellow.getSinglecolorByte(xcol,ypos)
|
||||
} else {
|
||||
// Sprites 0&1 are in multi color on splash screen
|
||||
.byte pic_splash_mc.getMulticolorByte(xcol,ypos)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}};
|
BIN
src/test/kc/complex/borderline_pacman/pacman-splash.png
Normal file
BIN
src/test/kc/complex/borderline_pacman/pacman-splash.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
BIN
src/test/kc/complex/borderline_pacman/pacman-tiled.ase
Normal file
BIN
src/test/kc/complex/borderline_pacman/pacman-tiled.ase
Normal file
Binary file not shown.
BIN
src/test/kc/complex/borderline_pacman/pacman-tiled.png
Normal file
BIN
src/test/kc/complex/borderline_pacman/pacman-tiled.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
94
src/test/kc/complex/borderline_pacman/pacman-tiles.c
Normal file
94
src/test/kc/complex/borderline_pacman/pacman-tiles.c
Normal file
@ -0,0 +1,94 @@
|
||||
// The level represented as 4x4 px tiles. Each byte is the ID of a tile from the tile set.
|
||||
// The level is 50 tiles * 37 tiles. The first tile line are special half-tiles (where only the last 2 pixel rows are shown).
|
||||
// The level data is organized as 37 rows of 50 tile IDs.
|
||||
|
||||
char LEVEL_TILES_CRUNCHED[] = kickasm(resource "pacman-tiled.png", uses LEVEL_TILES) {{
|
||||
.modify B2() {
|
||||
.pc = LEVEL_TILES "LEVEL TILE GRAPHICS"
|
||||
.var pic_level = LoadPicture("pacman-tiled.png", List().add($000000, $352879, $bfce72, $883932))
|
||||
// Maps the tile pixels (a 16 bit number) to the tile ID
|
||||
.var TILESET = Hashtable()
|
||||
// Maps the tile ID to the pixels (a 16 bit number)
|
||||
.var TILESET_BY_ID = Hashtable()
|
||||
// Tile ID 0 is empty
|
||||
.eval TILESET.put(0, 0)
|
||||
.eval TILESET_BY_ID.put(0, 0)
|
||||
|
||||
.align $100
|
||||
// TABLE LEVEL_TILES[64*37]
|
||||
// The level is 50 tiles * 37 tiles. The first tile line are special half-tiles (where only the last 2 pixel rows are shown).
|
||||
// The level data is organized as 37 rows of 64 bytes containing tile IDs. (the last 14 are unused to achieve 64-byte alignment)
|
||||
.for(var ytile=0; ytile<37; ytile++) {
|
||||
.for(var xtile=0; xtile<50; xtile++) {
|
||||
// Find the tile pixels (4x4 px - 16 bits)
|
||||
.var pixels = 0;
|
||||
.for(var i=0; i<4; i++) {
|
||||
.var pix = pic_level.getMulticolorByte(xtile/2,ytile*4+i)
|
||||
.if((xtile&1)==0) {
|
||||
// left nibble
|
||||
.eval pix = floor(pix / $10)
|
||||
} else {
|
||||
// right nibble
|
||||
.eval pix = pix & $0f
|
||||
}
|
||||
.eval pixels = pixels*$10 + pix
|
||||
}
|
||||
.var tile_id = 0
|
||||
.if(TILESET.containsKey(pixels)) {
|
||||
.eval tile_id = TILESET.get(pixels)
|
||||
} else {
|
||||
.eval tile_id = TILESET.keys().size()
|
||||
.eval TILESET.put(pixels, tile_id)
|
||||
.eval TILESET_BY_ID.put(tile_id, pixels)
|
||||
// .print "tile "+tile_id+" : "+toHexString(pixels,4)
|
||||
}
|
||||
// Output the tile ID
|
||||
.byte tile_id
|
||||
}
|
||||
.fill 14, 0
|
||||
}
|
||||
|
||||
.align $100
|
||||
// TABLE char TILES_LEFT[0x80]
|
||||
// The left tile graphics. A tile is 4x4 px. The left tiles contain tile graphics for the 4 left bits of a char. Each tile is 4 bytes.
|
||||
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
|
||||
.var pixels = TILESET_BY_ID.get(tile_id)
|
||||
.for(var i=0; i<4; i++) {
|
||||
.var pix = (pixels & $f000) >> 12
|
||||
.byte pix<<4
|
||||
.eval pixels = pixels << 4
|
||||
}
|
||||
}
|
||||
|
||||
.align $80
|
||||
// TABLE char TILES_RIGHT[0x80]
|
||||
// The right tile graphics. A tile is 4x4 px. The right tiles contain tile graphics for the 4 right bits of a char. Each tile is 4 bytes.
|
||||
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
|
||||
.var pixels = TILESET_BY_ID.get(tile_id)
|
||||
.for(var i=0; i<4; i++) {
|
||||
.var pix = (pixels & $f000) >> 12
|
||||
.byte pix
|
||||
.eval pixels = pixels << 4
|
||||
}
|
||||
}
|
||||
.align $80
|
||||
// TABLE char TILES_TYPE[0x20]
|
||||
// 0: empty (all black), 1:pill, 2:powerup, 4: wall (contains blue pixels)
|
||||
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
|
||||
.var pixels = TILESET_BY_ID.get(tile_id)
|
||||
.var tile_type = 0
|
||||
.if(pixels==$0220) .eval tile_type=1 // 1:pill
|
||||
.if(pixels==$aaaa) .eval tile_type=2 // 2:powerup
|
||||
.for(var i=0; i<4; i++) {
|
||||
.var pix = (pixels & $f000) >> 12
|
||||
// Detect wall - any blue pixels (%01)
|
||||
.if( (pix&%0100)==%0100) .eval tile_type = 4; // 4:wall
|
||||
.if( (pix&%0001)==%0001) .eval tile_type = 4; // 4:wall
|
||||
.eval pixels = pixels << 4
|
||||
}
|
||||
.byte tile_type
|
||||
//.print "tile "+tile_id+" gfx "+toHexString(TILESET_BY_ID.get(tile_id),4) + " type "+tile_type
|
||||
}
|
||||
|
||||
}
|
||||
}};
|
BIN
src/test/kc/complex/borderline_pacman/pacman-win.aseprite
Normal file
BIN
src/test/kc/complex/borderline_pacman/pacman-win.aseprite
Normal file
Binary file not shown.
12
src/test/kc/complex/borderline_pacman/pacman-win.c
Normal file
12
src/test/kc/complex/borderline_pacman/pacman-win.c
Normal file
@ -0,0 +1,12 @@
|
||||
// Victory graphics 25 xcol * 25 ypos bytes
|
||||
char WIN_GFX_CRUNCHED[] = kickasm(resource "pacman-win.png", uses WIN_GFX) {{
|
||||
.modify B2() {
|
||||
.pc = WIN_GFX "WIN GRAPHICS" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
|
||||
.var pic_win = LoadPicture("pacman-win.png", List().add($000000, $352879, $bfce72, $883932))
|
||||
.for(var xcol=0; xcol<25; xcol++) {
|
||||
.for(var ypos=0; ypos<25; ypos++) {
|
||||
.byte pic_win.getMulticolorByte(xcol,ypos)
|
||||
}
|
||||
}
|
||||
}
|
||||
}};
|
BIN
src/test/kc/complex/borderline_pacman/pacman-win.png
Normal file
BIN
src/test/kc/complex/borderline_pacman/pacman-win.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
1361
src/test/kc/complex/borderline_pacman/pacman.c
Normal file
1361
src/test/kc/complex/borderline_pacman/pacman.c
Normal file
File diff suppressed because it is too large
Load Diff
7
src/test/kc/complex/borderline_pacman/pacman.ld
Normal file
7
src/test/kc/complex/borderline_pacman/pacman.ld
Normal file
@ -0,0 +1,7 @@
|
||||
// Commodore 64 PRG executable file
|
||||
.plugin "se.triad.kickass.CruncherPlugins"
|
||||
.file [name="%O", type="prg", segments="Program", modify="B2exe", _jmpAdress=%E]
|
||||
.segmentdef Program [segments="Code, Data, Init"]
|
||||
.segmentdef Code [start=%P]
|
||||
.segmentdef Data [startAfter="Code"]
|
||||
.segmentdef Init [startAfter="Data"]
|
96
src/test/kc/complex/borderline_pacman/test-code-merger.c
Normal file
96
src/test/kc/complex/borderline_pacman/test-code-merger.c
Normal file
@ -0,0 +1,96 @@
|
||||
// Test the code-merger by merging unrolled cycle-exact logic code into an unrolled cycle-exact raster code.
|
||||
|
||||
#pragma target(c64)
|
||||
#include <6502.h>
|
||||
#include "code-merger.c"
|
||||
|
||||
void main() {
|
||||
merge_code(DEST_CODE, RASTER_CODE, LOGIC_CODE);
|
||||
}
|
||||
|
||||
// Unrolled raster code.
|
||||
// The format is a bunch of blocks with the following structure:
|
||||
// <nn>* $ff <cc>
|
||||
// <nn>* : some bytes of code. any number of bytes are allowed.
|
||||
// $ff : signals the end of a block.
|
||||
// <cc> : if <cc> is 00 then this is the end of the unrolled raster code.
|
||||
// If <cc> is non-zero it means that <cc> cycles must be spent here. The merger merges logic code into the slot and fills with NOP's to match the number of cycles needed.
|
||||
char RASTER_CODE[] = kickasm {{
|
||||
.macro RASTER_CYCLES(cycles) {
|
||||
.byte $ff, cycles
|
||||
}
|
||||
lda #0
|
||||
sta $d020
|
||||
RASTER_CYCLES(10)
|
||||
lda #1
|
||||
sta $d020
|
||||
RASTER_CYCLES(20)
|
||||
lda #2
|
||||
sta $d020
|
||||
RASTER_CYCLES(20)
|
||||
lda #3
|
||||
sta $d020
|
||||
RASTER_CYCLES(0) // End of raster code
|
||||
}};
|
||||
|
||||
// Unrolled logic code.
|
||||
// The format is a bunch of blocks with the following structure:
|
||||
// <cc> <nn>* $ff
|
||||
// <cc> : if <cc> is 00 then this is the end of the unrolled logic code.
|
||||
// If <cc> is non-zero it holds the number of cycles used by the block of code.
|
||||
// <nn>* : some bytes of code. any number of bytes are allowed. This code uses exactly the number of cycles specified by <cc>
|
||||
// $ff : signals the end of a block.
|
||||
char LOGIC_CODE[] = kickasm {{
|
||||
.macro LOGIC_BEGIN(cycles) {
|
||||
.byte cycles
|
||||
}
|
||||
.macro LOGIC_END() {
|
||||
.byte $ff
|
||||
}
|
||||
LOGIC_BEGIN(2)
|
||||
clc
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(8)
|
||||
lda #4
|
||||
adc $fc
|
||||
sta $fc
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(8)
|
||||
lda #0
|
||||
adc $fd
|
||||
sta $fd
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(8)
|
||||
lda #0
|
||||
sta $fa
|
||||
sta $fb
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(2)
|
||||
ldy #0
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(9)
|
||||
lda ($fc),y
|
||||
sta $fa
|
||||
sta $fb
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(9)
|
||||
lda ($fc),y
|
||||
sta $fa
|
||||
sta $fb
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(9)
|
||||
lda ($fc),y
|
||||
sta $fa
|
||||
sta $fb
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(9)
|
||||
lda ($fc),y
|
||||
sta $fa
|
||||
sta $fb
|
||||
LOGIC_END()
|
||||
LOGIC_BEGIN(0) // end of logic code
|
||||
}};
|
||||
|
||||
// The destination code
|
||||
char DEST_CODE[1000];
|
||||
|
41
src/test/kc/complex/borderline_pacman/test-music.c
Normal file
41
src/test/kc/complex/borderline_pacman/test-music.c
Normal file
@ -0,0 +1,41 @@
|
||||
// Test the music player
|
||||
|
||||
#pragma target(c64)
|
||||
#pragma emulator("C64Debugger")
|
||||
#include <c64.h>
|
||||
#include <6502.h>
|
||||
|
||||
|
||||
// SID tune
|
||||
__address(0x3000) char INTRO_MUSIC[] = kickasm(resource "pacman-2chn-simpler.prg") {{
|
||||
.const music = LoadBinary("pacman-2chn-simpler.prg", BF_C64FILE)
|
||||
.fill music.getSize(), music.get(i)
|
||||
}};
|
||||
|
||||
// Pointer to the music init routine
|
||||
void()* const musicInit = (void()*) INTRO_MUSIC+0x00;
|
||||
// Pointer to the music play routine
|
||||
void()* const musicPlay = (void()*) INTRO_MUSIC+0x06;
|
||||
|
||||
|
||||
void main() {
|
||||
|
||||
asm {
|
||||
// Disable SID CH3
|
||||
//lda #1
|
||||
//sta INTRO_MUSIC+$69
|
||||
}
|
||||
|
||||
asm { lda #0 }
|
||||
(*musicInit)();
|
||||
|
||||
for(;;) {
|
||||
while(VICII->RASTER!=0xfe) ;
|
||||
(*musicPlay)();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
4848
src/test/ref/complex/borderline_pacman/pacman.asm
Normal file
4848
src/test/ref/complex/borderline_pacman/pacman.asm
Normal file
File diff suppressed because it is too large
Load Diff
2012
src/test/ref/complex/borderline_pacman/pacman.cfg
Normal file
2012
src/test/ref/complex/borderline_pacman/pacman.cfg
Normal file
File diff suppressed because it is too large
Load Diff
31554
src/test/ref/complex/borderline_pacman/pacman.log
Normal file
31554
src/test/ref/complex/borderline_pacman/pacman.log
Normal file
File diff suppressed because it is too large
Load Diff
1741
src/test/ref/complex/borderline_pacman/pacman.sym
Normal file
1741
src/test/ref/complex/borderline_pacman/pacman.sym
Normal file
File diff suppressed because it is too large
Load Diff
@ -53,14 +53,14 @@ main: {
|
||||
sta.z x
|
||||
__b2:
|
||||
// xw = (signed word)(word){ (byte)x, 0 }
|
||||
lda.z x
|
||||
ldy #0
|
||||
sta.z xw+1
|
||||
sty.z xw
|
||||
lda #0
|
||||
ldy.z x
|
||||
sty.z xw+1
|
||||
sta.z xw
|
||||
// yw = (signed word)(word){ (byte)y, 0 }
|
||||
lda.z y
|
||||
sta.z yw+1
|
||||
sty.z yw
|
||||
ldy.z y
|
||||
sty.z yw+1
|
||||
sta.z yw
|
||||
// atan2_16(xw, yw)
|
||||
jsr atan2_16
|
||||
// angle_w = atan2_16(xw, yw)
|
||||
|
@ -2074,10 +2074,6 @@ Allocated zp[1]:67 [ print_uchar::$0 ]
|
||||
Allocated zp[1]:68 [ print_uchar::$2 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [3] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] main::xw#0 = (byte)main::x#2 w= 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
Statement [7] main::yw#0 = (byte)main::y#4 w= 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [8] atan2_16::x#0 = (signed word)main::xw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
@ -2086,6 +2082,8 @@ Statement [11] atan2_16::return#2 = atan2_16::return#0 [ main::y#4 main::x#2 mai
|
||||
Statement [12] main::angle_w#0 = atan2_16::return#2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a
|
||||
Statement [13] main::$4 = main::angle_w#0 + $80 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$4 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$4 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a
|
||||
Statement [16] diff::bb2#0 = *main::screen_ref#2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:53 [ main::ang_w#0 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:53 [ main::ang_w#0 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:54 [ diff::bb1#0 ]
|
||||
@ -2146,8 +2144,8 @@ Statement [112] print_uchar::$2 = print_uchar::b#2 & $f [ print_char_cursor#20 p
|
||||
Statement [117] *print_char_cursor#19 = print_char::ch#2 [ print_char_cursor#19 ] ( print_uint:30::print_uchar:104::print_char:111 [ print_uint::w#0 print_uchar::b#2 print_char_cursor#19 ] { { print_uint::w#0 = main::diff_sum#1 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#19 = print_char_cursor#26 } } print_uint:30::print_uchar:106::print_char:111 [ print_uchar::b#2 print_char_cursor#19 ] { { print_uint::w#0 = main::diff_sum#1 } { print_uchar::b#1 = print_uchar::b#2 } { print_char_cursor#19 = print_char_cursor#26 print_char_cursor#20 } { print_char::ch#0 = print_char::ch#2 } } print_uint:30::print_uchar:104::print_char:114 [ print_uint::w#0 print_char_cursor#19 ] { { print_uint::w#0 = main::diff_sum#1 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#19 = print_char_cursor#20 } } print_uint:30::print_uchar:106::print_char:114 [ print_char_cursor#19 ] { { print_uint::w#0 = main::diff_sum#1 } { print_uchar::b#1 = print_uchar::b#2 } { print_char_cursor#19 = print_char_cursor#26 print_char_cursor#20 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:35 [ print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
||||
Statement [3] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] main::xw#0 = (byte)main::x#2 w= 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [7] main::yw#0 = (byte)main::y#4 w= 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [6] main::xw#0 = (byte)main::x#2 w= 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [7] main::yw#0 = (byte)main::y#4 w= 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [8] atan2_16::x#0 = (signed word)main::xw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [9] atan2_16::y#0 = (signed word)main::yw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [11] atan2_16::return#2 = atan2_16::return#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] ( [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
@ -2416,15 +2414,15 @@ main: {
|
||||
// main::@2
|
||||
__b2:
|
||||
// [6] main::xw#0 = (byte)main::x#2 w= 0 -- vwuz1=vbuz2_word_vbuc1
|
||||
lda.z x
|
||||
ldy #0
|
||||
sta.z xw+1
|
||||
sty.z xw
|
||||
lda #0
|
||||
ldy.z x
|
||||
sty.z xw+1
|
||||
sta.z xw
|
||||
// [7] main::yw#0 = (byte)main::y#4 w= 0 -- vwuz1=vbuz2_word_vbuc1
|
||||
lda.z y
|
||||
ldy #0
|
||||
sta.z yw+1
|
||||
sty.z yw
|
||||
lda #0
|
||||
ldy.z y
|
||||
sty.z yw+1
|
||||
sta.z yw
|
||||
// [8] atan2_16::x#0 = (signed word)main::xw#0
|
||||
// [9] atan2_16::y#0 = (signed word)main::yw#0
|
||||
// [10] call atan2_16
|
||||
@ -3168,7 +3166,7 @@ Removing instruction jmp __breturn
|
||||
Removing instruction jmp __breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction lda #>0
|
||||
Removing instruction ldy #0
|
||||
Removing instruction lda #0
|
||||
Removing instruction ldy #0
|
||||
Replacing instruction ldy #0 with TAY
|
||||
Removing instruction ldy.z idx
|
||||
@ -3563,15 +3561,15 @@ main: {
|
||||
__b2:
|
||||
// xw = (signed word)(word){ (byte)x, 0 }
|
||||
// [6] main::xw#0 = (byte)main::x#2 w= 0 -- vwuz1=vbuz2_word_vbuc1
|
||||
lda.z x
|
||||
ldy #0
|
||||
sta.z xw+1
|
||||
sty.z xw
|
||||
lda #0
|
||||
ldy.z x
|
||||
sty.z xw+1
|
||||
sta.z xw
|
||||
// yw = (signed word)(word){ (byte)y, 0 }
|
||||
// [7] main::yw#0 = (byte)main::y#4 w= 0 -- vwuz1=vbuz2_word_vbuc1
|
||||
lda.z y
|
||||
sta.z yw+1
|
||||
sty.z yw
|
||||
ldy.z y
|
||||
sty.z yw+1
|
||||
sta.z yw
|
||||
// atan2_16(xw, yw)
|
||||
// [8] atan2_16::x#0 = (signed word)main::xw#0
|
||||
// [9] atan2_16::y#0 = (signed word)main::yw#0
|
||||
|
@ -42,14 +42,14 @@ main: {
|
||||
sta.z x
|
||||
__b2:
|
||||
// xw = (signed word)(word){ (byte)x, 0 }
|
||||
lda.z x
|
||||
ldy #0
|
||||
sta.z xw+1
|
||||
sty.z xw
|
||||
lda #0
|
||||
ldy.z x
|
||||
sty.z xw+1
|
||||
sta.z xw
|
||||
// yw = (signed word)(word){ (byte)y, 0 }
|
||||
lda.z y
|
||||
sta.z yw+1
|
||||
sty.z yw
|
||||
ldy.z y
|
||||
sty.z yw+1
|
||||
sta.z yw
|
||||
// atan2_16(xw, yw)
|
||||
jsr atan2_16
|
||||
// angle_w = atan2_16(xw, yw)
|
||||
|
@ -1533,10 +1533,6 @@ Allocated zp[1]:49 [ atan2_16::$23 ]
|
||||
Allocated zp[1]:50 [ atan2_16::$22 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [3] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] main::xw#0 = (byte)main::x#2 w= 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] ( [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
Statement [7] main::yw#0 = (byte)main::y#4 w= 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] ( [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [8] atan2_16::x#0 = (signed word)main::xw#0 [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
@ -1545,6 +1541,8 @@ Statement [11] atan2_16::return#2 = atan2_16::return#0 [ main::y#4 main::x#2 mai
|
||||
Statement [12] main::angle_w#0 = atan2_16::return#2 [ main::y#4 main::x#2 main::screen#2 main::angle_w#0 ] ( [ main::y#4 main::x#2 main::screen#2 main::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [13] main::$3 = main::angle_w#0 + $80 [ main::y#4 main::x#2 main::screen#2 main::$3 ] ( [ main::y#4 main::x#2 main::screen#2 main::$3 ] { } ) always clobbers reg byte a
|
||||
Statement [15] *main::screen#2 = main::ang_w#0 [ main::y#4 main::x#2 main::screen#2 ] ( [ main::y#4 main::x#2 main::screen#2 ] { } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
Statement [25] *init_font_hex::charset#2 = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:8 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:8 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
@ -1590,8 +1588,8 @@ Statement [84] atan2_16::yd#1 = atan2_16::yd#3 >> 2 [ atan2_16::x#0 atan2_16::y#
|
||||
Statement [86] atan2_16::xi#13 = atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [87] atan2_16::yi#16 = atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [3] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] main::xw#0 = (byte)main::x#2 w= 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] ( [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [7] main::yw#0 = (byte)main::y#4 w= 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] ( [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [6] main::xw#0 = (byte)main::x#2 w= 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] ( [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [7] main::yw#0 = (byte)main::y#4 w= 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] ( [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [8] atan2_16::x#0 = (signed word)main::xw#0 [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [9] atan2_16::y#0 = (signed word)main::yw#0 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [11] atan2_16::return#2 = atan2_16::return#0 [ main::y#4 main::x#2 main::screen#2 atan2_16::return#2 ] ( [ main::y#4 main::x#2 main::screen#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
@ -1800,15 +1798,15 @@ main: {
|
||||
// main::@2
|
||||
__b2:
|
||||
// [6] main::xw#0 = (byte)main::x#2 w= 0 -- vwuz1=vbuz2_word_vbuc1
|
||||
lda.z x
|
||||
ldy #0
|
||||
sta.z xw+1
|
||||
sty.z xw
|
||||
lda #0
|
||||
ldy.z x
|
||||
sty.z xw+1
|
||||
sta.z xw
|
||||
// [7] main::yw#0 = (byte)main::y#4 w= 0 -- vwuz1=vbuz2_word_vbuc1
|
||||
lda.z y
|
||||
ldy #0
|
||||
sta.z yw+1
|
||||
sty.z yw
|
||||
lda #0
|
||||
ldy.z y
|
||||
sty.z yw+1
|
||||
sta.z yw
|
||||
// [8] atan2_16::x#0 = (signed word)main::xw#0
|
||||
// [9] atan2_16::y#0 = (signed word)main::yw#0
|
||||
// [10] call atan2_16
|
||||
@ -2372,7 +2370,7 @@ Removing instruction jmp __b17
|
||||
Removing instruction jmp __b20
|
||||
Removing instruction jmp __b19
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction ldy #0
|
||||
Removing instruction lda #0
|
||||
Replacing instruction ldy #0 with TAY
|
||||
Removing instruction ldy.z idx
|
||||
Removing instruction lda #0
|
||||
@ -2664,15 +2662,15 @@ main: {
|
||||
__b2:
|
||||
// xw = (signed word)(word){ (byte)x, 0 }
|
||||
// [6] main::xw#0 = (byte)main::x#2 w= 0 -- vwuz1=vbuz2_word_vbuc1
|
||||
lda.z x
|
||||
ldy #0
|
||||
sta.z xw+1
|
||||
sty.z xw
|
||||
lda #0
|
||||
ldy.z x
|
||||
sty.z xw+1
|
||||
sta.z xw
|
||||
// yw = (signed word)(word){ (byte)y, 0 }
|
||||
// [7] main::yw#0 = (byte)main::y#4 w= 0 -- vwuz1=vbuz2_word_vbuc1
|
||||
lda.z y
|
||||
sta.z yw+1
|
||||
sty.z yw
|
||||
ldy.z y
|
||||
sty.z yw+1
|
||||
sta.z yw
|
||||
// atan2_16(xw, yw)
|
||||
// [8] atan2_16::x#0 = (signed word)main::xw#0
|
||||
// [9] atan2_16::y#0 = (signed word)main::yw#0
|
||||
|
@ -1798,25 +1798,16 @@ Statement [42] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
||||
Statement [43] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [44] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:14 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
||||
Statement [45] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [46] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [47] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [48] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [50] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [51] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [52] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [55] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:56 [ init_angle_screen::ang_w#0 ]
|
||||
Statement [56] init_angle_screen::$10 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:56 [ init_angle_screen::ang_w#0 ]
|
||||
Statement [57] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [58] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [59] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [60] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [60] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte a
|
||||
Statement [63] if(atan2_16::y#0>=0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( init_angle_screen:4::atan2_16:49 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [64] atan2_16::$2 = - atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( init_angle_screen:4::atan2_16:49 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [66] if(atan2_16::x#0>=0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( init_angle_screen:4::atan2_16:49 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
@ -1862,21 +1853,16 @@ Statement [37] init_angle_screen::screen_topline#1 = init_angle_screen::screen_t
|
||||
Statement [38] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
|
||||
Statement [42] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [43] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [44] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [45] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [46] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [47] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [48] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [50] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [51] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [52] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [54] init_angle_screen::$9 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
||||
Statement [55] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [56] init_angle_screen::$10 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [57] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [58] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [59] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [60] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [60] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( init_angle_screen:4 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte a
|
||||
Statement [63] if(atan2_16::y#0>=0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( init_angle_screen:4::atan2_16:49 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [64] atan2_16::$2 = - atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( init_angle_screen:4::atan2_16:49 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [66] if(atan2_16::x#0>=0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( init_angle_screen:4::atan2_16:49 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
@ -1912,11 +1898,11 @@ Potential registers zp[2]:9 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#
|
||||
Potential registers zp[1]:11 [ init_font_hex::c1#4 init_font_hex::c1#1 ] : zp[1]:11 , reg byte x ,
|
||||
Potential registers zp[1]:12 [ init_font_hex::i#2 init_font_hex::i#1 ] : zp[1]:12 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:13 [ init_font_hex::idx#5 init_font_hex::idx#2 ] : zp[1]:13 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:14 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:14 , reg byte x ,
|
||||
Potential registers zp[1]:14 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:14 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:15 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ] : zp[2]:15 ,
|
||||
Potential registers zp[2]:17 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] : zp[2]:17 ,
|
||||
Potential registers zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:19 , reg byte x ,
|
||||
Potential registers zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:20 , reg byte x ,
|
||||
Potential registers zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:19 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:20 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:21 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] : zp[2]:21 ,
|
||||
Potential registers zp[2]:23 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] : zp[2]:23 ,
|
||||
Potential registers zp[1]:25 [ atan2_16::i#2 atan2_16::i#1 ] : zp[1]:25 , reg byte x , reg byte y ,
|
||||
@ -1939,7 +1925,7 @@ Potential registers zp[2]:48 [ atan2_16::y#0 ] : zp[2]:48 ,
|
||||
Potential registers zp[2]:50 [ atan2_16::return#2 ] : zp[2]:50 ,
|
||||
Potential registers zp[2]:52 [ init_angle_screen::angle_w#0 ] : zp[2]:52 ,
|
||||
Potential registers zp[2]:54 [ init_angle_screen::$7 ] : zp[2]:54 ,
|
||||
Potential registers zp[1]:56 [ init_angle_screen::ang_w#0 ] : zp[1]:56 , reg byte x ,
|
||||
Potential registers zp[1]:56 [ init_angle_screen::ang_w#0 ] : zp[1]:56 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:57 [ init_angle_screen::$9 ] : zp[1]:57 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:58 [ init_angle_screen::$10 ] : zp[1]:58 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:59 [ init_angle_screen::$11 ] : zp[1]:59 , reg byte a , reg byte x , reg byte y ,
|
||||
@ -1961,7 +1947,7 @@ Limited combination testing to 100 combinations of 144 possible.
|
||||
Uplifting [init_font_hex] best 1153159 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:13 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:35 [ init_font_hex::$0 ] zp[1]:38 [ init_font_hex::idx#3 ] zp[1]:11 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:7 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[2]:9 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:4 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:6 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Limited combination testing to 100 combinations of 6912 possible.
|
||||
Uplifting [init_angle_screen] best 1151559 combination zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] zp[2]:52 [ init_angle_screen::angle_w#0 ] zp[2]:54 [ init_angle_screen::$7 ] zp[1]:57 [ init_angle_screen::$9 ] zp[1]:58 [ init_angle_screen::$10 ] zp[1]:59 [ init_angle_screen::$11 ] zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:56 [ init_angle_screen::ang_w#0 ] zp[2]:44 [ init_angle_screen::yw#0 ] zp[2]:41 [ init_angle_screen::xw#0 ] zp[1]:14 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:17 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] zp[2]:15 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ]
|
||||
Limited combination testing to 100 combinations of 65536 possible.
|
||||
Limited combination testing to 100 combinations of 331776 possible.
|
||||
Uplifting [main] best 1151559 combination zp[2]:2 [ main::clear_char#5 main::clear_char#1 ]
|
||||
Uplifting [MOS6526_CIA] best 1151559 combination
|
||||
Uplifting [MOS6569_VICII] best 1151559 combination
|
||||
|
@ -32,15 +32,15 @@
|
||||
.const OFFSET_STRUCT_F018_DMAGIC_ADDRMSB = 1
|
||||
.const OFFSET_STRUCT_DMA_LIST_F018B_DEST_BANK = 8
|
||||
.const OFFSET_STRUCT_F018_DMAGIC_ETRIG = 5
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLB = $31
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLC = $54
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_KEY = $2f
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO = $5c
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI = $5d
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO = $48
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI = $49
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO = $4a
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI = $4b
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLB = $31
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLC = $54
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_KEY = $2f
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_LO = $58
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_HI = $59
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO = $4c
|
||||
@ -78,22 +78,6 @@ main: {
|
||||
// memoryRemap(0,0,0)
|
||||
// Map memory to BANK 0 : 0x00XXXX - giving access to I/O
|
||||
jsr memoryRemap
|
||||
// VICIV->SIDBDRWD_LO = 0
|
||||
// Set sideborder width=0, disable raster delay and hot registers
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO
|
||||
// VICIV->SIDBDRWD_HI = 0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI
|
||||
// VICIV->TBDRPOS_LO = 0
|
||||
// Disable top/bottom borders
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO
|
||||
// VICIV->TBDRPOS_HI = 0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI
|
||||
// VICIV->BBDRPOS_LO = 0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO
|
||||
// VICIV->BBDRPOS_HI = 2
|
||||
lda #2
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI
|
||||
// VICIV->CONTROLB |= 0x40
|
||||
// Enable 48MHz fast mode
|
||||
lda #$40
|
||||
@ -110,6 +94,22 @@ main: {
|
||||
// VICIV->KEY = 0x53
|
||||
lda #$53
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY
|
||||
// VICIV->SIDBDRWD_LO = 0
|
||||
// Set sideborder width=0, disable raster delay and hot registers
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO
|
||||
// VICIV->SIDBDRWD_HI = 0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI
|
||||
// VICIV->TBDRPOS_LO = 0
|
||||
// Disable top/bottom borders
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO
|
||||
// VICIV->TBDRPOS_HI = 0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI
|
||||
// VICIV->BBDRPOS_LO = 0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO
|
||||
// VICIV->BBDRPOS_HI = 2
|
||||
lda #2
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI
|
||||
// VICIV->CONTROLC |= 1
|
||||
// Enable Super Extended Attribute Mode
|
||||
lda #1
|
||||
|
@ -11,16 +11,16 @@ main::@11: scope:[main] from main::SEI1
|
||||
[3] call memoryRemap
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@11
|
||||
[4] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0
|
||||
[5] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0
|
||||
[6] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0
|
||||
[7] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0
|
||||
[8] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0
|
||||
[9] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2
|
||||
[10] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40
|
||||
[11] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40
|
||||
[12] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47
|
||||
[13] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53
|
||||
[4] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40
|
||||
[5] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40
|
||||
[6] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47
|
||||
[7] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53
|
||||
[8] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0
|
||||
[9] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0
|
||||
[10] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0
|
||||
[11] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0
|
||||
[12] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0
|
||||
[13] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2
|
||||
[14] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | 1
|
||||
[15] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) & $7f
|
||||
[16] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_LO) = $5a
|
||||
|
@ -141,16 +141,16 @@ main::@13: scope:[main] from main::SEI1
|
||||
call memoryRemap
|
||||
to:main::@14
|
||||
main::@14: scope:[main] from main::@13
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | 1
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) & $7f
|
||||
*((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_LO) = $5a
|
||||
@ -491,16 +491,16 @@ Adding number conversion cast (unumber) 0 in *((byte*)DMA+OFFSET_STRUCT_F018_DMA
|
||||
Adding number conversion cast (unumber) 0 in memoryRemap::remapBlocks#0 = 0
|
||||
Adding number conversion cast (unumber) 0 in memoryRemap::lowerPageOffset#0 = 0
|
||||
Adding number conversion cast (unumber) 0 in memoryRemap::upperPageOffset#0 = 0
|
||||
Adding number conversion cast (unumber) $40 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40
|
||||
Adding number conversion cast (unumber) $40 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40
|
||||
Adding number conversion cast (unumber) $47 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47
|
||||
Adding number conversion cast (unumber) $53 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53
|
||||
Adding number conversion cast (unumber) 0 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0
|
||||
Adding number conversion cast (unumber) 0 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0
|
||||
Adding number conversion cast (unumber) 0 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0
|
||||
Adding number conversion cast (unumber) 0 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0
|
||||
Adding number conversion cast (unumber) 0 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0
|
||||
Adding number conversion cast (unumber) 2 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2
|
||||
Adding number conversion cast (unumber) $40 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40
|
||||
Adding number conversion cast (unumber) $40 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40
|
||||
Adding number conversion cast (unumber) $47 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47
|
||||
Adding number conversion cast (unumber) $53 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53
|
||||
Adding number conversion cast (unumber) 1 in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | 1
|
||||
Adding number conversion cast (unumber) $7f in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) & $7f
|
||||
Adding number conversion cast (unumber) $5a in *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_LO) = $5a
|
||||
@ -539,14 +539,14 @@ Inlining cast *((byte*)DMA+OFFSET_STRUCT_F018_DMAGIC_ADDRBANK) = (unumber)0
|
||||
Inlining cast memoryRemap::remapBlocks#0 = (unumber)0
|
||||
Inlining cast memoryRemap::lowerPageOffset#0 = (unumber)0
|
||||
Inlining cast memoryRemap::upperPageOffset#0 = (unumber)0
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = (unumber)$47
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = (unumber)$53
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = (unumber)0
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = (unumber)0
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = (unumber)0
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = (unumber)0
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = (unumber)0
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = (unumber)2
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = (unumber)$47
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = (unumber)$53
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_LO) = (unumber)$5a
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_HI) = (unumber)0
|
||||
Inlining cast *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) = (unumber)$28
|
||||
@ -585,16 +585,16 @@ Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast $40
|
||||
Simplifying constant integer cast $40
|
||||
Simplifying constant integer cast $47
|
||||
Simplifying constant integer cast $53
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast 2
|
||||
Simplifying constant integer cast $40
|
||||
Simplifying constant integer cast $40
|
||||
Simplifying constant integer cast $47
|
||||
Simplifying constant integer cast $53
|
||||
Simplifying constant integer cast 1
|
||||
Simplifying constant integer cast $7f
|
||||
Simplifying constant integer cast $5a
|
||||
@ -631,16 +631,16 @@ Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) $40
|
||||
Finalized unsigned number type (byte) $40
|
||||
Finalized unsigned number type (byte) $47
|
||||
Finalized unsigned number type (byte) $53
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 2
|
||||
Finalized unsigned number type (byte) $40
|
||||
Finalized unsigned number type (byte) $40
|
||||
Finalized unsigned number type (byte) $47
|
||||
Finalized unsigned number type (byte) $53
|
||||
Finalized unsigned number type (byte) 1
|
||||
Finalized unsigned number type (byte) $7f
|
||||
Finalized unsigned number type (byte) $5a
|
||||
@ -958,16 +958,16 @@ main::@11: scope:[main] from main::SEI1
|
||||
[3] call memoryRemap
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@11
|
||||
[4] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0
|
||||
[5] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0
|
||||
[6] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0
|
||||
[7] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0
|
||||
[8] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0
|
||||
[9] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2
|
||||
[10] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40
|
||||
[11] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40
|
||||
[12] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47
|
||||
[13] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53
|
||||
[4] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40
|
||||
[5] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40
|
||||
[6] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47
|
||||
[7] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53
|
||||
[8] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0
|
||||
[9] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0
|
||||
[10] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0
|
||||
[11] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0
|
||||
[12] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0
|
||||
[13] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2
|
||||
[14] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | 1
|
||||
[15] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) & $7f
|
||||
[16] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_LO) = $5a
|
||||
@ -1206,16 +1206,16 @@ Allocated zp[1]:24 [ memset_dma::dmaMode#0 ]
|
||||
Allocated zp[1]:25 [ memset_dma256::dmaMode#0 ]
|
||||
Allocated mem[12] [ memset_dma_command ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [5] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [6] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [7] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [8] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [9] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [10] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [11] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [12] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [13] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [4] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [5] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [6] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [7] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [8] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [9] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [10] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [11] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [12] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [13] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [14] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | 1 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [15] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) & $7f [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [16] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_LO) = $5a [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
@ -1271,16 +1271,16 @@ Statement [79] *((byte*)DMA+OFFSET_STRUCT_F018_DMAGIC_ADDRMB) = 0 [ memset_dma25
|
||||
Statement [80] *((byte*)DMA+OFFSET_STRUCT_F018_DMAGIC_ADDRBANK) = 0 [ memset_dma256::dmaMode#0 ] ( memset_dma256:30 [ memset_dma_command memset_dma256::dmaMode#0 ] { } ) always clobbers reg byte a
|
||||
Statement [81] *((byte*)DMA+OFFSET_STRUCT_F018_DMAGIC_ADDRMSB) = >memset_dma_command256 [ memset_dma256::dmaMode#0 ] ( memset_dma256:30 [ memset_dma_command memset_dma256::dmaMode#0 ] { } ) always clobbers reg byte a
|
||||
Statement [82] *((byte*)DMA+OFFSET_STRUCT_F018_DMAGIC_ETRIG) = <memset_dma_command256 [ memset_dma256::dmaMode#0 ] ( memset_dma256:30 [ memset_dma_command memset_dma256::dmaMode#0 ] { } ) always clobbers reg byte a
|
||||
Statement [4] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [5] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [6] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [7] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [8] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [9] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [10] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [11] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [12] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [13] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [4] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [5] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [6] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [7] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [8] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [9] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [10] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [11] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [12] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [13] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [14] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | 1 [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [15] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) & $7f [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
Statement [16] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_LO) = $5a [ memset_dma_command ] ( [ memset_dma_command ] { } ) always clobbers reg byte a
|
||||
@ -1435,15 +1435,15 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const OFFSET_STRUCT_F018_DMAGIC_ADDRMSB = 1
|
||||
.const OFFSET_STRUCT_DMA_LIST_F018B_DEST_BANK = 8
|
||||
.const OFFSET_STRUCT_F018_DMAGIC_ETRIG = 5
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLB = $31
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLC = $54
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_KEY = $2f
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO = $5c
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI = $5d
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO = $48
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI = $49
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO = $4a
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI = $4b
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLB = $31
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLC = $54
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_KEY = $2f
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_LO = $58
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_HI = $59
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO = $4c
|
||||
@ -1493,42 +1493,42 @@ main: {
|
||||
jmp __b12
|
||||
// main::@12
|
||||
__b12:
|
||||
// [4] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0 -- _deref_pbuc1=vbuc2
|
||||
// Set sideborder width=0, disable raster delay and hot registers
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO
|
||||
// [5] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0 -- _deref_pbuc1=vbuc2
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI
|
||||
// [6] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0 -- _deref_pbuc1=vbuc2
|
||||
// Disable top/bottom borders
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO
|
||||
// [7] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0 -- _deref_pbuc1=vbuc2
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI
|
||||
// [8] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0 -- _deref_pbuc1=vbuc2
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO
|
||||
// [9] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2 -- _deref_pbuc1=vbuc2
|
||||
lda #2
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI
|
||||
// [10] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
// [4] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
// Enable 48MHz fast mode
|
||||
lda #$40
|
||||
ora VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB
|
||||
// [11] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
// [5] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
lda #$40
|
||||
ora VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC
|
||||
// [12] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47 -- _deref_pbuc1=vbuc2
|
||||
// [6] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47 -- _deref_pbuc1=vbuc2
|
||||
// Enable the VIC 4
|
||||
lda #$47
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY
|
||||
// [13] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53 -- _deref_pbuc1=vbuc2
|
||||
// [7] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53 -- _deref_pbuc1=vbuc2
|
||||
lda #$53
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY
|
||||
// [8] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0 -- _deref_pbuc1=vbuc2
|
||||
// Set sideborder width=0, disable raster delay and hot registers
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO
|
||||
// [9] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0 -- _deref_pbuc1=vbuc2
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI
|
||||
// [10] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0 -- _deref_pbuc1=vbuc2
|
||||
// Disable top/bottom borders
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO
|
||||
// [11] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0 -- _deref_pbuc1=vbuc2
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI
|
||||
// [12] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0 -- _deref_pbuc1=vbuc2
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO
|
||||
// [13] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2 -- _deref_pbuc1=vbuc2
|
||||
lda #2
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI
|
||||
// [14] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | 1 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
// Enable Super Extended Attribute Mode
|
||||
lda #1
|
||||
@ -2208,15 +2208,15 @@ Score: 9298
|
||||
.const OFFSET_STRUCT_F018_DMAGIC_ADDRMSB = 1
|
||||
.const OFFSET_STRUCT_DMA_LIST_F018B_DEST_BANK = 8
|
||||
.const OFFSET_STRUCT_F018_DMAGIC_ETRIG = 5
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLB = $31
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLC = $54
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_KEY = $2f
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO = $5c
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI = $5d
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO = $48
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI = $49
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO = $4a
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI = $4b
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLB = $31
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLC = $54
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_KEY = $2f
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_LO = $58
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_CHARSTEP_HI = $59
|
||||
.const OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO = $4c
|
||||
@ -2261,48 +2261,48 @@ main: {
|
||||
// Map memory to BANK 0 : 0x00XXXX - giving access to I/O
|
||||
jsr memoryRemap
|
||||
// main::@12
|
||||
// VICIV->SIDBDRWD_LO = 0
|
||||
// [4] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0 -- _deref_pbuc1=vbuc2
|
||||
// Set sideborder width=0, disable raster delay and hot registers
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO
|
||||
// VICIV->SIDBDRWD_HI = 0
|
||||
// [5] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0 -- _deref_pbuc1=vbuc2
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI
|
||||
// VICIV->TBDRPOS_LO = 0
|
||||
// [6] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0 -- _deref_pbuc1=vbuc2
|
||||
// Disable top/bottom borders
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO
|
||||
// VICIV->TBDRPOS_HI = 0
|
||||
// [7] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0 -- _deref_pbuc1=vbuc2
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI
|
||||
// VICIV->BBDRPOS_LO = 0
|
||||
// [8] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0 -- _deref_pbuc1=vbuc2
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO
|
||||
// VICIV->BBDRPOS_HI = 2
|
||||
// [9] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2 -- _deref_pbuc1=vbuc2
|
||||
lda #2
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI
|
||||
// VICIV->CONTROLB |= 0x40
|
||||
// [10] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
// [4] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
// Enable 48MHz fast mode
|
||||
lda #$40
|
||||
ora VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB
|
||||
// VICIV->CONTROLC |= 0x40
|
||||
// [11] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
// [5] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
lda #$40
|
||||
ora VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC
|
||||
// VICIV->KEY = 0x47
|
||||
// [12] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47 -- _deref_pbuc1=vbuc2
|
||||
// [6] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $47 -- _deref_pbuc1=vbuc2
|
||||
// Enable the VIC 4
|
||||
lda #$47
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY
|
||||
// VICIV->KEY = 0x53
|
||||
// [13] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53 -- _deref_pbuc1=vbuc2
|
||||
// [7] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY) = $53 -- _deref_pbuc1=vbuc2
|
||||
lda #$53
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_KEY
|
||||
// VICIV->SIDBDRWD_LO = 0
|
||||
// [8] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 0 -- _deref_pbuc1=vbuc2
|
||||
// Set sideborder width=0, disable raster delay and hot registers
|
||||
lda #0
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO
|
||||
// VICIV->SIDBDRWD_HI = 0
|
||||
// [9] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI) = 0 -- _deref_pbuc1=vbuc2
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_HI
|
||||
// VICIV->TBDRPOS_LO = 0
|
||||
// [10] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO) = 0 -- _deref_pbuc1=vbuc2
|
||||
// Disable top/bottom borders
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_LO
|
||||
// VICIV->TBDRPOS_HI = 0
|
||||
// [11] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI) = 0 -- _deref_pbuc1=vbuc2
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TBDRPOS_HI
|
||||
// VICIV->BBDRPOS_LO = 0
|
||||
// [12] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO) = 0 -- _deref_pbuc1=vbuc2
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_LO
|
||||
// VICIV->BBDRPOS_HI = 2
|
||||
// [13] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI) = 2 -- _deref_pbuc1=vbuc2
|
||||
lda #2
|
||||
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_BBDRPOS_HI
|
||||
// VICIV->CONTROLC |= 1
|
||||
// [14] *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((byte*)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | 1 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
// Enable Super Extended Attribute Mode
|
||||
|
@ -10,22 +10,22 @@
|
||||
.segment Code
|
||||
main: {
|
||||
// puta(4, 0x00)
|
||||
ldx #0
|
||||
lda #4
|
||||
lda #0
|
||||
ldx #4
|
||||
jsr puta
|
||||
// puta(5, 0x18)
|
||||
ldx #$18
|
||||
lda #5
|
||||
lda #$18
|
||||
ldx #5
|
||||
jsr puta
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// puta(byte register(A) ph, byte register(X) pl)
|
||||
// puta(byte register(X) ph, byte register(A) pl)
|
||||
puta: {
|
||||
.label screen = 2
|
||||
// screen = (byte*) { ph, pl }
|
||||
sta.z screen+1
|
||||
stx.z screen
|
||||
stx.z screen+1
|
||||
sta.z screen
|
||||
// *screen = 'a'
|
||||
lda #'a'
|
||||
ldy #0
|
||||
|
@ -176,7 +176,7 @@ Uplift Scope [puta] 11: zp[1]:2 [ puta::ph#2 ] 11: zp[1]:3 [ puta::pl#2 ] 11: zp
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [puta] best 57 combination reg byte a [ puta::ph#2 ] reg byte x [ puta::pl#2 ] zp[2]:4 [ puta::screen#0 ]
|
||||
Uplifting [puta] best 57 combination reg byte x [ puta::ph#2 ] reg byte a [ puta::pl#2 ] zp[2]:4 [ puta::screen#0 ]
|
||||
Uplifting [main] best 57 combination
|
||||
Uplifting [] best 57 combination
|
||||
Allocated (was zp[2]:4) zp[2]:2 [ puta::screen#0 ]
|
||||
@ -200,10 +200,10 @@ main: {
|
||||
// [1] call puta
|
||||
// [5] phi from main to puta [phi:main->puta]
|
||||
puta_from_main:
|
||||
// [5] phi puta::pl#2 = 0 [phi:main->puta#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
// [5] phi puta::ph#2 = 4 [phi:main->puta#1] -- vbuaa=vbuc1
|
||||
lda #4
|
||||
// [5] phi puta::pl#2 = 0 [phi:main->puta#0] -- vbuaa=vbuc1
|
||||
lda #0
|
||||
// [5] phi puta::ph#2 = 4 [phi:main->puta#1] -- vbuxx=vbuc1
|
||||
ldx #4
|
||||
jsr puta
|
||||
// [2] phi from main to main::@1 [phi:main->main::@1]
|
||||
__b1_from_main:
|
||||
@ -213,10 +213,10 @@ main: {
|
||||
// [3] call puta
|
||||
// [5] phi from main::@1 to puta [phi:main::@1->puta]
|
||||
puta_from___b1:
|
||||
// [5] phi puta::pl#2 = $18 [phi:main::@1->puta#0] -- vbuxx=vbuc1
|
||||
ldx #$18
|
||||
// [5] phi puta::ph#2 = 5 [phi:main::@1->puta#1] -- vbuaa=vbuc1
|
||||
lda #5
|
||||
// [5] phi puta::pl#2 = $18 [phi:main::@1->puta#0] -- vbuaa=vbuc1
|
||||
lda #$18
|
||||
// [5] phi puta::ph#2 = 5 [phi:main::@1->puta#1] -- vbuxx=vbuc1
|
||||
ldx #5
|
||||
jsr puta
|
||||
jmp __breturn
|
||||
// main::@return
|
||||
@ -225,12 +225,12 @@ main: {
|
||||
rts
|
||||
}
|
||||
// puta
|
||||
// puta(byte register(A) ph, byte register(X) pl)
|
||||
// puta(byte register(X) ph, byte register(A) pl)
|
||||
puta: {
|
||||
.label screen = 2
|
||||
// [6] puta::screen#0 = puta::ph#2 w= puta::pl#2 -- vwuz1=vbuaa_word_vbuxx
|
||||
sta.z screen+1
|
||||
stx.z screen
|
||||
// [6] puta::screen#0 = puta::ph#2 w= puta::pl#2 -- vwuz1=vbuxx_word_vbuaa
|
||||
stx.z screen+1
|
||||
sta.z screen
|
||||
// [7] *((byte*)puta::screen#0) = 'a' -- _deref_pbuz1=vbuc1
|
||||
lda #'a'
|
||||
ldy #0
|
||||
@ -261,14 +261,14 @@ FINAL SYMBOL TABLE
|
||||
void main()
|
||||
void puta(byte puta::ph , byte puta::pl)
|
||||
byte puta::ph
|
||||
byte puta::ph#2 reg byte a 11.0
|
||||
byte puta::ph#2 reg byte x 11.0
|
||||
byte puta::pl
|
||||
byte puta::pl#2 reg byte x 11.0
|
||||
byte puta::pl#2 reg byte a 11.0
|
||||
byte* puta::screen
|
||||
word puta::screen#0 screen zp[2]:2 11.0
|
||||
|
||||
reg byte a [ puta::ph#2 ]
|
||||
reg byte x [ puta::pl#2 ]
|
||||
reg byte x [ puta::ph#2 ]
|
||||
reg byte a [ puta::pl#2 ]
|
||||
zp[2]:2 [ puta::screen#0 ]
|
||||
|
||||
|
||||
@ -293,20 +293,20 @@ main: {
|
||||
// puta(4, 0x00)
|
||||
// [1] call puta
|
||||
// [5] phi from main to puta [phi:main->puta]
|
||||
// [5] phi puta::pl#2 = 0 [phi:main->puta#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
// [5] phi puta::ph#2 = 4 [phi:main->puta#1] -- vbuaa=vbuc1
|
||||
lda #4
|
||||
// [5] phi puta::pl#2 = 0 [phi:main->puta#0] -- vbuaa=vbuc1
|
||||
lda #0
|
||||
// [5] phi puta::ph#2 = 4 [phi:main->puta#1] -- vbuxx=vbuc1
|
||||
ldx #4
|
||||
jsr puta
|
||||
// [2] phi from main to main::@1 [phi:main->main::@1]
|
||||
// main::@1
|
||||
// puta(5, 0x18)
|
||||
// [3] call puta
|
||||
// [5] phi from main::@1 to puta [phi:main::@1->puta]
|
||||
// [5] phi puta::pl#2 = $18 [phi:main::@1->puta#0] -- vbuxx=vbuc1
|
||||
ldx #$18
|
||||
// [5] phi puta::ph#2 = 5 [phi:main::@1->puta#1] -- vbuaa=vbuc1
|
||||
lda #5
|
||||
// [5] phi puta::pl#2 = $18 [phi:main::@1->puta#0] -- vbuaa=vbuc1
|
||||
lda #$18
|
||||
// [5] phi puta::ph#2 = 5 [phi:main::@1->puta#1] -- vbuxx=vbuc1
|
||||
ldx #5
|
||||
jsr puta
|
||||
// main::@return
|
||||
// }
|
||||
@ -314,13 +314,13 @@ main: {
|
||||
rts
|
||||
}
|
||||
// puta
|
||||
// puta(byte register(A) ph, byte register(X) pl)
|
||||
// puta(byte register(X) ph, byte register(A) pl)
|
||||
puta: {
|
||||
.label screen = 2
|
||||
// screen = (byte*) { ph, pl }
|
||||
// [6] puta::screen#0 = puta::ph#2 w= puta::pl#2 -- vwuz1=vbuaa_word_vbuxx
|
||||
sta.z screen+1
|
||||
stx.z screen
|
||||
// [6] puta::screen#0 = puta::ph#2 w= puta::pl#2 -- vwuz1=vbuxx_word_vbuaa
|
||||
stx.z screen+1
|
||||
sta.z screen
|
||||
// *screen = 'a'
|
||||
// [7] *((byte*)puta::screen#0) = 'a' -- _deref_pbuz1=vbuc1
|
||||
lda #'a'
|
||||
|
@ -1,12 +1,12 @@
|
||||
void main()
|
||||
void puta(byte puta::ph , byte puta::pl)
|
||||
byte puta::ph
|
||||
byte puta::ph#2 reg byte a 11.0
|
||||
byte puta::ph#2 reg byte x 11.0
|
||||
byte puta::pl
|
||||
byte puta::pl#2 reg byte x 11.0
|
||||
byte puta::pl#2 reg byte a 11.0
|
||||
byte* puta::screen
|
||||
word puta::screen#0 screen zp[2]:2 11.0
|
||||
|
||||
reg byte a [ puta::ph#2 ]
|
||||
reg byte x [ puta::pl#2 ]
|
||||
reg byte x [ puta::ph#2 ]
|
||||
reg byte a [ puta::pl#2 ]
|
||||
zp[2]:2 [ puta::screen#0 ]
|
||||
|
@ -173,11 +173,10 @@ Allocated zp[1]:2 [ main::h#4 main::h#1 ]
|
||||
Allocated zp[1]:3 [ main::l#2 main::l#1 ]
|
||||
Allocated zp[2]:4 [ main::w#0 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [3] main::w#0 = main::his[main::h#4] w= main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( [ main::h#4 main::l#2 main::w#0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::h#4 main::h#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::l#2 main::l#1 ]
|
||||
Statement [4] *((byte*)main::w#0) = '*' [ main::h#4 main::l#2 ] ( [ main::h#4 main::l#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::h#4 main::h#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::h#4 main::h#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::l#2 main::l#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::l#2 main::l#1 ]
|
||||
Statement [3] main::w#0 = main::his[main::h#4] w= main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( [ main::h#4 main::l#2 main::w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [4] *((byte*)main::w#0) = '*' [ main::h#4 main::l#2 ] ( [ main::h#4 main::l#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
|
@ -4967,26 +4967,16 @@ Statement [79] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
||||
Statement [80] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [81] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
||||
Statement [82] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [83] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [84] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [85] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [87] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [88] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [89] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:108 [ init_angle_screen::ang_w#0 ]
|
||||
Statement [92] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:108 [ init_angle_screen::ang_w#0 ]
|
||||
Statement [93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [94] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [96] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
||||
Statement [101] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a
|
||||
Statement [102] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a
|
||||
Statement [106] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#19 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 ] { } ) always clobbers reg byte a
|
||||
@ -5121,21 +5111,16 @@ Statement [74] init_angle_screen::screen_topline#1 = init_angle_screen::screen_t
|
||||
Statement [75] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
|
||||
Statement [79] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [80] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [81] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [82] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [83] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [84] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [85] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [87] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [88] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [89] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [92] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
||||
Statement [93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [94] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [96] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
||||
Statement [101] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a
|
||||
Statement [102] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a
|
||||
Statement [106] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#19 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 ] { } ) always clobbers reg byte a
|
||||
@ -5244,21 +5229,16 @@ Statement [74] init_angle_screen::screen_topline#1 = init_angle_screen::screen_t
|
||||
Statement [75] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
|
||||
Statement [79] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [80] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [81] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [82] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [83] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [84] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [85] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [87] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [88] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [89] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [92] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
||||
Statement [93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [94] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [96] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
||||
Statement [101] *((word*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a
|
||||
Statement [102] *((byte*)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a
|
||||
Statement [106] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#19 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 ] { } ) always clobbers reg byte a
|
||||
@ -5345,11 +5325,11 @@ Potential registers zp[1]:11 [ init_dist_screen::yd#0 init_dist_screen::$7 init_
|
||||
Potential registers zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ] : zp[1]:12 , reg byte x ,
|
||||
Potential registers zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] : zp[1]:13 , reg byte x ,
|
||||
Potential registers zp[1]:14 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:15 , reg byte x ,
|
||||
Potential registers zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:15 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:16 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] : zp[2]:16 ,
|
||||
Potential registers zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] : zp[2]:18 ,
|
||||
Potential registers zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:20 , reg byte x ,
|
||||
Potential registers zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:21 , reg byte x ,
|
||||
Potential registers zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:20 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:21 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:22 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ] : zp[2]:22 ,
|
||||
Potential registers zp[2]:24 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ] : zp[2]:24 ,
|
||||
Potential registers zp[1]:26 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] : zp[1]:26 , reg byte x ,
|
||||
@ -5403,7 +5383,7 @@ Potential registers zp[2]:100 [ atan2_16::y#0 ] : zp[2]:100 ,
|
||||
Potential registers zp[2]:102 [ atan2_16::return#2 ] : zp[2]:102 ,
|
||||
Potential registers zp[2]:104 [ init_angle_screen::angle_w#0 ] : zp[2]:104 ,
|
||||
Potential registers zp[2]:106 [ init_angle_screen::$7 ] : zp[2]:106 ,
|
||||
Potential registers zp[1]:108 [ init_angle_screen::ang_w#0 ] : zp[1]:108 , reg byte x ,
|
||||
Potential registers zp[1]:108 [ init_angle_screen::ang_w#0 ] : zp[1]:108 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:109 [ init_angle_screen::$9 ] : zp[1]:109 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:110 [ init_angle_screen::$10 ] : zp[1]:110 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:111 [ init_angle_screen::$11 ] : zp[1]:111 , reg byte a , reg byte x , reg byte y ,
|
||||
@ -5469,7 +5449,7 @@ Uplifting [sqrt] best 1342197 combination zp[2]:141 [ sqrt::found#0 ] zp[2]:143
|
||||
Uplifting [memset] best 1342181 combination zp[2]:32 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:123 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:29 [ memset::str#3 ]
|
||||
Uplifting [sqr] best 1341844 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:135 [ sqr::return#0 ] zp[2]:81 [ sqr::return#3 ] zp[2]:76 [ sqr::return#2 ]
|
||||
Uplifting [init_angle_screen] best 1340244 combination zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] zp[2]:104 [ init_angle_screen::angle_w#0 ] zp[2]:106 [ init_angle_screen::$7 ] zp[1]:109 [ init_angle_screen::$9 ] zp[1]:110 [ init_angle_screen::$10 ] zp[1]:111 [ init_angle_screen::$11 ] zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:108 [ init_angle_screen::ang_w#0 ] zp[2]:96 [ init_angle_screen::yw#0 ] zp[2]:93 [ init_angle_screen::xw#0 ] zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:16 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] zp[2]:73 [ init_angle_screen::screen#0 ]
|
||||
Limited combination testing to 100 combinations of 65536 possible.
|
||||
Limited combination testing to 100 combinations of 331776 possible.
|
||||
Uplifting [init_dist_screen] best 1337044 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:83 [ init_dist_screen::xds#0 ] zp[2]:85 [ init_dist_screen::ds#0 ] zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:11 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:75 [ init_dist_screen::y2#0 ] zp[1]:6 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:9 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[2]:7 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:78 [ init_dist_screen::yds#0 ]
|
||||
Limited combination testing to 100 combinations of 6144 possible.
|
||||
Uplifting [init_squares] best 1336844 combination reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp[2]:47 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] zp[2]:45 [ init_squares::sqr#2 init_squares::sqr#1 ]
|
||||
|
@ -2319,26 +2319,16 @@ Statement [55] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
||||
Statement [56] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [57] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
||||
Statement [58] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [59] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [60] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [61] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [63] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [64] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [65] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [67] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:80 [ init_angle_screen::ang_w#0 ]
|
||||
Statement [68] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:80 [ init_angle_screen::ang_w#0 ]
|
||||
Statement [69] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [70] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [71] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [72] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [73] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
||||
Statement [76] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:8 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||
Statement [78] print_uint_at::w#0 = > print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:13 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||
Statement [80] print_uint_at::w#1 = < print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:13 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||
@ -2405,21 +2395,16 @@ Statement [50] init_angle_screen::screen_topline#1 = init_angle_screen::screen_t
|
||||
Statement [51] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
|
||||
Statement [55] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [56] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [57] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [58] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [59] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [60] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [61] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [63] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [64] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [65] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [67] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [67] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [68] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
||||
Statement [69] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [70] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [71] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [72] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [73] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( init_angle_screen:6 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
||||
Statement [76] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:8 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||
Statement [78] print_uint_at::w#0 = > print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:13 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||
Statement [80] print_uint_at::w#1 = < print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:13 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||
@ -2464,11 +2449,11 @@ Potential registers zp[2]:7 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#
|
||||
Potential registers zp[1]:9 [ init_font_hex::c1#4 init_font_hex::c1#1 ] : zp[1]:9 , reg byte x ,
|
||||
Potential registers zp[1]:10 [ init_font_hex::i#2 init_font_hex::i#1 ] : zp[1]:10 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:11 [ init_font_hex::idx#5 init_font_hex::idx#2 ] : zp[1]:11 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:12 , reg byte x ,
|
||||
Potential registers zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:12 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:13 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ] : zp[2]:13 ,
|
||||
Potential registers zp[2]:15 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] : zp[2]:15 ,
|
||||
Potential registers zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:17 , reg byte x ,
|
||||
Potential registers zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:18 , reg byte x ,
|
||||
Potential registers zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:17 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:18 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:19 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] : zp[2]:19 ,
|
||||
Potential registers zp[2]:21 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] : zp[2]:21 ,
|
||||
Potential registers zp[1]:23 [ atan2_16::i#2 atan2_16::i#1 ] : zp[1]:23 , reg byte x , reg byte y ,
|
||||
@ -2501,7 +2486,7 @@ Potential registers zp[2]:72 [ atan2_16::y#0 ] : zp[2]:72 ,
|
||||
Potential registers zp[2]:74 [ atan2_16::return#2 ] : zp[2]:74 ,
|
||||
Potential registers zp[2]:76 [ init_angle_screen::angle_w#0 ] : zp[2]:76 ,
|
||||
Potential registers zp[2]:78 [ init_angle_screen::$7 ] : zp[2]:78 ,
|
||||
Potential registers zp[1]:80 [ init_angle_screen::ang_w#0 ] : zp[1]:80 , reg byte x ,
|
||||
Potential registers zp[1]:80 [ init_angle_screen::ang_w#0 ] : zp[1]:80 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:81 [ init_angle_screen::$9 ] : zp[1]:81 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:82 [ init_angle_screen::$10 ] : zp[1]:82 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:83 [ init_angle_screen::$11 ] : zp[1]:83 , reg byte a , reg byte x , reg byte y ,
|
||||
@ -2534,7 +2519,7 @@ Uplifting [init_font_hex] best 1138259 combination reg byte x [ init_font_hex::i
|
||||
Limited combination testing to 100 combinations of 6912 possible.
|
||||
Uplifting [print_char_at] best 1138252 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:41 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Uplifting [init_angle_screen] best 1136652 combination zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] zp[2]:76 [ init_angle_screen::angle_w#0 ] zp[2]:78 [ init_angle_screen::$7 ] zp[1]:81 [ init_angle_screen::$9 ] zp[1]:82 [ init_angle_screen::$10 ] zp[1]:83 [ init_angle_screen::$11 ] zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:80 [ init_angle_screen::ang_w#0 ] zp[2]:68 [ init_angle_screen::yw#0 ] zp[2]:65 [ init_angle_screen::xw#0 ] zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:15 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] zp[2]:13 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ]
|
||||
Limited combination testing to 100 combinations of 65536 possible.
|
||||
Limited combination testing to 100 combinations of 331776 possible.
|
||||
Uplifting [print_uchar_at] best 1136644 combination reg byte a [ print_uchar_at::$0 ] reg byte y [ print_uchar_at::$2 ] zp[2]:38 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] zp[1]:37 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplifting [print_uint_at] best 1136644 combination zp[2]:33 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] zp[2]:35 [ print_uint_at::at#2 ]
|
||||
Uplifting [clock] best 1136644 combination zp[4]:84 [ clock::return#0 ] zp[4]:43 [ clock::return#2 ]
|
||||
|
@ -4507,26 +4507,16 @@ Statement [106] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
||||
Statement [107] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [108] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
||||
Statement [109] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [110] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [111] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [112] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [114] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [115] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [116] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [118] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:124 [ init_angle_screen::ang_w#0 ]
|
||||
Statement [119] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:124 [ init_angle_screen::ang_w#0 ]
|
||||
Statement [120] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [121] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [122] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [123] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [124] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
||||
Statement [129] ((byte*)BUCKET_SIZES#0)[init_buckets::i#2] = 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:29 [ init_buckets::i#2 init_buckets::i#1 ]
|
||||
Statement [132] init_buckets::dist#6 = init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] { } ) always clobbers reg byte a
|
||||
@ -4666,21 +4656,16 @@ Statement [101] init_angle_screen::screen_topline#1 = init_angle_screen::screen_
|
||||
Statement [102] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
|
||||
Statement [106] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [107] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [108] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [109] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [110] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [111] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [112] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [114] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [115] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [116] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [118] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [118] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [119] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
||||
Statement [120] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [121] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [122] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [123] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [124] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
||||
Statement [129] ((byte*)BUCKET_SIZES#0)[init_buckets::i#2] = 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [132] init_buckets::dist#6 = init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] { } ) always clobbers reg byte a
|
||||
Statement [134] ((byte*)BUCKET_SIZES#0)[*init_buckets::dist#4] = ++ ((byte*)BUCKET_SIZES#0)[*init_buckets::dist#4] [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
@ -4806,21 +4791,16 @@ Statement [101] init_angle_screen::screen_topline#1 = init_angle_screen::screen_
|
||||
Statement [102] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
|
||||
Statement [106] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [107] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [108] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [109] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [110] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [111] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [112] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [114] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [115] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [116] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [118] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [118] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [119] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
||||
Statement [120] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [121] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [122] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [123] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [124] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
||||
Statement [129] ((byte*)BUCKET_SIZES#0)[init_buckets::i#2] = 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [132] init_buckets::dist#6 = init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] { } ) always clobbers reg byte a
|
||||
Statement [134] ((byte*)BUCKET_SIZES#0)[*init_buckets::dist#4] = ++ ((byte*)BUCKET_SIZES#0)[*init_buckets::dist#4] [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
@ -4910,11 +4890,11 @@ Potential registers zp[1]:18 [ init_dist_screen::yd#0 init_dist_screen::$7 init_
|
||||
Potential registers zp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ] : zp[1]:19 , reg byte x ,
|
||||
Potential registers zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] : zp[1]:20 , reg byte x ,
|
||||
Potential registers zp[1]:21 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] : zp[1]:21 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:22 , reg byte x ,
|
||||
Potential registers zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:22 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:23 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] : zp[2]:23 ,
|
||||
Potential registers zp[2]:25 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] : zp[2]:25 ,
|
||||
Potential registers zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:27 , reg byte x ,
|
||||
Potential registers zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:28 , reg byte x ,
|
||||
Potential registers zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:27 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:28 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:29 [ init_buckets::i#2 init_buckets::i#1 ] : zp[1]:29 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:30 [ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ] : zp[2]:30 ,
|
||||
Potential registers zp[2]:32 [ init_buckets::i1#2 init_buckets::i1#1 ] : zp[2]:32 ,
|
||||
@ -4971,7 +4951,7 @@ Potential registers zp[2]:116 [ atan2_16::y#0 ] : zp[2]:116 ,
|
||||
Potential registers zp[2]:118 [ atan2_16::return#2 ] : zp[2]:118 ,
|
||||
Potential registers zp[2]:120 [ init_angle_screen::angle_w#0 ] : zp[2]:120 ,
|
||||
Potential registers zp[2]:122 [ init_angle_screen::$7 ] : zp[2]:122 ,
|
||||
Potential registers zp[1]:124 [ init_angle_screen::ang_w#0 ] : zp[1]:124 , reg byte x ,
|
||||
Potential registers zp[1]:124 [ init_angle_screen::ang_w#0 ] : zp[1]:124 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:125 [ init_angle_screen::$9 ] : zp[1]:125 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:126 [ init_angle_screen::$10 ] : zp[1]:126 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:127 [ init_angle_screen::$11 ] : zp[1]:127 , reg byte a , reg byte x , reg byte y ,
|
||||
@ -5028,7 +5008,7 @@ Limited combination testing to 100 combinations of 144 possible.
|
||||
Uplifting [sqrt] best 1229098 combination zp[2]:159 [ sqrt::found#0 ] zp[2]:161 [ sqrt::$2 ] zp[2]:103 [ sqrt::val#0 ] zp[2]:163 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ]
|
||||
Uplifting [sqr] best 1228761 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:153 [ sqr::return#0 ] zp[2]:97 [ sqr::return#3 ] zp[2]:92 [ sqr::return#2 ]
|
||||
Uplifting [init_angle_screen] best 1227161 combination zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] zp[2]:120 [ init_angle_screen::angle_w#0 ] zp[2]:122 [ init_angle_screen::$7 ] zp[1]:125 [ init_angle_screen::$9 ] zp[1]:126 [ init_angle_screen::$10 ] zp[1]:127 [ init_angle_screen::$11 ] zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:124 [ init_angle_screen::ang_w#0 ] zp[2]:112 [ init_angle_screen::yw#0 ] zp[2]:109 [ init_angle_screen::xw#0 ] zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:25 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:23 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] zp[2]:76 [ init_angle_screen::screen#0 ]
|
||||
Limited combination testing to 100 combinations of 65536 possible.
|
||||
Limited combination testing to 100 combinations of 331776 possible.
|
||||
Uplifting [init_dist_screen] best 1223961 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:99 [ init_dist_screen::xds#0 ] zp[2]:101 [ init_dist_screen::ds#0 ] zp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:18 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:91 [ init_dist_screen::y2#0 ] zp[1]:13 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:16 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[2]:14 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:94 [ init_dist_screen::yds#0 ]
|
||||
Limited combination testing to 100 combinations of 6144 possible.
|
||||
Uplifting [init_squares] best 1223761 combination reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp[2]:44 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] zp[2]:42 [ init_squares::sqr#2 init_squares::sqr#1 ]
|
||||
|
@ -3418,26 +3418,16 @@ Statement [85] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
||||
Statement [86] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [87] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
||||
Statement [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [93] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [94] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:98 [ init_angle_screen::ang_w#0 ]
|
||||
Statement [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:98 [ init_angle_screen::ang_w#0 ]
|
||||
Statement [99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
||||
Statement [108] SQUARES#0 = (void*)malloc::mem#0 [ SQUARES#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
||||
Statement [109] init_squares::squares#0 = (word*)SQUARES#0 [ SQUARES#0 init_squares::squares#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::squares#0 ] { } ) always clobbers reg byte a
|
||||
Statement [113] *init_squares::squares#2 = init_squares::sqr#2 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
@ -3541,21 +3531,16 @@ Statement [80] init_angle_screen::screen_topline#1 = init_angle_screen::screen_t
|
||||
Statement [81] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
|
||||
Statement [85] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [86] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [87] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [93] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [94] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
||||
Statement [99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
||||
Statement [108] SQUARES#0 = (void*)malloc::mem#0 [ SQUARES#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
||||
Statement [109] init_squares::squares#0 = (word*)SQUARES#0 [ SQUARES#0 init_squares::squares#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::squares#0 ] { } ) always clobbers reg byte a
|
||||
Statement [113] *init_squares::squares#2 = init_squares::sqr#2 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
@ -3649,21 +3634,16 @@ Statement [80] init_angle_screen::screen_topline#1 = init_angle_screen::screen_t
|
||||
Statement [81] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
|
||||
Statement [85] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [86] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [87] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
||||
Statement [90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [93] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [94] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
||||
Statement [99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
||||
Statement [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
||||
Statement [103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
||||
Statement [108] SQUARES#0 = (void*)malloc::mem#0 [ SQUARES#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
||||
Statement [109] init_squares::squares#0 = (word*)SQUARES#0 [ SQUARES#0 init_squares::squares#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::squares#0 ] { } ) always clobbers reg byte a
|
||||
Statement [113] *init_squares::squares#2 = init_squares::sqr#2 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
@ -3731,11 +3711,11 @@ Potential registers zp[1]:23 [ init_dist_screen::yd#0 init_dist_screen::$7 init_
|
||||
Potential registers zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ] : zp[1]:24 , reg byte x ,
|
||||
Potential registers zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] : zp[1]:25 , reg byte x ,
|
||||
Potential registers zp[1]:26 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:27 , reg byte x ,
|
||||
Potential registers zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:27 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] : zp[2]:28 ,
|
||||
Potential registers zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] : zp[2]:30 ,
|
||||
Potential registers zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:32 , reg byte x ,
|
||||
Potential registers zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:33 , reg byte x ,
|
||||
Potential registers zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:32 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:33 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:34 [ init_squares::i#2 init_squares::i#1 ] : zp[1]:34 , reg byte x ,
|
||||
Potential registers zp[2]:35 [ init_squares::sqr#2 init_squares::sqr#1 ] : zp[2]:35 ,
|
||||
Potential registers zp[2]:37 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] : zp[2]:37 ,
|
||||
@ -3774,7 +3754,7 @@ Potential registers zp[2]:90 [ atan2_16::y#0 ] : zp[2]:90 ,
|
||||
Potential registers zp[2]:92 [ atan2_16::return#2 ] : zp[2]:92 ,
|
||||
Potential registers zp[2]:94 [ init_angle_screen::angle_w#0 ] : zp[2]:94 ,
|
||||
Potential registers zp[2]:96 [ init_angle_screen::$7 ] : zp[2]:96 ,
|
||||
Potential registers zp[1]:98 [ init_angle_screen::ang_w#0 ] : zp[1]:98 , reg byte x ,
|
||||
Potential registers zp[1]:98 [ init_angle_screen::ang_w#0 ] : zp[1]:98 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:99 [ init_angle_screen::$9 ] : zp[1]:99 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:100 [ init_angle_screen::$10 ] : zp[1]:100 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:101 [ init_angle_screen::$11 ] : zp[1]:101 , reg byte a , reg byte x , reg byte y ,
|
||||
@ -3816,7 +3796,7 @@ Limited combination testing to 100 combinations of 144 possible.
|
||||
Uplifting [sqrt] best 1222383 combination zp[2]:113 [ sqrt::found#0 ] zp[2]:115 [ sqrt::$2 ] zp[2]:77 [ sqrt::val#0 ] zp[2]:117 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ]
|
||||
Uplifting [sqr] best 1222046 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:107 [ sqr::return#0 ] zp[2]:71 [ sqr::return#3 ] zp[2]:66 [ sqr::return#2 ]
|
||||
Uplifting [init_angle_screen] best 1220446 combination zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] zp[2]:94 [ init_angle_screen::angle_w#0 ] zp[2]:96 [ init_angle_screen::$7 ] zp[1]:99 [ init_angle_screen::$9 ] zp[1]:100 [ init_angle_screen::$10 ] zp[1]:101 [ init_angle_screen::$11 ] zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:98 [ init_angle_screen::ang_w#0 ] zp[2]:86 [ init_angle_screen::yw#0 ] zp[2]:83 [ init_angle_screen::xw#0 ] zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] zp[2]:63 [ init_angle_screen::screen#0 ]
|
||||
Limited combination testing to 100 combinations of 65536 possible.
|
||||
Limited combination testing to 100 combinations of 331776 possible.
|
||||
Uplifting [init_dist_screen] best 1217246 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:73 [ init_dist_screen::xds#0 ] zp[2]:75 [ init_dist_screen::ds#0 ] zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:23 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:65 [ init_dist_screen::y2#0 ] zp[1]:18 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:21 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[2]:19 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:68 [ init_dist_screen::yds#0 ]
|
||||
Limited combination testing to 100 combinations of 6144 possible.
|
||||
Uplifting [init_squares] best 1217046 combination reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp[2]:37 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] zp[2]:35 [ init_squares::sqr#2 init_squares::sqr#1 ]
|
||||
|
Loading…
x
Reference in New Issue
Block a user