From 185529ce750dcd537e5e662d3b227ee6ba021584 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Tue, 20 Oct 2026 00:33:38 +0200 Subject: [PATCH] fix: pack only what BizHawk's database names EmuHawk finds every firmware by SHA1 against FirmwareDatabase.FirmwareRecords, and its cores are its own builds. The registry and the scraper both listed libretro cores whose systems overlap BizHawk's, so the pack shipped Clock Signal, O2EM, FBNeo, VICE and Citra files into Firmware/ that EmuHawk never reads. Both lists are now empty, as MiSTer's are: the database alone decides. --- platforms/_registry.yml | 47 ++++-------------------------- platforms/bizhawk.yml | 28 +----------------- scripts/scraper/bizhawk_scraper.py | 39 +++++-------------------- tests/test_scraper_contract.py | 12 ++++++++ 4 files changed, 25 insertions(+), 101 deletions(-) diff --git a/platforms/_registry.yml b/platforms/_registry.yml index ed8ea04f..52924999 100644 --- a/platforms/_registry.yml +++ b/platforms/_registry.yml @@ -535,48 +535,11 @@ platforms: # Windows: names differing only by case land on one file. case_insensitive_fs: true schedule: monthly - cores: - - applewin - - azahar - - beetle_ngp - - beetle_pce - - beetle_pcfx - - beetle_psx - - beetle_saturn - - beetle_vb - - beetle_wswan - - bsnes - - citra - - citra2018 - - citra_canary - - clk - - fbneo - - freechaf - - freeintv - - gambatte - - genesis_plus_gx - - handy - - mame - - melonds - - mgba - - mupen64plus_next - - numero - - o2em - - opera - - panda3ds - - picodrive - - ppsspp - - prboom - - prosystem - - puae - - quicknes - - sameboy - - snes9x - - stella - - trident - - vecx - - vice_x64 - - virtualjaguar + # EmuHawk finds firmware by SHA1 against FirmwareDatabase.FirmwareRecords + # and its cores are its own builds (CoreNames.cs): no libretro profile + # describes what it reads, so the database alone decides, as MiSTer's + # BiosDB does. + cores: [] target_scraper: null target_source: null install: diff --git a/platforms/bizhawk.yml b/platforms/bizhawk.yml index 47645b98..e2cefb4d 100644 --- a/platforms/bizhawk.yml +++ b/platforms/bizhawk.yml @@ -5,33 +5,7 @@ source: "https://raw.githubusercontent.com/TASEmulators/BizHawk/2.11.1/src/BizHa base_destination: Firmware hash_type: sha1 verification_mode: sha1 -cores: -- gambatte -- mgba -- sameboy -- melonds -- snes9x -- bsnes -- beetle_psx -- beetle_saturn -- beetle_pce -- beetle_pcfx -- beetle_wswan -- beetle_vb -- beetle_ngp -- opera -- stella -- picodrive -- ppsspp -- handy -- quicknes -- genesis_plus_gx -- mupen64plus_next -- puae -- prboom -- virtualjaguar -- vice_x64 -- mame +cores: [] systems: sega-32x: files: diff --git a/scripts/scraper/bizhawk_scraper.py b/scripts/scraper/bizhawk_scraper.py index f9c6df70..89134c5b 100644 --- a/scripts/scraper/bizhawk_scraper.py +++ b/scripts/scraper/bizhawk_scraper.py @@ -105,38 +105,13 @@ SYSTEM_ID_MAP: dict[str, str] = { "ZXSpectrum": "sinclair-zx-spectrum", } -# Cores that overlap with BizHawk's system coverage -BIZHAWK_CORES = [ - "gambatte", - "mgba", - "sameboy", - "melonds", - "snes9x", - "bsnes", - "beetle_psx", - "beetle_saturn", - "beetle_pce", - "beetle_pcfx", - "beetle_wswan", - "beetle_vb", - "beetle_ngp", - "opera", - "stella", - "picodrive", - "ppsspp", - "handy", - "quicknes", - "genesis_plus_gx", - # Ares64 is BizHawk's N64 core only. Its firmware (the 64DD IPL) is in - # FirmwareDatabase.cs. The ares profile's thirty systems are not what - # BizHawk runs ares for. - "mupen64plus_next", - "puae", - "prboom", - "virtualjaguar", - "vice_x64", - "mame", -] +# EmuHawk looks every firmware up by SHA1 against FirmwareDatabase.FirmwareRecords +# (FirmwareManager.cs), and its cores are its own builds (CoreNames.cs). A +# libretro profile of the same upstream emulator describes what that libretro +# build opens, not what EmuHawk reads: listing them by overlapping systems +# shipped Clock Signal, O2EM, FBNeo and VICE files into Firmware/. The +# database alone decides what the pack carries. +BIZHAWK_CORES: list[str] = [] def _safe_arithmetic(expr: str) -> int: diff --git a/tests/test_scraper_contract.py b/tests/test_scraper_contract.py index bdbbac99..8dfd13b5 100644 --- a/tests/test_scraper_contract.py +++ b/tests/test_scraper_contract.py @@ -451,6 +451,18 @@ class BizHawkRunsAresForN64Only(unittest.TestCase): self.assertNotIn("ares", platform["cores"]) self.assertNotIn("ares", registry["platforms"]["bizhawk"]["cores"]) + def test_no_profile_speaks_for_emuhawk(self): + """EmuHawk finds firmware by SHA1 in its own database. Cores listed + for overlapping systems shipped 400 files it never reads (Clock + Signal, O2EM, FBNeo, VICE).""" + import yaml + + root = Path(__file__).resolve().parents[1] + platform = yaml.safe_load((root / "platforms" / "bizhawk.yml").read_text()) + registry = yaml.safe_load((root / "platforms" / "_registry.yml").read_text()) + self.assertEqual(platform["cores"], []) + self.assertEqual(registry["platforms"]["bizhawk"]["cores"], []) + class EveryTargetCoreReachesAProfile(unittest.TestCase): """A target lists cores by their buildbot or package name. A name no