Возможен такой вариант хранения спрайта в памяти видеокарты:
Так как в стандартном экране спектрума каждой клетке размером 8х8 точек соответствует один байт атрибутов, видеокарта должна быть совместима с таким заданием цвета. Клетку спрайта в старом формате можно представить как 8 байтов расположенных на экране стопкой. Сверху байт 0, снизу байт 7.
В видеокарте можно хранить их так: байт 0, маска 0, байт 1, маска 1 и т.д. Если нужно отобразить все точки спрайта, то маска должна быть FF, Обычно это применимо для построения фона. Чтобы наложить поверх фона движущийся объект в его спрайте маска должна иметь нулевые биты для точек, которые изображать не надо.
Перед отображением клетки на экране мы передаем видеокарте стандартный байт атрибута, координаты печати и номер спрайта размером 8х8 точек. Видеокарта читает одновременно байт и маску для 8 точек и определяет, каким цветом зарисовать точку на экране. Если маска 0, то эту точку ОЗУ экрана записывать не надо.
Таким образом, мы сможет без существенного изменения спрайтов устранить клэшинг атрибутов.




Ответить с цитированием