From 7d99685ce180b5da01dd35ac1975a2a5e12b6381 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Fri, 6 Nov 2026 15:25:02 +0100 Subject: [PATCH] fix: drop the Recalbox boot disk from minivmac Mini vMac opens no MinivMacBootv2.dsk at babdf7b5: disks come from a .cmd (libretro-core.c:181-195) or disk1.dsk to disk9.dsk (OSGLUERETRO.c:563-579). The name is the one Recalbox's configgen writes into its .cmd, already recorded in its launchers: layer. Nine manifests no longer send the 24 MB image to platforms that never open it. --- emulators/minivmac.yml | 21 ++++++++------------- install/batocera.json | 21 ++++----------------- install/emudeck.json | 18 ++++-------------- install/knulli.json | 21 ++++----------------- install/lakka.json | 21 ++++----------------- install/recalbox.json | 11 ----------- install/retroarch.json | 21 ++++----------------- install/retrodeck.json | 21 ++++----------------- install/retropie.json | 21 ++++----------------- install/rocknix.json | 18 ++++-------------- install/romm.json | 14 ++------------ tests/test_launcher_aliases.py | 33 ++++++++++++++++++++++++++++++++- wiki/installer.md | 32 ++++++++++++++++---------------- 13 files changed, 90 insertions(+), 183 deletions(-) diff --git a/emulators/minivmac.yml b/emulators/minivmac.yml index b629249c8..2145c407b 100644 --- a/emulators/minivmac.yml +++ b/emulators/minivmac.yml @@ -51,19 +51,6 @@ files: Macintosh IIx ROM image (256 KB). Tried first in the loading sequence. If present, takes priority over MacII.ROM. - - name: "MinivMacBootv2.dsk" - path: "macintosh/MinivMacBootv2.dsk" - required: false - source_ref: "libretro/libretro-core.c:181-195, libretro/libretro-core.c:396, minivmac/src/OSGLUERETRO.c:521-537, minivmac/src/OSGLUERETRO.c:1545-1547" - note: > - System boot disk. Content given as a .cmd file is read as a command - line, and every argument that is not an option is inserted as a disk, - opened read-write first. Recalbox 10.1.1 writes a .cmd naming - bios/macintosh/MinivMacBootv2.dsk ahead of the game disk. A missing - image raises an open-failure message and the machine starts without it. - ref: recalbox projects/configgen/configgen/recalboxFiles.py:174, - recalbox projects/configgen/configgen/generators/libretro/libretroGenerator.py:877-882 - notes: emulation_target: > Configured for Macintosh II (kEmMd_II). 68020 CPU, FPU, ADB, VIA2, ASC @@ -71,3 +58,11 @@ notes: info_discrepancy: > .info declares firmware_count=1 (MacII.ROM only). The code also tries MacIIx.ROM first (OSGLUERETRO.c:778). + disks: > + No disk image has a fixed name. Content given as a .cmd file is read as + a command line, and every argument that is not an option is inserted as + a disk, opened read-write first (libretro/libretro-core.c:181-195, + minivmac/src/OSGLUERETRO.c:521-537). With no disk inserted, + LoadInitialImages tries disk1.dsk to disk9.dsk and stops at the first + missing one (minivmac/src/OSGLUERETRO.c:563-579). A boot disk is + whatever the frontend writes into the .cmd. diff --git a/install/batocera.json b/install/batocera.json index b48c18163..62e797d4c 100644 --- a/install/batocera.json +++ b/install/batocera.json @@ -272,10 +272,10 @@ } } ], - "total_files": 14699, - "total_size": 9868500923, - "pack_files": 18173, - "pack_size": 9954326213, + "total_files": 14698, + "total_size": 9843335099, + "pack_files": 18172, + "pack_size": 9929160389, "total_omitted": 426, "omitted_files": [ { @@ -204302,19 +204302,6 @@ "mesen" ] }, - { - "dest": "macintosh/MinivMacBootv2.dsk", - "sha1": "20bb0271d02b1ab3b4cfe7c8d6b599abdbc5324e", - "sha256": "90dceaece71be101bf709ee20691c9e8486969417ffc51e4d1fb3c11e567f796", - "size": 25165824, - "repo_path": "bios/Apple/Macintosh II/MinivMacBootv2.dsk", - "cores": [ - "minivmac" - ], - "systems": [ - "apple-macintosh-ii" - ] - }, { "dest": "64DD_IPL_JP.n64", "sha1": "bf861922dcb78c316360e3e742f4f70ff63c9bc3", diff --git a/install/emudeck.json b/install/emudeck.json index 9c54bc3da..5255ed2a1 100644 --- a/install/emudeck.json +++ b/install/emudeck.json @@ -305,10 +305,10 @@ } } ], - "total_files": 8396, - "total_size": 7816001968, - "pack_files": 14576, - "pack_size": 7943924044, + "total_files": 8395, + "total_size": 7790836144, + "pack_files": 14575, + "pack_size": 7918758220, "total_omitted": 37, "omitted_files": [ { @@ -89455,16 +89455,6 @@ "minivmac" ] }, - { - "dest": "macintosh/MinivMacBootv2.dsk", - "sha1": "20bb0271d02b1ab3b4cfe7c8d6b599abdbc5324e", - "sha256": "90dceaece71be101bf709ee20691c9e8486969417ffc51e4d1fb3c11e567f796", - "size": 25165824, - "repo_path": "bios/Apple/Macintosh II/MinivMacBootv2.dsk", - "cores": [ - "minivmac" - ] - }, { "dest": "palmos41-en-m515.rom", "sha1": "cc4898ee8cae4669fc19e184c5b560c770e731b3", diff --git a/install/knulli.json b/install/knulli.json index ed35da575..c203d1e0f 100644 --- a/install/knulli.json +++ b/install/knulli.json @@ -29,10 +29,10 @@ } ], "standalone_copies": [], - "total_files": 9574, - "total_size": 9693164406, - "pack_files": 13218, - "pack_size": 9796721749, + "total_files": 9573, + "total_size": 9667998582, + "pack_files": 13217, + "pack_size": 9771555925, "total_omitted": 425, "omitted_files": [ { @@ -136968,19 +136968,6 @@ "mesen" ] }, - { - "dest": "macintosh/MinivMacBootv2.dsk", - "sha1": "20bb0271d02b1ab3b4cfe7c8d6b599abdbc5324e", - "sha256": "90dceaece71be101bf709ee20691c9e8486969417ffc51e4d1fb3c11e567f796", - "size": 25165824, - "repo_path": "bios/Apple/Macintosh II/MinivMacBootv2.dsk", - "cores": [ - "minivmac" - ], - "systems": [ - "apple-macintosh-ii" - ] - }, { "dest": "64DD_IPL_JP.n64", "sha1": "bf861922dcb78c316360e3e742f4f70ff63c9bc3", diff --git a/install/lakka.json b/install/lakka.json index 17bff0dbd..763898c0b 100644 --- a/install/lakka.json +++ b/install/lakka.json @@ -20,10 +20,10 @@ } ], "standalone_copies": [], - "total_files": 8331, - "total_size": 7012087459, - "pack_files": 12472, - "pack_size": 7127206279, + "total_files": 8330, + "total_size": 6986921635, + "pack_files": 12471, + "pack_size": 7102040455, "total_omitted": 37, "omitted_files": [ { @@ -107907,19 +107907,6 @@ "apple-macintosh-ii" ] }, - { - "dest": "macintosh/MinivMacBootv2.dsk", - "sha1": "20bb0271d02b1ab3b4cfe7c8d6b599abdbc5324e", - "sha256": "90dceaece71be101bf709ee20691c9e8486969417ffc51e4d1fb3c11e567f796", - "size": 25165824, - "repo_path": "bios/Apple/Macintosh II/MinivMacBootv2.dsk", - "cores": [ - "minivmac" - ], - "systems": [ - "apple-macintosh-ii" - ] - }, { "dest": "Mupen64plus/font.ttf", "sha1": "1d7f6fa0c34e3d50be52c16a0816bebac309fe41", diff --git a/install/recalbox.json b/install/recalbox.json index 8f9914276..1c8e4de66 100644 --- a/install/recalbox.json +++ b/install/recalbox.json @@ -3474,17 +3474,6 @@ "cores": null, "systems": [ "macintosh" - ], - "alternatives": [ - { - "sha1": "20bb0271d02b1ab3b4cfe7c8d6b599abdbc5324e", - "sha256": "90dceaece71be101bf709ee20691c9e8486969417ffc51e4d1fb3c11e567f796", - "size": 25165824, - "repo_path": "bios/Apple/Macintosh II/MinivMacBootv2.dsk", - "cores": [ - "minivmac" - ] - } ] }, { diff --git a/install/retroarch.json b/install/retroarch.json index ae81d672a..577602ba9 100644 --- a/install/retroarch.json +++ b/install/retroarch.json @@ -643,10 +643,10 @@ } } ], - "total_files": 8339, - "total_size": 7105270311, - "pack_files": 14922, - "pack_size": 7247303675, + "total_files": 8338, + "total_size": 7080104487, + "pack_files": 14921, + "pack_size": 7222137851, "total_omitted": 37, "omitted_files": [ { @@ -108877,19 +108877,6 @@ "apple-macintosh-ii" ] }, - { - "dest": "macintosh/MinivMacBootv2.dsk", - "sha1": "20bb0271d02b1ab3b4cfe7c8d6b599abdbc5324e", - "sha256": "90dceaece71be101bf709ee20691c9e8486969417ffc51e4d1fb3c11e567f796", - "size": 25165824, - "repo_path": "bios/Apple/Macintosh II/MinivMacBootv2.dsk", - "cores": [ - "minivmac" - ], - "systems": [ - "apple-macintosh-ii" - ] - }, { "dest": "Mupen64plus/font.ttf", "sha1": "1d7f6fa0c34e3d50be52c16a0816bebac309fe41", diff --git a/install/retrodeck.json b/install/retrodeck.json index 3df89df47..77f4737f3 100644 --- a/install/retrodeck.json +++ b/install/retrodeck.json @@ -292,10 +292,10 @@ "source": "bios/dc/dc_nvmem.bin" } ], - "total_files": 8870, - "total_size": 8948017932, - "pack_files": 12783, - "pack_size": 9064705218, + "total_files": 8869, + "total_size": 8922852108, + "pack_files": 12782, + "pack_size": 9039539394, "total_omitted": 66, "omitted_files": [ { @@ -128768,19 +128768,6 @@ "apple-macintosh-ii" ] }, - { - "dest": "bios/macintosh/MinivMacBootv2.dsk", - "sha1": "20bb0271d02b1ab3b4cfe7c8d6b599abdbc5324e", - "sha256": "90dceaece71be101bf709ee20691c9e8486969417ffc51e4d1fb3c11e567f796", - "size": 25165824, - "repo_path": "bios/Apple/Macintosh II/MinivMacBootv2.dsk", - "cores": [ - "minivmac" - ], - "systems": [ - "apple-macintosh-ii" - ] - }, { "dest": "bios/palmos41-en-m515.rom", "sha1": "cc4898ee8cae4669fc19e184c5b560c770e731b3", diff --git a/install/retropie.json b/install/retropie.json index 9589e736d..a001519d4 100644 --- a/install/retropie.json +++ b/install/retropie.json @@ -16,10 +16,10 @@ } ], "standalone_copies": [], - "total_files": 8684, - "total_size": 8720947634, - "pack_files": 14760, - "pack_size": 8839330716, + "total_files": 8683, + "total_size": 8695781810, + "pack_files": 14759, + "pack_size": 8814164892, "total_omitted": 347, "omitted_files": [ { @@ -113671,19 +113671,6 @@ "apple-macintosh-ii" ] }, - { - "dest": "macintosh/MinivMacBootv2.dsk", - "sha1": "20bb0271d02b1ab3b4cfe7c8d6b599abdbc5324e", - "sha256": "90dceaece71be101bf709ee20691c9e8486969417ffc51e4d1fb3c11e567f796", - "size": 25165824, - "repo_path": "bios/Apple/Macintosh II/MinivMacBootv2.dsk", - "cores": [ - "minivmac" - ], - "systems": [ - "apple-macintosh-ii" - ] - }, { "dest": "vMac.ROM", "sha1": "32daf772960c7ed31f41b95055968532b81d0896", diff --git a/install/rocknix.json b/install/rocknix.json index 43b4ca07a..6f2c67bc7 100644 --- a/install/rocknix.json +++ b/install/rocknix.json @@ -21,10 +21,10 @@ } ], "standalone_copies": [], - "total_files": 7328, - "total_size": 8216627928, - "pack_files": 13677, - "pack_size": 8360468025, + "total_files": 7327, + "total_size": 8191462104, + "pack_files": 13676, + "pack_size": 8335302201, "total_omitted": 115, "omitted_files": [ { @@ -76010,16 +76010,6 @@ "minivmac" ] }, - { - "dest": "macintosh/MinivMacBootv2.dsk", - "sha1": "20bb0271d02b1ab3b4cfe7c8d6b599abdbc5324e", - "sha256": "90dceaece71be101bf709ee20691c9e8486969417ffc51e4d1fb3c11e567f796", - "size": 25165824, - "repo_path": "bios/Apple/Macintosh II/MinivMacBootv2.dsk", - "cores": [ - "minivmac" - ] - }, { "dest": "palmos41-en-m515.rom", "sha1": "cc4898ee8cae4669fc19e184c5b560c770e731b3", diff --git a/install/romm.json b/install/romm.json index a9b713659..82319941e 100644 --- a/install/romm.json +++ b/install/romm.json @@ -6,7 +6,7 @@ "platform": "romm", "display_name": "RomM", "version": "5.4.0", - "generated": "2026-11-05T18:33:47Z", + "generated": "2026-11-06T13:49:27Z", "base_destination": "bios", "detect": [ { @@ -26,7 +26,7 @@ "total_size": 872654387, "pack_files": 467, "pack_size": 872654387, - "total_omitted": 777, + "total_omitted": 776, "omitted_files": [ { "dest": "32X_G_BIOS.BIN", @@ -3016,16 +3016,6 @@ "mame2003" ] }, - { - "dest": "macintosh/MinivMacBootv2.dsk", - "name": "MinivMacBootv2.dsk", - "system": "", - "required": false, - "reason": "below_platform_folder", - "cores": [ - "minivmac" - ] - }, { "dest": "mame2003-plus/artwork/blueshrk.zip", "name": "blueshrk.zip", diff --git a/tests/test_launcher_aliases.py b/tests/test_launcher_aliases.py index fb0ba7b92..891e8634a 100644 --- a/tests/test_launcher_aliases.py +++ b/tests/test_launcher_aliases.py @@ -6,11 +6,14 @@ names live in the platform's ``launchers:`` layer. Copied into a profile as aliases, they claimed that xemu opens them, and xemu-libretro offers Complex_4627_v1.03.bin, not Complex_4627v1.03.bin (ui/xemu-libretro.c:115-118). -Two checks read the committed data: +Three checks read the committed data: - an alias equal to a name a launcher of the same emulator chooses is kept only when the entry's own note or description names it in a sentence that speaks of no platform, next to a ``source_ref`` into the emulator's code; +- an entry whose note names its own file only in sentences about a platform + is a launcher's choice: Mini vMac opens no MinivMacBootv2.dsk, the .cmd + Recalbox writes names it; - no entry cites a platform's launcher script as its source. """ @@ -42,6 +45,13 @@ LAUNCHER_REF = re.compile( r"\bemuDeck\w*\.sh\b|\bscriptmodules/|\(launcher\)", ) +# Entries whose name is the one a platform's launcher picks, kept because +# the code takes any name and the entry needs one. +NAMED_FOR_A_LAUNCHER = { + ("pcsx_rearmed_standalone", "SCPH1001.BIN"): + "the code lists any 512 KiB file (frontend/menu.c:2619-2628)", +} + # Profiles whose entries still rest on a launcher, with the fact that blocks # reading the emulator itself. LAUNCHER_SOURCED = { @@ -119,6 +129,27 @@ class ProfileAliasesAreCodeNames(unittest.TestCase): "code, stated in the entry's note with its source_ref, or removed", ) + def test_an_entry_named_only_by_a_launcher_is_not_the_emulators(self) -> None: + launchers = _launcher_names() + offenders = [] + for key, profile in _profiles().items(): + emulator_names = {key} | {str(c) for c in profile.get("cores") or []} + for entry in profile.get("files") or []: + name = str(entry.get("name") or "").rsplit("/", 1)[-1] + if (key, name) in NAMED_FOR_A_LAUNCHER or not any( + emulator in emulator_names + for _platform, emulator in launchers.get(name.casefold(), ()) + ): + continue + prose = _text(entry.get("note")) + " " + _text(entry.get("description")) + if name in prose and not _named_without_platform(name, prose): + offenders.append(f"{key}: {name}") + self.assertEqual( + offenders, [], + "an entry whose own note names it only as a platform's choice " + "belongs to that platform's launchers: layer", + ) + def test_rosalies_mupen_gui_names_stay_out_of_mupen64plus(self) -> None: """RetroBat's mupen64 generator configures Rosalie's Mupen GUI and writes IPL_USA.n64 and IPL_DEV.n64 into its config diff --git a/wiki/installer.md b/wiki/installer.md index cd587c645..18f8d798f 100644 --- a/wiki/installer.md +++ b/wiki/installer.md @@ -410,13 +410,13 @@ A RetroArch dry run into an empty folder, with the list of 2026-11-06, printed t ``` Fetching file index for retroarch... 106 files read from RetroArch's save directory go to a folder per core under /home/me/.config/retroarch/saves - 14930 files (6.7 GB) - 3260 BIOS files (4.1 GB), 5089 game data files (2.5 GB) and 6581 data files (135.5 MB). + 14929 files (6.7 GB) + 3259 BIOS files (4.1 GB), 5089 game data files (2.5 GB) and 6581 data files (135.5 MB). Game data: files a game or a game engine reads, of no use to the other cores. Data files: the files an emulator reads from a data folder of its own, such as Dolphin's Sys and PPSSPP's assets. Not installable: 37 files are not in the collection, 2 of them required. Checking existing files... - 0 in place, 14930 missing, 0 wrong copies + 0 in place, 14929 missing, 0 wrong copies ``` @@ -475,13 +475,13 @@ few minutes on a memory card, because every file is hashed: ``` Fetching file index for batocera... 23 files read from Batocera's save directory go to a folder per system under /userdata/saves - 18171 files (9.3 GB) - 3155 BIOS files (4.4 GB), 11544 game data files (4.8 GB) and 3472 data files (81.8 MB). + 18170 files (9.2 GB) + 3154 BIOS files (4.3 GB), 11544 game data files (4.8 GB) and 3472 data files (81.8 MB). Game data: files a game or a game engine reads, of no use to the other cores. Data files: the files an emulator reads from a data folder of its own, such as Dolphin's Sys and PPSSPP's assets. Not installable: 426 files are not in the collection, 80 of them required. Checking existing files... - 0 in place, 18171 missing, 0 wrong copies + 0 in place, 18170 missing, 0 wrong copies ``` @@ -496,10 +496,10 @@ as the log of the run below: ``` -Downloading 14699 files (9.2 GB)... +Downloading 14698 files (9.2 GB)... Press Ctrl+C to stop. Running the same command again carries on from here. - [1/14699] panafz1.bin ok - [2/14699] panafz10.bin ok + [1/14698] panafz1.bin ok + [2/14698] panafz10.bin ok ``` @@ -511,8 +511,8 @@ command again picks up where it stopped. ``` -Done. 18171 files installed. - Installed: 3155 BIOS files, 11544 game data files and 3472 data files. +Done. 18170 files installed. + Installed: 3154 BIOS files, 11544 game data files and 3472 data files. BIOS folder: /userdata/bios 426 files were not installed: the collection does not hold them, or its copy fails their check. Needed to start an emulator (1 file): @@ -566,7 +566,7 @@ The same command with `--check` reads the folder and writes nothing: ``` Checking existing files... - 18171 in place, 0 missing, 0 wrong copies + 18170 in place, 0 missing, 0 wrong copies Everything is in place. ``` @@ -760,8 +760,8 @@ by `scripts/generate_installer_doc.py`): ``` -RetroArch: 14930 files, 6.7 GB. - 3260 BIOS files (4.1 GB), 5089 game data files (2.5 GB) and 6581 data files (135.5 MB). +RetroArch: 14929 files, 6.7 GB. + 3259 BIOS files (4.1 GB), 5089 game data files (2.5 GB) and 6581 data files (135.5 MB). Game data: files a game or a game engine reads, of no use to the other cores. Data files: the files an emulator reads from a data folder of its own, such as Dolphin's Sys and PPSSPP's assets. BIOS folder: /home/me/.config/retroarch/system Not available here, and needed to start its emulator: sfiii2a.zip (Capcom Cps3). Your own copy goes in the BIOS folder. @@ -775,8 +775,8 @@ RetroArch: 14930 files, 6.7 GB. Counted again for your choices. Nothing is written before Enter. -RetroArch: 9841 files, 4.2 GB. - 3260 BIOS files (4.1 GB) and 6581 data files (135.5 MB). 5089 game data files left out. +RetroArch: 9840 files, 4.2 GB. + 3259 BIOS files (4.1 GB) and 6581 data files (135.5 MB). 5089 game data files left out. Game data: files a game or a game engine reads, of no use to the other cores. Data files: the files an emulator reads from a data folder of its own, such as Dolphin's Sys and PPSSPP's assets. BIOS folder: /home/me/.config/retroarch/system Not available here, and needed to start its emulator: sfiii2a.zip (Capcom Cps3). Your own copy goes in the BIOS folder.