Приставки > 6 поколение

Dreamcast сборка своего CDI-образа диска

(1/1)

SegaMark:
Я хотел создать свою простую игру для Dreamcast и потом поиграть в неё с помощью GDEMU. Но я не нашёл способа собрать cdi-образ диска на Windows. Везде в интернете говорится, как записать образ на диск, а не как создать его из файлов в папке. Мне нужно что-то вроде mkdcdisc для Linux.

Возможно ли вообще на Windows собрать корректный CDI-образ из набора файлов, и если да — какие инструменты сейчас реально рабочие? В закрепе папка с файлами, из которых я хочу получить итоговый образ.

Yoti:

--- Цитата: SegaMark от 18 Ноябрь 2025, 15:49:44 ---Мне нужно что-то вроде mkdcdisc для Linux.
--- Конец цитаты ---
mkdcdisc не для Linux, программа мультиплатформенная и инструкции по сборке под Windows присутствуют в официальном репозитории.

denben0487:

--- Цитата: SegaMark от 18 Ноябрь 2025, 15:49:44 ---Я хотел создать свою простую игру для Dreamcast и потом поиграть в неё с помощью GDEMU. Но я не нашёл способа собрать cdi-образ диска на Windows. Везде в интернете говорится, как записать образ на диск, а не как создать его из файлов в папке. Мне нужно что-то вроде mkdcdisc для Linux.

Возможно ли вообще на Windows собрать корректный CDI-образ из набора файлов, и если да — какие инструменты сейчас реально рабочие? В закрепе папка с файлами, из которых я хочу получить итоговый образ.

--- Конец цитаты ---

https://www.emu-land.net/forum/index.php?topic=76817.0

cptPauer:

--- Цитата: SegaMark от 18 Ноябрь 2025, 15:49:44 ---Возможно ли вообще на Windows собрать корректный CDI-образ из набора файлов, и если да — какие инструменты сейчас реально рабочие? В закрепе папка с файлами, из которых я хочу получить итоговый образ.
--- Конец цитаты ---

--- Цитата: denben0487 от 20 Ноябрь 2025, 07:07:43 ---https://www.emu-land.net/forum/index.php?topic=76817.0

--- Конец цитаты ---
В файлах вижу elf. Это особый случай, отличающийся от сборки коммерческих игр.
ELF нельзя напрямую запустить на Dreamcast, он конвертируется и только потом собирается образ.

"ELF это исполняемый файл, который получается после компиляции программы для Dreamcast. Его нельзя напрямую запустить на Dreamcast, потому что консоль понимает только свой формат, зашифрованный (скрембленный) специальным образом. 

Обычно для запуска нужно:
1) Конвертация ELF в бинарник (обычно под именем 1st_read.bin)
2) Шифрование (scrambling) бинарника
3) Создание образа (cdi) с загрузочным сектором (ip.bin)".

Через Lazyboot можно ELF собрать, там делает автоматически эти три этапа. Но, там баг при копировании загрузочного сектора (ip.bin), к сожалению. Копирует не тот, определяя игру как коммерческую (Katana/WinCE). А у тебя хомбрю на KOS, должен положить загрузчик от KOS.

Как временное решение, можно скопировать самому файл .\tools\precon\kos.bin как .\data\ip.bin. Я имею ввиду, переименовать kos.bin в ip.bin и скопировать в папку с данными (.\data).

Потом запускаем скрипт (lazyboot.cmd). Если находит файл elf, то автоматически определяет что хомбрю и собирает образ, без лишних вопросов.

Второй раз, там сделает уже 1ST_READ.BIN из ELF. Запускаем lazyboot.cmd и сразу пишем "kos" (без ковычек, прямо в главном меню) или в опциях отключаем бинхак. Потом спросит "This is KallistiOS (homebrew) game?", отвечаем Y. После этого соберёт образ.

Я проверил на твоих данных, образ собирается нормально.

