chore: merge redump, mame and fbneo data fixes

This commit is contained in:
Abdessamad Derraz committed 2026-11-03 15:35:29 +01:00
commit c90c43fd46
28 files changed
+2971 -369

No files matched your search

+2 -2
View File
@@ -84,14 +84,14 @@ Each file is checked the way your platform checks it. Most compare a checksum, t
- **1,086 files** the platforms' emulators load are still to be found, and 138 more cannot be sourced at all (per-user keys, user-filled slots, dumps nobody has made). Both are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/)
- **18 platforms** supported with platform-specific verification
- **623 emulators** profiled from source (RetroArch cores + standalone)
- **541 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
- **533 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
- **19,916 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,713 system files, 2,975 arcade ROM sets, 11,228 game and engine data files. That is every platform and emulator together, so no pack holds them all: each carries what its own emulators load, counted in the download table
- **565 of 5,713 system files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC). Arcade sets and engine data fall outside what those catalogs index
- **15.7 GB** for the whole collection
## Supported systems
NES, SNES, Nintendo 64, GameCube, Wii, Game Boy, Game Boy Advance, Nintendo DS, Nintendo 3DS, Switch, PlayStation, PlayStation 2, PlayStation 3, PSP, PS Vita, Mega Drive, Saturn, Dreamcast, Game Gear, Master System, Neo Geo, Atari 2600, Atari 7800, Atari Lynx, Atari ST, MSX, PC Engine, TurboGrafx-16, ColecoVision, Intellivision, Commodore 64, Amiga, ZX Spectrum, Arcade (MAME), and 507+ more.
NES, SNES, Nintendo 64, GameCube, Wii, Game Boy, Game Boy Advance, Nintendo DS, Nintendo 3DS, Switch, PlayStation, PlayStation 2, PlayStation 3, PSP, PS Vita, Mega Drive, Saturn, Dreamcast, Game Gear, Master System, Neo Geo, Atari 2600, Atari 7800, Atari Lynx, Atari ST, MSX, PC Engine, TurboGrafx-16, ColecoVision, Intellivision, Commodore 64, Amiga, ZX Spectrum, Arcade (MAME), and 499+ more.
Full list with per-file details: **[https://abdess.github.io/retrobios/](https://abdess.github.io/retrobios/)**
+11 -6
View File
@@ -1,6 +1,6 @@
{
"schema_version": 1,
"generated_at": "2026-10-28T08:22:38Z",
"generated_at": "2026-11-03T13:36:34Z",
"total_files": 19916,
"total_size": 16892318346,
"bios_dir": "bios",
@@ -199455,7 +199455,7 @@
"redump": {
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-dvd-212g.bin",
"description": "SCPH-30006R (Version 2.12G)"
"description": "SCPH-30006R/SCPH-30007R (Version 2.12G)"
},
"tosec": {
"dat": "Sony PlayStation 2 - Firmware",
@@ -199584,6 +199584,11 @@
"crc32": "1374e4f0",
"adler32": "810c4e17",
"provenance": {
"redump": {
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-dvd-302c.bin",
"description": "SCPH-50009 (Version 3.02C)"
},
"tosec": {
"dat": "Sony PlayStation 2 - Firmware",
"name": "Sony PlayStation 2 DVD Player ROM v3.02C (2003-06-23)(Sony).bin",
@@ -200102,7 +200107,7 @@
"redump": {
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-0101xd-20000224-172900.bin",
"description": "DTL-H10000 (Version 5.0 02/24/00 T)"
"description": "DTL-H10000S (Version 5.0 02/24/00 T)"
},
"tosec": {
"dat": "Sony PlayStation 2 - Firmware",
@@ -200835,7 +200840,7 @@
"redump": {
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-0180cd-20030224-185856.bin",
"description": "DTL-H50009 (Version 5.0 02/24/03 J)"
"description": "DTL-H50009J (Version 5.0 02/24/03 J)"
},
"tosec": {
"dat": "Sony PlayStation 2 - Firmware",
@@ -200962,7 +200967,7 @@
"redump": {
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-0190cd-20030623-142420.bin",
"description": "SCPH-50009 (Version 5.0 06/23/03 J)"
"description": "SCPH-50009 (Review) (Version 5.0 06/23/03 J)"
}
}
},
@@ -201416,7 +201421,7 @@
"redump": {
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-0220h-20050620-175641.bin",
"description": "SCPH-75006 (Version 5.0 06/20/05 J)"
"description": "SCPH-75006/SCPH-75007 (Version 5.0 06/20/05 J)"
},
"tosec": {
"dat": "Sony PlayStation 2 - Firmware",
+3 -3
View File
@@ -14,7 +14,7 @@ version_basis:
pattern: 'static const string Version\s*=\s*"([^"]+)"'
display_name: "Nintendo - SNES / SFC (bsnes)"
cores: [bsnes]
systems: [nintendo-snes, nintendo-super-game-boy, nintendo-satellaview]
systems: [nintendo-snes, nintendo-sgb, nintendo-satellaview]
# bsnes supports HLE for DSP1/DSP1B/DSP2/DSP4, ST010, and Cx4.
# When HLE is enabled (core option bsnes_coprocessor_prefer_hle) or
@@ -203,13 +203,13 @@ files:
# Core option bsnes_sgb_bios selects between SGB1.sfc and SGB2.sfc.
- name: "SGB1.sfc"
system: nintendo-super-game-boy
system: nintendo-sgb
required: false
note: "Super Game Boy 1 cartridge ROM, loaded when playing .gb/.gbc via SGB mode"
source_ref: "source bsnes/target-libretro/libretro.cpp:937-946 (system_dir + sgb_bios), source bsnes/target-libretro/libretro.cpp:393 (core option bsnes_sgb_bios)"
- name: "SGB2.sfc"
system: nintendo-super-game-boy
system: nintendo-sgb
required: false
note: "Super Game Boy 2 cartridge ROM, uses dedicated oscillator for accurate GB speed"
source_ref: "source bsnes/target-libretro/libretro.cpp:937-946 (system_dir + sgb_bios), source bsnes/target-libretro/libretro.cpp:393 (core option bsnes_sgb_bios)"
+4 -4
View File
@@ -19,10 +19,10 @@ cores:
systems:
- arcade
- neogeo
- cps1
- cps2
- cps3
- pgm
- capcom-cps1
- capcom-cps2
- capcom-cps3
- igs-pgm
notes: |
Frozen snapshot of Final Burn Alpha v0.2.97.29 (circa 2012), full version.
+1 -1
View File
@@ -14,7 +14,7 @@ display_name: "Arcade (FB Alpha 2012 CPS-1)"
cores:
- fbalpha2012_cps1
systems:
- cps1
- capcom-cps1
notes: |
Frozen snapshot of Final Burn Alpha v0.2.97.28 (circa 2012), CPS-1 only.
+1 -1
View File
@@ -14,7 +14,7 @@ display_name: "Arcade (FB Alpha 2012 CPS-2)"
cores:
- fbalpha2012_cps2
systems:
- cps2
- capcom-cps2
notes: |
Frozen snapshot of Final Burn Alpha v0.2.97.28 (circa 2012), CPS-2 only.
+1 -1
View File
@@ -16,7 +16,7 @@ library_name: "FB Alpha 2012 CPS-3"
cores:
- fbalpha2012_cps3
systems:
- cps3
- capcom-cps3
notes: |
Frozen snapshot of Final Burn Alpha v0.2.97.29 (circa 2012), CPS-3 only.
+38 -28
View File
@@ -5,8 +5,8 @@ source: "https://github.com/libretro/FBNeo"
upstream: "https://github.com/finalburnneo/FBNeo"
logo: "https://raw.githubusercontent.com/finalburnneo/FBNeo/master/projectfiles/xcode/Emulator/Assets.xcassets/AppIcon.appiconset/icon_512.png"
profiled_date: "2026-10-23"
source_commit: "32958a89abd645ed20387c8d31d21ede3bc48161"
upstream_commit: "697e385c8285bfc528343b96d948ee3a4f9e24c5"
source_commit: "da14132bab6683980b1ad7e4d0d6fd47bf06dce7"
upstream_commit: "c110542721d8674b6ff48e691ac032c040fecbba"
core_version: "v1.0.0.03"
version_basis:
kind: file
@@ -59,16 +59,17 @@ notes: |
FinalBurn Neo is a multi-system arcade and console emulator. BIOS files are
expected as MAME-format ZIP archives containing individual ROM chips. The
libretro core searches for BIOS ZIPs in this order
(src/burner/libretro/libretro.cpp:882-950):
1. {system_dir}/fbneo/patched/{romName}
2. {rom_dir}/{romName}
3. {system_dir}/fbneo/{romName}
4. {system_dir}/{romName}
5. directories listed in rom_path.opt
(src/burner/libretro/libretro.cpp:883-968, 1963):
1. {system_dir}/fbneo/romdata/{romName}, only while a RomData file is
being started with patched romsets enabled
2. {system_dir}/fbneo/patched/{romName}, with patched romsets enabled
3. {rom_dir}/{romName}
4. {system_dir}/fbneo/{romName}
5. {system_dir}/{romName}
The per-type subdirectories the core used to try under {rom_dir} and
{system_dir}/fbneo, arcade and consoles, are gone: a BIOS ZIP has to sit
directly in one of the four directories above.
directly in one of directories 3 to 5 above.
Each game driver specifies a parent BIOS set via BurnDriver. The BIOS ZIP
must contain the individual ROM chip files listed below. CRC32 values from
@@ -688,6 +689,15 @@ files:
note: "SH-2 BIOS, SF3 2nd Impact Hispanic"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:505"
- name: "sfiii2_asia.29f400.u2"
archive: sfiii2a.zip
system: capcom-cps3
required: true
size: 524288
crc32: "4518d589"
note: "SH-2 BIOS, SF3 2nd Impact Asia"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:520"
- name: "sfiii2_asia_nocd.29f400.u2"
archive: sfiii2n.zip
system: capcom-cps3
@@ -695,7 +705,7 @@ files:
size: 524288
crc32: "fd297c0d"
note: "SH-2 BIOS, SF3 2nd Impact Asia (No CD)"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:520"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:535"
# Street Fighter III 3rd Strike
- name: "sfiii3_euro.29f400.u2"
@@ -705,7 +715,7 @@ files:
size: 524288
crc32: "30bbf293"
note: "SH-2 BIOS, SF3 3rd Strike Europe"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:579"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:594"
- name: "sfiii3_usa.29f400.u2"
archive: sfiii3u.zip
@@ -714,7 +724,7 @@ files:
size: 524288
crc32: "ecc545c1"
note: "SH-2 BIOS, SF3 3rd Strike USA"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:594"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:609"
- name: "sfiii3_japan.29f400.u2"
archive: sfiii3j.zip
@@ -723,7 +733,7 @@ files:
size: 524288
crc32: "63f23d1f"
note: "SH-2 BIOS, SF3 3rd Strike Japan"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:609"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:624"
- name: "sfiii3_japan_nocd.29f400.u2"
archive: sfiii3n.zip
@@ -732,7 +742,7 @@ files:
size: 524288
crc32: "1edc6366"
note: "SH-2 BIOS, SF3 3rd Strike Japan (No CD)"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:624"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:639"
- name: "sfiii3_asia_nocd.29f400.u2"
archive: sfiii3na.zip
@@ -741,7 +751,7 @@ files:
size: 524288
crc32: "a12ebcd1"
note: "SH-2 BIOS, SF3 3rd Strike Asia (No CD)"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:637"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:652"
# JoJo's Bizarre Adventure
- name: "jojo_euro.29f400.u2"
@@ -751,7 +761,7 @@ files:
size: 524288
crc32: "513e40ec"
note: "SH-2 BIOS, JoJo's Venture Europe"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:799"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:814"
- name: "jojo_usa.29f400.u2"
archive: jojou.zip
@@ -760,7 +770,7 @@ files:
size: 524288
crc32: "8d40f7be"
note: "SH-2 BIOS, JoJo's Venture USA"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:814"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:829"
- name: "jojo_asia.29f400.u2"
archive: jojoa.zip
@@ -769,7 +779,7 @@ files:
size: 524288
crc32: "789aa72a"
note: "SH-2 BIOS, JoJo's Venture Asia"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:829"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:844"
- name: "jojo_japan.29f400.u2"
archive: jojoj.zip
@@ -778,7 +788,7 @@ files:
size: 524288
crc32: "02778f60"
note: "SH-2 BIOS, JoJo's Venture Japan"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:844"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:859"
- name: "jojo_asia_nocd.29f400.u2"
archive: jojon.zip
@@ -787,7 +797,7 @@ files:
size: 524288
crc32: "05b4f953"
note: "SH-2 BIOS, JoJo's Venture Asia (No CD)"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:859"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:874"
# JoJo's Bizarre Adventure: Heritage for the Future
- name: "jojoba_euro.29f400.u2"
@@ -797,7 +807,7 @@ files:
size: 524288
crc32: "63cc8800"
note: "SH-2 BIOS, JoJo's BA: Heritage Europe"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1184"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1199"
- name: "jojoba_japan.29f400.u2"
archive: jojobajr1.zip
@@ -806,7 +816,7 @@ files:
size: 524288
crc32: "3085478c"
note: "SH-2 BIOS, JoJo's BA: Heritage Japan"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1199"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1214"
- name: "jojoba_euro_nocd.29f400.u2"
archive: jojoba.zip
@@ -815,7 +825,7 @@ files:
size: 524288
crc32: "1ee2d679"
note: "SH-2 BIOS, JoJo's BA: Heritage Europe (No CD)"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1120"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1135"
- name: "jojoba_japan_nocd.29f400.u2"
archive: jojoban.zip
@@ -824,7 +834,7 @@ files:
size: 524288
crc32: "4dab19f5"
note: "SH-2 BIOS, JoJo's BA: Heritage Japan (No CD)"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1133"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1148"
# Red Earth / Warzard
- name: "redearth_euro.29f400.u2"
@@ -834,7 +844,7 @@ files:
size: 524288
crc32: "02e0f336"
note: "SH-2 BIOS, Red Earth Europe"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1362"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1377"
- name: "warzard_japan.29f400.u2"
archive: warzard.zip
@@ -843,7 +853,7 @@ files:
size: 524288
crc32: "f8e2f0c6"
note: "SH-2 BIOS, Warzard Japan"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1377"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1392"
- name: "redearth_asia_nocd.29f400.u2"
archive: redearthn.zip
@@ -852,7 +862,7 @@ files:
size: 524288
crc32: "7a4f0851"
note: "SH-2 BIOS, Red Earth Asia (No CD)"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1392"
source_ref: "upstream src/burn/drv/cps3/d_cps3.cpp:1407"
# -------------------------------------------------------
# Super Kaneko Nova System (skns.zip)
@@ -1478,7 +1488,7 @@ files:
sha1: "30c6ad697439de7c2158192ecdb48f5edd37478e"
md5: "f5cdce5b3749d673ad8f073ccc7371e4"
note: "High score database, enables persistent high scores across all arcade games. The hash is that of metadata/hiscore.dat at source_commit."
source_ref: "source src/burn/hiscore.cpp:154-161, 407, source src/burn/burn.cpp:876"
source_ref: "source src/burn/hiscore.cpp:154-161, 407, source src/burn/burn.cpp:893"
# Large audio samples (>50MB, stored as release assets)
- name: "donpachi.zip"
+2 -2
View File
@@ -16,8 +16,8 @@ display_name: "Arcade (FinalBurn Neo) (CPS-1 / CPS-2)"
cores:
- fbneo_cps12
systems:
- cps1
- cps2
- capcom-cps1
- capcom-cps2
- arcade
notes: |
+2 -2
View File
@@ -50,7 +50,7 @@ systems:
- konami-twinkle
- panasonic-3do
- hyper-neogeo64
- apple2gs
- apple-iigs
- apf-m1000
- bally-astrocade
- coleco-adam
@@ -3328,7 +3328,7 @@ files:
- name: apple2gs.zip
required: true
category: bios_zip
system: apple2gs
system: apple-iigs
source_ref: "source src/mame/apple/apple2gs.cpp:4012"
contents:
- name: 341s0632-2.bin
+2 -2
View File
@@ -16,7 +16,7 @@ cores:
- jollycv
systems:
- colecovision
- creativision
- crvision
- myvision
notes: |
@@ -67,7 +67,7 @@ files:
note: "Mapped at 0x0000-0x1FFF, replaced by the lower 8K of SGM RAM when the Super Game Module enables it. The MD5 is the value the JG bioslist declares, and the core compares the size only."
- name: "bioscv.rom"
system: creativision
system: crvision
description: "VTech CreatiVision BIOS ROM"
required: true
size: 2048
+2393 -269
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -49,7 +49,7 @@ systems:
- konami-twinkle
- panasonic-3do
- hyper-neogeo64
- apple2gs
- apple-iigs
- apf-m1000
- bally-astrocade
- coleco-adam
+1 -1
View File
@@ -49,7 +49,7 @@ systems:
- konami-twinkle
- panasonic-3do
- hyper-neogeo64
- apple2gs
- apple-iigs
- apf-m1000
- bally-astrocade
- coleco-adam
+6 -7
View File
@@ -17,9 +17,8 @@ cores:
- mamemess
systems:
- apple2
- apple2gs
- astrocde
- astrocade
- apple-iigs
- bally-astrocade
- coleco-adam
- crvision
- entex-advision
@@ -667,7 +666,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
@@ -678,7 +677,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
@@ -689,7 +688,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
@@ -875,7 +874,7 @@ files:
- name: apple2gs.zip
required: true
category: bios_zip
system: apple2gs
system: apple-iigs
source_ref: "source src/mame/apple/apple2gs.cpp:3893-3907"
contents:
- name: 341s0632-2.bin
+1 -1
View File
@@ -17,7 +17,7 @@ version_basis:
pattern: 'uint16_t major = (\d+);\s*\n\s*uint8_t minor = (\d+);\s*\n\s*uint8_t revision = (\d+);'
format: "{1}.{2}.{3}"
cores: [mesen-s, mesen_s]
systems: [nintendo-snes, nintendo-gb, nintendo-gbc, nintendo-super-game-boy, nintendo-satellaview]
systems: [nintendo-snes, nintendo-gb, nintendo-gbc, nintendo-sgb, nintendo-satellaview]
notes: >
High-accuracy SNES/SFC emulator with Game Boy/Color and Super Game Boy
+5 -5
View File
@@ -32,7 +32,7 @@ systems:
- nintendo-snes
- nintendo-satellaview
- nintendo-sufami-turbo
- nintendo-super-game-boy
- nintendo-sgb
- nintendo-gb
- nintendo-gbc
- nintendo-gba
@@ -411,7 +411,7 @@ files:
- name: "SGB1.sfc"
standalone_path: "Firmware/SGB1.sfc"
mode: standalone
system: nintendo-super-game-boy
system: nintendo-sgb
required: false
size: 262144
validation: [size]
@@ -422,7 +422,7 @@ files:
- name: "SGB2.sfc"
path: "SGB2.sfc"
standalone_path: "Firmware/SGB2.sfc"
system: nintendo-super-game-boy
system: nintendo-sgb
required: false
size: 524288
validation: [size]
@@ -461,7 +461,7 @@ files:
standalone_path: "Firmware/sgb_boot.bin"
mode: standalone
aliases: ["sgb_bios.bin"]
system: nintendo-super-game-boy
system: nintendo-sgb
required: false
size: 256
validation: [size]
@@ -473,7 +473,7 @@ files:
path: "sgb2_boot.bin"
standalone_path: "Firmware/sgb2_boot.bin"
aliases: ["sgb_bios.bin"]
system: nintendo-super-game-boy
system: nintendo-sgb
required: false
size: 256
validation: [size]
+319 -13
View File
@@ -1,11 +1,11 @@
{
"source": "redump",
"imported_at": "2026-08-07",
"imported_at": "2026-11-03",
"dats": {
"Microsoft - Xbox - BIOS Images": "2026-06-16",
"Nintendo - GameCube - BIOS Images": "2026-06-16",
"Sony - PlayStation - BIOS Images": "2026-06-16",
"Sony - PlayStation 2 - BIOS Images": "2026-06-16"
"Sony - PlayStation 2 - BIOS Images": "2026-10-10"
},
"entries": [
{
@@ -500,13 +500,13 @@
"description": "DTL-H10100 (Version 5.0 02/17/00 T)",
"size": 4194304,
"crc32": "e9836a0c",
"md5": "",
"sha1": ""
"md5": "5d77cf6d5e5c221a03e754a6612a0f03",
"sha1": "e09c2f773843ec0029463c386108b67fd900c726"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-0101xd-20000224-172900.bin",
"description": "DTL-H10000 (Version 5.0 02/24/00 T)",
"description": "DTL-H10000S (Version 5.0 02/24/00 T)",
"size": 4194304,
"crc32": "2fef9faf",
"md5": "d3f1853a16c2ec18f3cd1ae655213308",
@@ -821,7 +821,7 @@
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-0180cd-20030224-185856.bin",
"description": "DTL-H50009 (Version 5.0 02/24/03 J)",
"description": "DTL-H50009J (Version 5.0 02/24/03 J)",
"size": 4194304,
"crc32": "8c1a04cf",
"md5": "240d4c5ddd4b54069bdc4a3cd2faf99d",
@@ -875,7 +875,7 @@
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-0190cd-20030623-142420.bin",
"description": "SCPH-50009 (Version 5.0 06/23/03 J)",
"description": "SCPH-50009 (Review) (Version 5.0 06/23/03 J)",
"size": 4194304,
"crc32": "33e31008",
"md5": "122bbf34cbae1f4fdc6b2f6fae473094",
@@ -1091,7 +1091,7 @@
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-0220h-20050620-175641.bin",
"description": "SCPH-75006 (Version 5.0 06/20/05 J)",
"description": "SCPH-75006/SCPH-75007 (Version 5.0 06/20/05 J)",
"size": 4194304,
"crc32": "e27c4a6c",
"md5": "df63a604e8bff5b0599bd1a6c2721bd0",
@@ -1370,7 +1370,7 @@
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-dvd-212g.bin",
"description": "SCPH-30006R (Version 2.12G)",
"description": "SCPH-30006R/SCPH-30007R (Version 2.12G)",
"size": 2097152,
"crc32": "1428b7a1",
"md5": "32abbe7ab7c1b72d5ffc24d4963bd6c6",
@@ -1493,14 +1493,23 @@
"md5": "e414c981647883e33f17642da827a739",
"sha1": "6219ad4ead2ece9c4d32df5b040c4c391b763e5a"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-dvd-302a.bin",
"description": "SCPH-50002 (Version 3.02A)",
"size": 4194304,
"crc32": "30698201",
"md5": "606e0ef522c0453b93e42ffc029f4dd4",
"sha1": "f037ba1d34f6b07e56f977604f9a7efa11f930b8"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-dvd-302c.bin",
"description": "SCPH-50009 (Version 3.02C)",
"size": 8388608,
"crc32": "e2332146",
"md5": "188a9fb0bee57d25480d9d5de71d145b",
"sha1": "6a08cc5139ed435b2cfe40820921924d9b162e68"
"size": 4194304,
"crc32": "1374e4f0",
"md5": "6bbd2f348c585fdd645900f6ec75f2c7",
"sha1": "aa21592362b5797109ea38ec2df31e949ad3effd"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
@@ -1601,6 +1610,294 @@
"md5": "79b4880006769a1af9b0a6c7302cc18d",
"sha1": "747e36b086aceceb300c72c0d1bbab38e2920e63"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-102j.bin",
"description": "SCPH-10000 (Version 1.02)",
"size": 262144,
"crc32": "d8f2e109",
"md5": "de2460c124508e4bf3c88d4f0ec5227c",
"sha1": "6cccd981a35d30b2a749eda3c35a85f5e307deb6"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-103jd.bin",
"description": "DTL-T10000/DTL-H10000 (Version 1.03)",
"size": 262144,
"crc32": "d2409e35",
"md5": "484bfc310a583db74ee91d0437175dee",
"sha1": "4a4db8dd25c63e14e07583011d2c53ae67441fe3"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-108j.bin",
"description": "SCPH-10000/SCPH-15000 (Version 1.08)",
"size": 262144,
"crc32": "afcf52d5",
"md5": "5b1770360139c2607137701408a745fe",
"sha1": "0702050cb545b302e11c73bfa02c3467a5382d55"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-109jd.bin",
"description": "DTL-T10000H/DTL-T15000 (Version 1.09)",
"size": 262144,
"crc32": "5ec122ea",
"md5": "9f32a7e7eb57bbbe594e8e951666cbaf",
"sha1": "455450c54df94dd95d44d34e6c4720a6206649dd"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-200j.bin",
"description": "SCPH-15000/18000 (Version 2.00)",
"size": 262144,
"crc32": "47d9ec76",
"md5": "b81c1ec87f2f9841c0c13bb45a818471",
"sha1": "4befade39ac04fd9a91974a811a991bfde1034de"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-202j.bin",
"description": "SCPH-15000/18000 (Version 2.02)",
"size": 262144,
"crc32": "03bba932",
"md5": "68d725ba0988abf804d8ff5589b3d30c",
"sha1": "33cebc96e05a4e86ce9da8a4bbc3e34ebc728d47"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-204a.bin",
"description": "SCPH-30002 (Version 2.04)",
"size": 262144,
"crc32": "71b11545",
"md5": "dc6afc62cf67831097b9ff9a401af724",
"sha1": "e162cb6f8a67b2799d2ae89a3e66b7f45d3bd83c"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-204e.bin",
"description": "SCPH-30004 (Version 2.04)",
"size": 262144,
"crc32": "17f78c61",
"md5": "95b9d305de825681404e413855ac13a3",
"sha1": "5a67bc9b53e5e00b428ab6654bc83be64bd64b56"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-204tz.bin",
"description": "COH-H30000/COH-H31000/COH-H31100/Namco System 246/Namco System 256/Konami Python (Version 2.04)",
"size": 262144,
"crc32": "671fc46a",
"md5": "1a2297cfb50742aabc10ac4c97de1a6c",
"sha1": "45226968b29b63331a4be8cc526923aea9a150b2"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-204u.bin",
"description": "SCPH-30001 (Version 2.04)",
"size": 262144,
"crc32": "f67f305c",
"md5": "8cb8d51fbd7219614213ff03edf90dcf",
"sha1": "33adfa7adef592625581bf22a78f53d637c211a5"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-206e.bin",
"description": "SCPH-30004 (Version 2.06)",
"size": 262144,
"crc32": "45ae6140",
"md5": "a2f28f84cce2567fe1fea3ae88c7a616",
"sha1": "51d71d26ffb71d03e8010515513cb5b68707c3df"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-206u.bin",
"description": "SCPH-30001 (Version 2.06)",
"size": 262144,
"crc32": "3783f473",
"md5": "c6b665d76878ee81a0754eba2c176ff9",
"sha1": "5b1d0249bd3812100061443880a15730111c8b95"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-212e.bin",
"description": "SCPH-30004 (Version 2.12)",
"size": 262144,
"crc32": "fa17c652",
"md5": "7d493a81109b5b60710c28bf5191e98a",
"sha1": "984de16c377c7a91994c76f3dfa677b40c01168b"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-212j.bin",
"description": "SCPH-30000 (Version 2.12)",
"size": 262144,
"crc32": "c88a01c3",
"md5": "7705dffadc905f4104d1f1a1490275b1",
"sha1": "039986b6347b678e4ab15b76b3f69baf0cc040ab"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-212u.bin",
"description": "SCPH-30001 (Version 2.12)",
"size": 262144,
"crc32": "86149b00",
"md5": "d33c36a66d46842844f5bbfa428c9b28",
"sha1": "10d306463553ce2784ba49e8ade428b53eea433d"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-213.bin",
"description": "DTL-H30100/DTL-H30101/DTL-H30102 (Version 2.13)",
"size": 262144,
"crc32": "12dce159",
"md5": "2358bccb68c31a6ae5f87e80747f11c0",
"sha1": "4664a3b51ff05dab2b3849cd674a791486daf942"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-214j.bin",
"description": "SCPH-30000 (Version 2.14)",
"size": 262144,
"crc32": "d5c091d4",
"md5": "052de655fe1dfec935ecbdfe00fdeaa1",
"sha1": "3788a2b5555621ccd6e19708867868c876d5c5f2"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-214u.bin",
"description": "SCPH-30001 (Version 2.14)",
"size": 262144,
"crc32": "305c7aeb",
"md5": "5cbe03515bddef594cea69339842c645",
"sha1": "d93a7421635820deda09f75ecdc204abcf03ec8f"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-300a.bin",
"description": "SCPH-30002R (Version 3.00)",
"size": 196608,
"crc32": "cf817959",
"md5": "1d00ce7a7cb33bca3a2328a9926bdb14",
"sha1": "2950a99544428e76d6de7cfb2104ac8969ef2be7"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-300e.bin",
"description": "SCPH-30002R (Version 3.00)",
"size": 196608,
"crc32": "1db6824f",
"md5": "241288cbcfc98ae2535d163cefcc973f",
"sha1": "b179711c4a3a78f88d1f7ea2e244183515638cd3"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-300u.bin",
"description": "SCPH-30001R (Version 3.00)",
"size": 196608,
"crc32": "8f50598e",
"md5": "72166da44d3d46d725c2733a43847eb7",
"sha1": "521bf6fca7033fdd5bff085ca2eadeb48276e390"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-302e.bin",
"description": "SCPH-30002R (Version 3.02)",
"size": 196608,
"crc32": "47640752",
"md5": "90027eb550609cbae43b68b2db0e7657",
"sha1": "9b919e5f184ee32f9391370870b172009d8791f8"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-302j.bin",
"description": "SCPH-30000 (Version 3.02)",
"size": 196608,
"crc32": "a188df40",
"md5": "fc8f3ac91689a5265a839c8a513ac4d4",
"sha1": "795a871b18d4cdffb0530fd2edd480d68ad64694"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-302u.bin",
"description": "SCPH-30001R (Version 3.02)",
"size": 196608,
"crc32": "22baaf07",
"md5": "440dd9e6cc179ccc5fdae31b8df79541",
"sha1": "6060d4108078499e6229ef4764d96dc0546e7bbc"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-304h.bin",
"description": "SCPH-30005R/SCPH-30006R/SCPH-30007R (Version 3.04)",
"size": 196608,
"crc32": "005b64e8",
"md5": "b007212aaf85cd14c6a2bb50bfacf1f5",
"sha1": "6872317862fcc2dc324bb729546d384528fbeb85"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-306a.bin",
"description": "SCPH-39002 (Version 3.06)",
"size": 196608,
"crc32": "b3431eb3",
"md5": "f6f733aa90718ad419f7988c96054044",
"sha1": "cbf03c477063dcd4251c9b4aa5e0f9ffbf91c288"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-306e.bin",
"description": "SCPH-39004 (Version 3.06)",
"size": 196608,
"crc32": "33570b91",
"md5": "07bc44c5af2bd4ce84ddc21493da6bfe",
"sha1": "05e2661404a59eec3698b529aa418f4a4588c164"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-306j.bin",
"description": "SCPH-37000/SCPH-39000 (Version 3.06)",
"size": 196608,
"crc32": "101b858a",
"md5": "40f6ff03a905f73152d83793b941fc60",
"sha1": "4259d472c0d14fb6c12e7f2eb70449dc47b5c0df"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-306r.bin",
"description": "SCPH-39008 (Version 3.06)",
"size": 196608,
"crc32": "b47b0ff1",
"md5": "34ab767ae8e9cfc4c88113f61bf66c69",
"sha1": "9ec354ecff5a94953634ab941e164e6557c1b692"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-306u.bin",
"description": "SCPH-39001 (Version 3.06)",
"size": 196608,
"crc32": "bf69bd93",
"md5": "b19cac445fe789f3aeb2035259fe7ecb",
"sha1": "430f3303981f77dd40f4e72d1e307daa22b1ca0d"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-308h.bin",
"description": "SCPH-39005/SCPH-39006/SCPH-39007 (Version 3.08)",
"size": 196608,
"crc32": "60e3a237",
"md5": "afefff3630595e9e02f005edb5edce17",
"sha1": "748c66b4915e5dff2a60cd4011d26077eb41c843"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-308j.bin",
"description": "SCPH-39000 (Version 3.08)",
"size": 196608,
"crc32": "256d7c20",
"md5": "88d166499b275e6ff301244043a6c835",
"sha1": "d892a0770dfef5980d9138c8b054035558da6cf8"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-mechacon-500.bin",
@@ -1726,6 +2023,15 @@
"crc32": "d0711ead",
"md5": "52f6b4848d1afabed8f9fab427127944",
"sha1": "675e76b1b30b574081b55f2c6a30db5cfcb0fc3a"
},
{
"dat": "Sony - PlayStation 2 - BIOS Images",
"name": "ps2-rom2.bin",
"description": "SCPH-50009 (Simplified Chinese Fonts)",
"size": 4194304,
"crc32": "b1bc06fd",
"md5": "8a6f7d946bef39d5b69e6688ceb1f3e9",
"sha1": "ad8cb9c72ebd397b57b5b1df6fb4ca753dac2c14"
}
]
}
+14
View File
@@ -2663,6 +2663,20 @@ SYSTEM_ALIASES: dict[str, str] = {
# profiles use only through these.
"sega-segacd": "sega-megacd",
"nes-fds": "nintendo-fds",
# One machine, two spellings across platform folders and profiles:
# Recalbox's apple2gs, Batocera's astrocade, KNULLI and RetroBat's
# astrocde, MiSTer's creativision, Batocera's gamepocketcomputer
# folder, BizHawk's Super Game Boy, the FBA 2012 board names.
"apple2gs": "apple-iigs",
"astrocade": "bally-astrocade",
"astrocde": "bally-astrocade",
"creativision": "crvision",
"gamepocketcomputer": "gamepock",
"nintendo-super-game-boy": "nintendo-sgb",
"cps1": "capcom-cps1",
"cps2": "capcom-cps2",
"cps3": "capcom-cps3",
"pgm": "igs-pgm",
}
+11 -2
View File
@@ -1377,8 +1377,17 @@ class _ClaimRanks:
def _names_content(entry: dict) -> bool:
"""Whether a report entry declares the bytes it wants, not only a name."""
return any(entry.get(field) for field in ("sha1", "md5", "sha256", "crc32"))
"""Whether a report entry declares the bytes it wants, not only a name.
The claims folded onto the entry count: bsnes asks for SGB1.sfc by name
and bsnes-hd pins its md5 under the same system, and the entry carrying
both went after nSide's SGB1.sfc/ tree, which took the path from the file.
"""
return any(
claim.get(field)
for claim in (entry, *entry.get("other_claims", []))
for field in ("sha1", "md5", "sha256", "crc32")
)
def _save_fields(extra: dict, pack_path: str, placement: ExtraPlacement) -> None:
+27
View File
@@ -272,6 +272,33 @@ def attribute_systems(
return {name: sorted(found) for name, found in systems.items()}
def device_systems(
machines: dict[str, MachineLinks],
seeds: dict[str, str],
fallback: str,
) -> dict[str, list[str]]:
"""Systems whose machines can load each set, unplaced machines under *fallback*.
attribute_systems files a set under the systems of the machines a seed
places. A machine no seed places (a computer no platform runs through
this profile, a game outside every BIOS family) still loads its devices,
and MAME starts it from its set name, the way an arcade folder passes a
game: it counts as a machine of *fallback*. A set only such machines
load (an Amiga keyboard, an ISA card) then goes under *fallback* alone,
and a set both kinds load (ym2413, for the CoCo and for arcade games)
under both. A set no runnable machine of the release instantiates keeps
no system: the document never names its machine.
"""
if not fallback:
return attribute_systems(machines, seeds)
unplaced = {
name: fallback
for name, links in machines.items()
if not links.isdevice and not _seed_system(name, machines, seeds)
}
return attribute_systems(machines, {**seeds, **unplaced})
def platform_seeds(
stated: Iterable[tuple[str, str]],
machines: dict[str, MachineLinks],
+14 -3
View File
@@ -48,6 +48,7 @@ from .mame_devices import (
attribute_softlists,
attribute_systems,
default_floppy_samples,
device_systems,
drive_form_factor,
floppy_drives,
floppy_sample_systems,
@@ -70,6 +71,9 @@ _CLONE_DIR = _ROOT / "tmp" / f"mame-{os.getpid()}"
_EMULATORS_DIR = _ROOT / "emulators"
_PLATFORMS_DIR = _ROOT / "platforms"
_FLOPPY_SOURCE = "src/devices/imagedev/floppy.cpp"
# Where a device set goes when only machines no seed places load it: MAME
# starts such a machine from its set name, as an arcade folder passes one.
UNPLACED_SYSTEM = "arcade"
_REPO_URL = "https://github.com/mamedev/mame.git"
_STALE_HOURS = 24
@@ -570,9 +574,14 @@ def _merge_devices(args: argparse.Namespace) -> None:
stated, conflicts = platform_seeds(
_platform_archives(), machines, profile.get("systems") or [], written
)
systems = attribute_systems(machines, {**stated, **written})
seeds = {**stated, **written}
systems = attribute_systems(machines, seeds)
listed = profile.get("systems") or []
filed = device_systems(
machines, seeds, UNPLACED_SYSTEM if UNPLACED_SYSTEM in listed else ""
)
for set_name, device in devices.items():
device["systems"] = systems.get(set_name, [])
device["systems"] = filed.get(set_name, [])
report = merge_mame_devices(str(profile_path), devices, write=not args.dry_run)
shipped = upstream.list_directory(repo, commit, "hash", upstream.CACHE_DIR)
@@ -602,10 +611,12 @@ def _merge_devices(args: argparse.Namespace) -> None:
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())
fallen = sum(1 for device in devices.values() if UNPLACED_SYSTEM in device["systems"])
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 placed machine "
f"{fallen} of them under {UNPLACED_SYSTEM} (loaded by machines no entry places), "
f"{by_count[0]} instantiated by no machine of the release "
"(they serve every system of the profile)"
)
print(
+7 -4
View File
@@ -1,9 +1,11 @@
"""Fetch Redump BIOS DAT files and write a provenance snapshot.
Redump serves BIOS DATs as static clrmamepro files linked from
https://redump.info/downloads under /static/bios/. The downloads page
is scanned for those links, so new BIOS DATs are picked up without
code changes.
Redump serves BIOS DATs as Logiqx files linked from
https://redump.info/downloads. The links were static files under
/static/bios/<name>.dat and are now one route per system,
/bios/<CODE> (PSX, PS2, GC, XBOX), served as an attachment. The
downloads page is scanned for either shape, so new BIOS DATs are
picked up without code changes.
Run manually, then commit the snapshot:
python -m scripts.scraper.redump_dat_scraper --dry-run
@@ -40,6 +42,7 @@ def _fetch(url: str) -> str:
def discover_bios_datfiles(downloads_html: str) -> list[str]:
"""Extract BIOS DAT paths from the downloads page."""
paths = set(re.findall(r'href="(/static/bios/[^"]+\.dat)"', downloads_html))
paths.update(re.findall(r'href="(/bios/[A-Za-z0-9_-]+)"', downloads_html))
return sorted(paths)
+1 -8
View File
@@ -860,7 +860,6 @@ SYSTEM_NAMES: dict[str, str] = {
"apple-iie": "Apple IIe",
"apple-ios": "Apple iOS",
"apple2": "Apple II",
"apple2gs": "Apple IIGS",
"arcade": "Arcade games",
"arcade-laserdisc": "Laserdisc arcade games",
"arcadia-systems": "Arcadia Systems Multi Select",
@@ -869,7 +868,6 @@ SYSTEM_NAMES: dict[str, str] = {
"aristocrat-mk6": "Aristocrat MK6",
"aristocrat-mk7": "Aristocrat MK7",
"arm": "ARM",
"astrocde": "Bally Astrocade",
"atari-falcon": "Atari Falcon",
"atari-jaguarcd": "Atari Jaguar CD",
"atari-ste": "Atari STE",
@@ -920,10 +918,6 @@ SYSTEM_NAMES: dict[str, str] = {
"commodore-cdtv": "Commodore CDTV",
"commodore-cubo": "CD Express Cubo CD32",
"coolbar": "Coolbar feature phones",
"cps1": "Capcom CPS-1",
"cps2": "Capcom CPS-2",
"cps3": "Capcom CPS-3",
"crvision": "VTech CreatiVision",
"cstrike": "Counter-Strike",
"ctf": "Quake II: Capture the Flag",
"czero": "Counter-Strike: Condition Zero",
@@ -1073,7 +1067,6 @@ SYSTEM_NAMES: dict[str, str] = {
"nintendo-nss": "Nintendo Super System",
"nintendo-playch10": "Nintendo PlayChoice-10",
"nintendo-sfcbox": "Nintendo Super Famicom Box",
"nintendo-sgb": "Nintendo Super Game Boy",
"nintendo-virtualboy": "Nintendo Virtual Boy",
"nintendo-wii-arcade": "Nintendo Wii arcade boards",
"nmk16": "NMK16",
@@ -1092,7 +1085,6 @@ SYSTEM_NAMES: dict[str, str] = {
"pce-tourvision": "TourVision",
"pdark": "Perfect Dark",
"pegasus": "Aamber Pegasus",
"pgm": "IGS PolyGame Master",
"philips-p2000t": "Philips P2000T",
"philips-vg5k": "Philips VG 5000",
"picocomputer-6502": "Picocomputer 6502 programs",
@@ -1216,6 +1208,7 @@ SYSTEM_NAMES: dict[str, str] = {
"tomb-raider-1": "Tomb Raider",
"tomb-raider-2": "Tomb Raider II",
"transport-tycoon-deluxe": "Transport Tycoon Deluxe",
"tvgames": "Plug-and-play TV games",
"tyrian": "Tyrian",
"ur-quan-masters": "Star Control II",
"urban-terror": "Urban Terror",
+32
View File
@@ -32,6 +32,7 @@ from scripts.scraper.mame_devices import (
attribute_softlists,
attribute_systems,
default_floppy_samples,
device_systems,
drive_form_factor,
find_rom_block,
floppy_drives,
@@ -500,6 +501,37 @@ class DeviceSetsFollowTheMachinesThatLoadThem(unittest.TestCase):
)
class MachinesNoEntryPlacesCountUnderArcade(unittest.TestCase):
"""MAME starts any machine from its set name: a machine no seed places
is one an arcade folder can pass it, so its devices go under arcade."""
def test_a_set_only_unplaced_machines_load(self):
systems = device_systems(_release().machines, SEEDS, "arcade")
# ibm5150 is no system of the profile, and pc_kbd only it loads.
self.assertEqual(systems["pc_kbd"], ["arcade"])
def test_a_set_both_kinds_load_keeps_both(self):
# aes is placed by no seed and loads ym2610, as the MVS does.
systems = device_systems(_release().machines, SEEDS, "arcade")
self.assertEqual(systems["ym2610"], ["arcade", "snk-neogeo-mvs"])
self.assertEqual(systems["a2diskii"], ["apple2gs"])
self.assertEqual(systems["cart_dev"], ["snk-neogeo-mvs"])
def test_a_set_no_machine_instantiates_keeps_none(self):
machines = {
**_release().machines,
"orphan": MachineLinks("", True, ()),
}
systems = device_systems(machines, SEEDS, "arcade")
self.assertNotIn("orphan", systems)
def test_no_fallback_listed_is_attribute_systems(self):
machines = _release().machines
self.assertEqual(
device_systems(machines, SEEDS, ""), attribute_systems(machines, SEEDS)
)
class TheMergeWritesTheSystems(unittest.TestCase):
def setUp(self):
+15
View File
@@ -134,6 +134,21 @@ class TestRedumpScraper(unittest.TestCase):
["/static/bios/Nintendo%20GC.dat", "/static/bios/Sony%20PSX.dat"],
)
def test_discover_bios_routes(self):
html = (
'<td><a href="/bios/XBOX">Datfile</a></td>'
'<td><a href="/bios/GC">Datfile</a></td>'
'<td><a href="/bios/PSX">Datfile</a></td>'
'<td><a href="/bios/PS2">Datfile</a></td>'
'<td><a href="/bios/PSX">Datfile</a></td>'
'<td><a href="/datfile/psx">Datfile</a></td>'
'<td><a href="/bios/">Index</a></td>'
)
self.assertEqual(
discover_bios_datfiles(html),
["/bios/GC", "/bios/PS2", "/bios/PSX", "/bios/XBOX"],
)
def test_parse_redump_dat(self):
name, version, entries = parse_redump_dat(LOGIQX_MACHINE_FIXTURE)
self.assertEqual(name, "Sony - PlayStation - BIOS Images")
-1
View File
@@ -32,7 +32,6 @@ UNLINKED: dict[str, str] = {
# several systems' files or not reviewed as the system's own. The
# heading names the program, not the system.
"capcom-cps3": "Arcade > FBNeo",
"cps3": "Arcade > Arcade holds one CPS-3 set among every board's",
"commanderx16": "Arcade > Arcade",
"dark-forces-ii": "Game Engines > OpenJKDF2",
"fpinball": "Other > future-pinball-fploader",
+57 -2
View File
@@ -16,8 +16,8 @@ from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(REPO_ROOT / "scripts"))
from common import SYSTEM_ALIASES, load_emulator_profiles # noqa: E402
from packextras import _slug_for # noqa: E402
from common import SYSTEM_ALIASES, _norm_system_id, load_emulator_profiles # noqa: E402
from packextras import _names_content, _slug_for # noqa: E402
class ProfilesSpellEachMachineOnce(unittest.TestCase):
@@ -35,6 +35,61 @@ class ProfilesSpellEachMachineOnce(unittest.TestCase):
self.assertEqual(sorted(set(found)), [])
class PlatformNamesReachTheProfileSystem(unittest.TestCase):
"""Folder and system names a platform gives a machine, joined to the
profile that runs it there. Each pair fell back to the whole profile in
a survey of the rom folders of 38 setups, the two spellings not meeting
once normalized."""
# (name a platform uses, profile running it there)
PAIRS = [
("apple-iigs", "mame"),
("apple2gs", "gsplus-legacy"),
("astrocde", "mame"),
("astrocade", "mame"),
("creativision", "mame"),
("gamepocketcomputer", "mame"),
("nintendo-sgb", "bsnes"),
("nintendo-sgb", "mesen-s"),
("capcom-cps1", "fbalpha2012_cps1"),
("capcom-cps2", "fbalpha2012_cps2"),
("capcom-cps3", "fbalpha2012_cps3"),
("capcom-cps1", "fbalpha2012"),
("igs-pgm", "fbalpha2012"),
]
def test_each_name_meets_a_system_of_its_profile(self):
profiles = load_emulator_profiles(str(REPO_ROOT / "emulators"))
unmet = [
f"{name} -> {emulator}"
for name, emulator in self.PAIRS
if _norm_system_id(name)
not in {_norm_system_id(str(s)) for s in profiles[emulator].get("systems", [])}
]
self.assertEqual(unmet, [])
def test_both_spellings_normalize_alike(self):
for alias, canonical in SYSTEM_ALIASES.items():
with self.subTest(alias=alias):
self.assertEqual(_norm_system_id(alias), _norm_system_id(canonical))
class AFoldedClaimKeepsItsProof(unittest.TestCase):
"""One spelling per machine folds bsnes-hd's SGB1.sfc onto bsnes's: the
entry still pins the bytes, so it is placed before nSide's SGB1.sfc/
tree and the file keeps its path."""
def test_a_hash_on_a_folded_claim_counts(self):
entry = {
"name": "SGB1.sfc", "md5": None, "sha1": None,
"other_claims": [{"name": "SGB1.sfc", "md5": "b15ddb15721c657d82c5bab6db982ee9"}],
}
self.assertTrue(_names_content(entry))
def test_names_alone_name_no_content(self):
self.assertFalse(_names_content({"name": "SGB1.sfc", "other_claims": [{"name": "SGB1.sfc"}]}))
class AFileGoesToItsOwnSystemFolder(unittest.TestCase):
PROFILES = {"picodrive": {"systems": ["sega-game-gear", "sega-megacd"]}}
SYSTEMS = {"sega-game-gear", "sega-mega-cd"}