2026-09-20

Copperline v0.21.0

EmuCR: Copperline  Copperline v0.21.0 is released. An Amiga emulator written in Rust, built around a vendored copy of the pure-Rust m68k CPU core, with a pixels + winit window for video and stdout for serial. It started life with the modest goal of booting DiagROM far enough to show a menu; it now boots Kickstart and runs timing-sensitive OCS and AGA software from the regression set at real speed.

Features:
Cycle-driven timing core. The chip bus is arbitrated per colour clock between refresh, display/sprite/disk/audio DMA, the Copper, the blitter, and CPU accesses; the Copper and blitter are scheduled per DMA slot with the hardware per-word bus sequences, and 68000 interrupt-recognition latency is modelled. Real-hardware reference numbers come from the cross-emulator disk in timing-test/.
OCS, ECS, and AGA, with independent Agnus/Denise revisions and machine profiles from the A500 to the A1200, plus CDTV and CD32. Boots the bundled AROS ROM out of the box, as well as Kickstart 1.3 / 2.05 / 3.1 and DiagROM v2.0, and runs the current timing-sensitive OCS and AGA regression set at real speed.
Configurable CPU (68000 / 68EC020 / 68020 / 68030 / 68040) and clock, with an optional 68881/68882 FPU (default-on for the 68040).
Peripherals: a bit-timed keyboard (6500/1 MCU), mouse, USB gamepad (via the pure-Rust gilrs, no SDL2), 4-channel Paula audio, floppy (ADF / ADZ / DMS, read-only SCP), Gayle IDE, A2091 SCSI, and CDTV/CD32 CD.
Tooling: an in-window debugger, an interactive chip-bus frame analyzer, remote GDB support, deterministic save states, input recording/replay, and headless screenshot/frame-dump capture -- the deterministic core makes every replay byte-identical.

Copperline changelog:
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 --clipboard or [clipboard] share = true when 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 named fmv_rom still 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 = false reduces 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_BACKEND and WGPU_ADAPTER_NAME choices 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.device verifies 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.

Download: Copperline v0.21.0 x64
Source: Here

0 Comments

Post a Comment