- а как юзать?
Я не делал настроек через аргументы, поэтому просто кладёте скрипт и файлы FDS_header_s%.bin в папку с fds ромами и нажимаете на него. Добавление заголовка происходит в этой строке:
copy /B FDS_header_s!side_count!.bin + "%%F" "%%~nF_fixed.fds" >nul
Позже я подумал (не добавлял), что для удобства можно все ромы скидывать в отдельную папку, например:
if not exist ".\fixed_folder\" mkdir ".\fixed_folder\"
copy /B FDS_header_s!side_count!.bin + "%%F" ".\fixed_folder\%%F" >nul
Так будет создана папка fixed_folder и туда скопированы исправленные ромы с оригинальным именем.
А если ещё после
echo Header: Yes добавить строчку:
copy /B "%%F" ".\fixed_folder\%%F" >nul
То правильные ромы тоже скопируются, удобно чтобы все скопировать сразу.
--------
У No-Intro увидел только эти игры с двумя дискетами (всего 4 стороны):
* Bodycon Quest I - Abakareshi Musume Tachi (Japan) (Unl)
* Fruits Mahjong части от 1 до 4
* Kind Gal's (Japan) (Unl)
* Tenshi Tachi no Houkago (Japan) (Unl)
Не нашёл как в FCEUX отдельно выбирать дискеты, поэтому объединил первую игру, убрав заголовки и добавив новый с 4 сторонами и всё работает: нам сразу предлагают перейти на вторую дискету сторону A, что через FCEUX получается.
Вот такой простой скрипт можно использовать, задавая через аргументы два рома (или просто перетащив на .py скрипт) по 131000 (131016) байт размером:
#!/usr/bin/env python3
import os
import sys
with open(sys.argv[1], "rb") as f:
rom1 = f.read()
if os.path.getsize(sys.argv[1]) % 65500 != 0:
rom1 = rom1[16:]
with open(sys.argv[2], "rb") as f:
rom2 = f.read()
if os.path.getsize(sys.argv[2]) % 65500 != 0:
rom2 = rom2[16:]
header = "4644531A040000000000000000000000"
with open(sys.argv[1] + "_new.fds", "wb") as f:
f.write(bytes.fromhex(header) + rom1 + rom2)