спасиб добрый чилавек:)
Вид для печати
спасиб добрый чилавек:)
Таблица 512 байт под автомаски слева и справа - бывает расточительно.
Поэтому написал такие процедуры получения автомасок:
Код:; получение автомаски справа для байта изображения
; входные параметры: A = байт изображения
; выходные параметры: C = байт изображения, B = автомаска
RMASK LD C,A
LD B,255
RRCA
RET C
SLA B
RRCA
RET C
SLA B
RRCA
RET C
SLA B
RRCA
RET C
SLA B
RRCA
RET C
SLA B
RRCA
RET C
SLA B
RRCA
RET C
SLA B
RRCA
RET C
SLA B
RET
; получение автомаски слева для байта изображения
; входные параметры: A = байт изображения
; выходные параметры: C = байт изображения, B = автомаска
LMASK LD C,A
LD B,255
RLCA
RET C
SRL B
RLCA
RET C
SRL B
RLCA
RET C
SRL B
RLCA
RET C
SRL B
RLCA
RET C
SRL B
RLCA
RET C
SRL B
RLCA
RET C
SRL B
RLCA
RET C
SRL B
RET
Andrew771 это не очень хороший вариант
для очень частных случаев
если у тебя спрайт шириной 1 знакоместо твой вариант не годится
Это уже не спрайт, а строка символов. :)
Да, эти процедуры только для масок слева или справа. А если нужно сверху или снизу, то нужно просматривать все 8 байтов знакоместа (или хотя бы 4, смотря какие "рваные" края). А таблица масок (если делать через таблицу) вырастет до 1 кб. :)
Andrew771, сколько спрайтов с автомаской 3*3 ты выведешь во фрейм этой процедурой
Во фрейм мало, не знаю сколько. А вот здесь моя заготовка будущей игры: http://zx.pk.ru/showpost.php?p=369513&postcount=177
Три четверти экрана выводится из четвертинок спрайтов, отзеркаливаемых и автомаскируемых друг с другом. Вроде приемлемая скорость.
ага видел, неплохо для пошаговой РПГ
посчитай сколько тактов у тебя тратится на разворот 1 байта в худшем случае
и потом рассмотри вариант
ld c,a
ld a,(bc)
кстати по скорости посмотри
barbarian
с адреса #8fb5 вывод строки спрайта
с адреса #9048 конкретно преобразование
но у них формат спрайтов чуть другой - поудобнее для такого вывода и маска получается правильная
а таблиц кстати надо 3
для вырезания маски слева
для вырезания маски справа
и для вырезания маски с обеих сторон - 768 байт
Про barbarian - да, там быстро, но всего два человечка прыгают. А у меня весь экран перерисовывается при каждом ходе.
Я всё-таки сделал маски и зеркала через таблицы. Пришлось пожертвовать 768 байт (левая маска, правая маска, зеркало. Вырезание с обеих сторон мне не нужно). Ощутимо быстрее стало.
2 человечка это видимость :) там много чего копируется
показывай код :)
Выложил тут: http://zx.pk.ru/showpost.php?p=369689&postcount=184
Отвечай по возможности там же, чтобы здесь не флеймить не по теме. :)