Skip to content

matthewbauer/fuse-libretro

 
 

Repository files navigation

fuse-libretro

fuse-libretro is an work in progress port of the Fuse Unix Spectrum Emulator to libretro. It's being developed on Windows with MinGW (32 bits) and tested on RetroArch 1.0.0.3-beta frontend, but it's known to compile and run on Linux x86/x64 and ARM. fuse-libretro has been tested with some Lakka builds.

Games

There are hundreds of free, legally available ZX Spectrum games at World of Spectrum. You should start at the Visitor Voted Top 100 Best Games.

Emulated Machines

  1. Spectrum 16K
  2. Spectrum 48K
  3. Spectrum 48K (NTSC)
  4. Spectrum 128K
  5. Spectrum +2
  6. Spectrum +2A
  7. Spectrum +3
  8. Spectrum +3e
  9. Spectrum SE
  10. Timex TC2048
  11. Timex TC2068
  12. Timex TS2068
  13. Spectrum 16K
  14. Pentagon 128K (needs 128p-0.rom, 128p-1.rom, and trdos.rom)
  15. Pentagon 512K (needs 128p-0.rom, 128p-1.rom, gluck.rom, and trdos.rom)
  16. Pentagon 1024 (needs 128p-0.rom, 128p-1.rom, gluck.rom, and trdos.rom)
  17. Scorpion 256K (needs 256s-0.rom, 256s-1.rom, 256s-2.rom, and 256s-3.rom)

The last four machines need additional ROMs to work. Create a fuse folder inside the <system> folder, download the required ROMs and put them into that folder.

The port correctly loads and runs some many games I have around. Most of them are 48K tapes, but I've successfully loaded one RZX file, one SCL file, and one TRD file.

Core Options

The core options available on the frontend are:

  • Model (Spectrum 16K|Spectrum 48K|Spectrum 48K (NTSC)|Spectrum 128K|Spectrum +2|Spectrum +2A|Spectrum +3|Spectrum +3e|Spectrum SE|Timex TC2048|Timex TC2068|Timex TS2068|Spectrum 16K|Pentagon 128K|Pentagon 512K|Pentagon 1024|Scorpion 256K): Set the machine to emulate. Note that the this setting will have effect only when a new content is loaded
  • Hide video border (enabled|disabled): Hides the video border, making the game occupy the entire screen area
  • Tape Fast Load (enabled|disabled): Instantly loads tape files if enabled, or disabled it to see the moving horizontal lines in the video border while the game loads
  • Tape Load Sound (enabled|disabled): Outputs the tape sound if fast load is disabled
  • Speaker Type (tv speaker|beeper|unfiltered): Applies an audio filter (libretro should allow for audio filters on the frontend)
  • AY Stereo Separation (none|acb|abc): The AY sound chip stereo separation (whatever it is)
  • Transparent Keyboard Overlay (enabled|disabled): If the keyboard overlay is transparent or opaque
  • Time to Release Key in ms (100|300|500|1000): How much time to keep a key pressed before releasing it (used when a key is pressed using the keyboard overlay)

Controllers

There are seven types of joysticks emulated:

  1. Cursor
  2. Kempston
  3. Sinclair 1
  4. Sinclair 2
  5. Timex 1
  6. Timex 2
  7. Fuller Joystick

Users can configure their joystick types in the input configuration on the front end. However, fuse-libretro allows for two joysticks at maximum so only users one and two can actually use theirs in the emulation.

By default, fuse-libretro maps port 0 to a Cursor joystick, port 1 to a Kempston joystick, and port 2 to the keyboard, so you should be able to use the core without bothering to configure the input settings.

Buttons A, X and Y are mapped to the joystick's fire button, and button B is mapped to the UP directional button.

Keyboard

Keyboard is fully emulated, but fuse-libretro features a keyboard overlay that allows you to bring up a ZX Spectrum keyboard on the screen and use the controller to select and "press" keys. Press "select" on the controller to bring up the keyboard overlay.

Supported Formats

Fuse can load a number of different file formats. For now, fuse-libretro only loads tzx, tap, z80, rzx, scl and trd files. This decision is somewhat arbitrary (it depends if I can find a file that I can be sure is not corrupted), so feel free to bug me to add other extensions. Please do so via issues here on GitHub.

Save States

Supported.

Setup

  1. Compile fuse-libretro with make -f Makefile.libretro
  2. Copy the resulting fuse_libretro.dll or fuse_libretro.so into the cores folder of your libretro frontend
  3. Profit!

It's not necessary to copy files to the system folder of your libretro frontend anymore! All supporting files are baked into the core, except ROMs for the more exotic Spectrum clones (see Emulated Machines.)

Versions

Versions that are being used to build and test fuse-libretro:

  • Fuse 1.1.1
  • libspectrum 1.1.1
  • zlib 1.2.8
  • bzip2 1.0.6

TODO

See the open issues.

Bugs

Many, probably. Open issues or send pull requests.

License

GNU GPLv3.0

About

A port of the Fuse Unix Spectrum Emulator to libretro

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 83.1%
  • Shell 6.7%
  • Roff 1.6%
  • Perl 1.6%
  • HTML 1.6%
  • Assembly 1.4%
  • Other 4.0%