Спасибо за столь высокую оценку. Хотя идеи такой видеокарты уже давно предлагались на форуме. Я только пытаюсь их структурировать и реализовать. Давайте вместе разработаем простые и эффективные команды для работы с графикой. Тогда каждый сможет воплотить свои задумки без необходимости урезать идеи и графику из-за ограничений в цвете или скорости движения объектов по экрану.
Нужно выбрать адресацию точек на экране, если понадобится прямая запись, например для векторной графики. Предлагаю координату Y точки от 0 до 191 (8 бит) использовать в качестве младшего байта адреса. Таким образом при копировании программно или аппаратно в последовательные адреса на экране будут закрашиваться точки столбцами сверху вниз. Координату X точки от 0 до 255 (8 бит) использовать в качестве старшего байта адреса. Такая адресация позволит по координатам точки или нового места изображения спрайта на экране легко получить адрес этой точки в памяти. Также, при необходимости, это поможет увеличить размеры экрана до 256 по-вертикали и более 256 по-горизонтали. Но пока нам хватит и стандартных 192х256 точек и мы не будем тратить на это время - ведь наша первая цель увеличить количество цветов на точку, а вторая - сделать этот режим быстрым.
Выше я писал, что быстро за один раз копировать 16 бит (4 точки по 4 бита). Но это может создать неудобство при движении объекта на экране со скоростью 1 бит в кадр. Поэтому лучше на одну точку выделить целый байт (256 цветов по стандарту MSX2). И использовать ОЗУ с разрядностью 8 бит. Тогда для ускорения копирования следует применить две микрсхемы SRAM 8x512K. Одну микросхему использовать в качестве ОЗУ экрана, а другую - в качестве ОЗУ спрайтов. Обе микросхемы должны подключаться к отдельным выводам ПЛИС, что позволит при копировании спрайта на экран устанавливать на одной микросхеме ОЗУ адрес источника, а на другой - адрес приемника данных. Это позволит переписывать через данные из одной в другую (из ОЗУ спрайтов в ОЗУ экрана) за один раз без промежуточного хранения в ПЛИС.
Отдельная память 512К для экрана позволит хранить сразу два экрана по 2 слоя, по аналогии с вторым экраном в моделях 128К. Это позволит изображать уже полностью сформированный экран одним переключением экранов.
Требуется продумать простой и эффективный способ загрузки спрайтов в ОЗУ видеокарты, объем которой 1 Мб. Для записи пикселов прямо в ОЗУ экрана лучше отправлять в видеокарту ЦВЕТ ТОЧКИ, координаты X и Y. А для записи в ОЗУ спрайтов лучше передать начальный адрес спрайта, а потом просто данные непрерывным потоком, с автоинкрементом адреса в самой видеокарте.
Один из вариантов обращения к видеокарте - через адреса стандартного экрана ZX SPECTRUM.





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