• Please review our updated Terms and Rules here

đź‘» Spectral

Jimmy Gallagher

New Member
Joined
Mar 15, 2025
Messages
6
Spectral is an experimental emulator that I have been randomly assembling since the pandemic days, inspired by my old fZX32 emulator. Accuracy and performance are long-term goals, but the primary focus is just having fun with this thing. Hardcore ZX users will find little value in this emulator right now, but I hope newbies may find its ease of use somehow appealing to try. That being said, Spectral has a very compatible TAP/TZX loader and some other interesting features that provide me some fun in these days. Code is highly experimental and prone to change in the future. I will keep altering/breaking things randomly for good sake.

17898337313377746944_20250316175730_1.png
17898337313377746944_20250316185217_1.png
17898337313377746944_20250316185348_1.png
17898337313377746944_20250316185528_1.png

Features
  • Unlicensed.
  • Single executable.
  • Z80. Z80 Disassembler.
  • 16, 48, 128, +2, +2A, +3, Pentagon128 models.
  • Issue 2/3 keyboards.
  • ULA/ULA+ graphics.
  • Beeper/AY chips. Turbosound (Turbo-AY).
  • Kempston mouse.
  • Kempston/Fuller/Cursor/Sinclair joysticks. Gamepad support (Windows, Linux).
  • RF/CRT experience (not physically accurate though).
  • TAP/TZX/PZX/CSW tapes. Z80/SNA/SZX snaps. ROM/IF2 roms.
  • DSK/EDSK/TRD/SCL/FDI/MGT/IMG/HOBETA disks.
  • SCR/PNG screenshots. MP4/MPG video recordings (no sound).
  • ZIP/RAR/GZ archives.
  • AY tunes player.
  • Nec µ765/Betadisk interfaces.
  • Auto load games. Auto play/stop tape. TurboROM.
  • Graphical tape browser.
  • 25/30/50/60Hz fps lock.
  • Run-Ahead.
  • POK support.
  • Gunstick, Lightgun.
  • External shaders support.
  • Internal savestates.
  • Graphical User Interface.
  • Portable: Windows, Linux, MacOS.
  • Embedded ZXDB.
  • ZXDB Browser. ZXDB Gallery.
  • Can translate game menus from some languages into English.
  • Games can be appended to executable and get a standalone game viewer.
TODO
  • Extra accurate Z80 backend.
  • Cycle accurate (border, multicolor, etc).
  • RZX support.
  • MP3s.
  • Netplay.
  • Optimized.
Source (and 2nd issue tracker) — github.com/r-lyeh/Spectral/
Discord (main issue tracker and support) — discord.gg/UpB7nahEFU
 
Nice work!

Does it support booting from alternative .ROM/.BIN images? Many "updated" versions of Sinclair BASIC have been made over the years, such as OpenSE.
 
Does it support booting from alternative .ROM/.BIN images?
@r-lyeh:
Yes and no. Spectral will reset the roms and state after every drag 'n drop. right now, you can drop basic roms or interface I roms into the emulator and give them a try, it will work. but if you drop a second file after that, Spectral will reset the roms again and will use the default stuff


Examples of palettes usage

1. Spectral
2. Atkinson
3. Vivid
4. Ala-Konni
5. Goblin22
6. Gray
7. Negative

%pn (2025-03-17 09-52-31).png %pn (2025-03-17 09-52-42).png %pn (2025-03-17 09-52-54).png %pn (2025-03-17 09-53-04).png %pn (2025-03-17 09-53-14).png %pn (2025-03-17 09-53-22).png %pn (2025-03-17 09-53-31).png
Spectral (2025-03-17 09-48-57).png %pn (2025-03-17 09-49-13).png %pn (2025-03-17 09-49-24).png %pn (2025-03-17 09-49-33).png %pn (2025-03-17 09-49-45).png %pn (2025-03-17 09-49-59).png %pn (2025-03-17 09-50-07).png
 
Spectral 1.12
new: x8 zoom mode
new: palette files (.pal)
new: 2-frame run-ahead mode
new: authored fantasy15,dream15,hue15,skin5,remix palettes
new: adapted classic amstrad cpc,dawnbringer,gameboy,pico8,petit palettes
new: added support to rename files via local folder (F2 key)
new: exposed ZX_BLUR and ZX_BLOOM options within reworked TV menu
new: option to display the palette in use (ZX_PALETTE_PREVIEW)
new: option to paste host clipboard into BASIC
new: ZX_PLAYER binaries can have "-rf"/"-crt" in filename to select the tv mode (via argv[0])
new: added many new cmdline options (suggested by Janko)

