Добро пожаловать во вторую часть нашего цикла статей об эмуляции ZX Spectrum. Если первая часть была посвящена теории, архитектуре и критериям выбора, то теперь мы берем в руки скальпель и приступаем к детальному анатомированию конкретного эмулятора.

Сегодня герой нашего повествования — Fuse, он же The Free Unix Spectrum Emulator.

Если искать в мире эмуляции Speccy аналог понятия «эталон», то Fuse займет это место без всяких оговорок. Это не просто программа, это проект с четвертьвековой историей, открытым кодом и репутацией инструмента, которому доверяют разработчики, демосценеры и хардкорные энтузиасты по всему миру. Он не всегда самый «красивый» из коробки, но он самый правильный.

В этой статье мы максимально подробно разберем, почему Fuse считается стандартом, какие железки он умеет эмулировать, как им пользоваться, и где кроются его подводные камни.


📜 1. История проекта: Рождение легенды​

История Fuse началась в далеком 1999 году, когда программист Philip Kendall решил создать эмулятор Spectrum для Unix-систем. В то время на Windows уже царствовали RealSpectrum и X128, а вот мир Linux и других *nix-систем испытывал серьезный голод по качественной эмуляции.

Название Fuse — это классическая для Open Source аббревиатура-«матрешка»: The Free Unix Spectrum Emulator .

Ключевые вехи развития:
  • 1999–2005: Активная разработка, закладка фундамента. Основной упор делался на точное воспроизведение таймингов Z80 и поведения ULA.
  • 2006–2010: Появление версий под Windows (порты с SDL/GTK+) и macOS. Эмулятор перестает быть strictly «Unix» и становится кросс-платформенным стандартом .
  • 2010-е — настоящее время: Проект обретает стабильность. Разработка переходит в фазу поддержки и добавления новых моделей клонов (Pentagon, Scorpion) и периферии (DivIDE, Spectranet). Выходит версия 1.6.0, которая и сегодня является актуальной .
Важная философская деталь: Разработчики Fuse (особенно Philip Kendall) придерживаются консервативного подхода к добавлению новых функций. Каждая новая модель компьютера или периферийное устройство — это «бремя поддержки», которое ложится на плечи core-команды. Поэтому Fuse не спешит добавлять ZX80, ZX81 или Sam Coupe, но делает это осознанно, ради сохранения стабильности и точности .

🏗️ 2. Архитектура и ядро эмуляции​

Главная сила Fuse кроется в его архитектуре. В отличие от многих эмуляторов, которые ради производительности жертвуют точностью, Fuse стремится к цикло-точности (cycle-accurate), насколько это возможно в рамках программной эмуляции.

📌 Ядро: Z80 на стероидах​

В основе лежит эмуляция процессора Z80A с потактовой синхронизацией. Fuse корректно обрабатывает:

  • Contended Memory: Эмуляцию «конфликта» доступа к видеопамяти, когда ULA «ворует» такты у процессора. Это критически важно для игр с продвинутым скроллингом и демо.
  • NMOS vs CMOS Z80: У эмулятора есть опция выбора типа процессора (--cmos-z80). CMOS Z80 (использовался в некоторых клонах) имеет отличия в поведении недокументированных инструкций (undocumented opcodes), что важно для запуска специфического софта .

📌 Libspectrum: Сердце загрузки​

Вся работа с образами дисков, лент и снэпшотов вынесена в отдельную библиотеку — libspectrum . Это архитектурное решение позволяет:

  • Унифицировать поддержку форматов между разными фронтендами Fuse.
  • Обеспечить высочайшую стабильность при чтении «битых» или нестандартных образов.

🎮 3. Эмулируемое железо: Модели и периферия​

Это, пожалуй, самый важный раздел для понимания возможностей Fuse. Это не просто эмулятор британского Spectrum 48K. Это комбайн, который покрывает 99% сценариев использования.

💻 Поддерживаемые модели компьютеров​

