Fuse - the Free Unix Spectrum Emulator
What is it?
Fuse (the Free Unix Spectrum Emulator) was originally, and somewhat unsurprisingly, a ZX Spectrum emulator for Unix. However, it has now also been ported to Mac OS X, which may or may not count as a Unix variant depending on your advocacy position. It has also been ported to Windows, AmigaOS and MorphOS, which are definitely not Unix variants.
What features does it have?
- Accurate 16K, 48K, 128K, +2, +2A and +3 emulation.
- Working +3e, SE, TC2048, TC2068, TS2068, Pentagon 128, Pentagon "512" (Pentagon 128 modified for extra memory), Pentagon 1024 and Scorpion ZS 256 emulation.
- Runs at true Speccy speed on any computer you're likely to try it on.
- Support for loading from .tzx files.
- Sound (on Windows and Mac OS X, and on systems supporting ALSA, the Open Sound System, SDL or OpenBSD/Solaris's /dev/audio).
- Kempston joystick emulation.
- Emulation of the various printers you could attach to the Spectrum.
- Support for the RZX input recording file format, including 'competition mode'.
- Emulation of the DivIDE, Interface I, +D, Beta 128, Kempston mouse, Spectrum +3e, ZXATASP and ZXCF interfaces.
What is it lacking?
- Quite a lot! However, it's a lot better than it used to be...
What do I need to run Fuse?
Unix, Linux, BSD etc.
- Required:
-
- X, SDL, svgalib or framebuffer support. If you have GTK+ installed, you'll get a (much) nicer user interface under X.
- libspectrum: the Spectrum emulator file format and information library.
- Optional:
-
- If you want +3 support, you'll need John Elliott's lib765 installed; this is available from the bottom of the libdsk homepage; if you also have libdsk installed, you'll also get support for extended .dsk files.
- libgcrypt: the ability to digitally sign RZX files (note that Fuse requires version 1.1.42 or later).
- libpng: the ability to save screenshots.
- libxml2: the ability to load and save Fuse's current configuration.
- libjsw: allow joystick input to be used (not required for joystick emulation).
- zlib: support for compressed RZX files.
- libbzip2: support for certain compressed files.
- libaudiofile: support for loading from .wav files.
- libsamplerate: higher quality sound.
Mac OS X
A native port to OS X by Fredrick Meunier is available on its own SourceForge project here, as well as a Spotlight importer for Mac OS X 10.4 Tiger users. Alternatively, the original version of Fuse will compile on OS X 10.3 (Panther) or later.
Windows
A port to Windows by Marek Januszewski and Stuart Brady is available here (PGP signature). This is also mirrored at World of Spectrum: Fuse (signature).
AmigaOS 4
Chris Young has ported Fuse to AmigaOS 4, with binaries available from Aminet as misc/emu/fuse.lha.
MorphOS
Q-Master has ported Fuse to MorphOS, with binaries available from AmiRUS.
Where can I get it from?
Fuse is licensed under the GNU General Public License. Please read this before downloading Fuse if you're not already familiar with it.
Source
Binaries
Packages are available for some Unix distributions; in general, any problems which are specific to the packages should be sent to the package maintainer.
- Unofficial packages for Debian, by Darren Salt: stable (Debian 4.0, "Etch"), testing, unstable, Debian 3.1 ("Sarge") (all 0.7.0) or Debian 3.0 ("Woody") (0.6.1.1).
- Fedora has packages of 0.9.0 available.
- FreeBSD has a port of 0.9.0 available as emulators/fuse.
- Gentoo users have an ebuild of 0.7.0 available.
- Mac OS X: Fuse binaries, the slightly modified Fuse source, or the i386 utilities binaries. These are also mirrored at WoS: Fuse, Fuse source or utilities. These require OS X 10.3.9 or later. Fuse 0.8.0 and newer includes a Spotlight importer for Mac OS X 10.4 users, those who do not use Fuse can also use the Fuse Spotlight Importer which allows Spotlight to find ZX Spectrum emulation related files based on metadata in the files. The source is also available.
- Mandriva packages of 0.9.0 are available from the PLF, or Miguel Barrio Orsikowsky has some older versions available.
- NetBSD users can get version 0.9.0 from pkgsrc (the NetBSD Packages Collection) as emulators/fuse and emulators/fuse-utils.
- OpenBSD users have version 0.7.0 available from ports as ports/emulators/fuse, and ports/emulators/fuse-utils/, with thanks to Alexander Yurchenko.
- The Polish Linux Distribution has packages of Fuse 0.6.2.1 and the utilities.
- Marek Januszewski has produced a Slackware 9.1 packages of 0.6.1.1 (md5 sum) and the utilities (md5 sum).
- Zoran Jekic has produced SuSE 9.3 packages of 0.9.0 and the utilities.
What's new?
0.9.0
- +D disk interface support
- Improved Beta disk interface support
- Pentagon 512 and Pentagon 1024 support
- Hi-Fi beeper emulation
- Improved Windows support
- ALSA sound driver
- AmigaOS support
- MorphOS support
See the ChangeLog for full details.
Development
If you're just want news of new versions and the like, the (low volume) fuse-emulator-announce list is available. If you're interested in the development of Fuse, this is coordinated via the fuse-emulator-devel list and the project page on SourceForge.
The latest version of Fuse is always available by checking out the 'trunk/fuse' directory from the Subversion repository on SourceForge. Note that this isn't guaranteed to compile, let alone work properly. Also, don't expect any support for this version! (You'll also need libspectrum from Subversion; this is in the 'trunk/libspectrum' directory). Similarly, the utilities are available in the 'trunk/fuse-utils' directory.
One thing which isn't in the SourceForge tracking system (and is now very outdated):
- David Gardner has produced a patch to give XVideo support for the Xlib UI, allowing arbitrary sized windows.
Are there any related projects?
- libspectrum is the library used by Fuse to handle various file formats.
- Alexander Shabarshin is working on SPRINT, an emulator of the Peters Plus super-Speccy, the Sprinter. SPRINT is using Fuse's Z80 core for its CPU emulation.
- Mike Wynne's ZX81 emulator, EightyOne is also using Fuse's Z80 core.
- Crabfists's Xbox port, FuseX.
- Ben O'Steen's GP2X port, Fuse-GP2X.
- Keith Orbell's Smartphone port, FuseSP.
- Anders Holmberg's PocketPC port, PocketClive.
- z80ex, a Z80 emulation library based on Fuse's Z80 core, used by zemu and PocketSpeccy.