PDA

Просмотр полной версии : ZXПирит, простой аппаратный апгрейт Spectrum видеорежима.



Reobne
08.09.2015, 17:05
Если кто-то хочет результатов - пока почти-что ничего нет, и можно тему не читать, не тратьте время. Если что-то будет, я исправлю этот текст в первом посте.
Тема ещё жива (декабрь 2015).
В голове всё, в общем виде, есть. Как могу, ввожу, придумывая детали.
Пишу прямо на форум. Если любопытно, то читайте. Каждое изменение не оглашаю. Вопросов пока не жду.

От zst, моими словами
1. Графическая система, для небольшого поднятия качества спектрумовской графики. В основном игр.
2. Главный ориентир - устранение клешинга.
3. Вторичный ориентир - задание большего выбора цветов, большее количество цветов на экране одновременно.
1. Простота аппаратной реализации.
2. Простота в понимании принципов работы.
3. Уровень графики близок к спектрумовской, но немного выше неё. Небольшой шаг.
4. Простота адаптации программ (далее - игр). Силами одного человека(хакера_адаптации), без доступа к исходному коду игры.
5. Адаптация игры НЕ приводит к снижению FPS, и слишком большим "лагам". Адаптация игры НЕ приводит к огромному увеличению объёма игры (никаких мегабайт). (Всё должно грузится с магнитофона за приемлемое время. :) ) Естественно, это требования и к хакеру_адаптации, но первоначальный смысл в том, что ZXПирит должен гарантированно обеспечить хакеру_адаптации такую возможность.
6. Адаптация игры - постепенная. Вставив в игру код, открывающий доступ к регистрам через ПЗУ, ничего особо в игре не должно поменяться. Лишь постепенно, добавляя новый код (заполнения настраиваемых палитр, переключения палитр, настройка инструмента... использование инструмента), получатся изменения в графике.
7. Варианты игры для 128к и ZXПирит, очень близки по коду и по ресурсам. В идеале это одна и та же программа, которая детектит ZXПирит (или предлагает выбрать в меню загрузки этот режим) и самопатчуется (самонастраивается).

1. Стараюсь писать понятно и читабельно. Примерно как для себя двенадцатилетнего. Люблю наглядность: структуру и иллюстрации.
2. Сереньким, вот так, пишу ещё более разжёвано. Если чёрным понятно, то серое можно пропускать.
3. Италиком цитата, своими словами. Для настроя. :)

1. Чем проще тем лучше. Шажок - минимальный из заметных.
2. Минимум данных, в виде каталогов, которые нужно помнить. Например списков видеорежимов, списков режимов программного вывода графики, и так далее.
3. Минимум результирующих эффектов, на которые влияет одна настройка.
4. Поменьше настроек.
5. Больше свободы использования небольшими ресурсами карты. Какие хочет хакер_адаптации использовать биты пикселя, те и использует. Какие палитры хочет задействовать для инструмента рисования, какие для формирования картинки - всё к его услугам. Хочет меняет палитру при инициализации игры - легко и естественно, при новом уровне - легко, для спецэффекта взрыва - легко, постоянно для мерцания-переливания - легко.
6. Больше возможных вариантов реализации железа.

Идея идёт от zst, как я её понимаю.
Чтобы не засорять его тему (http://zx-pk.ru/showthread.php?t=25296) вот такими кирпичами (http://zx-pk.ru/showpost.php?p=826787&postcount=569) - была сделана эта тема.
Данная карта, это упрощение проекта zst, она гораздо слабее,
Сразу сделать хорошо и качественно очень сложно, это как набить полный рот и пытаться жевать. Проще откусить оптимально, поменьше, прожевать, проглотить, и повторять до полного удовлетворения.
Я надеюсь, что реализация до удовлетворительного состояния данной простой карты, позволит отладить некоторые общие блоки аппаратуры, с основным проектом zst. Например перехватчик записи в ПЗУ и экранную область, формирование видеосигнала на выходе. Также отработаются процессы создания документации. И другое, по мелочам. Может столкнёмся с чем-то непредвиденным.
Разведка боем. Возможно даже zst, воодушевится, может у него(или у кого-то) возникнут новые идеи.

1. Спецификация-стандарт использования системы, для программиста. Законченное описание переменных, примеры инициализации, примеры рисования. Ответы на ЧЗВ. Описание спектра возможностей, и приёмов работы. Пример адаптации игры от начала до результата, который можно повторить. (Не "рисование совы")
2. Описание функций выполняемых аппаратурой, для проектировщиков аппаратуры и создателей эмуляторов.
3. Схемы, общие описания, каталоги реальных карт, которые можно купить, и игр, которые поддерживают этот стандарт. :) Для всех желающих и любопытных.

1. Дописать эти четыре раздела.
2. Написать 2 эмулятора поддерживающие ZXПирит. На Дельфи. Один лёгкий, для поиграться. Другой потяжелее, с сервисными функциями для хакеров_адаптации.
3. Сделать простую адаптацию игрушки "Три недели в раю" под ZXПирит, с подробным описанием процесса.
4. Написать тесто-демонстрационную программу, демонстрирующую возможности ZXПирит, и гоняющая его на предельных режима, для проверки работы аппаратуры.
5. Если ещё никто не подсуетится, то делать варианты железа. :)
6. Придумать заставку, демонстрирующуюся при включении системы.
7. Организовать голосования/опросы, по результатом которых выбирать очередную игру для адаптации, и адаптировать её.

2015 ноябрь - ничего

1.Приветствуется критика, отвечающая на проверочный вопрос:"Как увеличить показатели результата?"
2.НЕ приветствуется критика, отвечающая на проверочный вопрос:"Почему не нужно ничего делать?"
3.Улучшить качество критики можно конкретизацией. Не посылая изучать разделы науки, и системы на порядки сложнее, чем наша карта.

...Подготовьте список, кого расстрелять в случае провала проекта...
zst - Автор большинства идей. Настойчивый и невозмутимый заражатор своими идеями.
Reobne - Поддержатор. Придуматор идеи упрощения. Написатор этих четырёх первопостов.
Alex Rider - Моральный поддержатор. Предлогатор идей. Уточнятор моментов. Надеемся, что в своих проектах и переделках использует возможности "Метеор графикс" и/или "ZXПирит", по их готовности.

Shadow Maker - Модератор.

"вбайтсжиматель" - Функция, превращающая 16 бит[+состояние] в байт. (см. Раздел1/Общие абстракции/2)
"игра" - программа для Spectrum128. Может даже не игра, например редактор или просмотрщик. Но в основном ориентировка идёт на игры, поэтому "игра".
"карта" - От "видеокарта". Реализация системы. ZXПирит, или другая, по контексту.
"рисование совы" - Как нарисовать сову? Нарисуйте цифру 8, а потом всё остальное.
"хакер_адаптации" - делающий версию игры под карту.
"{туду}" - это я сам с собой разговариваю. Чтобы обратить внимание в следующей итерации.
***
1. Палитра, как функция. Вход:8 бит. Выход:16 бит. Размер конфигуратора:512 байт (256x16Бит). ZXПирит помнит 64 конфигуратора, которые можно выбрать. 48 Конфигураторов неопределены, но могут задаваться программно игрой. 16 Конфигураторов заданы стандартом и изменению не подлежат.
2. Вбайтсжиматель. Вход 16 бит. Выход 8 бит. Конфигурируется 8-ю байтами. N-й байт адресует N-й бит результата. Например (0,1,2,3,4,5,6,7) - вернёт младший байт. (8,9,10,11,12,13,14,15) - старший
ZXПирит помнит 256 конфигураторов, которые можно выбрать. Часть можно прописывать программно, остальные - стандартные.

Reobne
08.09.2015, 17:10
Система ZXПирит является расширением стандарта Spectrum128K (поглощая 48К).
Подробное описание Spectrum128K тут не приводится. Выполнить ли аппаратуру в виде подключаемой карты, к ZX128К(или клону, его поддерживающего), в виде самостоятельного устройства (ZX128К+ZXПирит), плагин к эмулятору, новый эмулятор, переделка эмулятора, вариант прошивки (для клонов с прошивкой), это всё на ваше усмотрение.
Выходной видеопоток описывается на уровне матрицы пикселей с цифровыми RGB значениями. Формировать ли видеосигнал для монитора, для телевизора, применить ли жидкокристаллический индикатор, вывести-ли в окошко ОС (внутри которой идёт эмуляция), это всё на ваше усмотрение.
Система
строится по принципу максимальная простота и понятность.
1. Желание разбираться, проектировать, отлаживать.
2. Желание получить результат.
3. Понимание основ информатики. Физических основ информатики.
4. Уверенность, что не боги горшки обжигают. Реализованные проекты на ПЛИС и микроконтроллёрах, уровня помигать светодиодом, получить радугу на мониторе - приветствуются.

1. Невлияние на работу Spectrum, кроме отдельно оговорённых случаев (пост3/инициализация,пост3/режим). Задержки процессора не допускаются. Буферезируйте поток, но в течении кадра, карта должна обработать поток данных от любой программы.
2. Лаг. Чем меньше тем лучше. Если аппаратная часть задержки между нажатием кнопки и влиянием этого на экране превысит 3 кадра, то анафема. У нас всё-таки игры, а не только демки, и это важно.
3. Чернобелость должна быть оправдана. Если для введении цвета, пришлось-бы увеличить сибестоимость или энергопотребление продукта свыше 20%.
3. Качество картинки, цветопередача - повыше! Рябь, мусор и дёрганье - анафема.

Экран у спектрума 256x192 пикселей. В ZXПирит этот размер остаётся. Каждому пикселю в карте отведено 16 бит.
Всего на память пикселей идёт 96 килобайт.
Всего памяти принято, для круглости, 128Кбайт. Чтобы была возможность вписать всю систему в одну микросхему. Если только подключаемый модуль к Спектруму, то микросхему 128Кбайт. Если полную систему, Spectrum128K+ZXПирит, то микросхему 256 КБайт.
Остальные 32 килобайта отведены под данные палитр. 64 банки, 256 значений, по 16 бит.
Часть этих-же 32 килобайт может быть задействовано, как установки вбайтсжимателя, и установки инструмента. Как именно они перекрываются с банками палитр, чётко будет оговорено. Недопущение конфликтов на совести программиста игры.
Причём тут тоже есть свои хитрости. Последние 16 банок (8Кб) нельзя менять из игры программно. Они содержат заранее установленные стандартом занчения. Эти банки ПЗУ используются для работы стандартного режима экрана Spectrum. Они могут быть реализованы в железе и как инициализируемое ОЗУ, и как ПЗУ, и как вычесляемые функции мкроконтроллера, и как логическая схема (ПЛМ или рассыпуха).
Если реализация - эмулятор, то в обязательном порядке нужно сделать генерацию исключения при попытке записи в последние 16 банок. И для железа тоже очень желательно, чтобы игра зависала с понятным сообщением на экране, с непонятным сообщением, но описанным в руководстве пользователя карты, просто зависала, сбрасывалась, или, только в крайнем случае, допускается игнорирование или изменение банок "ПЗУ"(Физически ОЗУ). Игра должна быть отлажена для работы на любом варианте железа (хоть с ОЗУ хоть с ПЗУ). Главная ответственность в том, чтобы не пытаться писать в последние 16 банок ложиться на игру, следовательно на программиста, а эмулятор должен помочь в отладке.
Есть ещё и регистры, влияющие на работу. Их мало, но обращения к ним очень частое. Они работают постоянно и на формирование картинки и на приёме графических данных от Z80. Регистры спроецированы на адреса в ПЗУ Спектрума. Игра может в них писать, но не может их прочитать. Тут тоже заложен спектр вариантов реализации. Можно и в последних 8Кбайтах основного ОЗУ карты, если карта успеет. Можно во внутреннем ОЗУ и регистрах микоконтроллера карты. Можно в триггерах и регистрах рассыпухи. Проецирование на ПЗУ спектрума нам нужно только для установки регистров карты по командам игры, работать же внутри карты они могут каким угодно манером, как угодно размноженные и трансформированные, но с правильным результатом.
Описания регистров даны ниже, по ходу описания работы карты.
Полный список регистров см.(Пост4/Приложения.zip/Перечень регистров.txt){туду}

