Разработка и ромхакинг > Ромхакинг
Вопросы новичков
<< < (14/22) > >>
Беларус:
Как реализованы многоигровки на Дэнди типа "9999 игр в одном"? Это несколько полноценных игр и таблица адресов и значения для изменения этих игр? И при запуске игра как-то патчится, или как это реализовано?
Sharpnull:

--- Цитата: perfect_genius от 13 Август 2024, 02:57:18 ---"9999 игр в одном"?
--- Конец цитаты ---
В роме находятся ромы отдельных игр, маппер у картриджа специальный, позволяющий записью в регистры маппера зафиксировать выбранную игру, при этом она не знает о существовании других игр и пользуется своими регистрами. Меню многоигровки похоже на отдельную игру, только запускается первым. Обычно, для переключения на игру, меню записывает в RAM код записи в регистры и прыжок на начало игры, потому что переключение PRG банков сменит код меню на игровой и мы окажемся не там (если инструкция записи в регистр не в нужном месте). В "Чайках" для одной из игр такой код RAM $400:

--- Код: ---  LDA #$00
  JSR $EC9C
  STA $C002
  JMP $8003
--- Конец кода ---
STA $C002 переключает игру, а JMP $8003 специально для этой игры. Чтобы не писать для каждой игры свой адрес начала, используют прыжок на адрес сброса (Reset) игры - JMP ($FFFC), но в данной многоигровке сделано иначе для появления меню при сбросе консоли, а не выбранной игры, для этого им пришлось изменить код каждой игры и по адресу Reset каждой игры переключение на меню.
Кроме номера банка и названия игры, для каждой игры могут храниться: значение mirroring, значение маппера, размеры PRG и CHR, возможность записи в CHR и другое. В некоторых многоигровках модифицированные игры, чтобы из меню был доступ к: разным уровням, вариантам игры, читам.
Беларус:
Sharpnull, спасибо, ты старался, но я всё равно не понял - в картридже только несколько игр, или же 9999? Если много, то для экономии места проще было бы таки просто патчить те несколько оригинальных игр при запуске?
Sharpnull:

--- Цитата: perfect_genius от 13 Август 2024, 13:27:50 ---в картридже только несколько игр, или же 9999?
--- Конец цитаты ---
Я не понял, что речь про кол-во игр в многоигровках с указанием кучи игр, я рассказал как устроены многоигровки вообще. Реальных игр раньше было несколько, в картриджах с ненастоящим кол-во игр в меню генерируются названия игр, поэтому список настоящий, но игры повторяются. В некоторых случаях ещё меняются начальные значения RAM, но, чтобы это сработало, игру модифицируют (как минимум убирают очистку RAM в нужном месте). Код и графика игры неизменяемые, поэтому под модификацией имею в виду изменение игры до создания картриджа, во время работы картриджа ром не меняется. Например, чтобы добавить выбор уровня из меню многоигровки, в игре убирают очистку и установку начального значения в RAM для уровня, тогда будет загружен нужный уровень, довольно очевидно. Ничего сложного в многоигровках с повторами не используется.
UPD: Сейчас ничто не мешает разработать свой маппер с 512 KiB ОЗУ под PRG ROM (256 KiB CHR RAM уже есть), тогда можно копировать игру, а на неё накладывать аналог IPS-патча, тогда влезет много хаков на один картридж. У многоигровок бывает 256 KiB CHR RAM, так что графические хаки уже можно реализовать. Но это никому не нужно.
Guyver(X.B.M.):
Я в одной из подобных многоигровок столкнулся с необычным случаем. Многоигровка простая, там 4 игры всего размножено в 9999. Но прикол в том, что среди графики есть банк с хаком star force . И это при том, что самого кода этой игры на картридже нет. Зачем это было сделано? Добивали графику для ровного счёта банков??? Почему не повторили банк с уже существующей игрой? :neznayu: Одни вопросы...
Sharpnull:

--- Цитата: Guyver(X.B.M.) от 13 Август 2024, 14:32:59 ---среди графики есть банк с хаком star force . И это при том, что самого кода этой игры на картридже нет. Зачем это было сделано?
--- Конец цитаты ---
Это нормально, когда в многоигровках находят часть CHR и PRG банков игр, которых нет в меню. По ошибке как-то попадают. Недавно современный картридж с настоящими играми "365-in-1 Dendy" разбирал, там оказалась полная игра не в меню, если отредактировать меню, то она появится, но не было превью (картинка в меню). Поискал этот картридж в сети и был вариант с этой игрой (судя по описанию), но тоже 365-in-1. Может им нужно было число 365 или не успели нарисовать превью.
В старых играх попадается отладочная информация, мусор, исходных код, бывает из-за программы, которая собирает игру и по ошибке копирует ОЗУ ПК в оставшееся место. На tcrf.net о таких играх пишут, иногда можно понять какой инструмент использовали разработчики.
Yoti:

--- Цитата: Sharpnull от 13 Август 2024, 14:53:09 ---Может им нужно было число 365
--- Конец цитаты ---
Может быть по количеству дней в году? Типа, картридж на каждый день...
Ivan_Ages:
Эта не та ли 365-в-1 от ньюгейма. Сначала выпустили 375 в 1. Был топ. Но карик начали минусить в отзывах. Потому что там были баттлтодсы1,2, которые разумеется почти ни у кого не работали. Затем выходит 365. До сих пор на озоне лежит только по сотке в месяц накручивают.
Sharpnull:

--- Цитата: Ivan_Ages от 14 Август 2024, 12:14:03 ---Эта не та ли 365-в-1 от ньюгейма
--- Конец цитаты ---
https://www.emu-land.net/forum/index.php/topic,12058.msg1588707.html#msg1588707 "Dendy мега хиты 365 игр", ниже в теме информация по дампу, сборке своих игр и перезаписи. Ferzi ещё паяльником с ней что-то делал для исправления перезаписи, может брак, не разбираюсь.
Turbo2000:
Можете, пожалуйста, объяснить, почему при вызове сабрутины может внезапно сработать VBLANK?
Может быть такое, что игра никак не синхронизируется с прерыванием?



Добавлено позже:
Там есть какая-то синхронизация по кадрам, но она происходит до
Структура заполняется, и тайлы распакованные отправляются на VDP через DMA во время VBlank.

Добавлено позже:
Кажется, понял в чем дело, перепроверю код VBlank, но скорее всего в данном случае реализована очередь команд для VDP, поэтому синхронизация не требуется
Turbo2000:
А можете, пожалуйста, подсказать, какие алгоритмы сжатия используются в Dune 2, The Story of Thor?
SeregaZ:
о! а чо там в Дюне сжато? я думал там как открытая книга :)
Sharpnull:

--- Цитата: Turbo2000 от 23 Август 2024, 18:46:27 ---какие алгоритмы сжатия используются в Dune 2, The Story of Thor?
--- Конец цитаты ---
В The Story of Thor / Beyond Oasis два метода сжатия, один как в Streets of Rage 2. Я когда-то писал медленный компрессор на Python для метода из SoR2, потом я писал на C компрессор метода из Тор с обоими декомпрессорами, но не добавил компрессор от SoR2. Там ещё алгоритм предполагает возможность работы с блоками. Для сжатия методом из SoR2 можно использовать https://github.com/hansbonini/lz_ancient, но разжатие сделано с ошибкой. Прикладываю мою программу для разжатия обоих методов и сжатия методом из Тора.
Turbo2000:

--- Цитата: SeregaZ от 23 Август 2024, 18:50:29 ---о! а чо там в Дюне сжато? я думал там как открытая книга :)

--- Конец цитаты ---
В оригинале много чего сжато, 100%: графика, маппинги (тайлы), если не ошибаюсь, то таблицы спрайтов тоже

Добавлено позже:

--- Цитата: Sharpnull от 23 Август 2024, 19:57:56 ---В The Story of Thor / Beyond Oasis два метода сжатия, один как в Streets of Rage 2. Я когда-то писал медленный компрессор на Python для метода из SoR2, потом я писал на C компрессор метода из Тор с обоими декомпрессорами, но не добавил компрессор от SoR2. Там ещё алгоритм предполагает возможность работы с блоками. Для сжатия методом из SoR2 можно использовать https://github.com/hansbonini/lz_ancient, но разжатие сделано с ошибкой. Прикладываю мою программу для разжатия обоих методов и сжатия методом из Тора.

--- Конец цитаты ---
О, спасибо, большое, если что, то могу выложить программу расжатия графики для дюны, вроде работает без ошибок, но не уверен, что кому-то надо
SeregaZ:
а что есть такого в оригинале, чего не разобрано в сборщике?
bgr:
Sharpnull, а разве на ромхакинге выложен плохой упаковщик? В комплекте с редактором SoR2

Добавлено позже:
Turbo2000, выкладывай, если в интернете нет :)
Turbo2000:

--- Цитата: bgr от 23 Август 2024, 21:16:54 ---
Добавлено позже:
Turbo2000, выкладывай, если в интернете нет :)

--- Конец цитаты ---
Лично не нашел, сделаю библиотеку:)

Добавлено позже:

--- Цитата: SeregaZ от 23 Август 2024, 20:53:49 ---а что есть такого в оригинале, чего не разобрано в сборщике?

--- Конец цитаты ---
Ничего, просто интересно, нет же исходников и инструментов, как это было разобрано, только результат и структура для сборки
Turbo2000:

--- Цитата: bgr от 23 Август 2024, 21:16:54 ---Turbo2000, выкладывай, если в интернете нет
--- Конец цитаты ---
Сделал либу https://github.com/DramaDesu/ym-smdtools
Пока не устанавливается (поддержка разных пакетных менеджеров), но сделаю устанавливаемой

Добавлено позже:
Единственное, там 20-е плюсы, могу, если что снизить версию, но придется от некоторых вещей отказаться

Добавлено позже:
Можно еще повозиться с оптимизациями алгоритма распаковки, чтобы оптимизировать бранч-предикты, но лень, запутанный код
Turbo2000:
Всем привет!
Кто-нибудь находил порт или декомпиляцию драйвера Ancient Music   
Driver для сеги?
SeregaZ:
походу там только две игры:
Streets of Rage 3 (Bare Knuckle III)   Ancient Music Driver MD v1.00 (Hideki Koyama)
Beyond Oasis (The Story of Thor)   Ancient Music Driver MD v1.06 (Hideki Koyama)
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии