fix: describe WinUAE kickstarts by its own code

Every entry took its names from RetroBat's Uae.Generator.cs, which
the RetroBat launchers: records already hold. Kickstarts are now
labels of the ROM scan, and kick.rom, the name the loader opens under
its data path, is listed.
This commit is contained in:
Abdessamad Derraz committed 2026-10-21 05:23:14 +02:00
1 parent 7e6b80d501
commit 06ae666f92
2 files changed
+63 -72

No files matched your search

+42 -72
View File
@@ -13,6 +13,7 @@ systems:
- commodore-cd32
- commodore-cdtv
mode: standalone
found_by: content
notes: |
Amiga emulator for Windows by Toni Wilen. The Kickstart is the file named by
@@ -24,21 +25,17 @@ notes: |
matched against the ROM table only to name them and check the CPU they need.
An unknown ROM is still used (memory.cpp:3064-3101).
RetroBat writes a .uae file per launch with kickstart_rom_file and, for CD32
and CDTV, kickstart_ext_rom_file. It looks the files up by name in bios/,
bios/amiga/ and bios/Amiga/, first match wins, and aborts the launch when
none of the names is found
(retrobat emulatorLauncher/Generators/Uae.Generator.cs:192-216,1043-1111).
The Amiga 500 system takes the 2.04 Kickstart instead of 1.3 when its
a500_machine option is set to amiga500+. It also points KickstartPath at
bios/ in winuae.ini
(retrobat emulatorLauncher/Generators/Uae.Generator.cs:155-156). A .uae or
.ags game file skips this and runs as written.
For .lha games RetroBat unpacks its own WHDBoot.zip next to the emulator and
copies the A500, A600, A1200 and A4000 Kickstarts it finds into
WHDBoot/Devs/Kickstarts for WHDLoad, skipping any that are missing
(retrobat emulatorLauncher/Generators/Uae.Generator.cs:979-1032).
The ROM list is built by scanning KickstartPath and the default ROM paths
when no DetectedROMs list exists yet. Every file below 10000000 bytes
whose extension is rom, bin, adf, key, a500, a600, a1200, a3000, a4000,
cd32 or U followed by a digit is identified against the ROM table, whatever
the rest of its name (od-win32/win32.cpp:5385-5404,
od-win32/win32gui.cpp:1747-1772, od-win32/win32gui.cpp:1829-1876,
od-win32/win32gui.cpp:1974-2105). The guess step takes a scanned ROM whose
file name matches the configured one (rommgr.cpp:2428-2461). The Kickstart entries below are named after other
profiles' names for the same dumps: the code opens none of those names.
kickstart_ext_rom_file is opened as given, and a missing extended ROM
only raises a notice (memory.cpp:1833-1849).
CDTV and A600/A1200 internal devices are enabled with :ENABLED, which needs
no ROM file. Cloanto encrypted ROMs are decoded with rom.key, searched in the
@@ -47,128 +44,101 @@ notes: |
ROM fails to load (rommgr.cpp:1724-1732).
files:
- name: "kick34005.A500"
- name: "kick.rom"
path: "roms/kick.rom"
load_from: data_dir
found_by: name
system: commodore-amiga
required: false
hle_fallback: true
note: "Opened when the configured Kickstart is missing: roms/kick.rom, kick.rom, ../shared/rom/kick.rom and ../System/rom/kick.rom under the WinUAE data path, in that order."
source_ref: "memory.cpp:2038-2071"
- name: "amiga-os-130.rom"
system: commodore-amiga
required: true
hle_fallback: true
size: 262144
crc32: "c4f0f55f"
sha1: "891e9a547772fe0c6c19b610baf8bc4ea7fcb785"
aliases:
- "kick34005.A500.rom"
- "amiga-os-130.rom"
- "Kickstart v1.3 r34.005 (1987-12)(Commodore)(A500-A1000-A2000-CDTV)[!].rom"
- "Kickstart v1.3 r34.005 (1987-12)(Commodore)(A500-A1000-A2000-CDTV)[o].rom"
- "Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[!].rom"
note: "Kickstart 1.3 r34.5. Amiga 500 and CDTV Kickstart. Also copied to WHDBoot as kick34005.A500."
note: "KS ROM v1.3 (A500, A1000, A2000), 315093-02."
source_ref: "rommgr.cpp:150-151"
- name: "kick37175.A500"
- name: "amiga-os-204.rom"
system: commodore-amiga
required: false
hle_fallback: true
size: 524288
crc32: "c3bdb240"
sha1: "c5839f5cb98a7a8947065c3ed2f14f5f42e334a1"
aliases:
- "kick37175.A500.rom"
- "amiga-os-204.rom"
- "Kickstart v2.04 r37.175 (1991-05)(Commodore)(A500+)[!].rom"
- "Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+).rom"
note: "Kickstart 2.04 r37.175. Amiga 500 system with the A500+ machine option."
note: "KS ROM v2.04 (A500+)."
source_ref: "rommgr.cpp:158-159"
- name: "kick40063.A600"
- name: "amiga-os-310-a600.rom"
system: commodore-amiga
required: false
hle_fallback: true
size: 524288
crc32: "fc24ae0d"
sha1: "3b7f1493b27e212830f989f26ca76c02049f09ca"
aliases:
- "kick40063.A600.rom"
- "amiga-os-310-a600.rom"
- "Kickstart v3.1 r40.063 (1993-10)(Commodore)(A600HD)[!].rom"
note: "Kickstart 3.1 r40.63. Only copied to WHDBoot/Devs/Kickstarts for WHDLoad."
note: "KS ROM v3.1 r40.63 (A500, A600, A2000)."
source_ref: "rommgr.cpp:183-184"
- name: "kick40068.A1200"
- name: "amiga-os-310-a1200.rom"
system: commodore-amiga
required: true
hle_fallback: true
size: 524288
crc32: "1483a091"
sha1: "e21545723fe8374e91342617604f1b3d703094f1"
aliases:
- "kick40068.A1200.rom"
- "amiga-os-310-a1200.rom"
- "Kickstart v3.1 r40.068 (1993-12)(Commodore)(A1200)[!].rom"
- "Kickstart - 391774-01 (USA, Europe) (v3.1 Rev 40.068) (A1200).rom"
note: "Kickstart 3.1 r40.68. Amiga 1200 Kickstart. Also copied to WHDBoot."
note: "KS ROM v3.1 r40.68 (A1200)."
source_ref: "rommgr.cpp:185-186"
- name: "kick40068.A4000"
- name: "amiga-os-310-a4000.rom"
system: commodore-amiga
required: true
hle_fallback: true
size: 524288
crc32: "d6bae334"
sha1: "5fe04842d04a489720f0f4bb0e46948199406f49"
aliases:
- "kick40068.A4000.rom"
- "amiga-os-310-a4000.rom"
- "Kickstart v3.1 r40.068 (1993-12)(Commodore)(A4000)[!].rom"
note: "Kickstart 3.1 r40.68. Amiga 4000 Kickstart. Also copied to WHDBoot."
note: "KS ROM v3.1 r40.68 (A4000)."
source_ref: "rommgr.cpp:195-196"
- name: "kick40060.CD32"
- name: "amiga-os-310-cd32.rom"
system: commodore-cd32
required: true
hle_fallback: true
size: 524288
crc32: "1e62d4a5"
sha1: "3525be8887f79b5929e017b42380a79edfee542d"
aliases:
- "kick40060.CD32.rom"
- "amiga-os-310-cd32.rom"
- "Kickstart v3.1 r40.060 (1993-05)(Commodore)(CD32)[!].rom"
- "Kickstart v3.1 r40.60 (1993)(Commodore)(CD32).rom"
note: "CD32 Kickstart 3.1 r40.60."
note: "CD32 KS ROM v3.1 r40.60."
source_ref: "rommgr.cpp:323-324"
- name: "kick40060.CD32.ext"
- name: "amiga-ext-310-cd32.rom"
system: commodore-cd32
required: true
size: 524288
crc32: "87746be2"
sha1: "5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
aliases:
- "kick40060.CD32.ext.rom"
- "amiga-os-310-cd32-ext.rom"
- "CD32 Extended-ROM r40.60 (1993)(Commodore)(CD32).rom"
note: "CD32 extended ROM, passed as kickstart_ext_rom_file."
source_ref: "rommgr.cpp:325-326"
note: "CD32 extended ROM r40.60, passed as kickstart_ext_rom_file."
source_ref: "rommgr.cpp:325-326, memory.cpp:1833-1849"
- name: "kick34005.CDTV"
- name: "amiga-ext-130-cdtv.rom"
system: commodore-cdtv
required: true
hle_fallback: true
size: 262144
crc32: "42baa124"
sha1: "7ba40ffa17e500ed9fed041f3424bd81d9c907be"
aliases:
- "kick34005.CDTV.rom"
- "amiga-os-130-cdtv-ext.rom"
- "CDTV Extended-ROM v1.0 (1991)(Commodore)(CDTV)[!].rom"
- "CDTV Extended-ROM v1.0 (1992)(Commodore)(CDTV).rom"
note: "CDTV extended ROM v1.0, passed as kickstart_ext_rom_file with the 1.3 Kickstart."
source_ref: "rommgr.cpp:339-340"
source_ref: "rommgr.cpp:339-340, memory.cpp:1833-1849"
- name: "rom.key"
found_by: name
system: commodore-amiga
required: false
size: 2069
crc32: "869ae1b1"
sha1: "801bbab32e3d37386dd1636d4f1d6fa7e21d5874"
note: "Cloanto Amiga Forever ROM key. Read next to the Kickstart file, needed only for encrypted ROMs."
source_ref: "rommgr.cpp:119-120, rommgr.cpp:1513-1527"
note: "Cloanto Amiga Forever ROM key. Read from the configured key path, the ROM path, roms/, the data path, ../shared/rom/ and next to the Kickstart file, needed only for encrypted ROMs."
source_ref: "rommgr.cpp:119-120, rommgr.cpp:1459-1535"
+21
View File
@@ -454,5 +454,26 @@ class AmiberryNamesComeFromItsCode(unittest.TestCase):
self.assertEqual(_launcher_citations(profile), [])
class WinUaeNamesComeFromItsCode(unittest.TestCase):
"""get_kickstart_filehandle opens kickstart_rom_file, then kick.rom under
the data path, then a scanned ROM of the configured name
(memory.cpp:2038-2071 at 7ee16ec5). The scan identifies Kickstarts by
content. Every entry carried the names and aliases RetroBat's
Uae.Generator.cs searches, and kick.rom was missing."""
def test_kick_rom_is_read_by_name_and_kickstarts_are_labels(self):
from validation import opens_by_name, read_from_system_dir
profile = _profile("winuae")
kick = next(f for f in profile["files"] if f["name"] == "kick.rom")
self.assertTrue(opens_by_name(kick, profile, True))
self.assertFalse(read_from_system_dir(kick, True))
labels = [f for f in profile["files"] if f.get("sha1") and f["name"] != "rom.key"]
self.assertTrue(labels)
self.assertFalse(any(opens_by_name(f, profile, True) for f in labels))
self.assertEqual([f["name"] for f in profile["files"] if f.get("aliases")], [])
self.assertEqual(_launcher_citations(profile), [])
if __name__ == "__main__":
unittest.main()