Amiga emulation · Written in Rust

Copperline

An open-source Amiga emulator for games, demos and development.

For macOS, Linux, Windows and your browser.

OCS, ECS and AGA · A1000 through A4000 · CDTV and CD32

Copperline 0.20.0 running State of the Art beside its CPU debugger and memory inspector
The Amiga display and Debug workspace. More screenshots
// get started

Download and run

AROS, an open-source Kickstart replacement, is included. Bring your disk images; some software needs an original Kickstart ROM. Check compatibility.

Download for macOS

For Apple Silicon and Intel Macs. Open the DMG and copy Copperline.app to Applications.

The app is ad-hoc signed. If macOS blocks the first launch, use System Settings → Privacy & Security → Open Anyway.

Install with Homebrew
brew tap CopperlineHQ/copperline https://github.com/CopperlineHQ/Copperline
brew install copperline
  1. Install Copperline

    Choose the download for your system, or open the browser version.

  2. Choose your Amiga

    The launcher starts with an A500 and AROS. Choose another machine or your own Kickstart ROM, then start it. Configuration guide.

  3. Load your software

    On desktop, drag a disk image into the window or insert it from the status bar. WHDLoad archives can launch directly too.

Upgrading to 0.21? Clipboard sharing and the CD32 FMV cartridge are now opt-in. Recreate RetroArch save states after updating the core. Read the upgrade notes.

Build from source or try the development branch

Source builds require Rust 1.95 or newer and the dependencies for your platform.

git clone https://github.com/CopperlineHQ/Copperline.git
cd Copperline
cargo build --release
./target/release/copperline

With the Homebrew tap installed, brew install --HEAD copperline builds the latest development version.


// features

Play, explore and build

Amiga hardware, modelled in detail

OCS, ECS and AGA machines with 68000–68060 CPUs, expansion boards, hard disks and CD support.

Hardware and configuration

Play together online

Two-player rollback Netplay across two desktops or two browsers, with up to eight spectators watching. The host shares the setup, including ROMs and supported media.

Set up Netplay

Run it in RetroArch

A libretro core for A500, A1200 and CD32 software, with WHDLoad, playlists, save states, four local controller ports and RetroArch Netplay.

Install the core

Step backwards through a bug

Inspect registers and memory beside the Amiga display. Rewind execution to find the instruction that changed a value.

See the Debug workspace

See where each bus cycle goes

The Frame Analyzer shows when the CPU, Copper, blitter and DMA channels use chip memory.

Explore frame analysis

Automate your Amiga

Script inputs, capture frames and replay sessions for regression tests. Debug Amiga source code from VS Code.

Scripting and development

// in action

Demos and Workbench

Spaceballs’ State of the Art demo running in Copperline
State of the Art. Spaceballs’ OCS demo.
Workbench 3.1 running on an A1200 profile in Copperline
Workbench 3.1. An A1200 booting from an IDE disk.
Desire’s HAMazing demo showing a robot and toy monkey under a swinging lamp
HAMazing. Lighting effects in HAM6.
More screenshots
Copperline displaying a colourful image in AGA HAM8 mode
AGA HAM8. 262,144 colours through the AGA display pipeline.
Desire’s Inside demo showing an Amiga 500 motherboard in pixel art
Inside. Desire’s pixel-art Amiga motherboard.

// debugger

Keep the machine in view

The Debug workspace puts registers, disassembly and memory beside the Amiga display. Resize the panes, edit values and follow addresses between inspectors.

Step backwards

Reverse stepping replays earlier execution from snapshots. Find the last write to a memory address or run backwards to a breakpoint.

Reverse debugging

Switch between Play and Debug

Use Cmd+B on macOS or Alt+B on Linux and Windows. Your inspectors stay ready when you return to Play.

Workspace controls and inspectors

// frame analyzer

Understand the timing

See which chip owns each bus cycle across a video frame. Inspect a scanline, find blitter stalls, or overlay bus activity on the picture to connect timing with what appears on screen.

Copperline’s Frame Analyzer showing chip-bus ownership beside the Amiga display
Read the Frame Analyzer guide

// development

Make a bug repeatable

Schedule inputs and captures from the command line, record a session to a .clscript file, or control a running machine through JSON-RPC.

Headless capture: press Space at 4 seconds, capture at 12
copperline --factory --model A500 --insert-disk-after 0 df0 game.adf \
  --noaudio --press-after 4 SPACE --screenshot-after 12 shot.png

Repeatable results require the same configuration, media, clock seeds and inputs. Live files, networks and physical devices can affect a run. Determinism and the host boundary.


// compatibility · 0.21.0

Compatibility and limitations

Games, demos and Workbench run across OCS, ECS and AGA machines. Compatibility varies by software and configuration; hardware accuracy continues to improve.

ROMs and software
AROS is included so you can start without supplying a ROM. Some games and Workbench installations need an original Kickstart ROM. ROM and setup guide.
Netplay
Connect two desktops or two browsers using the same Copperline build, and admit up to eight spectators of the same kind. Desktop and browser peers cannot connect to each other. Mixed operating systems and browser engines still need qualification. Netplay requirements.
Experimental JIT
The optional 68020+ JIT changes CPU timing and is off by default. Leave it disabled when accurate instruction timing matters. CPU settings.
Physical floppy drives
Greaseweazle controllers are supported through FluxBridge. Physical media and devices cannot be rewound with a save state. Supported hardware and limitations.
Disk formats
Standard floppy images use the double-density Amiga format. 1.76 MB Amiga and sector-based PC/CrossDOS images are not supported. Supported image formats.
Keyboard layouts
Host keys map to Amiga keys by physical position. Input does not automatically adapt to the host’s selected keyboard layout.

Hardware behaviour is checked against CPU and chipset test suites, custom test disks and real Amigas. See the hardware documentation for details.

Found a problem? Check existing issues or report it with the version, machine configuration and steps to reproduce it. An input recording can help.


// questions

A few things to know

Do I need a Kickstart ROM?

You can boot the included AROS ROM immediately. Some software needs an original Kickstart ROM; select one in the launcher if you have it. Read the setup guide.

How does Copperline compare with other Amiga emulators?

WinUAE, FS-UAE and vAmiga have long-established compatibility. Copperline puts particular emphasis on reverse debugging, chip-bus analysis, scripting and repeatable tests. The browser build and Netplay also make it easy to try a configuration or play together.

Why isn’t the macOS build notarized?

The downloads are currently ad-hoc signed. macOS may ask you to approve the first launch in Privacy & Security. Installing with Homebrew builds Copperline from source instead.

How was Copperline developed?

I use hardware documentation, real Amigas and test disks as references. AI coding assistants help with implementation, tests and debugging. Changes are checked with hardware tests and regression runs.

Where does the name come from?

The Amiga’s Copper is a coprocessor that runs alongside the CPU and can change display settings as the beam draws each line. Copperline takes its name from that connection.


// Andrew Hutchings · LinuxJedi

Built with real Amigas on the workbench

I wanted an Amiga emulator I could automate from the command line and use to track down difficult bugs. The first milestone was getting DiagROM to display its menu.

I also repair, collect and design hardware for real Amigas. Those machines give me a reference when an emulator’s behaviour needs checking.

More about my work

Thank you to patrons Lee Hobson and Sphair, and contributors Bernie Innocenti, Lee Hobson, jbl007, Simon Dick, Nicolas Ramz, Ben Letchford, Volker Schwaberow and Matt Harlum.