[Tools] Конвертер DSi Ромов для запуска в no$gba через NAND

Говорим о хакинге ромов, извлечении ресурсов и т.п.

[Tools] Конвертер DSi Ромов для запуска в no$gba через NAND

Сообщение Lobanov Aleksey » 24 ноя 2017, 12:12

Решил сделать утилиту-конвертер DSi Ромов (DSi Exclusive/Enhanced / DSiWare) для запуска в no$gba через NAND с "free-регион" без установки в сам NAND (а значит и без ticket для DSiWare игр).

Некоторые DSi картриджные игры (DSi Exclusive/Enhanced) не запускаются через NAND (слот вставленной игры), пишется ошибка и просят перезагрузить систему. А также часто необходимо сменить регион игры для запуска как картриджной игры, так DSiWare. Данная утилита уберет регион и/или сконвертирует DSiWare ром в картриджный для запуска без установки в NAND. Этот метод необходим только для эмуляции в no$gba.

Скачать no$twltool:
http://clq.ru/kN/IxwZ

Примечание: редко, но иногда игра не запускается в NAND с первого раза, можно повторить (у меня со второго уже запускалось точно)
Важно: DSiWare должны быть только с TWL-boot секцией (по адресу 0x12 должна быть 3) и выбор языка не должен зависеть от региона. Для иных игр метод (и утилита) не будет работать (к ним относятся: Clubhouse Games Express - Card Classics, PictoChat
Важно: Конвертация не спасет, если игра не эмулируется (вылетает ошибка эмулятора)

Для интересующихся ниже опишу алгоритм, как это работает:
(Спойлер)
1) Ставим фрирегион (по адресу 0x1B0 пишем FFFFFFFF)
2) Убираем последний бит с флагов по адресу: 0x90 и 0x92 (числа должны быть четными) (прим.: этот пункт не обязателен для DSiWare, так как там нули)
2.1) Если биты поменялись, после нужно пересчитать Header CRC16 (можно пофиксить с помощью ndstool)
3) Только для DSiWare: ставим 0 по адресу 0x234 - конвертация в картриджный ром
4) Прописываем не зашифрованную подпись по адресу 0xF80:
4а) Пишем первые 108 байт: 0, 1, 105 раз 0xFF, 0
4б) Считаем SHA1 Hash по первым 0xE00 байтам заголовка (можно в WinHex, выделяя первые 0xE00, затем Tools\Compute Hash\SHA-1 (160bit)
4в) Записываем этот хэш в последние 20 байт подписи в том же порядке (BE).
Аватара пользователя
Lobanov Aleksey
VIP
 
Сообщения: 36
Зарегистрирован: 27 сен 2014, 19:35

Re: [Tools] Конвертер DSi Ромов для запуска в no$gba через N

Сообщение pedro » 24 ноя 2017, 17:51

:like: Это должно здорово упростить жизнь эмуляторщикам и будущим переводчикам DSi тайтлов.
Аватара пользователя
pedro
Owls Group
 
Сообщения: 626
Зарегистрирован: 25 окт 2013, 19:02

Re: [Tools] Конвертер DSi Ромов для запуска в no$gba через N

Сообщение Lobanov Aleksey » 29 ноя 2017, 19:50

Clouder1 писал(а):Мой косяк, абсолютно забыл скопировать dsi биос. Теперь, все запускается, но эмулятор не хочет сохранять игру. Вот что он обычно выдает
(Спойлер)
Изображение

Я так полагаю, что эмуль не видит память?
(Спойлер)
Изображение

Это как-то можно пофиксить?


Отвечаю сразу для всех.
Эмулятор no$gba (по текущую версию 2.8f) не эмулирует сохранение, если запуск игры произведен прямым методом с файла РОМа. О чем я - есть два режима запуска эмуляции DSi РОМов:
- прямой с файла (в меню Options\Emulation Setup\"Reset/Startup Entrypoint" - выбираем "Start Cartridge directly")
- через NAND - флэш-память системы (там же выбираем "DBA/NDS BIOS")

Второй способ дает более точную/лучшую эмуляцию, как если бы вы вставили картридж с игрой в консоль. При этом возможно будет работать и сохранение.
Для эмуляции по этому способу, помимо файлов биоса, необходим образ NAND (файл DSi-1.mmc) в папке с эмулятором.
Скачать его можно отсюда
А тут (ссылка) инструкция, как устанавливать в образ тикеты и DSiWare ромы, как если бы вы их купили и скачали через консоль.

Эта процедура довольно трудоемкая и требует оригинальные РОМы (не хоумбрюшные). Образ NAND, предоставленный выше по ссылке Американского региона, а это значит - вы можете устанавливать в образ ТОЛЬКО американские игры.

Утилита no$twltool позволяет без установки в образ NAND запускать DSiWare игры любого региона. Но вы должны выставить режим запуска игры как "DBA/NDS BIOS"
Аватара пользователя
Lobanov Aleksey
VIP
 
Сообщения: 36
Зарегистрирован: 27 сен 2014, 19:35


Вернуться в Ромхакинг и переводы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron