с какой целью? если только получения лучшей графики, то есть менее затратные варианты
софт писать под это никто не будет
ну и как, например, ты перспективный блиттер сюда прикрутишь?
в то же самое окошко на прибитую гвоздями zx-раскладку, битплановый?
Ну, ты мою позицию знаешь - точность клона это не всегда полезно и хорошо. Вообще, блок, нужный только для раскраски старого софта БЕЗ исходников и правки бинарника, я бы сделал максимально простым и "лёгким", раз навсегда зафиксировал и больше не развивал (кроме устранения недочётов). Главное, чтобы он не мешал добавке перспективных новых возможностей, управляемых из нового софта, и чтоб они легко его дополняли. То есть ускоритель сможет рисовать в любой момент по старой картинке, а старый код в спектрумовском стиле - по картинке, отрисованной ускорителем.
Прихожу без разрешения, сею смерть и разрушение...
Вообще, было бы меньше бурлений, если бы давно были разработаны и использовались графические драйвера.
Нужен стандартный API для графического драйвера. Например, сидит в памяти по определённому адресу процедура, у которой есть набор функций. Вывод спрайта с заменой, по OR, по AND, по XOR. А так же, вывод с маской. Спрайты имеют стандартный формат, состоящий из знакомест, каждое знакоместо похоже на символ из шрифта - 8 байт, образуют знакоместо 8х8 пикселей, за ними опционально идут атрибуты, тоже 8 байт, по одному на каждый байт пикселей (как в мультиколоре), за ними опционально 8 байт маски.
Драйвер принимает параметры использовать ли атрибуты, использовать ли маску.
Теперь самый шик - стандартный драйвер, работающий со стандартным экраном просто копирует эти спрайты и первый байт атрибута как обычно. Навороченный движок может на той же игре совершенно без изменений кода игры отображает уже мультиколор 8х4, например и без клешинга атрибутов, если вывод по маске.
При использовании чудо-видеокарты наподобие метеора к ней автор один раз пишет драйверок и та же самая игра может совсем без изменений кода выводить мультиколор 8х1. Более того, спокойно могут быть поддержаны видеокарты с аппаратными спрайтами, с аппаратными блитерами, более того, с повышенным разрешением. Драйвер может уже сам масштабировать выводимые спрайты, по прежнему ориентируясь на координаты 0-255 и 0-191, просто они будут теперь восприниматься, как процент от общего разрешения.
При таком подходе старые игры надо будет адаптировать только один раз и они дальше будут работоспособны на любом устройстве с подобным драйвером.
Последний раз редактировалось AzAtom; 07.05.2017 в 19:22.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)