Кодинг - Бросаю сюды процедуру вывода спрайтов, с точностью до пиксела от самого Славы Медноногова.
-+++++++++++++++++++++++++++++++++++++++-
КОДИНГ
-+++++++++++++++++++++++++++++++++++++++-
Закодено by Sokol/Infotek
Бросаю сюды процедуру вывода спрай-
тов, с точностью до пиксела от самого
Славы Медноногова; кстати применяемую в
Чёрном Вороне:
;E-маска,D-байт спрайта, HL- по-
зиция в экране.
НЕЗ LD A,E ;вывод маски по AND
RRCA
RRCA
RRCA
RRCA
LD C,A
AND #1F
AND (HL)
LD (HL),A
LD A,C
AND #E0
INC L
AND (HL)
LD (HL),A
;
LD A,D ;вывод спрайта по OR
RRCA
RRCA
RRCA
LD C,A
AND #E0
OR (HL)
LD (HL),A
LD A,C
AND #1F
DEC L
OR (HL)
LD (HL),A
Пример взят из ЧВ. Что там было в
НЛО-2 - я смутно помню :)))
Могу дополнить:
а) для скорости выборка спрайта -
стеком (т.е. этот кусок предваряется POP
DE). Соответственно, спрайт хранится -
"байт маски", "байт изображения","байт
маски", "байт изображения","байт маски",
"байт изображения"...
б) завершается этот кусок, конечно,
командами по организации цикла (переходом
к след. строке экрана).
в) поэтому для унификации вывода
спрайты любой ширины хранятся по столбцам
г) всего таких п/п - 8 штук. Если не-
обходимо обрезать спрайты по правой/левой
границе экрана - будет ещё 8+8 п/п
д) (в примере маска/спрайт выводятся
по AND/OR, однако на самом деле я в ЧВ
вывожу по OR/XOR :)))
Хотелось бы узнать (у демомейкеров,
конечно :) - возможно ли выводить быстре-
е? В голову лезет мысль хранить заранее
все сдвиги на все байты (получим два бай-
та), но только табличка будет 256*8*2
=8-[ ]
(c)Copper Feet
Другие статьи номера:
|
|
|
|
Кодинг - Бросаю сюды процедуру вывода спрайтов, с точностью до пиксела от самого Славы Медноногова.
|
|
|
|
|
|
|