Сообщение от
zx-kit
Просто новая видеокарта не нужна. В новых режимах должны работать старые игры с минимальными переделками.
ну старые игры с 256х192 и будут работать... а если нужны например спрайты - то уже карточка будет работать...
увеличивать разрешение экрана честно говоря смысла особого не вижу - все равно z80 не особо быстро экран перерисовывает, а если еще и разрешение выше - то будет слайд шоу.. тоже самое и с вожделенным всеми поточечным цветом - большого смысла в реальном применении опять таки не будет, даже для 128к машин слишком много памяти будет уходить на картинки... и опять вспоминаем про быстродействие...
поэтому думается что самое оптимальное это остаться в стандартном экране, который будет использоваться как фоновый
и уже поверх него рисовать спрайты размером 16х1 с индивидуальными цветами точек и цветом прозрачности
примерно по количеству можно попробовать программно-аппаратно переварить примерно 1000 (ну пусть 1023) таких однострочных спрайтов...
соответственно вывод квадратного спрайта 16х16 - это вывод 16ти спрайтов друг под другом и может выглядеть примерно так
Код:
ld A, A @ переход в режим позиционирования спрайтов - одна операция на все операции со спрайтами
ld de, nnnn @номер спрайта для вывода
ld hl, nnnn @ пиксельная позиция YYXX спрайта
ld b, 16
loop:
out (L), d @ старшая часть номера спрайта
out (L), e @ младшая часть номера спрайта
inc h @ следующая строка для вывода второго спрайта
inc e @ следующий однострочный спрайт
djnz loop @ выводим 16 спрайтов в столбик
ld B, B @ завершаем позиционирование спрайтов
соответственно "спрайт" это даже наверное не правильное слово.. это некая последовательность точек которая будет выведена начиная с заданной позиции... и эту последовательность можно выводить несколько раз, в любых местах поверх фонового экрана...
в принципе любую анимацию экрана можно делать на этих спрайтах множа их сколько угодно раз (ту же кирпичную кладку или еще что нить, факела на стене, воду, облака, чайки одинаковые, враги какие нить и т.д.) или вообще все игровое поле рисовать только спрайтами (коль их достаточно много)
потом при необходимости подаем команду и при начале кадра развертки - будет сформировано итоговое изображение экрана - то есть на базовый экран наложатся все спрайты и после этого будет показываться.. без команды вывода буфера на телевизор показываться будет предыдущий экран.
соответственно на перерисовку экрана при необходимости можно тратить и более одного кадра, так как все операции идут с теневыми буферами спрайтов и фонового экрана... то есть без особых проблем можно получить например не 50 кадров, а 25, или сколько угодно - без искажения изображения при перерисовке с выводом на телевизор...
если видеокарта не нужна - то пропускать стандартный экран (обычный или 128ой)..
ну и в принципе можно сделать сдвиги фонового экрана силами карты, правда я не уверен что получится без дополнительных переделок сделать изменение и в памяти спектрума... но по большому счету это при сдвиге и не надо, карта сама сдвинет, а программисту нужно будет только дорисовать с нужной стороны недостающие точки...