diff --git a/bios/Arcade/Arcade/.variants/cvs.zip.3c69f366 b/bios/Arcade/Arcade/.variants/cvs.zip.3c69f366 new file mode 100644 index 00000000..00ddcfa0 Binary files /dev/null and b/bios/Arcade/Arcade/.variants/cvs.zip.3c69f366 differ diff --git a/bios/Arcade/Arcade/.variants/cvs.zip.95581230 b/bios/Arcade/Arcade/.variants/cvs.zip.95581230 deleted file mode 100644 index 91621c12..00000000 Binary files a/bios/Arcade/Arcade/.variants/cvs.zip.95581230 and /dev/null differ diff --git a/bios/Arcade/Arcade/.variants/pgm.zip.6bbbce09 b/bios/Arcade/Arcade/.variants/pgm.zip.6bbbce09 deleted file mode 100644 index 3850ae3d..00000000 Binary files a/bios/Arcade/Arcade/.variants/pgm.zip.6bbbce09 and /dev/null differ diff --git a/bios/Arcade/Arcade/.variants/pgm.zip.931a4971 b/bios/Arcade/Arcade/.variants/pgm.zip.931a4971 deleted file mode 100644 index 7fbd528c..00000000 Binary files a/bios/Arcade/Arcade/.variants/pgm.zip.931a4971 and /dev/null differ diff --git a/bios/Arcade/Arcade/a2diskiing.zip b/bios/Arcade/Arcade/a2diskiing.zip deleted file mode 100644 index 603826a8..00000000 Binary files a/bios/Arcade/Arcade/a2diskiing.zip and /dev/null differ diff --git a/bios/Arcade/Arcade/coco_fdc_v11.zip b/bios/Arcade/Arcade/coco_fdc_v11.zip deleted file mode 100644 index 7e5ea5ea..00000000 Binary files a/bios/Arcade/Arcade/coco_fdc_v11.zip and /dev/null differ diff --git a/bios/Arcade/Arcade/cvs.zip b/bios/Arcade/Arcade/cvs.zip index 00ddcfa0..91621c12 100644 Binary files a/bios/Arcade/Arcade/cvs.zip and b/bios/Arcade/Arcade/cvs.zip differ diff --git a/bios/Arcade/Arcade/dragon64.zip b/bios/Arcade/Arcade/dragon64.zip deleted file mode 100644 index 6f21fe5b..00000000 Binary files a/bios/Arcade/Arcade/dragon64.zip and /dev/null differ diff --git a/bios/Arcade/Arcade/hp82937.zip b/bios/Arcade/Arcade/hp82937.zip deleted file mode 100644 index f96bbb3a..00000000 Binary files a/bios/Arcade/Arcade/hp82937.zip and /dev/null differ diff --git a/bios/Arcade/Arcade/hp98034.zip b/bios/Arcade/Arcade/hp98034.zip deleted file mode 100644 index 222d7db3..00000000 Binary files a/bios/Arcade/Arcade/hp98034.zip and /dev/null differ diff --git a/bios/Arcade/Arcade/mz80k.zip b/bios/Arcade/Arcade/mz80k.zip deleted file mode 100644 index 6eab951b..00000000 Binary files a/bios/Arcade/Arcade/mz80k.zip and /dev/null differ diff --git a/bios/Arcade/Arcade/pc8001.zip b/bios/Arcade/Arcade/pc8001.zip deleted file mode 100644 index c110785c..00000000 Binary files a/bios/Arcade/Arcade/pc8001.zip and /dev/null differ diff --git a/bios/Arcade/Arcade/pcw9512.zip b/bios/Arcade/Arcade/pcw9512.zip deleted file mode 100644 index 7b7ef466..00000000 Binary files a/bios/Arcade/Arcade/pcw9512.zip and /dev/null differ diff --git a/bios/Arcade/Arcade/pgm.zip b/bios/Arcade/Arcade/pgm.zip index b7a1fc70..3850ae3d 100644 Binary files a/bios/Arcade/Arcade/pgm.zip and b/bios/Arcade/Arcade/pgm.zip differ diff --git a/bios/Arcade/Arcade/trs80.zip b/bios/Arcade/Arcade/trs80.zip deleted file mode 100644 index 95d3dec1..00000000 Binary files a/bios/Arcade/Arcade/trs80.zip and /dev/null differ diff --git a/bios/Arcade/Arcade/tvc64.zip b/bios/Arcade/Arcade/tvc64.zip deleted file mode 100644 index 825e3ac5..00000000 Binary files a/bios/Arcade/Arcade/tvc64.zip and /dev/null differ diff --git a/bios/Arcade/MAME/.variants/pgm.zip.6ade4934 b/bios/Arcade/MAME/.variants/pgm.zip.6ade4934 deleted file mode 100644 index 0c4bb0c7..00000000 Binary files a/bios/Arcade/MAME/.variants/pgm.zip.6ade4934 and /dev/null differ diff --git a/bios/Arcade/MAME/a2mouse.zip b/bios/Arcade/MAME/a2mouse.zip deleted file mode 100755 index 67ab6c38..00000000 Binary files a/bios/Arcade/MAME/a2mouse.zip and /dev/null differ diff --git a/bios/Arcade/MAME/bbc_tube_a500.zip b/bios/Arcade/MAME/bbc_tube_a500.zip index 0d34613a..806d26f5 100755 Binary files a/bios/Arcade/MAME/bbc_tube_a500.zip and b/bios/Arcade/MAME/bbc_tube_a500.zip differ diff --git a/bios/Arcade/MAME/bbc_tube_a500d.zip b/bios/Arcade/MAME/bbc_tube_a500d.zip index 0ab79682..75de02d5 100755 Binary files a/bios/Arcade/MAME/bbc_tube_a500d.zip and b/bios/Arcade/MAME/bbc_tube_a500d.zip differ diff --git a/bios/Arcade/MAME/sw1000xg.zip b/bios/Arcade/MAME/sw1000xg.zip index 78c7573c..f758a6cb 100755 Binary files a/bios/Arcade/MAME/sw1000xg.zip and b/bios/Arcade/MAME/sw1000xg.zip differ diff --git a/bios/Elektronika/BK/.variants/bk0010.zip.65a6d1db b/bios/Elektronika/BK/.variants/bk0010.zip.65a6d1db deleted file mode 100644 index 963085ac..00000000 Binary files a/bios/Elektronika/BK/.variants/bk0010.zip.65a6d1db and /dev/null differ diff --git a/bios/Mattel/Aquarius/.variants/aquarius_ar.zip.73026a45 b/bios/Mattel/Aquarius/.variants/aquarius_ar.zip.73026a45 new file mode 100644 index 00000000..1074fb6a Binary files /dev/null and b/bios/Mattel/Aquarius/.variants/aquarius_ar.zip.73026a45 differ diff --git a/bios/Mattel/Aquarius/aquarius_ar.zip b/bios/Mattel/Aquarius/aquarius_ar.zip index 1074fb6a..b99fc7c7 100644 Binary files a/bios/Mattel/Aquarius/aquarius_ar.zip and b/bios/Mattel/Aquarius/aquarius_ar.zip differ diff --git a/bios/Other/opentyrian/dpmi16bi.ovl b/bios/Other/opentyrian/dpmi16bi.ovl new file mode 100644 index 00000000..a38dd371 Binary files /dev/null and b/bios/Other/opentyrian/dpmi16bi.ovl differ diff --git a/bios/Other/opentyrian/exitmsg.bin b/bios/Other/opentyrian/exitmsg.bin new file mode 100644 index 00000000..46eac1d9 --- /dev/null +++ b/bios/Other/opentyrian/exitmsg.bin @@ -0,0 +1 @@ +                                                                                 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÙ                           Thank you for playing                            À¿³                            ÄÄ ÄÄ ÄÄ T y r i a n ÄÄÄ ÄÄ Ä                              ³ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´³       This game is NOT shareware. Please enjoy it but don't copy it.         ³³                                                                              ³³  If you want to see more great games from Epic MegaGames, visit us Online.   ³³                                                                              ³³ If you have a CompuServe account just GO EPIC at any CompuServe Prompt.      ³³ Here, you can get all of Epic's Shareware games, receive technical support,  ³³ or engage in casual conversation about any Epic product with other           ³³ CompuServe users.                                                            ³³                                                                              ³³ For all the latest Epic News, and links to Epic Distribution sites, visit    ³³ our World Wide Web site at http://www.epicgames.com                          ³ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄH o w Ät o Äo r d e r ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´³                                                                              ³³  W r i t e t o :                C a l l u s :                 V i s i t u s o n l i n e :          ³³  E p i c M e g a G a m e s           8 0 0 - 9 7 2 - 7 4 3 4 ( O r d e r s ) C o m p u S e r v e : G O E P I C       ³³  1 0 4 0 6 H o l b r o o k D r i v e     3 0 1 - 9 8 3 - 9 7 7 1 ( S u p p o r t ) B B S : 4 1 4 - 7 8 9 - 4 2 1 0         ³³  P o t o m a c , M D 2 0 8 5 4 U S A + 4 4 - 1 7 6 7 - 2 6 0 - 9 0 3 ( U K )    I n t e r n e t :                 ³³   0 - 4 0 8 9 9 6 8 4 - 0 ( G D R )      o r d e r s @ e p i c g a m e s . c o m ³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ                                                                                 \ No newline at end of file diff --git a/bios/Other/opentyrian/loudness.awe b/bios/Other/opentyrian/loudness.awe new file mode 100644 index 00000000..0aa86022 Binary files /dev/null and b/bios/Other/opentyrian/loudness.awe differ diff --git a/bios/Other/opentyrian/modems.txt b/bios/Other/opentyrian/modems.txt new file mode 100644 index 00000000..22b40f73 --- /dev/null +++ b/bios/Other/opentyrian/modems.txt @@ -0,0 +1,52 @@ +[MODEMS] + +Data + "Standard 9600 Baud Modem,9600,AT &F &C1 &D2 &Q5 &K0 S46=0", + "Standard 14.4 Baud Modem,14400,AT &F &C1 &D2 &Q5 &K0 S46=0", + "Acubit 14.4 fax v32,14400,AT &F &C1 &D2 %C0 \N1", + "AT&T Data Port 14.4 FaxModem,14400,AT &F &C1 &D2 S41=3 \N0 %C0", + "Boca 14.4 fax,14400,AT &F &C1 &D2 \N0 \G0 &K0 %C0 N0", + "Cardinal 14.4 v32,14400,AT &F &C1 &D2 N0", + "Cardinal 9600fax,14400,AT &F &C1 &D2 &Q6 &K0 %C0 \N0 N0", + "Digicom Scout Plus 14.4 Fax,14400,AT &F &C1 &D2 *M0 *E0", + "Gateway Telepath 14.4 fax,14400,AT &F &C1 &D2 B0 N0 \N0 %C0 &K0", + "Gateway Telepath 550,14400,AT &F &C1 &D2 S27=32 S15=16 S13=64 &B0 &H2 &I1 &K0 &M0", + "GVC 14.4 fax,14400,AT &F &C1 &D2 S46=0 N0 &K0", + "GVC 14.4 MNP2-5 v42,14400,AT &F &C1 &D2 %C0 \N0 B8", + "Hayes Optima 14.4 #1,14400,AT &F &C1 &D2 \N0", + "Hayes Optima 14.4 #2,14400,AT &F &C1 &D2 S46=0 N0 &K0", + "Hayes Optima 28.8,28800,AT &F &C1 &D2 &K0 &M0 &Q5 S46=136", + "Hayes Ultra 14.4,14400,AT &F &C1 &D2 &Q5 &K0", + "Identity Internal,14400,AT &F &C1 &D2 B8 %C0 \Q0 \N1", + "Infotel 14.4,14400,AT &F &C1 &D2 &Q6 %C0 N0 &K0", + "Intel 14.4,14400,AT &F &C1 &D2 \N0 \Q0 \J1 \V0", + "Intel 14.4 ext,14400,AT &F &C1 &D2 \N0 /Q0", + "Intel 14.4 fax,14400,AT &F N0 &D2 &C1 &Q6 &K0 S0=1", + "Intel 14.4i,14400,AT &F &C1 &D2 B8 %C0 H0 \N0 \Q0", + "Intel 14.4i fax,14400,AT &F &C1 &D2 \N0 \Q0", + "MegaHertz C596FM,14400,AT &F &C1 &D2 \N1 \J0 %C0", + "Rockwell 14400,14400,AT &F &C1 &D2 N0 S46=0 &K0 %C0", + "Practical Perip 14.4FX v32,14400,AT &F &C1 &D2 &K0 &Q5 S46=0", + "Redicard v.32 bis 14.4,14400,AT &F &C1 &D2 %C \N", + "Smart One 1442F,14400,AT &F &C1 &D2 %C0 &K0 S95=44 S46=0", + "SupraFax 14.4,14400,AT &F &C1 &D2 &Q6 &K %C0 \N1 S37=6 S0=1", + "SupraFax 14.4 v32,14400,AT &F &C1 &D2 S46=136 %C0", + "SupraFax 14.4 v32-,14400,AT &F &C1 &D2 S46=136 M1 Q0 D2", + "Telebit Worldblazer 14.4,14400,AT &F &C1 &D2 S51=4 S180=0 S183=8 S190=0 L1", + "Telepath 550,14400,AT &F &C1 &D2 &M0 &K0 S0=1", + "USR Sportster 14.4 v32 fax,14400,AT &F &A0 &B1 &C1 &D2 &M0 &H0 &I0 &K0 S27=48", + "USRobotics 14.4 fax,14400,AT &F &A0 &B1 &C1 &D2 &M0 &H0 &I0 &K0 S27=48", + "USRobotics 14.4 v32 fax,14400,AT &F &A0 &B1 &C1 &D2 &M0 &H0 &I0 &K0 S27=48", + "USRobotics Sportster 14.4,14400,AT &F &A0 &B1 &C1 &D2 &M0 &H0 &I0 &K0 S27=48", + "Viva 14.4,14400,AT &F &C1 &D2 \N0", + "Viva 14.4i fax,14400,AT &F &C1 &D2 \N0 \Q0 \J1 \VI", + "VivaFax 14.4,14400,AT &F &C1 &D2 N0 \N1 %C0 &K0", + "VivaFax 14.4,14400,AT &F &C1 &D2 \Q0 &M0 %C0 B8 \N1", + "ZOOM 14.4,14400,AT &F &C1 &D2 &K0 &Q6 %C0 \G0 \N0 S46=136", + "ZOOM 14.4 v32 v42 fax,14400,AT &F &C1 &D2 &K0 &Q6 %C0 \G0 \N0 S46=136", + "ZOOM VFP 14.4,14400,AT &F &C1 &D2 &K0 &Q6 %C0 \G0 \N0 S46=136", + "ZOOM VFX v32,14400,AT &F &C1 &D2 &K0 &Q6 %C0 \G0 \N0 S46=136", + "ZOOM VXP 14.4 v42,14400,AT &F &C1 &D2 &K0 &Q6 %C0 \G0 \N0 S46=136", + "Zoomfax VFP v32,14400,AT &F &C1 &D2 &K0 &Q6 %C0 \G0 \N0 S46=136", + "ZyXel 14.4,14400,AT &F &C1 &D2 \N0", + "ZyXEL U-1496 14.4,14400,AT &F &C1 &D2 S46=0 &K0" diff --git a/bios/Other/opentyrian/netarena.pcx b/bios/Other/opentyrian/netarena.pcx new file mode 100644 index 00000000..facb11b3 Binary files /dev/null and b/bios/Other/opentyrian/netarena.pcx differ diff --git a/bios/Other/opentyrian/netfont1.pcx b/bios/Other/opentyrian/netfont1.pcx new file mode 100644 index 00000000..d18dd31e Binary files /dev/null and b/bios/Other/opentyrian/netfont1.pcx differ diff --git a/bios/Other/opentyrian/netfont2.pcx b/bios/Other/opentyrian/netfont2.pcx new file mode 100644 index 00000000..963fe972 Binary files /dev/null and b/bios/Other/opentyrian/netfont2.pcx differ diff --git a/bios/Other/opentyrian/netmega.pcx b/bios/Other/opentyrian/netmega.pcx new file mode 100644 index 00000000..472fbc26 Binary files /dev/null and b/bios/Other/opentyrian/netmega.pcx differ diff --git a/bios/Other/opentyrian/netset.pcx b/bios/Other/opentyrian/netset.pcx new file mode 100644 index 00000000..f9d6ff07 Binary files /dev/null and b/bios/Other/opentyrian/netset.pcx differ diff --git a/bios/Other/opentyrian/netterm.int b/bios/Other/opentyrian/netterm.int new file mode 100644 index 00000000..8e4fb8fb Binary files /dev/null and b/bios/Other/opentyrian/netterm.int differ diff --git a/bios/Other/opentyrian/order.tfp b/bios/Other/opentyrian/order.tfp new file mode 100644 index 00000000..bf42beff Binary files /dev/null and b/bios/Other/opentyrian/order.tfp differ diff --git a/bios/Other/opentyrian/setup.box b/bios/Other/opentyrian/setup.box new file mode 100644 index 00000000..b6317503 Binary files /dev/null and b/bios/Other/opentyrian/setup.box differ diff --git a/bios/Other/opentyrian/setup.ini b/bios/Other/opentyrian/setup.ini new file mode 100644 index 00000000..33c5666a --- /dev/null +++ b/bios/Other/opentyrian/setup.ini @@ -0,0 +1,6 @@ +[INFO] +NETTYPE="4" +MODEMPHONE="" +LANGUAGE="English" +LANG="1" +LNG="INT" diff --git a/bios/Other/opentyrian/setup.int b/bios/Other/opentyrian/setup.int new file mode 100644 index 00000000..10fbaa5f Binary files /dev/null and b/bios/Other/opentyrian/setup.int differ diff --git a/bios/Other/opentyrian/shipedit.pcx b/bios/Other/opentyrian/shipedit.pcx new file mode 100644 index 00000000..f1fca3e2 Binary files /dev/null and b/bios/Other/opentyrian/shipedit.pcx differ diff --git a/bios/Other/opentyrian/tyrian.ico b/bios/Other/opentyrian/tyrian.ico new file mode 100644 index 00000000..ba77c68e Binary files /dev/null and b/bios/Other/opentyrian/tyrian.ico differ diff --git a/bios/Other/opentyrian/tyrset.pcx b/bios/Other/opentyrian/tyrset.pcx new file mode 100644 index 00000000..f9d6ff07 Binary files /dev/null and b/bios/Other/opentyrian/tyrset.pcx differ diff --git a/bios/Other/opentyrian/user1.shp b/bios/Other/opentyrian/user1.shp new file mode 100644 index 00000000..9a52eb02 Binary files /dev/null and b/bios/Other/opentyrian/user1.shp differ diff --git a/bios/Other/opentyrian/user2.shp b/bios/Other/opentyrian/user2.shp new file mode 100644 index 00000000..67b73967 Binary files /dev/null and b/bios/Other/opentyrian/user2.shp differ diff --git a/bios/Tandy/TRS-80/trs80.zip b/bios/Tandy/TRS-80/trs80.zip index 9e0ee8d7..0c7c5f91 100644 Binary files a/bios/Tandy/TRS-80/trs80.zip and b/bios/Tandy/TRS-80/trs80.zip differ diff --git a/bios/Tandy/TRS-80/trs80m3.zip b/bios/Tandy/TRS-80/trs80m3.zip index be6a3efb..632c0cab 100644 Binary files a/bios/Tandy/TRS-80/trs80m3.zip and b/bios/Tandy/TRS-80/trs80m3.zip differ diff --git a/emulators/fbneo.yml b/emulators/fbneo.yml index c5bee04a..d856a833 100644 --- a/emulators/fbneo.yml +++ b/emulators/fbneo.yml @@ -588,13 +588,13 @@ files: source_ref: "upstream src/burn/drv/pgm/d_pgm.cpp:887" - name: "svg_bios.u49" - archive: pgm.zip + archive: svgpcb.zip system: igs-pgm required: false size: 131072 crc32: "3346401f" - note: "68K BIOS V0001 custom (05/13/05) for SVG PCB" - source_ref: "upstream src/burn/drv/pgm/d_pgm.cpp:928" + note: "68K BIOS V0001 custom (05/13/05) for SVG PCB, in the svgpcb ROM list" + source_ref: "upstream src/burn/drv/pgm/d_pgm.cpp:928, 7035" # ------------------------------------------------------- # Capcom CPS-3 (per-game BIOS, no shared archive) diff --git a/scripts/dedup.py b/scripts/dedup.py index 81327d1a..b7dbdd62 100644 --- a/scripts/dedup.py +++ b/scripts/dedup.py @@ -70,6 +70,9 @@ NODEDUP_DIRS = { # MAME's support trees (hash, plugins) are read by path as a whole, and # two MAME versions share most of their software lists byte for byte. "mame", + # The Tyrian 2.1 distribution ships netset.pcx and tyrset.pcx with the + # same bytes, and EmuELEC places both names under ports/opentyrian/. + "opentyrian", } diff --git a/tests/test_archive_recipes.py b/tests/test_archive_recipes.py index 39d5cb7b..5b7a82cf 100644 --- a/tests/test_archive_recipes.py +++ b/tests/test_archive_recipes.py @@ -20,9 +20,12 @@ REPO_ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(REPO_ROOT / "scripts")) # Sets whose archive also carries the ROMs of devices the machine references -# (listxml device_ref): the NAOMI boards pull the JVS I/O board and the Maple -# interface, and MAME finds those ROMs in the machine's own archive too. +# (listxml device_ref). A device looks for its ROMs under its own name, then +# under the system's (device_t::searchpath, src/emu/device.cpp:140-152), so +# MAME finds them in the machine's own archive too. A device set is not a +# system: the devices it holds are never looked for in its archive. DEVICE_ROMS = { + # NAOMI boards: the JVS I/O board and the Maple interface "airlbios.zip": ("jvs13551.zip", "mie.zip"), "f355bios.zip": ("jvs13551.zip", "mie.zip"), "f355dlx.zip": ("jvs13551.zip", "mie.zip"), @@ -30,18 +33,41 @@ DEVICE_ROMS = { "naomi.zip": ("jvs13551.zip", "mie.zip"), "naomi2.zip": ("jvs13551.zip", "mie.zip"), "naomigd.zip": ("jvs13551.zip", "mie.zip"), + # Teletext character ROM: SAA5050 in bbcmet (acorn/bbcm.cpp:701), which + # bbcm builds on (line 764) + "bbcm.zip": ("saa5050.zip",), + # DragonDOS, the default cartridge (trs/dragon.cpp:544, 562) + "dragon32.zip": ("dragon_fdc.zip",), + "dragon64.zip": ("dragon_fdc.zip",), + # PC-80S31 disk unit (nec/pc6001.cpp:1644 through pc6601_fdc_config, + # nec/pc8001.cpp:1257) + "pc6001mk2sr.zip": ("pc80s31.zip",), + "pc8001mk2sr.zip": ("pc80s31.zip",), } # Archives that share a set name without being that set. NOT_ROMSETS = {"samples", "artwork"} -# The defect added whole slot-option trees, dozens of members at a time. -MIN_EXTRA = 3 +MIN_EXTRA = 1 # Kept as they are: rewriting them would drop bytes the collection holds -# nowhere else, and no recipe names the set those bytes belong to. +# nowhere else, or they are another emulator's archive under a MAME set name. KEPT = { - "bios/Acorn/BBC Micro/.variants/bbcb.zip": "zdfs-0.90.rom is held only here", + "bios/Acorn/BBC Micro/.variants/bbcb.zip": ( + "MAME 0.150's bbcb loads its DFS ROMs from the machine archive " + "(src/mess/drivers/bbc.c ROM_START(bbcb)), older than every imported " + "listxml; zdfs-0.90.rom is held only here" + ), + "bios/Arcade/Arcade/.variants/cvs.zip.3c69f366": ( + "the 2001 mame.dk distribution of cvs.zip; its cvs.txt is held only here" + ), + "bios/Mattel/Aquarius/.variants/aquarius_ar.zip.73026a45": ( + "a platform pack copy; its TMCTV.png is held only here" + ), + "bios/Sega/Dreamcast/dc.zip": ( + "RetroBat's dc/dc.zip holds dc_boot.bin and dc_flash.bin, the names the " + "Dreamcast BIOS goes by outside MAME, not MAME's dc set" + ), } diff --git a/tests/test_cache_independent_counts.py b/tests/test_cache_independent_counts.py new file mode 100644 index 00000000..be2e4f6e --- /dev/null +++ b/tests/test_cache_independent_counts.py @@ -0,0 +1,63 @@ +"""A platform's coverage does not depend on which data caches are on disk. + +EmuELEC declares 19 files of the Tyrian 2.1 distribution that bios/ did not +hold (setup.ini, netterm.int...). They resolved only through data/opentyrian, +the cache refresh_data_dirs.py fills from a release asset, so verify gave +544/572 in a checkout with that cache and 525/572 in a fresh worktree, for the +same commit. A file a platform declares is collected in bios/; a data +directory cache is not a collection. +""" + +from __future__ import annotations + +import os +import sys +import unittest +from pathlib import Path + +REPO_ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(REPO_ROOT / "scripts")) + + +class DeclaredFilesResolveWithoutDataCaches(unittest.TestCase): + def test_no_platform_entry_rests_on_a_data_directory_cache(self): + from common import ( # noqa: PLC0415 + build_zip_contents_index, + list_registered_platforms, + load_data_dir_registry, + load_database, + load_platform_config, + ) + from packresolve import resolve_declaration # noqa: PLC0415 + + platforms_dir = REPO_ROOT / "platforms" + registry = load_data_dir_registry(str(platforms_dir)) + caches = [ + entry["local_cache"] for entry in registry.values() + if (REPO_ROOT / entry.get("local_cache", "")).is_dir() + ] + if not caches or not (REPO_ROOT / "database.json").is_file(): + self.skipTest("no data directory cache on disk (refresh_data_dirs.py fills them)") + + cwd = os.getcwd() + os.chdir(REPO_ROOT) + try: + db = load_database("database.json") + zip_contents = build_zip_contents_index(db) + offenders = [] + for platform in list_registered_platforms(str(platforms_dir), include_archived=True): + config = load_platform_config(platform, str(platforms_dir)) + for sys_id, system in config.get("systems", {}).items(): + for entry in system.get("files", []) or []: + path, status = resolve_declaration( + entry, db, "bios", zip_contents, registry, None, offline=True, + ) + if status.startswith("data_dir"): + offenders.append(f"{platform} {sys_id} {entry.get('name')}: {path}") + finally: + os.chdir(cwd) + self.assertEqual(offenders, [], "\n".join(offenders)) + + +if __name__ == "__main__": + unittest.main() diff --git a/wiki/tools.md b/wiki/tools.md index bbe3917d..d85d1a1c 100644 --- a/wiki/tools.md +++ b/wiki/tools.md @@ -678,7 +678,7 @@ python scripts/refresh_stale.py --only platforms,targets --jobs 6 | Script | Purpose | |--------|---------| | `common.py` | Shared library: hash computation, file resolution, platform config loading, emulator profiles, target filtering | -| `dedup.py` | Deduplicate `bios/` (`--dry-run`, `--bios-dir`): byte-identical copies are deleted and one kept. Identical MAME sets under other names stay one file, named in `_mame_clones.json`. Trees addressed by path are left alone (`NODEDUP_DIRS`): BBK, Bungie, C-Dogs SDL, Ikemen GO, PinMAME, RPG Maker, ScummVM, Softdisk, TheXTech, splitwolf, Theme Hospital, c64-emu, tzdata | +| `dedup.py` | Deduplicate `bios/` (`--dry-run`, `--bios-dir`): byte-identical copies are deleted and one kept. Identical MAME sets under other names stay one file, named in `_mame_clones.json`. Trees addressed by path are left alone (`NODEDUP_DIRS`): BBK, Bungie, C-Dogs SDL, Ikemen GO, PinMAME, RPG Maker, ScummVM, Softdisk, TheXTech, splitwolf, Theme Hospital, c64-emu, opentyrian, tzdata | | `identity.py` | One content filed under two identities: groups `bios/` by content and reports a group that crosses manufacturers outside `KNOWN_SHARED` (`--strict` exits 1, pipeline step 3a) | | `slots.py` | Destinations the platform and a core both claim, and how the pack settles each (`--platform`, `--include-archived`, `--target`, `--json`, `--strict`, and pipeline step 3b passes the run's own `--include-archived` and `--target`) | | `region_audit.py` | Confront every profile `region:` with the regions No-Intro names for the same dump (`--json`, `--db`, `--emulators-dir`). An opinion, never an authority: the code decides, and a disagreement is a line to read in the emulator's source |