mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-22 14:29:00 +00:00
graphics: lines_small, more compact
This commit is contained in:
parent
094141a7d3
commit
244e0ea558
@ -16,6 +16,9 @@
|
|||||||
; 161 -- merge absolute_value/negative code
|
; 161 -- merge absolute_value/negative code
|
||||||
; 159 -- merging init X/Y paths
|
; 159 -- merging init X/Y paths
|
||||||
; 156 -- more merging X/Y init
|
; 156 -- more merging X/Y init
|
||||||
|
; 154 -- note PLOT doesn't touch Y
|
||||||
|
; 152 -- merge into common_inc
|
||||||
|
; 151 -- share an RTS
|
||||||
|
|
||||||
B_X1 = $F0
|
B_X1 = $F0
|
||||||
B_Y1 = $F1
|
B_Y1 = $F1
|
||||||
@ -43,7 +46,6 @@ lines_loop:
|
|||||||
lda #0
|
lda #0
|
||||||
sta B_X1
|
sta B_X1
|
||||||
lda #36
|
lda #36
|
||||||
; lda #35
|
|
||||||
sta B_Y2
|
sta B_Y2
|
||||||
|
|
||||||
lda COUNT
|
lda COUNT
|
||||||
@ -99,17 +101,20 @@ init_bresenham:
|
|||||||
adc B_DX
|
adc B_DX
|
||||||
sta B_ERR
|
sta B_ERR
|
||||||
|
|
||||||
|
;======================
|
||||||
|
; iterative plot points
|
||||||
|
|
||||||
line_loop:
|
line_loop:
|
||||||
|
|
||||||
; plot X1,Y1
|
; plot X1,Y1
|
||||||
|
|
||||||
ldy B_X1
|
ldy B_X1
|
||||||
lda B_Y1
|
lda B_Y1
|
||||||
jsr PLOT ; PLOT AT Y,A
|
jsr PLOT ; PLOT AT Y,A (A colors output, Y preserved)
|
||||||
|
|
||||||
; check if hit end
|
; check if hit end
|
||||||
|
|
||||||
ldy B_X1
|
; ldy B_X1
|
||||||
cpy B_X2
|
cpy B_X2
|
||||||
bne line_no_end
|
bne line_no_end
|
||||||
|
|
||||||
@ -133,32 +138,32 @@ step_bresenham:
|
|||||||
; err = err + dy
|
; err = err + dy
|
||||||
; x1 = x1 + sx
|
; x1 = x1 + sx
|
||||||
; signed compare
|
; signed compare
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
clc
|
clc
|
||||||
cmp B_DY
|
cmp B_DY
|
||||||
beq do_x
|
beq do_x
|
||||||
|
|
||||||
sbc B_DY
|
sbc B_DY
|
||||||
bvc blah2
|
bvc blah2
|
||||||
eor #$80
|
eor #$80
|
||||||
blah2:
|
blah2:
|
||||||
bmi skip_x ; ble
|
bmi skip_x ; ble
|
||||||
|
|
||||||
do_x:
|
|
||||||
lda B_ERR
|
|
||||||
clc
|
|
||||||
adc B_DY
|
|
||||||
sta B_ERR
|
|
||||||
lda B_X1
|
|
||||||
|
|
||||||
clc
|
do_x:
|
||||||
adc B_SX
|
lda B_DY
|
||||||
sta B_X1
|
|
||||||
|
jsr common_inc
|
||||||
skip_x:
|
skip_x:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; if err2 <= dx:
|
; if err2 <= dx:
|
||||||
; err = err + dx
|
; err = err + dx
|
||||||
; y1 = y1 + sy
|
; y1 = y1 + sy
|
||||||
pla ; pop err2
|
pla ; pop err2
|
||||||
|
inx
|
||||||
|
|
||||||
clc ; signed compare
|
clc ; signed compare
|
||||||
sbc B_DX
|
sbc B_DX
|
||||||
@ -167,28 +172,37 @@ skip_x:
|
|||||||
blah:
|
blah:
|
||||||
bpl skip_y
|
bpl skip_y
|
||||||
|
|
||||||
do_inc_y:
|
do_y:
|
||||||
clc
|
lda B_DX
|
||||||
lda B_ERR
|
jsr common_inc
|
||||||
adc B_DX
|
|
||||||
sta B_ERR
|
|
||||||
|
|
||||||
clc
|
|
||||||
lda B_Y1
|
|
||||||
adc B_SY
|
|
||||||
sta B_Y1
|
|
||||||
|
|
||||||
skip_y:
|
skip_y:
|
||||||
|
|
||||||
jmp line_loop
|
jmp line_loop
|
||||||
|
|
||||||
|
|
||||||
|
;=====================================
|
||||||
|
; common increment
|
||||||
|
;=====================================
|
||||||
|
common_inc:
|
||||||
|
|
||||||
|
clc
|
||||||
|
adc B_ERR
|
||||||
|
sta B_ERR
|
||||||
|
|
||||||
|
lda B_X1,X
|
||||||
|
clc
|
||||||
|
adc B_SX,X
|
||||||
|
sta B_X1,X
|
||||||
done_line:
|
done_line:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
; take just subtracted value
|
;=====================================
|
||||||
; if negative, negate it, X=-1
|
; init, do the abs and sx calculations
|
||||||
; if positive, fine, X=1
|
; x=0, for X
|
||||||
|
; x=1, for Y
|
||||||
|
;=====================================
|
||||||
do_abs:
|
do_abs:
|
||||||
sec
|
sec
|
||||||
lda B_X1,X
|
lda B_X1,X
|
||||||
|
Loading…
x
Reference in New Issue
Block a user