Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4,241 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fuse SDL3

A fork of Fuse — the Free Unix Spectrum Emulator — focused on a modernized SDL3 frontend, a streamlined CMake-based build, and an opinionated set of usability improvements and new features.

Upstream baseline: fuse 1.6.0.
Current version: 0.2.1.


About

Fuse is a long-standing, highly accurate ZX Spectrum emulator originally written by Philip Kendall and maintained by a community of contributors. This fork starts from the 1.6.0 release and makes the following deliberate changes:

  • The SDL3 frontend is the only supported frontend. The GTK, X, framebuffer, and other legacy UI backends have been removed, keeping the tree small and focused.
  • The build system has been replaced with CMake. The autotools chain is gone.
  • New hardware and features have been added that are absent or incomplete in the original emulator.
  • Defaults have been revised toward what feels right for day-to-day desktop use in 2025 and beyond.

This is a personal project. It is not an official Fuse release and is not affiliated with the upstream Fuse project or its maintainers.


Features

Inherited from upstream Fuse

  • Accurate emulation of the Z80 CPU.
  • Emulation of a wide range of ZX Spectrum and compatible hardware (see Supported machines below).
  • Tape loading and saving (.tap, .tzx), snapshot support (.z80, .szx, .sna, and others).
  • Built-in debugger with breakpoints, disassembler, and expression evaluation.
  • RZX recording and playback.
  • Interface 2 ROM cartridge support.
  • Poke finder, profile mode, and other developer tools.
  • Kempston, Sinclair, cursor, and other joystick types.

New and changed in this fork

  • SDL3 frontend — video, audio, and input fully ported to SDL3, with follow-up fixes for startup and audio regressions introduced during the migration.
  • Libretro core target — in-repo libretro build with software video/audio/input integration, save states, disk and playlist handling, frontend descriptors, and dedicated Linux and Windows distribution packaging paths.
  • CMake build — replaces autotools; supports Linux and native Windows (via Visual Studio / clang-cl and a repo-local vcpkg manifest). See BUILD.md for full dependency lists and build instructions.
  • Correct fullscreen scaling — fullscreen keeps the correct aspect ratio instead of stretching to fill the display.
  • OpenGL shader backend — loads RetroArch-compatible .glslp shader presets (examples provided in shaders/). Shader parameters can be edited at runtime under Options → Shader parameters…. The backend falls back gracefully to the plain SDL renderer when OpenGL or SDL3_shadercross is unavailable.
  • Dandanator cartridge emulation — full 512 KB ROM-set support with insert/eject, startup autoload, and EEPROM programming simulation.
  • Keyboard joystick — cursor keys map to joystick directions, left Alt is fire. F12 toggles cursor keys between joystick control and normal cursor-key behaviour.
  • F11 for fullscreen — direct toggle without going through the menu.
  • Per-file-type directory memory — the file selector remembers the last-used directory separately for each content type (tape, snapshot, ROM, shader, etc.) and restores them across restarts.
  • Robust startup — missing media files referenced in saved settings (Dandanator cartridge, Interface 2, snapshot, tape) are skipped non-fatally; the bad path is cleared and emulation starts normally.
  • Revised out-of-the-box defaults:
    • 2× scaling at startup.
    • Settings autosave enabled.
    • Tape traps and fast-load disabled (for better compatibility with copy-protected software).
    • Status bar hidden.
  • Expanded command-line surface--full-screen, --sdl-fullscreen-mode, --graphics-filter, --startup-shader, and --clear-startup-shader.
  • Portable XML config — settings are stored in a portable XML .fuserc file by default; legacy non-XML files are still read on first migration.
  • AppImage and archive packagingscripts/build-linux.sh --appimage / --package produce self-contained distributable bundles from the install tree.

Supported machines

Family Models
ZX Spectrum 16K, 48K, 48K NTSC, SE
ZX Spectrum 128 128K, +2, +2A, +3, +3e
Timex TC2048, TC2068, TS2068
Pentagon 128K, 512K, 1024K
Scorpion ZS256

Platform support

Platform Status
Linux Fully supported
Windows (native, Visual Studio / clang-cl) Fully supported

macOS is not currently supported or tested.


Quick start

Pre-built binaries are available on the Releases page.

Linux: download the .tar.gz archive, extract it, and run the fuse binary inside:

tar -xf fuse-sdl3-<version>-linux.tar.gz
cd fuse-sdl3-<version>-linux
./fuse

An AppImage is also provided if you prefer a single self-contained executable:

chmod +x fuse-sdl3-<version>.AppImage
./fuse-sdl3-<version>.AppImage

Windows: download the .zip archive, extract it, and run fuse.exe.

If you want to build from source instead, see BUILD.md.


Troubleshooting

Segmentation fault on startup (Linux/Wayland) - RESOLVED

This issue is now automatically fixed. Fuse SDL3 detects Wayland usage and automatically switches to X11 to prevent crashes. You should see:

./fuse: automatically switching SDL video backend to x11 to avoid known Wayland libdecor crashes

If you need to disable this automatic fix for any reason, set the environment variable FUSE_SDL_DISABLE_LIBDECOR_WORKAROUND=1.


Documentation

Document Contents
BUILD.md Build dependencies, platform-specific notes, libretro build details, and packaging instructions
CHANGELOG.md What changed in each release relative to upstream
LICENSE.md GNU General Public License, version 3

License

Fuse SDL3 is free software distributed under the GNU General Public License, version 3 or later. See LICENSE.md for the full text.

The original Fuse source code is copyright © 1999–2018 Philip Kendall and other contributors. This fork retains those copyright notices in all source files where they appear.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages