Emulator is an easy-to-use, handcrafted, still unpolished ZX Spectrum emulator built completely from scratch using Java.
It does not have any fancy features, it does not include a GUI debugger, an integrated assembler or disassembler, and it is in no way meant to be a complete ZX Spectrum development environment.

Development is somewhat active and ongoing, meaning new features, tweaks and performance improvements are added every now and then. Feedback and suggestions are more than welcome, however, please keep in mind that this is a hobby project and not a commercial product.

The 8-bit nostalgia and the "R Tape loading error" adventures

While this project strives to accurately emulate the original hardware, any claims of accuracy are intended as best-effort targets rather than absolute guarantees.

Here's a short breakdown of the main features you'll find in this emulator. Please note, however, that some of the features might still be in an experimental stage.

Z80

  • support for the Z80 CPU CMOS and NMOS variants
  • IFF2 bug support for the Z80 CPU NMOS variant
  • handles the entire Z80 instruction set, both documented and undocumented
  • passes the Zexall and Zexdoc test suites, as well as other traditional Z80 CPU tests
  • accurate timings

ZX Spectrum

  • support for the ZX Spectrum 16K, ZX Spectrum 48K, ZX Spectrum+, ZX Spectrum 128K and ZX Spectrum +2 machines
  • beeper and AY sound
  • memory and I/O contention
  • floating bus
  • early and late timing support
  • cycle accurate screen rendering, multicolor effects
  • border effects
  • Kempston joystick - keyboard mapped
  • Kempston mouse
  • Interface 1 + Microdrive
  • Print to PDF
    • ZX Printer support for the 16K, 48K machines and the 128K and +2 machines in 48K mode
    • Built-in RS232 serial port printing support for the 128K and +2 machines

Emulator

  • loading and saving snapshots: SNA
  • loading from tape images: TAP, TZX
  • loading and saving Microdrive cartridge images: MDR
  • flash loading
  • tape browser
  • saving to tape: TAP, WAV
  • support for loading custom ROM images
  • loading of supported files from inside ZIP archives
  • support for multiple border dimensions
  • full screen exclusive mode with display mode selection
  • light and dark themes
  • display scaling: 100%, 200%, 300%, 400%
  • "PRINT" to file - for capturing program output
  • cross-platform

Miscellaneous

Available as a cross-platform Java archive, and also as a native executable for both Windows and Linux.
The native images are built from the original JAR using GraalVM.

The following non-exhaustive list of features is currently not supported:

DRAM fading, snow effect, PAL TV | CRT effects, loading from and saving to various snapshot formats, handling POK files, four brightness levels, ULA+, TZX CSW blocks, TZX GDB blocks, mixing flash loading with standard speed loading, PZX, Lenslok, loading from WAV files, loading from CSW files, RZX, and probably many others ...

Ubuntu 24.04, custom theme, dark mode
Ubuntu 24.04, custom theme, dark mode
Ubuntu 24.04, custom theme, light mode
Ubuntu 24.04, custom theme, light mode
Ubuntu 24.04, custom theme, dark mode, embedded menu bar, running Hyperactive
Ubuntu 24.04, custom theme, dark mode, embedded menu bar, running Hyperactive
Ubuntu 24.04, KDE default theme, running BBG48
Ubuntu 24.04, KDE default theme, running BBG48
Ubuntu 24.04, KDE default theme, running Raxoft's Z80 tests
Ubuntu 24.04, KDE default theme, running Raxoft's Z80 tests
Ubuntu 24.04, KDE default theme, hidden menubar, running Terramex
Ubuntu 24.04, KDE default theme, hidden menubar, running Terramex
Ubuntu 24.04, custom theme, dark mode, collapsed menu bar
Ubuntu 24.04, custom theme, dark mode, collapsed menu bar
Ubuntu 24.04, custom theme, dark mode, collapsed menu bar, running Arkanoid
Ubuntu 24.04, custom theme, dark mode, collapsed menu bar, running Arkanoid
Ubuntu 24.04, custom theme, light mode, embedded menu bar, Microdrive
Ubuntu 24.04, custom theme, light mode, embedded menu bar, Microdrive
Windows 11, default theme, running Shock Megademo
Windows 11, default theme, running Shock Megademo
Windows 11, default theme, running floating bus tests
Windows 11, default theme, running floating bus tests
Windows 10, default theme, BASIC
Windows 10, default theme, BASIC
Windows XP, default theme, running the ZX Spectrum 48K Timing Tests
Windows XP, default theme, running the ZX Spectrum 48K Timing Tests
Windows XP, default theme, running the FPGA test
Windows XP, default theme, running the FPGA test
Windows XP, default theme, dark-mode
Windows XP, default theme, dark-mode

The cross-platform JAR distribution requires Java 8 or newer to be installed on your system, and it should work on any operating system supporting the required Java version. This includes Windows, from Windows XP up to Windows 11, as well as Linux distributions like Ubuntu 24.04 and Ubuntu 26.04.

Running the emulator:

java -jar emulator.jar

No packages are currently available.

Depending on how you operate it, this emulator, just like a real ZX Spectrum machine, can generate flashing images. Please DO NOT USE this software if you have any kind of sensitivity to flashing images.

This software is licensed under the terms of the MIT License.
Read more about the MIT License at https://choosealicense.com/licenses/mit.

Additionally, this software includes the FlatLaf look and feel package, which is licensed under the terms of the Apache License, version 2.0. Read more about the Apache License, version 2.0 at https://choosealicense.com/licenses/apache-2.0. Read more about the FlatLaf package at https://www.formdev.com/flatlaf.

NOTICE for the firmware images distributed with this software: Amstrad have kindly given their permission for the redistribution of their copyrighted material but retain that copyright.

Full size