zxwarp – ZX Spectrum emulator
A ZX Spectrum web emulator using Matt Westcott's superb JSSpeccy 3 engine, with a UI look & feel heavily based on Jan Bobrowski’s excellent Qaop/JS, please show your support for that at https://torinak.com/qaop/donate.
zxwarp adds:
- Tipshop pokes, auto-matched — when a game is loaded then available pokes fuzzy-matched from all-tipshop-pokes can be enabled in the control panel.
- DualShock 4 / USB gamepad — plug in a PS4 pad (or any standard Gamepad API controller); map to Cursor, Sinclair, or QAOP + Space.
Keys
| Esc / click screen | Menu panels |
|---|---|
| Del | Restart current game |
| F1 | About |
| F2 | Remember state |
| F3 | Recall state |
| Pause | Pause |
| Insert | Games page |
| Ctrl+O | Open file (when paused) |
| Ctrl+S | Save state (when paused) |
| Host keys | Passed through to the Spectrum by JSSpeccy (Shift ≈ Caps Shift, etc.) |
URL parameters
Append a hash to the run page. Parameters may be concatenated.
#l=URL | Load a program (TAP, TZX, Z80, SNA, SZX, ZIP) |
|---|---|
#g=slug | Select a catalog game (from the Top 100 list) |
#48 | Spectrum 48K |
#128 | Spectrum 128K |
#pentagon | Pentagon 128 |
#autoload | Auto-load tapes (default on) |
#!autoload | Disable auto-load tapes |
#instant | Instant tape loading via ROM traps (default on) |
#!instant | Disable instant loading (real-time tape) |
#usr0 | Use usr0 tape auto-load mode (128K / Pentagon) |
#sandbox | Hide open-file affordances (showcase mode) |
#panels | Start with side panels open (bare root opens them; game links default to fullscreen) |
Example:
./index.html#48&g=bomb-jack&l=games/top100/009-bomb-jack.tap.zip
Remote URLs must be CORS-enabled. Files placed in this project’s
games/ folder are copied into the static build and need no CORS.
Supported files
| Snapshots | SZX, Z80, SNA |
|---|---|
| Tapes | TZX, TAP (via traps / real-time loading in JSSpeccy) |
| Archives | ZIP containing any of the above |
Build
npm start # build + serve
npm run build # write static site to dist/
npm run serve # serve dist/ (wasm MIME configured)
Credits & licence
Emulation by Matt Westcott — JSSpeccy 3 (GPL-3.0). Original ZX Spectrum ROM © Amstrad PLC; Amstrad have kindly given permission for redistribution of their copyrighted material but retain that copyright.
zxwarp itself is GPL-3.0-or-later because it redistributes JSSpeccy.
The UI is heavily inspired by Jan Bobrowski’s amazing Qaop/JS. Please show your support at https://torinak.com/qaop/donate.
Pokes come from the classic Your Sinclair Tipshop, collected as all-tipshop-pokes by Lady Eklipse.