Fuse эмулирует не только оригинальные машины Sinclair, но и множество клонов. Ниже представлена подробная таблица.
МодельОписаниеОсобенности
ZX Spectrum 16K/48KОригинальная модель с 16 или 48 КБ RAM.Базовый стандарт. Эмуляция классического «цветового конфликта».
ZX Spectrum 128KИспанская/английская модель с AY-3-8910 звуковым чипом.Поддержка двух банков памяти по 64 КБ.
ZX Spectrum +2 / +2AСерые/черные модели Amstrad.+2A имеет иную схему памяти, близкую к +3. Fuse корректно различает их .
ZX Spectrum +3Модель со встроенным 3-дюймовым дисководом.Эмуляция дисковода +3 (формат .dsk). Поддержка +3e (расширенная версия ОС).
Timex TC2048 / TC2068Американские/португальские клоны с расширенной графикой.Эмуляция видеорежимов Timex (512x192), поддержка док-картриджей .
Pentagon 128 / 512 / 1024Культовый российский клон.Критически важно для российской сцены! Fuse эмулирует тайминги Pentagon, необходимые для запуска 99% TR-DOS софта.
Scorpion ZS 256Еще один популярный российский клон.Поддержка Turbo Mode (ускорение), эмуляция жесткого диска.

🕹️ Периферия: «Примочки» для полного счастья​

Fuse позволяет подключить к виртуальной машине практически все значимые устройства, которые когда-либо существовали для Speccy.
КатегорияУстройстваНазначение
НакопителиBeta 128, +D, DISCiPLE, Opus Discovery, Didaktik 80/40Эмуляция контроллеров дисководов для работы с TR-DOS, G+DOS и другими системами. Поддержка образов .trd, .scl, .fdi .
Современное железоDivIDE, DivMMC, ZXMMC, ZXCFЭмуляция интерфейсов для SD-карт и Compact Flash. Позволяет монтировать образы жестких дисков (.hdf).
Звуковые картыCovox (General Sound), Fuller Box, Melodik, SpecDrumЭмуляция 8-битного PCM (Covox), стерео-звука и дополнительных каналов.
ДжойстикиKempston, Sinclair (Interface 2), CursorПоддержка всех стандартов управления. Переназначение на клавиатуру или геймпад.
СетьSpectranet, SpeccyBootЭмуляция TCP/IP-стека для Speccy. Позволяет «выходить в интернет» прямо из эмулятора (например, для загрузки софта через сеть) .
ПринтерыZX Printer, Alphacom 32Эмуляция печати с выводом в файл или графическое окно.

🧰 4. Форматы файлов: С чем работает Fuse​

Одно из главных преимуществ Fuse — поддержка всех существующих форматов хранения данных для Spectrum. Перечислим основные:

📼 Ленты (Tape)​

  • .tap (Tape Image): Простейший формат, содержит только байты данных. Подходит для большинства игр.
  • .tzx (TZX Format): «Золотой стандарт». Хранит не только байты, но и точную форму сигнала (длительности импульсов), что позволяет загружать игры со сложной защитой и мультизагрузчики .
  • .pzx: Более современная альтернатива TZX, обеспечивающая еще большую точность.

💾 Диски (Disk)​

  • .trd / .scl: Стандарт TR-DOS для российских клонов (Pentagon, Scorpion).
  • .dsk: Образы для +3, +D, Opus Discovery.
  • .fdi (Formatted Disk Image): Образы, сохраняющие служебную информацию о реальных дискетах.

⚡ Снэпшоты (Snapshots) — «Сохранения»​

  • .szx: Самый современный и предпочтительный формат. Хранит полное состояние эмулятора, включая настройки периферии.
  • .z80: Популярный формат, поддерживаемый всеми эмуляторами. Fuse поддерживает версии до 3-й (включая SLT-расширения для мультизагрузок) .
  • .sna: Старый 48-килобайтный формат снэпшотов.

🎥 Запись (Recording)​

  • .rzx (RZX Format): Формат записи ввода (input recording). Позволяет записывать прохождение игры, а затем «проигрывать» его. Поддерживает rollback (откат) и competition mode (режим честных соревнований) .

🖱️ 5. Интерфейсы (UI): Внешность и удобство​

Fuse — это не одна программа, а несколько вариантов интерфейса (фронтендов), что сбивает с толку новичков. Какой выбрать?
ИнтерфейсОписаниеДля кого
GTK+Самый функциональный и красивый интерфейс. Полноценное окно с меню, панелями инструментов, диалогами настройки.Рекомендуется для Windows и Linux. Идеален для новичков и продвинутых пользователей, которым нужны все настройки «под рукой».
SDLМинималистичный интерфейс. Управление через горячие клавиши.Для любителей минимализма, встраивания в ретро-сборки (RetroPie) или использования на слабом железе.
XlibКлассический интерфейс для чистого X Window System (без GTK).Для олдскульных пользователей Unix, которые работают без DE.
Win32Специфичный для Windows интерфейс.Для тех, кто не хочет ставить библиотеки GTK+ на Windows .
💡 Совет: Для большинства пользователей Windows и macOS я рекомендую версию с GTK+ интерфейсом. Она выглядит современно и предоставляет доступ ко всем настройкам через меню, а не через командную строку.

⚙️ 6. Ключевые опции и настройки (из командной строки и GUI)​

Fuse невероятно гибок в настройке. Многие опции доступны как через графический интерфейс, так и через параметры командной строки (что удобно для автоматизации). Разберем самые важные из них .

🚀 Загрузка и ускорение​

  • --accelerate-loader / --no-accelerate-loader: Автоматическое ускорение загрузки с виртуальной ленты. Включено по умолчанию, но если игра использует сложный загрузчик, его лучше отключить.
  • --auto-load: Автоматически запускать загрузку при открытии файла ленты/диска.
  • --detect-loader: Автоматически определять момент, когда игра обращается к магнитофону, и запускать воспроизведение ленты.

🎨 Видео​

  • --bw-tv: Эмуляция черно-белого телевизора.
  • --aspect-hint: «Подсказывает» оконному менеджеру сохранять правильное соотношение сторон экрана Spectrum (4:3). Может конфликтовать с некоторыми композитными менеджерами .

🕹️ Периферия​

  • --beta128, --disciple, --divide: Включение эмуляции соответствующих интерфейсов.
  • --betadisk file: Автоматически вставить образ в дисковод Beta 128.
  • --covox: Включить эмуляцию Covox (General Sound) для российских клонов.
  • --fuller: Включить эмуляцию Fuller Box (аудиоусилитель).

🎥 RZX (Запись)​

  • --competition-mode: Включает режим соревнований. В этом режиме отключаются читы и откат времени, запись подписывается криптографически. Используется на официальных соревнованиях по ретро-геймингу .
  • --compress-rzx: Сжимать файлы записи.

🐞 Отладка​

  • --debugger-command "command": Выполнить команду в отладчике при старте. Мощная функция для разработчиков .

🐞 7. Отладчик (Debugger): Рай для разработчика​

Если вы не просто играете, а пишете свои программы для Spectrum, встроенный отладчик Fuse станет вашим лучшим другом.

Отладчик вызывается клавишей F10 (в GTK-версии) или через меню. Он предоставляет:
  1. Дисассемблер: Показывает текущую инструкцию Z80 и последующие.
  2. Регистры: Полный список регистров (AF, BC, DE, HL, IX, IY, SP, PC, а также теневые).
  3. Память: Просмотр и редактирование памяти (как обычной, так и видеопамяти).
  4. Точки останова (Breakpoints): Можно ставить на адрес памяти, на порт ввода/вывода, на изменение значения в памяти.
  5. Трассировка: Пошаговое выполнение (Step In, Step Over).
Это делает Fuse идеальным инструментом для reverse-engineering, перевода игр и создания демо.


🆚 8. Плюсы и минусы Fuse​

Подведем итог, взвесив все «за» и «против» этого эмулятора.

✅ Плюсы​

