diff --git a/emulators/mame.yml b/emulators/mame.yml index a9439bbfe..b7f23ce3d 100644 --- a/emulators/mame.yml +++ b/emulators/mame.yml @@ -13,6 +13,26 @@ version_basis: path: "makefile" pattern: '#define BARE_BUILD_VERSION "([^"]+)"' display_name: "Arcade (MAME)" +pin_build: + - platform: knulli + repo: "https://github.com/knulli-cfw/knulli-linux" + revision: "20260511" + path: "batocera/package/batocera/emulators/retroarch/libretro/libretro-mame/libretro-mame.mk" + variable: LIBRETRO_MAME_VERSION + value: "lrmame0278" + - platform: knulli + repo: "https://github.com/knulli-cfw/knulli-linux" + revision: "20260511" + path: "batocera/package/batocera/emulators/mame/mame.mk" + variable: MAME_VERSION + value: "gm0277sr221e" +config_reads: + - file: "command line" + platforms: [knulli] + source_ref: "src/emu/emuopts.cpp:680-694" + keys: + - key: "-hard" + source_ref: "src/devices/imagedev/harddriv.h:43, src/emu/diimage.cpp:1131-1165, src/emu/emuopts.cpp:389-404, src/mame/apple/maclc3.cpp:266" cores: - mame @@ -182,6 +202,13 @@ notes: | hash and pluginspath to plugins (src/emu/emuopts.cpp:44-46, 53), and the sets are read at the top of a rompath directory. + KNULLI ships libretro/mame lrmame0278 and GroovyMAME gm0277sr221e. In both + a machine with one hard disk image (the LC III's scsi:0 harddisk) names its + option -hard, the brief type name of the image (harddriv.h:43, diimage.cpp + update_names, emuopts.cpp get_full_option_names). GroovyMAME's diimage.cpp, + harddriv.h and maclc3.cpp equal mamedev mame0277, its emuopts.cpp carries + the same code at 396-411 and 695. + BIOS root set names follow current MAME conventions. ZN-based boards renamed from legacy names (cpzn1 to coh1000c, atpsx to coh1000a, etc.). File structure uses vendor-based paths (src/mame/{vendor}/). diff --git a/tests/test_launcher_placement.py b/tests/test_launcher_placement.py index 5cf239dc5..2ab289e51 100644 --- a/tests/test_launcher_placement.py +++ b/tests/test_launcher_placement.py @@ -1148,6 +1148,20 @@ class MameOnRetroDeckRomPaths(unittest.TestCase): self.assertEqual(places["stvbios.zip"] - {"arcade", "mame", "consolearcade"}, {"stv"}) +class MacBootDisksOnKnulli(unittest.TestCase): + def test_the_hard_records_bind(self) -> None: + # mameGenerator.py and libretroMAMEConfig.py pass the boot disk as + # -hard, the brief name of the LC III's one hard disk image + # (harddriv.h:43, diimage.cpp:1131-1165, maclc3.cpp:266). + from launchers import bound_launchers + + config = load_platform_config("knulli", str(REPO_ROOT / "platforms")) + profiles = load_emulator_profiles(str(REPO_ROOT / "emulators")) + bound = [r for r in bound_launchers(config, profiles) + if r.get("emulator") == "mame" and "-hard" in str(r.get("passes_to"))] + self.assertEqual(sorted(r["build"] for r in bound), ["libretro", "standalone"]) + + class ArcadeParentSources(unittest.TestCase): def test_the_index_names_each_driver_source(self) -> None: import json