fix: file mame sets under their systems

934 of the 1,563 mame.yml entries named no system and so served every
system of the profile: each MAME-run system's set was the whole profile.

The 65 BIOS root sets written by hand take the system groovymame.yml
gives the same 0.289 archive (sega-systemsp, konami-gx, taito-gnet and
41 more ids, added to systems:). The 19 XaviX sets take tvgames, the
directory MAME keeps xavix.cpp in. They seed the device walk.

mame_hash_scraper --devices files a device set under arcade when a
machine no entry places loads it: MAME starts such a machine from its
set name, as an arcade folder passes it. 1,106 of the 1,254 device sets
now carry arcade, alone or beside the systems of their placed machines.
qsound, ym2413 and ym2608, written by hand, take the same answer.

Left without a system: 41 device sets no machine of the listxml
instantiates (a software list slot selects them), and the hash/,
plugins/ and floppy/ trees every machine reads.
This commit is contained in:
Abdessamad Derraz committed 2026-11-03 15:23:03 +01:00
1 parent 5cb4db61d8
commit ae8aae8469
4 files changed
+2392 -198

No files matched your search

+32
View File
@@ -32,6 +32,7 @@ from scripts.scraper.mame_devices import (
attribute_softlists,
attribute_systems,
default_floppy_samples,
device_systems,
drive_form_factor,
find_rom_block,
floppy_drives,
@@ -500,6 +501,37 @@ class DeviceSetsFollowTheMachinesThatLoadThem(unittest.TestCase):
)
class MachinesNoEntryPlacesCountUnderArcade(unittest.TestCase):
"""MAME starts any machine from its set name: a machine no seed places
is one an arcade folder can pass it, so its devices go under arcade."""
def test_a_set_only_unplaced_machines_load(self):
systems = device_systems(_release().machines, SEEDS, "arcade")
# ibm5150 is no system of the profile, and pc_kbd only it loads.
self.assertEqual(systems["pc_kbd"], ["arcade"])
def test_a_set_both_kinds_load_keeps_both(self):
# aes is placed by no seed and loads ym2610, as the MVS does.
systems = device_systems(_release().machines, SEEDS, "arcade")
self.assertEqual(systems["ym2610"], ["arcade", "snk-neogeo-mvs"])
self.assertEqual(systems["a2diskii"], ["apple2gs"])
self.assertEqual(systems["cart_dev"], ["snk-neogeo-mvs"])
def test_a_set_no_machine_instantiates_keeps_none(self):
machines = {
**_release().machines,
"orphan": MachineLinks("", True, ()),
}
systems = device_systems(machines, SEEDS, "arcade")
self.assertNotIn("orphan", systems)
def test_no_fallback_listed_is_attribute_systems(self):
machines = _release().machines
self.assertEqual(
device_systems(machines, SEEDS, ""), attribute_systems(machines, SEEDS)
)
class TheMergeWritesTheSystems(unittest.TestCase):
def setUp(self):