Давай пока остановимся на аппаратной точке, не все сразу.
Давайте немного изменим распределение памяти. На каждую точку по 8 бит. В слое будет 2 буфера/экрана по 256х256х1=64Кбайт. То есть один слой 128К. Всю память разделим условно на 8 слоев по 128К. Для каждого слоя своя палитра. Программист сам выбирает, сколько слоев надо для игры. Неспользуемые слои использовать для хранения спрайтов.Аппаратная линия
Разные варианты CLS
Заполнение экрана выбранным цветом
--------------
Если пойти дальше -
И сделать аппаратный Fill в выбранной области, треугольнике,круге и т.д.
Вообще стоит хорошо подумать о возможности добавления новых команд, остаются на это ресурсы ?, это даст хороший задел на будущее (при написании управляющей программы для карты, что бы из за одной команды весь код не перелапачивать)
Посчитаем, сколько условных спрайтов размером 8х8 точек влезет в память размером 128К. 128К / 64 = 2К. Для сравнения у Денди 256 спрайтов и 256 тайлов, то есть 512. А у нас в 4 раза больше. Хватит на 4 уровня с разными спрайтами. Но у нас даже круче - мы сможем использовать сразу все. Всего 8 банков по 256 символов.Т.е. 1 банк - буквы, 2 банк - тайлы фона, 3 банк - спрайты ГГ и т.д.
Если спрайты большего размера - то использовать под спрайты больше памяти вместо слоев. Для разных игр комбинация количество слоев - объем под спрайты будет разное.
Для 8-ми битной графики надо несколько палитр. Для каждого слоя будем выбирать свою. Хранить в формате 256 байтов для R, 256 байтов для G, 256 байтов для B в трех блоках внутренней памяти FPGA.





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