Skip to content

Copperline 0.14.0

Latest

Choose a tag to compare

@LinuxJedi LinuxJedi released this 01 Aug 08:06

Copperline 0.14.0 is the release where the emulator reaches out of the host machine. It drives real 3.5" floppy drives through DrawBridge, Greaseweazle and SupercardPro controllers, so the machine in the window reads the disks on your desk; it attaches the guest's Ethernet card straight to a host network adapter, so the Amiga sits on the real LAN; and it brings RTG to the 24-bit machines with the Zorro II Picasso II and Picasso II+, so an A2000-class machine gets high-colour Workbench too. Around the machine, the window learns to look like the monitor it deserves -- CRT shaders, screen tints and a 1084-style front bezel -- and picks up rewind, quick-save slots, autofire and input remapping. Underneath, an experimental JIT CPU mode runs accelerator-class speeds, and a WinUAE-inspired debugging suite lands: a chipset-misuse validator, a self-modifying-code detector, per-DMA-channel watchpoints and a memory heat map. 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.13.0 do not load in 0.14.0. The serialized machine shape changed several times this cycle, so the state format version moves from 40 to 44. Re-create snapshots after upgrading.

No config file changes are required -- no TOML key or CLI flag was removed or renamed, the new keys are all additive, and no existing default changed. Two behavioral notes:

  • The bundled AROS boot ROM was refreshed (three times: an NTSC boot fix, an input-event buffering fix, and a final sync to upstream), so machines booting the bundled ROM behave slightly differently out of the box -- NTSC configurations now boot without the previous warning.
  • A machine with a bridged (real) floppy drive is paced to wall-clock time -- a real mechanism cannot warp -- so headless runs against a bridge are no longer unthrottled. Image-backed machines are unaffected.

Highlights

  • Real floppy drives. Any drive bay can host a real 3.5" mechanism through Rob Smith's FloppyBridge, which is built into Copperline by cargo -- nothing to install. [floppy.df1] bridge = "greaseweazle" (or "drawbridge", "supercardpro") puts the physical drive on the emulated bus: the guest reads, writes and steps the real disk, drive mechanics stay real-time, and the port auto-detects (bridge_port, bridge_cable and bridge_density override). A per-bay launcher page configures it, and bridge serving speeds were subsequently tuned so loading from a real drive is as quick as the mechanism allows. Contributed by Lee Hobson.
  • Picasso II and Picasso II+ RTG. The Village Tronic Picasso II (CL-GD5426) and Picasso II+ (CL-GD5428) are emulated as Zorro II autoconfig boards driven by the unmodified Picasso96 PicassoII.card driver. Because they are Zorro II cards they work with 24-bit CPUs, so RTG Workbench is no longer reserved for the big boxes -- a stock-CPU machine with Zorro slots gets high-colour screens too. [rtg] card = "picasso2plus" selects one, vram = "1M"|"2M" sizes it, and the Z3660 remains the default Zorro III card on 32-bit-bus machines.
  • Bridged Ethernet. The A2065 gains [a2065] net = "bridge", which attaches the guest's complete Ethernet frames directly to a named host adapter (interface = "en0"; list candidates with --list-net-interfaces). The Amiga becomes a first-class citizen of the LAN -- DHCP from your router, static addressing, local servers -- on Linux, macOS and Windows, with Wi-Fi supported best-effort. The user-mode NAT backend from 0.13.0 remains the zero-setup default.
  • Experimental JIT CPU mode. [cpu] jit = true switches a 68020 or later to the m68k core's batch/trace-JIT path: the machine behaves like an ideal accelerator at clock_mhz, one instruction per CPU clock with zero-wait fast RAM -- a 50 MHz 68040 runs on the order of 50 MIPS, and the launcher's clock presets now reach 100 and 200 MHz. The on-chip cache models stay active and chip/slow RAM keep their shared-bus arbitration, as on a real accelerator; cycle-counted chip-level effects no longer line up, which is why it is off by default.
  • Rewind and quick-save slots. [emulation] rewind (or the Rewind menu item) records the whole machine at an interval into a bounded memory budget, and Cmd+Z / Alt+Z steps it back -- a 512K A500 buys minutes of history. Ten numbered quick-save slots sit alongside: Cmd/Alt+<digit> saves, Cmd/Alt+Shift+<digit> loads, no dialog, no file to name.
  • The window becomes a monitor. A GPU shader pass over the display offers three built-in CRT presets -- scanlines, mask and crt -- or loads your own WGSL file, mixed in by shader_strength. [display] bezel (toggle live with Cmd+M / Alt+M) frames the picture in a 1084-style monitor front, with a Copperline badge and a power LED that follows the guest's /LED line and burns brighter while the audio filter is engaged; a HDD LED lights on host-folder filesystem access. [display] tint filters the screen through black-and-white, green or amber monochrome phosphor, or sepia. All of it is window-only: screenshots, frame dumps and headless captures are never shader-processed, tinted or framed.
  • Input quality-of-life. Autofire pulses a held fire button at 3-30 Hz on emulated time (scripted input is never gated, so replays stay exact). The new Input Mapping window edits the keyboard-joystick and shortcut maps with one-meaning-per-key validation. Host mouse sensitivity is adjustable from quarter to quadruple speed, and a mouse-capture policy chooses between click-to-grab, grab-on-focus and manual-only (Cmd+G / Alt+G), fixing three capture defects along the way.
  • A debugging suite. The headless debugger and debugger GUI gain a WinUAE-inspired set: a custom-register access validator that reports chipset misuse with the PC that caused it ([debug] validate_chipset) backed by a last-writer table, a self-modifying-code detector (detect_smc), bus-error injection, per-DMA-channel and PC-qualified watchpoints, blitter/floppy/keyboard hardware-misuse checks, and a memory heat map tab in the Frame Analyzer showing where the frame's traffic lands. The console dumps ExecBase scheduler state and struct Task. Scripting gains absolute pointer positioning -- --mouse-to-after SECS X Y steers the pointer to a screen pixel via a sprite-0 servo -- and the control protocol adds capture.region_digest, a run-until-stable-frame target, watch qualifiers in break.list, and scheduled input that survives session reconnects.
  • Host volumes under Kickstart 1.3. Host-directory (hostfs) volumes now mount under Kickstart 1.3, so a plain 1.3 machine can read and write a folder on the host. Contributed by Simon Dick.
  • Browser build. The web build gains PAL/NTSC machine selection with overscan and tint display controls, remembers the Kickstart across visits, names its save states alongside the quick slot, and holds a screen wake lock so a long game does not dim the phone. The hosted copperline.dev/try page installs as a PWA and boots offline.
  • Performance. A four-part optimisation pass over the render and chipset hot paths -- DDF arbitration, planar row conversion, caching of stable display and DMA line work, and idle/repeated-frame presentation -- cuts host CPU cost across the board, and an idle launcher no longer spins a busy redraw loop.

Hardware accuracy fixes

  • HAM select timing. A mid-line write that flips HAM lands in Denise's colour-selection phase, not the bitplane phase, matching measured hardware -- fixes stale colours in HAM demos that switch mid-screen.
  • Manual bitplane writes. CPU/Copper-written BPLxDAT batches snap to the serialiser's word-load grid, fixing displays that hand-feed the serialiser (the Hamazing Hexagon left edge).
  • 68020 pipeline. The 020 charges its pipeline refill on taken branches per the datasheet tables, with the DBcc refill folded into its table entry (Cubic Dream's 020 timing).
  • Sprite DMA. A DMA sprite line disarmed by a CTL write before its HSTART is cancelled, as on real Denise (the Hybris status panel).
  • 68000 split writes. A 68000's word write split across the services board's MMIO doorbell fires the doorbell correctly (Simon Dick).
  • Z3660 blitter. Planar blits honour their minterm, and P2D NOTSRC looks up the complemented pen (Bernie Innocenti).
  • Presentation. Geometry latches across border-only frames (no more one-frame jumps when a loader blanks the screen), and the live TV view centres on the captured aperture; the NTSC TV-aperture crop extends to standard 60 Hz scans.

Desktop, tooling and platform

  • Launcher. CD folds into a Storage tab with footer sub-page navigation, hard disks gain a Boot Priority sub-page, unavailable settings dim in place instead of vanishing, and a pass of cosmetic tidy-ups lands across the tabs. In the config, a hard drive can be a table -- unit0 = { path = "wb.hdf", bootpri = 6 } -- to set boot priority and directory-mount volume names.
  • Audio filter override. [audio] audio_filter = "auto"|"on"|"off" (and Cmd+A / Alt+A) forces Paula's low-pass filter regardless of the guest, with the power LED reflecting it as on the real machine (Lee Hobson).
  • Window state. Fullscreen and status-bar visibility persist in the config, manual resizes survive status-bar toggles, tool windows resize correctly, Wayland resizes apply synchronously (Bernie Innocenti), and cursor hits map correctly under fractional display scaling.
  • The 68k core is now the published m68k crate. The vendored fork moved to crates.io as m68k 0.3, so Copperline builds against the published package (Ben Letchford). The Flatpak moves to Freedesktop SDK 25.08 (Ben Letchford).
  • Bundled AROS ROM refreshed to upstream, picking up the NTSC boot fix and an input-event buffering fix.
  • CI. Functional boot smokes now run on Linux, macOS and Windows -- including the released artifacts -- A2065 networking is exercised in CI, and the Windows checks fan out from a shared build.

External contributions

  • Lee Hobson (@hobbo91) contributed real floppy drive support through FloppyBridge -- the headline feature of the cycle -- plus the faster bridge serving speeds and a round of bridge-mode fixes, the Paula audio-filter override with the power LED rework, adjustable mouse sensitivity, persisted window state, the status-bar resize fixes, and a series of launcher improvements: the Storage tab, the Boot Priority sub-page, dimmed unavailable settings and cosmetic tidy-ups.
  • Bernie Innocenti (@codewiz) fixed the Z3660's planar-blit minterms and P2D NOTSRC lookup, made Wayland window resizes apply synchronously, improved the console's task-state reporting, and let the OS helpers follow exec structures into A3000/A4000 motherboard RAM.
  • Simon Dick (@sidick) made hostfs volumes mount under Kickstart 1.3 and fixed MMIO doorbells for the 68000's split word writes.
  • Nicolas Ramz (@warpdesign) lit the HDD LED on host-folder filesystem access and redesigned the reset button glyph.
  • Ben Letchford (@benletchford) moved the 68k core to the published crates.io m68k 0.3 crate and updated the Flatpak to Freedesktop SDK 25.08.

Installation

Browser (no install): copperline.dev/try

macOS (Homebrew):

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

macOS (DMG): download Copperline-0.14.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.14.0-x86_64.AppImage below, then:

chmod +x Copperline-0.14.0-*.AppImage
./Copperline-0.14.0-*.AppImage

Windows: download and extract the portable Copperline-0.14.0-win-x64.zip below.

From source:

cargo build --release
./target/release/copperline

The bundled AROS boot ROM lets Copperline run out of the box. A real Kickstart ROM and disk, hard-disk, or CD images are still required to run commercial Amiga software; these are not included.

Full changelog: v0.13.0...v0.14.0