Автор Тема: "Многоигровки" на Денди  (Прочитано 194131 раз)

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

Оффлайн Ferzi

  • Пользователь
  • Сообщений: 132
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #960 : 16 Июль 2024, 23:57:38 »
Сдампил его в режиме Coolboy submapper 3 с параметрами  --mapper 268.3 --prg-size 64M --file coolboy2.nes --prg-nvram-size 8K --chr-ram-size 256K
он даже запустился в fceux но сдампился судя по всему не полностью пытаюсь с асамблером познакомится но пока туга особо не понимаю что отслеживать и куда смотреть

Оффлайн Ferzi

  • Пользователь
  • Сообщений: 132
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #961 : 20 Июль 2024, 14:14:02 »
Удалось сдампить ром благодаря Sharpnull он написал скрипт AA6023Sub13_365-in-1.cs для запуска скрипта его нужно положить в папку mappers в командной строке написать мапер 268 субмапер 13 пример famicom-dumper.exe dump --port COM5 --mapper 268.13 который позволил это сделать то что сдампилось выкладываю в виде рома

Также Sharpnull Написал скрипт на питоне extract_365_in_1 он позволяет извлечь все игры в отдельные ромы их я тоже выкладываю
В роме ещё оказалась скрытая игра Fireman её я тоже выкладываю к сообщению нелзя прикрепить больше 32mb поэтому ссылка на яндекс диск
https://drive.google.com/file/d/1rHkqjzogPw48k11ymesByTf0DuWSKEEQ/view?usp=sharing
скрипт написан  на Python 3 в командной строке python extract_365_in_1.py "365-in-1 Dendy Map 0-4-7.nes" или просто перетащить на скрипт файл и он всё распакует очень удобно

По поводу перезаписи ещё не пробовал как попробую сразу же напишу
 
Что известно о поддерживаемых маперах он точно знает NROM AOROM И MMC3 То что под заголовкам 268 это CNROM Которые были модифицированы для работы на этом картридже поэтому они не корректно работают в эмуляторе сам ром 365-in-1 Dendy Map 0-4-7 само собой в эмуляторе тоже не работает
« Последнее редактирование: 20 Июль 2024, 16:53:20 от Ferzi »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5077
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #962 : 20 Июль 2024, 15:52:35 »
Удалось сдампить ром
Дополню. Маппер 365-in-1 многоигровки не реализован в эмуляторах (в AA6023Sub13_365-in-1.cs не существующий submapper 13 маппера 268), но можно запустить меню для изучения, до запуска игры оно полностью на oversized MMC3. Меню в первых 2МБ и в середине (повтор), прикладываю его отдельным ромом с правильным заголовком рома. Запускается в Mesen, но не FCEUX.
« Последнее редактирование: 20 Июль 2024, 16:09:19 от Sharpnull »

Оффлайн bgr

  • Пользователь
  • Сообщений: 503
    • ВКонтакте
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #963 : 21 Июль 2024, 02:22:30 »
Опять хардварыч шоль замутил очередную хрень🤔
Как картридж устроен? Фото есть?

Онлайн HardWareMan

  • Модератор
  • Сообщений: 7503
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #964 : 21 Июль 2024, 07:44:27 »
Хардварыч:
1) Подобную хрень не мутит;
2) Может и по носу щёлкнуть особо дерзких.

Оффлайн Ferzi

  • Пользователь
  • Сообщений: 132
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #965 : 21 Июль 2024, 16:06:26 »
Опять хардварыч шоль замутил очередную хрень🤔
Как картридж устроен? Фото есть?

Вот так он выглядит


Оффлайн Nhisti

  • Пользователь
  • Сообщений: 969
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #966 : 23 Июль 2024, 13:09:45 »
но не FCEUX
А кто-то в 24-м им ещё пользуется?  :-\

