Автор Тема: Конструктор многоигровых ROM'ов для картриджей COOLBOY  (Прочитано 73442 раз)

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

Оффлайн Cluster

  • Пользователь
  • Сообщений: 67
    • Twitter
    • ВКонтакте
    • Просмотр профиля
Обновление тут.

Наконец-то я довёл до ума и выложил в паблик свой конструктор многоигровых ROM'ов для картриджей COOLBOY (и клонов):

Исходники: https://github.com/ClusterM/coolboy-multirom-builder
Вот тут можно скачать релизы: https://github.com/ClusterM/coolboy-multirom-builder/releases

Пожалуйста, поправьте там мой корявый английский в документации, если кому не сложно.

Возможности:
  • Умеет собирать ROM'ы-многоигровки вмещающие до 768 игр, которые потом можно записать на дешёвые китайские картриджи COOLBOY
  • Автоматически создаёт меню для выбора игр
  • Может автоматически сортировать игры в меню по алфавиту, если нужно
  • Позволяет использовать свою собственную картинку в меню сверху
  • На новых картриджах, которые перезаписываются без пайки, меню сохраняет последнюю выбранную игру и до 15 отдельных батареечных сохранений
  • Поддерживается много разных версий картриджей
  • Меню имеет встроенные аппаратные тесты
  • Меню может показывать информацию о сборке и железе, если при включении зажать SELECT
  • Позволяет добавлять несколько скрытых ROM'ов для запуска комбинациями кнопок или через Konami Code

Принцип работы:
  • Создаём текстовый файл с именами файлов и/или директориями, содержащими ROM'ы. При желании можно указать там же, как игры будут называться в меню.
  • Запускаем утилиту CoolboyCombiner.exe с опцией "prepare", она автоматически распределит данные игр наилучшим способом и создаст файлы "games.asm" и "offsets.xml" (имена могут отличаться). Первый содержит данные для запуска игр, а второй адреса этих игр в итоговом ROM'е.
  • Компилируем "menu.asm", используя nesasm. Я использую свою собственную модификацию nesasm: https://github.com/ClusterM/nesasm. Он создаст .nes файл с меню для выбора игр.
  • После этого нужно совместить меню и сами игры на основе данных из XML файла сгенерированного выше, для этого запускаем "CoolboyCombiner.exe" уже с опцией "combine".
  • Всё.

Рядовому пользователю не нужно сильно в это всё вникать, т.к. набор сопровождается файлом Makefile для утилиты Make и файлом "!build_rom.bat", они автоматизируют процесс. Просто отредактируйте файл "games.list" и запустите "!build_rom.bat" (для пользователей Windows).

Подробнее можно почитать на английском по ссылке выше.

Если кому не жалко, можете поддержать меня донатом: http://clusterrr.com/donation/
А то я кучу времени на всё это убил.

PS А заливать в CoolBoy можно вот этим дампером.
« Последнее редактирование: 04 Декабрь 2022, 20:55:41 от HardWareMan »

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
купил такой coolboy / mindkids
его каким маппером читать надо?
дампер от кластера 3.2, дамп пытается читать, но на эмуле не запускается.

и зачем ему два модуля RAM если нет батарейки? первый 32кб, второй 256кб
среди игр китайская версия танков с иероглифами, артефачит графика (память глючная?)

из хорошего RAM 5вольтовые все таки  (оба)

Оффлайн JRBVZ

  • Пользователь
  • Сообщений: 386
    • Просмотр профиля
Полагаю правая - это wram просто в tsop корпусе.

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
справа BS62LV2000
Very Low Power/Voltage CMOS SRAM
256K X 8 bit


слева
HY62WT08081E Series
32Kx8bit CMOS SRAM

Оффлайн JRBVZ

  • Пользователь
  • Сообщений: 386
    • Просмотр профиля
Перепутал, слева wram.

ЗЫ на батарейке сэкономили.

Оффлайн mutabor

  • Пользователь
  • Сообщений: 381
    • Просмотр профиля
его каким маппером читать надо?
По виду обычный карик на SMD133 (mapper 268), но возможно там новая версия, надо подобрать submapper. Должен шиться без перепайки.
и зачем ему два модуля RAM если нет батарейки?
Некоторые игры требуют PRG RAM, но не поддерживают сохранения - например Марио 3 и вроде снейки. Ну и игры с сохранениями тоже разумеется требуют - как минимум можно будет начать играть.
« Последнее редактирование: 29 Май 2025, 20:35:20 от mutabor »

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
Должен шиться без перепайки
если я правильно вызвонил, то OE на маппер идет, WE на VCC 5V

Оффлайн JRBVZ

  • Пользователь
  • Сообщений: 386
    • Просмотр профиля
Если WE флэшки точно сидит на +5В, то перемычка должна быть под врам, т.к. именно под нее уходит CPU_RW через переходное отверстие.

