Releases: r-lyeh/Spectral
Spectral 1.15
v1.15
new: ARM64 macos binaries
new: animated quicksaves
new: tv grain option (ZX_GRAIN)
new: visual effects while holding reset button
new: can remap individual gamepad buttons now
new: added italian>english game menu translations (@koseid72)
new: results in search tab use standard list views now
chg: darker default palette
chg: disabled gamepads on linux for now (current code looks buggy on virtualbox+lubuntu16 at least)
chg: do not wipe medias if ZX_AUTOLOAD is off (go fully manual instead)
chg: relocated fullscreen close button to top-right corner
fix: case where filtering on local files would also search mistakenly in paths
fix: do not send enter vk to zx while pressing alt+enter (3rd_tigr) (linux,macos)
fix: crash while transcoding very large text sequences (>10kib) (see: mythhistory instructions)
fix: missed to serialize ZX_TAPECOUNTER option
fix: recreated fullscreen window during launch (3rd_tigr) (linux)
fix: removed local "games/" folder scan in old game browser (when ZXDB is disabled)
fix: removed zxdb watermarks from linux and macos binaries
fix: slightly incorrect alphas and/or colors when filtering zxdb titles
fix: clicking on tape browser, which was broken since flashload was introduced

Spectral 1.14
v1.14
new: 4 gamepads support
new: button to eject medias
new: button to quit app in fullscreen mode (in addition to ALT+F4)
new: extra insert/eject options in media menu
new: mount sidekick .ico files automatically (ZX_PLAYER)
new: option to disable auto-loading on medias
new: option to disable ZXDB browsing
new: option to toggle restored state on launch (ZX_RESTORE)
new: provide X64+ARM binaries (apple)
new: built exes will detect "48" and "128" strings on their filenames (ZX_PLAYER)
new: generating .exes will spawn different RF,RF-CRT,CRT suffixes that work as graphical options (ZX_PLAYER)
chg: do not include CRT mode by default (ZX_PLAYER)
chg: do not use ULA+ in .exes by default
chg: improved gamepad browsing experience
chg: fixed output filenames on built .exes
chg: update 3rd_tfd to latest
chg: updated zxdb to latest (233->234)
fix: #65 built exes from 48k games (reported by @koseid72)
fix: #66 do not close parent console when launched from cmdline (win32) (reported by @dotkoval)
fix: do not fastfoward emulation if RSHIFT is pressed (ZX_PLAYER)
fix: empty ZX_FOLDER browsing case (initial run)
fix: prevented tap flashloader from stomping memory
fix: regression in AY speech in AY=2 mode (robocop)
fix: regression on loading sequential urls (MythHistoryInTheMaking.dsks)
fix: regression at identifying .z80 files
fix: ui_dialog_combo() eating leading glyph
kudos to @juntelart for his tests on this release! :D

Spectral 1.13
v1.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 (thanks @Korb)
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

Spectral 1.12
v1.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)
Spectral 1.11
v1.11
new: stereo audio
new: tape counter
new: co-op for kids: horace, a companion screenmate.
new: auto-patch .trd disks to be bootable (whenever possible)
new: added multiple local/zxdb filters support. can search for titles, aliases, years, publishers, authors, genres, tags, media types, etc.
new: added demos to zxdb listings by default now. can be isolated by filtering on the word "demo".
new: joffa's ui easter egg
chg: added special zxdb filtering words "mia"/"xxx" to display hidden categories.
chg: allowed horace to duck (down+jump) and be dragged (mouse)
chg: allowed to click on (year)(publisher) zxdb strings
chg: allowed to select .fx shaders via local browser
chg: external shaders support via TV=4 mode (by using ZX_SHADED and ZX_SHADER ini settings)
chg: extra tweaks for horace while doing tape loads
chg: identified visually different browsing areas in tape browser
chg: improved .trd detection
chg: memoized ui glyph dimensions
chg: redesigned tape browser to be more minimalist
chg: re-ordered TV modes, sorted by framerate cost
chg: used tighter spacing while in local browser
chg: gradients palette (thanks Woodster/Chevron!)
chg: support both 128/Pentagon .snas, as long as desired model is selected beforehand
fix: fixed accelerated cpu after aborting a media load and returning back to Pentagon 128 basic
fix: fixed bug that prevented creating snapshots/videos from local files supplied via argc/argv (Windows)
fix: fixed ui_print() dims when ui_monospaced==0
fix: incorrect background blend while filtering.
fix: incorrect background frame while performing a zxdb async search.
fix: fixed gamepad, missed update call (since 1.09b)
fix: using new host keyboard + gamepad case bug
Introducing.Horace.mp4
Spectral 1.10
v1.10
new: use host keyboard layout while in BASIC to ease typing (eg SHIFT+2 for quotes in addition to classic SYMB+P) (Windows/Linux/OSX)
new: rewrote audio mixer: reduced latency + no longer framerate dependant (see: mp3s, fdc sounds, rec sounds)
new: improved 48/128 game detection
new: optimized loading time between tape pauses
new: accelerated media & renderer while holding rshift key
new: added polyduck, fantasy, pcw, amber palettes. removed goblin22 palette.
new: made bootable .scl files by auto-patching them
new: experimental custom ROMs support (drag'n drop, then app restart or clear media button to wipe them out)
new: forced pause while app blurred
new: rough crt bloom in TV=2-3 modes for amber/pcw/bw/negative palettes
new: zxdb entries can swap +3 side-B disks now (MythHistoryInTheMaking)
chg: add large pauses after every tzx block $20 to ease tape seeking
chg: added a more sensitive pause block trimmer
chg: audio mixer optimizations (removed memmoves, added ringbuffer, removed dcoffset from beeper)
chg: centered app within desktop rect (Windows)
chg: changed fdc sounds and volumes (again)
chg: clean audiobuffers during zx model reset
chg: combined mic/ear volume levels
chg: detect "header" of zx/if2 roms by checking first byte (DI opcode)
chg: do not add extra large pauses at beginning of side A tapes (tzx)
chg: do not spin fdc motor audio indefinitely if any +3 game forgets to turn the motor off
chg: duplicated amount of sampling in AY=2 mode
chg: fixed turborom + bleepload (more precise range to detect romloader)
chg: improved host keypresses while in basic
chg: improved turborom compatibility (longer pilots, more precise range to detect romloader)
chg: included pilots as blank pixels in tape preview
chg: input basic detection
chg: maximized zxdb search ratio by using two passes on compound filenames (title:subtitle first, then just title)
chg: more results in tab search
chg: reduced audio latency
chg: removed abnormal initial pauses within basic headers for bad tapes like Shinobi(DroSoft) [60s] or Nautilus [29s] (tzx)
chg: selected YM2419 envelopes in AY=2 mode
chg: upgrade stb_resize2 to latest
dev: added renders_per_second metric (thanks ref!)
fix: amended PRINT IN 32765 hal bug in 128/+2 models
fix: fixed 128 regressions: BlackLamp128, HuntForRedOctober128... (do not reset cpu in HAL10H8/snow scenarios)
fix: fixed AY=2 pitch
fix: fixed bug that prevented cycling a +3/P128 model with a disk inserted
fix: fixed L/R modifier keys (Tigr)(Windows)
fix: fixed Pentagon regressions: 48irons, 1dm_pos.scl, pinball2... (HAL10H8 bugs incorrectly applied)
fix: linux/osx tigrFocused()
fix: fixed tape regressions (myla di'kaich, hysteria, thefury, roadblasters, tt racer, moonlighter, ...)
fix: queued remaining audio samples after a full saudio_push() (they were discarded before)
fix: recently introduced issue with tape polarities while trimming unneeded tape silences (alien8, headoverheels, ...)
fix: removed _ [] X fullscreen widgets (Windows)
fix: tzx loopstart counter off by 1 (does not seem to affect titles)
brk: simplified media loading/mounting code. may break games that used to work.
lab: display a larger floating preview in 6x6 and 12x12 thumbnails modes
lab: added 10KHz lowpass filter to beeper in AY=2 mode
Spectral 1.09b
v1.09b
maintenance release
chg: made TV=2 mode crispier
chg: improved search tab by maximizing the search range
chg: improved zxdb id detection from local filenames by minimizing the search range (see: Saboteur! and Saboteur2-AvengingAngel cases)
fix: display jailbars only in paper area (broken probably since we went full border emulation, 384x304)
fix: display proper RF noise interferences (broken probably since we went full border emulation, 384x304)
fix: dont emit 6 keycode while pressing ALT keys
fix: drag 'n drop support (broken since previous release) (Linux/OSX)
fix: fixed K/L input mode (broken since some prior release)
fix: fixed shader loading code (broken since some prior release)
fix: fixed malformed urls while downloading non-escaped media urls (Windows) (see: Crusoe bonus mp3 track)
fix: preserved ZX_TITLE setting between diff sessions (Linux)
fix: preserved P128 string within titlebar after loading settings file
fix: start local file browser from previously known ZX_FOLDER location (Windows/Linux/OSX)
Spectral 1.09
v1.09
new: ultrawide ula
new: resizable app window
new: tzx block $19 (GDB) support (see: AYankeeInIraq, BookOfTheDeadPart1, GLUF(AstTurbo), WorldCupCarnival, Twister)
new: added zoom/panning into zxdb screen option
new: saved current tab being browsed (ZX_TAB)
new: saved both native and non-native local folders in settings file (ZX_FOLDER_UNIX, ZX_FOLDER_WINDOWS)
new: visualize up to x6 turboAY channels in oscilloscope view (Pentagon)
chg: add tape gap when before a LEVEL text section is found
chg: allowed .folders/ to be listed in local browser (.DS_Store, .git, .github, .svn are excluded, though)
chg: allowed to scroll dialogs only when num_lines exceed vertical app height
chg: allowed to use X1..X4 zoom modes unconditionally
chg: computed zoom/panning on overlays only when needed (maps, instructions, inlays)
chg: decoupled media mounting from .sav file (might break a few things)
chg: dim background in browser text mode to ease reading game names
chg: display messagebox when a tzx message block is found
chg: display warning when critical tzx blocks cannot be parsed
chg: do not issue a stop tape command after inserting a large artificial pause
chg: increased internal resolution of tape browser preview
chg: invert mouse wheel direction when displaying overlays (maps, instructions, inlays)
chg: kept pressed gunstick fire extra frames to ease UX when shooting
chg: relocated play/pause/rec buttons into left/right panels
chg: upgraded zxdb to version 1.0.211
fix: accurate tape seek position when restoring medias from .ini
fix: expand some more characters the visualization of long title names (zxdb)
fix: fixed a recently introduced bug where Clear Medias button was not exactly working as before
fix: fixed crash when quickloading a blank saveslot
fix: fixed warning message that was never displayed when media could not be downloaded
fix: incorrect count field in tzx block $2B
fix: polyfill binary GH action (linux) (does not work yet with lubuntu16)
fix: restored proper INT placement that was broken since a few commits ago (AticAtac, SideWize...)
fix: restored zxdb info when launching app
fix: right-click in zoom setting
fix: try to amend long title UI notifies that would require wordwrap otherwise (zxdb, ui)
wip: resume magnum lightgun work
Spectral 1.08
v1.08
special thanks to Simon Owen and Steven John for sharing their sources for this release.
thanks for the feedback and bug reports! cmal, lethargeek, @md0-code
new: digitally signed Windows binaries
new: oscilloscopes (x3 AY waveforms, x1 beeper)
new: lenslok support (Elite, ACE, Art Studio, GAC, Jewels of Darkness, Mooncresta, Price of Magik, Tomahawk, TT Racer)
new: mikro-plus support (Shadow of the Unicorn)
new: added zoom/fullscreen options
fix: applied higher priority to special +2A/+3 paging mode (fixes Corsarios2x1, paging.tap) (thanks Woodster!)
fix: dont emulate floating bus on pentagon models
fix: fixed fastload for those games that left disk motor spinning (cybernoid2,rickdangerous2,smaily)
fix: fixed ZX_FOLDER not being saved properly over different sessions (linux)
fix: incorrect titlebar after switching models within a ZXDB title
fix: removed invalid linefeeds read from user prompt dialogs (linux/osx)
fix: removed tzx version check (fixes a specific Alien8.tzx file, and probably a bunch of other .tzx files as well)
fix: some generated AY samples were incorrectly ignored during mixing time
fix: unified run-ahead/regular logic flow (fixes terracresta/cobra with run-head enabled)
fix: aligned left options vertically compared to right counterparts
fix: asan out of bounds when looking up unicode glyphs not present in font
fix: canceled finder dialog after clicking on an item list (browser)
fix: ensure alpha sorting is consistent in all desktop OSes (3rd_dir.h)
fix: ensure TIGR_1X is honored (3rd_tigr.h)
fix: exact 32/36/37 tstates per int now
fix: fixed input conflict between tape preview && bottom right clickables
fix: fixed unix dir listing not appending '/' char to dirs, which differed from windows impl (linux/osx, 3rd_dir.h)
fix: improved tape heuristic for turborom && contended memory case (fixes Plyuk after loading with turborom enabled)
fix: inverted highlight of tokens/letters toggle
fix: missing fdc variable in exported gamestates
fix: moved a few temporary files to the .Spectral/ folder
fix: reset scroll when clicking folders in a large listing (local browser)
chg: unified INT/48/128/pentagon timings logic (fixed bonanzabros.dsk, probably rotatrix too)
chg: added +3DOS rom paged-in to fastload disk heuristics
chg: added early/late timings (not exposed yet)
chg: added perf warnings to cpu intensive options (RF, Run-Ahead)
chg: added right-click to record UI (screenshot, video)
chg: added sinclair 1/2 ports to expert setting mode
chg: adjusted volume for disk motor
chg: allowed to click dialog options with RMB
chg: changed heuristics that detect fdc usage
chg: if sinclairs joysticks are not mapped, emulate cursor keys while in basic always
chg: made goblin22 palette brigther
chg: made va() and stb_sprintf() calls asan friendly, hopefully
chg: removed redundant turbosound AY port in .sav files (saved 2 bytes)
chg: support embedded zxdb in .rar form
chg: upgraded zxdb to 1.0.210
brk: floatspy (48k is 1TS late, 128k is 3TS late)
Spectral 1.07 (for Mom)
v1.07 (for Mom)
Thanks to @imneme! Her OMSE emulator (MIT) showed me how the clock should be controlled by the ULA, not the CPU!
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







