Не хотите аппаратный блитер, можно по другому сделать. Тем более, что в том варианте клешинг атрибутов между фоном и объектами остаётся.
Добавить слой для игровых объектов. Добавить 2 поля памяти по 16 кб (из РУ6, например). В одном поле лежит второй слой (второй экран), предназначенный для игровых объектов. Байт атрибутов на байт пикселей, что позволит сделать более симпатичные фигуры героев. А во втором поле памяти лежит маска, которая переключает между стандартным экраном спектрума (фон) и дополнительным слоем (объекты). Все адреса для отображения можно брать от счётчиков самого спектрума. Ускорение работы достигается за счёт отсутствия необходимости восстановления фона. Большой плюс - отсутствует клешинг атрибутов фона и объектов. Строки должны иметь последовательную адресацию.
Запись в эти поля можно осуществлять, установив соответствующий бит в выделенном порте. Можно оставить адреса дополнительного экрана и маски по прежним адресам экрана 4000, а можно переместить в адреса 0000, можно подумать, как будет удобнее.
Почему упоминаю РУ6? Думаю, если что-то улучшать, то есть смысл это делать именно на элементах тех лет.




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