Page 1 of 1

Spectral

Posted: Sat Mar 15, 2025 8:46 am
by Lori Sullivan
Spectral is an FOSS 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.

Features and wishlist
  • 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.
  • Unlicensed.
https://github.com/r-lyeh/Spectral
https://discord.gg/UpB7nahEFU
https://alternativeto.net/software/spectral/

Spectral v1.03 (2025-03-15)

Posted: Sat Mar 15, 2025 10:15 am
by Lori Sullivan
TL-DR:
mp4/mpg recording
joystick autofires
turbosound support
simplified UI and ZXDB gallery
redefineable FN keys
faster ZXDB gallery rendering
fixed game search and loading of 48k games

Changelog
new: ui dialogs
new: mp4 recording
new: mpeg1 recording
new: joystick autofires
new: redefineable FN keyboard mappings
new: added turbosound (turbo-ay) on pentagon128 model
new: revamped main options interface (use shift+click for old behavior)
new: revamped ZXDB cheats interface (smoother experience now)
new: tweakable z80 speed: 50%, 100%, 150%, 200% (7MHz), 400% (14MHz)
new: option to use a few different zx palettes
new: ui expert mode (UI buttons+RMB)
new: update zxdb to latest 1.0.208
new: restored NMI button
new: local files can use & display unicode names now (Windows)
chg: added pentagon128 to the main list of models
chg: add icons next to keyboard mappings
chg: added discord badge to readme
chg: ask user for confirmation before binding command that was already assigned beforehand
chg: be explicit about the licensing terms in the LICENSE file
chg: disallow cursor joystick unless while in BASIC
chg: faster init
chg: highlight current loaded game in zxdb/list view
chg: if available, prefer clang-cl over cl (make.bat)
chg: integrate browser v1 into v2 tab
chg: pure black borders in fullscreen mode
chg: replaced ResourceHacker with a much nicer RC-Edit tool (MAKE, Windows)
chg: search should provide more results now
chg: simplified zxdb gallery controls
chg: tweaked Spectral palette, darker black and less pure white now
chg: ui layout, right sidebar
chg: updated bescii font to latest
chg: zxdb gallery added a secondary worker thread (hopefully faster decoding in most cases)
chg: zxdb gallery speeded up by not doing recolor on 1:4,1:8 thumbnails (since they were already recoloured during 1:2 thumbnails decoding)
chg: zxdb updated stb_image_resize2 to latest 2.13
fix: app titlebar when loading localized files from disk, like Russian ones (Windows)
fix: bottom, overscan lines in pentagon mode
fix: fixed bug that prevented using search toolbar twice in a row
fix: fixed bug that prevented using thumbnail icon after search toolbar
fix: oops! zxdb 48k-only games were wrongly loaded in 128 mode (minder,cerius,nuclear bowls,punch & judy,rebelstar raiders,rubicon,etc.)
fix: partial clipped links could be hovered when fullscreen was in use
fix: replaced discord invite link
fix: search game when no input was provided
fix: x86 build (internal)
lab: grid shader
https://github.com/r-lyeh/Spectral/releases/tag/1.03
https://discord.com/channels/2705654883 ... 7227519098

Spectral v1.04 (2025-03-23)

