Точная частота кадров не очень важна. На мониторе кадры будут идти немного ускоренно через 1/60 Hz = 16,7 mS вместо 1/50 Hz = 20 mS или 1/48 Hz = 20,8 mS. В целом плавность движений остается. А один кадр будет повторяться по мере надобности. Лучшего способа преобразования не придумал.
Если сложно - может тогда второй монитор для новых режимов ? Хотя нет - новые и старые режимы надо показывать на одном мониторе. Можно посчитать, в какой момент записывать цвет каждой точки для отображения на мониторе.тут будут лишние технические нюансы, к примеру борьба алиасингом квантования, нужно будет учесть, в мониторах целая история с этим нюансом
В адресном пространстве микропроцессора нужно выбрать два адреса. Сделать схему дешифрации, чтобы при записи в эти адреса мы получили два сигнала записи. Шину данных подать на разъем через буфер, например, 555АП6. Подаем эти 10 сигналов на FPGA видеокарты через схему согласования. Запись в FPGA с шины данных по спаду сигналов записи. Это обеспечит большую скорость.
В микроконтроллере можно один порт использовать как данные, а две линии в другом порте как сигналы записи.
В видеокарте нам нужны несколько регистров для настройки режимов. Например, мы хотим изобразить спрайты или текст в режиме три цвета + прозрачный. Вот минимальный список регистров. Максимальное количество 256, хотя может не хватить объема FPGA.
Младший байт координаты X
Старший байт координаты X
Младший байт координаты Y
Старший байт координаты Y
Режим цвета - число байтов на 8 точек, наличие прозрачного цвета и т.д.
Высота спрайта
Номер палитры
Номер цвета в палитре
Масштаб по X
Масштаб по Y
Номер слоя
Маска включенных слоев
Запись данных должна увеличивать номер регистра, если был не регистр данных. Это позволит выбрать номер одного регистра, а затем загружать данные в несколько регистров подряд. Также можно загружать данные в память с автоматическим вычислением следующего адреса в памяти.