fix: tag US PlayStation images latin-america too

Each core picks its US image for a disc licensed by Sony Computer
Entertainment America, and DuckStation, SwanStation and Beetle PSX
also for a disc whose region they cannot read. Tagged north-america
alone, a --region brazil,jp pack withdrew those images.
This commit is contained in:
Abdessamad Derraz committed 2026-10-21 06:04:42 +02:00
1 parent 734643b8fc
commit 47d9e1d629
7 files changed
+99 -39

No files matched your search

+2 -1
View File
@@ -379,11 +379,12 @@ files:
# --- PlayStation ---
- name: scph5501.bin
system: sony-playstation
region: [north-america]
region: [north-america, latin-america]
required: true
sha256: "11052b6499e466bbf0a709b1f9cb6834a9418e66680387912451e971cf8a1fef"
validation: [sha256]
description: "PlayStation BIOS (US)"
note: "Picked for NTSC-U, set by both America licence strings and for an executable. A disc with no recognised licence offers NTSC-U and PAL, and the Boot/Prefer setting picks (mia/medium/playstation.cpp:66-73, 92, desktop-ui/emulator/playstation.cpp:85-92, desktop-ui/emulator/emulator.cpp:40-58)."
source_ref: "desktop-ui/emulator/playstation.cpp:18, desktop-ui/emulator/playstation.cpp:85-92, mia/medium/playstation.cpp:65-73"
- name: scph5500.bin
+2 -1
View File
@@ -58,7 +58,7 @@ files:
- name: "scph5501.bin"
description: "SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)"
region: [north-america]
region: [north-america, latin-america]
required: true
hle_fallback: true
size: 524288
@@ -66,6 +66,7 @@ files:
md5: "490f666e1afb15b7362b406ed1cea246"
validation: [sha1]
mode: both
note: "Picked for REGION_NA: a SYSTEM.CNF serial whose third letter is U (SCUS, SLUS), a licence string naming America, and content whose region cannot be read while the region option stays on auto (libretro.c:2172-2174, 2198, 2249-2254, 3171-3185, 4436)."
source_ref: "libretro.c:613-631"
aliases:
- "SCPH5501.bin"
+36 -28
View File
@@ -26,6 +26,14 @@ notes: |
ref: src/core/bios.cpp:34-139 (s_image_info_by_hash)
Each image has: region, region_check, fast_boot_patch type, priority score.
The console region picks the image, Auto by default. NTSC-U answers the
"Sony Computer Entertainment Amer ica" licence string, a SCUS or SLUS
executable, and every disc whose region the detector cannot read
(DiscRegion::Other, NonPS1), so a disc of any other market boots an NTSC-U image.
ref: src/core/system.cpp:650-662, 926-995, 1723-1724, 1755
ref: src/core/bios.cpp:397-436 (FindBIOSImageInDirectory keeps a region match)
ref: src/core/settings.h:595 (DEFAULT_CONSOLE_REGION = Auto)
ImageInfo gained a version and an expected_filename field after the previous
profiling pass. Neither takes part in identification: expected_filename is read
only by the two settings screens, which fall back to the real filename when it
@@ -58,7 +66,7 @@ files:
- name: "scph1001.bin"
description: "SCPH-1001, 5003, DTL-H1201, H3001 (v2.2 12-04-95 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "924e392ed05558ffdb115408c263dccf"
region_check: false
@@ -118,7 +126,7 @@ files:
- name: "scph1001_v20.bin"
description: "SCPH-1001, DTL-H1001 (v2.0 05-07-95 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "dc2b9bf8da62ec93e868cfd29f0d067d"
region_check: false
@@ -138,7 +146,7 @@ files:
- name: "scph1001_v21.bin"
description: "SCPH-1001, DTL-H1101 (v2.1 07-17-95 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "da27e8b6dab242d8f91a9b25d80c63b8"
region_check: false
@@ -168,7 +176,7 @@ files:
- name: "scph5501.bin"
description: "SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)"
region: [north-america]
region: [north-america, latin-america]
required: true
md5: "490f666e1afb15b7362b406ed1cea246"
region_check: false
@@ -208,7 +216,7 @@ files:
- name: "scph7001.bin"
description: "SCPH-7001, 7501, 7503, 9001, 9003, 9903 (v4.1 12-16-97 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "1e68c231d0896b7eadcad1d7d8e76129"
region_check: false
@@ -238,7 +246,7 @@ files:
- name: "scph101_v44.bin"
description: "SCPH-101 (v4.4 03-24-00 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "9a09ab7e49b422c007e6d54d7c49b965"
region_check: false
@@ -248,7 +256,7 @@ files:
- name: "scph101_v45.bin"
description: "SCPH-101 (v4.5 05-25-00 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "6e3735ff4c7dc899ee98981385f6f3d0"
region_check: false
@@ -362,7 +370,7 @@ files:
- name: "ps2_dtlh30001.bin"
description: "PS2, DTL-H30001 (v5.0 07/27/00 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "63e6fd9b3c72e0d7b920e80cf76645cd"
region_check: true
@@ -372,7 +380,7 @@ files:
- name: "ps2_scph30001_0727.bin"
description: "PS2, SCPH-30001 (v5.0 07/27/00 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "a20c97c02210f16678ca3010127caf36"
region_check: true
@@ -382,7 +390,7 @@ files:
- name: "ps2_scph30001_0902.bin"
description: "PS2, SCPH-30001 (v5.0 09/02/00 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "8db2fbbac7413bf3e7154c1e0715e565"
region_check: true
@@ -442,7 +450,7 @@ files:
- name: "ps2_dtlh30101.bin"
description: "PS2, DTL-H30101 (v5.0 12/28/00 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "0bf988e9c7aaa4c051805b0fa6eb3387"
region_check: true
@@ -452,7 +460,7 @@ files:
- name: "ps2_scph30001_35001.bin"
description: "PS2, SCPH-30001/SCPH-35001 (v5.0 12/28/00 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "8accc3c49ac45f5ae2c5db0adc854633"
region_check: true
@@ -502,7 +510,7 @@ files:
- name: "ps2_scph30001r_0427.bin"
description: "PS2, SCPH-30001R (v5.0 04/27/01 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "b107b5710042abe887c0f6175f6e94bb"
region_check: true
@@ -522,7 +530,7 @@ files:
- name: "ps2_scph30001r_0704.bin"
description: "PS2, SCPH-30001R (v5.0 07/04/01 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "18bcaadb9ff74ed3add26cdf709fff2e"
region_check: true
@@ -542,7 +550,7 @@ files:
- name: "ps2_scph30001r_1004.bin"
description: "PS2, SCPH-30001R (v5.0 10/04/01 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "7200a03d51cacc4c14fcdfdbc4898431"
region_check: true
@@ -572,7 +580,7 @@ files:
- name: "ps2_scph39001.bin"
description: "PS2, SCPH-39001 (v5.0 02/07/02 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "d5ce2c7d119f563ce04bc04dbc3a323e"
region_check: true
@@ -662,7 +670,7 @@ files:
- name: "ps2_dtlh50001_0325.bin"
description: "PS2, DTL-H50001 (v5.0 03/25/03 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "eb960de68f0c0f7f9fa083e9f79d0360"
region_check: true
@@ -672,7 +680,7 @@ files:
- name: "ps2_scph50001_0325.bin"
description: "PS2, SCPH-50001 (v5.0 03/25/03 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "8aa12ce243210128c5074552d3b86251"
region_check: true
@@ -712,7 +720,7 @@ files:
- name: "ps2_dtlh50001_0623.bin"
description: "PS2, DTL-H50001 (v5.0 06/23/03 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "ab9d49ad40ae49f19856ad187777b1b3"
region_check: true
@@ -722,7 +730,7 @@ files:
- name: "ps2_scph50001_0623.bin"
description: "PS2, SCPH-50001/SCPH-50010 (v5.0 06/23/03 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "35461cecaa51712b300b2d6798825048"
region_check: true
@@ -802,7 +810,7 @@ files:
- name: "ps2_scph50011.bin"
description: "PS2, SCPH-50011 (v5.0 03/29/04 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "81f4336c1de607dd0865011c0447052e"
region_check: true
@@ -822,7 +830,7 @@ files:
- name: "ps2_scph70001.bin"
description: "PS2, SCPH-70001/SCPH-70011/SCPH-70012 (v5.0 06/14/04 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "d333558cc14561c1fdc334c75d5f37b7"
region_check: true
@@ -902,7 +910,7 @@ files:
- name: "ps2_dtlh75000a.bin"
description: "PS2, DTL-H75000A (v5.0 06/20/05 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "9959ad7a8685cad66206e7752ca23f8b"
region_check: true
@@ -912,7 +920,7 @@ files:
- name: "ps2_scph75001.bin"
description: "PS2, SCPH-75001/SCPH-75010 (v5.0 06/20/05 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "929a14baca1776b00869f983aa6e14d2"
region_check: true
@@ -952,7 +960,7 @@ files:
- name: "ps2_scph77001.bin"
description: "PS2, SCPH-77001/SCPH-77010 (v5.0 02/10/06 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "cb801b7920a7d536ba07b6534d2433ca"
region_check: true
@@ -1002,7 +1010,7 @@ files:
- name: "ps2_dtlh90000_a.bin"
description: "PS2, DTL-H90000 (v5.0 09/05/06 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "21fe4cad111f7dc0f9af29477057f88d"
region_check: true
@@ -1012,7 +1020,7 @@ files:
- name: "ps2_scph79001_90001.bin"
description: "PS2, SCPH-79001/SCPH-79010/SCPH-90001 (v5.0 09/05/06 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "40c11c063b3b9409aa5e4058e984e30c"
region_check: true
@@ -1052,7 +1060,7 @@ files:
- name: "ps2_scph90001_0220.bin"
description: "PS2, SCPH-90001/SCPH-90010 (v5.0 02/20/08 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
md5: "21038400dc633070a78ad53090c53017"
region_check: true
+2 -2
View File
@@ -284,13 +284,13 @@ files:
- name: "scph5501.bin"
system: sony-playstation
description: "SCPH-5501 / v3.0A BIOS"
region: [north-america]
region: [north-america, latin-america]
required: true
size: 524288
sha256: "11052b6499e466bbf0a709b1f9cb6834a9418e66680387912451e971cf8a1fef"
validation: [size, sha256]
source_ref: "psx/psx.cpp:1764-1769, 1773-1781, 2374, 252"
note: "Default of psx.bios_na. The BIOS table carries 24 recognised dumps in total, two of them flagged bad (psx.cpp:228-268)."
note: "Default of psx.bios_na. The BIOS table carries 24 recognised dumps in total, two of them flagged bad (psx.cpp:228-268). Picked for REGION_NA: a SYSTEM.CNF serial whose third letter is U, a licence string naming America, and a disc read as Japanese whose system area fails the Japanese BIOS check (psx.cpp:1324-1325, 1372-1376, 1401-1437, 1764-1769)."
- name: "scph5502.bin"
system: sony-playstation
+10 -6
View File
@@ -17,6 +17,10 @@ notes: >
then validates the full binary against an internal SHA-256 database
(lifted from Mednafen). Region must match the loaded disc. Known-bad
dumps are rejected. No filename requirement. No HLE fallback.
The disc region comes from the sector 4 licence string alone: "Inc" is Japan,
"America" and "of America" are NorthAmerica, "Europe" is Europe, and any other
string refuses the disc (upstream src/cdrom/disc/mod.rs:56-99,
source src/lib.rs:71-82, 170-215).
"Boot to BIOS menu" core option allows booting without a disc.
Database contains 24 entries (22 good, 2 known-bad rejected)
covering BIOS versions 1.0 through 4.5.
@@ -40,7 +44,7 @@ files:
- name: "scph5501.bin"
description: "SCPH-5501 (v3.0 A)"
region: [north-america]
region: [north-america, latin-america]
required: true
size: 524288
validation: [size, sha256]
@@ -139,7 +143,7 @@ files:
# North America alternatives
- name: "scph1001_v20.bin"
description: "SCPH-1001 (v2.0 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
size: 524288
validation: [size, sha256]
@@ -148,7 +152,7 @@ files:
- name: "scph1001_v21.bin"
description: "SCPH-1001 (v2.1 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
size: 524288
validation: [size, sha256]
@@ -157,7 +161,7 @@ files:
- name: "scph1001.bin"
description: "SCPH-1001 (v2.2 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
size: 524288
validation: [size, sha256]
@@ -166,7 +170,7 @@ files:
- name: "scph7001.bin"
description: "SCPH-7001 (v4.1 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
size: 524288
validation: [size, sha256]
@@ -175,7 +179,7 @@ files:
- name: "scph101.bin"
description: "SCPH-101 (v4.5 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
size: 524288
validation: [size, sha256]
+9 -1
View File
@@ -28,6 +28,14 @@ notes: |
ref: src/core/bios.cpp:28-71 (s_image_infos)
Each entry has: description, region, hash, patch_compatible flag.
The console region picks the image, Auto by default. NTSC-U answers the
"Sony Computer Entertainment Amer ica" licence string, a SCUS or SLUS
executable, a disc whose region the detector cannot read, an image that
fails to open and a boot without content.
ref: src/core/system.cpp:193-209, 401-456, 592-645
ref: src/core/host_interface.cpp:100-183 (FindBIOSImageInDirectory keeps a region match)
ref: src/libretro/libretro_core_options.h:82-95 (swanstation_Console_Region, default Auto)
Upstream DuckStation has evolved significantly (105 entries, PS2 BIOS, OpenBIOS,
priority system). SwanStation is frozen at the fork point.
@@ -45,7 +53,7 @@ files:
- name: "scph5501.bin"
description: "SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)"
region: [north-america]
region: [north-america, latin-america]
required: false
hle_fallback: true
md5: "490f666e1afb15b7362b406ed1cea246"
+38
View File
@@ -907,6 +907,15 @@ class RegionalRequestsKeepWhatTheCodeLoads(unittest.TestCase):
("pcsx_rearmed", ["brazil", "japan"], "scph1001.bin"),
("blastem", ["australia", "north-america"], "bios_CD_E.bin"),
("kega-fusion", ["australia", "north-america"], "eu_mcd1_9210.bin"),
("ares", ["brazil", "japan"], "scph5501.bin"),
("beetle_psx", ["brazil", "japan"], "scph5501.bin"),
("mednafen", ["brazil", "japan"], "scph5501.bin"),
("swanstation", ["brazil", "japan"], "scph5501.bin"),
("rustation", ["brazil", "japan"], "scph5501.bin"),
("rustation", ["brazil", "japan"], "scph101.bin"),
("duckstation", ["brazil", "japan"], "scph5501.bin"),
("duckstation", ["brazil", "japan"], "scph7001.bin"),
("duckstation", ["brazil", "japan"], "ps2_scph39001.bin"),
)
def test_each_request_keeps_its_file(self):
@@ -1152,6 +1161,35 @@ class PcsxRearmedUsSlotIsTheDefault(unittest.TestCase):
self.assertIn("latin-america", entry["region"])
class PlayStationUsImageAnswersTheAmericaLicence(unittest.TestCase):
"""Every PlayStation core here picks its US image for a disc licensed by
Sony Computer Entertainment America, the licence the Americas share:
ares (mia/medium/playstation.cpp:66-73), Beetle PSX (libretro.c:2249-2254),
Mednafen (psx.cpp:1372-1376), SwanStation and DuckStation
(GetRegionFromSystemArea, plus every unread region), Rustation
(src/cdrom/disc/mod.rs:81-90). Tagged north-america alone, a --region
brazil,japan pack withdrew the image those discs boot with."""
COUNTS = {"ares": 1, "beetle_psx": 1, "mednafen": 1, "swanstation": 1,
"rustation": 6, "duckstation": 28}
def test_every_us_image_includes_latin_america(self):
from common import load_emulator_profiles
profiles = load_emulator_profiles("emulators")
for name, count in self.COUNTS.items():
tagged = [
f for f in profiles[name]["files"]
if "north-america" in (f.get("region") or [])
and f.get("system", "sony-playstation") == "sony-playstation"
]
with self.subTest(profile=name):
self.assertEqual(len(tagged), count)
for entry in tagged:
with self.subTest(profile=name, name=entry["name"]):
self.assertIn("latin-america", entry["region"])
class FusionSmsExportBiosFollowsTheSetting(unittest.TestCase):
"""Kega Fusion tells a Japanese Master System cart from an export one by
the header, then picks USA or EUR from its CountryOrder setting or a CRC32