Можно скачать так же на гитхабе: https://github.com/Conkwer/lazyboot/releases/tag/lazyboot-20240817
Но, сборка хомбрю в Lazyboot была добавлена очень давно и не тестилась особо тщательно.

Пути к папке данных надежнее делать без кириллицы и пробелов в именах. Так что, просто копируешь к данным ip.bin для хомбрю и должно собрать. На Win11 работает.
Там всё сильно проще, чем звучит.

Но, обычно современное хомбрю собирают в образы через mkdcdisc. А Lazyboot это старый тулчейн, "тестить свои переводы katana/wince игр, на скорую руку". Но, при желании ты собрать загрузочный образ сможешь через Lazyboot, даже если там elf.
Среди файлов в Lazyboot ты можешь найти уже скомпилированные для Windows: sh-elf-objcopy.exe и scramble.exe.

сначала конвертишь свой elf в бинарник, через sh-elf-objcopy.exe

--- Код: ---sh-elf-objcopy.exe -O binary example.elf unscrambled.bin
--- Конец кода ---

Потом шифруешь его и получишь 1st_read.bin:

--- Код: ---scramble.exe unscrambled.bin 1ST_READ.BIN
--- Конец кода ---

А с 1st_read.bin и ip.bin собрать образ может практически любая прога, которая умеет собирать самозагрузочные образы для Dreamcast.
То есть, примерно как mkdcdisc. Ну, если ты девелопер, то должен разобраться.

UPD: дополнил информацию, а то вдруг кто-то потом будет искать.

SegaMark:
спасибо за наводки, буду пробовать.

cptPauer:

--- Цитата: SegaMark от 20 Ноябрь 2025, 17:46:55 ---спасибо за наводки, буду пробовать.

--- Конец цитаты ---
На скорую руку добавил в mkcdi_gui поддержку хомбрю (с исполняемым файлом в формате elf, как у SegaMark было).
mkcdi-elf-with-example-data-20251122.7z
Может кому надо.



Пользоваться так:
Ложим ресурсы игры в папку data. Исполняемый файл (в формате elf) ложим туда же.
Для примера, я положил уже файлы игры, которую пытались собрать выше. Их можно удалить.
Запускаем mkcdi_gui.exe или makecdi.cmd и жмём кнопку build..

Wince/katana тоже можно собирать, но это другая история.
На всём что новее WinXP должно работать, сделано на Python.

SegaMark, твоя игра какая-то багованная и сразу вылетает, но так вероятно должно быть. В смысле, не проблема билдера. Главное, что образ собирается и загружается, появляется логотип игры и дальше эмулятор вылетает.

-------------------

Вот mkdcdisc для винды, если нужен
 mkdcdisc-win-20241127.7z (3689.28 КБ - загружено 101 раз.)

Я провёл небольшое расследование, что быстрее собирает образ. Взял игру пожирнее на 700Мб, с приличным количеством файлов. Даже копируется долго.

Результат:

1. mkcdi_gui c рамдиска = менее 5 секунд. Мгновенно, можно сказать.
2. mkcdi_gui с M2 SSD = 37 секунд
3. mkdcdisc с M2 SSD и рамдиска = 1 минута 20 секунд.
4. make45k с рамдиска (две сессии с данными пополам, способ с iso2raw/redump2cdi) = больше 1 минуты
5. lazyboot в режиме mastering (с EDC/ECC и dummy) = 3 минуты (но с правильной генерацией ECC и валидной ISO9660)

Тут замечу, что elf во всех нормальных эмуляторах можно запускать напрямую, без сборки образа (Flycast, NullDC, Redream, lxdream например). Поэтому хомбрю, тестим не собирая.

Впечатление о mkdcdisc:
Что-то среднее между lazyboot и mkcdi_gui. Не сильно быстро, но и не особо по-феншую. Но, для Linux ничего другого небыло. Если кто-то привык, то для винды я вам прикрепил бинарь. Можете юзать и под виндой, если хочется.

Навигация

[0] Главная страница сообщений

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