:##%##########:: про кодинг?.. ::###########%##:
(с) Dark^х-trade
Dithering 2*2=1b ;)
1. Для вывода одной строки:
POP hl ; hl = tttcccco tttcccco ==> 8k table
lD A,(hl);(hl)= ddddoooo
POP hl
InC l
OR (hl) ;(hl)= oooodddd
lD (DE),A
InC Е
итого: ч9 тактов = 12.25т/о.5п = 2ч.5т/п
на полный экран (12288 байт) т.о. уйдет
эо1o5b тактов = ч.2 фрейма :( так что актуален
интерлейсинг - в первом кадре рисуются четные
строки, во втором нечетные. Это не только вдвое
сократит время дитеринга, но еще и организует
подобие motion blur'а :)
Естественно, это надо делать на одном
экране, иначе будет каша.
2. Для вывода двух строк:
как всегда рисуем меандром (змейкой).
POP hl ;ttocccco ttocccco ==> 1bk table
lD C,(hl);lllloooo нижняя строка
InC l
lD A,(hl);hhhhoooo верхняя строка
POP hl
SEt 5,l
OR (hl); oooohhhh
lD (DE),A
InC D
InC l
lD A,C
OR (hl); oooollll
lD (DE),A
InC Е
;9о
POP hl
lD A,(hl);lllloooo
InC l
lD C,(hl);hhhhoooo
POP hl
SEt 5,l
InC l
OR (hl); oooollll
lD (DE),A
DEC D
DEC l
lD A,C
OR (hl); oooohhhh
lD (DE),A
InC Е
;9ч
;9о*9ч=18ч на 8 полных пикселей = 2э т/п
т.о. вырвали еще 1.5 т/п Ура!
теперь вывод всего экрана занимает 282b2ч
такта.
поте: не следует забывать, что паттерн имеет
размер ч*ч, посему для случая (1) надо на каждую
строку менять таблицу (ч варианта). Для случая
(2) надо на каждую пару строк менять таблицу (2
варианта).
Other articles: