Skip to content

Copperline 0.3.0

Latest

Choose a tag to compare

@LinuxJedi LinuxJedi released this 17 Jun 10:33
· 10 commits to main since this release

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] model is now [machine] profile. Rename the key:

    [machine]
    profile = "A1200"   # was: model = "A1200"

    The old model key 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] speed is 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 RenderInput bundle, 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.device via 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 copperline

Linux (AppImage): download Copperline-0.3.0-x86_64.AppImage below, then:

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

Windows: download and extract the portable Copperline-0.3.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 or hard-disk images are still required to run commercial Amiga software; these are not included.

Full changelog: v0.2.0...v0.3.0