diff --git a/emulators/genesis_plus_gx.yml b/emulators/genesis_plus_gx.yml index f844c792..d6f4389b 100644 --- a/emulators/genesis_plus_gx.yml +++ b/emulators/genesis_plus_gx.yml @@ -64,9 +64,9 @@ files: # ------------------------------------------------------- - name: bios_U.sms system: sega-mastersystem - region: [north-america] + region: [north-america, europe] required: false - note: "Master System (NTSC-U) boot ROM. Snail maze game built in." + note: "Master System (NTSC-U) boot ROM. Snail maze game built in. REGION_USA is the default of sms_cart_region_detect for any export header outside the PAL CRC list, so European cartridges load it too (core/cart_hw/sms_cart.c:831-874)." source_ref: "core/loadrom.c:511" - name: bios_E.sms diff --git a/emulators/genesis_plus_gx_wide.yml b/emulators/genesis_plus_gx_wide.yml index dbb69a64..3d57f035 100644 --- a/emulators/genesis_plus_gx_wide.yml +++ b/emulators/genesis_plus_gx_wide.yml @@ -49,8 +49,9 @@ files: - name: bios_U.sms system: sega-mastersystem - region: [north-america] + region: [north-america, europe] required: false + note: "REGION_USA is the default of sms_cart_region_detect for any export header outside the PAL CRC list, so European cartridges load it too (core/cart_hw/sms_cart.c:863-864)." source_ref: "core/loadrom.c:512" - name: bios_E.sms diff --git a/install/batocera.json b/install/batocera.json index a75ff819..c78f7788 100644 --- a/install/batocera.json +++ b/install/batocera.json @@ -131004,6 +131004,7 @@ "genesis_plus_gx_wide" ], "regions": [ + "europe", "north-america" ], "region_groups": [ diff --git a/install/bizhawk.json b/install/bizhawk.json index 51dcb329..57c376f2 100644 --- a/install/bizhawk.json +++ b/install/bizhawk.json @@ -8267,6 +8267,7 @@ "sega-master-system" ], "regions": [ + "europe", "north-america" ], "region_groups": [ diff --git a/install/lakka.json b/install/lakka.json index 97794410..95d0ac4f 100644 --- a/install/lakka.json +++ b/install/lakka.json @@ -9081,6 +9081,7 @@ "sega-master-system" ], "regions": [ + "europe", "north-america" ], "region_groups": [ diff --git a/install/recalbox.json b/install/recalbox.json index 0eb872e4..f615ad65 100644 --- a/install/recalbox.json +++ b/install/recalbox.json @@ -5602,6 +5602,7 @@ "sega-master-system" ], "regions": [ + "europe", "north-america" ], "region_system_groups": [ @@ -39284,6 +39285,7 @@ "sega-master-system" ], "regions": [ + "europe", "north-america" ], "region_groups": [ diff --git a/install/retroarch.json b/install/retroarch.json index c6fbf48b..a3243acc 100644 --- a/install/retroarch.json +++ b/install/retroarch.json @@ -9200,6 +9200,7 @@ "sega-master-system" ], "regions": [ + "europe", "north-america" ], "region_groups": [ diff --git a/install/retrodeck.json b/install/retrodeck.json index 2db379bd..204875d0 100644 --- a/install/retrodeck.json +++ b/install/retrodeck.json @@ -78082,6 +78082,7 @@ "sega-master-system" ], "regions": [ + "europe", "north-america" ], "region_groups": [ diff --git a/install/retropie.json b/install/retropie.json index 9be53d31..ba7c1512 100644 --- a/install/retropie.json +++ b/install/retropie.json @@ -10145,6 +10145,7 @@ "sega-master-system" ], "regions": [ + "europe", "north-america" ], "region_groups": [ diff --git a/install/romm.json b/install/romm.json index 6d04c924..a4ce77c6 100644 --- a/install/romm.json +++ b/install/romm.json @@ -5,7 +5,7 @@ "platform": "romm", "display_name": "RomM", "version": "1.0", - "generated": "2026-10-18T11:04:01Z", + "generated": "2026-10-18T11:24:19Z", "base_destination": "bios", "detect": [ { @@ -3552,6 +3552,7 @@ "sega-master-system" ], "regions": [ + "europe", "north-america" ], "region_system_groups": [ diff --git a/tests/test_region.py b/tests/test_region.py index d09c488f..8be6d0b7 100644 --- a/tests/test_region.py +++ b/tests/test_region.py @@ -937,5 +937,31 @@ class UnknownRegionSaysWhatToType(unittest.TestCase): self.assertIn("Short forms:", str(caught.exception)) + +class GenesisPlusGxUsBiosServesEurope(unittest.TestCase): + """sms_cart_region_detect returns REGION_USA for any export header + outside the PAL CRC list, European cartridges included, and REGION_USA + loads bios_U.sms. Tagged north-america only, --region eu,jp dropped it.""" + + def test_eu_jp_keeps_bios_u(self): + from pathlib import Path + + from common import load_emulator_profiles + from region import build_region_index, parse_requested, resolve_region_drops + + root = Path(__file__).resolve().parents[1] + profiles = load_emulator_profiles(str(root / "emulators")) + for name in ("genesis_plus_gx", "genesis_plus_gx_wide"): + with self.subTest(profile=name): + index = build_region_index({name: profiles[name]}) + group = {"sega-mastersystem": [ + (f"bios/{n}", n) for n in ("bios_U.sms", "bios_E.sms", "bios_J.sms") + ]} + drops = resolve_region_drops( + group, index, parse_requested("eu,jp"), None + ) + self.assertNotIn("bios/bios_U.sms", drops) + + if __name__ == "__main__": unittest.main()