ZXNet эхоконференция «hardware.zx»


тема: (Атрибутный APA-mode)



от: Dmitry Malychev
кому: All
дата: 09 Nov 2005
Hello, Lethargeek

Следующая мысль: если APA-графика сможет работать с той же скоростью, что и
спековская,
нафиг нужен отдельный SCF-режим с собственной логикой на видеокарте - если
можно настроить
обычный APA-режим на совместимость со стандартным спековским. Короче, "я тебя
породил,
я тебя и убью" - (c) Тарас Бульба. Вместо SCF реализуем "атрибутный" APA.

Основное отличие от обычного "двухпланового" APA - читаемый по строке второй
байт считается
не графикой "переднего плана", а атрибутом (есс-но, счетчик ходит уже по другим
адресам).
Причем атрибут применяется только к двум дегко опознаваемым цветам - белому и
черному
(111111 и 000000). То есть в каждом знакоместе имеем два "атрибутнозависимых"
цвета плюс
свободно используем остальные 62.

Очевидно, что при движении по строке на каждые восемь 64-цветных пикселов
читается сразу
шесть "атрибутов". Эту "избыточность" можно использовать так - каждый "атрибут"
будет
состоять из двух байт, причем второй для совместимости используется только при
несовпадении
их битов BRIGHT - он определяет дополнительные три бита цветов INK и PAPER, то
есть
уже будет тоже по 64 цвета для INK/PAPER. И FLASH-и отдельные можно сделать. И
отдельно
включаемый BRIGHT2, и даже, наверно FLASH-color, хотя незачем, по-моему - где
они были?
Hу, можно еще гигаскрин аппаратный добавить - просто автоматически переключать
базовые
страницы видеопамяти на каждой новой строке.

А раз "атрибутные байты" читаются параллельно, можно сделать отдельные атрибуты
для двух
вертикальных половинок знакоместа, имея в виду поддержку четвертушек - причем
разделение
атрибутов по вертикали производится как в старом варианте (см. спецификации).

Итого истрачено четыре байта из шести. Оставшиеся два можно использовать как
этакий
"флажок", определяющий, надо ли гасить остальные (неатрибутнозависимые) цвета в
случае,
когда INK=PAPER. И тоже для двух вертикальных половинок.

В "режиме совместимости" постоянно включены запись "с заменой" во все
плоскости, то есть
все абсолютно прозрачно для старого спековского софта. Чтение при этом можно
либо вообще
запретить (в ОЗУ есть копия экрана), либо суммировать плоскости по AND (тогда
пикселы
остальных цветов получатся нулевыми - PAPER) или по OR (тогда единицами - INK).
Плюс
режим "игнорирования данных" надо сделать отключаемым, потому что кроме ldir-ов
еще
всякие rr/rl [hl], set/res [hl] и rrd/rld производят и чтение, и запись в
память.

Единственный минус по сравнению с SCF-mode - только один слой изображения, без
всяких
быстро стираемых спрайтов, но зато - все 64 цвета и полное отсутствие клэшинга,
даже между
спрайтами. То есть фон восстанавливать придется, но при адаптации фирменных
игрушек пофиг
- если Спек раньше успевал выводить графику, то и теперь успеет. И всегда есть
другие
страницы видеопамяти под теневой видеобуфер, причем необязательно перебрасывать
его в
основной экран, можно наоборот - перебросить информационное табло (наверняка
меньше, чем
игровое окно) и просто переключить базовую страницу для отображения. При
желании можно
повозиться подольше и адаптировать игру сразу под нормальный "двухплановый"
APA-mode.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
На правах рекламы - Red Limited Drunkards Group представляет: Extrem Tracker v1.32 - новый музыкальный редактор. Inter Mode Player v1.2 - проигрыватель мелодий.
Обзор новинок - Тайна капитана Шелтона (demo)
Help - помощь по игре Dyna Blasters.
Жеоезо - КEМPSTON джойстик для Pentagon 128.
HOT GAMES - Лучшая десятка oт Magic Soft.

В этот день...   24 апреля