ПлюсОписание
🔥 Эталонная точностьОдин из самых точных программных эмуляторов. Корректно работает 99.9% софта, включая сложные демо и загрузчики.
🌍 Кросс-платформенностьРаботает на Linux, Windows, macOS, *BSD. Единый код для всех систем .
🛠️ Огромный спектр периферииПоддерживает не только стандартные вещи, но и экзотику: Spectranet, ZXMMC, Covox, и все возможные дисковые интерфейсы.
🐞 Мощный отладчикНезаменим для разработчиков и хакеров.
🎥 Поддержка RZXПолноценная поддержка записи прохождений, включая соревновательный режим.
💾 Все форматыРаботает с любыми образами: от TAP до FDI.
🧩 Открытый код (GPLv2)Бесплатен, прозрачен, не содержит скрытых «сюрпризов» .

❌ Минусы​

МинусОписание
🤔 Сложность для новичкаНаличие трех версий интерфейса (GTK, SDL, Win32) и необходимость ручной настройки некоторых параметров пугают начинающих. Нет «мастера первого запуска».
🖼️ «Академичный» GUIGTK-интерфейс функционален, но выглядит несколько старомодно (особенно на Windows) по сравнению с коммерческим Spectaculator. Нет встроенного магазина игр или «красивого» браузера скриншотов.
📺 Отсутствие CRT-шейдеров «из коробки»В базовой установке нет эффекта кинескопа. Их нужно настраивать отдельно (через шейдеры OpenGL или сторонние утилиты).
📦 Зависимости (на Windows)Версия для Windows требует наличия установленных библиотек GTK+ Runtime, что создает лишний шаг при установке для неопытного пользователя.

🚀 9. Заключение и практические советы​

Fuse — это выбор взрослого спектрумиста. Если вы цените точность, вам нужно запускать сложные демо или разрабатывать собственное ПО, вам сюда. Если вы ищете «эмулятор для бабушки», который одной кнопкой загружает игру и выглядит как консоль, возможно, стоит посмотреть в сторону Spectaculator или UnrealSpeccy Portable.

Практические советы для начала работы с Fuse:
  1. Скачивайте правильно: Для Windows скачивайте версию fuse-gtk (с GTK+). Если не хотите возиться с установкой библиотек, ищите сборки с уже встроенными зависимостями.
  2. Настройте ROM-файлы: Как и любой точный эмулятор, Fuse требует корректные образы ПЗУ (ROM). Без них он не запустится. Положите файлы .rom в папку ~/.fuse/roms или в папку с программой.
  3. Используйте SZX вместо Z80: Если вы сохраняете игру, используйте формат .szx. Он сохраняет больше информации о состоянии эмулятора.
  4. Для российского софта: При запуске игры на TR-DOS обязательно выберите модель Pentagon 128 или Scorpion ZS 256 в меню Machine -> Model. Иначе игра может не увидеть дисковод.
  5. Горячие клавиши:Запомните главные:
    • F1: Настройки (Options)
    • F10: Отладчик (Debugger)
    • F12: Сброс (Reset)
    • Ctrl + R: Перезагрузить машину

🌐 Полезные ссылки и ресурсы для Fuse (The Free Unix Spectrum Emulator)​

Ниже представлен полный список ресурсов, относящихся к эмулятору Fuse. Материал структурирован по категориям для удобства использования.


📥 1. Официальные ресурсы​

РесурсСсылкаОписание
Официальный сайтfuse-emulator.sourceforge.netГлавная страница проекта, новости, документация
SourceForge (Fuse)sourceforge.net/projects/fuse-emulatorСтраница загрузок и репозиторий
GitHub (fuse-emulator)github.com/fuse-emulator/fuseАктуальный исходный код эмулятора
GitHub (libspectrum)github.com/fuse-emulator/libspectrumБиблиотека для работы с форматами файлов Spectrum, используется Fuse

💾 2. Загрузка и установка​

Windows​

РесурсСсылкаОписание
Сборки для Windowssourceforge.net/projects/fuse-emulator/files/fuse-for-windowsОфициальные сборки Fuse для Windows (версии с GTK+ и SDL)
Версия с GTK+Включена в официальные сборкиРекомендуемый интерфейс для Windows

Linux​

ДистрибутивКоманда установки
Debian / Ubuntusudo apt install fuse-emulator fuse-emulator-common fuse-emulator-gtk
Fedorasudo dnf install fuse-emulator fuse-emulator-gtk
Arch Linuxsudo pacman -S fuse-emulator
Gentooemerge app-emulation/fuse

