Максимально ускоренная загрузка программ на Спектрум с магнитофонного входа
Я вот вообще не любитель загрузки игр на Спектрум с магнитофона. Я понимаю, что есть люди для которых чуть ли не главный символ Спектрума - это цифровой аудио и бордюрный шум загрузки с кассет и ничего больше им не надо. Но для меня в детстве это был скорее раздражитель - потому что долго, шумно и не всегда с хорошим концом. А уж бесконечные перемотки кассет туда-сюда, чтобы найти нужный блок - это вообще какое-то отдельное извращение (особенно в то время, когда в большинстве магнитофонов функция автостоп была чем-то очень эксклюзивным).
Поэтому у меня и первый Спектрум (Пентагон 128 Люкс) появился сразу с пятидюймовым дисководом: просто потому что это было куда круче и практичнее. Такая машина была не просто какой-то приставкой к телевизору с долгими загрузками игр - это был уже практически полноценный ПК, с возможностью оперативно потреблять, создавать и удобно хранить информацию.
Но вот недавно я собрал для дачи совсем небольшой по размеру Ленинград-2:
Но, хотя я для него вывел шину данных и получил возможность загружать игры прямо с SD-карты посредством устройства divMMC, но таскать всё это добро на дачу было неохота.
Хотелось просто взять саму коробочку и больше ничего. Я даже в два ПЗУ по 512 Кб загрузил окромя бейсика ещё и 7 разных игр, чтобы можно было между ними переключаться и быстро поиграть в раннюю Спеко-классику: от шахмат до гоночек. Поэтому решил остановиться на загрузке игр с магнитофонного входа, но опять начал бесить сам процесс загрузки: ведь целых пять минут на маленькую игру для 48 Кб! Пробовал использовать ПЗУ с ускоренными загрузками, но для этого всё равно надо было отдельно готовить звуковые файлы (у меня не получилось просто запустить с ускоренным воспроизведением), а скорость не особо сильно увеличивалась, т.е. овчинка выделки не стоила.
Поковырявшись с разными версиями ПЗУ понял ещё и тот факт, что не все они подходят для работы того же divMMC, всё-таки, видимо, изменения в них затрагивали какие-то важные адреса, на которые divMMC рассчитывал. В итоге я вернулся на версию Gosh Wonderful ROM, которая позволяла набирать команды в 48 бейсике побуквенно, а не целыми словами, ибо так всё-таки получалось быстрее. Всё лето промучался с длительными загрузками, а под конец таки обнаружил программу K7zx, которая позволяла и быстро и удобно с помощью GUI получать из файлов типа TAP звуковые файлы сжатые по специальному алгоритму, которые могли загружаться до 10 раз быстрее!

Да, игру, которая изначально загружалась почти 5 минут удалось впихнуть вместе со спецзагрузчиком в 27-28 секунд. Это уже совсем другое дело, полминуты это прям уже совсем близко к тем секундам, которые требуются дисководу для считывания данных с дискеты, особенно если они записаны не подряд. Медленнее - да, но не принципиально, и зато не нужен ни контроллер дисковода, ни сам дисковод.
Понятно, что такие файлы было бы бесполезно записывать на кассету и пытаться воспроизвести с помощью магнитофона - так просто потеряются все эти высокочастотные писки, в которые алгоритм и упаковывает звуки для более быстрой загрузки. Но вот с помощью обычного смартфона или MP3-плеера - без проблем, они выдают точный сигнал и вопрос только в АЦП в самом Спектруме - вытянет ли.

Сначала я проверил все алгоритмы заложенные в программе на стандартных настройках (у каждого алгоритма ещё есть и свои настройки, но это бы заняло слишком много времени). В итоге, перепробовав все я остановился на одном - ULTRA. Он обеспечивал и самое лучшее сжатие и самое лучшее считывание на Ленинграде-2. Заодно проверил и на всех остальных моих Спектрумах (Пентагон 128, Дельта-С) - везде всё работало, главное подобрать нужную громкость.
Я проверил даже загрузку через Bluetooth, снабдив мини-приёмником тот самый Ленинград-2. Всё тоже отлично заработало, и ещё одним проводом стало меньше, тем более что смартфон у меня лишен линейного выхода и приходилось ещё и плеер таскать. И несмотря на то что всё-таки приходится таскать аудиофайлы, которые по размеру всё-таки достаточно большие (MP3 где-то от 500 Кб до 2 Мб), но зато и проигрываются на любом утюге, в отличие от тех же TAP-файлов, которым нужен либо смартфон на Андроиде, либо спецустройства.
Но не всё так гладко, как хотелось бы. Несмотря на то, что программа K7zx вроде бы как может преобразовывать TAP файлы, однако отнюдь не все так просто поддаются такой переделке (хорошо ещё, что прямо из неё можно сразу проверить в эмуляторе). Во-первых, отпадают программы с подзагрузками. Во-вторых, есть программы с хитрыми собственными загрузчиками - они тоже мимо. В-третьих, не все программы явно выдают свой стартовый адрес и иногда его придётся как-то очень хитро извлекать, чтобы указать программе, если она его не смогла сама определить. В общем скажу так - очень мало современных "тапок" можно так преобразовать. С программами начала-середины 80-х такой фокус всё-таки чаще проходит. Но и на эту сложность есть свой лом: программа позволяет перегонять в сжатые аудиофайлы не только TAP-файлы, но и снэпшоты в форматах SNA и Z80! И тут уже нормально сжимается и загружается любой снэпшот (при его загрузке немного портится экран, но это не баг, это просто фича такая - в экран прячется загрузчик). Понятное дело что для игр с подзагрузками этот способ тоже пролетает, зато всё что загружается в память и просто работает - с этим проблем не будет. И даже появилась приятная возможность загружать игры с уже включенными читами (а ведь очень-очень мало игр для магнитофона имеют встроенные читы), потому что в память можно загрузить игру и с дискеты, а там часто в загрузчики встраивали всякие трейнер-моды.
Есть и другие программы, которые делают примерно то же самое, одна из них, например, O.T.L.A. (как я понял, от того же разработчика):
Настроек в ней вроде как побольше, и есть даже условное преимущество конвертации результата в TZX-файл (который размером поменьше и его всё-таки можно загрузить с помощью специализированных устройств) да ещё и плеер встроенный. Но вот удобства K7zx почему-то не получилось: например, для проверки в эмуляторе придётся делать всё по старинке, одной кнопкой запустить не удастся. И один нюанс: загрузчик зачем-то вместо экрана (ну чтоб порчи изображения не было на снэпшотах) разместили в буфере принтера - из-за этого некоторые снэпшоты могут загрузиться покорёженными, если они там что-то хранят (например, спрайты).
Обе этих программы можно скачать в архиве Google Code на их странице. Если вдруг она пропадёт, на всякий случай задублирую сюда: K7zx и O.T.L.A..
Итак, что по минусам и плюсам:
- всё-таки надо предварительно подготавливать файлы, а если потребуется снэпшот, то его ещё сначала надо сделать.
- не все TAP-файлы можно преобразовать, в основном только с простыми загрузчиками.
- места на носителе занимает в разы больше, чем TAP-файлы.
+ грузится в 10 раз быстрее!
+ можно сделать практически для любой игры, которая не требует подзагрузки.
+ можно загрузить игру с дополнительными читами, которые до этого были доступны только для дисковой версии.
+ не требуется дополнительного оборудования, достаточно одного смартфона или даже MP3-плеера.
- dukeyusupov
- 0
- 316

