Так маску надо не накладывать, а просто записывать в ОЗУ. В этом-то и сюжет, - программное маскирование объектов на фоне заменяется аппаратным. Если маску выводить через регистр, не только отпадет необходимость коммутировать банки, но и можно быстрее двигать по фону вертикальные линии и прямоугольники, а также есть выирыш для окон, - чтобы открыть окно для сообщения, мы заносим в регистр маски FF и очищаем окно в плоскости объектов (плоскость фона не изменяется, но не видна). Получается, в 2.5 раза быстрее, чем писать маску как в обычное ОЗУ, переключая банки для каждого байта. Для вывода спрайта читаем два байта, первый байт сразу кидаем в регистр маски, а второй пишем в экран. Регистр маски экономит время, т.к отпадает переключение банок.
Кстати, уж если вводить плоскость маски как обычное ОЗУ с доступом процессора, то лучше сделать расслоение памяти. Так раньше делали. Тогда четные по адресу байты читаются из одной банки, нечётные из другой. Если в данном такте из банки не читается, то из неё видео-схема читает экран. Т.о в любом случае видео-схема считает байты для регенерации экрана, без необходимости стопорить процессор по WAIT.
В данном случае, когда четные байты - плоскость маски, а нечетные - плоскость объектов, отпадёт необходимость коммутировать плоскости или иметь регистр маски. Просто копируем спрайт и он сам себя маскирует.





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