Copperline 0.21.0 adds spectators to Netplay, connects four local controllers on desktop and in RetroArch, and reduces the work needed to put each frame on screen. It also fixes file-picker crashes and changes two defaults that could upset otherwise working games.
Before upgrading
- Clipboard sharing is now off by default. It fits an extra autoconfig board, which changes the Amiga's memory layout. That caused a hang in Lotus Esprit Turbo Challenge under 0.20. Enable it explicitly with
--clipboardor[clipboard] share = truewhen you want it. An existing configuration that explicitly enables sharing keeps doing so. - The CD32 FMV cartridge is now optional. A stock CD32 starts with an empty cartridge slot. To use the bundled open FMV ROM, select Fit in the launcher's FMV row or set top-level
fmv = true. A namedfmv_romstill fits that ROM. Configurations that relied on the old implicit default need this setting for FMV playback; ordinary CD32 games no longer inherit the cartridge's changes to memory layout and boot timing. - Use matching builds for Netplay, including spectators. Desktop connects to desktop; browser connects to browser. There are still two active players. RetroArch uses its own Netplay system.
- Recreate RetroArch save states after updating the core. The libretro payload now checks a fingerprint that includes the release version and rejects mismatched builds. Desktop states retain the chunked format introduced in 0.20; states from 0.19 and earlier still cannot load. Disk images and saves made inside games are unaffected.
Invite people to watch
Netplay hosts can admit up to eight spectators. They can join before the game begins or while it is running, receive the host's setup and media, and replay the confirmed input history to catch up. Watching runs a local emulated Amiga, so there is no video stream to encode. A long-running game takes longer to catch up with.
- Desktop: choose the spectator count in the host's Netplay settings. Internet hosts generate a separate spectator invitation; watchers choose Watch and paste that code. Direct IP spectators connect to the host's existing UDP port with the session code.
- Browser: Host game provides a separate spectator link with copy, share and QR controls. Open that link and choose Watch game. The host can continue using the local machine while waiting for player 2; the shared game cold-boots when that player connects.
- Spectators follow the players a few frames behind, verify checkpoints, and receive synchronized floppy changes. They cannot send input or change disks. A spectator leaving or losing the connection does not stop the players.
See the Netplay guide for setup, supported configurations and limits. Mixed operating systems and browser engines still need qualification.
Four local controllers
The desktop now reads four independent gamepads through the two Amiga game ports and the parallel-port joystick adapter. Select Multitap (4 joysticks) in the launcher, set both native ports to Joystick, and use gamepad input mode. The cursor-key and numeric-keypad mappings can fill spare player slots. Unplugging a controller releases its input without moving the other players between ports.
The libretro core now exposes the adapter as controller ports 3 and 4. In RetroArch's Quick Menu → Controls, select Parallel-port joystick (multitap) for those ports. The adapter sockets start disconnected. This adds local four-player control for games such as Super Skidmarks; it does not expand Copperline's built-in Netplay beyond two players.
RetroArch's save-state buffers are also sized to the loaded machine instead of reserving 64 MiB for every session. Typical one-floppy A500 and A1200 sessions reserve about 14 MiB and 18 MiB respectively, reducing rollback memory use and checksum work. Larger configurations and WHDLoad volumes need more space.
Display and desktop fixes
- Less presentation overhead. Repeated TV-aperture calculations and row copies have been removed, eligible pictures use a GPU drawing path, and a worker handles texture upload and presentation. Core changes avoid redundant DMA decoding and Copper WAIT checks while preserving the emulated timeline.
- A VSync switch. Video Settings → VSync changes presentation live and is saved as
[display] vsync. It defaults on. Turning it off can reduce latency where supported, at the cost of possible tearing; PAL output still has an uneven cadence on a mismatched display refresh rate. - An optional lower-resolution backing texture.
[display] hidpi_texture = falsereduces texture and copy work on high-density displays. Integer scaling keeps its appearance; smooth scaling can show differences in fine interlaced detail. Screenshots and recordings are unaffected. - Wayland presentation scheduling now accounts for pending frames and presentation feedback, with additional Linux smoke coverage.
- Windows renderer selection tries accelerated OpenGL when automatic selection finds a CPU renderer. Explicit
WGPU_BACKENDandWGPU_ADAPTER_NAMEchoices are respected. - Native file pickers: Windows dialogs keep the window responsive, and macOS uses sheets to avoid the event-loop crash when resizing a picker on macOS 27. Picker audio suspension and resume handling are consistent across the launcher and runtime menus.
- Clean shutdown on macOS: closing the window or quitting no longer deadlocks while the presentation worker releases the window.
- Windows Explorer launches no longer open an unwanted console; command-line use retains terminal output. The executable also gains its application icon and version resources.
- Menu improvements: PCMCIA gets a dedicated submenu, Emulation and Cartridge settings move to more useful positions, and Netplay's enable control uses the same stepper style as neighbouring settings.
Other changes
- New Kickstart 1.3 regression coverage for
copperhf.deviceverifies FFS partitions with a period-compatible FastFileSystem. The reported crash came from using a newer filesystem binary that requires libraries absent from 1.3. The documentation now explains the mismatch and records the board's product ID. - Dependency updates include the rustls fix for RUSTSEC-2026-0285. The existing egui/pixels/wgpu renderer versions remain together.
- Parallel directory-image tests now allocate unique temporary directories, avoiding collisions between tests.
Thanks to Lee Hobson (@hobbo91) for the file-picker and menu work, Simon Dick (@sidick) for the copperhf investigation and documentation, and everyone reporting problems, testing builds and supporting Copperline.
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-0.21.0-SHA256SUMS.txtare 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 copperlineSource 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.