Copperline 0.3.0 brings threaded rendering on by default, a round of host-CPU optimisations, and several hardware-accuracy fixes (AGA dual playfield, floating bus, ECS DIWHIGH). It also adds a portable Windows build.
Required config changes
Existing configs keep working, but two keys have changed and you should update yours:
-
[machine] modelis now[machine] profile. Rename the key:[machine] profile = "A1200" # was: model = "A1200"
The old
modelkey is still accepted as a deprecated alias, but it can be confused with[cpu] model(and triggers a "duplicate key model" parse error if the[machine]header is commented out while its value line is not). -
[emulation] speedis gone. "real" was the only timing model, so the key carried no information. It is still accepted and ignored (with a warning), but you can delete it.[emulation] # speed = "real" # remove this line; it is now ignored
Highlights
- Threaded rendering by default. The framebuffer paint runs on its own thread, fed by an owned
RenderInputbundle, while the deterministic core keeps cycle-stepping. The emulated result is unchanged and still byte-identical. - Host-CPU optimisations. Idle floppy/keyboard device ticks are skipped, timed-device ticks are deferred to observation/instruction boundaries, the bitplane fetch pattern is memoised into a per-plan slot bitmask, background fill is chunked, and collision/Paula hot paths were tightened. Live playfield collision is now memoised.
- Portable Windows build. A portable Windows x64 zip is now produced by CI and attached to releases.
Hardware accuracy fixes
- AGA dual playfield decoded as four bits per field. Lisa adds plane 7 to playfield 1 and plane 8 to playfield 2; the previous 3-bit decode collapsed colours (e.g. Zool's black body rendered orange).
- Floating bus. Unmapped CPU reads now float to the chip data bus instead of returning a fixed value.
- ECS DIWHIGH revert. A DIWSTRT/DIWSTOP write now reverts DIWHIGH to its OCS-implicit value in the renderer, matching ECS Agnus behaviour.
- 256 KiB Kickstart ROMs are accepted and mirrored across the full ROM window.
- CD32 runtime CD inserts notify
cd.devicevia a tray delay so games detect the new disc.
Other improvements
- Deterministic benchmark mode added for performance work.
- gilrs gamepad mapping warnings are quieted, and use of saved controller calibration is logged.
Documentation
- Documented the AGA dual-playfield decode, benchmark mode, and device-tick batching.
- Documented the floating-bus model, RTC determinism, and the ECS DIWHIGH revert.
Installation
macOS (Homebrew):
brew tap LinuxJedi/copperline https://github.com/LinuxJedi/Copperline
brew install copperlineLinux (AppImage): download Copperline-0.3.0-x86_64.AppImage below, then:
chmod +x Copperline-0.3.0-*.AppImage
./Copperline-0.3.0-*.AppImageWindows: download and extract the portable Copperline-0.3.0-win-x64.zip below.
From source:
cargo build --release
./target/release/copperlineThe bundled AROS boot ROM lets Copperline run out of the box. A real Kickstart ROM and disk or hard-disk images are still required to run commercial Amiga software; these are not included.
Full changelog: v0.2.0...v0.3.0