Предлагаю вашему вниманию конвертор из Z80 в SNA. Знаю, что такого добра хватает. Но я писал его для личных целей, а заодно чтобы досконально разобраться с этими форматами, да поупражняться лишний раз. Конвертор написан на Python и вызывается из командной строки:
Код:
C:\>python z802sna.py FILENAME.z80
На выходе получим FILENAME.sna
В зависимости от того, с какой эмулируемой модели Спектрума снимался .Z80, такой на выходе и получим SNA - SNA48 или SNA128. Однако, иногда требуется получить SNA отличный от оригинальной модели. Например, 48К игрушку запустили на ZX Spectrum 128 и сохранили Z80. В итоге мы получим Z80 под 128К и, соответственно, после конвертирования мы получим SNA128. Однако скрипту можно сказать, чтобы он принудительно создал SNA48. Для этого есть ключ -s. Вызывается так:
Код:
C:\>python z802sna.py -s48 FILENAME.z80
На выходе получим SNA48. Конечно, если игра действительно была заточена под 128К, то снепшот получится нерабочим.
Аналогично можно сказать скрипту, чтобы он принудительно сделал SNA128 из 48К игры:
Код:
C:\>python z802sna.py -s128 FILENAME.z80
Такая опция может оказаться полезной, например, если не хочется терять ни одного байта из оригинального снепшота. Дело в том, что в SNA48 портится два байта стека, в которые записывается адрес запуска. В то же время SNA128 хранит адрес запуска в заголовке и ничего не портит в памяти ZX Spectrum.
Скрипт поддерживает только стандартные версии Z80, используемые в одноименных эмуляторах версий 1.45, 2.01 и 3.xx. Так, например, эмулятор Z80 Stealth также используется расширение .Z80 при выгрузке своих снепшотов, но по структуре они отличаются от стандартных, а эта структура нигде не документирована.
К данному сообщению помимо самого скрипта для экспериментов прилагаю игру Video Pool в формате Z80 из своей коллекции. Эта игра 1984, когда в помине не было никаких 128К Спектрумов. Однако снепшот скинут со 128К машины. Таким образом для его конвертации можно использовать ключ -s, и убедиться, что файл стал меньше и не потерял работоспособности.