Оффлайн Ferzi

  • Пользователь
  • Сообщений: 132
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #967 : 26 Июль 2024, 17:43:08 »
Обещал написать по поводу записи удалось его перезаписать
благодаря
Sharpnull он скомпилировал новый dumper стандартный не подходит для его работы нужен .NET 8.0
также он сделал скрипт который может генерировать новый ром архив MultiRom работает по следующему принципу в папку ром складываются игры маперы 0 4 7 модифицирование cnrom 3 просто cnrom работать не будут также очень важен размер он не знает маленьких mmc3 PRG 32 CHR 32 их нужно увеличивать до стандартных 128 128 только стандартные размеры, после запуска батника под названием создать, он начнёт модифицировать родное меню base.nes с добавлением новых игр по завершению выведет информацию о том сколько игр и размер ромов в нутрии размер ограничен примерно 60 мегабайтами и если какой то файл не обработан то он покажет какой именно файл, в папке появится новый ром 365-in-1 Dendy New размером 64 мегабайта который можно будет записать 64 мегабайта резервируется сразу хоть 1 игру добавить хоть 40.

Для записи я это делаю так я переношу ром в папку с дампером и переименовываю его при помощи написанного скрипта Переименовать он уделяет заголовок первые 16 байт в роме и переименовывает в 1.bin патом в командной строке famicom-dumper.exe write-coolboy --port COM5 --coolboy-submapper 13 --file 1.bin

По не понятной причине у картриджа умерла одна из sram которая выступала в роле врам возможна статика не знаю я её заменил и сделал фото без неё

Что интересно она на 256кб зачем такой объём не совсем понятно

также сделал транзистор мод чтобы графика не билась видимо это стандартная болезнь 133

немного изменил скрипт для создания нового картриджа он теперь генерирует размер не 64 мб а по размеру ромов тоже его выкладываю это может быть удобно если у вас медленный дампер как у меня и вам надо записать только пару игр

Sharpnull Сделал обновление скрипт для создания многаигровки архив MultiRom2 теперь проходит проверка не только на размер но и использование врам а точнее на то как производится инициализация, картридж не может работать с играми где она производится не правильна это касается в основном хаков также есть возможность изменив две строчки
# Добавлять ли 2-е меню
SECOND_MENU = False
# Добавлять ли нули до 64 МиБ
MULTIROM_PADDING = False
False меняется на true
SECOND_MENU изначально в сдампленном роме меню зачем-то дублируется но эксперименты показали что он и без этого работает но возможно всё же это нужно
также в новом скрипте он больше не учитывает первые 16 байт в меню поэтому их можно удалить это даёт возможность сразу переименовывать в бинарный файл для записи без применения моего скрипта который их удаляет
« Последнее редактирование: 26 Июль 2024, 20:28:20 от Ferzi »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5077
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #968 : 27 Июль 2024, 16:20:48 »
Обещал написать по поводу записи удалось его перезаписать
Дополню.
Сборка famicom-dumper-client
.NET 8.0 для famicom-dumper-client нужен потому что я переключил проект на него с .NET 6, в этом не было необходимости. Новые версии famicom-dumper-client можно собрать самому: скачать исходный https://github.com/ClusterM/famicom-dumper-client (Code > Download ZIP), установить Visual Studio https://visualstudio.microsoft.com/ru/ (выбрать Разработка классических приложений .NET), открыть famicom-dumper.sln, предложит установить .NET 6.0 - соглашаетесь, в Solution Explorer открыть FlashWriters > CoolboyWriter.cs, найти функцию private void SelectBank(int bank) и заменить её на такой код:
ПКМ по FamicomDumper > Properties > Build > Events > Pre-build event убрать текст make -C .. commit buildtime (полностью, с переносом строки), создать в famicom-dumper-client-master\FamicomDumper\Resources пустые файлы buildtime.txt и commit.txt, выбрать Release вместо Debug наверху, нажать F7, в famicom-dumper-client-master\FamicomDumper\bin\Release\net6.0 будет программа. Продвинутые пользователи могут собрать в один EXE командной типа:
dotnet publish -c release -r win-x64 --no-self-containedУ меня заменяется код для других версий CoolBoy (submapper), поэтому --coolboy-submapper указывать при записи наверно не нужно.
Генерация нового рома многоигровки
Последняя версия скрипта в MultiRom2.rar, поэтому не нужны MultiRom.rar и Gen_MultiRom.rar. На основе рома с меню многоигровки появляется новый сборник. При сборке сообщение Skipped | Not Supported означает отсутствии поддержки маппера (поддержка 0, 4, 7, и 3, но с регистрами от CoolBoy), это касается и маленьких ромов с мапперами 4 и 7 (PRG или CHR меньше 128 КиБ), для расширения ромов прикладываю скрипт expand_rom.py, нужно вызвать с аргументами указывающими на входной ром и выходной.
В этой версии скрипта есть предупреждение не о WRAM, а об адресе Reset (адрес с которого запускается код), для MMC3 он должен быть в пределах $E000-FFFF, но здесь $C000-DFFF сработает, а вот $8000-BFFF - нет, такое встречается в плохих хаках на MMC3 и работает в эмуляторах, которые инициализируют там PRG банки 0 и 1.
При желании можно для каждой игры добавить превью (изображение при выборе игры в меню), есть место на 768 игр, но у меня просто чёрное окно. Для этого нужно убрать строчки в скрипте:
Графика превью в роме с 0x100000 (1024 байта на каждую игру), палитры с 0x1F0000.
Обновлённый скрипт извлечения ромов из дампа сборника
Прикладываю новую версию extract_365_in_1.py для извлечения отдельных ромов из сборника, теперь поддерживаются сборки после моего скрипта.