chg: added checkbox to toggle Horace
chg: prefer png game-maps over scanned jpegs
chg: use crosshair cursor when lightguns are in use
chg: added vivid palette to ZX_PLAYER binaries by default
chg: added Z and UP key mappings as secondary and terciary gamepad buttons by default
chg: adjusted Horace's luma detection code so it works on RF modes
chg: adjusted hovering areas on ui buttons
chg: do not patch .tap checksums anymore, since we stopped from hotpatching medias some releases ago
chg: reduced separation of L/R stereo channels (note that real ZX is mono, in any case)
chg: upgraded zxdb to v1.0.214

fix: fixed linux build (reported by @md0-code)
fix: fixed macos-build in GHA (objc_msgSend args mismatch)
fix: fixed windows-latest build in GHA (windows-2019 was deprecated)
fix: fixed downloading urls with plus chars in them (see: ExplodingFist+ case)(Windows)
fix: fixed local browser resetting scroll position on enter key
fix: fixed mid-raster renderer to be more accurate during paper cycles (reported by cafedead)
fix: fixed missing cp1252 > utf8 conversion in prompt() call (Windows)
fix: fixed plausible crash during audio initialization on some hw specs (since v1.10)
fix: fixed occasional flashing terminal window while clicking on the first link in a session (Windows release builds)
fix: fixed saving screenshots or videos with disallowed chars in them (see: JackTheNipperII:Coconut case)(Windows, Linux, Mac)
fix: loading medias with no supported file types on them (see: PacmanEmulator)
fix: missing Enter keypress while typing in BASIC (reported by @skoolkid)(Linux,OSX)
fix: missing AY speech in AY=2 mode (regression) (see: Robocop.dsk)
fix: prevented ZX_PLAYER from creating the .Spectral/ folder

lab: lobby chat
lab: sprite outlines
lab: attribute clash removal
lab: can edit palette colors (shift+click any toolbar palette color)
lab: highlight vram changes

brk: switched to relative paths in options (.ini)
brk: deprecated ZX_SHADER,ZX_FOLDER_WINDOWS,ZX_FOLDER_UNIX options (.ini)
 

Attachments

  • Spectral 1.12.png
    Spectral 1.12.png
    148.7 KB · Views: 7
Spectral 1.13 (2026-03-13)
new: simplified UI
new: flashload standard tape blocks
new: 48-byte .pal support
new: console >_ menu option (ZX_CONSOLE)
new: create standalone game players (.exe) from menus
new: display palette color hexcodes on toolbar
new: Horace displays remapped bindings now
new: palette editor
new: Merlot palette
new: Modern palette
new: Reborn palette
new: option to pause app when losing window focus (ZX_PAUSE)
new: quick save/load buttons in menu
new: separated joystick and mouse autofires
new: shift+RMB on palette toolbar toggles border
new: mono/stereo ACB/ABC selectors (ZX_STEREO)
new: turbosound menu option (ZX_TURBOSOUND)
chg: allowed to paste unicode 8220/8221(“”) chars
chg: display game homepage on zxdb listings
chg: display media selector on zxdb listings
chg: edit palette toolbar (RMB)
chg: gamepads can browse zxdb now
chg: gamepads can cancel ui dialogs now
chg: smaller README images
chg: update ay core to latest
chg: update beeper core to latest
chg: update z80 core to latest
chg: updated zxdb to latest (1.0.224 -> 1.0.233)
fix: #56 Kempston Mouse (broken since v1.04)
fix: #59 How to use the "append game to executable" feature
fix: #61 standalone games can be paused with ESC key
fix: #63 Adapt the README.md banner to GitHub's dark theme
fix: allow to access tigrKeys()[vk] directly (3rd_tigr, win32)
fix: buffer overflow in sound push audio
fix: case where NMI would not reset (.scr viewer)
fix: case with external palettes without alpha
fix: crash while decoding a 404 .scr file from internet
fix: crash while playing with Horace in very small resolutions
fix: disallow max fps while in game browsers
fix: do not download contents if 404 (win32)
fix: do not play internal sound effects if audio is muted
fix: fix zxdb2txt tool build (shell32.lib)
fix: fixed multipart .zip files, broken since v1.10 (NarcoPolice.tzx.zip)
fix: inverted logic while restoring custom shaders/palettes
fix: Petit palette
fix: Pico8 palette
fix: restore bloom presets while loading some specific palettes
fix: run-a-head + flashload
fix: beeper volume when used with Stereo output
fix: support for recent zero-pulse .pzx files
fix: swapped sinclair 1/2 ports (thanks @juntelart)
fix: UB in va() function
fix: vs2019 build
fix: ZX_FOLDER not being saved
fix: ZX_TAB not being loaded
fix: github actions without wmic (deprecated in some win11 distros)
fix: github actions in macos13 (deprecated)
lab: pulp/magazine halftoning shaders
lab: ui combo widgets
 

Attachments

  • Spectral v1.13.webp
    Spectral v1.13.webp
    266.8 KB · Views: 1
Back
Top