Для копирования буфера с новой графикой на экран надо использовать автомат на счетчиках и дополнительную память для загрузки параметров копирования. Наверно более универсально записать один раз в дополнительную память адреса отрезков в буфере и экране. А потом данные для очередного копирования будут читаться на более высокой скорости. Проще заранее посчитать и загрузить в таблицу.
Для простоты автомата можно байты парами записывать.
Первый байт - что делать: увеличивать или загружать и какой счетчик,
а второй байт - байт для загрузки части адреса или не использовать.
Если байты идут последовательно, то в первом байте - соответствующее число.
Во втором байте: по два бита на счетчик - что делать.
Ориентировочно:
00 - не менять
01 - +1
10 - -1
11 - перенос из младшего счетчика
Можно сделать хардварное перетасовывание битов приемника чтоб писать в видео память как
будто она линейно расположена. Тогда к экрану лучше обращаться не по адресам, а по координатам в байтах и аппаратно биты переставить.
А как можно сохранить часть фона перед рисованием в буфер спрайта, а потом восстановить ? Самое простое - сохранить весь буфер, но в друг это не для всех игр подойдет. Если буфер линейный наверно можно змейкой. Указать вначале адреса, а потом +-1.
Может проще все игры под линейный буфер переделывать для однотипности ? Линейный буфер также можно весь змейкой копировать - так быстрее. Линейный буфер упрощает переход к байту вниз. Если переставить биты аппаратно, то даже экран становится линейным. А вот если в буфере строки идут подряд по 32 байта, то для перехода к байту вниз надо прибавить 32 к адресу...
Можно для этого случая сумматор добавить, но если игру переделать под линейный буфер, то и рисование графики в буфер ускорится.
Если линейный буфер сделать с адреса 0000H, то еще проще и быстрее.
А если еще ускорить z80, то будет все рисоваться плавно и быстро.




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