В общем, по просьбе breeze решил выложить исходник DDA-рисовалки линии. Сразу скажу, что привычных координат x\y здесь нет - есть стартовый адрес, fixedpoint 0:8 приращение для одной из осей и количество шагов для противоположной, короче, вспоминайте матан
Вот сами процiдурки отдельно:
- Code: Select all
; вход для x_line и y_line:
; DE - стартовый адрес на экране, переменная ScrPage где-то в памяти - номер текущей банки
; B - длина линии по одной из осей, C - fixedpoint 0:8 приращения для другой
; H - цвет линии; L = 0!
x_line
; tryin' to write it :)
ld a, l
add c
ld l, a
jr nc, x_no_inc
inc d
inc d
jr nz, x_no_switch
exx
ld a, (ScrPage)
inc a
ld (ScrPage), a
ld bc, PAGE3
out (c), a
exx
ld d, #C0
x_no_switch
x_no_inc
ld a, h
ld (de), a
inc e ; inc\dec e for direction change
djnz x_line
ret
y_line
; tryin' to write it :)
ld a, l
add c
ld l, a
jr nc, y_no_inc
inc e ; inc\dec e for direction change
y_no_inc
ld a, h
ld (de), a
inc d
inc d
jr nz, y_no_switch
exx
ld a, (ScrPage)
inc a
ld (ScrPage), a
ld bc, PAGE3
out (c), a
exx
ld d, #C0
y_no_switch
djnz y_line
ret