Цитата:
Сообщение от
Nesser
Да я понял что это 8 аппаратных слоёв и они оттуда отображаются.
НО!
Вы конечно извините, но отдавать 100% мощности процессора на рисование 91 спрайта размером 16 на 16 я как то не готов, а кто будет подготавливать координаты для спрайтов? Вася Пупкин? а кто будет музыку играть? а кто звуки будет делать? а кто хоть какой нибудь искусственный интеллект будет делать?
Кто будет математикой заниматься? Кто рассчитает траектории полёта выстрелов и всех объектов?
Все это будет делаться также как делалось в играх для ZX Spectrum. Или ты считаешь, что для Z80 на частоте 3.5 MHz нельзя написать ни одну игру ?
Цитата:
Допустим я делаю 16 выстрелов размером 4 на 2, затраты на вывод 1 выстрела несоизмеримы с его размером.
Все относительно. Посчитай, сколько времени тратится сейчас на те же задачи и сравни с новым режимом.
Цитата:
От 3,5 Мгц можно смело вычитать 75% на ПРОЧИЕ вычисления.
Итого остаётся 22 спрайта 16x16, и это если не заниматься поллитрой, ну это же всего лишь 1 табличка размером 96 на 58 летающая по экрану, И ВСЁ !
8 статических слоёв и всего лишь 1 спрайт 96 на 58 двигающийся по экрану, ляпота..........
Лично мне такого не надо.
По сути это не ускоритель а тормозитель, огромная плисина с мешком памяти и бедный чахлый процессор 80-ых побайтово выводящий спрайты на экран.
Ускорение есть: скроллинг экрана аппаратный, не надо накладывать маску на фон - рисуем спрайт ГГ в отдельном слое с прозрачным цветом вместо маски, не надо вычислять адреса спрайтов на экране, не надо вычислять границы секторов экрана при спрайте высотой больше 8 точек, по два буфера на слой для устранения мерцания при движении спрайтов. Блиттер для доработки старых игр не нужен. А новую игру такого же уровня написать трудно. И если кто сможет, то и перечисленные возможности облегчат написание и ускорят игры.
Цитата:
Для спрайтов 8x8
ld hl,адрес спрайта
ld de,адрес на экране (чО? надо бы предварительно вычислить для каждого спрайта)
ld bc,8*8
l1 ldi ldi ldi ldi ldi ldi ldi ldi
add de,256-8 (inc d, e-надо возвращать на 8 байт назад) - ?
djnz l1 (это в кратце, по факту надо огород через А делать ибо ldi bc юзает)
ld hl, адрес спрайта
ld de, graph_data ; адрес начала графических данных. в области регистров видеокарты выделен диапазон размером 256 байтов для команд ldi и ldir
DUP 16
ldi
EDUP
Только в разных играх байт маски и байт спрайта могут лежать не последовательно. Поэтому, используя код игры, надо получить эти два байта и записать в видеокарту для рисования 8 точек без клешинга. Как собираешься это делать блиттером ?
Цитата:
Должно быть 1 байт на пиксель - 256 цветов, а 4 цвета на пиксель это вообще что? переделывать монохромную игру в 4 цвета это блооо высший класс.
Я вообще не скурил весь этот огород.
Или я всё не так понимаю?
Если игра монохромная и монохромные спрайты рисуются по фону, на котором есть изображение, например, домов, то в спрайтах УЖЕ есть по два байта на 8 точек. Берем эти два байта и выводим в новый слой для устранения клешинга. При этом сможем выбрать новые 2 цвета для ГГ. Если в монохромной игре спрайты рисуются на черном фоне, то проблемы клешинга нет и ничего можно не делать.
Точки рисуются сразу по 8. Вот для этих рисуемых 8 точек можно выбрать любой из текущих 4 цветов. В стандартном экране только 2 цвета на 64 точки.
Цитата:
Пусть будет несколько слоёв, 8 и нафиг не надо, 2-4 за глаза, и то, приоритет должен быть не в слои а в скорость АППАРАТНОГО вывода спрайтов, называйте как хотите, но в 2D графике компьютера есть только спрайты, и текст тоже спрайты, на кой хер спрайты выводить ПРОГРАММНО если ПЛИС это может сделать в 1000 раз быстрее и абсолютно независимо от CPU ???
Если 4 слоя хватит, то можно уменьшить количество микросхем SRAM с 4 до 2. Или вместо микросхемы SDRAM лишние 2 микросхемы SRAM переставить на отдельную шину для ускорения. Блиттер будет на втором этапе разработки. 1 этап для устранения клешинга.
Цитата:
И зачем FullHD разрешение? оно должно быть изменяемым от 256x192 до хотя бы 800x600 с учётом VGA и SVGA, то есть иметь весь список стандартных разрешений, зачем делать 1920x1080 запросов 60 раз в секунду? 124 416 000 субпикселей? 125 миллионов запросов ради 50 тысяч точек? нахера?
Что вообще происходит? :)
Это разрешение монитора, разрешение экрана остается без изменений. Увеличением занимается видеокарта, но это к рисованию отношения не имеет. Она может загрузить строку в свой буфер и затем выводить 4 строки с увеличением каждого пиксела в 4 раза.