Copperline 0.17.0 is the audio release. Coppersynth puts a General MIDI sound module on the other end of the Amiga's MIDI cable -- a sixteen-part SoundFont synthesizer in the style of a Roland Sound Canvas, with an SC-55-style front panel under the display and an MT-32 translation layer in front, so a game that talks to an MT-32 plays with no ROMs and no configuration. Beside it arrive two Zorro II sound boards: a MacroSystem Toccata, the AD1848 card the stock toccata.audio AHI driver expects, and an MHI MPEG audio decoder board that lets AmigaAMP play MP3 on a plain 68000. Every one of those sources -- and Paula's four channels, the drive noises, CD-DA and the MT-32 -- now flows through one mixer that can write each of them to its own WAV, and the debugger's Audio tab grows a row per source with state, oscilloscope and mute. Elsewhere, CD32 discs cold-boot on the bundled AROS ROM with no Kickstart at all, a publisher kit builds a launcher-free player for a single game, most gamepads work out of the box and can drive the whole UI, the About page got a makeover, and RTG gains the Graffity boards. As always it is a hardware-behavior release: compatibility fixes model the underlying Amiga subsystems rather than individual titles.
Compatibility notes
Save states from 0.16.0 do not load in 0.17.0. Three new boards, the Akiko fixes and the gamepad mouse all changed the serialized machine shape, so the state format version moves from 54 to 61. Re-create snapshots after upgrading.
Gamepads no longer need calibrating first. A controller found in the bundled SDL_GameControllerDB (or identified by the platform driver) uses a fixed standard layout. A saved calibration for a pad always wins over the database, so existing setups are untouched -- but a calibration made before 0.17.0 for a pad the database also knows may have a stick reversed; Copperline logs a one-time hint, and recalibrating once fixes it.
No configuration keys were removed or renamed. Everything new this cycle is additive ([toccata], [mhi], [zz9k], the [serial] coppersynth_* keys, [audio] stem_granularity, [input] port1 = "gamepad-mouse", the Graffity [rtg] card values) and no default changed. Two new files to know about: Coppersynth keeps its battery-backed settings in coppersynth.nvram in the NVRAM folder, and the MHI board's guest library is not installed automatically -- copy guest/mhi/mhi_copperline.library into LIBS:mhi/ on the Amiga side.
Windows on ARM gets its own portable zip from this release, and the default build no longer needs a C compiler on any platform.
Highlights
- Coppersynth. A built-in General MIDI sound module: sixteen parts, GS and NRPN handling, reverb and chorus, and an SC-55mkII-style front panel with the real unit's button grammar -- part and system menus, variation banks, GS init, the demo sequences, and the power-on combinations -- whose settings survive power cycles like the real unit's battery. The GeneralUser GS bank by S. Christian Collins is embedded, so it needs no files; any
.sf2(or a.zipholding one) loads in its place. An MT-32 translation layer (auto,onoroff) turns a game's MT-32 instrument uploads and drum map into General MIDI as it plays, and its LCD shows the messages games send. Its audio is mixed beside Paula's, so MIDI music and Amiga sound effects play together. Select it with[serial] midi_out = "coppersynth",--midi-out coppersynth, the launcher's I/O Ports tab or the in-window MIDI Out menu, and switch between it and the bit-exact MT-32 without a restart. The synthesizer lives in its own crate, CopperlineHQ/Coppersynth. Contributed by Lee Hobson. - A Toccata sound board.
[toccata] enabled = truefits a register-accurate MacroSystem Toccata: the AD1848 codec's indexed registers, the board's own 1024-byte FIFO with its half-empty interrupt and little-endian word quirk, all fourteen sample rates from 5512 to 48000 Hz, 8- and 16-bit mono and stereo. The stock open-sourcetoccata.audioAHI driver runs unmodified, so AHI-aware software gets 16-bit sound with no Copperline-specific driver. Contributed by Simon Dick. - An MHI MPEG audio decoder board.
[mhi] enabled = truefits a Copperline-native Zorro II board serving the Amiga MHI API -- the hardware-decode backend players such as AmigaAMP use -- through a portedmhi_copperline.library. MP3 decodes at essentially zero guest CPU cost on a stock 68000, with working volume, pan, bass, mid and treble, and the bitstream is consumed at the decoded audio's emulated-time rate so warp and replay stay deterministic. The board's register protocol is published as a bus-agnostic contract (docs/internals/mhi.md) that any emulator could implement; the decoder is the pure-Rust Symphonia. Contributed by Simon Dick. - Audio stems. An
AudioMuxnow sits between every audio producer and the host, and--audio-stems DIR --audio-stems-mode master,source,channelwrites the mixed master, one WAV per source (paula,drivesounds,cdda,mt32,coppersynth,toccata,mhi) and one per Paula channel -- driven by emulated time, so two runs of the same scenario produce byte-identical files that can serve as regression goldens.[audio] stem_granularitysets the default list. Contributed by Simon Dick. - The debugger hears every source. The Audio tab's four Paula channel rows gain a row for each line-mixed source the machine has: CD-DA, MIDI (the MT-32 with its control-ROM version, or Coppersynth), Toccata (playback state, latched rate and format, FIFO fill) and MHI (transport, native rate, queue depth, parameter latches), each with a status line, an oscilloscope of its mixed stereo level and a developer mute.
- CD32 discs boot on the bundled AROS ROM.
copperline --factory --model CD32 --insert-cd-after 0 game.cuenow cold-boots a CD32 title with no Kickstart. On Copperline's side, Akiko's drive protocol was corrected against Kickstart's and AROS'scd.device-- TOC dump order, command execution paced in emulated time, masked interrupt-request reads, the media-status byte, and DMA that reaches every RAM bank in the low 16 MB rather than the chip-RAM slice -- and the bundled ROM picked up four upstream AROS series Copperline contributed: CD32 CD boot through CDVDFS, an appliance-quiet boot with no requesters on a pad-only machine, the Kickstart-privatelowlevel.libraryrequester-gate vectors CD32 titles call blind, and an m68k low-memory series that frees well over a megabyte of chip RAM at boot (a CD32 with a disc in the drive: 164 KiB free before, 1.48 MB after). Pinball Fantasies and Pinball Illusions cold-boot from CD to playable tables on a chip-only CD32. - A publisher kit.
tools/publish --manifest game.tomlbuilds a dedicated, launcher-free player for one game: a small binary (14.6 MB against the full build's 55) that boots straight into the title with the machine and RAM fixed at build time, no status bar, no debugger, and an in-game menu carrying only what an end user changes -- CRT shader and strength, bezel, fullscreen, controller setup, and save states if the publisher opts in. The distributable bundles the player, the game as a sidecar file, the AROS ROM pair and the license documents for macOS (an ad-hoc-signed.app), Linux and Windows; the game is never embedded in the binary, so publishing a commercial title needs no license exception. The same work gave the full build a gamepad Menu button and a Shader Strength menu row. Seedocs/guide/publishing.md. - Gamepads work out of the box. The bundled SDL_GameControllerDB identifies most pads and gives them a fixed layout -- d-pad and left stick for directions, the south face button for fire or CD32 red, east blue, west green, north yellow, Start for play/pause, shoulders and triggers for reverse and forward, Select/Back or the guide button for the menu -- with
SDL_GAMECONTROLLERCONFIGhonored for personal mappings and calibration kept as the override. An optional hold-to-quit hotkey quits after a 1.5-second hold with an on-screen countdown, andCOPPERLINE_DIAG_GAMEPAD=1logs every pad event and where its mapping came from. - Keyboard and controller navigation of the whole UI. Everything the mouse can reach in the launcher, the menu, the status bar and the overlay panels is now reachable with the arrow keys, Return and Esc, or a pad's d-pad, fire and second button -- a console-style path from the couch through every setting. A new
[input] port1 = "gamepad-mouse"device is the same quadrature mouse the Amiga already sees, moved by the gamepad as well as the host mouse, so mouse-driven software plays from a pad. Contributed by Lee Hobson. - An About page worth opening, and a launcher sweep. The About panel is rebuilt: a sliding title, contributors and sponsors arriving one by one over a three-layer copper-and-silver wave, and a machine readout that identifies the fitted ROM by checksum, bundled AROS included. The launcher's I/O Ports tab splits into Serial Port, Parallel Port, Networking and Audio pages, on/off rows become steppers, the ROM tab names the chosen Kickstart's name, version and revision, and submenus open on a hover dwell. Contributed by Lee Hobson.
- Graffity RTG boards.
[rtg] card = "graffityz2"or"graffityz3"fits Ateo Concepts' Graffity, which reuses the Picasso II+'s CL-GD5428 core under its own manufacturer ID and window layout, with 1 or 2 MB of VRAM and the stockGraffity.cardPicasso96 driver. Contributed by Simon Dick. - A ZZ9000 SDK crypto accelerator board.
[zz9k] enabled = truefits a bundled WASM plugin board register-compatible with the MNT ZZ9000's SDK v2 service platform, under the ZZ9000's own identity, so the unmodified zz9000-sdk software -- its transport library, thezz9k-*tools and the accelerated AmiSSL build -- gets host-speed SHA-2, BLAKE2s, HMAC, Poly1305, ChaCha20-Poly1305, AES-GCM, X25519 and P-256 key exchange and ECDSA/RSA verification from an emulated 68k. Pure compute, so it is deterministic, replay-safe and save-state-exact. - Smaller things. The front-panel HDD LED now lights for the lide.device-compatible Zorro IDE board (Matt Harlum); a WHDLoad library folder of unpacked games under letter shelves is walked into instead of listed as one entry per letter; and the MHI and Toccata boards each get a fit toggle on the launcher's Audio page.
Hardware accuracy fixes
- Denise's horizontal window is a flip-flop. The display window's horizontal edges are set and cleared by exact comparator matches; a DIWSTOP beyond the counter's wrap never matches, so the window stays open across lines, and a DIWSTRT match on an already-open window is a no-op. Copperline now paints the playfield a carried-open window reveals left of DIWSTRT, matching photographed A500 behavior (the clipped left edge of the Grandslam logo in the Chambers of Shaolin intro). Golden probe renders were re-blessed against vAmiga.
- Fixed raster centring. A standard PAL or NTSC frame is presented with the calibrated centring constant rather than a shift derived from the effective display-window span, so a late-opening window no longer drags the picture 89 pixels left and blanks the right border (Volker Schwaberow).
- Akiko drive protocol and DMA. The TOC dump streams track entries before the session entries, commands execute about a millisecond after the guest's write rather than inside it, CDINTREQ reads return the masked request, a present disc reports media status $83, and command, response and sector DMA resolves through the whole 24-bit address space -- the fixes behind the CD32 AROS boot above.
- CD32 pad shift register. The pad's 4021 shift register follows the Blue line only while loading, so holding Blue no longer makes a game read all seven buttons as pressed.
Desktop, tooling and platform
- Windows ARM64 joins the CI matrix and the release assets (
Copperline-0.17.0-win-arm64.zip). - No C compiler needed. The MHI decoder moved from minimp3 to the pure-Rust Symphonia, removing the last C compile from the default feature set.
- macOS CoreMIDI. One CoreMIDI client per process lifetime, fixing an intermittent
MIDIClientCreate failedthat could block MIDI until relaunch (Lee Hobson). - Gamepad calibration binds on press with hold-to-skip, so pads that report a control held at rest calibrate correctly; the Open menu and Quit steps are optional (Lee Hobson).
- A structural clean-up split the oversized window, config and floppy modules and the CLI parser into directories, with every golden render bit-identical before and after; the RTG texture path warns and skips a frame instead of panicking; diagnostic dumps are reproducible; a save-state round-trip test and a nightly WinUAE cputest 68000 conformance workflow join CI.
--gdbnow sits behind a default-ongdbCargo feature (the player kit builds without it), and the vAmigaTS harness asserts the 4:3 glass geometry.
External contributions
Copperline welcomes a new contributor this cycle: Matt Harlum (@LIV2), author of the open-source lide.device whose board arrived in 0.16.0, who lit the HDD LED for it in his first PR. Welcome aboard.
- Lee Hobson (@hobbo91) wrote the headline feature -- Coppersynth, the front panel and its own crate -- and then the keyboard and controller navigation of the entire UI with the gamepad mouse, the new About page, the launcher sweep and I/O Ports pages, and the CoreMIDI fix. Lee also topped the commit count this cycle, 89 to the maintainer's 77, a first.
- Simon Dick (@sidick) contributed the other half of the audio story: the audio mux and stem capture, the Toccata board, the MHI decoder board through four milestones, and the Graffity RTG boards.
- Volker Schwaberow (@vschwaberow) fixed the raster centring shift.
- Brazen Gameplay, building Urb-X Warriors: The Lost City with Copperline beside real AGA hardware, have announced that the game will ship in a Copperline-wrapped edition; the publisher kit, the CD32 work on the AROS ROM and the chip-RAM headroom all grew out of that.
Installation
Browser (no install): copperline.dev/try
macOS (Homebrew):
brew tap copperlinehq/copperline https://github.com/CopperlineHQ/Copperline
brew install copperlinemacOS (DMG): download Copperline-0.17.0-macos-universal.dmg below, open it, and drag Copperline.app to Applications. The app is ad-hoc signed but not notarized, so first launch may require right-clicking the app and choosing Open.
Linux (AppImage): download Copperline-0.17.0-x86_64.AppImage below, then:
chmod +x Copperline-0.17.0-*.AppImage
./Copperline-0.17.0-*.AppImageWindows: download and extract the portable Copperline-0.17.0-win-x64.zip (or Copperline-0.17.0-win-arm64.zip on ARM) below.
From source:
cargo build --release
./target/release/copperlineThe bundled AROS boot ROM lets Copperline run out of the box -- including, from this release, CD32 discs. A real Kickstart ROM and disk, hard-disk, or CD images are still required to run most commercial Amiga software; these are not included. Coppersynth needs nothing extra; the MT-32 still needs its ROMs.
Full changelog: v0.16.0...v0.17.0