Releases: abalore/Cadence-releases
Cadence 2.0
Cadence 2.0
A major release centered on audio latency and Windows correctness.
Audio
- ~15 ms audio latency (down from ~60 ms): the PSG now streams every sample straight into the audio ring, and the emulator paces in 5 ms slices.
- The Audio → Latency setting now also scales the pacing cushion (Low ~15 ms / Normal ~26 ms / Safe ~52 ms). If you hear clicks on a busy system, step it up one notch.
Windows
- Fixed: disc "Read fail" errors present in every Windows release to date (32-bit overflow corrupted sector timing on half of every track).
- Fixed: emulation running below real speed with a constant low-frequency buzz over sound (systematic sleep overshoot was being forgiven instead of repaid).
- Audio now opens WASAPI (modern Windows audio path) instead of the legacy default.
- Fixed a 32-bit timer wrap that would have disturbed sessions longer than ~36 minutes.
Diagnostics
- About now shows the OpenGL renderer and the real audio path (host API, device, latency, underrun counters) — invaluable for remote reports.
All three platforms (Linux AppImage, Windows x64, macOS arm64) attached below.
Cadence 1.9
Cadence 1.9 — the sound release
16-bit audio, measured to the silicon
The whole audio pipeline is now 16-bit end to end, built on the AY's
measured volume curve at full precision — all 16 volume levels are
audibly distinct for the first time (8-bit collapsed the quietest
ones). Envelopes and fades breathe like the real chip.
Stereo, three ways (Audio → Output)
The CPC's line-out wiring — channel A left, C right, B centre — with a
mode for every listener, switchable live:
- Mono — the classic internal-speaker mix.
- Stereo (default) — ABC panning with 25% crosstalk: what the air
blends between two real speakers. Best on headphones. - Stereo (hard) — the raw line wiring, cleanest on open speakers.
An AY-3-8912 to the letter
Register readback masks the chip's unimplemented bits (the AY/YM
detection signature), and R15 — the unbonded port B — behaves exactly
as measured on a real CPC: floats high as input, reads its latch as
output.
Faster
A redesigned screen reconstruction write path drops overall CPU usage
from ~25% to ~21%, and the audio rework shaves another point. Same
cycle-exact behaviour throughout — every conformance suite passes
unchanged.
Interface
- Pause (F8): freeze the machine cleanly, no debugger involved —
plus physical PAUSE/RESET buttons on the status bar, with PAUSE
glowing amber while paused. - Hover any media slot for its full file path (and tooltips are
finally readable app-wide — they'd been white-on-white forever). - The Quick start guide now greets you on first run.
- The window fits the emulator picture to the pixel.
Binaries for Linux (AppImage), macOS (.dmg) and Windows are attached below.
Cadence 1.8
Cadence 1.8 — the hardware status bar
A real machine at the bottom of the window
The status bar is now a hand-drawn hardware fascia:
- Two 3" disc drives — bay fronts that show the inserted disc with its name on the sleeve, a per-drive activity LED in its real bezel position (each lights only when its drive seeks or transfers), and the bay's eject button: one click ejects, one click inserts.
- Cartridge slot — empty edge-connector or inserted cartridge with its label; the whole slot is the insert/remove button.
- Tape deck — amber monochrome LCD showing the tape name, a PLAY/STOP motor indicator and a real-time progress bar, plus Rewind and Insert/Remove buttons.
Drag & drop, reimagined
Drop files onto the slot itself: each one accepts its own formats (and ZIPs filtered to them), highlighting while you drag. A DSK can now be dropped explicitly on drive A or drive B.
Display
- Full screen now centers the picture (it was left-aligned, black band on the right).
- About dialog no longer stretches to fit the OpenGL driver string.
Misc
- Media names shown clean: no extension, no ZIP suffix.
- "disc" spelling unified across the UI, Amstrad style.
Binaries for Linux (AppImage), macOS (.dmg) and Windows are attached below.
Cadence 1.7
Cadence 1.7 — menu-first UI, BASIC export & speed-ups
UI overhaul: everything lives in the menus now
The modal Settings dialog is gone. All configuration is one click away in a reorganized 8-menu bar, applied live:
- Screen — Full screen, Smooth, Phosphor persistence, monitor Model (GT65 / CTM644 / CM14 / MM12) and Adjust… (V-Hold / H-Hold with live preview).
- Input — Joystick emulation and key presets, right-Shift-as-
\, and Auto-type (moved here from Tools). - Audio — Enabled / SFX / Tape toggles (greyed while audio is off) and Latency.
- Performance — 1x / 2x / 4x speeds plus an independent Unlocked toggle (F9).
- System — machine model, CRTC type, 512k RAM expansion and ROM Box. F8 is now free.
- Disabled menu entries are now visibly dimmed, check/radio indicators included.
New: Export BASIC (Development menu)
A Locomotive BASIC detokenizer: reads the program currently in the emulated CPC's memory and saves it as a text listing — full token table, all variable types and number formats, REM/DATA/RSX handling, and correct line references even after the program has RUN. Validated byte-for-byte against the interpreter's own LIST.
Faster emulation
A profiling pass over the hot paths: Z80 parity lookup table, FDC clock idle gating, Gate Array sync-signal caching, devirtualized CRTC calls and a leaner memory-write path. Same cycle-exact behaviour — all CRTC and FDC conformance suites pass unchanged.
Fixes
- Keys no longer remain pressed in the CPC when the window loses focus mid-keystroke (the classic stuck-key on Alt-Tab).
- Joystick preset "Cursors + X + Z": fire buttons swapped to the more natural arrangement.
Binaries for Linux (AppImage), macOS (.dmg) and Windows are attached below.
Cadence 1.6
Cadence 1.6 — FDC conformance, Auto-type & Windows fixes
Floppy disc (µPD765) — full FDCTEST conformance
Building on 1.5's rebuilt disc subsystem, the FDC now passes the complete FDCTEST suite: 88/88 tests, validated instruction-by-instruction against real-silicon behaviour:
- Write-side byte-paced streaming with datasheet-exact overrun, matching the read side.
- EDSK blank/unformatted tracks now follow the physical FORMAT model (correct freshly-formatted track images).
- Numerous status/result corner cases fixed along the way (EOT/CHRN result phase, MT head handling, FORMAT counters, FM mark handling…).
Auto-type
New Tools menu with an Auto-type action: paste text and Cadence types it on the emulated keyboard, as real key-matrix presses — handy for RUN", listings, or any long input.
Windows & filenames
- Fixed "ROMs not found" on Windows (ANSI fopen + drive-letter path detection).
- All media paths (disc, tape, cartridge, snapshot, ZIP) now open Unicode filenames correctly on every platform.
Misc
- Settings: consistent CRTC type naming (Type 3 / Type 4).
Binaries for Linux (AppImage), macOS (.dmg) and Windows are attached below.
Cadence 1.5
Cadence 1.5 — Hardware fidelity & disk protections
This release is the result of a full emulation-fidelity audit, subsystem by subsystem, validated against ZEXALL, real software and original protected disks.
Floppy disc (765 / DSK) — rebuilt for accuracy
The disc subsystem was rewritten from a "happy-path AMSDOS" model into a datasheet-faithful µPD765 with a real rotation model:
- Sector search by full C,H,R,N identity with wrong-cylinder / bad-cylinder status, true weak sectors, and physical track ordering (no more ID collisions).
- 300 rpm rotation model: angular sector search, real rotational latency, byte-paced transfers at 32 µs with intermittent RQM, and datasheet-exact overrun.
- Faithful command set: overrun termination, DE/DD and end-of-cylinder status, background/overlapped seeks with per-unit head position, 77-step recalibrate, motor-aware ready, index-anchored READ TRACK, and FORMAT that takes its real revolution (DISCKIT3 formats in ~30 s, as on hardware).
- Copy-protection support: gap overreads, deleted-data marks with skip semantics, the phantom second drive, and timing-based checks — original protected releases now load: Aliens, Billy 2 (gaps), Trantor (Alkatraz), Chase HQ (deleted-data), and more.
Z80
ZEXALL now passes: BIT/CPI/ADC-SBC undocumented flags, the 0xFF interrupt vector, INI/IND/OUTI/OUTD flags, exact instruction timings (INIR, LD A,I/R), the DD/FD prefix passthrough, and RETI's IFF handling.
Gate Array, PSG, PPI & tape
- Gate Array: correct mode-3 pen decoding, RMR bit-4 interrupt cancel, A14 port decode.
- PSG: measured AY volume curve and exact tone periods (odd-period detune and Nyquist aliasing gone).
- PPI/keyboard 8255 corner cases.
- Tape: CDT at 1 µs resolution (fixes intermittent loads), unknown-block hardening, correct 0x20 pause, and WAV at the exact sample rate.
Binaries for Linux (AppImage), macOS (.dmg) and Windows are attached below.
Cadence 1.4
Cadence 1.4 — Stabilization pass (Linux · macOS · Windows).
Mantenimiento amplio guiado por una auditoría del código. Sin cambios de comportamiento salvo las correcciones listadas.
Correcciones
- Z80:
ED 77vuelve a ser NOP (decodificaba mal comoLD I,A, corrompiendo I);ADC/SBC HL,ssduran 15T (no 16T); flags no documentados deADD IY,rr. - Audio: Audio enabled off ahora silencia también los SFX (mute maestro).
- Ensamblador: ahora parsea el sufijo binario
1010by los operadores&/&&(antes inalcanzables). - Cinta CDT: corregido un fall-through de bloques y el truncado de bloques de datos ≥64K.
- Ajustes: el clamp de V-Hold coincide con el rango del slider; inspector de gráficos con límites correctos.
Robustez
- Endurecido el parseo de ficheros DSK / CDT / WAV ante imágenes corruptas o maliciosas (lecturas acotadas al buffer, sin desbordes).
Interno
- Eliminado código muerto y deduplicadas varias rutas (ensamblador, ventana del ensamblador, depurador, gestión de modelo).
Descarga el binario de tu plataforma abajo.
Cadence 1.3
Cadence 1.3 — Amstrad CPC emulator (Linux · macOS · Windows).
Highlights
- Variable emulation speed — Settings → Performance now has a 1x / 2x / 4x / Unlocked slider in place of the old Unlock-speed checkbox. F9 still toggles full speed instantly.
- Monitor type selection — choose GT65 / CTM644 / CM14 / MM12 with the correct per-monitor palette and a 1-char texture x-offset for CM14/MM12 (replaces the old green-monitor toggle).
- Settings dialog rework — cleaner two-column layout, CRTC type dropdown, Snapshot submenu, F8 shortcut.
Fixes
- CRTC 3/4 (ASIC): VSYNC now starts at C0=0 when C4=R7 even without C9=0.
Download the binary for your platform below.
Cadence 1.2
Cadence 1.2 — complete, cycle-exact CRTC emulation (all 5 types)
The CRTC has been rewritten as one accurate class per chip and conformance-tested against the Amstrad CPC CRTC Compendium (ACCC) and CPC Shaker. Selectable in Settings → Hardware:
- Type 0 — HD6845S
- Type 1 — UM6845R
- Type 2 — MC6845
- Type 3 — ASIC (CPC+ / GX4000) — new
- Type 4 — pre-ASIC (low-cost CPC) — new
Highlights:
- New CRTC type 3 (ASIC) and type 4 (pre-ASIC) emulation: 3-bit register readback, &BE00 mirror, ASIC status registers (R10/R11), the 1µs ASIC HSYNC/IRQ delay, the OUT(C),r8 register-write 1µs latch, live last-line / C9 / R5-adjust behaviour, and more — verified bit-by-bit with CPC Shaker's "STATUS FIESTA".
- Cycle-exact bus timing (CRTC/Gate-Array/Z80 on the µs grid).
- Monitor V-HOLD / H-HOLD real-time sliders (Settings → Screen).
- Z80 timing fixes (RRD, ADC/SBC HL,rr, repetitive-EI interrupt deferral) — fixes CPC Shaker mode-ruptures.
- Rendering/timing fixes (HBL banner, Still Rising type detection, EDSK weak sectors), mouse hidden in full-screen, and more.
Binaries for Linux (AppImage), macOS (notarized .dmg) and Windows are attached below.
Cadence 1.1
Cadence 1.1
CRTC
- Cycle-exact bus timing: registers sampled at T3, the video word fetched at T4, and the interrupt asserted at the Gate Array's character-cycle start — accurate raster / rupture effects.
- Correct scrolling and split-screens on CRTC types 1, 3 and 4 (R9=0 mid-row ruptures).
- Type-accuracy fixes against the ACCC 1.8 compendium.
Disc
- EDSK weak-sector (copy-protection) support: multi-copy sectors are read back cyclically, so protected originals load instead of resetting.
Input / system
- Selectable joystick key-set presets (avoid OS shortcut clashes).
- Fixed a 100% CPU busy-spin on Linux (speed controller).
- Debugger / UI fixes.