Спасибо, написали доходчиво. Я когда то имел дело с аркадными автоматами CAPCOM. Может помните систему CPS1 и игры Captain Commando, Street Fighter 2.
Там все упрятано в заказные чипы и выяснить толком ничего нельзя. Из того, что понял, оно имело низкое разрешение, мало одновременных спрайтов на экране, мало спрайтов в линии, но очень много цветов. На вид больше 256. За счет цветов оно выглядело очень сочно и играбельно. Судя по всему было 3 плоскости. 1 для фона, 2 для спрайтов. Фон был статичным, в основном (небо). В одной плоскости спрайтов были фигуры персонажей, в другой подвижный фон (скроллинг), который делался тоже спрайтами. Однако, чтобы это повторить на логике, нужно будет соорудить приличную конструкцию на большой плате, около 100 корпусов. Народной она не станет. Если соорудить более практичную конструкцию на FPGA или STM-32, то тоже никому не нужно будет. К примеру, меня за применение AVR затролили, мол не спортивно, читерство и т.д. Всё думали, что так изящно управлять ВГ75 можно с помощью безмозглого ВТ57. Ах,ах,ах, наивные...
Мне видится более упрощенный процесс формирования кадра. Будет два видеобуфера по 32кб. Из одного будет выводиться картинка, в другом будет рендериться следующий кадр. Буфера будут по очереди перекидываться по кадровому импульсу обратного хода мультиплексорами между рендером и видеогенератором. Видеогенератор тот самый естественно. Рендерер на 2х ВГ75. Одна будет выгребать из памяти спрайтов байты и класть в видеобуфер, вторая будет задавать смещение по X,Y в пределах одного закоместа. Чтобы передвигать на большее значение чем размер знакоместа, достаточно будет в текстовом буфере переписать номер спрайта в другую ячейку и если надо, задать необходимое смещение. Итого получится 80 спрайтов в линии, 4000 спрайтов на экране и возможность пересечения спрайтов в пределах одного знакоместа. По количественному показателю и разрешению экрана, CAPCOMы, NEO-GEO, NES, SNES нервно курят. У нас то технология еще из 70-х )) Размер спрайта 8х16. Сдвигать по X,Y можно одним и тем же сумматором. Он должен прибавлять Y*80+X к адресу записи в видеобуфер. X=(0..7), Y=(0-15). Игровая логика сводится к тому, чтобы перемещать номера спрайтов и их смещение в пределах знакоместа по текстовому буферу. Детектор столкновений при этом проще всего программный. По условию если задано смещение и смещение следующего спрайта в строке меньше смещения предыдущего спрайта, то произошло столкновение.
Бред короче. Это 3 ВГ75 и штук 40 корпусов мелкой логики. Нафиг не нужно.
- - - Добавлено - - -
К стати насчет таймингов всей этой хреновины... Вывод кадра+рендеринг следующего кадра (одновременно). Работа игровой логики асинхронно, разумное время, для получения разумного FPS. По завершению рассчетов игровой логики, по началу VRTC быстрое скармливание текстового буфера рендереру, например с помощью DMA. Рендерер будет работать два прохода. К примеру на первом проходе будет весь кадр заливать фоном, на втором заливать подвижные фигурки. Это нормально, кадровая частота 70Гц, поэтому будет 35 FPS, нормально как бы. Главное чтобы 8080 осилил стлько
- - - Добавлено - - -
В общем без разницы что он будет делать два прохода. Можно ему по номеру прохода подкидывать разную память спрайтов и текстовый буфер, тогда ваще будет круто, много графики. ОЧЕНЬ МНОГО ГРАФИКИ!