zxwarp

v0.4.1

zxwarp – ZX Spectrum emulator

A ZX Spectrum web emulator using Matt Westcott's superb JSSpeccy 3 engine, with a UI look & feel inspired by 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 library 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/library/0000617-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.

The UI is 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.

Game metadata is provided by the ZXInfo API (zxinfo.dk) by Thomas Kolbeck, built on ZXDB by Einar Saukas.

Playable game files are mirrored from World of Spectrum Classic.

zxwarp itself is GPL-3.0-or-later because it redistributes JSSpeccy.