Добро пожаловать во вторую часть нашего цикла статей об эмуляции ZX Spectrum. Если первая часть была посвящена теории, архитектуре и критериям выбора, то теперь мы берем в руки скальпель и приступаем к детальному анатомированию конкретного эмулятора.
Сегодня герой нашего повествования — Fuse, он же The Free Unix Spectrum Emulator.
Если искать в мире эмуляции Speccy аналог понятия «эталон», то Fuse займет это место без всяких оговорок. Это не просто программа, это проект с четвертьвековой историей, открытым кодом и репутацией инструмента, которому доверяют разработчики, демосценеры и хардкорные энтузиасты по всему миру. Он не всегда самый «красивый» из коробки, но он самый правильный.
В этой статье мы максимально подробно разберем, почему Fuse считается стандартом, какие железки он умеет эмулировать, как им пользоваться, и где кроются его подводные камни.
История Fuse началась в далеком 1999 году, когда программист Philip Kendall решил создать эмулятор Spectrum для Unix-систем. В то время на Windows уже царствовали RealSpectrum и X128, а вот мир Linux и других *nix-систем испытывал серьезный голод по качественной эмуляции.
Название Fuse — это классическая для Open Source аббревиатура-«матрешка»: The Free Unix Spectrum Emulator .
Ключевые вехи развития:
Главная сила Fuse кроется в его архитектуре. В отличие от многих эмуляторов, которые ради производительности жертвуют точностью, Fuse стремится к цикло-точности (cycle-accurate), насколько это возможно в рамках программной эмуляции.
В основе лежит эмуляция процессора Z80A с потактовой синхронизацией. Fuse корректно обрабатывает:
Вся работа с образами дисков, лент и снэпшотов вынесена в отдельную библиотеку — libspectrum . Это архитектурное решение позволяет:
Это, пожалуй, самый важный раздел для понимания возможностей Fuse. Это не просто эмулятор британского Spectrum 48K. Это комбайн, который покрывает 99% сценариев использования.
Fuse эмулирует не только оригинальные машины Sinclair, но и множество клонов. Ниже представлена подробная таблица.
Fuse позволяет подключить к виртуальной машине практически все значимые устройства, которые когда-либо существовали для Speccy.
Одно из главных преимуществ Fuse — поддержка всех существующих форматов хранения данных для Spectrum. Перечислим основные:
Fuse — это не одна программа, а несколько вариантов интерфейса (фронтендов), что сбивает с толку новичков. Какой выбрать?
Fuse невероятно гибок в настройке. Многие опции доступны как через графический интерфейс, так и через параметры командной строки (что удобно для автоматизации). Разберем самые важные из них .
Если вы не просто играете, а пишете свои программы для Spectrum, встроенный отладчик Fuse станет вашим лучшим другом.
Отладчик вызывается клавишей F10 (в GTK-версии) или через меню. Он предоставляет:
Подведем итог, взвесив все «за» и «против» этого эмулятора.
Fuse — это выбор взрослого спектрумиста. Если вы цените точность, вам нужно запускать сложные демо или разрабатывать собственное ПО, вам сюда. Если вы ищете «эмулятор для бабушки», который одной кнопкой загружает игру и выглядит как консоль, возможно, стоит посмотреть в сторону Spectaculator или UnrealSpeccy Portable.
Практические советы для начала работы с Fuse:
Ниже представлен полный список ресурсов, относящихся к эмулятору Fuse. Материал структурирован по категориям для удобства использования.
Основные утилиты:
Сегодня герой нашего повествования — 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, которая и сегодня является актуальной .
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 . |
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-версии) или через меню. Он предоставляет:
- Дисассемблер: Показывает текущую инструкцию Z80 и последующие.
- Регистры: Полный список регистров (AF, BC, DE, HL, IX, IY, SP, PC, а также теневые).
- Память: Просмотр и редактирование памяти (как обычной, так и видеопамяти).
- Точки останова (Breakpoints): Можно ставить на адрес памяти, на порт ввода/вывода, на изменение значения в памяти.
- Трассировка: Пошаговое выполнение (Step In, Step Over).
8. Плюсы и минусы Fuse
Подведем итог, взвесив все «за» и «против» этого эмулятора.
Плюсы
| Плюс | Описание |
|---|---|
| Один из самых точных программных эмуляторов. Корректно работает 99.9% софта, включая сложные демо и загрузчики. | |
| Работает на Linux, Windows, macOS, *BSD. Единый код для всех систем . | |
| Поддерживает не только стандартные вещи, но и экзотику: Spectranet, ZXMMC, Covox, и все возможные дисковые интерфейсы. | |
| Незаменим для разработчиков и хакеров. | |
| Полноценная поддержка записи прохождений, включая соревновательный режим. | |
| Работает с любыми образами: от TAP до FDI. | |
| Бесплатен, прозрачен, не содержит скрытых «сюрпризов» . |
Минусы
| Минус | Описание |
|---|---|
| Наличие трех версий интерфейса (GTK, SDL, Win32) и необходимость ручной настройки некоторых параметров пугают начинающих. Нет «мастера первого запуска». | |
| GTK-интерфейс функционален, но выглядит несколько старомодно (особенно на Windows) по сравнению с коммерческим Spectaculator. Нет встроенного магазина игр или «красивого» браузера скриншотов. | |
| В базовой установке нет эффекта кинескопа. Их нужно настраивать отдельно (через шейдеры OpenGL или сторонние утилиты). | |
| Версия для Windows требует наличия установленных библиотек GTK+ Runtime, что создает лишний шаг при установке для неопытного пользователя. |
9. Заключение и практические советы
Fuse — это выбор взрослого спектрумиста. Если вы цените точность, вам нужно запускать сложные демо или разрабатывать собственное ПО, вам сюда. Если вы ищете «эмулятор для бабушки», который одной кнопкой загружает игру и выглядит как консоль, возможно, стоит посмотреть в сторону Spectaculator или UnrealSpeccy Portable.Практические советы для начала работы с Fuse:
- Скачивайте правильно: Для Windows скачивайте версию fuse-gtk (с GTK+). Если не хотите возиться с установкой библиотек, ищите сборки с уже встроенными зависимостями.
- Настройте ROM-файлы: Как и любой точный эмулятор, Fuse требует корректные образы ПЗУ (ROM). Без них он не запустится. Положите файлы .rom в папку ~/.fuse/roms или в папку с программой.
- Используйте SZX вместо Z80: Если вы сохраняете игру, используйте формат .szx. Он сохраняет больше информации о состоянии эмулятора.
- Для российского софта: При запуске игры на TR-DOS обязательно выберите модель Pentagon 128 или Scorpion ZS 256 в меню Machine -> Model. Иначе игра может не увидеть дисковод.
- Горячие клавиши:Запомните главные:
- 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
| Ресурс | Ссылка | Описание |
|---|---|---|
| Сборки для Windows | sourceforge.net/projects/fuse-emulator/files/fuse-for-windows | Официальные сборки Fuse для Windows (версии с GTK+ и SDL) |
| Версия с GTK+ | Включена в официальные сборки | Рекомендуемый интерфейс для Windows |
Linux
| Дистрибутив | Команда установки |
|---|---|
| Debian / Ubuntu | sudo apt install fuse-emulator fuse-emulator-common fuse-emulator-gtk |
| Fedora | sudo dnf install fuse-emulator fuse-emulator-gtk |
| Arch Linux | sudo pacman -S fuse-emulator |
| Gentoo | emerge app-emulation/fuse |
macOS
| Ресурс | Ссылка | Описание |
|---|---|---|
| Homebrew | brew install fuse | Установка через Homebrew |
| MacPorts | sudo port install fuse | Альтернативный вариант |
FreeBSD / NetBSD
| Ресурс | Ссылка | Описание |
|---|---|---|
| FreeBSD Ports | pkg install fuse | Пакет emulators/fuse |
| NetBSD pkgsrc | pkg_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 ROMs | worldofspectrum.org/roms | Архив ROM-образов (требуется проверка легальности в вашей стране) |
Утилиты (fuse-utils)
| Ресурс | Ссылка | Описание |
|---|---|---|
| fuse-emulator-utils | directory.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
| Платформа | Название | Ссылка | Описание |
|---|---|---|---|
| Android | ZXdroid | github.com/drodin/ZXdroid | Порт Fuse для Android (2010) |
| PSP | Fuse PSP | psp.akop.org/fuse.htm | Порт Fuse для Sony PlayStation Portable |
| Raspberry Pi / RetroPie | lr-fuse | retropie.org.uk | Ядро Fuse для RetroArch в составе RetroPie |
5. Документация
| Ресурс | Ссылка | Описание |
|---|---|---|
| Руководство пользователя | fuse-emulator.sourceforge.net/docs.php | Официальная документация |
| Man-страницы | man fuse | Встроенная документация в системах Unix |
| Опции командной строки | fuse --help | Полный список аргументов командной строки |
6. Связанные проекты
| Ресурс | Ссылка | Описание |
|---|---|---|
| libspectrum | sourceforge.net/projects/fuse-emulator/files/libspectrum | Библиотека для чтения/записи форматов Spectrum (TZX, TAP, SNA, Z80, TRD и др.) |
| Fuse for OpenBSD | openports.se/emulators/fuse | Порт для OpenBSD |
7. Сообщества и форумы
| Ресурс | Ссылка | Описание |
|---|---|---|
| SourceForge Mailing List | sourceforge.net/p/fuse-emulator/mailman | Архив списков рассылки разработчиков |
| GitHub Issues | github.com/fuse-emulator/fuse/issues | Сообщения об ошибках и запросы функций |
| World of Spectrum | worldofspectrum.org | Международное сообщество пользователей Spectrum, обсуждение эмуляторов |
| ZX-PK.ru | zx-pk.ru | Русскоязычный форум, раздел эмуляторов |
| Spectrum Computing | spectrumcomputing.co.uk/forums | Активный форум сообщества |
8. Дополнительные ресурсы
| Ресурс | Ссылка | Описание |
|---|---|---|
| RZX Archive | rzxarchive.co.uk | Архив записей прохождений в формате RZX, совместимом с Fuse |
| TZX Vault | tzxvault.org | Архив TZX-образов лент |
| Virtual TR-DOS | vtrd.in | Архив софта в форматах TR-DOS и SCL |