github CopperlineHQ/Copperline v1.0.0-rc.1
Copperline 1.0.0-rc.1: the first release candidate for 1.0

latest release: v1.0.0
18 days ago

This is the first release candidate for Copperline 1.0. If testing does not turn up problems that need a second candidate, the next release will be 1.0.0.

This cycle brings three- and four-player netplay on the desktop, debugger watchpoints on device registers with a timed trace of CD32 drive commands, a refreshed AROS ROM, and a review of the whole manual against the program, which also found and fixed a few mismatches in the program itself.

Please try your usual games, demos and configurations with it. Anything that worked in 0.21.0 and does not work here is exactly what a release candidate is for: open an issue with the configuration and the software involved.

Before upgrading

  • Netplay peers must all run 1.0.0-rc.1. The wire protocol moved to version 3 to carry up to four players, so a 0.21.0 peer cannot join.
  • Recreate RetroArch save states after updating the core. The core's states carry a build fingerprint that includes the release version. Desktop .clstate files from 0.20.0 and 0.21.0 still load; states from 0.19 and earlier do not.
  • High-density floppy images are refused. Copperline's drives are double-density units. A 22-sector UAE extended ADF used to be squeezed into one double-density revolution and crash the guest; it is now refused when inserted, with a message saying why. The RetroArch core accepts only 880 KiB ADFs.
  • Some command-line combinations are now errors instead of being silently ignored: --control with --expect-screenshot; --insert-cd-after with --benchmark-until, --gdb or --control; --exit-on-return with --gdb or --control; and --pen-after under netplay.
  • --run PROG --exit-on-return on its own now runs without a window, unthrottled, as the documentation already described. Add --control-gui or --gdb-gui to keep a window.

Three and four players over netplay

Desktop netplay now seats two to four players. Players three and four use the parallel-port four-player adapter, just as they would sitting at one Amiga: two switch joysticks, no mouse and no CD32 buttons.

Player 1 hosts and everyone else connects to the host, which passes each player's input on to the others. Only the host needs to be reachable, and all players must be connected before the game starts. This works over direct IP and over the encrypted Internet connection, and spectators can still watch.

  • Launcher: the host sets Players, and Local player offers ports 3 and 4.
  • Command line: the host passes --netplay-players 3 or 4 and may repeat --netplay-peer once per guest, or leave it out to admit anyone with the session code.
  • The host's machine needs the adapter fitted with a joystick in each socket in use. A printer or sampler on the parallel port is still refused.

Browser games stay two-player, since a web page has no parallel port. See the netplay guide.

Watch device registers and trace the CD32 drive

The existing watchpoints compare memory before and after each instruction, which cannot work for a device register: reading one has side effects, such as popping a byte from Akiko's command port or clearing a CIA interrupt flag. MMIO watches are taken at the CPU's own bus access instead. Every data access to the watched range is recorded with its address, size, value, direction, PC, frame, beam position and colour clock. They work on Akiko, the CIAs, Gayle, Zorro boards, custom registers and RAM.

A new CD command trace records each packet the CD32 sends its drive: the decoded command, sector range, speed, reply and outcome, with emulated timestamps for when the host issued it and when the drive parsed, executed, answered, delivered its first sector and finished. It is a host-side record and never feeds back into the emulation.

Both are available everywhere the debugger is:

  • Debugger window: MMIO on the Break tab, and a new CD tab listing commands newest first.
  • Console: MWATCH (or MW) and CDTRACE.
  • Headless: COPPERLINE_DBG_MMIO=ADDR[:LEN[:CLASS]] and COPPERLINE_DBG_CD=1.
  • Control protocol and MCP: break.add {"kind": "mmio", ...}, a non-stopping mmio event stream, cd.trace and event.cd.

An armed MMIO watch switches the CPU to its precise loop and disables run-ahead, like the other debugger hooks. See the debugger window guide.

Bundled AROS ROM refresh

The bundled AROS ROM is rebuilt from upstream master f1ec64f45a with no local patches. Every part of the AROS pull request the previous refresh carried is now merged upstream. Changes that reach the ROM include:

  • Hires screens are no longer sheared by four bytes per line. AROS programmed DDFSTOP one fetch unit past the hardware stop at $D8.
  • Interrupt handlers restore INTENA's master bit, so a program that enables interrupts itself under Disable() no longer freezes at the first vertical blank.
  • DOS packets and loaded program hunks come from the top of free memory, keeping the low block contiguous for older software.
  • Screen user Copper lists, CD32 cd.device playback and reads, Kickstart-compatible OpenLibrary version handling, afs-handler read-ahead, ATAPI handling, and Shell and console fixes.

The ROM banks have more room: the extension bank had 682 bytes spare and now has about 15.5 KiB. Free memory at boot is 800 bytes lower than with the previous ROM.

The new memory placement exposed two Copperline bugs, both fixed: --coverage could count the next command's instructions as the program's, and the VS Code profiler command sometimes captured no frames.

Documentation checked against the program

Every chapter of the manual, all 238 custom-register pages and copperline.example.toml were checked against the source. Wrong defaults, labels, offsets and paths are corrected, and flags, configuration keys, control-protocol methods, console commands, launcher pages and environment variables that had never been documented now are. The manual also gains a table of built-in boards, the WASM socket ABI, a Cargo features table and the test-asset workflow. Linux instructions now say plainly that Copperline is not on Flathub: the AppImage is the download, and the Flatpak is something you build yourself.

The review also found places where the program disagreed with the hardware or with itself:

  • The debugger decoded ADKCON bit names one bit too high (WORDSYNC is bit 10), showed KILLEHB on bit 10 (that is ZDCTEN; KILLEHB is bit 9), and always hid bit 1 of DDFSTRT and DDFSTOP. The DDF decode now follows the fitted Agnus revision, using the same mask as the fetch sequencer.
  • --help lost duplicate MT-32 entries and has corrected screenshot, .zip, gamepad-mouse and lide entries.
  • The shortcuts panel no longer overflows and lists the filter, gain and sensitivity keys it was missing. The audio filter message now says On or Off, as the menu does.
  • The control protocol's MCP tool descriptions and schemas now match their handlers.

Other changes

  • Detaching a serial port could briefly show the guest a port asserting DSR, CTS and CD. The lines are now released before the port is marked detached.
  • The launcher's Create Floppy page still makes high-density images for other emulators and real Amigas, and now warns that Copperline's own drives will refuse them.
  • Dependency updates: toml, toml_edit, ringbuf, wasmtime 36.0.15, ureq and wat.

Thanks to the patrons whose support pays for the hardware used to check the emulation, to everyone who has reported problems and tested fixes, and to everyone who has contributed code on the way to 1.0 (listed in CREDITS.md).

Downloads

  • macOS: universal DMG for Apple Silicon and Intel. It is ad-hoc signed, not notarized; see the included first-launch instructions.
  • Windows: portable ZIPs for x64 and ARM64.
  • Linux: x86-64 AppImage, command-line tools archive and a separate bridged-network helper archive.
  • RetroArch: core ZIPs for Linux x86-64, macOS Apple Silicon and Windows x86-64. Install them manually using the libretro guide.
  • Manual and checksums: the PDF manual and Copperline-1.0.0-rc.1-SHA256SUMS.txt are attached below.
  • Browser: try Copperline without installing it.

Homebrew users can run brew update followed by brew upgrade copperline. For a new installation:

brew tap copperlinehq/copperline https://github.com/CopperlineHQ/Copperline
brew install copperline

Source builds require Rust 1.95 or newer: cargo build --release --locked.
The open AROS boot ROM is included; supply your own commercial game media and any required Kickstart ROMs.

Full changelog: v0.21.0...v1.0.0-rc.1

Don't miss a new Copperline release

NewReleases is sending notifications on new releases.