Если Z80 пишет в память, карта должна знать что и куда.
Если пишется в область $0000..$1FFF, то обрабатываем текущим инструментом
Если пишется в область $2000..$21FF, то редактируем доступную банку палитр
Если пишется в область $3000..$3FFE, то, если есть спроецированный регистр, устанавливаем его новое значение.
Если пишется в $3FFF, то включается в работу инициализатор режима карты.
Эффект от вышеперечисленных перехватов влияет на следующие, поэтому последовательность применения не должна нарушаться. Например, игра установила маску счетчика инструмента и тут-же начинает рисовать спрайт. Данные должны попасть в нужные байты буфера инструмента.
Возможны также перехваты записи в экраные области. Перехваты записи в порты. Если это вам поможет. Перехваты не влияют на работу игры.

В простейшем варианте не нужно вообще трогать процессор. Игра должна переспросить пользователя в каком режиме работать.
Разрешается приостанавливать процессор только в 2-х случаях.
1. После сброса, для демонстрации заставки ZXПирит Vn.n.n.
2. При выполнении команды инициализации (от 32 до 64 тактов). Только если устанавливаемый режим поддерживается. Для детекции карты игрой.

Начинается по сбросу, хорошо если по включению, очень хорошо по переходу программы на 0.
1.Показ заставки ZXПирит Vn.n.n приветствуется.
2.Регистры сбрасываются в начальное значение.
3.Состояние карты нулевое

...Диззи крутанул ручку. Машина чихнула, но не завелась...
Игра управляет режимом работы карты, производя запись байта по адресу $3fff.
В простейшем случае, (карта на рассыпухе,) ничего делать вообще не надо. Режим единственный. Запись в ПЗУ открыта всё время.
Если мы в режиме блокировки, то ничего не делаем. Только при сбросе этот режим сбросится в начальный.
Если карта в режиме ожидания, то прерываем ожидание и расшифровываем байт:
$00: Режим закрытых регистров.
$02: Открываем регистры ZXПирит. По возможности даём паузу процессору 32..64 такта. Для детекции игрой, как карта ZXПирит базовых возможностей
$03: Открываем регистры ZXПирит. Если карта полных возможностей, даём паузу процессору 32..64 такта. Для детекции игрой, как карта ZXПирит полных возможностей.
Если по $3FFF пришёл байт не равный 1, то, при закрытых регистрах, переводим карту в режим блокировки. При открытых регистрах - игнорируем. (Для симулятора отладки - генерация исключения.*)
Если пришёл 1, переходим в режим ожидания на 32 такта.
Если режим ожидания кончился по времени - перестаём ожидать. (Для симулятора отладки - генерация исключения.*)
Вся эта чехарда нужна для приятной работы конечного пользователя. Чтобы максимум неадаптированных игр шло, без вытыкания ZXПирит из слота. Приятно, когда игра сама определяет карту и пишет в главном меню
...
7 ZXПирит обнаружен _________ использую
...
или
...
7 ZXПирит необнаружен _____ неиспользую
...
И при нажатии на 7 переключает (использую/неиспользую)

* Игра должна быть отлажена так, чтобы не писать лишнего в ПЗУ.