Posted: Sun Mar 23, 2025 5:40 pm
by Lori Sullivan
425835734-3c95c61b-b958-4f07-adc7-03d0587f8ebc.png
new: gamepad bindings (up to 16 buttons)
new: all desktop releases built by Github servers now (CI workflow by @zpl-zak ; 1,000 thanks!)
new: next iteration of our local file browser. revamped.
new: support light/dark OS theme (Windows)
new: added +SHIFT shortcut to capture UI layer (PIC,REC buttons)
new: added keyboard navigation to game listings (cursors+enter)
new: added filters to game listings (type while you browse)
new: ZXDB made ids clickable (forwards to SC page)
new: logos and branding images
chg: added hints for zx models
chg: avoid enforced UI recording within videos
chg: display dialog titles whenever possible
chg: ESC/RMB presses will cancel the UI top layer (dialog/overlay layer) before switching to game browser
chg: highlighted current selected option whenever possible
chg: increased internal buffers for va() calls
chg: removed Screenshot action from PRINT_SCREEN key mapping
chg: replaced native (i)nfo dialog
chg: simplified makefile: removed embed tool (MAKE)
fix: do not poke translations before loading any game (AfterTheWar)
fix: do not shorten tape silences when TurboROM is enabled (see: Alkatraz/TopoSoft games)
fix: fixed bug that prevented excessively long named games (+128chars) from being included in zxdb listings (TheMojonTwins)
fix: reduced heuristics for Kempston Mouse detection from (X+Y+MB to X+MB) since Arkanoid does not use Y coord :o)
fix: made xinput library to be loaded dynamically; fixes those installations where DirectX is not pre-installed (Windows)
fix: fixed issue2 from being selected within new UI menu
fix: fixed local file browser while identifying some false positive file extensions (like .c)
fix: fixed wrong window priority when displaying search dialog in fullscreen
fix: use AVX in X64 builds and SSE2 in X86 builds (Windows)
wip: toggled different GLX attributes in the hope that hw accelerated surface gets enabled (Linux)

Spectral v1.05 (2025-03-31)

Posted: Mon Mar 31, 2025 8:33 am
by Lori Sullivan
Spectral 1.05.png
new: zxdb: mousewheel
new: zxdb: media selector
new: zxdb: new 'page' option
new: zxdb: new 'media' option
new: zxdb: added bookmarks and compatibility flags to local file browser
new: saved local folder location
chg: zxdb: grouped authors into a single screen
chg: zxdb: can search release seqs now (see: #id#num)
chg: added F1 F2 F3 … hyperlinks into about screen
chg: changed ui to detect release mouse presses instead.
fix: eject rzx after new media is inserted (see: afterburner.rzx)
fix: eject tape when new disk is inserted (see: seraphima.scl)
fix: fix redirecting tab to local browser after a wos search
fix: search/local should clear dialogs (media)
fix: opening browse should close media dialog
fix: disable accessibility keys while app in use (Windows)
fix: ay: envelope 15 fix (ay1 core) (thanks @leiradel!)
fix: ay: dropped YM mode from AY2 core
fix: restored glx window attribs to what v1.03 was using (Linux)
fix: fixed Linux/MacOS builds (embedding zxdb build step broken since v1.04)
fix: ui edge case where hyperlinks could not be hovered if they were wider than app canvas
fix: fixed accidental tape interactions while clicking bottom games within browser lists.
fix: expanded va() buffers. changed impl. hopefully addresses temporary file leaks
https://github.com/r-lyeh/Spectral/releases/tag/105

Spectral v1.06 (2025-04-04)

Posted: Fri Apr 04, 2025 4:01 pm
by Lori Sullivan
Spectral v1.06 (2025-04-04).png
new: mp3s support. play Side-B bonus tracks (see: EveryonesAWally, KingdomOfKrell, Corruption, DodgyGeezers, etc.)
new: added zoom/panning (see: maps, inlays, instructions)
new: allow mousewheel within dialogs for those games with ridiculous amount of cheats (see: ManicMiner)
new: dimmed thumbnails when filtering is enabled
new: flash currently loaded game while browsing
new: combined local+wos search tab
new: zxdb 'alias' option

tzx: increased bits for pilot tones (fixes SpecialProgram11-ITA-bootleg.tzx)
tzx: improve tape preview by creating large pause gaps between important blocks: before any of [ .bas block, glue block, 48KStopTape block ] + any text block with 'side' or 'b' strings in it)
tzx: disable select block (only present in LoneWolfMirrorOfDeath and four minor compilations)

