From 7e6b80d501a64f48d05f327686021470a78ec8c5 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Wed, 21 Oct 2026 05:19:56 +0200 Subject: [PATCH] fix: keep amiberry to the names its code reads kick02019.AROS and its .ext were Recalbox configgen names, shipped at the BIOS root of four packs whose code never opens them. Recalbox keeps them through its own amiga/bios declarations. amiga-os-310.rom is a ROM scan label, now found_by content. --- emulators/amiberry.yml | 33 ++++++--------------------------- tests/test_profile_checks.py | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/emulators/amiberry.yml b/emulators/amiberry.yml index a8f6ae61b..052a53174 100644 --- a/emulators/amiberry.yml +++ b/emulators/amiberry.yml @@ -32,10 +32,12 @@ notes: | ref: libretro/libretro.cpp:4390-4428 Standalone ROM path: configurable via amiberry.conf "rom_path" setting. - Batocera sets this to /userdata/bios/amiga/. Fallback search order: - {home_dir}/roms/kick.rom, {home_dir}/kick.rom, ../shared/rom/kick.rom, + kickstart_rom_file and kickstart_ext_rom_file are opened as given, with + no hash check. When the main ROM is not found there, the fallback order + is {home_dir}/roms/kick.rom, {home_dir}/kick.rom, ../shared/rom/kick.rom, ../System/rom/kick.rom, then ROM database guess. - ref: src/memory.cpp:2106-2148 + ref: src/cfgfile.cpp:6442-6443, src/memory.cpp:1833-1856, + src/memory.cpp:2106-2148 ROM identification uses SHA1 against the WinUAE ROM database but does not reject unknown ROMs. Cloanto encrypted ROMs supported with rom.key. @@ -169,35 +171,12 @@ files: size: 524288 crc32: "43b6dd22" sha1: "c3c481160866e60d085e436a24db3617ff60b5f9" + found_by: content note: > Identified as KS ROM v3.1 (A4000)(Cloanto), ROM id 31, whatever the file is called. The A4000 model takes id 16 first and id 31 after it. source_ref: "source src/rommgr.cpp:203-204, source src/cfgfile.cpp:9588-9593, source src/cfgfile.cpp:9646" - # --- Kickstart ROMs named in the configuration --- - # kickstart_rom_file and kickstart_ext_rom_file are opened as given, with no - # hash check. Recalbox writes kick02019.AROS and kick02019.AROS.ext from - # bios/amiga/bios into them for the A600 and A1200 subsystems when none of - # its Commodore Kickstarts is present (Recalbox 10.1.1). - # ref: src/cfgfile.cpp:6442-6443, src/memory.cpp:2106-2111, - # src/memory.cpp:1833-1856, src/memory.cpp:3138 - # ref: recalbox projects/configgen/configgen/generators/amiberry/amiberryKickstarts.py:119-126, - # recalbox projects/configgen/configgen/generators/amiberry/amiberryConfig.py:337-345 - - - name: kick02019.AROS - mode: standalone - system: commodore-amiga - required: false - note: "AROS Kickstart, read through kickstart_rom_file." - source_ref: "source src/cfgfile.cpp:6442, source src/memory.cpp:2106-2111" - - - name: kick02019.AROS.ext - mode: standalone - system: commodore-amiga - required: false - note: "AROS extended ROM, read through kickstart_ext_rom_file." - source_ref: "source src/cfgfile.cpp:6443, source src/memory.cpp:1833-1856, source src/memory.cpp:3138" - # --- AROS replacement ROMs --- # ref: src/memory.cpp:1925-1946 find_kickstart_replacement_directory, # src/memory.cpp:1949-2030 load_kickstart_replacement diff --git a/tests/test_profile_checks.py b/tests/test_profile_checks.py index b40b79d4a..bde9d103b 100644 --- a/tests/test_profile_checks.py +++ b/tests/test_profile_checks.py @@ -436,5 +436,23 @@ class BizHawkFindsFirmwareByHash(unittest.TestCase): self.assertEqual(_launcher_citations(profile), []) +class AmiberryNamesComeFromItsCode(unittest.TestCase): + """The standalone ROM scan names every Kickstart by the ROM database + whatever the file is called (src/osdep/amiberry_gui.cpp:217-240, + src/rommgr.cpp:3172-3241 at 648aeeab), so amiga-os-310.rom is a label. + kick02019.AROS and kick02019.AROS.ext are names only Recalbox's configgen + writes, and the code has its own AROS (':AROS', src/memory.cpp:2156).""" + + def test_scan_label_and_no_launcher_names(self): + from validation import opens_by_name + + profile = _profile("amiberry") + entry = next(f for f in profile["files"] if f["name"] == "amiga-os-310.rom") + self.assertFalse(opens_by_name(entry, profile, True)) + names = {f["name"] for f in profile["files"]} + self.assertFalse({"kick02019.AROS", "kick02019.AROS.ext"} & names) + self.assertEqual(_launcher_citations(profile), []) + + if __name__ == "__main__": unittest.main()