A half-hearted attempt at writing a reasonably accurate ZX Spectrum emulator.
See it in action:
- Mostly cycle-accurate Z80 emulation, including contention and fetch/write timings
- Sub-frame accuracy for ULA draws
- Tape (.tap file) support with basic hooks for fast/automated loading
- Beeper sound
- AY-3 sound (based on ayumi library)
- Reasonably fast (typically ~3500 FPS uncapped on an i3-4150)
- Keyboard input
- SZX state loading
- Adjustable palettes
- More to come...
Clone the repository, including submodules:
git clone --recursive https://github.com/wermipls/sleepdart
pacman -S git mingw-w64-x86_64-meson mingw-w64-x86_64-pkgconf mingw-w64-x86_64-binutils mingw-w64-x86_64-gcc mingw-w64-x86_64-sdl3 zlib
meson setup build # add "-Dbuildtype=debug" for a debug build
meson compile -C buildsleepdart is licensed under 0-clause BSD.
The program makes use of several third-party libraries, in part or in whole:
- ayumi (MIT, see
ayumi/LICENSE) - Convenient Containers (CC) (MIT, see
external/cc.h) - PhysicsFS (zlib)
- SDL3 (zlib)
- stb_image (public domain or MIT, see
external/stb_image.h) - stb_image_write (public domain or MIT, see
external/stb_image_write.h)
This emulator bundles the unmodified ZX Spectrum ROMs. Amstrad have kindly given their permission to redistribute the Spectrum ROMs, as long as the original copyright notices are unchanged; see Cliff Lawson's post on Usenet.
Binaries in the tests directory are subject to their own distribution terms, some of them unspecified; look at text files in the respective test directories for any licensing information.
