Windows release binaries are signed through SignPath. See the Code signing policy: https://amiberry.com/code-signing-policy
Highlights
Licensing and third-party code
-
WHDLoad, JST and the Kickstart RTB files are no longer bundled. "Update WHDBooter files" and
--download-whdbootnow get them from their authors' sites:- WHDLoad comes from whdload.de on every update, so new WHDLoad releases arrive.
- The SKick RTB files are fetched once, only while one is missing, from Aminet
util/boot/skick346.lha. That archive is checked against a fixed SHA-256 before it is unpacked. - JST comes from Aminet
game/patch/jst.lha, only when "Use JST instead of WHDLoad" is on. kick31034.A1000.RTBis still bundled.- A downloaded file replaces the installed one only after it matches the size and CRC in its LhA header. Only one download runs at a time, and none starts while a machine is running unpaused.
(#2540)
-
If WHDLoad is missing when a WHDLoad game boots, Amiberry shows a message that says where to get it. Nothing is downloaded automatically. The Paths panel and the
--download-whdboothelp name the sources (#2540) -
In older releases, "Update WHDBooter files" now gets "not found" for the removed files. The installed copies are kept, and the update reports a partial failure (#2540, #2549)
-
WHDBooter's quit-on-exit now uses
host-quitfrom Host-Tools 2.8 (GPL-3) instead of AmiQuit, a third-party binary with no source or licence. host-quit also works on Kickstart 1.3 and the 68000 (#2549, #2550) -
LhA archives are now read with Lhasa 0.6.0 (ISC) instead of LHa for UNIX, whose licence is not free. The rare
-lh2-and-lh3-compression methods are no longer decoded (#2558) -
Each LhA member's CRC is now checked, so a corrupt member fails instead of returning bad data. Truncated or corrupt archives fail cleanly; a corrupt
-lh5-/-lh6-/-lh7-archive used to crash the old decoder. LhA's0xffpath separators are read as/(#2540, #2558) -
PearPC was removed. It was never compiled into any build, so choosing it left the machine with no PPC at all. PPC emulation uses the QEMU plugin only. A configuration with
ppc_implementation=pearpcloads asautowithout a warning and is saved asauto(#2554) -
Licence clean-up:
- The UAE portability headers and
vm.cppwere rewritten under GPL-3.0-or-later, with no change in behaviour (#2552). - Third-party licence notices were corrected: HRTMon 2.37 is GPL-2.0-or-later, the Warp decruncher is LGPL-2.1-or-later, mos6502 is MIT (its source files now carry the notice) and iff.library is public domain.
gamecontrollerdb.txtcarries its zlib notice, unlzx credits all its authors, and Amiberry's copy of mt32emu is distributed under GPL-3.0-or-later, as section 3 of the LGPL 2.1 allows (#2557).
- The UAE portability headers and
-
Each release now includes
amiberry-<tag>-third-party-sources.tar.xz. It holds the exact source of the GPL and LGPL libraries bundled in the macOS release (such as FFmpeg, x264, x265, LAME, mpg123, libmpeg2 and libserialport), checked against Homebrew's checksums, and is listed inSHA256SUMS(#2556) -
The Amiga libraries some WHDLoad games need are no longer inside
boot-data.zip, because their licences don't allow bundling them. "Update WHDBooter files" downloads them from their Aminet packages while one is missing; every file is checked against its CRC, and the packages that never change are also checked against a fixed SHA-256 (MMULib, which its author updates in place, isn't). They go into the WHDBoot folder'sLibsdrawer, which the booter mounts asDH4:and adds toLIBS:, soLIBS:Compressorsworks too. Existing files are never overwritten (#2559):- the XPK libraries:
xpkmaster.libraryand 16 compressors, fromutil/pack/xpk_User; - MMULib's
68040.library, now with themmu.libraryand680x0.libraryit needs, which the old zip lacked, fromutil/libs/MMULib; explode.library, fromutil/libs/explode-7;- OctaMED's
medplayer.library, fromdocs/help/OctV5_Tut4.
Older Amiberry versions (8.4.x) also download the reduced
boot-data.zipwhen you press their "Update WHDBooter files" button, but can't fetch the libraries. Update to 8.5.0 to get them back. - the XPK libraries:
-
LZX archives are read by a new decoder, written for Amiberry from a description of the format, which replaces unlzx (it had no licence). It lists and extracts stored and compressed members with their CRCs, attributes, dates and comments, and rejects corrupt or truncated archives cleanly. An LZX archive in the ROMs folder no longer crashes the ROM scan (#2561)
-
.dsqdisk images (LZX archives holding a packed disk) whose packed disk is short or malformed no longer read past the end of the data; they open as the original file (#2561)
WHDBooter
- The booter marks WHDLoad, JST and host-quit as executable before linking or copying them. Android and Windows copy these files, and on Android a copy without the execute bit probably could not run (#2549)
- Bundled game database updated to 11220 entries
File requesters
- The hotkeys for inserting a disk into DF0–DF3, loading a state, saving a state and inserting a CD open a file requester again. Since the move to ImGui, the floppy and CD hotkeys re-inserted the current image, load state cleared the state name and save state did nothing. The GUI closes once you answer or cancel. If the file is refused, the GUI stays open to show why (#2508)
- The Savestates panel's "Load state…" and "Save state…" buttons use the same requester. Before, they did nothing (#2508)
Settings panels
-
The CPU, chipset, memory, ROM, display, sound and input panels grey out values the emulator would change when the configuration is applied, instead of accepting them (#2495, #2497, #2499)
-
CPU panel:
- The "Host (80-bit)" FPU mode is gone. Outside MSVC long-double builds it behaved as 64-bit and was never saved.
- Softfloat is greyed out while the JIT FPU is on, and turning the JIT FPU on switches Softfloat off.
- JIT cache sizes of 1–127 KB are refused.
- With JIT on a 68040/060, More compatible keeps its value while greyed out, and turning the JIT off restores it.
- A 68000/010 without More compatible no longer keeps a 68040/060 internal FPU after a CPU switch; it becomes a 68881.
- Switching to a 68000 clears the JIT.
cpu_speed=Nconfigurations show N instead of "real".- Values typed into sliders with Ctrl+click are clamped to the slider's range.
(#2495)
-
Chipset, Quickstart and RAM panels:
- Turning on cycle-exact on a 68000/010 clears Wait for Blitter.
ide=a4000turns on Gary and Ramsey.- Chip RAM above 2 MB shrinks Z2 fast RAM.
- NTSC in the Chipset panel changes the output refresh rate, as Quickstart already did.
- ROM lists rebuild after a ROM rescan.
- MapROM refuses anything that is not one hexadecimal address.
- Reloading no longer brings back a previously used cartridge.
(#2497)
-
The ALG and Arcadia presets' "First installed game ROM" configuration now uses the first installed game. Before, it loaded the OnePlay 2.11 BIOS as the "game", and the preset counted as available whenever that BIOS was installed (#2505)
-
Floppy and HD panels:
- Disk swapper "Remove All" now ejects the listed disks. Before, it ejected none of them, ejected DF0 when every drive held a disk, and reopening the GUI brought the disks back.
- The write-protect checkbox is disabled when there is no disk or
floppy_read_onlyis set. - The speed label no longer shows 100% for speeds between the slider's steps.
- In Create Hardfile, the "RDB Mode" checkbox is removed; nothing read it.
- The hardfile boot priority is clamped to -129..127, as in the volume dialog (-128 is "not bootable", -129 "not mounted automatically").
(#2500)
-
All recent-file lists follow one rule: a reused path moves to the front, empty paths are skipped, and each list keeps 40 entries. The recent CD list was limited to 10, and loading a configuration added an empty recent-floppy entry (#2500)
-
Sound panel: the device list refreshes when the panel opens, so a device connected after start-up appears. The selected playback and recording devices are found again by name, so a device that disappears no longer moves the selection to a different device (#2499)
-
Keyboard shortcuts changed while emulation runs take effect immediately instead of when the GUI closes. In the Priority panel, the options that "pause when active but not captured" forces are greyed out, with the reason (#2511)
-
RTG panel: only boards that fit the CPU addressing and chip RAM are offered. Picking a board turns it on with its default memory: 4 MB for UAE Zorro II, 16 MB for UAE Zorro III, and the minimum for a hardware board. Turning a board off resets its monitor, autoswitch and initial-screen settings (#2513)
-
Accelerator boards:
- Changing the board sets the CPU the board needs and fits the board RAM to it.
- A variant change applies the PPC rule, which the panel used to skip.
- SCSI cannot be turned off while host CD drives are mapped.
(#2514)
-
The A3000 and A4000T SCSI controllers can no longer both be enabled; when both were set, neither was built (#2515)
-
Filter panel: the crop window and its offsets follow the frame when the resolution or line mode changes. The default crop height for single lines is 288, not 576 (#2516)
-
Custom Controls offers Default and None for every control. A D-pad on a hat can be mapped again; it showed "In-Use (VKBD)". Unset controls show Default instead of CD32 pad events (#2518)
-
Warning, error and success text follows the theme. On the light Default theme it was close to unreadable (1.03:1 to 1.09:1 contrast); it now reaches 3.2:1 to 4.3:1.
- The colours can be edited in the Themes panel under a new "Status text" group.
- Older theme files get colours derived from their own background colours.
-
Configurations panel: a configuration that points at a missing floppy no longer floods the log with about 150 lines each time the list is read. Deleting a configuration also deletes the backups the startup path migration made of it (#2486, fixes #2483)
Configuration files
-
Every custom ROM board is saved. Before, the first board was written repeatedly and the others were lost (#2497)
-
The Agnus/Denise revision overrides and
cs_bytecustomwritebugare saved and read back. The UAE board's "no diagnostics ROM" (*_off) choices are kept by the ROM panel (#2497) -
An expansion ROM board enabled without a ROM file is no longer lost on save. It gets the scanned ROM of its type, or none (#2515)
-
DrawBridge settings for the first driver are saved (#2500)
-
amiberry.active_not_captured_pause,amiberry.active_not_captured_nosoundandamiberry.inactive_minimizeare read back when a configuration loads. Before, these settings were lost (#2511) -
A configuration saved with auto crop off no longer comes back with it on when the
default_auto_cropsetting is enabled. Auto crop now turns manual crop off, so the writer no longer drops manual crop (#2516) -
gfx_filter_autoscale_limitandgfx_filter_autoscale_limit_rtgare read back in builds withoutGFXFILTER(#2513) -
serial_port=noneno longer opens a port named "none". MIDI device names are read back correctly, and "none" is no longer opened as a MIDI device (#2517) -
A custom control set to None stays None after a reload. Before, it was saved as empty and came back as its default (#2518)
-
Custom refresh entries (
displaydata_pal/displaydata_ntsc):- They are written with the comma before
rpct=. - A long command in one no longer overflows its field when read.
(#2499)
- They are written with the comma before
-
vkbd_hires,vkbd_exitandvkbd_styleare kept when a configuration is saved (#2499) -
Hard drive (
uaehf) lines too long for their fields are rejected instead of overflowing them. A device name infilesystem_extrais no longer used as a printf format (#2503) -
--dump-configreports 32-bit chip RAM correctly instead of 0 (#2497)
Crashes and hangs
- Switching the RTG board between Zorro III and Zorro II and then resetting no longer crashes. A Zorro III RAM board brought in by a reset no longer shares chip RAM's memory; before, writes to the board changed chip RAM (#2513)
- A Blizzard 1230 MK2/MK3 without board RAM no longer crashes at reset, and a Twelve Gauge without board RAM no longer crashes at boot (#2514)
- A ZZ9000 using slirp networking no longer freezes Amiberry when the guest reboots (#2491)
- Changing the CPU model together with 24-bit addressing on a running machine now does a hard reset. Before, the CPU kept running on the old memory map (#2545)
- On x86-64, a fault outside the JIT cache is no longer treated as a JIT fault. That could turn a fault into a corrupted stack after the JIT was turned off at runtime. Such faults now abort and log a backtrace, the memory bank involved and the CPU state (#2543, #2545)
- A restart no longer waits for a stalled update check, which could take about 20 seconds when DNS hung. Exit no longer waits for the update check either (#2496, #2547)
- macOS: Amiberry no longer aborts on exit when graphics initialisation failed (#2496)
- Turning on the on-screen joystick with no renderer no longer dereferences a null pointer (#2523)
- The Adv. Chipset Agnus/Denise and monitor sync lists, the Quickstart drive type list and the DrawBridge cable list no longer read past their labels for some values (#2497, #2500)
- Mounted-drive handling no longer reads one entry past the list, and the GUI's copy of the mount list no longer misses its last entries (#2503)
Fixes
-
FPU: comparing two equal infinities with FCMP now reports them equal (Z, and N for negative infinity) instead of unordered, with and without the JIT FPU. Programs that compare infinities took the wrong branch, and GCC's
isnan()reported every infinity as NaN. The strict and softfloat FPU modes were already correct (#2560) -
The JIT access-violation notice at start-up is shown when the GUI next opens. Before, it was never shown (#2533)
-
A settings change that touches several groups of display options at once reaches the running emulation completely. On slower hosts, part of it could wait for an unrelated change (#2523)
-
A serial port picked while emulation runs is opened (#2517)
-
Each refresh of the host's devices no longer lists every MIDI port again (#2517)
-
amiberry.confis saved in place, keeping links, owner, permissions and extended attributes. If the new content cannot be written, the old content is restored and the save reports failure (#2501) -
A2065:
- The emulated Am7990 now needs address bit A15 and honours CSR3 BSWP for frame data, as the real chip does. A driver that fails on real hardware now fails in Amiberry too;
a2065.device, Linux and NetBSD are unaffected. - The MAC address is read from the init block at its actual offset. This also applies to the Ariadne.
(#2484)
- The emulated Am7990 now needs address bit A15 and honours CSR3 BSWP for frame data, as the real chip does. A driver that fails on real hardware now fails in Amiberry too;
-
macOS: the debugger window (Shift+F12) follows new output again (#2492, fixes #2489)
IPC and command line
-
DBus control is removed. IPC covers all 18 DBus methods, works on Linux, macOS and Windows, and accepts only the current user. No shipped build had DBus enabled (#2496)
-
New settings commands, documented in
docs/ipc.md:SETTINGS_GET,SETTINGS_SET,SETTINGS_VALIDATE,SETTINGS_COMMITandSETTINGS_RESET_SESSIONedit a settings session (#2496)SETTINGS_LIST,SETTINGS_DESCRIBE,SETTINGS_GET_ACTIVEandSETTINGS_APPLY <live|reset|restart>(#2504)SETTINGS_MOUNTS,SETTINGS_MOUNT_ADD,SETTINGS_MOUNT_REPLACEandSETTINGS_MOUNT_REMOVE(#2503)SETTINGS_BOARDS,SETTINGS_BOARD_DESCRIBE,SETTINGS_BOARD_GETandSETTINGS_BOARD_SET(#2515)SETTINGS_CUSTOM_CONTROLS,SETTINGS_INPUT_EVENTS,SETTINGS_CUSTOM_CONTROL_GETandSETTINGS_CUSTOM_CONTROL_SET(#2518)HOST_SETTINGS_LIST,HOST_SETTINGS_GET,HOST_SETTINGS_SETandHOST_SETTINGS_SAVEforamiberry.conf(#2520)
-
Other new commands:
-
IPC is answered while the GUI is open. A reset or quit sent over IPC closes the GUI. A resume refused because the GUI has paused emulation reports an error instead of success (#2496, #2507)
-
Save states:
SAVESTATE,QUICKSAVEandQUICKLOADreply ERROR when nothing was saved or loaded.SAVESTATEwrites its companion config only after a successful save, and no longer renames the configuration's description to "autosave".
-
LOAD_CONFIGof a file that exists but cannot be opened keeps the current configuration. Before, it was reset to the defaults (#2519) -
GET_STATUSandGET_LED_STATUSreflect commands sent just before them.DISKSWAPinserts from the swapper list as last edited.QUITis acknowledged only once the quit is queued (#2496) -
LIST_CONFIGSreturns sorted names and also matches.UAE(#2501) -
LIST_HARDDRIVESno longer lists stale entries, and a path containing a tab or line break no longer breaks its reply (#2503) -
SEND_KEYwith an Amiga key code (0x00–0x7F) refuses a key press while nothing runs or the settings UI is open. Releases always go through (#2510) -
Setting the ROMs folder with
SET_FOLDERor therom_pathhost setting rescans it, loadingrom.keyfirst (#2531) -
SET_RESOLUTIONandSET_LINE_MODEkeep the crop window within the new frame (#2516) -
New
--apply-preset model[:config[:compatibility]]applies a Quickstart preset from the command line (#2497) -
New
--settings-schema[=<option-list>]prints the settings, presets and their rules as JSON (#2505) -
--dump-configlists configuration entries no parser recognised on stderr (#2511)
ZZ9000
-
The emulated card matches the firmware for media status, audio stream sessions and the console encoder:
- ZZPlay reports the presentation path and per-stage timing.
- Four audio sessions can run at once.
- Probing a FLAC file through the
MPEGADataType no longer blocks all card audio until a reset. - 8-bit screens encode as CLUT8.
(#2494)
-
Configurations built with
--modelget the ZZ9000 defaults (#2513)
Android
-
Quick Start offers the emulator's own models:
- A2000 is gone; stored A2000 entries open as A500.
- A4000T and Macrosystem are new.
- ALG and Arcadia are not offered.
- Each model starts from the preset's first configuration. For example, the A4000 is now the emulator's 68030 / 68882 / JIT 16 MB.
(#2505)
-
ROM detection checks every configuration of a model, so an A500 with only Kickstart 1.2, or an A3000 with only 3.1, can launch (#2505)
-
CPU, FPU, memory, chipset and sound choices and their limits come from the emulator. For example, 1.5 MB chip RAM with the JIT becomes 2 MB (#2505)
-
Aspect correction works; it was always off (#2505)
-
WHDLoad games for the 68020, 68030 or 68040 get 32-bit addressing (#2505)
-
The Chip RAM menu shows 128 KB and 256 KB instead of "None", and recent launches show model names (#2505)
Platforms and packaging
- The Debian bookworm and trixie arm64 packages are built with FFmpeg, so they include the ZZ9000 MPEG-2, WebM, Matroska, FLAC and Vorbis decoders (#2493)
- Amiberry builds on powerpc64 and powerpc64le (#2488)
- Build: GCC LTO builds no longer warn in
stb_image(#2482) - Groundwork for native macOS and iOS apps landed. They are not part of this release (#2506, #2507, #2510, #2521, #2524–#2533, #2535, #2537–#2539, #2541)
Sponsors
Thanks to Lame, our Supporter-tier sponsor, for helping keep Amiberry development going. Want to support Amiberry too? See the sponsorship tiers or Ko-fi.