Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 28

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

  1. #1
    Master
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    544
    Благодарностей: 270
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb Раздел 1. Для ВСЕХ любопытствующих.

    Если кто-то хочет результатов - пока почти-что ничего нет, и можно тему не читать, не тратьте время. Если что-то будет, я исправлю этот текст в первом посте.
    Тема ещё жива (декабрь 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, как я её понимаю.
    Чтобы не засорять его тему вот такими кирпичами - была сделана эта тема.
    Данная карта, это упрощение проекта 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; 11.12.2015 в 06:34.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    544
    Благодарностей: 270
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Раздел 2. Для создателей аппаратных средств, эмуляторов, и прошивок систем.

    Введение

    Система 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


    Если 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; 16.09.2015 в 05:04.

  4. #3
    Master
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    544
    Благодарностей: 270
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Для хакеров-адаптации и программистов.

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

    Принципы адаптации.


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

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

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

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

    [свернуть]
    Пример адаптации "Три недели в раю" от А до Я.
    Последний раз редактировалось Reobne; 10.09.2015 в 17:27.

  5. #4
    Master
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    544
    Благодарностей: 270
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Территория будущих отчётов. 3

  6. #5
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,213
    Благодарностей: 869
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Непонятно, что это такое. Напиши какое-нибудь описание в первый пост.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Мордовия - Республика звука

  7. #6
    Master
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    544
    Благодарностей: 270
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Цитата Сообщение от MVV Посмотреть сообщение
    Viktor2312, ты что-ли?
    MVV, Его ученик.
    Последний раз редактировалось Reobne; 16.09.2015 в 04:54.

  8. #7
    Master
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    544
    Благодарностей: 270
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  9. #8
    Master
    Регистрация
    16.08.2005
    Адрес
    Estonia,Tallinn
    Сообщений
    691
    Благодарностей: 408
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    опиши как будут адаптироваться существующие игры и их графика

  10. #9
    Master
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    544
    Благодарностей: 270
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  11. #10
    Master
    Регистрация
    16.08.2005
    Адрес
    Estonia,Tallinn
    Сообщений
    691
    Благодарностей: 408
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 25
    Последнее: 23.10.2011, 22:57
  2. простой вопрос по real spectrum
    от cherkasy в разделе Эмуляторы
    Ответов: 0
    Последнее: 26.12.2009, 20:31
  3. Еще одно расширение видеорежима
    от ZEK в разделе ZX Концепции
    Ответов: 24
    Последнее: 31.07.2009, 12:28
  4. куплю самый простой спек! 48кб самый простой
    от REMR в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 23.08.2008, 21:42
  5. Аппаратный TCP/IP для ZX Spectrum
    от CityAceE в разделе Unsorted
    Ответов: 15
    Последнее: 01.02.2007, 16:13

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •