SpecIde
Let's try something with SFML.
Install / Use
/learn @MartianGirl/SpecIdeREADME
SpecIde
Important!
The current repository for this project has been moved to this SpecIde repository in Codeberg. This repository will not receive any further updates.
What is it?
SpecIde is (yet another) ZX Spectrum (and, partially, Amstrad CPC) emulator. Currently, the ZX Spectrum emulation is quite accurate. The Amstrad CPC emulation is still a work in progress, but it is mostly enough for playing most games. Some of the supported features are:
- Emulation of ZX Spectrum 48K (Issue 2/3), 128K, +2, +2A and +3.
- Emulation of Amstrad CPC 464/664/6128. No support for Plus models yet!
- FDC765 disk drive emulation. (Scan commands are missing yet)
- Emulation of Spanish 128K, +2, +2A and +3.
- Emulation of Pentagon timings (but no BetaDisk yet! Sorry for that!)
- PSG (AY-3-8912/YM-2149) sound emulation.
- Turbosound emulation. Supports two and four PSG modes.
- Covox/Soundrive emulation.
- Loading of tapes via .tap and .tzx tape images, and .csw files.
- Loading of disks via .dsk disk images.
- Flashloading of .tap files and .tzx that use the ROM routines.
- Flashsaving to .tap files using the ROM routines.
- Full screen video mode detection.
- Double scan interlaced modes. (Gigascreen modes)
- Kempston/Sinclair/Cursor/Fuller joystick emulation from the PC joystick/gamepad.
- Fuller box audio.
- Works in GNU/Linux, Windows, and MacOS.
How to get it?
You can check the Releases page for Windows binaries.
Sometimes I keep here non-official releases:
- SpecIde for Windows 8/10 (32-bit)
- SpecIde for Windows 8/10 (64-bit)
- SpecIde for older Windows (XP/Vista/7) (32-bit)
- SpecIde for older Windows (XP/Vista/7) (64-bit)
For GNU/Linux and MacOS I'm not providing binaries yet, but SpecIde can be compiled quite easily.
How to compile it?
Compiling for GNU/Linux:
- Install libboost. At least chrono, system, thread and unit_test_framework are required.
- Install libsfml 2.6.x. Audio, graphics, window and system components are required.
- Install cmake.
- Install zlib1g.
- Clone the repository:
git clone https://github.com/MartianGirl/SpecIde.git - Go into the 'source' directory.
- Run:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=_prefix_ -Bbuild -S.with prefix being the path where SpecIde will be installed. For instance, to install SpecIde into $HOME/bin, the order would be:cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~ -Bbuild -S. - Run:
cmake --build build && cmake --install build - The binaries will be installed in 'prefix/bin'.
- Copy the roms from the spectrum-roms package (or from the Windows binaries) to the $HOME/.SpecIde/roms directory.
- Copy the fonts from the Windows binaries zip to the $HOME/.SpecIde/font directory.
- Run: bin/SpecIde [options] <TZXFile.tzx|TAPFile.tap|PZXFile.pzx|CSWFile.csw|DSKFile.dsk>
Compiling for MacOS
- Install brew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - Install cmake:
brew install cmake - Install zlib:
brew install zlib - Install pkgconfig:
brew install pkgconfig - Since the homebrew version of SFML sfml@2 causes problems, compile and install SFML.
- Create a folder for building and select it:
mkdir Projects && cd Projects - Clone the SFML repository:
git clone --branch 2.6.2 https://github.com/SFML/SFML.git - Run:
pushd SFML && cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release -Bbuild -S. && cmake --build build && sudo cmake --install build && popd - Move the Frameworks into its own folder:
pushd /usr/local && sudo mkdir -p Frameworks && sudo mv lib/*.framework Frameworks && popd - Clone the repository:
git clone https://github.com/MartianGirl/SpecIde.git - Run:
pushd SpecIde/source && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=_prefix_ -DCMAKE_INSTALL_RPATH=/usr/local/lib -Bbuild -S. && cmake --build build && sudo cmake --install build && popdwith prefix being the path where SpecIde will be installed. For instance, to install SpecIde into /usr/local/bin, the order would be:pushd SpecIde/source && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_INSTALL_RPATH=/usr/local/lib -Bbuild -S. && cmake --build build && sudo cmake --install build && popd - The binaries will be installed in 'prefix/bin'.
- Copy the roms from the spectrum-roms package (or from the Windows binaries) to the $HOME/Library/Application Support/SpecIde/roms directory.
- Copy the fonts from the Windows binaries zip to the $HOME/Library/Application Support/SpecIde/font directory.
- Run: bin/SpecIde [options] <TZXFile.tzx|TAPFile.tap|PZXFile.pzx|CSWFile.csw|DSKFile.dsk>
Compiling for Windows
I've successfully compiled SpecIde with MinGW and Visual Studio 2015 & 2017. I've included a script RunCMake.bat that helps in the build process.
- Install and compile boost. Add the binaries to the PATH.
- Install and compile sfml. Add the binaries to the PATH.
- Install and compile zlib. Add the binaries to the PATH.
- Install cmake.
- (Optional) Install ninja-builds. It really helps building SpecIde.
- Edit the RunCMake.bat script. You need to change the lines:
set BOOST_ROOT=\<Path_to_Boost_root_directory\>andset SFML_ROOT=\<Path_to_SFML_binaries\> - Run:
RunCMake \[MS32|MS64\] RELEASE - Build it!:
ninja clean & ninja installormingw32-make clean & mingw32-make install(or use Visual Studio IDE) - Copy the roms from the spectrum-roms package (or find them online) to the %APPDATA%/SpecIde/roms directory.
- Download this font to the %APPDATA%/SpecIde/font directory.
- Run: bin/SpecIde [options] <TZXFile.tzx|TAPFile.tap|PZXFile.pzx|CSWFile.csw|DSKFile.dsk>
How to use it?
SpecIde is invoked from the command line. To run SpecIde, type:
SpecIde [options] [tapefiles|diskfiles|palettes]
SpecIde supports the following file formats:
- For the Spectrum models: CSW, PZX, TAP, TZX, DSK, Z80, SNA.
- For the Amstrad CPC models: CSW, CDT, DSK.
- Custom palette files: PAL.
- ZX Spectrum palette format: 16 colours encoded as RGBA8888. (64 bytes)
- Amstrad CPC palette format: 32 colours encoded as RGBA8888. (128 bytes)
Command line options
The following command line options are available:
Model selection options:
--issue2 Spectrum 48K, issue 2.
--issue3|--48 Spectrum 48K, issue 3. (Default)
--48sp Spectrum + 48K. (Spanish ROM)
--128 Spectrum 128K.
--128sp Spectrum 128K. (Spanish ROM)
--plus2 Spectrum +2.
--plus2sp Spectrum +2. (Spanish ROM)
--plus2a Spectrum +2A.
--plus2asp Spectrum +2A. (Spanish ROM)
--plus3 Spectrum +3.
--plus3sp Spectrum +3. (Spanish ROM)
--pentagon Pentagon 128.
--cpc464 Amstrad CPC 464. (BASIC v1)
--cpc464sp Amstrad CPC 464. (Spanish ROM, BASIC s1)
--cpc464fr Amstrad CPC 464. (French ROM, BASIC f1)
--cpc664 Amstrad CPC 664. (BASIC v2)
--cpc6128 Amstrad CPC 6128. (BASIC v3)
--cpc6128sp Amstrad CPC 6128. (BASIC s3)
--cpc6128fr Amstrad CPC 6128. (BASIC f3)
Joystick options:
--kempston Map joystick 1 to Kempston (older behaviour). Map joystick 2 to Sinclair 1.
--kempstonnew Map joystick 1 to Kempston (newer behaviour). Map joystick 2 to Sinclair 1.
--fuller Map joystick 1 to Fuller and enable Fuller sound. Map joystick 2 to Sinclair 1.
--cursor Map joystick 1 to cursor keys. Map joystick 2 to Kempston.
--sinclair Map joystick 1 and 2 to Sinclair interface. (Default)
--pad|--nopad Map pad extra buttons to keys.
PSG options:
--psg|--nopsg Emulate AY chip in 48K Spectrum.
--abc|--acb|--mono Select stereo mode.
--turbo Select TurboSound with 2 PSGs. (mono)
--turboabc|--turboacb Select TurboSound with 2 PSGs. (stereo ABC/ACB)
--turbonext Select Next-style TurboSound with 4 PSGs.
--ay|--ym Select PSG: AY-3-8912/YM-2149.
Covox options:
--covox LPT Covox on port $FB. (Mono)
--covox2 Stereo Covox. (ports $FB and $4F)
--covox3 Czech Covox. (ports $1F, $3F, $5F)
--soundrive1 Soundrive on ports $0F, $1F, $4F, $5F.
--soundrive2 Soundrive on ports $F1, $F3, $F9, $FB.
--nocovox No Covox present.
Misc hardware options:
--sd1 Emulate Dinamic SD1 hardware protection.
--cmos|--nmos Emulate CMOS/NMOS Z80. (Affects OUT(C),0 instruction)
--early|--late Emulate early/late Z80 timings.
Video options:
--fullscreen Start SpecIde in full screen mode.
--window Start SpecIde in windowed mode.
--nodoublescan Single scan mode. (Default)
--scanlines Render PAL odd field with darker scanlines.
--interlace Render PAL odd and even fields.
--average Render PAL odd and even fields, averaged.
--colour|--color Colour display. (Default)
--bw|--green|--amber Monochrome display. (B/W, green or amber)
--sync Sync emulation to PC video refresh rate.
(Use only with 50Hz video modes. Not available on MacOS.)
Sound options (add prefi
Related Skills
next
A beautifully designed, floating Pomodoro timer that respects your workspace.
product-manager-skills
45PM skill for Claude Code, Codex, Cursor, and Windsurf: diagnose SaaS metrics, critique PRDs, plan roadmaps, run discovery, and coach PM career transitions.
devplan-mcp-server
3MCP server for generating development plans, project roadmaps, and task breakdowns for Claude Code. Turn project ideas into paint-by-numbers implementation plans.