Оффлайн TheBoxGamePL

  • Пользователь
  • Сообщений: 4
    • Просмотр профиля
Re: "Многоигровки" на Денди
« Ответ #969 : 24 Сентябрь 2024, 19:22:09 »
search menu 520-in-1

Оффлайн def696

  • Пользователь
  • Сообщений: 46
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #970 : 03 Октябрь 2024, 00:55:52 »
Еще один вариант Кулбоя, плата SMD365_V02.

283396-0
283398-1

Флешка на 32 метра, сдампил с помощью скрипта AA6023Sub13_365-in-1.cs

* SMD365_V02 - 123_in_1.part1.rar (6144 КБ - загружено 99 раз.)
* SMD365_V02 - 123_in_1.part2.rar (3588.31 КБ - загружено 92 раз.)

Запускается на Mesen, меню работает, игры нет.
Извлечь ромы с помощью extract_365_in_1.py не удалось.
« Последнее редактирование: 03 Октябрь 2024, 13:18:54 от def696 »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5077
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #971 : 08 Октябрь 2024, 07:10:24 »
Извлечь ромы с помощью extract_365_in_1.py не удалось
В скрипте заданы позиции, которые нужно адаптировать. Вот скрипт для этого дампа. Две игры нет в меню Super Mario 3, Turtles 3 и остатки какой-то игры, чтобы посмотреть запустить скрипт так:
extract_125_in_1.py "SMD365_V02 - 123_in_1.nes" 1Появится test_rom.nes, в котором очищены нулями вытащенные ромы, PRG ROM и CHR ROM от оставшихся игры будут видны (через CrystalTile2, например).
Как и раньше, m268 указаны у ромов с регистрами от этого маппера многоигровки, но в заголовке маппер 3, под который нужно адаптировать вручную. Приложил исправленный King of Fighters 98 [m004].

