Psychoz #11 |
|
Кодинг - Dithеring: Для вывода одной строки, для вывода двух строк.
:##%##########:: про кодинг?.. ::###########%##: (с) 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 варианта).
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября