Repository navigation
Copperline 0.20.0: Netplay, a new debugging workspace, and RetroArch
Copperline 0.20.0 adds two-player Netplay, a rebuilt debugging workspace, and a libretro core for RetroArch. There are also new ways to save and share a session, more hardware to connect, and a substantial change to how save states survive future releases.
Before upgrading
- Recreate save states from 0.19 and earlier. The old flat state format has been replaced with individually versioned subsystem chunks. This is a one-time break at this release; the new format can tolerate many future field changes and migrate individual chunks. It does not promise that every future state will load in every build. Disk images and ordinary in-game saves are unaffected.
- Netplay needs matching builds. Desktop connects to desktop; browser connects to browser. Those two transports cannot connect to each other, and RetroArch uses its own netplay system. Mixed operating systems and browser engines have not yet been qualified. Native Netplay currently supports two players; the new four-player adapter is a separate local input feature.
- Clipboard sharing is enabled in normal desktop sessions, and it changes the machine. It can stop some software from running. Text can move between the host and the Amiga through
clipboard.device, but the bridge is a unit of the Copperline services board, so switching it on puts an autoconfig board on the Zorro chain that your configured Amiga does not otherwise have. Kickstart binds that board at boot, and every memory allocation after it lands somewhere else. Most software cannot tell. Some can: Lotus Esprit Turbo Challenge loads and then sits on a black screen with no music, because in the shifted layout the Copper reads a list the game has not written yet and finds a word that decodes as a write toINTENA, which switches off the interrupt the game is waiting for. If a game or demo hangs or misbehaves under 0.20.0 but worked in 0.19, turn clipboard sharing off and cold-boot: Input Settings → Share Clipboard,[clipboard] share = false, or--no-clipboard. It is already off in headless and Netplay sessions, and #683 makes it off in every session unless you ask for it. - Paula's output and the bundled AROS ROM have changed. Audio now uses a band-limited mixer. The refreshed AROS ROM uses less guest memory and includes the upstream fix for the process-stack minimum. Deterministic captures made with an older build may differ.
Play together
Desktop Netplay offers Internet invitations with encrypted connections, NAT traversal and relay fallback, as well as direct UDP connections. The host transfers the machine configuration, ROMs and supported game media to the joining player, and both machines cold-boot together. The host can change floppy disks during play: both peers pause, verify the replacement and resume at the same emulated frame. IPF protection-track timing is preserved during transfer. Display and volume preferences stay local.
Browser Netplay has invitation links, QR sharing and automatic setup transfer. Both players run the Amiga locally; WebRTC carries setup data and input, with TURN fallback on the hosted page. DF0 and DF1 swaps and ejections are synchronized. Two-mouse games are supported on desktop and in the browser, including two-player Lemmings.
Both implementations use rollback: predict late input, restore an earlier machine snapshot when necessary, then replay to catch up. See the Netplay guide for setup and supported configurations, or watch two-player Lemmings over the Internet.
A new debugging workspace
The Amiga display, debugger, Frame Analyzer and Console now share the main window. Use the Play / Debug switch, or Cmd+B on macOS and Alt+B on Linux/Windows. Drag the divider to resize the display and inspectors; CPU registers, disassembly and memory panes also resize independently.
The inspectors use a shared GPU-rendered UI with selectable text, normal copy/paste, scrollbars and a bundled Hack font. Memory can be edited in place in either hex or ASCII. Tabs indicate which inspectors are open and which are capturing, keep their state when hidden, and can be closed individually. Following an address from the Frame Analyzer opens the corresponding memory or disassembly view. Returning to Play keeps the workspace ready for the next visit.
Stepping now advances a CPU parked in STOP to the interrupt that wakes it. The disassembler also fixes opcode collisions, instruction lengths, model-specific opcodes and absolute-word address formatting.
Copperline in RetroArch
The new libretro core supports A500, A1200 and CD32 machines; PAL and NTSC; floppy and CD playlists; WHDLoad packages; keyboard, mouse, joystick and CD32-pad input; and portable save states. AROS is embedded, so the core boots without additional ROM files.
RetroArch disk controls handle swapping. Floppy writes are kept in the frontend's save directory, and CD32 EEPROM is exposed as save RAM. The memory map supports RetroArch's memory viewer and cheat search. Two-gamepad rollback Netplay uses RetroArch's own session controls.
Download the platform's libretro ZIP below and install the core manually. It is not yet in RetroArch's Online Updater. The prebuilt cores cover Linux x86-64, macOS Apple Silicon and Windows x86-64; other targets can be built from source. See the libretro guide.
Saves, clips and automation
- Save-state thumbnails. The Load State browser shows the picture, machine, media and emulated time for each snapshot. The menu and Cmd/Alt+Shift+L both open it.
copperline-ctl state-inforeads that metadata without restoring the machine and can extract its thumbnail. - GIF clips. Save the last few seconds from the desktop's recording ring, or schedule a reproducible clip with
--gif-afterand--gif-seconds. - Typed input and screenshot checks.
--type-aftertypes text into the guest.--expect-screenshotcompares a scheduled frame against a PNG, writes actual and difference images on failure, and returns a failing exit status. - Guest return codes and coverage.
--run --exit-on-returnreturns the AmigaDOS result to the host shell.--coveragewrites lcov line and function coverage from the guest's debug information. Guest code can also end a run through uaelibExitEmu. - Find the first divergence.
copperline-ctl divergecompares two builds or configurations, narrows a mismatch to its first frame, then steps through it to locate a differing instruction, memory byte or timing result. - CLI tools in the downloads.
copperline-ctlandcopperline-import-uaenow ship in the desktop release packages alongside the emulator.
Hardware, audio and fixes
- A parallel-port four-player joystick adapter, with ports 3 and 4 available to scripted input as well as local controllers.
- Light pen and light gun input, with beam-position latching through the board's Agnus connection.
- An A600/A1200 PCMCIA slot with SRAM and CompactFlash/IDE cards, card insertion/ejection and the Gayle register interface.
- CHD hard-disk images, extending compressed-image support beyond CDs.
- Real host serial ports connected to Paula's UART.
- The SF2000 accelerator's Zorro II SD controller, contributed by Matt Harlum, with SD-over-SPI command handling and a boot-ROM interface.
- Cleaner Paula audio. Output transitions are band-limited onto the host mixer grid; mixer phase follows the emulated clock, and mix headroom follows the reconstruction kernel.
- Storage and display fixes.
copperhf.deviceDMA now keeps the CPU's data cache coherent. Intel Mac fullscreen border corruption and desktop Netplay display stalls during continuous mouse motion are fixed. Redundant blitter overlay and indexed-colour table work has been removed. - Updated CPU and boot ROM. m68k 0.13.0 and AROS master
311afcc057plus the memory-footprint reduction from AROS PR 1179. The former local 8 KiB process-stack patch is now upstream.
Thanks to Matt Harlum (@LIV2) for the SF2000 SD controller, Simon Dick (@sidick) for the copperhf cache-coherency fix, and Volker Schwaberow (@vschwaberow) for the disassembler corrections. Thanks also to everyone testing Copperline and supporting its development.
Downloads
- macOS: the universal DMG supports Apple Silicon and Intel. It is ad-hoc signed, not notarized; see its README for first-launch instructions. Homebrew users can run
brew update && brew upgrade copperline. - Linux: the x86-64 AppImage, a tools archive containing
copperline-ctlandcopperline-import-uae, and a separate network-helper archive for bridged networking. - Windows: portable ZIPs for x64 and ARM64.
- RetroArch: the three libretro ZIPs described above.
- Manual: the PDF below, or the online documentation.
- Checksums:
Copperline-0.20.0-SHA256SUMS.txtcovers all ten release downloads. - Browser: copperline.dev/try, with no installation.
For a fresh Homebrew installation:
brew tap copperlinehq/copperline https://github.com/CopperlineHQ/Copperline
brew install copperlineBuilding from source requires Rust 1.95 or newer:
cargo build --release --locked
./target/release/copperlineCopperline includes the open AROS boot ROM. Supply your own commercial game media and any required Kickstart ROMs; they are not included.