diff --git a/emulators/groovymame.yml b/emulators/groovymame.yml
index b650160c..03c67984 100644
--- a/emulators/groovymame.yml
+++ b/emulators/groovymame.yml
@@ -3290,7 +3290,7 @@ files:
- name: astrocde.zip
required: true
category: bios_zip
- system: astrocde
+ system: bally-astrocade
source_ref: "upstream src/mame/bally/astrohome.cpp:295"
contents:
- name: astro.bin
@@ -3301,7 +3301,7 @@ files:
- name: astrocdl.zip
required: true
category: bios_zip
- system: astrocde
+ system: bally-astrocade
source_ref: "upstream src/mame/bally/astrohome.cpp:296"
contents:
- name: ballyhlc.bin
@@ -3312,7 +3312,7 @@ files:
- name: astrocdw.zip
required: true
category: bios_zip
- system: astrocde
+ system: bally-astrocade
source_ref: "upstream src/mame/bally/astrohome.cpp:297"
contents:
- name: bioswhit.bin
diff --git a/emulators/mame.yml b/emulators/mame.yml
index 9281fba4..cb34d580 100644
--- a/emulators/mame.yml
+++ b/emulators/mame.yml
@@ -84,6 +84,10 @@ systems:
- xegs
- dragon64
- acorn-archimedes
+ - acorn-bbc-micro
+ - elektronika-bk
+ - enterprise-64-128
+ - vectrex
- vgmplay
notes: |
@@ -859,6 +863,7 @@ files:
- name: hod2bios.zip
required: false
category: bios_zip
+ system: sega-naomi
source_ref: "upstream src/mame/sega/naomi.cpp:10918"
note: "game-specific BIOS for House of the Dead 2"
contents:
@@ -894,6 +899,7 @@ files:
- name: f355dlx.zip
required: false
category: bios_zip
+ system: sega-naomi
source_ref: "upstream src/mame/sega/naomi.cpp:10919"
contents:
- name: "epr-21864.ic27"
@@ -928,6 +934,7 @@ files:
- name: f355bios.zip
required: false
category: bios_zip
+ system: sega-naomi
source_ref: "upstream src/mame/sega/naomi.cpp:10920"
contents:
- name: "epr-22851.ic27"
@@ -954,6 +961,7 @@ files:
- name: airlbios.zip
required: false
category: bios_zip
+ system: sega-naomi
source_ref: "upstream src/mame/sega/naomi.cpp:10921"
contents:
- name: "epr-21802.ic27"
@@ -1783,6 +1791,7 @@ files:
- name: kviper.zip
required: true
category: bios_zip
+ system: konami-viper
source_ref: "upstream src/mame/konami/viper.cpp:3213"
contents:
- name: "941b01.u25"
@@ -3516,7 +3525,7 @@ files:
- name: astrocde.zip
required: true
category: bios_zip
- system: astrocde
+ system: bally-astrocade
source_ref: "upstream src/mame/bally/astrohome.cpp:244-247"
contents:
- name: "astro.bin"
@@ -3527,7 +3536,7 @@ files:
- name: astrocdl.zip
required: false
category: bios_zip
- system: astrocde
+ system: bally-astrocade
source_ref: "upstream src/mame/bally/astrohome.cpp:249-251"
contents:
- name: "ballyhlc.bin"
@@ -3538,7 +3547,7 @@ files:
- name: astrocdw.zip
required: false
category: bios_zip
- system: astrocde
+ system: bally-astrocade
source_ref: "upstream src/mame/bally/astrohome.cpp:254-257"
contents:
- name: "bioswhit.bin"
@@ -5968,6 +5977,7 @@ files:
- name: 4dparprn.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2parprn.cpp:105-109"
note: >-
Device ROM set, loaded when a machine instantiates `Fourth Dimension
@@ -6304,6 +6314,7 @@ files:
- name: a2aevm80.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2videoterm.cpp:91-97"
note: >-
Device ROM set, loaded when a machine instantiates `Applied Engineering
@@ -6321,6 +6332,7 @@ files:
- name: a2ap16.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2videoterm.cpp:66-72"
note: >-
Device ROM set, loaded when a machine instantiates `IBS AP-16 80 column
@@ -6338,6 +6350,7 @@ files:
- name: a2ap16a.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2videoterm.cpp:74-80"
note: >-
Device ROM set, loaded when a machine instantiates `IBS AP-16 80 column
@@ -6355,6 +6368,7 @@ files:
- name: a2aplcrd.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2applicard.cpp:28-31"
note: >-
Device ROM set, loaded when a machine instantiates `PCPI Appli-Card`.
@@ -6380,6 +6394,7 @@ files:
- name: a2booti.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/booti.cpp:33-36"
note: >-
Device ROM set, loaded when a machine instantiates `Booti Card`.
@@ -6392,6 +6407,7 @@ files:
- name: a2bufgrapplerplus.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/grappler.cpp:34-51"
note: >-
Device ROM set, loaded when a machine instantiates `Orange Micro
@@ -6409,6 +6425,7 @@ files:
- name: a2bufgrapplerplusa.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/grappler.cpp:34-51"
note: >-
Device ROM set, loaded when a machine instantiates `Orange Micro
@@ -6426,6 +6443,7 @@ files:
- name: a2cffa02.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2cffa.cpp:33-36"
note: >-
Device ROM set, loaded when a machine instantiates `CFFA 2.0 Compact
@@ -6439,6 +6457,7 @@ files:
- name: a2cffa2.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2cffa.cpp:28-31"
note: >-
Device ROM set, loaded when a machine instantiates `CFFA 2.0 Compact
@@ -6452,6 +6471,7 @@ files:
- name: a2corvus.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2corvus.cpp:61-64"
note: >-
Device ROM set, loaded when a machine instantiates `Corvus Flat Cable
@@ -6465,6 +6485,7 @@ files:
- name: a2diskiing.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2diskiing.cpp:40-43"
note: >-
Device ROM set, loaded when a machine instantiates `Apple Disk II NG
@@ -6494,6 +6515,7 @@ files:
- name: a2focdrv.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2zipdrive.cpp:86-89"
note: >-
Device ROM set, loaded when a machine instantiates `Parsons Engineering
@@ -6507,6 +6529,7 @@ files:
- name: a2grappler.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/grappler.cpp:15-18"
note: >-
Device ROM set, loaded when a machine instantiates `Orange Micro
@@ -6520,6 +6543,7 @@ files:
- name: a2grapplerplus.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/grappler.cpp:21-31"
note: >-
Device ROM set, loaded when a machine instantiates `Orange Micro
@@ -6539,6 +6563,7 @@ files:
- name: a2hsscsi.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2hsscsi.cpp:59-62"
note: >-
Device ROM set, loaded when a machine instantiates `Apple II High-Speed
@@ -6552,6 +6577,7 @@ files:
- name: a2ieee488.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2ieee488.cpp:183-186"
note: >-
Device ROM set, loaded when a machine instantiates `Apple II IEEE-488
@@ -6591,6 +6617,7 @@ files:
- name: a2memexp.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2memexp.cpp:23-26"
note: >-
Device ROM set, loaded when a machine instantiates `Apple II Memory
@@ -6604,6 +6631,7 @@ files:
- name: a2mouse.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/mouse.cpp:144-154"
note: >-
Device ROM set, loaded when a machine instantiates `Apple II Mouse
@@ -6629,6 +6657,7 @@ files:
- name: a2parprn.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2parprn.cpp:100-103"
note: >-
Device ROM set, loaded when a machine instantiates `Apple II Parallel
@@ -6643,6 +6672,7 @@ files:
- name: a2pdromdr.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/prodosromdrive.cpp:76-79"
note: >-
Device ROM set, loaded when a machine instantiates `ProDOS ROM Drive`.
@@ -6655,6 +6685,7 @@ files:
- name: a2pic.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2pic.cpp:86-89"
note: >-
Device ROM set, loaded when a machine instantiates `Apple II Parallel
@@ -6668,6 +6699,7 @@ files:
- name: a2q68.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/q68.cpp:72-75"
note: >-
Device ROM set, loaded when a machine instantiates `Stellation Two
@@ -6681,6 +6713,7 @@ files:
- name: a2q68plus.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/q68.cpp:72-75"
note: >-
Device ROM set, loaded when a machine instantiates `Stellation Two Q-68
@@ -6694,6 +6727,7 @@ files:
- name: a2ramfac.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2memexp.cpp:28-34"
note: >-
Device ROM set, loaded when a machine instantiates `Applied Engineering
@@ -6792,6 +6826,7 @@ files:
- name: a2scsi.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2scsi.cpp:57-60"
note: >-
Device ROM set, loaded when a machine instantiates `Apple II SCSI Card`.
@@ -6845,6 +6880,7 @@ files:
- name: a2sider1.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/sider.cpp:99-102"
note: >-
Device ROM set, loaded when a machine instantiates `First Class
@@ -6858,6 +6894,7 @@ files:
- name: a2sider2.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/sider.cpp:94-97"
note: >-
Device ROM set, loaded when a machine instantiates `First Class
@@ -6871,6 +6908,7 @@ files:
- name: a2ssc.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2ssc.cpp:88-91"
note: >-
Device ROM set, loaded when a machine instantiates `Apple Super Serial
@@ -6884,6 +6922,7 @@ files:
- name: a2superdrive.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2superdrive.cpp:104-107"
note: >-
Device ROM set, loaded when a machine instantiates `Apple II 3.5" Disk
@@ -6939,6 +6978,7 @@ files:
- name: a2thunpl.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2thunderclock.cpp:43-46"
note: >-
Device ROM set, loaded when a machine instantiates `ThunderWare
@@ -6965,6 +7005,7 @@ files:
- name: a2tmstho.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/timemasterho.cpp:55-58"
note: >-
Device ROM set, loaded when a machine instantiates `Applied Engineering
@@ -6991,6 +7032,7 @@ files:
- name: a2ultrme.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2ultraterm.cpp:101-110"
note: >-
Device ROM set, loaded when a machine instantiates `Videx UltraTerm
@@ -7012,6 +7054,7 @@ files:
- name: a2ulttrm.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2ultraterm.cpp:88-97"
note: >-
Device ROM set, loaded when a machine instantiates `Videx UltraTerm
@@ -7033,6 +7076,7 @@ files:
- name: a2uniprint.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/uniprint.cpp:56-59"
note: >-
Device ROM set, loaded when a machine instantiates `Videx Uniprint
@@ -7046,6 +7090,7 @@ files:
- name: a2vidtrm.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2videoterm.cpp:44-64"
note: >-
Device ROM set, loaded when a machine instantiates `Videx Videoterm 80
@@ -7123,6 +7168,7 @@ files:
- name: a2vtc1.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2videoterm.cpp:82-89"
note: >-
Device ROM set, loaded when a machine instantiates `unknown Videoterm
@@ -7144,6 +7190,7 @@ files:
- name: a2vulcan.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2vulcan.cpp:68-71"
note: >-
Device ROM set, loaded when a machine instantiates `Applied Engineering
@@ -7157,6 +7204,7 @@ files:
- name: a2vulgld.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2vulcan.cpp:78-81"
note: >-
Device ROM set, loaded when a machine instantiates `Applied Engineering
@@ -7183,6 +7231,7 @@ files:
- name: a2zipdrv.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2zipdrive.cpp:81-84"
note: >-
Device ROM set, loaded when a machine instantiates `Zip Technologies
@@ -7985,6 +8034,7 @@ files:
- name: ace80.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2applicard.cpp:33-36"
note: >-
Device ROM set, loaded when a machine instantiates `Franklin ACE 80 CPU
@@ -8851,6 +8901,22 @@ files:
- name: ap2000.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/bus/centronics/epson_lx810l.cpp:75-80"
note: >-
Device ROM set, loaded when a machine instantiates `Epson ActionPrinter
@@ -8864,6 +8930,13 @@ files:
- name: aplcd150.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/nscsi/applecd.cpp:80-86"
note: >-
Device ROM set, loaded when a machine instantiates `AppleCD 150`.
@@ -8876,6 +8949,7 @@ files:
- name: aprissi.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/a2ssc.cpp:93-96"
note: >-
Device ROM set, loaded when a machine instantiates `Apricorn Super
@@ -8889,6 +8963,7 @@ files:
- name: arc_a448.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/a448.cpp:76-79"
note: >-
Device ROM set, loaded when a machine instantiates `Armadillo Systems
@@ -8902,6 +8977,7 @@ files:
- name: arc_a448b.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/a448.cpp:81-84"
note: >-
Device ROM set, loaded when a machine instantiates `Armadillo Systems
@@ -8915,6 +8991,7 @@ files:
- name: arc_acejoy.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/acejoy.cpp:51-54"
note: >-
Device ROM set, loaded when a machine instantiates `ACE Joy Connect`.
@@ -8927,6 +9004,7 @@ files:
- name: arc_armadeus.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/armadeus.cpp:56-59"
note: >-
Device ROM set, loaded when a machine instantiates `Clares Armadeus
@@ -8940,6 +9018,7 @@ files:
- name: arc_bbcio_aga30.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/io_morley.cpp:153-157"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AGA30 BBC I/O
@@ -8954,6 +9033,7 @@ files:
- name: arc_bbcio_aka10.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/io.cpp:191-199"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AKA10 BBC I/O
@@ -8978,6 +9058,7 @@ files:
- name: arc_bbcio_we.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/io_we.cpp:84-88"
note: >-
Device ROM set, loaded when a machine instantiates `Watford Electronics
@@ -8992,6 +9073,7 @@ files:
- name: arc_eaglem2.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/eaglem2.cpp:79-82"
note: >-
Device ROM set, loaded when a machine instantiates `Wild Vision/Computer
@@ -9005,6 +9087,7 @@ files:
- name: arc_ether1_aka25.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/ether1.cpp:84-87"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AKA25
@@ -9018,6 +9101,7 @@ files:
- name: arc_ether2_aeh50.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/ether2.cpp:67-70"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AEH50 Ethernet
@@ -9031,6 +9115,7 @@ files:
- name: arc_ether3_aeh54.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/ether3.cpp:60-63"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AEH54 10Base2
@@ -9044,6 +9129,7 @@ files:
- name: arc_ethera.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/ethera.cpp:60-63"
note: >-
Device ROM set, loaded when a machine instantiates `ANT Ethernet 10base2
@@ -9057,6 +9143,7 @@ files:
- name: arc_etherd.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/etherd.cpp:63-66"
note: >-
Device ROM set, loaded when a machine instantiates `Digital Services
@@ -9070,6 +9157,7 @@ files:
- name: arc_etherr.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/etherr.cpp:63-66"
note: >-
Device ROM set, loaded when a machine instantiates `RISC Developments
@@ -9083,6 +9171,7 @@ files:
- name: arc_faxpack.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/faxpack.cpp:74-77"
note: >-
Device ROM set, loaded when a machine instantiates `Computer Concepts
@@ -9096,6 +9185,7 @@ files:
- name: arc_greyhawk.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/greyhawk.cpp:67-70"
note: >-
Device ROM set, loaded when a machine instantiates `Computer Concepts
@@ -9109,6 +9199,7 @@ files:
- name: arc_hdisc_akd52.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/hdisc.cpp:61-64"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AKD52 Hard
@@ -9122,6 +9213,7 @@ files:
- name: arc_hdisc_cw.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/hdisc_cw.cpp:59-62"
note: >-
Device ROM set, loaded when a machine instantiates `Computerware Hard
@@ -9135,6 +9227,7 @@ files:
- name: arc_hdisc_morley.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/hdisc_morley.cpp:61-64"
note: >-
Device ROM set, loaded when a machine instantiates `Morley Electronics
@@ -9148,6 +9241,7 @@ files:
- name: arc_hdisc_we.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/hdisc_we.cpp:62-65"
note: >-
Device ROM set, loaded when a machine instantiates `Watford Electronics
@@ -9161,6 +9255,7 @@ files:
- name: arc_ide_be.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/ide_be.cpp:59-69"
note: >-
Device ROM set, loaded when a machine instantiates `Baildon Electronics
@@ -9190,6 +9285,7 @@ files:
- name: arc_ide_rdev.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/ide_rdev.cpp:58-61"
note: >-
Device ROM set, loaded when a machine instantiates `RISC Developments
@@ -9203,6 +9299,7 @@ files:
- name: arc_iomidi_aka15.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/io.cpp:207-211"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AKA15 MIDI and
@@ -9217,6 +9314,7 @@ files:
- name: arc_lark.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/lark.cpp:107-111"
note: >-
Device ROM set, loaded when a machine instantiates `Wild Vision/Computer
@@ -9231,6 +9329,7 @@ files:
- name: arc_lbp4.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/laserd.cpp:83-90"
note: >-
Device ROM set, loaded when a machine instantiates `Computer Concepts
@@ -9250,6 +9349,7 @@ files:
- name: arc_midi2.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/midi_emr.cpp:90-94"
note: >-
Device ROM set, loaded when a machine instantiates `EMR MIDI 2
@@ -9264,6 +9364,7 @@ files:
- name: arc_midi_aka16.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/io.cpp:213-221"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AKA16 MIDI
@@ -9288,6 +9389,7 @@ files:
- name: arc_midimax.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/midimax.cpp:76-82"
note: >-
Device ROM set, loaded when a machine instantiates `Wild Vision
@@ -9307,6 +9409,7 @@ files:
- name: arc_midimax2.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/midimax.cpp:84-88"
note: >-
Device ROM set, loaded when a machine instantiates `Wild Vision MidiMax
@@ -9321,6 +9424,7 @@ files:
- name: arc_nexus_a500.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/nexus.cpp:64-67"
note: >-
Device ROM set, loaded when a machine instantiates `SJ Research Nexus
@@ -9334,6 +9438,7 @@ files:
- name: arc_rom_aka05.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/rom.cpp:84-88"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AKA05 ROM
@@ -9348,6 +9453,7 @@ files:
- name: arc_rom_r225.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/rom.cpp:90-94"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AKA05 ROM
@@ -9365,6 +9471,7 @@ files:
- name: arc_rs423.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/rs423.cpp:62-65"
note: >-
Device ROM set, loaded when a machine instantiates `Archimedes Dual
@@ -9378,6 +9485,7 @@ files:
- name: arc_scan256.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scan256.cpp:62-65"
note: >-
Device ROM set, loaded when a machine instantiates `Watford Electronics
@@ -9391,6 +9499,7 @@ files:
- name: arc_scanjunior.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scanlight.cpp:137-141"
note: >-
Device ROM set, loaded when a machine instantiates `Computer Concepts
@@ -9405,6 +9514,7 @@ files:
- name: arc_scanjunior3.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scanlight.cpp:143-147"
note: >-
Device ROM set, loaded when a machine instantiates `Computer Concepts
@@ -9419,6 +9529,7 @@ files:
- name: arc_scanlight.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scanlight.cpp:131-135"
note: >-
Device ROM set, loaded when a machine instantiates `Computer Concepts
@@ -9433,6 +9544,7 @@ files:
- name: arc_scanvideo.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scanlight.cpp:149-153"
note: >-
Device ROM set, loaded when a machine instantiates `Computer Concepts
@@ -9447,6 +9559,7 @@ files:
- name: arc_scsi_aka30.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scsi_acorn.cpp:141-145"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AKA30 SCSI
@@ -9460,6 +9573,7 @@ files:
- name: arc_scsi_aka31.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scsi_acorn.cpp:147-151"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AKA31 SCSI
@@ -9473,6 +9587,7 @@ files:
- name: arc_scsi_aka32.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scsi_acorn.cpp:153-161"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AKA32 CDFS &
@@ -9497,6 +9612,7 @@ files:
- name: arc_scsi_cumana.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scsi_cumana.cpp:74-77"
note: >-
Device ROM set, loaded when a machine instantiates `Cumana 16bit SCSI
@@ -9510,6 +9626,7 @@ files:
- name: arc_scsi_ling.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scsi_ling.cpp:73-76"
note: >-
Device ROM set, loaded when a machine instantiates `Lingenuity SCSI
@@ -9523,6 +9640,7 @@ files:
- name: arc_scsi_morley.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scsi_morley.cpp:74-86"
note: >-
Device ROM set, loaded when a machine instantiates `Morley Electronics
@@ -9557,6 +9675,7 @@ files:
- name: arc_scsi_oak.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scsi_oak.cpp:173-184"
note: >-
Device ROM set, loaded when a machine instantiates `Oak Solutions 16 bit
@@ -9585,6 +9704,7 @@ files:
- name: arc_scsi_vti.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/scsi_vti.cpp:78-81"
note: >-
Device ROM set, loaded when a machine instantiates `VTI User Port and
@@ -9598,6 +9718,7 @@ files:
- name: arc_serial.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/serial.cpp:62-65"
note: >-
Device ROM set, loaded when a machine instantiates `Atomwide Serial
@@ -9611,6 +9732,7 @@ files:
- name: arc_spectra.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/spectra.cpp:62-65"
note: >-
Device ROM set, loaded when a machine instantiates `Beebug Spectra
@@ -9624,6 +9746,7 @@ files:
- name: arc_ua_morley.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/io_morley.cpp:159-163"
note: >-
Device ROM set, loaded when a machine instantiates `Morley Electronics
@@ -9638,6 +9761,7 @@ files:
- name: arc_uma_morley.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/io_morley.cpp:165-169"
note: >-
Device ROM set, loaded when a machine instantiates `Morley Electronics
@@ -9652,6 +9776,7 @@ files:
- name: arc_upa_hccs.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/io_hccs.cpp:62-66"
note: >-
Device ROM set, loaded when a machine instantiates `HCCS User/Analogue
@@ -9666,6 +9791,7 @@ files:
- name: arc_upmidi_aka12.zip
required: false
category: bios_zip
+ system: acorn-archimedes
source_ref: "upstream src/devices/bus/archimedes/podule/io.cpp:201-205"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn AKA12 User
@@ -9706,6 +9832,7 @@ files:
- name: at_keybc.zip
required: false
category: bios_zip
+ system: tandy-vis
source_ref: "upstream src/devices/machine/at_keybc.cpp:102-110"
note: >-
Device ROM set, loaded when a machine instantiates `PC/AT Keyboard
@@ -9730,6 +9857,7 @@ files:
- name: atari1050.zip
required: false
category: bios_zip
+ system: xegs
source_ref: "upstream src/devices/bus/a800/atari1050.cpp:105-117"
note: >-
Device ROM set, loaded when a machine instantiates `Atari 1050 Dual
@@ -9764,6 +9892,7 @@ files:
- name: atari810.zip
required: false
category: bios_zip
+ system: xegs
source_ref: "upstream src/devices/bus/a800/atari810.cpp:100-106"
note: >-
Device ROM set, loaded when a machine instantiates `Atari 810 Disk
@@ -9905,6 +10034,9 @@ files:
- name: bbc_24bbc.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/1mhzbus/24bbc.cpp:27-30"
note: >-
Device ROM set, loaded when a machine instantiates `Sprow 24bBC/RAM Disc
@@ -9918,6 +10050,9 @@ files:
- name: bbc_2ndserial.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/1mhzbus/2ndserial.cpp:51-54"
note: >-
Device ROM set, loaded when a machine instantiates `Sprow 2nd Serial
@@ -10067,6 +10202,9 @@ files:
- name: bbc_autoprom.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/1mhzbus/autoprom.cpp:63-72"
note: >-
Device ROM set, loaded when a machine instantiates `ATPL AutoPrommer`.
@@ -10083,6 +10221,11 @@ files:
- name: bbc_beebspch.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - dragon64
+ - electron
source_ref: "upstream src/devices/bus/bbc/userport/beebspch.cpp:55-62"
note: >-
Device ROM set, loaded when a machine instantiates `Beeb Speech
@@ -10100,6 +10243,9 @@ files:
- name: bbc_cc500.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/1mhzbus/cc500.cpp:55-58"
note: >-
Device ROM set, loaded when a machine instantiates `CTS Colour Card
@@ -10113,6 +10259,11 @@ files:
- name: bbc_chameleon.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - dragon64
+ - electron
source_ref: "upstream src/devices/bus/bbc/userport/palext.cpp:86-89"
note: >-
Device ROM set, loaded when a machine instantiates `Micro User Chameleon
@@ -10231,6 +10382,9 @@ files:
- name: bbc_datacentre.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/1mhzbus/datacentre.cpp:62-73"
note: >-
Device ROM set, loaded when a machine instantiates `RetroClinic
@@ -10265,6 +10419,9 @@ files:
- name: bbc_ieee488.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/1mhzbus/ieee488.cpp:35-44"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn IEEE-488
@@ -10326,6 +10483,7 @@ files:
- name: bbc_magazzino.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/exp/magazzino.cpp:52-55"
note: >-
Device ROM set, loaded when a machine instantiates `Magazzino
@@ -10352,6 +10510,7 @@ files:
- name: bbc_mertec.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/exp/mertec.cpp:80-83"
note: >-
Device ROM set, loaded when a machine instantiates `Mertec Compact
@@ -10365,6 +10524,7 @@ files:
- name: bbc_morleyaa.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/internal/morleyaa.cpp:25-28"
note: >-
Device ROM set, loaded when a machine instantiates `Morley Electronics
@@ -10378,6 +10538,9 @@ files:
- name: bbc_multiform.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/1mhzbus/multiform.cpp:52-58"
note: >-
Device ROM set, loaded when a machine instantiates `PEDL Multiform Z80`.
@@ -10459,6 +10622,9 @@ files:
- name: bbc_opus3.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/1mhzbus/opus3.cpp:81-90"
note: >-
Device ROM set, loaded when a machine instantiates `Opus Challenger
@@ -10501,6 +10667,7 @@ files:
- name: bbc_opusa.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/1mhzbus/opus3.cpp:92-97"
note: >-
Device ROM set, loaded when a machine instantiates `Opus Challenger
@@ -10515,6 +10682,9 @@ files:
- name: bbc_pdram.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/1mhzbus/pdram.cpp:25-28"
note: >-
Device ROM set, loaded when a machine instantiates `Micro User Pull Down
@@ -10528,6 +10698,9 @@ files:
- name: bbc_pms64k.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/1mhzbus/pms64k.cpp:25-28"
note: >-
Device ROM set, loaded when a machine instantiates `PMS 64K Non-Volatile
@@ -10541,6 +10714,9 @@ files:
- name: bbc_ramdisc.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/1mhzbus/ramdisc.cpp:87-90"
note: >-
Device ROM set, loaded when a machine instantiates `Morley Electronics
@@ -10740,6 +10916,7 @@ files:
- name: bbc_tube_32016.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_32016.cpp:129-142"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn 32016 2nd
@@ -10779,6 +10956,7 @@ files:
- name: bbc_tube_32016l.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_32016.cpp:158-163"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn Large 32016
@@ -10798,6 +10976,7 @@ files:
- name: bbc_tube_6502.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_6502.cpp:200-209"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn 6502 2nd
@@ -10822,6 +11001,7 @@ files:
- name: bbc_tube_6502e.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_6502.cpp:223-228"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn Extended 6502
@@ -10866,6 +11046,7 @@ files:
- name: bbc_tube_65c102.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_6502.cpp:230-239"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn 65C102
@@ -10890,6 +11071,7 @@ files:
- name: bbc_tube_80286.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_80286.cpp:95-99"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn 80286 2nd
@@ -10907,6 +11089,7 @@ files:
- name: bbc_tube_a500.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_a500.cpp:138-144"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn A500 2nd
@@ -10932,6 +11115,7 @@ files:
- name: bbc_tube_a500d.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_a500.cpp:146-152"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn A500 (Dual
@@ -10957,6 +11141,7 @@ files:
- name: bbc_tube_arm.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_arm.cpp:79-90"
note: >-
Device ROM set, loaded when a machine instantiates `ARM Evaluation
@@ -10986,6 +11171,7 @@ files:
- name: bbc_tube_arm7.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_arm7.cpp:118-124"
note: >-
Device ROM set, loaded when a machine instantiates `Sprow ARM7TDMI
@@ -11047,6 +11233,7 @@ files:
- name: bbc_tube_matchbox.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_matchbox.cpp:353-377"
note: >-
Device ROM set, loaded when a machine instantiates `Matchbox
@@ -11088,6 +11275,7 @@ files:
- name: bbc_tube_pcplus.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_80186.cpp:116-120"
note: >-
Device ROM set, loaded when a machine instantiates `Solidisk PC-Plus
@@ -11105,6 +11293,7 @@ files:
- name: bbc_tube_rc6502.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_rc6502.cpp:178-185"
note: >-
Device ROM set, loaded when a machine instantiates `ReCo6502 (65C02)`.
@@ -11123,6 +11312,7 @@ files:
- name: bbc_tube_rc65816.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_rc6502.cpp:187-194"
note: >-
Device ROM set, loaded when a machine instantiates `ReCo6502 (65C816)`.
@@ -11162,6 +11352,7 @@ files:
- name: bbc_tube_z80.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_z80.cpp:125-129"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn Z80 2nd
@@ -11176,6 +11367,7 @@ files:
- name: bbc_tube_z80w.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_z80.cpp:131-135"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn Z80 2nd
@@ -11242,6 +11434,7 @@ files:
- name: bbc_tube_zep100m.zip
required: false
category: bios_zip
+ system: acorn-bbc-micro
source_ref: "upstream src/devices/bus/bbc/tube/tube_zep100.cpp:189-198"
note: >-
Device ROM set, loaded when a machine instantiates `Torch Z80
@@ -11317,6 +11510,11 @@ files:
- name: bbc_voicebox.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - dragon64
+ - electron
source_ref: "upstream src/devices/bus/bbc/userport/voicebox.cpp:51-54"
note: >-
Device ROM set, loaded when a machine instantiates `Robin Voice Box`.
@@ -11663,6 +11861,7 @@ files:
- name: bk_altpro.zip
required: false
category: bios_zip
+ system: elektronika-bk
source_ref: "upstream src/devices/bus/qbus/bk_altpro.cpp:29-38"
note: >-
Device ROM set, loaded when a machine instantiates `BK Altpro
@@ -11687,6 +11886,7 @@ files:
- name: bk_kmd.zip
required: false
category: bios_zip
+ system: elektronika-bk
source_ref: "upstream src/devices/bus/qbus/bk_kmd.cpp:26-35"
note: >-
Device ROM set, loaded when a machine instantiates `BK0010 floppy`.
@@ -11710,6 +11910,7 @@ files:
- name: bk_samara.zip
required: false
category: bios_zip
+ system: elektronika-bk
source_ref: "upstream src/devices/bus/qbus/bk_samara.cpp:26-31"
note: >-
Device ROM set, loaded when a machine instantiates `BK Samara
@@ -12195,6 +12396,9 @@ files:
- name: c2031.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/c2031.cpp:105-109"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore 2031
@@ -12212,6 +12416,9 @@ files:
- name: c2040.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/c2040.cpp:191-203"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore 2040 disk
@@ -12235,6 +12442,9 @@ files:
- name: c2040_fdc.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/c2040fdc.cpp:48-51"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore 2040 FDC`.
@@ -12247,6 +12457,9 @@ files:
- name: c3040.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/c2040.cpp:220-227"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore 3040 disk
@@ -12268,6 +12481,9 @@ files:
- name: c4023.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/cbmiec/c1526.cpp:61-64"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore 4023
@@ -12281,6 +12497,9 @@ files:
- name: c4040.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/c2040.cpp:244-258"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore 4040 disk
@@ -12443,6 +12662,9 @@ files:
- name: c8050.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/c8050.cpp:199-237"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore 8050 disk
@@ -12512,6 +12734,9 @@ files:
- name: c8050fdc.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/c8050fdc.cpp:51-54"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore 8050 FDC`.
@@ -12524,6 +12749,9 @@ files:
- name: c8250.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/c8050.cpp:199-237"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore 8250 disk
@@ -12632,6 +12860,9 @@ files:
- name: c8280.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/c8280.cpp:107-121"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore 8280 dual
@@ -12817,6 +13048,7 @@ files:
- name: ccs7710.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/ccs7710.cpp:169-181"
note: >-
Device ROM set, loaded when a machine instantiates `CCS Model 7710
@@ -12856,6 +13088,7 @@ files:
- name: cd6809_fdc.zip
required: false
category: bios_zip
+ system: coco
source_ref: "upstream src/devices/bus/coco/coco_fdc.cpp:486-489"
note: >-
Device ROM set, loaded when a machine instantiates `Codimex CD-6809 Disk
@@ -12920,6 +13153,13 @@ files:
- name: cdd2000.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/nscsi/cdd2000.cpp:53-59"
note: >-
Device ROM set, loaded when a machine instantiates `Philips CDD2000
@@ -12939,6 +13179,13 @@ files:
- name: cdr4210.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/nscsi/cw7501.cpp:86-89"
note: >-
Device ROM set, loaded when a machine instantiates `Creative Technology
@@ -12952,6 +13199,13 @@ files:
- name: cdrn820s.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/nscsi/cdrn820s.cpp:45-48"
note: >-
Device ROM set, loaded when a machine instantiates `Caravelle
@@ -12965,6 +13219,13 @@ files:
- name: cdu415.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/nscsi/cdu415.cpp:51-55"
note: >-
Device ROM set, loaded when a machine instantiates `Sony CDU415 CD-R`.
@@ -12977,6 +13238,13 @@ files:
- name: cdu561_25.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/nscsi/cdu561.cpp:74-82"
note: >-
Device ROM set, loaded when a machine instantiates `Sony CDU561-25`.
@@ -13000,6 +13268,13 @@ files:
- name: cdu75s.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/nscsi/cdu75s.cpp:62-66"
note: >-
Device ROM set, loaded when a machine instantiates `Sony/Apple CDU75S
@@ -13072,6 +13347,13 @@ files:
- name: cfp1080s.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/nscsi/cfp1080s.cpp:88-91"
note: >-
Device ROM set, loaded when a machine instantiates `Conner CFP1080S`.
@@ -13216,6 +13498,22 @@ files:
- name: chessmachine.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/machine/chessmachine.cpp:158-164"
note: >-
Device ROM set, loaded when a machine instantiates `Tasc ChessMachine`.
@@ -13514,6 +13812,7 @@ files:
- name: cmsscsi.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/cmsscsi.cpp:47-55"
note: >-
Device ROM set, loaded when a machine instantiates `CMS SCSI II Card`.
@@ -13532,6 +13831,7 @@ files:
- name: coco_dcmodem.zip
required: false
category: bios_zip
+ system: coco
source_ref: "upstream src/devices/bus/coco/coco_dcmodem.cpp:108-111"
note: >-
Device ROM set, loaded when a machine instantiates `CoCo Direct Connect
@@ -13545,6 +13845,9 @@ files:
- name: coco_orch90.zip
required: false
category: bios_zip
+ systems:
+ - coco
+ - dragon64
source_ref: "upstream src/devices/bus/coco/coco_orch90.cpp:40-43"
note: >-
Device ROM set, loaded when a machine instantiates `CoCo Orch-90 PAK`.
@@ -13557,6 +13860,9 @@ files:
- name: coco_psg.zip
required: false
category: bios_zip
+ systems:
+ - coco
+ - dragon64
source_ref: "upstream src/devices/bus/coco/coco_psg.cpp:38-41"
note: >-
Device ROM set, loaded when a machine instantiates `CoCo PSG`.
@@ -13569,6 +13875,7 @@ files:
- name: coco_rs232.zip
required: false
category: bios_zip
+ system: coco
source_ref: "upstream src/devices/bus/coco/coco_rs232.cpp:105-108"
note: >-
Device ROM set, loaded when a machine instantiates `CoCo Deluxe RS-232
@@ -13582,6 +13889,7 @@ files:
- name: coco_scii.zip
required: false
category: bios_zip
+ system: coco
source_ref: "upstream src/devices/bus/coco/coco_fdc.cpp:468-479"
note: >-
Device ROM set, loaded when a machine instantiates `Disto Super
@@ -13601,6 +13909,9 @@ files:
- name: coco_ssc.zip
required: false
category: bios_zip
+ systems:
+ - coco
+ - dragon64
source_ref: "upstream src/devices/bus/coco/coco_ssc.cpp:194-199"
note: >-
Device ROM set, loaded when a machine instantiates `CoCo S/SC PAK`.
@@ -13617,6 +13928,7 @@ files:
- name: coco_t4426.zip
required: false
category: bios_zip
+ system: coco
source_ref: "upstream src/devices/bus/coco/coco_t4426.cpp:177-196"
note: >-
Device ROM set, loaded when a machine instantiates `Terco CNC
@@ -13662,6 +13974,7 @@ files:
- name: coco_wpk.zip
required: false
category: bios_zip
+ system: coco
source_ref: "upstream src/devices/bus/coco/coco_wpk.cpp:24-27"
note: >-
Device ROM set, loaded when a machine instantiates `CoCo WordPak`.
@@ -13674,6 +13987,7 @@ files:
- name: coco_wpk2.zip
required: false
category: bios_zip
+ system: coco
source_ref: "upstream src/devices/bus/coco/coco_wpk.cpp:24-27"
note: >-
Device ROM set, loaded when a machine instantiates `CoCo WordPak II`.
@@ -13686,6 +14000,7 @@ files:
- name: coco_wpkrs.zip
required: false
category: bios_zip
+ system: coco
source_ref: "upstream src/devices/bus/coco/coco_wpk.cpp:24-27"
note: >-
Device ROM set, loaded when a machine instantiates `CoCo WordPak RS`.
@@ -13800,6 +14115,22 @@ files:
- name: comx_pl80.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/bus/centronics/comxpl80.cpp:41-48"
note: >-
Device ROM set, loaded when a machine instantiates `COMX PL-80`.
@@ -13869,6 +14200,14 @@ files:
- name: cp2024.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/ata/cp2024.cpp:93-96"
note: >-
Device ROM set, loaded when a machine instantiates `Conner Peripherals
@@ -13906,6 +14245,7 @@ files:
- name: cp450_fdc.zip
required: false
category: bios_zip
+ system: coco
source_ref: "upstream src/devices/bus/coco/coco_fdc.cpp:481-484"
note: >-
Device ROM set, loaded when a machine instantiates `Prológica CP-450
@@ -14230,6 +14570,13 @@ files:
- name: crd254sh.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/nscsi/crd254sh.cpp:55-58"
note: >-
Device ROM set, loaded when a machine instantiates `Sanyo CRD-254SH
@@ -14382,6 +14729,13 @@ files:
- name: cw7501.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/nscsi/cw7501.cpp:76-79"
note: >-
Device ROM set, loaded when a machine instantiates `Panasonic CW-7501
@@ -14395,6 +14749,7 @@ files:
- name: d2fdc.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/machine/wozfdc.cpp:31-34"
note: >-
Device ROM set, loaded when a machine instantiates `Apple Disk II floppy
@@ -14408,6 +14763,9 @@ files:
- name: d9060.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/d9060.cpp:162-185"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore D9060 hard
@@ -14470,6 +14828,9 @@ files:
- name: d9090.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/d9060.cpp:162-185"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore D9090 hard
@@ -15031,6 +15392,7 @@ files:
- name: dragon_fdc.zip
required: false
category: bios_zip
+ system: dragon64
source_ref: "upstream src/devices/bus/coco/dragon_fdc.cpp:382-385"
note: >-
Device ROM set, loaded when a machine instantiates `Dragon FDC`.
@@ -15043,6 +15405,7 @@ files:
- name: dragon_jcbsnd.zip
required: false
category: bios_zip
+ system: dragon64
source_ref: "upstream src/devices/bus/coco/dragon_jcbsnd.cpp:24-27"
note: >-
Device ROM set, loaded when a machine instantiates `Dragon Sound
@@ -15056,6 +15419,7 @@ files:
- name: dragon_jcbspch.zip
required: false
category: bios_zip
+ system: dragon64
source_ref: "upstream src/devices/bus/coco/dragon_jcbspch.cpp:22-28"
note: >-
Device ROM set, loaded when a machine instantiates `Dragon Speech
@@ -15073,6 +15437,7 @@ files:
- name: dragon_serial.zip
required: false
category: bios_zip
+ system: dragon64
source_ref: "upstream src/devices/bus/coco/dragon_serial.cpp:59-62"
note: >-
Device ROM set, loaded when a machine instantiates `Dragon Peaksoft
@@ -15086,6 +15451,7 @@ files:
- name: dragon_sprites.zip
required: false
category: bios_zip
+ system: dragon64
source_ref: "upstream src/devices/bus/coco/dragon_sprites.cpp:14-17"
note: >-
Device ROM set, loaded when a machine instantiates `Dragon Sprites`.
@@ -15111,6 +15477,7 @@ files:
- name: dsd4432.zip
required: false
category: bios_zip
+ system: elektronika-bk
source_ref: "upstream src/devices/bus/qbus/dsd4432.cpp:212-250"
note: >-
Device ROM set, loaded when a machine instantiates `DSD A4432 Floppy
@@ -15201,6 +15568,7 @@ files:
- name: dsp56362.zip
required: false
category: bios_zip
+ system: sega-chihiro
source_ref: "upstream src/devices/cpu/dsp563xx/dsp56362.cpp:9-12"
note: >-
Device ROM set, loaded when a machine instantiates `Motorola DSP56362`.
@@ -15225,6 +15593,7 @@ files:
- name: dvk_kmd.zip
required: false
category: bios_zip
+ system: elektronika-bk
source_ref: "upstream src/devices/bus/qbus/dvk_kmd.cpp:127-134"
note: >-
Device ROM set, loaded when a machine instantiates `DVK KMD floppy
@@ -15282,6 +15651,9 @@ files:
- name: econet_e01.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/econet/e01.cpp:94-100"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn FileStore
@@ -15299,6 +15671,9 @@ files:
- name: econet_e01s.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/econet/e01.cpp:107-114"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn FileStore
@@ -15330,6 +15705,9 @@ files:
- name: ef9365.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/video/ef9365.cpp:146-149"
note: >-
Device ROM set, loaded when a machine instantiates `Thomson EF9365`.
@@ -15436,6 +15814,7 @@ files:
- name: electron_ap1.zip
required: false
category: bios_zip
+ system: electron
source_ref: "upstream src/devices/bus/electron/plus1.cpp:43-56"
note: >-
Device ROM set, loaded when a machine instantiates `P.R.E.S. Advanced
@@ -15460,6 +15839,7 @@ files:
- name: electron_ap6.zip
required: false
category: bios_zip
+ system: electron
source_ref: "upstream src/devices/bus/electron/plus1.cpp:58-68"
note: >-
Device ROM set, loaded when a machine instantiates `P.R.E.S. Advanced
@@ -15479,6 +15859,7 @@ files:
- name: electron_elksd128.zip
required: false
category: bios_zip
+ system: electron
source_ref: "upstream src/devices/bus/electron/elksd128.cpp:81-84"
note: >-
Device ROM set, loaded when a machine instantiates `ElkSD128 Electron SD
@@ -15492,6 +15873,7 @@ files:
- name: electron_elksd64.zip
required: false
category: bios_zip
+ system: electron
source_ref: "upstream src/devices/bus/electron/elksd64.cpp:59-63"
note: >-
Device ROM set, loaded when a machine instantiates `ElkSD64 Electron SD
@@ -15509,6 +15891,7 @@ files:
- name: electron_m2105.zip
required: false
category: bios_zip
+ system: electron
source_ref: "upstream src/devices/bus/electron/m2105.cpp:30-54"
note: >-
Device ROM set, loaded when a machine instantiates `Acorn M2105
@@ -15582,6 +15965,7 @@ files:
- name: electron_mc68k.zip
required: false
category: bios_zip
+ system: electron
source_ref: "upstream src/devices/bus/electron/mc68k.cpp:66-76"
note: >-
Device ROM set, loaded when a machine instantiates `Electron 68000
@@ -15607,6 +15991,7 @@ files:
- name: electron_mode7.zip
required: false
category: bios_zip
+ system: electron
source_ref: "upstream src/devices/bus/electron/mode7.cpp:33-39"
note: >-
Device ROM set, loaded when a machine instantiates `JAFA Mode 7 Display
@@ -15626,6 +16011,7 @@ files:
- name: electron_pwrjoy.zip
required: false
category: bios_zip
+ system: electron
source_ref: "upstream src/devices/bus/electron/pwrjoy.cpp:64-68"
note: >-
Device ROM set, loaded when a machine instantiates `Power Software
@@ -15639,6 +16025,7 @@ files:
- name: electron_romboxp.zip
required: false
category: bios_zip
+ system: electron
source_ref: "upstream src/devices/bus/electron/romboxp.cpp:34-55"
note: >-
Device ROM set, loaded when a machine instantiates `Slogger Rombox+`.
@@ -15677,6 +16064,7 @@ files:
- name: electron_sidewndr.zip
required: false
category: bios_zip
+ system: electron
source_ref: "upstream src/devices/bus/electron/sidewndr.cpp:67-70"
note: >-
Device ROM set, loaded when a machine instantiates `Wizard Sidewinder
@@ -15690,6 +16078,7 @@ files:
- name: electron_voxbox.zip
required: false
category: bios_zip
+ system: electron
source_ref: "upstream src/devices/bus/electron/voxbox.cpp:25-28"
note: >-
Device ROM set, loaded when a machine instantiates `Millsgrade Voxbox
@@ -15703,6 +16092,7 @@ files:
- name: enetlc.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/enetlc.cpp:76-86"
note: >-
Device ROM set, loaded when a machine instantiates `Apple Ethernet LC
@@ -15722,6 +16112,7 @@ files:
- name: enetlctp.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/enetlc.cpp:55-58"
note: >-
Device ROM set, loaded when a machine instantiates `Apple Ethernet LC
@@ -15735,6 +16126,7 @@ files:
- name: enetnbtp.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/enetnbtp.cpp:51-54"
note: >-
Device ROM set, loaded when a machine instantiates `Apple Ethernet NB
@@ -15813,6 +16205,22 @@ files:
- name: epson_fx80.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/bus/centronics/epson_fx80.cpp:103-110"
note: >-
Device ROM set, loaded when a machine instantiates `Epson FX-80`.
@@ -15829,6 +16237,22 @@ files:
- name: epson_jx80.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/bus/centronics/epson_fx80.cpp:112-118"
note: >-
Device ROM set, loaded when a machine instantiates `Epson JX-80`.
@@ -15895,6 +16319,22 @@ files:
- name: epson_rx80.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/bus/centronics/epson_rx80.cpp:72-75"
note: >-
Device ROM set, loaded when a machine instantiates `Epson RX-80`.
@@ -16075,6 +16515,22 @@ files:
- name: ex800.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/bus/centronics/epson_ex800.cpp:181-184"
note: >-
Device ROM set, loaded when a machine instantiates `Epson EX-800`.
@@ -16442,6 +16898,9 @@ files:
- name: gpib_hardbox.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/hardbox.cpp:120-143"
note: >-
Device ROM set, loaded when a machine instantiates `SSE HardBox`.
@@ -16480,6 +16939,9 @@ files:
- name: gpib_mshark.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/shark.cpp:32-42"
note: >-
Device ROM set, loaded when a machine instantiates `Mator SHARK`.
@@ -16512,6 +16974,9 @@ files:
- name: gpib_softbox.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/softbox.cpp:47-59"
note: >-
Device ROM set, loaded when a machine instantiates `SSE SoftBox`.
@@ -16582,6 +17047,7 @@ files:
- name: gunsense.zip
required: false
category: bios_zip
+ system: sega-naomi
source_ref: "upstream src/mame/sega/gunsense.cpp:43-48"
note: >-
Device ROM set, loaded when a machine instantiates `Sega 838-13143 Gun
@@ -16716,6 +17182,11 @@ files:
- name: hd44780.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - dragon64
+ - electron
source_ref: "upstream src/devices/video/hd44780.cpp:139-145"
note: >-
Device ROM set, loaded when a machine instantiates `Hitachi HD44780 LCD
@@ -16808,6 +17279,21 @@ files:
- name: heath_gp19_tlb.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/bus/heathzenith/h19/tlb.cpp:1035-1049"
note: >-
Device ROM set, loaded when a machine instantiates `Heath Terminal Logic
@@ -16926,6 +17412,21 @@ files:
- name: heath_imaginator_tlb.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/bus/heathzenith/h19/tlb.cpp:1051-1073"
note: >-
Device ROM set, loaded when a machine instantiates `Heath Terminal Logic
@@ -16957,6 +17458,21 @@ files:
- name: heath_super19_tlb.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/bus/heathzenith/h19/tlb.cpp:969-981"
note: >-
Device ROM set, loaded when a machine instantiates `Heath Terminal Logic
@@ -16978,6 +17494,21 @@ files:
- name: heath_superset_tlb.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/bus/heathzenith/h19/tlb.cpp:983-999"
note: >-
Device ROM set, loaded when a machine instantiates `Heath Terminal Logic
@@ -16999,6 +17530,21 @@ files:
- name: heath_tlb.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/bus/heathzenith/h19/tlb.cpp:955-967"
note: >-
Device ROM set, loaded when a machine instantiates `Heath Terminal Logic
@@ -17020,6 +17566,21 @@ files:
- name: heath_ultra_tlb.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/bus/heathzenith/h19/tlb.cpp:1021-1033"
note: >-
Device ROM set, loaded when a machine instantiates `Heath Terminal Logic
@@ -17041,6 +17602,21 @@ files:
- name: heath_watz_tlb.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/bus/heathzenith/h19/tlb.cpp:1001-1019"
note: >-
Device ROM set, loaded when a machine instantiates `Heath Terminal Logic
@@ -17120,6 +17696,7 @@ files:
- name: hp9122c.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/ieee488/hp9122c.cpp:459-462"
note: >-
Device ROM set, loaded when a machine instantiates `HP9122C Dual High
@@ -17133,6 +17710,7 @@ files:
- name: hp9133.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/ieee488/hp9133.cpp:866-870"
note: >-
Device ROM set, loaded when a machine instantiates `HP9133 Floppy/Fixed
@@ -17199,6 +17777,7 @@ files:
- name: hp9895.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/ieee488/hp9895.cpp:954-957"
note: >-
Device ROM set, loaded when a machine instantiates `HP9895 floppy
@@ -17293,6 +17872,7 @@ files:
- name: ibsap2.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/bus/a2bus/ibsap2.cpp:167-170"
note: >-
Device ROM set, loaded when a machine instantiates `IBS Computertechnik
@@ -17323,6 +17903,21 @@ files:
- name: ie15_device.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/machine/ie15.cpp:676-688"
note: >-
Device ROM set, loaded when a machine instantiates `IE15`.
@@ -17345,6 +17940,21 @@ files:
- name: ie15kbd.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/machine/ie15_kbd.cpp:73-76"
note: >-
Device ROM set, loaded when a machine instantiates `15WWW-97-006
@@ -17908,6 +18518,12 @@ files:
- name: jvs13551.zip
required: false
category: bios_zip
+ systems:
+ - sega-chihiro
+ - sega-hikaru
+ - sega-naomi
+ - sega-naomi2
+ - sega-naomigd
source_ref: "upstream src/mame/sega/jvs13551.cpp:28-41"
note: >-
Device ROM set, loaded when a machine instantiates `Sega 837-13551 I/O
@@ -17937,6 +18553,7 @@ files:
- name: k573_dio.zip
required: false
category: bios_zip
+ system: namco-system573
source_ref: "upstream src/mame/konami/k573dio.cpp:165-168"
note: >-
Device ROM set, loaded when a machine instantiates `Konami 573 digital
@@ -17950,6 +18567,7 @@ files:
- name: k573kara.zip
required: false
category: bios_zip
+ system: namco-system573
source_ref: "upstream src/mame/konami/k573kara.cpp:87-90"
note: >-
Device ROM set, loaded when a machine instantiates `Konami 573 karaoke
@@ -17963,6 +18581,7 @@ files:
- name: k573mcr.zip
required: false
category: bios_zip
+ system: namco-system573
source_ref: "upstream src/mame/konami/k573mcr.cpp:492-495"
note: >-
Device ROM set, loaded when a machine instantiates `Konami 573 Memory
@@ -17976,6 +18595,7 @@ files:
- name: k573msu.zip
required: false
category: bios_zip
+ system: namco-system573
source_ref: "upstream src/mame/konami/k573msu.cpp:84-90"
note: >-
Device ROM set, loaded when a machine instantiates `Konami 573 Multi
@@ -18689,6 +19309,22 @@ files:
- name: lx800.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/bus/centronics/epson_lx800.cpp:37-40"
note: >-
Device ROM set, loaded when a machine instantiates `Epson LX-800`.
@@ -18701,6 +19337,22 @@ files:
- name: lx810l.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/bus/centronics/epson_lx810l.cpp:63-68"
note: >-
Device ROM set, loaded when a machine instantiates `Epson LX-810L`.
@@ -18771,6 +19423,7 @@ files:
- name: m50458.zip
required: false
category: bios_zip
+ system: nintendo-nss
source_ref: "upstream src/devices/video/m50458.cpp:50-54"
note: >-
Device ROM set, loaded when a machine instantiates `Mitsubishi M50458
@@ -18802,6 +19455,7 @@ files:
- name: m68705p3.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/cpu/m6805/m68705.cpp:74-77"
note: >-
Device ROM set, loaded when a machine instantiates `Motorola MC68705P3`.
@@ -18896,6 +19550,7 @@ files:
- name: mackbd_m0110a_f.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/mackbd/pluskbd.cpp:101-104"
note: >-
Device ROM set, loaded when a machine instantiates `Macintosh Plus
@@ -18909,6 +19564,7 @@ files:
- name: mackbd_m0110a_j.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/mackbd/pluskbd.cpp:101-104"
note: >-
Device ROM set, loaded when a machine instantiates `Macintosh Plus
@@ -18922,6 +19578,7 @@ files:
- name: mackbd_m0110b.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/mackbd/keyboard.cpp:228-231"
note: >-
Device ROM set, loaded when a machine instantiates `Macintosh Keyboard
@@ -18935,6 +19592,7 @@ files:
- name: mackbd_m0110f.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/mackbd/keyboard.cpp:228-231"
note: >-
Device ROM set, loaded when a machine instantiates `Macintosh Keyboard
@@ -18948,6 +19606,7 @@ files:
- name: mackbd_m0110j.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/mackbd/keyboard.cpp:228-231"
note: >-
Device ROM set, loaded when a machine instantiates `Macintosh Keyboard
@@ -18961,6 +19620,7 @@ files:
- name: mackbd_m0110t.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/mackbd/keyboard.cpp:228-231"
note: >-
Device ROM set, loaded when a machine instantiates `Macintosh Keyboard
@@ -18974,6 +19634,7 @@ files:
- name: mackbd_m0120p.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/mackbd/keyboard.cpp:228-231"
note: >-
Device ROM set, loaded when a machine instantiates `Macintosh Numeric
@@ -19044,6 +19705,7 @@ files:
- name: mcx128.zip
required: false
category: bios_zip
+ system: mc10
source_ref: "upstream src/devices/bus/mc10/mcx128.cpp:48-57"
note: >-
Device ROM set, loaded when a machine instantiates `Darren Atkinson's
@@ -19160,6 +19822,7 @@ files:
- name: microtouch.zip
required: false
category: bios_zip
+ system: commodore-cubo
source_ref: "upstream src/devices/machine/microtch.cpp:391-399"
note: >-
Device ROM set, loaded when a machine instantiates `Microtouch
@@ -19210,6 +19873,11 @@ files:
- name: mie.zip
required: false
category: bios_zip
+ systems:
+ - sega-hikaru
+ - sega-naomi
+ - sega-naomi2
+ - sega-naomigd
source_ref: "upstream src/mame/sega/mie.cpp:58-61"
note: >-
Device ROM set, loaded when a machine instantiates `Sega 315-6146 MIE`.
@@ -19274,6 +19942,21 @@ files:
- name: mm5740.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/machine/mm5740.cpp:27-30"
note: >-
Device ROM set, loaded when a machine instantiates `MM5740 Keyboard
@@ -19287,6 +19970,21 @@ files:
- name: mockingboardd.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/bus/rs232/mboardd.cpp:29-32"
note: >-
Device ROM set, loaded when a machine instantiates `Sweet Micro Systems
@@ -20289,6 +20987,22 @@ files:
- name: mz1p16.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/bus/centronics/mz1p16.cpp:214-217"
note: >-
Device ROM set, loaded when a machine instantiates `Sharp MZ-1P16
@@ -20746,6 +21460,7 @@ files:
- name: nb_aenet.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_asntmc3b.cpp:40-43"
note: >-
Device ROM set, loaded when a machine instantiates `Apple NuBus Ethernet
@@ -20759,6 +21474,7 @@ files:
- name: nb_amc3b.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_asntmc3b.cpp:35-38"
note: >-
Device ROM set, loaded when a machine instantiates `Asante MC3NB
@@ -20772,6 +21488,7 @@ files:
- name: nb_btbug.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/bootbug.cpp:51-58"
note: >-
Device ROM set, loaded when a machine instantiates `Brigent BootBug
@@ -20791,6 +21508,7 @@ files:
- name: nb_c264.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_cb264.cpp:112-116"
note: >-
Device ROM set, loaded when a machine instantiates `RasterOps ColorBoard
@@ -20808,6 +21526,7 @@ files:
- name: nb_laserview.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/laserview.cpp:87-90"
note: >-
Device ROM set, loaded when a machine instantiates `Sigma Designs
@@ -20821,6 +21540,7 @@ files:
- name: nb_m2hr.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_m2hires.cpp:116-119"
note: >-
Device ROM set, loaded when a machine instantiates `Apple Macintosh II
@@ -20834,6 +21554,7 @@ files:
- name: nb_m2vc.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_m2video.cpp:99-102"
note: >-
Device ROM set, loaded when a machine instantiates `Apple Macintosh II
@@ -20847,6 +21568,7 @@ files:
- name: nb_mdc48.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_48gc.cpp:233-236"
note: >-
Device ROM set, loaded when a machine instantiates `Apple Macintosh
@@ -20860,6 +21582,7 @@ files:
- name: nb_pcs8.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/pds30_procolor816.cpp:347-350"
note: >-
Device ROM set, loaded when a machine instantiates `Lapis ProColor
@@ -20873,6 +21596,7 @@ files:
- name: nb_qdlink.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/quadralink.cpp:48-51"
note: >-
Device ROM set, loaded when a machine instantiates `Applied Engineering
@@ -20886,6 +21610,7 @@ files:
- name: nb_rtpd.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_radiustpd.cpp:62-65"
note: >-
Device ROM set, loaded when a machine instantiates `Radius Two Page
@@ -20899,6 +21624,7 @@ files:
- name: nb_sp8s3.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_spec8.cpp:140-148"
note: >-
Device ROM set, loaded when a machine instantiates `SuperMac Spectrum/8
@@ -20918,6 +21644,7 @@ files:
- name: nb_spdq.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_specpdq.cpp:136-139"
note: >-
Device ROM set, loaded when a machine instantiates `SuperMac Spectrum
@@ -20931,6 +21658,7 @@ files:
- name: nb_thungx.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/thunder4gx.cpp:110-113"
note: >-
Device ROM set, loaded when a machine instantiates `Radius Thunder IV GX
@@ -20957,6 +21685,7 @@ files:
- name: nb_vikbw.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_vikbw.cpp:63-66"
note: >-
Device ROM set, loaded when a machine instantiates `Moniterm MacViking
@@ -20970,6 +21699,7 @@ files:
- name: nb_wkstn.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_m2hires.cpp:492-495"
note: >-
Device ROM set, loaded when a machine instantiates `Macintosh II
@@ -20983,6 +21713,7 @@ files:
- name: nb_wspt.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_m2hires.cpp:413-416"
note: >-
Device ROM set, loaded when a machine instantiates `Macintosh II
@@ -21083,6 +21814,22 @@ files:
- name: nlq401.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/bus/centronics/nlq401.cpp:298-301"
note: >-
Device ROM set, loaded when a machine instantiates `Schneider NLQ 401
@@ -21159,6 +21906,21 @@ files:
- name: nss_tvinterface.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/bus/rs232/nss_tvinterface.cpp:251-263"
note: >-
Device ROM set, loaded when a machine instantiates `Novag Super System
@@ -21564,6 +22326,22 @@ files:
- name: p72.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/bus/centronics/nec_p72.cpp:19-22"
note: >-
Device ROM set, loaded when a machine instantiates `NEC PinWriter P72`.
@@ -21627,6 +22405,22 @@ files:
- name: pc6022.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - crvision
+ - dragon64
+ - electron
+ - elektronika-bk
+ - fm7
+ - konami-twinkle
+ - laser310
+ - pc80
+ - trs80
+ - tutor
source_ref: "upstream src/devices/bus/centronics/pc6022.cpp:26-29"
note: >-
Device ROM set, loaded when a machine instantiates `NEC PC-6022 Color
@@ -21640,6 +22434,7 @@ files:
- name: pc80s31.zip
required: false
category: bios_zip
+ system: pc80
source_ref: "upstream src/devices/bus/nec_fdd/pc80s31k.cpp:201-213"
note: >-
Device ROM set, loaded when a machine instantiates `NEC PC-80S31 Mini
@@ -21918,6 +22713,7 @@ files:
- name: pd3_30hr.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/pds30_30hr.cpp:540-543"
note: >-
Device ROM set, loaded when a machine instantiates `Micron/XCEED
@@ -21931,6 +22727,7 @@ files:
- name: pd3_30hrint.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/pds30_30hr.cpp:540-543"
note: >-
Device ROM set, loaded when a machine instantiates `Micron/XCEED
@@ -21944,6 +22741,7 @@ files:
- name: pd3_c264.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/pds30_cb264.cpp:71-74"
note: >-
Device ROM set, loaded when a machine instantiates `RasterOps ColorBoard
@@ -21957,6 +22755,7 @@ files:
- name: pd3_lviw.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/laserview.cpp:314-317"
note: >-
Device ROM set, loaded when a machine instantiates `Sigma Designs
@@ -21970,6 +22769,7 @@ files:
- name: pd3_mclr.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/pds30_30hr.cpp:605-608"
note: >-
Device ROM set, loaded when a machine instantiates `Micron/XCEED
@@ -21983,6 +22783,7 @@ files:
- name: pd3_mclrint.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/pds30_30hr.cpp:605-608"
note: >-
Device ROM set, loaded when a machine instantiates `Micron/XCEED
@@ -21996,6 +22797,7 @@ files:
- name: pd3_pc16.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/pds30_procolor816.cpp:34-37"
note: >-
Device ROM set, loaded when a machine instantiates `Lapis ProColor
@@ -22009,6 +22811,7 @@ files:
- name: pd3_pcs8.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/pds30_procolor816.cpp:321-324"
note: >-
Device ROM set, loaded when a machine instantiates `Lapis ProColor
@@ -22055,6 +22858,7 @@ files:
- name: pds30_emac.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_asntmc3b.cpp:45-48"
note: >-
Device ROM set, loaded when a machine instantiates `Farallon EtherMac
@@ -22068,6 +22872,7 @@ files:
- name: pds_hyper.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/macpds/hyperdrive.cpp:91-95"
note: >-
Device ROM set, loaded when a machine instantiates `GCC HyperDrive`.
@@ -22084,6 +22889,7 @@ files:
- name: pds_sefp.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/macpds/pds_tpdfpd.cpp:44-48"
note: >-
Device ROM set, loaded when a machine instantiates `Radius SE Full Page
@@ -22101,6 +22907,7 @@ files:
- name: pdslc_macconlc.zip
required: false
category: bios_zip
+ system: apple-macintosh-ii
source_ref: "upstream src/devices/bus/nubus/nubus_asntmc3b.cpp:50-53"
note: >-
Device ROM set, loaded when a machine instantiates `Asante MacCON i LC
@@ -22275,6 +23082,7 @@ files:
- name: premier_fdc.zip
required: false
category: bios_zip
+ system: dragon64
source_ref: "upstream src/devices/bus/coco/dragon_fdc.cpp:414-417"
note: >-
Device ROM set, loaded when a machine instantiates `Premier FDC`.
@@ -22727,6 +23535,14 @@ files:
- name: px320a.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/ata/px320a.cpp:82-94"
note: >-
Device ROM set, loaded when a machine instantiates `PleXCombo PX-320A
@@ -22756,6 +23572,7 @@ files:
- name: qg640.zip
required: false
category: bios_zip
+ system: elektronika-bk
source_ref: "upstream src/devices/bus/qbus/qg640.cpp:96-101"
note: >-
Device ROM set, loaded when a machine instantiates `Matrox QG-640 Color
@@ -23178,6 +23995,9 @@ files:
- name: qsound_hle.zip
required: false
category: bios_zip
+ systems:
+ - capcom-zn1
+ - capcom-zn2
source_ref: "upstream src/devices/sound/qsoundhle.cpp:44-49"
note: >-
Device ROM set, loaded when a machine instantiates `QSound (HLE)`.
@@ -23190,6 +24010,7 @@ files:
- name: qts1.zip
required: false
category: bios_zip
+ system: elektronika-bk
source_ref: "upstream src/devices/bus/qbus/qtx.cpp:142-148"
note: >-
Device ROM set, loaded when a machine instantiates `TTI QTS-1 SCSI Host
@@ -24042,6 +24863,21 @@ files:
- name: s97801_device.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/machine/s97801.cpp:185-194"
note: >-
Device ROM set, loaded when a machine instantiates `Siemens 97801
@@ -24063,6 +24899,21 @@ files:
- name: s97801_kbd.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/machine/s97801_kbd.cpp:150-153"
note: >-
Device ROM set, loaded when a machine instantiates `Siemens 97801
@@ -24076,6 +24927,9 @@ files:
- name: s_smp.zip
required: false
category: bios_zip
+ systems:
+ - nintendo-nss
+ - nintendo-sfcbox
source_ref: "upstream src/devices/machine/s_smp.cpp:39-42"
note: >-
Device ROM set, loaded when a machine instantiates `Nintendo/Sony
@@ -24326,6 +25180,21 @@ files:
- name: scorpion_ic.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/bus/rs232/scorpion.cpp:100-106"
note: >-
Device ROM set, loaded when a machine instantiates `Micro-Robotics
@@ -24340,6 +25209,7 @@ files:
- name: sdtandy_fdc.zip
required: false
category: bios_zip
+ system: dragon64
source_ref: "upstream src/devices/bus/coco/dragon_fdc.cpp:446-449"
note: >-
Device ROM set, loaded when a machine instantiates `SDTANDY FDC`.
@@ -24425,6 +25295,7 @@ files:
- name: sega837_14438.zip
required: false
category: bios_zip
+ system: sega-naomi
source_ref: "upstream src/mame/sega/segashiobd.cpp:111-116"
note: >-
Device ROM set, loaded when a machine instantiates `Sega 837-14438 SH
@@ -24459,6 +25330,7 @@ files:
- name: segabill.zip
required: false
category: bios_zip
+ system: sega-stv
source_ref: "upstream src/mame/sega/segabill.cpp:135-138"
note: >-
Device ROM set, loaded when a machine instantiates `Sega Billboard`.
@@ -24471,6 +25343,11 @@ files:
- name: segadimm.zip
required: false
category: bios_zip
+ systems:
+ - sega-chihiro
+ - sega-naomi2
+ - sega-naomigd
+ - sega-triforce
source_ref: "upstream src/mame/sega/naomigd.cpp:1116-1159"
note: >-
Device ROM set, loaded when a machine instantiates `Sega DIMM Board`.
@@ -24552,6 +25429,7 @@ files:
- name: seganetw.zip
required: false
category: bios_zip
+ system: sega-chihiro
source_ref: "upstream src/mame/sega/chihiro.cpp:1898-1901"
note: >-
Device ROM set, loaded when a machine instantiates `Sega Network Board`.
@@ -24590,6 +25468,9 @@ files:
- name: sfd1001.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
source_ref: "upstream src/devices/bus/ieee488/c8050.cpp:289-299"
note: >-
Device ROM set, loaded when a machine instantiates `Commodore SFD-1001
@@ -24900,6 +25781,13 @@ files:
- name: smoc501.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/nscsi/smoc501.cpp:83-86"
note: >-
Device ROM set, loaded when a machine instantiates `Sony SMO-C501 MO
@@ -26322,6 +27210,21 @@ files:
- name: swtpc8212_device.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/machine/swtpc8212.cpp:486-495"
note: >-
Device ROM set, loaded when a machine instantiates `SWTPC8212`.
@@ -26983,6 +27886,7 @@ files:
- name: tdl12.zip
required: false
category: bios_zip
+ system: elektronika-bk
source_ref: "upstream src/devices/bus/qbus/tdl12.cpp:116-132"
note: >-
Device ROM set, loaded when a machine instantiates `TDL-12 SCSI Host
@@ -27105,6 +28009,7 @@ files:
- name: ti99_arcturus.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/sidecar/arcturus.cpp:74-81"
note: >-
Device ROM set, loaded when a machine instantiates `Arcturus sidecar
@@ -27126,6 +28031,7 @@ files:
- name: ti99_bwg.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/peb/bwg.cpp:597-600"
note: >-
Device ROM set, loaded when a machine instantiates `SNUG BwG Floppy
@@ -27139,6 +28045,7 @@ files:
- name: ti99_ccdcc.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/peb/cc_fdc.cpp:567-571"
note: >-
Device ROM set, loaded when a machine instantiates `CorComp Disk
@@ -27156,6 +28063,7 @@ files:
- name: ti99_ccfdc.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/peb/cc_fdc.cpp:730-734"
note: >-
Device ROM set, loaded when a machine instantiates `CorComp Floppy Disk
@@ -27173,6 +28081,7 @@ files:
- name: ti99_ddcc1.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/peb/myarcfdc.cpp:426-429"
note: >-
Device ROM set, loaded when a machine instantiates `Myarc Disk
@@ -27186,6 +28095,7 @@ files:
- name: ti99_evpc.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/peb/evpc.cpp:453-456"
note: >-
Device ROM set, loaded when a machine instantiates `SNUG Enhanced Video
@@ -27199,6 +28109,7 @@ files:
- name: ti99_fdc.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/peb/ti_fdc.cpp:389-393"
note: >-
Device ROM set, loaded when a machine instantiates `TI-99 Standard DSSD
@@ -27216,6 +28127,7 @@ files:
- name: ti99_gkracker.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/gromport/gkracker.cpp:409-413"
note: >-
Device ROM set, loaded when a machine instantiates `Miller's Graphics
@@ -27229,6 +28141,7 @@ files:
- name: ti99_hfdc.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/peb/hfdc.cpp:1047-1050"
note: >-
Device ROM set, loaded when a machine instantiates `Myarc Hard and
@@ -27242,6 +28155,7 @@ files:
- name: ti99_myarcmem.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/peb/myarcmem.cpp:193-196"
note: >-
Device ROM set, loaded when a machine instantiates `Myarc Memory
@@ -27255,6 +28169,7 @@ files:
- name: ti99_pcode.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/peb/pcode.cpp:322-338"
note: >-
Device ROM set, loaded when a machine instantiates `TI-99 P-Code Card`.
@@ -27303,6 +28218,7 @@ files:
- name: ti99_rs232.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/peb/ti_rs232.cpp:1071-1074"
note: >-
Device ROM set, loaded when a machine instantiates `TI-99 RS232/PIO
@@ -27316,6 +28232,7 @@ files:
- name: ti99_thermal.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/sidecar/thermal.cpp:322-325"
note: >-
Device ROM set, loaded when a machine instantiates `TI-99 Thermal
@@ -27329,6 +28246,7 @@ files:
- name: ti99_tipi.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/peb/tipi.cpp:697-706"
note: >-
Device ROM set, loaded when a machine instantiates `TIPI card`.
@@ -27352,6 +28270,7 @@ files:
- name: ti99_whtscsi.zip
required: false
category: bios_zip
+ system: ti99
source_ref: "upstream src/devices/bus/ti99/peb/scsicard.cpp:473-476"
note: >-
Device ROM set, loaded when a machine instantiates `Western Horizon
@@ -27807,6 +28726,7 @@ files:
- name: upd7220.zip
required: false
category: bios_zip
+ system: apple2gs
source_ref: "upstream src/devices/video/upd7220.cpp:173-176"
note: >-
Device ROM set, loaded when a machine instantiates `NEC uPD7220`.
@@ -28163,6 +29083,21 @@ files:
- name: votraxtnt.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/machine/votraxtnt.cpp:100-103"
note: >-
Device ROM set, loaded when a machine instantiates `Votrax Type 'N
@@ -28188,6 +29123,21 @@ files:
- name: votrsc01a.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple-macintosh-ii
+ - apple2gs
+ - coco
+ - coleco-adam
+ - dragon64
+ - electron
+ - elektronika-bk
+ - konami-twinkle
+ - laser310
+ - mc10
+ - namco-system573
+ - trs80
source_ref: "upstream src/devices/sound/votrax.cpp:49-52"
note: >-
Device ROM set, loaded when a machine instantiates `Votrax SC-01-A`.
@@ -28213,6 +29163,7 @@ files:
- name: vtech_fdc.zip
required: false
category: bios_zip
+ system: laser310
source_ref: "upstream src/devices/bus/vtech/memexp/floppy.cpp:54-57"
note: >-
Device ROM set, loaded when a machine instantiates `Laser/VZ Floppy Disk
@@ -28226,6 +29177,7 @@ files:
- name: vtech_rs232.zip
required: false
category: bios_zip
+ system: laser310
source_ref: "upstream src/devices/bus/vtech/memexp/rs232.cpp:35-42"
note: >-
Device ROM set, loaded when a machine instantiates `DSE VZ-200/300
@@ -28245,6 +29197,7 @@ files:
- name: vtech_rtty.zip
required: false
category: bios_zip
+ system: laser310
source_ref: "upstream src/devices/bus/vtech/memexp/rtty.cpp:36-39"
note: >-
Device ROM set, loaded when a machine instantiates `DSE VZ-200/300 RTTY
@@ -28258,6 +29211,7 @@ files:
- name: vtech_sdloader.zip
required: false
category: bios_zip
+ system: laser310
source_ref: "upstream src/devices/bus/vtech/memexp/sdloader.cpp:117-126"
note: >-
Device ROM set, loaded when a machine instantiates `BennVenn SD Loader`.
@@ -28281,6 +29235,7 @@ files:
- name: vtech_wordpro.zip
required: false
category: bios_zip
+ system: laser310
source_ref: "upstream src/devices/bus/vtech/memexp/wordpro.cpp:34-39"
note: >-
Device ROM set, loaded when a machine instantiates `DSE VZ-300 WordPro`.
@@ -28908,6 +29863,14 @@ files:
- name: zip100_ide.zip
required: false
category: bios_zip
+ systems:
+ - acorn-archimedes
+ - acorn-bbc-micro
+ - apple2gs
+ - coco
+ - coleco-adam
+ - elektronika-bk
+ - ti99
source_ref: "upstream src/devices/bus/ata/zip100.cpp:91-95"
note: >-
Device ROM set, loaded when a machine instantiates `Iomega Zip 100MB IDE
diff --git a/schemas/emulator.schema.json b/schemas/emulator.schema.json
index c53b6bdf..2bd48c88 100644
--- a/schemas/emulator.schema.json
+++ b/schemas/emulator.schema.json
@@ -411,6 +411,15 @@
"system": {
"type": "string"
},
+ "systems": {
+ "type": "array",
+ "minItems": 2,
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ },
+ "description": "The systems of the profile this entry serves, when it serves several and not all: a MAME device set the machines of two systems load. One system is written as system:."
+ },
"path": {
"type": [
"string",
@@ -800,6 +809,14 @@
}
},
"allOf": [
+ {
+ "not": {
+ "required": [
+ "system",
+ "systems"
+ ]
+ }
+ },
{
"if": {
"properties": {
diff --git a/scripts/common.py b/scripts/common.py
index fc42d5f1..daf45018 100644
--- a/scripts/common.py
+++ b/scripts/common.py
@@ -1785,16 +1785,29 @@ def profiles_for_systems(
return matching
+def entry_system_ids(entry: dict, profile: dict) -> list[str]:
+ """Systems a profile entry serves.
+
+ The entry's own `system:`, else its own `systems:` (a MAME device set
+ the machines of several systems load), else every system of its
+ profile.
+ """
+ own = entry.get("system")
+ if own:
+ return [str(own)]
+ listed = entry.get("systems") or profile.get("systems") or []
+ return [str(sid) for sid in listed]
+
+
def entry_serves_systems(entry: dict, profile: dict, system_ids: list[str]) -> bool:
"""Whether a profile entry belongs to one of the systems, spelled either way.
- The entry's own `system:` decides. One without it serves every system
- of its profile, the rule a platform pack applies to core extras.
+ The entry's own `system:` or `systems:` decides. One without either
+ serves every system of its profile, the rule a platform pack applies to
+ core extras.
"""
- own = entry.get("system")
- systems = [own] if own else profile.get("systems", [])
wanted = {_norm_system_id(sid) for sid in system_ids}
- return bool(wanted & {_norm_system_id(str(sid)) for sid in systems})
+ return bool(wanted & {_norm_system_id(sid) for sid in entry_system_ids(entry, profile)})
def select_emulator_profiles(
diff --git a/scripts/packextras.py b/scripts/packextras.py
index a125e533..5c4f72ac 100644
--- a/scripts/packextras.py
+++ b/scripts/packextras.py
@@ -8,7 +8,7 @@ from __future__ import annotations
from collections.abc import Iterable
-from common import PROFILE_IDENTITY_FIELDS, _norm_system_id
+from common import PROFILE_IDENTITY_FIELDS, _norm_system_id, entry_system_ids
from common import archive_members, holds_required_members
from common import declared_root, expand_platform_declared_names, platform_declarations
from common import load_emulator_profiles
@@ -128,7 +128,9 @@ def _slug_for(
{"systems": [own]}, platform_systems, norm_map, sys_to_slug
)
emu_name = u.get("profile") or u.get("emulator", "")
- profile = profiles.get(emu_name, {})
+ # The report carries the entry's own systems: (a MAME device set) or
+ # its profile's, the same list either way when the entry names none.
+ profile = {"systems": u["systems"]} if u.get("systems") else profiles.get(emu_name, {})
if not profile:
# The report names the display name where the key failed.
profile = next(
@@ -483,7 +485,7 @@ def _agnostic_scan_extras(
"source_path": f.get("path") or "",
"category": f.get("category", "bios"),
"source_system": f.get("system"),
- "source_systems": list(profile.get("systems", [])),
+ "source_systems": entry_system_ids(f, profile),
"region": f.get("region"),
"variant_group": f.get("variant_group"),
"agnostic_scan": True,
@@ -639,7 +641,7 @@ def _companion_extras(
"source_path": seed.get("path") or "",
"category": seed.get("category", "bios"),
"source_system": seed.get("system"),
- "source_systems": list(profile.get("systems", [])),
+ "source_systems": entry_system_ids(seed, profile),
"region": seed.get("region"),
"variant_group": seed.get("variant_group"),
"agnostic_scan": True,
@@ -755,7 +757,7 @@ def _archive_prefix_extras(
"source_path": archive_name,
"category": archive_entry.get("category", "bios"),
"source_system": archive_entry.get("system"),
- "source_systems": list(profile.get("systems", [])),
+ "source_systems": entry_system_ids(archive_entry, profile),
"region": archive_entry.get("region"),
"variant_group": archive_entry.get("variant_group"),
}
@@ -1057,7 +1059,7 @@ def _collect_emulator_extras(
"source_path": raw,
"category": f.get("category", "bios"),
"source_system": f.get("system"),
- "source_systems": list(profile.get("systems", [])),
+ "source_systems": entry_system_ids(f, profile),
"region": f.get("region"),
"variant_group": f.get("variant_group"),
}
diff --git a/scripts/scraper/_hash_merge.py b/scripts/scraper/_hash_merge.py
index cb76848b..9ecb1a96 100644
--- a/scripts/scraper/_hash_merge.py
+++ b/scripts/scraper/_hash_merge.py
@@ -595,12 +595,82 @@ def _zip_scalar(name: str) -> str:
return name if re.fullmatch(r"[a-z0-9_]+\.zip", name) else _yaml_scalar(name)
+_PLAIN_SYSTEM = re.compile(r"^[a-z][a-z0-9-]*$")
+
+
+def _system_lines(systems: list[str]) -> list[str]:
+ """`system:` for one system, `systems:` for several, nothing for none."""
+ def scalar(value: str) -> str:
+ return value if _PLAIN_SYSTEM.match(value) else _yaml_scalar(value)
+
+ if not systems:
+ return []
+ if len(systems) == 1:
+ return [f" system: {scalar(systems[0])}"]
+ return [" systems:", *(f" - {scalar(s)}" for s in systems)]
+
+
+def _entry_systems(entry: dict) -> list[str]:
+ """The systems an entry states, in the shape _system_lines writes."""
+ if entry.get("system"):
+ return [str(entry["system"])]
+ return [str(s) for s in entry.get("systems") or []]
+
+
+def _section_names(text: str) -> set[str]:
+ """Entry names inside the generated device section."""
+ start = _device_section_start(text)
+ if start is None:
+ return set()
+ end = _FILES_END.search(text, text.index("\n", start) + 1)
+ section = text[start : end.start() if end else len(text)]
+ return {
+ m.group(1).strip('"').strip("'")
+ for m in re.finditer(r"^ - name:\s*(.+?)\s*$", section, re.M)
+ }
+
+
+def _set_section_systems(text: str, systems: dict[str, list[str]]) -> str:
+ """Rewrite the system fields of the named entries of the device section.
+
+ Any `system:` or `systems:` the entry holds is dropped and the new one
+ written right after its category, where a written entry keeps it.
+ """
+ if not systems:
+ return text
+ start = _device_section_start(text)
+ if start is None:
+ return text
+ head, section = text[:start], text[start:]
+ out: list[str] = []
+ current = ""
+ in_list = False
+ for line in section.split("\n"):
+ entry_head = re.match(r"^ - name:\s*(.+?)\s*$", line)
+ if entry_head:
+ current = entry_head.group(1).strip('"').strip("'")
+ if current in systems:
+ if in_list and line.startswith(" - "):
+ continue
+ in_list = False
+ if re.match(r"^ system:", line):
+ continue
+ if re.match(r"^ systems:\s*$", line):
+ in_list = True
+ continue
+ out.append(line)
+ if current in systems and re.match(r"^ category:", line):
+ out.extend(_system_lines(systems[current]))
+ return head + "\n".join(out)
+
+
def _format_device_entry(name: str, device: dict, role: str) -> str:
"""One generated device entry, in the field order of the written ones."""
lines = [
f" - name: {_zip_scalar(name)}",
" required: false",
" category: bios_zip",
+ *_system_lines(device.get("systems") or []),
]
if device.get("source_line"):
lines.append(f' source_ref: "{_build_source_ref(device, role)}"')
@@ -632,6 +702,11 @@ def merge_mame_devices(
has none. A set it lacks is written under the generated section, in name
order, with required false. An entry of another category under a device
name is reported, never touched.
+
+ A device carrying `systems` (attribute_systems) has them written on its
+ entry when the entry is in the generated section: `system:` for one,
+ `systems:` for several, neither for none. An entry above the section
+ keeps the system a reader gave it.
"""
path = Path(profile_path)
text = path.read_text(encoding="utf-8")
@@ -646,7 +721,9 @@ def merge_mame_devices(
}
contents_patches: list[dict] = []
ref_patches: dict[str, str] = {}
+ system_patches: dict[str, list[str]] = {}
new_blocks: dict[str, str] = {}
+ generated = _section_names(text)
for set_name, device in sorted(devices.items()):
name = f"{set_name}.zip"
existing = entries.get(name)
@@ -666,10 +743,18 @@ def merge_mame_devices(
if not old.get("source_ref") and device.get("source_line"):
ref_patches[name] = _build_source_ref(device, role)
changed = True
+ if (
+ "systems" in device
+ and name in generated
+ and _entry_systems(old) != list(device["systems"])
+ ):
+ system_patches[name] = list(device["systems"])
+ changed = True
report["updated" if changed else "unchanged"].append(set_name)
- if write and (contents_patches or ref_patches or new_blocks):
+ if write and (contents_patches or ref_patches or system_patches or new_blocks):
patched = _add_source_refs(text, ref_patches)
+ patched = _set_section_systems(patched, system_patches)
patched = _patch_bios_entries(patched, contents_patches)
patched = _insert_device_entries(patched, new_blocks)
shutil.copy2(path, path.with_suffix(PROFILE_BACKUP_SUFFIX))
diff --git a/scripts/scraper/mame_devices.py b/scripts/scraper/mame_devices.py
index 79edc439..618e7004 100644
--- a/scripts/scraper/mame_devices.py
+++ b/scripts/scraper/mame_devices.py
@@ -8,6 +8,9 @@ isdevice="yes", its ROMs and the source file defining the device. The lines
cited for a set are the ROM_START block of that file declaring those ROMs, read
at the release tag. A set whose block cannot be told apart is left without
lines and reported.
+
+The same document says which machines load each set, so a set is filed under
+the systems of those machines (attribute_systems).
"""
from __future__ import annotations
@@ -20,7 +23,11 @@ from collections.abc import Callable, Iterator
from concurrent.futures import ThreadPoolExecutor
from contextlib import contextmanager
from pathlib import Path
+from typing import NamedTuple
+from common import yaml_load
+
+from ._hash_merge import _device_section_start
from .mame_parser import _collect_rom_macros, _expand_macros, _parse_rom_entries
LISTXML_CHUNK = 8 * 1024 * 1024
@@ -31,6 +38,8 @@ _ATTR = re.compile(rb'(\w+)="([^"]*)"')
_DESCRIPTION = re.compile(rb"(.*?)", re.S)
_BIOSSET = re.compile(rb"]*)>")
_ROM = re.compile(rb"]*)>")
+_DEVICE_REF = re.compile(rb']*\bname="([^"]+)"')
+_SLOT_OPTION = re.compile(rb']*\bdevname="([^"]+)"')
_ROM_START = re.compile(r"ROM_START\s*\(\s*(\w+)\s*\)")
_ROM_END = re.compile(r"\bROM_END\b")
@@ -97,14 +106,40 @@ def open_listxml(path: Path) -> Iterator[io.BufferedIOBase]:
yield stream
-def scan_device_sets(stream: io.BufferedIOBase) -> tuple[str, dict[str, dict]]:
- """Release tag of a -listxml document and its device sets with dumped ROMs.
+class MachineLinks(NamedTuple):
+ """What one listxml element says about the sets it loads.
+
+ *romof* is the parent the element names. *uses* are the devices it can
+ instantiate: every subdevice of its default configuration, each device a
+ selectable slot option adds, and for a device its parent ROM device,
+ whose set the device's ROMs are also searched in.
+ """
+
+ romof: str
+ isdevice: bool
+ uses: tuple[str, ...]
+
+
+class Release(NamedTuple):
+ tag: str
+ devices: dict[str, dict]
+ machines: dict[str, MachineLinks]
+
+
+def scan_release(stream: io.BufferedIOBase) -> Release:
+ """Release tag, device sets with dumped ROMs and every element's links.
The document is read through a sliding window, never whole: the 0.289
- listxml is 311 MB.
+ listxml is 311 MB. The links are what infoxml.cpp writes: romof is the
+ driver's parent (src/frontend/mame/infoxml.cpp:761-765) or a device's
+ parent ROM device (856-858), device_ref every subdevice of the default
+ configuration (786, 1010-1015), slotoption each selectable card of a
+ slot (2129-2172). device_t::searchpath puts the parent ROM device after
+ the device itself (src/emu/device.cpp:140-152).
"""
tag = ""
devices: dict[str, dict] = {}
+ machines: dict[str, MachineLinks] = {}
buffer = b""
while chunk := stream.read(LISTXML_CHUNK):
buffer += chunk
@@ -115,13 +150,24 @@ def scan_device_sets(stream: io.BufferedIOBase) -> tuple[str, dict[str, dict]]:
end = buffer.find(b"", match.end())
if end == -1:
break
+ name = match.group(1).decode()
attrs = _attrs(match.group(2))
- if attrs.get("isdevice") == "yes":
- body = buffer[match.end() : end]
+ body = buffer[match.end() : end]
+ isdevice = attrs.get("isdevice") == "yes"
+ romof = attrs.get("romof", "")
+ uses = {
+ ref.decode()
+ for ref in (*_DEVICE_REF.findall(body), *_SLOT_OPTION.findall(body))
+ }
+ if isdevice and romof:
+ uses.add(romof)
+ uses.discard(name)
+ machines[name] = MachineLinks(romof, isdevice, tuple(sorted(uses)))
+ if isdevice:
roms = _device_roms(body)
if roms:
description = _DESCRIPTION.search(body)
- devices[match.group(1).decode()] = {
+ devices[name] = {
"description": html.unescape(description.group(1).decode())
if description else "",
"sourcefile": attrs.get("sourcefile", ""),
@@ -131,7 +177,86 @@ def scan_device_sets(stream: io.BufferedIOBase) -> tuple[str, dict[str, dict]]:
buffer = buffer[position:] if position else buffer[-(2 * LISTXML_CHUNK) :]
if not tag:
raise ValueError("no header: not a MAME -listxml document")
- return tag, devices
+ return Release(tag, devices, machines)
+
+
+def scan_device_sets(stream: io.BufferedIOBase) -> tuple[str, dict[str, dict]]:
+ """Release tag of a -listxml document and its device sets with dumped ROMs."""
+ release = scan_release(stream)
+ return release.tag, release.devices
+
+
+def profile_seeds(text: str) -> dict[str, str]:
+ """Set name to system, for the bios_zip entries above the device section.
+
+ These are the entries a reader wrote, the seeds attribute_systems starts
+ from. The generated section is left out: its systems derive from these,
+ and reading them back would carry a previous release's answer forward.
+ """
+ start = _device_section_start(text)
+ written = yaml_load(text if start is None else text[:start]) or {}
+ seeds: dict[str, str] = {}
+ for entry in written.get("files") or []:
+ name = str(entry.get("name") or "")
+ if entry.get("category") == "bios_zip" and name.endswith(".zip") and entry.get("system"):
+ seeds[name[:-4]] = str(entry["system"])
+ return seeds
+
+
+def _seed_system(
+ name: str, machines: dict[str, MachineLinks], seeds: dict[str, str]
+) -> str:
+ """System a profile entry gives this element, through its romof chain.
+
+ A clone names its parent and a parent its BIOS root set, so a Neo Geo
+ game reaches neogeo and takes its system. A device is never walked: its
+ romof is a parent ROM device, not the machine it belongs to. The driver
+ file decides nothing: one file holds machines of several systems
+ (neogeo.cpp declares the MVS and the AES, atari400.cpp the 800 and the
+ 5200), and filing a machine under the wrong one would take its devices
+ away from its own system.
+ """
+ seen: set[str] = set()
+ while name and name not in seen:
+ seen.add(name)
+ if name in seeds:
+ return seeds[name]
+ links = machines.get(name)
+ if links is None or links.isdevice:
+ return ""
+ name = links.romof
+ return ""
+
+
+def attribute_systems(
+ machines: dict[str, MachineLinks], seeds: dict[str, str]
+) -> dict[str, list[str]]:
+ """Systems whose machines can load each set.
+
+ *seeds* maps a set name to the system a profile entry states for it.
+ Each element _seed_system places passes its system to every device it
+ can instantiate, followed through those devices' own links. One walk per
+ system, so the cost is the size of the graph times the number of
+ systems.
+ """
+ starts: dict[str, list[str]] = {}
+ for name in machines:
+ system = _seed_system(name, machines, seeds)
+ if system:
+ starts.setdefault(system, []).append(name)
+ systems: dict[str, set[str]] = {}
+ for system, nodes in starts.items():
+ seen = set(nodes)
+ stack = list(nodes)
+ while stack:
+ links = machines.get(stack.pop())
+ for used in links.uses if links else ():
+ if used not in seen:
+ seen.add(used)
+ stack.append(used)
+ for name in seen:
+ systems.setdefault(name, set()).add(system)
+ return {name: sorted(found) for name, found in systems.items()}
def source_path(sourcefile: str) -> str:
diff --git a/scripts/scraper/mame_hash_scraper.py b/scripts/scraper/mame_hash_scraper.py
index e3726fc5..d3e7dec6 100644
--- a/scripts/scraper/mame_hash_scraper.py
+++ b/scripts/scraper/mame_hash_scraper.py
@@ -16,6 +16,7 @@ import subprocess
import sys
import urllib.error
import urllib.request
+from collections import Counter
from datetime import datetime, timezone
from pathlib import Path
from typing import Any
@@ -33,7 +34,13 @@ from ._hash_merge import (
merge_mame_devices,
merge_mame_profile,
)
-from .mame_devices import locate_sources, open_listxml, scan_device_sets
+from .mame_devices import (
+ attribute_systems,
+ locate_sources,
+ open_listxml,
+ profile_seeds,
+ scan_release,
+)
from .mame_parser import parse_mame_source_tree
log = logging.getLogger(__name__)
@@ -474,9 +481,10 @@ def _merge_devices(args: argparse.Namespace) -> None:
have to be the lines of the profile's upstream_commit.
"""
profile_path = _EMULATORS_DIR / "mame.yml"
- profile = yaml_load(profile_path.read_text(encoding="utf-8")) or {}
+ text = profile_path.read_text(encoding="utf-8")
+ profile = yaml_load(text) or {}
with open_listxml(args.listxml) as stream:
- tag, devices = scan_device_sets(stream)
+ tag, devices, machines = scan_release(stream)
version = _parse_version_tag(tag)
if str(profile.get("core_version")) != version:
raise RuntimeError(
@@ -494,6 +502,9 @@ def _merge_devices(args: argparse.Namespace) -> None:
devices,
lambda path: upstream.fetch_file(repo, commit, path, upstream.CACHE_DIR),
)
+ systems = attribute_systems(machines, profile_seeds(text))
+ for set_name, device in devices.items():
+ device["systems"] = systems.get(set_name, [])
report = merge_mame_devices(str(profile_path), devices, write=not args.dry_run)
print(f"mame-devices: {len(devices)} device ROM sets in the {tag} listxml")
@@ -503,6 +514,13 @@ def _merge_devices(args: argparse.Namespace) -> None:
print(f" = {len(report['unchanged'])} unchanged")
for set_name in report["conflict"]:
print(f" ! {set_name}.zip is listed under another category, left as written")
+ by_count = Counter(len(device["systems"]) for device in devices.values())
+ print(
+ f" systems: {by_count[1]} sets under one system, "
+ f"{sum(n for k, n in by_count.items() if k > 1)} under several, "
+ f"{by_count[0]} loaded by no machine a profile entry places "
+ "(they serve every system of the profile)"
+ )
if unplaced:
print(f" {len(unplaced)} without source lines:")
for set_name, reason in sorted(unplaced.items()):
diff --git a/scripts/slots.py b/scripts/slots.py
index 97058121..f43aa125 100644
--- a/scripts/slots.py
+++ b/scripts/slots.py
@@ -26,6 +26,7 @@ from common import (
archive_entry,
build_zip_contents_index,
check_inside_zip,
+ entry_system_ids,
holds_required_members,
load_data_dir_registry,
parse_md5_list,
@@ -234,7 +235,12 @@ def profile_claims(
full = f"{base_dest}/{dest}" if base_dest else dest
else:
placed = placement.place(
- {"profile": emu_name, "system": entry.get("system")}, dest
+ {
+ "profile": emu_name,
+ "system": entry.get("system"),
+ "systems": entry_system_ids(entry, profile),
+ },
+ dest,
)
if placed is None:
continue
diff --git a/scripts/validate_schemas.py b/scripts/validate_schemas.py
index 9186078a..0346cee9 100644
--- a/scripts/validate_schemas.py
+++ b/scripts/validate_schemas.py
@@ -59,6 +59,7 @@ def _validate_yaml_directory(
out.extend(_unreachable_citations(path, data))
if schema_name == "emulator.schema.json":
out.extend(_checks_without_values(path, data))
+ out.extend(_systems_outside_profile(path, data))
out.extend(_doubled_paths(path))
return out
@@ -72,6 +73,28 @@ _CHECK_FIELDS = {
}
+def _systems_outside_profile(path: Path, document: object) -> list[str]:
+ """An entry's systems: naming a system its profile does not list.
+
+ A --system pick selects the profile by its systems: and then the entry
+ by its own, so a name the profile lacks is one no pick ever reaches.
+ """
+ if not isinstance(document, dict):
+ return []
+ listed = {str(s) for s in document.get("systems") or []}
+ out: list[str] = []
+ for index, entry in enumerate(document.get("files") or []):
+ if not isinstance(entry, dict):
+ continue
+ unknown = [str(s) for s in entry.get("systems") or [] if str(s) not in listed]
+ if unknown:
+ out.append(
+ f"{path.relative_to(ROOT)}: files[{index}] ({entry.get('name')}) "
+ f"systems {', '.join(unknown)} not in the profile's systems"
+ )
+ return out
+
+
def _checks_without_values(path: Path, document: object) -> list[str]:
"""A check an entry declares with nothing to compare against.
diff --git a/scripts/verify.py b/scripts/verify.py
index 5088cd1b..6f4b78c2 100644
--- a/scripts/verify.py
+++ b/scripts/verify.py
@@ -73,6 +73,7 @@ from common import (
runs_standalone,
standalone_set as platform_standalone_set,
entry_serves_systems,
+ entry_system_ids,
sanitize_pack_path,
select_emulator_profiles,
)
@@ -620,7 +621,7 @@ def find_undeclared_files(
archive_entries[archive_key] = {
"profile": emu_name,
"emulator": profile.get("emulator", emu_name),
- "systems": list(profile.get("systems", [])),
+ "systems": entry_system_ids(f, profile),
"system": f.get("system"),
"region": f.get("region"),
"variant_group": f.get("variant_group"),
@@ -698,7 +699,7 @@ def find_undeclared_files(
entry = {
"profile": emu_name,
"emulator": profile.get("emulator", emu_name),
- "systems": list(profile.get("systems", [])),
+ "systems": entry_system_ids(f, profile),
"system": f.get("system"),
"region": f.get("region"),
"variant_group": f.get("variant_group"),
diff --git a/tests/test_install_selection.py b/tests/test_install_selection.py
index a9d8fe95..e08f5469 100644
--- a/tests/test_install_selection.py
+++ b/tests/test_install_selection.py
@@ -578,13 +578,16 @@ class InstallMatchesASystemPack(unittest.TestCase):
"""`install.py --system X --region R` against a real `generate_pack.py
--system X --region R` build. The cases are the ones a review reproduced:
ColecoVision's extras filed at destinations another system declares, and
- PicoDrive's Mega CD variant group spread over two systems."""
+ PicoDrive's Mega CD variant group spread over two systems. The last pick
+ holds MAME device sets filed under several systems (systems:), under one,
+ and under none."""
PLATFORM = "retroarch"
CASES = (
(["coleco-colecovision"], []),
(["sega-mega-cd"], ["north-america"]),
(["sony-playstation"], ["japan"]),
+ (["elektronika-bk"], []),
)
@classmethod
diff --git a/tests/test_mame_devices.py b/tests/test_mame_devices.py
index b1542922..60898895 100644
--- a/tests/test_mame_devices.py
+++ b/tests/test_mame_devices.py
@@ -3,7 +3,8 @@
Synthetic listxml and driver source, no network: the scan keeps only device
sets with dumped ROMs, the source line is the ROM_START block holding them,
and the merge adds sets, refreshes the contents of written ones without
-touching what a reader wrote, and leaves BIOS root sets alone.
+touching what a reader wrote, and leaves BIOS root sets alone. Each set is
+filed under the systems of the machines that can load it, never guessed.
"""
from __future__ import annotations
@@ -25,10 +26,14 @@ from scripts.scraper.mame_devices import (
ABSENT,
AMBIGUOUS,
NO_FILE,
+ MachineLinks,
+ attribute_systems,
find_rom_block,
locate_sources,
open_listxml,
+ profile_seeds,
scan_device_sets,
+ scan_release,
source_path,
)
@@ -359,6 +364,267 @@ class RefRole(unittest.TestCase):
self.assertEqual(mame_ref_role({"emulator": "MAME"}), "")
+GRAPH_LISTXML = b"""
+
+\t
+\t\t
+\t
+\t
+\t\t
+\t\t
+\t
+\t
+\t\t
+\t
+\t
+\t\t
+\t
+\t
+\t\t
+\t\t\t
+\t\t\t
+\t\t
+\t
+\t
+\t\t
+\t\t
+\t
+\t
+\t\t
+\t
+\t
+\t\t
+\t
+\t
+\t\t
+\t
+\t
+\t\t
+\t
+\t
+\t\t
+\t
+\t
+\t\t
+\t
+\t
+\t\t
+\t
+\t
+\t\t
+\t
+
+"""
+
+SEEDS = {"neogeo": "snk-neogeo-mvs", "apple2gs": "apple2gs"}
+
+
+def _release():
+ return scan_release(io.BytesIO(GRAPH_LISTXML))
+
+
+class TheListxmlSaysWhoLoadsASet(unittest.TestCase):
+ """infoxml.cpp writes romof, device_ref and slotoption: the scan keeps
+ them for every element, device or machine."""
+
+ def test_links(self):
+ machines = _release().machines
+ self.assertEqual(machines["mslugj"], MachineLinks("mslug", False, ("cart_dev",)))
+ self.assertEqual(machines["apple2gs"].uses, ("a2diskii", "a2ssc"))
+ # A device's ROMs are searched in its parent ROM device's set too.
+ self.assertEqual(machines["cart_dev"].uses, ("cart_base",))
+ self.assertTrue(machines["cart_dev"].isdevice)
+
+ def test_scan_device_sets_is_the_same_scan(self):
+ release = _release()
+ self.assertEqual(
+ scan_device_sets(io.BytesIO(GRAPH_LISTXML)), (release.tag, release.devices)
+ )
+
+
+class DeviceSetsFollowTheMachinesThatLoadThem(unittest.TestCase):
+
+ def setUp(self):
+ self.systems = attribute_systems(_release().machines, SEEDS)
+
+ def test_a_clone_reaches_the_bios_through_its_parent(self):
+ self.assertEqual(self.systems["cart_dev"], ["snk-neogeo-mvs"])
+ self.assertEqual(self.systems["ng_memcard"], ["snk-neogeo-mvs"])
+
+ def test_a_parent_rom_device_goes_with_its_child(self):
+ self.assertEqual(self.systems["cart_base"], ["snk-neogeo-mvs"])
+
+ def test_slot_cards_and_their_own_devices(self):
+ self.assertEqual(self.systems["a2ssc"], ["apple2gs"])
+ self.assertEqual(self.systems["a2diskii"], ["apple2gs"])
+ self.assertEqual(self.systems["diskii_fdc"], ["apple2gs"])
+
+ def test_a_machine_no_entry_places_files_nothing(self):
+ # aes shares neogeo.cpp with the MVS but no entry lists it: the
+ # driver file is not a system, so ym2610 gets the MVS only through
+ # the MVS machines, and pc_kbd nothing at all.
+ self.assertEqual(self.systems["ym2610"], ["snk-neogeo-mvs"])
+ self.assertNotIn("pc_kbd", self.systems)
+
+ def test_several_systems(self):
+ systems = attribute_systems(_release().machines, {**SEEDS, "aes": "snk-neogeo-aes"})
+ self.assertEqual(systems["ym2610"], ["snk-neogeo-aes", "snk-neogeo-mvs"])
+ self.assertEqual(systems["ng_memcard"], ["snk-neogeo-mvs"])
+
+ def test_a_device_seed_passes_to_what_it_uses_never_up_its_romof(self):
+ systems = attribute_systems(
+ _release().machines, {"a2diskii": "apple2gs", "cart_base": "x-system"}
+ )
+ self.assertEqual(systems["diskii_fdc"], ["apple2gs"])
+ self.assertNotIn("cart_dev", systems)
+
+ def test_seeds_are_the_written_entries_only(self):
+ text = (
+ PROFILE + "\n" + DEVICE_SECTION + "\n - name: ym2610.zip\n"
+ " required: false\n category: bios_zip\n system: snk-neogeo-mvs\n"
+ )
+ self.assertEqual(
+ profile_seeds(text), {"neogeo": "snk-neogeo-mvs", "qsound": "capcom-cps2"}
+ )
+
+
+class TheMergeWritesTheSystems(unittest.TestCase):
+
+ def setUp(self):
+ self._tmp = tempfile.TemporaryDirectory()
+ self.path = Path(self._tmp.name) / "mame.yml"
+ self.path.write_text(PROFILE, encoding="utf-8")
+ self.devices = _release().devices
+ self.devices["qsound"] = _devices()["qsound"]
+ systems = attribute_systems(_release().machines, SEEDS)
+ for name, device in self.devices.items():
+ device["systems"] = systems.get(name, [])
+
+ def tearDown(self):
+ self._tmp.cleanup()
+
+ def _merge(self) -> dict[str, list[str]]:
+ return merge_mame_devices(str(self.path), self.devices, write=True)
+
+ def _entries(self) -> dict[str, dict]:
+ data = yaml_load(self.path.read_text(encoding="utf-8"))
+ return {f["name"]: f for f in data["files"]}
+
+ def test_one_system_several_or_none(self):
+ self.devices["ym2610"]["systems"] = ["snk-neogeo-aes", "snk-neogeo-mvs"]
+ self._merge()
+ entries = self._entries()
+ self.assertEqual(entries["a2diskii.zip"]["system"], "apple2gs")
+ self.assertNotIn("systems", entries["a2diskii.zip"])
+ self.assertEqual(entries["ym2610.zip"]["systems"], ["snk-neogeo-aes", "snk-neogeo-mvs"])
+ self.assertNotIn("system", entries["ym2610.zip"])
+ self.assertNotIn("system", entries["pc_kbd.zip"])
+ self.assertNotIn("systems", entries["pc_kbd.zip"])
+ text = self.path.read_text(encoding="utf-8")
+ block = text[text.index("- name: a2diskii.zip"):]
+ self.assertLess(block.index("category: bios_zip"), block.index("system: apple2gs"))
+
+ def test_a_written_entry_keeps_its_system(self):
+ self.devices["qsound"]["systems"] = ["apple2gs"]
+ self._merge()
+ self.assertEqual(self._entries()["qsound.zip"]["system"], "capcom-cps2")
+
+ def test_a_refresh_rewrites_the_generated_systems(self):
+ self._merge()
+ self.devices["a2diskii"]["systems"] = ["apple2gs", "coco"]
+ self.devices["cart_dev"]["systems"] = []
+ report = self._merge()
+ self.assertIn("a2diskii", report["updated"])
+ entries = self._entries()
+ self.assertEqual(entries["a2diskii.zip"]["systems"], ["apple2gs", "coco"])
+ self.assertNotIn("system", entries["cart_dev.zip"])
+ self.devices["a2diskii"]["systems"] = ["coco"]
+ self._merge()
+ entries = self._entries()
+ self.assertEqual(entries["a2diskii.zip"]["system"], "coco")
+ self.assertNotIn("systems", entries["a2diskii.zip"])
+ # The list items of systems: went with it, the member list did not.
+ self.assertEqual(entries["a2diskii.zip"]["contents"][0]["name"], "341-0027.bin")
+
+ def test_a_second_run_changes_nothing(self):
+ self._merge()
+ first = self.path.read_text(encoding="utf-8")
+ report = self._merge()
+ self.assertEqual(report["updated"], [])
+ self.assertEqual(self.path.read_text(encoding="utf-8"), first)
+
+
+class APickReadsTheEntrySystems(unittest.TestCase):
+ """--system on a pack and on the installer selects by the entry's own
+ systems: before the profile's."""
+
+ SYSTEMS = ["apple2gs", "coco", "snk-neogeo-mvs"]
+
+ def test_entry_system_ids(self):
+ from scripts.common import entry_system_ids
+
+ profile = {"systems": self.SYSTEMS}
+ self.assertEqual(entry_system_ids({"system": "coco"}, profile), ["coco"])
+ self.assertEqual(
+ entry_system_ids({"systems": ["apple2gs", "coco"]}, profile), ["apple2gs", "coco"]
+ )
+ self.assertEqual(entry_system_ids({}, profile), self.SYSTEMS)
+
+ def test_entry_serves_systems(self):
+ from scripts.common import entry_serves_systems
+
+ profile = {"systems": self.SYSTEMS}
+ entry = {"systems": ["apple2gs", "coco"]}
+ self.assertTrue(entry_serves_systems(entry, profile, ["coco"]))
+ self.assertFalse(entry_serves_systems(entry, profile, ["snk-neogeo-mvs"]))
+ self.assertTrue(entry_serves_systems({}, profile, ["snk-neogeo-mvs"]))
+
+ def test_the_gap_report_and_the_extras_carry_them(self):
+ import sys
+
+ sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "scripts"))
+ from packextras import _collect_emulator_extras, _extra_system_ids
+ from verify import find_undeclared_files
+
+ profile = {
+ "emulator": "MAME", "type": "libretro", "systems": self.SYSTEMS,
+ "files": [{"name": "a2diskii.zip", "category": "bios_zip",
+ "systems": ["apple2gs", "coco"]}],
+ }
+ config = {"cores": ["mame"], "systems": {}}
+ db = {
+ "files": {"s1": {"name": "a2diskii.zip", "path": "bios/Apple/a2diskii.zip",
+ "size": 10, "sha1": "s1", "md5": "m1", "crc32": "12345678"}},
+ "indexes": {"by_name": {"a2diskii.zip": ["s1"]}, "by_md5": {"m1": "s1"},
+ "by_crc32": {"12345678": "s1"}},
+ }
+ (gap,) = find_undeclared_files(config, "emulators", db, emu_profiles={"mame": profile})
+ self.assertEqual(gap["systems"], ["apple2gs", "coco"])
+ (extra,) = _collect_emulator_extras(
+ config, "emulators", db, set(), "", {"mame": profile}, include_all=True
+ )
+ self.assertEqual(_extra_system_ids(extra), ["apple2gs", "coco"])
+
+ def test_the_schema_and_the_profile_list(self):
+ try:
+ from scripts import validate_schemas
+ except ImportError as exc:
+ self.skipTest(f"validate_schemas needs jsonschema: {exc}")
+ validator = validate_schemas._validator("emulator.schema.json")
+ root = Path(__file__).resolve().parents[1]
+ base = {"emulator": "x", "type": "libretro", "systems": ["a", "b"]}
+ both = {**base, "files": [{"name": "x.zip", "system": "a", "systems": ["a", "b"]}]}
+ self.assertTrue(list(validator.iter_errors(both)))
+ one = {**base, "files": [{"name": "x.zip", "systems": ["a"]}]}
+ self.assertTrue(list(validator.iter_errors(one)))
+ fine = {**base, "files": [{"name": "x.zip", "systems": ["a", "b"]}]}
+ self.assertEqual(list(validator.iter_errors(fine)), [])
+ outside = {**base, "files": [{"name": "x.zip", "systems": ["a", "c"]}]}
+ found = validate_schemas._systems_outside_profile(root / "emulators" / "x.yml", outside)
+ self.assertEqual(len(found), 1)
+ self.assertIn("systems c", found[0])
+
+
class Cli(unittest.TestCase):
def test_devices_needs_a_listxml(self):
diff --git a/wiki/profiling.md b/wiki/profiling.md
index 809d79f3..ebf96a27 100644
--- a/wiki/profiling.md
+++ b/wiki/profiling.md
@@ -528,6 +528,7 @@ partitions), and `game_count`.
| `name` | filename as the core expects it |
| `required` | true if the core needs this file to function |
| `system` | system ID this file belongs to (for multi-system profiles) |
+| `systems` | the systems of the profile this file serves, when it serves several but not all (a MAME device set the machines of two systems load). Never written with `system` |
| `archive` | ROM set the file lives inside, for arcade entries (e.g. `neogeo.zip`) |
| `size` | expected size in bytes, or a list when the code accepts several exact sizes |
| `min_size`, `max_size` | size range when the code accepts a range |
diff --git a/wiki/testing-guide.md b/wiki/testing-guide.md
index 08e226c7..80cdfa76 100644
--- a/wiki/testing-guide.md
+++ b/wiki/testing-guide.md
@@ -110,6 +110,13 @@ and merged into a profile, on an inline listxml and driver source. Covers:
entry's contents refreshed with its manual fields kept, BIOS root sets left
as written, a second run changing nothing, a new BIOS root placed before the
section
+- Systems: the links the scan keeps (`romof`, `device_ref`, `slotoption`, a
+ device's parent ROM device), a set reached through a clone, its parent and
+ a slot card, one set under two systems, a machine no entry lists placing
+ nothing, seeds read above the generated section only, `system:` or
+ `systems:` written and rewritten by a refresh, a written entry's system
+ kept, and a `--system` pick reading the entry's own systems through the gap
+ report and the core extras
**test_fbneo_parser.** Tests the FBNeo C source parser that identifies
`BDF_BOARDROM` sets. Same inline fixture approach.
diff --git a/wiki/tools.md b/wiki/tools.md
index 28980225..ade45bf7 100644
--- a/wiki/tools.md
+++ b/wiki/tools.md
@@ -866,6 +866,16 @@ go under the `Device ROM sets (generated from MAME -listxml)` comment at the end
of `files:` with `required: false`. A set the profile already lists keeps every
field a reader wrote and only gets its contents refreshed.
+Each generated set is filed under the systems of the machines that can load
+it. A machine takes the `system:` of the first set on its `romof` chain that a
+written entry lists (a clone reaches its parent, a parent its BIOS root set),
+and passes it to every device in its `device_ref` list and every card its
+slots offer (`slotoption`), followed through those devices' own links and
+their parent ROM devices. A set loaded by machines of one system gets
+`system:`, of several `systems:`, of none neither field, and then serves every
+system of the profile. The driver file is never used: `neogeo.cpp` declares
+the MVS and the AES. The output counts the sets in each case.
+
A plain run (pipeline step 2a) that moves `mame.yml` to a new release
downloads that release's `-listxml` into `.cache/dats/` and runs the device
merge itself, so the BIOS root sets and the device sets name one release.