Оффлайн mutabor

  • Пользователь
  • Сообщений: 381
    • Просмотр профиля
если я правильно вызвонил, то OE на маппер идет, WE на VCC 5V
Хз конечно, но визуально он похож на этот https://www.emu-land.net/forum/index.php/topic,88077.msg1562388.html#msg1562388 , а он точно шьются (шил лично).

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
Кому не лень, подскажите как такое прошивать?
OE и WE идут на маппер. это я ошибся сначала, не на питание все таки
Собрал билдером образ из пары игр. Пытаюсь прошить просто вставив в дампер
>famicom-dumper.exe write-coolboy --file multirom.nes --mapper 268
Famicom Dumper Client v3.4
  (c) Alexey 'Cluster' Avdyukhin / https://clusterrr.com / clusterrr@clusterrr.com

Autodetected virtual serial port: COM7
Dumper initialization... OK
Dumper hardware version: 3.2
Dumper firmware version: 3.4
Reset... OK
Device size: 8 MByte / 64 Mbit
WARNING: Secured Silicon Sector Protection Bit is set!
WARNING: Persistent Protection Mode Lock Bit is set!
WARNING: Password Protection Mode Lock Bit is set!
Erasing all PPBs... ERROR! PPB clear failed. Lets continue anyway.
Erasing sector #0... ERROR: Flash erase timeout
Lets try again
Reset... OK
Erasing sector #0... ERROR: Flash erase timeout
Lets try again
Reset... OK
Erasing sector #0... ERROR: Flash erase timeout
Lets try again
Reset... OK
Erasing sector #0... ERROR: Flash erase timeout
Lets try again
Reset... OK
Erasing sector #0... ERROR: Flash erase timeout
ERROR: Flash erase timeout

попробовал разные подверсии маппера 268.1,...268.5, разницы нет
припаял проводки от дампера к ногам OE WE. разницы нет
>famicom-dumper.exe info-coolboy-gpio
Famicom Dumper Client v3.4
  (c) Alexey 'Cluster' Avdyukhin / https://clusterrr.com / clusterrr@clusterrr.com

Autodetected virtual serial port: COM7
Dumper initialization... OK
Dumper hardware version: 3.2
Dumper firmware version: 3.4
Reset... OK
ERROR: Can't enter CFI mode. Invalid flash memory? Broken cartridge? Is it inserted?

>famicom-dumper.exe info-coolboy
Famicom Dumper Client v3.4
  (c) Alexey 'Cluster' Avdyukhin / https://clusterrr.com / clusterrr@clusterrr.com

Autodetected virtual serial port: COM7
Dumper initialization... OK
Dumper hardware version: 3.2
Dumper firmware version: 3.4
Reset... OK
Primary algorithm command set and control interface ID code: 0002h
Alternative algorithm command set and control interface ID code: 0000h
Vcc logic supply sinimum program / erase voltage: 2.7v
Vcc logic supply maximum program / erase voltage: 3.6v
Vpp [programming] supply minimum program / erase voltage: 0.0v
Vpp [programming] supply maximum program / erase voltage: 0.0v
Typical timeout for single byte/word/D-word program: 16us
Typical timeout for maximum-size multi-byte program: 0us
Typical timeout for individual block erase: 1024ms
Typical timeout for full chip erase: 0ms
Maximum timeout for single byte/word/D-word program: 512us
Maximum timeout for maximum-size multi-byte program: 0us
Maximum timeout for individual block erase: 16384ms
Maximum timeout for full chip erase: 0ms
Device size: 8 MByte / 64 Mbit
Flash device interface: X8 and X16 via byte pin
Maximum number of bytes in multi-byte program: 1
Erase block region #0:
 - Sectors size: 8192 Bytes
 - Sectors count: 8
Erase block region #1:
 - Sectors size: 65536 Bytes
 - Sectors count: 127
WARNING: Secured Silicon Sector Protection Bit is set!
WARNING: Persistent Protection Mode Lock Bit is set!
WARNING: Password Protection Mode Lock Bit is set!
Done.


может джамперы какие-то нужны? они зачем на картридже?

Оффлайн JRBVZ

  • Пользователь
  • Сообщений: 386
    • Просмотр профиля
Скорее всего софт не умеет шить данную влэшку.

Оффлайн mutabor

  • Пользователь
  • Сообщений: 381
    • Просмотр профиля
Из даташита на MX29LV640D:

Sector Structure
- 8KB(4KW) x 8 and 64KB(32KW) x 127