Reobne
08.09.2015, 17:12
Карта глазами программы.
Логика работы и что мы видим на экране.
Инициализация карты после сброса.
Шаблоны инициализации.
Шаблоны записи данных.
Программа, тестирующая режимы.
Каких эффектов можно добиться. (несколько рисованных сов)
Есть 8 случаев автор(недоступен, доступен(ты сам))*исходники(нет, есть)*дополнительные_ресурсы(нет, есть).
Если не доступен автор, разбираемся в логике вывода графики, от ресурсов до экрана.
1. Где лежат ресурсы, и какие они. Желательно сразу, обычно это просто.
2. Исследуем, имеется-ли программно организованный буфер экрана. Как он организован.
3. Как рисуется фон, если нужно ускорить рисование фона, подкрасить фон, либо фон сложный: часть изображения за спрайтами, часть пЕред.
4. Исследуем процедуры вывода спрайта. Вникаем есть ли маска, есть-ли промежуточные буферы (например для сдвига, поворота, зеркаливания)

Если доступен автор, сначала допрашиваем его, какие он помнит особенности. Это может помочь, и не будет лишним.

Если нет исходника, хакаем. Нам не нужен полный дизассемблер программы(, и потом на него долго смотреть). Идём от экрана. В отладчике ставим останов при записи в экранную область. (Помним, что у 128К, кроме главного экрана по адресу $4000 может использоваться расширенный по $C000) Если это шлёпанье кадра из буфера, (главный признак - куча LDI/PUSH, или один LDIR, возможны варианты.) Мы нашли буфер, копаем дальше, ставим точку останова на запись в буфер. Повторяем по цепочке, пока не найдём хитрую процедуру. Пытаемся выяснить что это. Творчески лазаем по цепочке вызовов (CALL-RET-(JP))/
Пытаемся найти главный цикл программы. Пробуем заменить CALL на 3 NOP, и смотрим что пропало на экране. Таким образом находим всё, что нам надо найти (см. предыдущий абзац)

Ищем свободную память. Медитируем, а нужны ли нам буферы? Есть ли место для дополнительных ресурсов? Есть ли место для кода инициализации карты? (если не хватает, часть инициализации можно внести в загрузчик игры, заполнение неизменных палитр)

Пример адаптации "Три недели в раю" от А до Я.

Reobne
08.09.2015, 17:13
Территория будущих отчётов. 3

Shadow Maker
08.09.2015, 17:20
Непонятно, что это такое. Напиши какое-нибудь описание в первый пост.

Reobne
08.09.2015, 17:38
Shadow Maker, Ок, стараюсь, начал заполнять. :)
Мне вот так, под спойлерами, нравится.


Viktor2312, ты что-ли?
MVV, Его ученик. :)

Reobne
10.09.2015, 07:14
З С Т волшебный пендель дал.
Пусть будет пирит этой карты талисман.
Дэн Попов по форуму прошёл,
Что это баян, в картотеке не нашёл.
Shadow Maker, придётся просить,
Как будет время, названье темы сменить.
Заголовок первопоста в название темы.
Щас в тексте переправлю, и пойдёт дело.

Raydac
10.09.2015, 15:19
опиши как будут адаптироваться существующие игры и их графика

Reobne
10.09.2015, 15:43
Raydac, Да, не волнуйтесь, я в теме. Всё уже давно в голове.(См. 1.ожидаемые результаты.1) Только время надо, излагать. Ожидаете результаты, пож-ста. :)

Обидно, второе сообщение исправил, дописал, а не сохранилось.

Raydac
10.09.2015, 15:50
да я не волнуюсь, но адаптация старого софта это и есть ключевой и критический момент в процессе и который и определяет всю технологию, вот и интересно было бы хотя бы в кратце услышать тезисы как это будет осуществляться