macOS​

РесурсСсылкаОписание
Homebrewbrew install fuseУстановка через Homebrew
MacPortssudo port install fuseАльтернативный вариант

FreeBSD / NetBSD​

РесурсСсылкаОписание
FreeBSD Portspkg install fuseПакет emulators/fuse
NetBSD pkgsrcpkg_add fuse-emulatorПакет emulators/fuse-emulator

🧩 3. Дополнительные компоненты​

ROM-файлы​

Fuse требует наличия ROM-образов для работы. Распространение оригинальных ROM ограничено авторскими правами, но существуют легальные источники.
РесурсСсылкаОписание
fuse-roms (FreeBSD)freshports.org/emulators/fuse-romsДополнительные ROM-образы для Fuse (включая 128p, 256s, TR-DOS, Interface 1)
fuse-emulator-roms (RPM Fusion)mirrors.rpmfusion.orgПакет с ROM-файлами для Fedora
World of Spectrum ROMsworldofspectrum.org/romsАрхив ROM-образов (требуется проверка легальности в вашей стране)

Утилиты (fuse-utils)​

РесурсСсылкаОписание
fuse-emulator-utilsdirectory.fsf.org/wiki/Fuse-emulator-utilsНабор утилит для работы с файлами эмулятора: конвертация форматов, работа с RZX, создание образов дисков
Утилиты в пакетахfuse-emulator-utils в Linux, fuse-utils в FreeBSDДоступны в большинстве репозиториев

Основные утилиты:
  • audio2tape — конвертация аудиофайлов в TZX/TAP
  • tape2wav — конвертация TZX/TAP в WAV
  • tapeconv — конвертация между TZX и TAP
  • rzxcheck / rzxdump / rzxtool — работа с RZX-записями
  • scl2trd — конвертация SCL в TRD
  • snapconv — конвертация между форматами снэпшотов

📱 4. Портированные версии Fuse​

ПлатформаНазваниеСсылкаОписание
AndroidZXdroidgithub.com/drodin/ZXdroidПорт Fuse для Android (2010)
PSPFuse PSPpsp.akop.org/fuse.htmПорт Fuse для Sony PlayStation Portable
Raspberry Pi / RetroPielr-fuseretropie.org.ukЯдро Fuse для RetroArch в составе RetroPie

📚 5. Документация​

РесурсСсылкаОписание
Руководство пользователяfuse-emulator.sourceforge.net/docs.phpОфициальная документация
Man-страницыman fuseВстроенная документация в системах Unix
Опции командной строкиfuse --helpПолный список аргументов командной строки

🔗 6. Связанные проекты​

РесурсСсылкаОписание
libspectrumsourceforge.net/projects/fuse-emulator/files/libspectrumБиблиотека для чтения/записи форматов Spectrum (TZX, TAP, SNA, Z80, TRD и др.)
Fuse for OpenBSDopenports.se/emulators/fuseПорт для OpenBSD

💬 7. Сообщества и форумы​

РесурсСсылкаОписание
SourceForge Mailing Listsourceforge.net/p/fuse-emulator/mailmanАрхив списков рассылки разработчиков
GitHub Issuesgithub.com/fuse-emulator/fuse/issuesСообщения об ошибках и запросы функций
World of Spectrumworldofspectrum.orgМеждународное сообщество пользователей Spectrum, обсуждение эмуляторов
ZX-PK.ruzx-pk.ruРусскоязычный форум, раздел эмуляторов
Spectrum Computingspectrumcomputing.co.uk/forumsАктивный форум сообщества

📖 8. Дополнительные ресурсы​

РесурсСсылкаОписание
RZX Archiverzxarchive.co.ukАрхив записей прохождений в формате RZX, совместимом с Fuse
TZX Vaulttzxvault.orgАрхив TZX-образов лент
Virtual TR-DOSvtrd.inАрхив софта в форматах TR-DOS и SCL

💡 Примечание: Fuse распространяется под лицензией GNU General Public License v2 . Это свободное программное обеспечение с открытым исходным кодом.