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

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages