From e4960dd4f83fa64c1af18b91126d8c6541bb64f2 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Sun, 18 Oct 2026 01:19:52 +0200 Subject: [PATCH] fix: declare EmuDeck's emulators as standalone --- platforms/emudeck.yml | 30 ++++++++++++++++++++++++++++++ scripts/scraper/emudeck_scraper.py | 6 ++++++ tests/test_audit_regressions.py | 20 ++++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/platforms/emudeck.yml b/platforms/emudeck.yml index efecb9c7..bdfe1555 100644 --- a/platforms/emudeck.yml +++ b/platforms/emudeck.yml @@ -35,6 +35,36 @@ cores: - xenia - xenianative - yuzu +standalone_cores: +- ares +- armsx2 +- azahar +- bigpemu +- cemu +- citron +- dolphin +- duckstation +- eden +- flycast +- mame +- melonds +- mgba +- model2 +- mupen64plus_next +- pcsx2 +- ppsspp +- primehack +- rpcs3 +- ryujinx +- scummvm +- shadps4 +- supermodel +- suyu +- vita3k +- xemu +- xenia +- xenianative +- yuzu systems: sony-playstation: files: diff --git a/scripts/scraper/emudeck_scraper.py b/scripts/scraper/emudeck_scraper.py index 0f495884..b3a1600d 100644 --- a/scripts/scraper/emudeck_scraper.py +++ b/scripts/scraper/emudeck_scraper.py @@ -441,6 +441,12 @@ class Scraper(BaseScraper): "hash_type": "md5", "verification_mode": "md5", "cores": cores, + # Every EmuScripts installer sets up a standalone app (RetroArch's + # cores come from its own script, skipped above): Dolphin, Cemu, + # xemu, ARMSX2 and Supermodel ran with the libretro layout and + # lost their standalone-only files. A profile with no standalone + # build keeps its layout (runs_standalone). + "standalone_cores": list(cores), "systems": systems, } diff --git a/tests/test_audit_regressions.py b/tests/test_audit_regressions.py index 7a67ba4f..e7686ccb 100644 --- a/tests/test_audit_regressions.py +++ b/tests/test_audit_regressions.py @@ -3803,5 +3803,25 @@ class ATreeNobodyHoldsIsMissingNotAnAsset(unittest.TestCase): self.assertIsNone(largefiles._fetch_asset("sub", tmp, "", "", offline=True)) + +class EmuDeckRunsItsEmulatorsStandalone(unittest.TestCase): + """EmuDeck declared no standalone_cores: Dolphin, Cemu, xemu, ARMSX2 and + Supermodel, installed as apps by EmuScripts, got the libretro layout and + lost their standalone-only files.""" + + def test_every_emuscripts_emulator_is_standalone(self): + from scripts.common import load_platform_config, runs_standalone, load_emulator_profiles + + config = load_platform_config("emudeck", str(ROOT / "platforms")) + self.assertEqual(sorted(config["standalone_cores"]), sorted(config["cores"])) + profiles = load_emulator_profiles(str(ROOT / "emulators")) + standalone = set(config["standalone_cores"]) + for name in ("dolphin", "cemu", "armsx2", "supermodel"): + with self.subTest(emulator=name): + self.assertTrue(runs_standalone(name, profiles[name], standalone)) + source = (ROOT / "scripts" / "scraper" / "emudeck_scraper.py").read_text() + self.assertIn('"standalone_cores": list(cores)', source) + + if __name__ == "__main__": unittest.main()