chg: improve texture resampling quality by going cubic instead of bilinear (maps, inlays, instructions)
chg: ctrl+mousewheel to advance pages while browsing
chg: auto-scan ZX_FOLDER setting on launch
chg: invert mousewheel (linux,windows)
chg: reduced the time needed to detect long keypresses

fix: fixed wrong characters when writing utf8 filenames (mp4, mpeg1, png files) (Windows)
fix: fixed case where repeated zxdb ids in a listing would not display its alt title (see: gremlins2)
fix: made ui_print() to work in any surface resolution
https://github.com/r-lyeh/Spectral/releases/tag/106

Re: Spectral

Posted: Mon Apr 21, 2025 9:30 am
by Lori Sullivan
Spectral 1.07 (for Mom) (2025-04-21)
new: multicolor (action force 2, buzzsaw, oldtower, gluf, yazzie, multidude, el stompo, space monsters meet the hardy, sunbucket, blacklamp, ringo) (not yet: plyuk)
new: rainbow graphics (eliminator, uridium, bad dream, venom mask 3)
new: border effects (vectron 48, jaws, blade warrior, starion, terrorpods) (not yet: aquaplane, venom mask 3)
new: border overscan (border break, breakspace, defenders of the earth, rotatrix, sentinel 48, bordertrix 48, darkstar 48 hiscore, super wonderboy128 paused)
new: floating bus (emlyn hughes, saucer, wizball, cobra, shortcircuit, terracresta, duet) (not yet: arkanoid, sidewize)
new: fast disk loading option (+3, Pentagon)
new: emulate hardware bugs present in HAL10H8 chip (128/+2)
new: kempston2 joystick support (port 55) (see: BombMunchies)
new: revamped joystick menu screen. added new joystick mappings
new: zipped instructions support (IndianaJonesAndTheLastCrusade)
new: added manual play/stop tape controls. also, disable auto-stop/play when manual tape is enabled
chg: added warning message when bonus tracks are not played in ideal conditions
chg: added leading tape silence (100ms) to help UX when clicking tape preview bar on the left border
chg: allowed backspace key to close game filter dialog
chg: by default, use 48K for load local tapes when no model can be inferred
chg: different ordering of zxdb color flags
chg: highlight loaded game in local browser
chg: if user has changed medias, keep using that when switching different zx models
chg: infer zx model from local filenames whenever possible (Cabal.dsk, Pietro(Pentagon).tap, Manic128.tap, etc)
chg: made media screen layout extra compact (preallocated space for upcoming savegame thumbnails)
chg: updated bescii font to v3.1 (cz/sk/hu/slavic languages support)
chg: updated github workflow to use SignPath signed binaries (Windows)
chg: updated github workflow to use ubuntu22.04, since ubuntu20.04 is deprecated now (Linux)
chg: use polyfill-glibc for backwards/legacy glibc compatibility (Linux)
chg: while toggling turborom, avoid additional reset whenever possible
fix: 1-byte memory stomp
fix: allowed backspace key while browsing local folders
fix: allowed to read embedded zxdb database from any cwd (ie, ../../dir/spectral)
fix: could not change zx model after loading from local .zip files
fix: displayed alias titles in # tab when no digit/punct char is found (zxdb) (see: ¡Hundido!)
fix: fixed pentagon INT timing (borderbreak.trd)
fix: fixed some empty search results in search tab (zxdb) (see: Floromaníaco while searching for "mania")
fix: fixed ¿¡ chars not being sorted (zxdb)
fix: removed slavic entries from # tab (zxdb)
fix: fixed the .scr viewer, that prevented the app from closing
fix: fixed UB in realloc() when game searching for empty strings a few times in a row
fix: fixed bug where window titlebar() might ignore temporary strings built from va() (Windows)
fix: fixed many +3 dsks, which were not being properly initalized/mounted (see: dynasty wars, final fight, forgotten worlds, gng, led storm, last duel, mercs, wrestling superstars, time scanner, the vindicator, ...)
fix: wrong titlebar after loading some local files
https://github.com/r-lyeh/Spectral/releases/tag/107