Все, победил, дело было не в бобине

Если что, я в этом смыслю мало, поэтому могу криво использовать термины - если что, поправьте.
В общем, суть заново и теперь уже с картинками и пояснениями:
Есть KORG M01 Music Workstation для NDS и есть KORG M01D Music Workstation для 3DS. Существенное отличие первого от второго в том, что второй умеет экспортировать все, что вы там намузицировали, в формат MIDI для дальнейшей доработки.
Еще 10+ лет назад я там намузицировал всякого барахла, которое бы хотелось сохранить, местами поправить и перезаписать уже в более цивильном виде. Сидеть и заново все ноты набивать ручками ну очень лень. И есть проблема - композиции меж собой передавать могут только соответствующие друг другу версии, то бишь с DS только на DS и 3DS только на 3DS.
Вчерашний вечер и сегодняшние полдня я потратил на то, чтоб выяснить, есть ли какая-то возможность воткнуть песни из версии DS в версию 3DS, чтоб потом можно было это экспортировать в MIDI и первый заход в файлы сохранений показал, что формат в обеих версиях идентичен, но есть нюанс и про эти нюансы я сейчас расскажу.
Для трансплантации композиций нам потребуется:
•
HxD или любой другой удобный hex-редактор;
• Citra - мумулятор 3DS. Как такое провернуть с помощью 3DS натуральной пока для меня загадка, ибо на 3DS сохранения зашифрованы;
• Сохранение от KORG M01 на DS - в моем случае это файл с флеш-картриджа.
• Ну, и, конечно, сам KORG M01D в виде рома.
Сначала ставим KORG в Citra, запускаем, тыкаем в PLAY, S-01 (для удобства) и YES, после чего сразу сохраняем пустую композицию - это нужно для того, чтоб создались файлы, в которые мы будем подсовывать свои данные.
Дальше открываем проводник и идем по адресу:
%appdata%\Roaming\Citra\sdmc\Nintendo 3DS\00000000000000000000000000000000\00000000000000000000000000000000\extdata\00000000\00000F16\user
Видим два файла:
• M01Dn_00000000 - здесь хранится список композиций;
• M01Dn_00100000 - а это уже сама композиция. Цифры в зависимости от выбранного положения могут отличаться, но это пока неважно - у нас сначала будет именно 00100000.
Теперь открываем HxD, в HxD открываем оба новых файла из Citra, и открываем сейв с DS, где хранятся наши композиции.
В файле сейва от DS список продублирован дважды (не знаю, зачем) и файл начинается с него.
Длина каждого элемента в списке - 28h байт, первые 8 под название, через 19 байт записана длина композиции в байтах в обратном порядке (little endian то бишь), в нашем случае длина 6CD0h.
Запоминаем. Дальше листаем вниз до нужной композиции (перед первой композицией первые 4 байта в ASCII виде будут строчкой BFBA) - все композиции в сейве для DS стартуют с кратных 1000h позиций. Выделяем нужное количество байт - в данном случае 6CD0h байт. Что удобно - конец файла всегда выглядит одинаково.
Дальше переходим в открытый M01Dn_00100000, выделяем все и вставляем скопированное, удаляя все, что было до этого.
Теперь веселая часть - нужно отредактировать заголовок в песне, чтоб потом Korg в эмуляторе смог его прочесть. Для этого переходим в начало файла (для удобства лучше файл сохранить, чтоб изменения были виднее) и сначала по адресу 1F0h приводим строчку к этому виду:
73 6F 6E 67 00 00 00 00 00 00 00 00 73 6F 6E 67
Важное уточнение: не убираем и заменяем по тому адресу, а именно дописываем еще один song и 8 нулей - сразу после song идет 4 байта с длиной композиции после заголовкаЗатем пятый байт в самом начале с 04 изменяем на 05. Далее снова выделяем всю композицию, исключив первые 4 байта - это чексумма и ее нужно пересчитать.
В HxD жмем
Анализ > Контрольные суммы..., выбираем Checksum-32 и жмем ОК. Снизу появится окошко с посчитанной суммой.
Эту сумму мы берем и вписываем в первые 4 байта взамен старой суммы (не забывая про обратный порядок байтов) и сохраняем. Перед закрытием смотрим размер файла в hex-виде, эту цифру запоминаем и закрываем.
Теперь переходим к M01Dn_00000000. Ищем S-01 и подставляем свой размер файла. Сохраняем, закрываем. Все готово.
Снова переходим в эмулятор - если он был все это время открытый, то не забываем сначала перезапустить игру. Открываем файл в эмуляторе, надеемся на чудо, ибо я до этого всего допер случайно. Если открылся, то чудесно. Выходим в главное меню, тычем MIDI FILE EXPORT, выбираем свою композицию и вот здесь забираем свой m01d.mid
%appdata%\Roaming\Citra\sdmc\private\Nintendo 3DS\app\JKRE
который потом можно использовать уже в рабочих станциях типа FL Studio
Добавлено позже:Теперь осталось только понять, по какому такому волшебству у меня вчера без правильной чексуммы открылись файлы. Хотя, если б не открылись, то я б так и не догадался, что и где менять (и далеко не факт, что я все правильно догадался, иногда все равно не подхватывает)