Т.е. эта флешка с разным размером секторов - у неё 8 секторов на 8кб и 127 на 64 кб. Кластеровский софт не умеет такое шить.
И ещё, если работает детект размера флешки:
Device size: 8 MByte / 64 Mbit
то аппаратно точно всё подключено верно и паять ничего не нужно - не мучайте карики.
Кстати каким дампером шьём? Сохранился ли дамп оригинальной прошивки карика?

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
дампер кластера на стм32 с гитхаба (версия 3.2)
дамп пытался читать, что-то сохраняет, но на эмуляторе не запускается

Оффлайн mutabor

  • Пользователь
  • Сообщений: 381
    • Просмотр профиля
А эмулятор точно поддерживает все сабмапперы, и в заголовке дампа все верно? Видимо там AA6023B. В принципе можно определить визуально по дампу - если там куча дублирующихся блоков - значит неверный маппер. Перебирать пока не сдампиться нормально. Ну а с прошивкой проблема, нужно допиловать софт.
Ну и до кучи как определить проблему:
1. Если инфа по флешке в принципе вычитываема, т.е. определяется размер и прочее - то аппаратно всё в норме, физических препятствий прошивке нет.
2. Если есть такое:
Maximum number of bytes in multi-byte program: 1
Значит флешка не поддерживает многобайтовую запись - проблема номер раз.
3. Если тут более одного региона:
Erase block region #0:
 - Sectors size: 8192 Bytes
 - Sectors count: 8
Erase block region #1:
 - Sectors size: 65536 Bytes
 - Sectors count: 127
То это соответственно проблема номер два.
Если нужно, могу глянуть дамп, по крайней мере определить сабмаппер. А с прошивкой могу помочь только теорией, т.к. у меня другой дампер и соответственно другой софт.

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
дампы снятые в разных режимах

кстати при запуске танчиков он еще и такой мусор выдает (немного разный каждый раз)

9 игр, все непонятные хаки

еще у меня есть программатор, могу отпаять и прочитать в нем попробовать

Оффлайн mutabor

  • Пользователь
  • Сообщений: 381
    • Просмотр профиля
Посмотрел дампы - действительно какая-то хрень. А можно сдампить как MMC3-512?

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
прочитал как mmc3, вышло 512+256
на эмуле не запускается

Оффлайн chrome2ruremix

  • Пользователь
  • Сообщений: 39
    • Просмотр профиля
Скажите пожалуйста, что лучше купить Dumper от ClusterА или Dumper на Mega2560?
« Последнее редактирование: 02 Июнь 2025, 11:51:16 от chrome2ruremix »

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
на сколько я понимаю от кластера быстрее в 10 раз. функционал вроде одинаковый?
поскольку цены на стм32 упали то можно дешево спаять кластеровский

Оффлайн chrome2ruremix

  • Пользователь
  • Сообщений: 39
    • Просмотр профиля
кластера быстрее в 10 раз
а какая последняя версия DumperА

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
Посмотрел дампы - действительно какая-то хрень. А можно сдампить как MMC3-512?
отпаял и прочитал программатором

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5369
    • Просмотр профиля
отпаял и прочитал программатором
Работает как 268.3 в NintendulatorNRS, FCEUX. Заголовок рома вставил 4E 45 53 1A 00 00 C2 08 31 02 70 0C 00 00 00 2A.

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
спасибо. и правда в FCEUX работает. У меня стоял Mesen в нем только меню, но после выбора игры краш.

осталось понять как это перезаписывать. Из интереса припаял флешку am29f016b (2мбайт 5 вольт), её дампер не распознает. может потому что бут кода для маппера нет

Оффлайн JRBVZ

  • Пользователь
  • Сообщений: 386
    • Просмотр профиля
Похоже дампер не хочет работать с флэшками объемом меньше 128мбит, во всяком случае на запись.

Добавлено позже:
осталось понять как это перезаписывать. Из интереса припаял флешку am29f016b (2мбайт 5 вольт), её дампер не распознает. может потому что бут кода для маппера нет

А какую команду вводил для записи? По идее должно быть типа этого:

famicom-dumper write-coolboy  --mapper 268.3 --prg-size 2M --file coolboy.nes
« Последнее редактирование: 02 Июнь 2025, 18:36:24 от JRBVZ »

Оффлайн mutabor

  • Пользователь
  • Сообщений: 381
    • Просмотр профиля
осталось понять как это перезаписывать.
Сравнил все дампы - и тут что-то совсем странное. В дампах как SMD133 дублируются 8КБ блоки, т.е. размер страницы MMC3, что намекает на некорректную работу с маппером - страницы не переключается или маппер ресетается. Но в дампе как MMC3 дублируются вообще блоки по 512 байт и это совсем какая-то хрень, т.к. маппер просто не адресует такие блоки - этот адрес идет напрямую со слота на память. И тут как бы можно подумать что этот адрес в дампере отгнил, но тогда почему при дампе как SMD133 оно нормально дампится? Мб был плохой контакт в слоте когда дампил как MMC3?
Короче тут всё сложно и непонятно, надо вдумчиво разбираться с исходниками и желательно с осциллом.
Там потом будет веселье с erase секторами и побайтовой записью, но это потом. Но блин дампиться то он должен. Если даже сдампить не получается - о перепрошивке дампером точно можно забыть.
Если уж отпаяли флешку - шейте программатором. Сборник собирать под маппер 268.3.
И кстати сделайте качественные фото платы без флешки.

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
а это может быть. перечитал mmc3, crc отличается (читаю со второго карика, но они якобы идентичные, куплены вместе)