Reobne
10.09.2015, 17:32
Я вылизываю, подбираю слова. Хочу чётко, понятно, коротко, структурировано.
Вот опять, до понедельника не будет меня, потом 2 дня сумасшедших, потом не знаю что. Ничего, зима длинная. Там масса времени будет.

---------- Post added at 20:51 ---------- Previous post was at 20:51 ----------


но адаптация старого софта это и есть ключевой и критический момент Естественно.

---------- Post added at 20:52 ---------- Previous post was at 20:51 ----------

1-цели-1 :)

Догадно, что первый пост, раздел "цели", первый пункт?

---------- Post added at 22:32 ---------- Previous post was at 20:54 ----------

Покалякал в 3-ем посту. Завтра с утра может полчаса буду(+- 3 часа :) ), потом несколько дней не будет меня.

shurik-ua
10.09.2015, 21:27
Под все пункты требований подходит ULA+ - там и цвета и клешинг не такой суровый и реализовывается не так уж сложно и даже софт есть - чего ещё надо ?

zx_
10.09.2015, 21:34
ула плюс так никто и не сделал в виде платы
или чипа
или платки с чипом

weiv
10.09.2015, 22:03
Под все пункты требований подходит ULA+ - там и цвета и клешинг не такой суровый и реализовывается не так уж сложно и даже софт есть - чего ещё надо ?

А чего клешинг в ULA+ не такой суровый? Там вроде просто программируемые цвета атрибутов, клешинг она никак не трогает.

Reobne
11.09.2015, 01:55
ула плюс так никто и не сделал в виде платы
Если экстраполировать аналогию с куском для жевания: (Полный рот/удобный кусок) УЛА подходит "мелкая крошка", :) На жевание крошки, энергии челюстным мышцам направить надо больше, чем есть в этой крошке. И лень праведная не даёт "прожевать" ULA до карты.

zst
11.09.2015, 04:33
ула плюс так никто и не сделал в виде платы
или чипа
или платки с чипом
ULA+ сейчас уже делать особого смысла нет. Клешинг она не устранит, а в Метеоре палитра поцветастее будет. В ZX-EVO, кстати, ULA+ реализовали.

---------- Post added at 07:31 ---------- Previous post was at 06:56 ----------

Reobne, принцип работы видеокарты ZXПирит хотелось бы подробнее.

---------- Post added at 07:33 ---------- Previous post was at 07:31 ----------


Пример адаптации "Три недели в раю" от А до Я.
Это очень интересно.

Reobne
11.09.2015, 04:43
принцип работы видеокарты ZXПирит хотелось бы подробнее
Сейчас собираюсь в дальнюю дорогу.
В сумбурной форме можно глянуть в кирпиче (http://zx-pk.ru/showpost.php?p=826787&postcount=569) (Пост1/история)
Цветочки полил. Думаю что забыл... :)

---------- Post added at 09:43 ---------- Previous post was at 09:39 ----------

zst, Кратко: 80% ZXПирит взято из твоих идей по Метеору. В центр я ставлю свою простоту. Глядя с Метеора, она является отладочной заглушкой. Я надеюсь, что удасца довести рабочей версии.

zx_
13.09.2015, 09:26
вот нашел , -
http://zx-pk.ru/showpost.php?p=606062&postcount=1

такую бы платку для начала, причем даже без вга, вга нафиг не нужен , его можно по разному
а вот видюху, с уже существующими режимами!!! да под шину !- оченно хочется
но никто не делает, все блин творцы - оригиналы

Djoni
13.09.2015, 10:08
вот нашел , -
http://zx-pk.ru/showpost.php?p=606062&postcount=1

такую бы платку для начала, причем даже без вга, вга нафиг не нужен , его можно по разному
а вот видюху, с уже существующими режимами!!! да под шину !- оченно хочется
но никто не делает, все блин творцы - оригиналы

Да было бы интересно , кажется был рабочий экземпляр http://zx-pk.ru/showpost.php?p=124116&postcount=27

zx_
13.09.2015, 10:11
MVV, а покажите пожалуйста или назовите

Raydac
13.09.2015, 10:17
Да было бы интересно , кажется был рабочий экземпляр http://zx-pk.ru/showpost.php?p=124116&postcount=27
почитал описание, какая то пародия на zxpoly, как автор модуля собирался сделать цветным тот же скроллинг какойнить ваще неясно, имхо максимум что можно расцветить - статическую картинку

CodeMaster
01.10.2015, 21:31
А есть ли и много ли игр на Спектруме, которые рисуются исключительно спрайтами (like NES)?

Reobne
03.10.2015, 09:52
идея карты такова чтобы избавиться от клешинга: значит тебе просто напросто нужно сделать такую железку, чтобы было несколько битпланов стандартного 6912 экрана
Похоже, на 16 бит на пиксель в ZXПирит.

Причем чтобы записывать ты мог в любой из этих битпланов, а читать уже только сложенные битпланы со стандартного адреса.
Тоже похоже.

Как маскировать спрайт на битплане, чтобы сложение было без клешинга на экране можно придумать... Может автомаска?
В ZXПирит это выборка нужных бит (через вбайтсжиматель), и прогон через таблицу палитры. Логика смешения в значениях палитры.

Shadow Maker
03.10.2015, 10:56
А есть ли и много ли игр на Спектруме, которые рисуются исключительно спрайтами (like NES)?
Ты спрайты динамические имеешь ввиду или тайлы (т.е. все одинакового размера, в случае с NES 8x8). Динамических - да все вообще, которые не векторные :) Тайлы - всё, что на Чурерре и на АГД вроде одинаковых размеров там всегда.

CodeMaster
04.10.2015, 20:59
Ты спрайты динамические имеешь ввиду или тайлы

Я имею в виду когда на экран вообще не выводятся графические примитивы. Т.е. если спрайты выводятся целиком по 8 (или больше) байт, то ZXПирит может быть некоторым логическим анализатором отслеживающим запись в видеопамять и ищущим сигнатуры ч/б спрайтов. А у же затем раскрашивает из в байт на точку (или сколько угодно) и в результате формирует изображение вообще без модификации игры. Точнее модификация будет в виде раскрашивания спрайтов, но эти данные загружаются в саму видеокарту.

Reobne
05.10.2015, 05:59
Я имею в виду когда на экран вообще не выводятся графические примитивы. Т.е. если спрайты выводятся целиком по 8 (или больше) байт, то ZXПирит может быть некоторым логическим анализатором отслеживающим запись в видеопамять и ищущим сигнатуры ч/б спрайтов. А у же затем раскрашивает из в байт на точку (или сколько угодно) и в результате формирует изображение вообще без модификации игры. Точнее модификация будет в виде раскрашивания спрайтов, но эти данные загружаются в саму видеокарту.
Потенциально, (пока не сделаешь не узнаешь,) теоретически могут быть для определённых игр, определённые преднастройки ZXПирит, которые украсят игру, без модификации самой игры.
То есть просто ещё одна обёртка-загрузчик, которая настраивает ZXПирит, и запускает основной загрузчик.
Это пока в уме, на уровне подсознания. :)

CodeMaster
05.10.2015, 07:51
То есть просто ещё одна обёртка-загрузчик, которая настраивает ZXПирит, и запускает основной загрузчик.

Ну да, я в принципе об этом же. В простейшем варианте вообще можно ничего не раскрашивать предварительно, только определить сигнатуры спрайтов, а карта сама раскрасит точки по атрибутам. Это уже, по идее должно, устранить клэшинг.

Nesser
17.06.2016, 22:17
Ничего не получится, почти все игры выводят графику через SP или LDI. Нет там никаких спрайтов и никаких номеров там привязать не к чему, там поток из мешанины данных, при чём иногда за один проход рисуются куски НЕСКОЛЬКИХ тайлов.
Поэтому как программист говорю - ничего не получится.

Если конечно этот проект ещё жив.