One emulator, every Spectrum
Most emulators pick a Spectrum and stick to it. ZenZX runs the whole family from a single binary, with a real, correctly-behaving ROM underneath each one — not one machine pretending to be another.
What's supported
- 48K — the original.
- 128K, +2, +2A, +3 — including the +2/+2A/+3's real dual Sinclair joystick ports and their own AY sound chip.
- Spanish ROM variants of the 48K, 128K, +2, and +3 — for the machines that actually shipped in Spain, with their own boot text and keyboard behaviour.
- Timex Sinclair 2068 — its own NTSC timing (60Hz, not 50), its own AY-based sound and joystick ports, and its own hi-colour graphics mode, switched into the way real TS2068 software actually does it: a direct hardware port write, not a menu option. Most Spectrum emulators don't touch the TS2068 at all — this is a genuinely different, less common machine to get right.
Switch between them at runtime from the Machine menu, or launch straight into the one you want with -model=128k, -model=plus3, -model=ts2068, and so on from the command line.
Why this matters
A lot of ZX Spectrum software cares which machine it's running on — a 128K game's music routine, a +3's disk-aware loader, a TS2068 program's hi-colour art. Getting the model right isn't cosmetic: it's the difference between software running correctly and running into a wall. ZenZX boots the real ROM for whichever model you pick, so the machine behaves like that machine, not like a 48K with a different label on it.