Автор Тема: [SMD] 8-in-1 многоигровка с меню  (Прочитано 913 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн JRBVZ

  • Пользователь
  • Сообщений: 325
    • Просмотр профиля
[SMD] 8-in-1 многоигровка с меню
« : 01 Март 2023, 11:41:57 »
Небольшое руководство по созданию картриджа, содержащего 8 игр с встроенным меню выбора и встраиванию кода меню в другую игру с помощью hex редактора.
В приложенном файле Rambo-menu-short.bin игра Rambo 3 расположена в первых 256Кб, код меню во вторых 256Кб начиная с адреса 40000. Редактируемый список игр находится по адресу 41140. Список из 7 добавляемых игр должен быть подобран таким образом, чтобы все они были одинаковые по объему, напр. все 512KB, 1MB, 2MB, 4MB. Также надо учитывать какую память вы сможете использовать при создании многоигровки 512КВх8=4МВ (S29GL32), 8МБ(S29GL64), 16MB (S29GL128), 32MB (S29GL256).
Минимальный порядок действий будет выглядеть следующим образом:
1. Подбираем 7 игр одинакового размера по объему,
2. С помощью hex редактора редактируем список игр по адресу 41140,
3. Если нужно, увеличиваем файл Rambo-menu-short.bin до размера подобранных игр, заполняя пустое пространство FF,
4. С помощью того же hex редактора собираем все игры в один файл, выставляя их по порядку как в меню. Важно, чтобы первым всегда был файл Rambo-menu-short.bin, несмотря на то, что в списке меню Rambo 3 на последнем месте. В качестве альтернативы hex редактору можно использовать программу Megadrive Rom Maker, либо другой удобный способ,
5. Выполняем swap bin и записываем на флэшку,
6. Собираем картридж по схеме с 74HC174 и играем.

Чтобы игра Rambo 3 не повторялась в каждой восьмиигровке, попробуем встроить код меню в другую игру - возьмем Contra - Hard Corps. Весь код меню занимает 4704 байта, нам надо найти в коде игры неиспользуемое пространство не менее данного размера, как правило такие участки заполнены FF. Посмотрев с конца файла, я выбрал участок, начинающийся с адреса 1FBF00. Сюда и вставляем код меню из Rambo-menu-short.bin начиная с адреса 40000 и до 4125F.
260121-0
Теперь идем в самое начало файла Contra - Hard Corps и смотрим, что записано по адресам 05, 06, 07 – 000200, запомним данное значение, оно нам еще понадобится. Теперь вместо него пишем адрес начала кода меню 1FBF00.
260123-1
Теперь при старте многоигровка будет показывать меню. Далее перемещаемся к адресу 1FC7B4 и вместо 0D7E пишем адрес который мы заменили в начале файла 0200.
260125-2
Всё, теперь при выборе восьмого пункта меню у нас будет запускаться Contra - Hard Corps. Т.к. мы внесли изменения в код игры, необходимо исправить контрольную сумму с помощью Megadrive Rom Maker или Sega Genesis ROM Analyzer, после чего можно проверить работу меню в эмуляторе и собирать многоигровку.
Для переключения игр в картридже используется 74HC174 (74LS174). Контакты разъема соединяем с HC174: А17 (VA1) – 3 нога (D0), А15 (VA2) – 4 нога (D1), А13 (VA3) – 6 нога (D3), В27 (VRES) – 1 нога (Mr), B31 (TIME) – 9 нога (Cp). Выводы HC174 соединяем со старшими адресами флэш-памяти, например, для S29GL64: 2 нога (Q0) – 9 нога (А19), 5 нога (Q1) – 10 нога (А20), 7 нога (Q2) – 13 нога (А21). Выводы 10-15 HC174 не задействованы (возможно входы D3, D4, D5 надо притянуть к земле, пусть меня знающие люди поправят).
260127-3
PS спасибо DrMefistO за Smd IDA Tools, благодаря которым я разобрался в модификации исходного меню, для меня это был первый опыт в работе с дизассемблером.

Оффлайн negativ72rus

  • Пользователь
  • Сообщений: 197
    • Просмотр профиля
[SMD] 8-in-1 многоигровка с меню
« Ответ #1 : 02 Март 2023, 08:53:30 »
А в каком эмуле лучше проверить работу меню? В GENS не работает.
Или я как-то не так собрал файл?

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24712
    • Просмотр профиля
[SMD] 8-in-1 многоигровка с меню
« Ответ #2 : 02 Март 2023, 10:28:54 »
Меню работает в любом эмуляторе. В смысле запускается. Переключение игр ни в каком эмуляторе работать не будет.

Оффлайн negativ72rus

  • Пользователь
  • Сообщений: 197
    • Просмотр профиля
[SMD] 8-in-1 многоигровка с меню
« Ответ #3 : 02 Март 2023, 10:46:27 »
Меню работает в любом эмуляторе. В смысле запускается. Переключение игр ни в каком эмуляторе работать не будет.
а, теперь понятно. спасибо )

Оффлайн hot

  • Пользователь
  • Сообщений: 123
    • Просмотр профиля
[SMD] 8-in-1 многоигровка с меню
« Ответ #4 : 02 Март 2023, 10:57:00 »
А в каком эмуле лучше проверить работу меню? В GENS не работает.
В Genesis Plus GX. Меню работает. Все игры запустились. Единственное, что при сбросе Genesis Plus GX сбрасывает именно в последнюю запущенную игру, а не в меню со списком игр. Как будто soft reset срабатывает. Надо останавливать эмуляцию и запускать ром заново, чтобы попасть в меню.

На клоне с SM-801 с флеш-картриджа ни одна игра кроме Рембо не запустилась, ресет выкидывает в меню со списком игр "8 in 1".

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24712
    • Просмотр профиля
[SMD] 8-in-1 многоигровка с меню
« Ответ #5 : 02 Март 2023, 10:57:42 »
Запускается только восьмая игра, та, что стоит в нулевом банке



Не забудь имена игр вписать

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24712
    • Просмотр профиля
[SMD] 8-in-1 многоигровка с меню
« Ответ #6 : 02 Март 2023, 10:59:25 »
На клоне с SM-801 с флеш-картриджа ни одна игра кроме Рембо не запустилась
И не должна!!!
Это сборка с аппаратным переключением страниц, она работает только на железе, приведённом выше

Оффлайн negativ72rus

  • Пользователь
  • Сообщений: 197
    • Просмотр профиля
[SMD] 8-in-1 многоигровка с меню
« Ответ #7 : 02 Март 2023, 13:22:38 »
Не забудь имена игр вписать
Если Вы мне, то да, я помню об этом. Хотел по быстрому проверить, и только потом дочитал топик до конца, про аппаратное переключение банков )

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4471
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
[SMD] 8-in-1 многоигровка с меню
« Ответ #8 : 02 Март 2023, 16:51:46 »
Весь код меню занимает 4704 байта
А исходный код меню имеется в наличии?

Оффлайн JRBVZ

  • Пользователь
  • Сообщений: 325
    • Просмотр профиля
[SMD] 8-in-1 многоигровка с меню
« Ответ #9 : 02 Март 2023, 16:55:20 »
Если только у китайцев  :D

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24712
    • Просмотр профиля
[SMD] 8-in-1 многоигровка с меню
« Ответ #10 : 02 Март 2023, 17:25:24 »
А исходный код меню имеется в наличии?
Дизасм, батенька, только дизасм