| Разработка и ромхакинг > Ромхакинг |
| Вопросы новичков |
| << < (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) |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |