zxwarp

About

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:

Keys

Esc / click screenMenu panels
DelRestart current game
F1About
F2Remember state
F3Recall state
PausePause
InsertGames page
Ctrl+OOpen file (when paused)
Ctrl+SSave state (when paused)
Host keysPassed through to the Spectrum by JSSpeccy (Shift ≈ Caps Shift, etc.)

URL parameters

Append a hash to the run page. Parameters may be concatenated.

#l=URLLoad a program (TAP, TZX, Z80, SNA, SZX, ZIP)
#g=slugSelect a catalog game (from the Top 100 list)
#48Spectrum 48K
#128Spectrum 128K
#pentagonPentagon 128
#autoloadAuto-load tapes (default on)
#!autoloadDisable auto-load tapes
#instantInstant tape loading via ROM traps (default on)
#!instantDisable instant loading (real-time tape)
#usr0Use usr0 tape auto-load mode (128K / Pentagon)
#sandboxHide open-file affordances (showcase mode)
#panelsStart 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

SnapshotsSZX, Z80, SNA
TapesTZX, TAP (via traps / real-time loading in JSSpeccy)
ArchivesZIP 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.