Добавлено позже:
А какую команду вводил для записи?
до записи не дошло
>famicom-dumper.exe info-coolboy
Famicom Dumper Client v3.4
  (c) Alexey 'Cluster' Avdyukhin / https://clusterrr.com / clusterrr@clusterrr.com

Autodetected virtual serial port: COM7
Dumper initialization... OK
Dumper hardware version: 3.2
Dumper firmware version: 3.4
Reset... OK
ERROR: Can't enter CFI mode. Invalid flash memory? Broken cartridge? Is it inserted?
« Последнее редактирование: 02 Июнь 2025, 19:13:58 от woddy »

Оффлайн JRBVZ

  • Пользователь
  • Сообщений: 386
    • Просмотр профиля
Дампер точно рабочий? Если взять другой кулбой и сдампить несколько раз, crc должны быть одинаковые. Если разные, значит дампер мозги компостирует, могут быть виноваты бу шифтеры.

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
Других кулбоев нет. Оригинальные фамики и самодельные unrom, mmc1 (честные 5 вольт) читает корректно. Повторно читать CRC совпадает. Потому склоняюсь что прошлый раз когда читал ммс3 был плохой контакт.

Перечитал в режиме MMC3 несколько раз, картирдж доставал вставлял. crc файла разный из-за мусора в CHR RAM. но CRC блока PRG совпадает.

шифтеры да, с помойки прислал али. Но вроде отобрал живые

Оффлайн woddy

  • Пользователь
  • Сообщений: 126
    • Просмотр профиля
добрался еще раз. купил другой кулбой SMD173C_L4 из соседней темы

итого если дампить в режиме --mapper 268.3 то оба картриджа дампятся корректно. дамп получается 32мб (не смотря на то что флешка 8мб). запускаются на эмуляторе fceux64

собирается и шьется тоже корректно на SMD173C_L4 . на первый картридж не шьется, ошибка очистки


UPD пересадил флешку с SMD173C_L4  на старый SMD168L8 - стал прошиваться в программаторе как положено

UPD2 На картридже флешка запитана через диод встроенный в sm133. Можно запитать нормально через линейник 1117-3.3. Для этого достаточно перерезать перемычку под надписью u1 с обратной стороны и запаять линейник так
« Последнее редактирование: 29 Июнь 2025, 15:06:10 от woddy »

Оффлайн Nikooone

  • Пользователь
  • Сообщений: 989
  • Пол: Мужской
    • Просмотр профиля
Ага.. судя из последних постов мне что-то подобное попалось SMD168L7 от 2023.11.28 по внешнему виду очень похоже по расположению сопротивлений как у автора из постов выше, он с разницей раслоложения PRG ОЗУ, у меня оно с обратной стороны.
Изначально это просто 3х игровка из серии марио/2/3.
Приколы начались когда собрал старой версией сборщика файл где еще "МНОГОИГРОВКА", прошил ПЗУ (программатором с отпайкой, предварительно сняв дамп, прикрепил в архиве). Включаю - есть меню  :nyam: выбираю игру  :-\ всё повисло.. Выкл/вкл консоль - битая графика, выбираю что либо, пишет - несовместимая игра... Выбрал еще что-то наугад вовсе повисло и картридж окирипичился.
Почитал тут и нашел подобное поведение и начал искать свежую версию мейкера, нашел... поправил в файле Makefile строчку с субмаппером исправив 0 на 3, собрал ром, отпаял флешку, прошил, припаял, включаю  :jumpy: есть меню  :shifty: выбираю любую игру  :facepalm: а происходит условно сброс  :wall:
Чо делать люди добрые!???  :surrender:
И что за загадочные R2(J2) J4 J1? Есть какое либо описание понятным языком, кроме как "J2" - регистры.... (кого чего... :neznayu:)
« Последнее редактирование: Вчера в 20:23:44 от Nikooone »

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4546
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
И что за загадочные R2(J2) J4 J1? Есть какое либо описание понятным языком, кроме как "J2" - регистры.... (кого чего... )
Внятное описание есть в учебнике радиоэлектроники. Ну или в каких-нибудь статьях в Интернете. Первая буква радиоэлемента (Резистор, ДЖампер и т.д.) и его порядковый номер.