reduse linedraw cpu cyckles before the loop
This commit is contained in:
parent
e23896d9f9
commit
b4860b000c
4 changed files with 61 additions and 18 deletions
|
@ -22,9 +22,8 @@
|
|||
SEC
|
||||
LDA dx
|
||||
SBC dy
|
||||
Mult_16 A, V +1
|
||||
STA V
|
||||
Mult_16 V, V +1
|
||||
|
||||
;dy_2 = dy*2
|
||||
Mult_16 dy_2, dy_2 +1 ;>dy_2 = dy (same address)
|
||||
|
||||
|
@ -39,9 +38,21 @@
|
|||
;; and to its branch logic later in the loop.
|
||||
|
||||
;;D = 2*dy - dx + 2*255
|
||||
Mov_16 D, D + 1, dy_2, dy_2 + 1
|
||||
Add_16 D, D + 1, #$ff, #$01, !
|
||||
Sub_16 D, D + 1, dx, #$00
|
||||
LDA dy_2
|
||||
ADC #$ff
|
||||
TAX
|
||||
LDA dy + 1
|
||||
ADC #$01
|
||||
TAY
|
||||
|
||||
SEC
|
||||
TXA
|
||||
SBC dx
|
||||
STA D
|
||||
TYA
|
||||
SBC #$00
|
||||
STA D + 1
|
||||
|
||||
selfmod:
|
||||
;; Self modifying code. Makes LDA and SBC instructions each take 1 cycle less.
|
||||
;; You can remove this if you run the loop without # at dy_2 and V.
|
||||
|
|
|
@ -19,15 +19,25 @@
|
|||
SEC
|
||||
LDA dy
|
||||
SBC dx
|
||||
Mult_16 A, V + 1
|
||||
STA V
|
||||
Mult_16 V, V + 1
|
||||
|
||||
Mult_16 dx_2, dx_2 + 1
|
||||
|
||||
Mov_16 D, D + 1, dx_2, dx_2 + 1
|
||||
Add_16 D, D + 1, #$ff, #$01, !
|
||||
Sub_16 D, D + 1, dy, #$00
|
||||
LDA dx_2
|
||||
ADC #$ff
|
||||
TAX
|
||||
LDA dx + 1
|
||||
ADC #$01
|
||||
TAY
|
||||
|
||||
SEC
|
||||
TXA
|
||||
SBC dy
|
||||
STA D
|
||||
TYA
|
||||
SBC #$00
|
||||
STA D + 1
|
||||
|
||||
selfmod:
|
||||
LDA dx_2
|
||||
|
|
|
@ -21,14 +21,25 @@
|
|||
SEC
|
||||
LDA dx
|
||||
SBC dy
|
||||
Mult_16 A, V + 1
|
||||
STA V
|
||||
Mult_16 V, V + 1
|
||||
|
||||
Mult_16 dy_2, dy_2 + 1
|
||||
|
||||
Mov_16 D, D + 1, dy_2, dy_2 + 1
|
||||
Add_16 D, D + 1, #$ff, #$01, !
|
||||
Sub_16 D, D + 1, dx, #$00
|
||||
|
||||
LDA dy_2
|
||||
ADC #$ff
|
||||
TAX
|
||||
LDA dy + 1
|
||||
ADC #$01
|
||||
TAY
|
||||
|
||||
SEC
|
||||
TXA
|
||||
SBC dx
|
||||
STA D
|
||||
TYA
|
||||
SBC #$00
|
||||
STA D + 1
|
||||
|
||||
selfmod:
|
||||
LDA dy_2
|
||||
|
|
|
@ -20,14 +20,25 @@
|
|||
SEC
|
||||
LDA dy
|
||||
SBC dx
|
||||
Mult_16 A, V + 1
|
||||
STA V
|
||||
Mult_16 V, V + 1
|
||||
|
||||
Mult_16 dx_2, dx_2 + 1
|
||||
|
||||
Mov_16 D, D + 1, dx_2, dx_2 + 1
|
||||
Add_16 D, D + 1, #$ff, #$01, !
|
||||
Sub_16 D, D + 1, dy, #$00
|
||||
LDA dx_2
|
||||
ADC #$ff
|
||||
TAX
|
||||
LDA dx + 1
|
||||
ADC #$01
|
||||
TAY
|
||||
|
||||
SEC
|
||||
TXA
|
||||
SBC dy
|
||||
STA D
|
||||
TYA
|
||||
SBC #$00
|
||||
STA D + 1
|
||||
|
||||
selfmod:
|
||||
LDA dx_2
|
||||
|
|
Loading…
Add table
Reference in a new issue