From 7164e8a125d99c67db746b68dc5a5fcd4a59de1d Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Tue, 6 Oct 2026 12:43:09 +0200 Subject: [PATCH] fix: an untagged bios serves every region --- scripts/region.py | 19 ++++++++++++++----- tests/test_region.py | 6 ++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/scripts/region.py b/scripts/region.py index 9f5de5a5..b961fa23 100644 --- a/scripts/region.py +++ b/scripts/region.py @@ -255,16 +255,25 @@ def fallback_groups( index: dict[str, dict], requested: list[str], ) -> list[str]: - """Group IDs where no candidate matched, so the whole group was kept.""" + """Group IDs where no candidate matched, so the whole group was kept. + + A world file, or one that declares no region at all, answers every + region: the C64 kernal VICE loads by default is untagged, and a group + holding it beside a Japanese and a Swedish kernal does have a BIOS for + North America. + """ if not requested: return [] out: list[str] = [] for group_id, members in groups.items(): ranked = _competing_ranks(members, index, requested) - has_world = any( - WORLD in lookup_regions(index, destination, name) - for destination, name in members + served = any( + not regions or WORLD in regions + for regions in ( + lookup_regions(index, destination, name) + for destination, name in members + ) ) - if ranked and not has_world and min(r for r, _ in ranked) == len(requested): + if ranked and not served and min(r for r, _ in ranked) == len(requested): out.append(group_id) return sorted(out) diff --git a/tests/test_region.py b/tests/test_region.py index 9f7770b7..af95d7e8 100644 --- a/tests/test_region.py +++ b/tests/test_region.py @@ -355,6 +355,12 @@ class TestFallbackGroups(unittest.TestCase): region.fallback_groups(groups, self.index, ["north-america"]), ["fds"] ) + def test_an_untagged_bios_answers_every_region(self): + """VICE's generic kernal is untagged beside its Japanese one: the C64 + was reported as having no BIOS for North America.""" + groups = {"fds": [("disksys.rom", "disksys.rom"), ("generic.rom", "generic.rom")]} + self.assertEqual(region.fallback_groups(groups, self.index, ["north-america"]), []) + def test_no_requested_regions_reports_nothing(self): groups = {"fds": [("disksys.rom", "disksys.rom")]} self.assertEqual(region.fallback_groups(groups, self.index, []), [])