This is a cross-platform ZX Spectrum 48K/128K/+2/+3 emulator written, for the fun of it, from scratch in C++.
- Instruction level Z80 emulation: all instructions passes zexdoc and zexall
- Load/Save snapshots (.sna, partial .z80)
- Tape loading (.tap, .tzx)
- Sound
- Drag&drop file loading
- Kempston joystick emulation (arrows and right-control for fire)
- ZX 48K/128K/+2/+2A/+3 spectrum
- AY sound chip
- Floppy disk interface
- Contended memory
- Tape UX
- .z80 snapshots / 128K snapshots
- Fast loading
- Emulation speed controls
- Tape saving
- Debugging UX (memory, registers)
- Disassembler
Configurable output shader:
This project uses CMake 3.22. All dependencies are loaded using CMake FetchContent
.
Builds on Windows (Visual Studio 2022), GNU/Linux (Ubuntu 22.04) and MacOS (12.6.7).
CMake options:
EPOCH_ENABLE_PROFILER
: enable/disable profiler
- Install Visual Studio 2022 with CMake and C workload
- Open the folder with Visual Studio
- Build!
# Build tools
sudo apt install build-essential cmake ninja-build
# Requisites
sudo apt install libasound-dev libdbus-1-dev libwayland-dev libxkbcommon-dev wayland-protocols xorg-dev
Build commands:
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
Copyright © 2024 Andrea Ghidini.
Epoch is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Epoch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Epoch. If not, see https://www.gnu.org/licenses/.
- Dear ImGui for the GUI
- GLFW for graphics and input
- ImGuiFileDialog for file dialog
- PortAudio for audio