EmuCR Feeds
Email Us

EmuCR: Azahar  Copperline v0.12.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.12.0 takes the emulator to new places: it now runs in the browser as a WebAssembly build, boots the big-box A3000 and A4000 with their onboard SCSI and IDE controllers, mounts host directories as fully writable AmigaDOS volumes, and grows a JSON-RPC control protocol for scripted live sessions. On the hardware side this release adds SCSI CD-ROM drives with CD audio, puts any controller device in either game port, plugs printers and audio samplers into the parallel port, and lands a round of chip-bus mirroring and display accuracy fixes. 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.11.0 do not load in 0.12.0: the serialized machine shape changed several times this cycle (sprite display latches, the guest battery clock, per-port controllers, the big-box chipsets), so the state format version moved from 27 to 32. Re-create snapshots after upgrading.
No config file changes are required; all new sections and keys are optional additions, and 0.11.0 configs continue to parse. One behavior change to note: the [input] joystick mode no longer has an "auto" keyboard fallback. The default is now "gamepad" (a physical pad drives the port, the keyboard passes through to the Amiga), and the cursor-key joystick mapping is an explicit opt-in with joystick = "keyboard". Existing configs with joystick = "auto" still parse (it maps to "gamepad").
Highlights
Copperline in the browser. A WebAssembly build of the emulator runs entirely client-side, and is live at copperline.dev/try: it boots the bundled AROS ROM out of the box, loads your own Kickstart and disk images from the page (or straight from URL query parameters), and supports drag-and-drop, a keyboard joystick, touch input with a trackpad-style mouse and an on-screen joystick, and fullscreen on iPhone Safari. A prefilled GitHub bug-report link captures the machine state when something goes wrong.
A3000 and A4000 machine profiles. The big-box Amigas boot, each off its own built-in disk controller: the A3000 brings the Super DMAC with the onboard WD33C93 SCSI bus, the A4000 the motherboard IDE port at $DD2020, and both the Ramsey memory controller, the Fat Gary bus controller, and a motherboard battery clock. The profiles are new and still incomplete, but both boot AmigaOS from their native controllers. A new rom_scsi_device_disable knob skips the ROM's scsi.device when its bus has no drives, saving the boot-time probe of an empty bus.
Writable host-directory mounts. The [[filesys]] HOSTFS volumes introduced in 0.11.0 are no longer read-only: the guest now reads and writes the host's files directly, with Amiga protection bits, comments, and datestamps persisted to .uaem metadata sidecars, host UTF-8 filenames mapped to AmigaDOS Latin-1, delete-protection honored, and ACTION_EXAMINE_ALL supported for modern directory scanners. The services board moved from A-line traps to MMIO registers, packets are routed by explicit mount unit, and the launcher gained a Host Mounts tab with per-mount read-write/read-only access control (readonly = true exports a directory write-protected).
Copperline Control Protocol. A JSON-RPC 2.0 interface over loopback TCP (--control, with the copperline-ctl client) drives live sessions from scripts and AI agents: breakpoints and stepping, input injection, media swaps, screenshots, save states, and streaming observability (frame, serial, interrupt, and media event subscriptions with bounded queues), plus runtime-bracketed instruction traces and waveform captures. --control-gui attaches the same server to a windowed session. See docs/debugger/control.md.
SCSI CD-ROM drives. A [scsi] unit path ending in .cue or .iso attaches a CD-ROM drive at that SCSI ID on any of the supported controllers. CD audio tracks play through the machine's audio output, and discs swap at runtime via the status-bar CD buttons, drag-and-drop, or --insert-cd-after.
Any controller in either game port. Both game ports now take any device, as on a real Amiga: mouse, joystick, cd32 pad, analogue paddles on the POT pins, or none ([input] port1/port2, --port1/--port2, hot-pluggable from the runtime menu). Scripted input flags aim at either port, --pot-after scripts analogue positions, and two-mouse and two-joystick setups get sensible host keyboard mappings.
Parallel-port peripherals. The Centronics port is now a modelled connector with pluggable devices: a printer that captures the raw strobed byte stream to a host file, and an 8-bit audio sampler fed from a host capture device -- the emulated equivalent of a classic parallel-port digitizer cartridge, usable from AudioMaster, ProTracker, OctaMED, and friends. The BUSY/POUT/SEL status lines are driven by the attached peripheral.
Deterministic guest clock. rtc_time seeds the battery clock to a fixed instant and ticks it in emulated time, so the guest boots to the same time on every run -- the way to test time-dependent guest software reproducibly. rtc_frozen pins the clock exactly, and the control protocol reads and sets it at runtime.
Hardware accuracy fixes
Chip bus. Chip RAM mirrors across the full chip window by Agnus address reach, so loaders that park the stack above the installed chip RAM see the mirror instead of a bus fault (an Action Replay-style boot guru was the regression example). Custom registers mirror into the empty chip-register decode space the way Gary resolves them, which un-sticks Kickstart 1.2's memory-sizing probe (yellow-screen boot).
Denise display path. OCS/ECS BPLCON1 scroll nibbles count lo-res pixels at every resolution, fixing a first-column wrap in hi-res Kickstart 2.05 boot screens; early hi-res DDF content renders inside an early display window (ECS overscan programs); and sprite DMA fetches land in a hardware-true display-latch view, so stale sprite rows can no longer leak into later frames.
Agnus identity. Every ECS Agnus reports the same chipset ID, matching real chips.
Filesystem/DOS ABI. ACTION_SEEK offsets are sign-extended, negative-offset seeks from big files now land where AmigaDOS expects.
POT circuit. The POT counter and pot-line models were finished alongside the analogue controller support.
Debugging and tooling
Waveform export. --waveform out.vcd captures chipset signals as a VCD trace for GTKWave, with --wave-trigger/--wave-duration windows, and the control protocol brackets captures at runtime.
GDB stub. Program-load (LoadSeg) events let a debugger break at the entry point of a program loaded inside the guest, and the stub survives client disconnects and reconnects.
Unmapped-access logging. [debug] log_unmapped logs every CPU access that no device decodes, scoped to an address window -- the quick way to find registers a guest expects that Copperline does not provide yet.
Docs site. The themed HTML manual now publishes to copperline.dev/docs on release, and a public AGENTS.md documents the headless workflow for AI coding agents.
The frame analyzer snaps a pre-display scrub selection to the frame end instead of showing a stale picture.
External contributions
Bernie Innocenti (@codewiz) contributed the A3000 and A4000 machine support (the Ramsey memory controller, the Fat Gary bus controller, the Super DMAC with the onboard WD33C93 SCSI bus, and the A4000 motherboard IDE), host-directory write support with .uaem sidecar metadata and Latin-1 filename mapping, ACTION_EXAMINE_ALL, the MMIO services-board rework with per-unit packet routing, the launcher Host Mounts tab and access control, unmapped-access logging, the uniform ECS Agnus chipset ID, the empty-bus scsi.device skip, and the ACTION_SEEK sign-extension fix.
Lee Hobson (@hobbo91) contributed the parallel-port audio sampler.
Thanks to @warpdesign for the upstream AROS boot-time optimizations: the bundled AROS boot ROM was rebuilt to include them, and the out-of-the-box no-Kickstart boot is now dramatically faster.

Download: Copperline v0.12.0 x64
Source: Here



Random Related Topic Refresh Related Topic

Random Related Topic Loading...

0 Comments

Post a Comment

Can't post a comment? Try This!