Оффлайн def696

  • Пользователь
  • Сообщений: 46
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #972 : 09 Октябрь 2024, 20:27:39 »
Сгенерировал ром с помощью MultiRom2 с парой игр, прошил картридж.
Всё отлично функционирует!
Теперь я планирую припаять к картриджу флешку объёмом 64 мегабайта и установить на неё образ «365-in-1 Dendy Map 0-4-7». О результатах обязательно сообщу.
У меня вопрос к Sharpnull: как сделать так, чтобы меню запоминало позицию после сброса? Можно ли это реализовать программно или для этого необходимо добавить недостающий резистор R5 на плате?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5077
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #973 : 09 Октябрь 2024, 21:34:46 »
как сделать так, чтобы меню запоминало позицию после сброса? Можно ли это реализовать программно или для этого необходимо добавить недостающий резистор R5 на плате?
Предполагаю, вы говорите о загрузке меню многоигровки после сброса, а не самой игры. Аппаратное решение не знаю, не разбираюсь в железках. Программное решение для обычных игр всегда одно: сохранить в RAM несколько уникальных байт, после сброса проверить наличие этих байт. Для многоигровки после запуска игры такое не сработает, выбранная игра очистит данные. Если после сброса плата сохраняет последние PRG банки, то можно через сравнение байтов найти какая игра была последней.

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2268
  • Пол: Мужской
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #974 : 10 Октябрь 2024, 07:18:25 »
Для многоигровки после запуска игры такое не сработает, выбранная игра очистит данные.
Если я не ошибаюсь, это реализуется несколькими банками памяти prg ram. Один банк для меню, другой банк для игр. При запуске игры меню сохраняет данные в свой банк и затем переключает на второй. После сброса банк опять переключается и меню может прочитать свои данные.

Оффлайн Ferzi

  • Пользователь
  • Сообщений: 132
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #975 : 10 Октябрь 2024, 23:22:25 »
def696 Если будешь делать транзисторный мод устраняющий битую графику и будишь использовать мою схему то учти что возможно резистор на 1к будет не нужен и даже будет мешать в твоём случае так как ревизия платы у тебя другая у моей на ром селе почему-то всегда было 2.5 или 2.3 вольта из за чего транзистор был всегда открыт у тебя возможно там всё нормально суть в том если не работает убери резистор и разорви цепь с землёй он служит как подтяжка к земле своего рода делитель напряжения.

Оффлайн def696

  • Пользователь
  • Сообщений: 46
    • Просмотр профиля
"Многоигровки" на Денди
« Ответ #976 : 11 Октябрь 2024, 02:01:31 »
Если я не ошибаюсь, это реализуется несколькими банками памяти prg ram. Один банк для меню, другой банк для игр. При запуске игры меню сохраняет данные в свой банк и затем переключает на второй. После сброса банк опять переключается и меню может прочитать свои данные.
Нашёл как это сделано у Кластера в его конструкторе многоигровых ROM'ов для картриджей COOLBOY.
Вот выдержка из описания: "Если используется картридж с флэш-памятью с возможностью прямой записи (контакты /WE и /OE подключены к картографу), эту память можно использовать в качестве дополнительного хранилища. Если Make запускается с опцией «ENABLE_SAVES=1», для нее будут зарезервированы последние два сектора флэш-памяти (256 КБ). Эта память будет использоваться для хранения положения курсора и прогресса в играх с «поддержкой батареи» "

То есть меню с помощью маппера записывает данные на флешку. Думаю, что добавить это в наше меню будет весьма непросто. Надеюсь, Кластер включит поддержку субмаппера 13 в свой конструктор ромов.

def696 Если будешь делать транзисторный мод устраняющий битую графику и будишь использовать мою схему то учти что возможно резистор на 1к будет не нужен и даже будет мешать в твоём случае так как ревизия платы у тебя другая у моей на ром селе почему-то всегда было 2.5 или 2.3 вольта из за чего транзистор был всегда открыт у тебя возможно там всё нормально суть в том если не работает убери резистор и разорви цепь с землёй он служит как подтяжка к земле своего рода делитель напряжения.
Похоже, с графикой у меня всё в порядке, я не заметил никаких проблем.

Добавил флешку объёмом 64 мегабайта и прошил образ. «365-in-1 Dendy Map 0-4-7» всё прекрасно работает.
Также я добавил два диода и резистор на 120 Ом для питания от батарейки, а также саму батарейку. Сохранение работает, проверил на игре Кирби.

283669-0
283671-1
283673-2