EmuCR Feeds
Email Us

EmuCR: Copperline  Copperline v1.0.0-rc.1 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:
This is the first release candidate for Copperline 1.0. If testing does not turn up problems that need a second candidate, the next release will be 1.0.0.
This cycle brings three- and four-player netplay on the desktop, debugger watchpoints on device registers with a timed trace of CD32 drive commands, a refreshed AROS ROM, and a review of the whole manual against the program, which also found and fixed a few mismatches in the program itself.
Please try your usual games, demos and configurations with it. Anything that worked in 0.21.0 and does not work here is exactly what a release candidate is for: open an issue with the configuration and the software involved.
Before upgrading
Netplay peers must all run 1.0.0-rc.1. The wire protocol moved to version 3 to carry up to four players, so a 0.21.0 peer cannot join.
Recreate RetroArch save states after updating the core. The core's states carry a build fingerprint that includes the release version. Desktop .clstate files from 0.20.0 and 0.21.0 still load; states from 0.19 and earlier do not.
High-density floppy images are refused. Copperline's drives are double-density units. A 22-sector UAE extended ADF used to be squeezed into one double-density revolution and crash the guest; it is now refused when inserted, with a message saying why. The RetroArch core accepts only 880 KiB ADFs.
Some command-line combinations are now errors instead of being silently ignored: --control with --expect-screenshot; --insert-cd-after with --benchmark-until, --gdb or --control; --exit-on-return with --gdb or --control; and --pen-after under netplay.
--run PROG --exit-on-return on its own now runs without a window, unthrottled, as the documentation already described. Add --control-gui or --gdb-gui to keep a window.
Three and four players over netplay
Desktop netplay now seats two to four players. Players three and four use the parallel-port four-player adapter, just as they would sitting at one Amiga: two switch joysticks, no mouse and no CD32 buttons.
Player 1 hosts and everyone else connects to the host, which passes each player's input on to the others. Only the host needs to be reachable, and all players must be connected before the game starts. This works over direct IP and over the encrypted Internet connection, and spectators can still watch.
Launcher: the host sets Players, and Local player offers ports 3 and 4.
Command line: the host passes --netplay-players 3 or 4 and may repeat --netplay-peer once per guest, or leave it out to admit anyone with the session code.
The host's machine needs the adapter fitted with a joystick in each socket in use. A printer or sampler on the parallel port is still refused.
Browser games stay two-player, since a web page has no parallel port. See the netplay guide.
Watch device registers and trace the CD32 drive
The existing watchpoints compare memory before and after each instruction, which cannot work for a device register: reading one has side effects, such as popping a byte from Akiko's command port or clearing a CIA interrupt flag. MMIO watches are taken at the CPU's own bus access instead. Every data access to the watched range is recorded with its address, size, value, direction, PC, frame, beam position and colour clock. They work on Akiko, the CIAs, Gayle, Zorro boards, custom registers and RAM.
A new CD command trace records each packet the CD32 sends its drive: the decoded command, sector range, speed, reply and outcome, with emulated timestamps for when the host issued it and when the drive parsed, executed, answered, delivered its first sector and finished. It is a host-side record and never feeds back into the emulation.
Both are available everywhere the debugger is:
Debugger window: MMIO on the Break tab, and a new CD tab listing commands newest first.
Console: MWATCH (or MW) and CDTRACE.
Headless: COPPERLINE_DBG_MMIO=ADDR[:LEN[:CLASS]] and COPPERLINE_DBG_CD=1.
Control protocol and MCP: break.add {"kind": "mmio", ...}, a non-stopping mmio event stream, cd.trace and event.cd.
An armed MMIO watch switches the CPU to its precise loop and disables run-ahead, like the other debugger hooks. See the debugger window guide.
Bundled AROS ROM refresh
The bundled AROS ROM is rebuilt from upstream master f1ec64f45a with no local patches. Every part of the AROS pull request the previous refresh carried is now merged upstream. Changes that reach the ROM include:
Hires screens are no longer sheared by four bytes per line. AROS programmed DDFSTOP one fetch unit past the hardware stop at $D8.
Interrupt handlers restore INTENA's master bit, so a program that enables interrupts itself under Disable() no longer freezes at the first vertical blank.
DOS packets and loaded program hunks come from the top of free memory, keeping the low block contiguous for older software.
Screen user Copper lists, CD32 cd.device playback and reads, Kickstart-compatible OpenLibrary version handling, afs-handler read-ahead, ATAPI handling, and Shell and console fixes.
The ROM banks have more room: the extension bank had 682 bytes spare and now has about 15.5 KiB. Free memory at boot is 800 bytes lower than with the previous ROM.
The new memory placement exposed two Copperline bugs, both fixed: --coverage could count the next command's instructions as the program's, and the VS Code profiler command sometimes captured no frames.
Documentation checked against the program
Every chapter of the manual, all 238 custom-register pages and copperline.example.toml were checked against the source. Wrong defaults, labels, offsets and paths are corrected, and flags, configuration keys, control-protocol methods, console commands, launcher pages and environment variables that had never been documented now are. The manual also gains a table of built-in boards, the WASM socket ABI, a Cargo features table and the test-asset workflow. Linux instructions now say plainly that Copperline is not on Flathub: the AppImage is the download, and the Flatpak is something you build yourself.
The review also found places where the program disagreed with the hardware or with itself:
The debugger decoded ADKCON bit names one bit too high (WORDSYNC is bit 10), showed KILLEHB on bit 10 (that is ZDCTEN; KILLEHB is bit 9), and always hid bit 1 of DDFSTRT and DDFSTOP. The DDF decode now follows the fitted Agnus revision, using the same mask as the fetch sequencer.
--help lost duplicate MT-32 entries and has corrected screenshot, .zip, gamepad-mouse and lide entries.
The shortcuts panel no longer overflows and lists the filter, gain and sensitivity keys it was missing. The audio filter message now says On or Off, as the menu does.
The control protocol's MCP tool descriptions and schemas now match their handlers.
Other changes
Detaching a serial port could briefly show the guest a port asserting DSR, CTS and CD. The lines are now released before the port is marked detached.
The launcher's Create Floppy page still makes high-density images for other emulators and real Amigas, and now warns that Copperline's own drives will refuse them.
Dependency updates: toml, toml_edit, ringbuf, wasmtime 36.0.15, ureq and wat.
Thanks to the patrons whose support pays for the hardware used to check the emulation, to everyone who has reported problems and tested fixes, and to everyone who has contributed code on the way to 1.0 (listed in CREDITS.md).

Download: Copperline v1.0.0-rc.1 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!