From 9d7db09130bdee51d1de6df3774789013de556ce Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Thu, 22 Oct 2026 10:55:01 +0200 Subject: [PATCH] feat: add duckstation-legacy emulator profile --- emulators/duckstation-legacy.yml | 253 +++++++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 emulators/duckstation-legacy.yml diff --git a/emulators/duckstation-legacy.yml b/emulators/duckstation-legacy.yml new file mode 100644 index 00000000..c892d744 --- /dev/null +++ b/emulators/duckstation-legacy.yml @@ -0,0 +1,253 @@ +emulator: "DuckStation (legacy)" +type: standalone +core_classification: frozen_snapshot +source: "https://github.com/stenzek/duckstation" +profiled_date: "2026-10-22" +source_commit: "56ac3d6c324ec4520dac433b071ecab6227fb459" +pin_frozen: "Batocera builds this revision of 4 August 2023 as duckstation-legacy, its package marked not to be bumped, and KNULLI ships the same package." +core_version: "0.1" +display_name: "Sony - PlayStation (DuckStation legacy)" +cores: + - "duckstation-legacy" +found_by: content +systems: [sony-playstation] +mode: standalone + +notes: | + DuckStation as of August 2023, from before its licence change, kept as a + separate package. Batocera builds it with its own path patches: the BIOS + directory becomes /userdata/bios, the shared BIOS root, and the resources + directory /usr/share/duckstation/resources. + ref: Batocera package/batocera/emulators/duckstation-legacy/duckstation-legacy.mk:6-7, + Batocera package/batocera/emulators/duckstation-legacy/004-adjust-paths.patch + + A BIOS file is any file of 512 KB, 4 MB (PS2) or 0x3E66F0 bytes (PS3) in the + BIOS directory. Only its first 512 KB are read, and their MD5 is looked up + in a table of 29 images. A file carrying "OpenBIOS" at offset 0x78 is + recognised by that signature instead. With no file configured for the + console region, the directory is scanned and the first image whose region + matches, or whose table region is Auto, is used. Otherwise the first known + image found, else the first unknown one, stands in with a warning, and an + empty directory stops the boot with "No BIOS image found". The table has no + priority field: the scan order decides between matching images. + ref: src/core/bios.h:15-17, src/core/bios.cpp:45-91, src/core/bios.cpp:95-97, + src/core/bios.cpp:108-137, src/core/bios.cpp:145-167, + src/core/bios.cpp:276-377 + + KNULLI's launcher sets BIOS SearchDirectory to /userdata/bios and fills + PathNTSCU, PathPAL and PathNTSCJ with the first name it finds from three + lists, refusing to start when none exists. A configured path is loaded by + name and only warned about when its image does not match the region. + ref: KNULLI package/system/knulli-configgen/configgen/configgen/generators/duckstation_legacy/duckstationLegacyGenerator.py:116-153, + src/core/bios.cpp:296-315 + + Fast boot and TTY patching are refused for the two PS3 images, the table's + only entries marked not patch compatible. + ref: src/core/system.cpp:1280, src/core/system.cpp:1306 + +files: + - name: "scph1000.bin" + description: "SCPH-1000, DTL-H1000 (v1.0)" + region: [japan] + required: false + md5: "239665b1a3dade1b5a52c06338011044" + source_ref: "src/core/bios.cpp:46" + + - name: "scph1001.bin" + description: "SCPH-1001, 5003, DTL-H1201, H3001 (v2.2 12-04-95 A)" + region: [north-america, latin-america] + required: false + md5: "924e392ed05558ffdb115408c263dccf" + source_ref: "src/core/bios.cpp:47-48" + + - name: "scph1002a.bin" + description: "SCPH-1002, DTL-H1002 (v2.0 05-10-95 E)" + region: [europe, oceania] + required: false + md5: "54847e693405ffeb0359c6287434cbef" + source_ref: "src/core/bios.cpp:49-50" + + - name: "scph1002b.bin" + description: "SCPH-1002, DTL-H1102 (v2.1 07-17-95 E)" + region: [europe, oceania] + required: false + md5: "417b34706319da7cf001e76e40136c23" + source_ref: "src/core/bios.cpp:51-52" + + - name: "scph1002c.bin" + description: "SCPH-1002, DTL-H1202, H3002 (v2.2 12-04-95 E)" + region: [europe, oceania] + required: false + md5: "e2110b8a2b97a8e0b857a45d32f7e187" + source_ref: "src/core/bios.cpp:53-54" + + - name: "dtlh1100.bin" + description: "DTL-H1100 (v2.2 03-06-96 D)" + region: [japan] + required: false + md5: "ca5cfc321f916756e3f0effbfaeba13b" + source_ref: "src/core/bios.cpp:55" + + - name: "scph3000.bin" + description: "SCPH-3000, DTL-H1000H (v1.1 01-22-95)" + region: [japan] + required: false + md5: "849515939161e62f6b866f6853006780" + source_ref: "src/core/bios.cpp:56-57" + + - name: "scph1001_v20.bin" + description: "SCPH-1001, DTL-H1001 (v2.0 05-07-95 A)" + region: [north-america, latin-america] + required: false + md5: "dc2b9bf8da62ec93e868cfd29f0d067d" + source_ref: "src/core/bios.cpp:58-59" + + - name: "scph3500.bin" + description: "SCPH-3500 (v2.1 07-17-95 J)" + region: [japan] + required: false + md5: "cba733ceeff5aef5c32254f1d617fa62" + source_ref: "src/core/bios.cpp:60" + + - name: "scph1001_v21.bin" + description: "SCPH-1001, DTL-H1101 (v2.1 07-17-95 A)" + region: [north-america, latin-america] + required: false + md5: "da27e8b6dab242d8f91a9b25d80c63b8" + source_ref: "src/core/bios.cpp:61-62" + + - name: "scph5000.bin" + description: "SCPH-5000, DTL-H1200, H3000 (v2.2 12-04-95 J)" + region: [japan] + required: false + md5: "57a06303dfa9cf9351222dfcbb4a29d9" + source_ref: "src/core/bios.cpp:63-64" + + - name: "scph5500.bin" + description: "SCPH-5500 (v3.0 09-09-96 J)" + region: [japan] + required: false + md5: "8dd7d5296a650fac7319bce665a6a53c" + source_ref: "src/core/bios.cpp:65" + + - name: "scph5501.bin" + description: "SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)" + region: [north-america, latin-america] + required: false + md5: "490f666e1afb15b7362b406ed1cea246" + source_ref: "src/core/bios.cpp:66-67" + + - name: "scph5502.bin" + description: "SCPH-5502, 5552 (v3.0 01-06-97 E)" + region: [europe, oceania] + required: false + md5: "32736f17079d0b2b7024407c39bd3050" + source_ref: "src/core/bios.cpp:68-69" + + - name: "scph7000.bin" + description: "SCPH-7000, 7500, 9000 (v4.0 08-18-97 J)" + region: [japan] + required: false + md5: "8e4c14f567745eff2f0408c8129f72a6" + source_ref: "src/core/bios.cpp:70-71" + + - name: "scph7000w.bin" + description: "SCPH-7000W (v4.1 11-14-97 A)" + region: [japan] + required: false + md5: "b84be139db3ee6cbd075630aa20a6553" + source_ref: "src/core/bios.cpp:72" + + - name: "scph7001.bin" + description: "SCPH-7001, 7501, 7503, 9001, 9003, 9903 (v4.1 12-16-97 A)" + region: [north-america, latin-america] + required: false + md5: "1e68c231d0896b7eadcad1d7d8e76129" + source_ref: "src/core/bios.cpp:73-74" + + - name: "scph7002.bin" + description: "SCPH-7002, 7502, 9002 (v4.1 12-16-97 E)" + region: [europe, oceania] + required: false + md5: "b9d9a0286c33dc6b7237bb13cd46fdee" + source_ref: "src/core/bios.cpp:75-76" + + - name: "scph100.bin" + description: "SCPH-100 (v4.3 03-11-00 J)" + region: [japan] + required: false + md5: "8abc1b549a4a80954addc48ef02c4521" + source_ref: "src/core/bios.cpp:77" + + - name: "scph101_v44.bin" + description: "SCPH-101 (v4.4 03-24-00 A)" + region: [north-america, latin-america] + required: false + md5: "9a09ab7e49b422c007e6d54d7c49b965" + source_ref: "src/core/bios.cpp:78" + + - name: "scph101_v45.bin" + description: "SCPH-101 (v4.5 05-25-00 A)" + region: [north-america, latin-america] + required: false + md5: "6e3735ff4c7dc899ee98981385f6f3d0" + source_ref: "src/core/bios.cpp:79" + + - name: "scph102_v44.bin" + description: "SCPH-102 (v4.4 03-24-00 E)" + region: [europe, oceania] + required: false + md5: "b10f5e0e3d9eb60e5159690680b1e774" + source_ref: "src/core/bios.cpp:80" + + - name: "scph102_v45.bin" + description: "SCPH-102 (v4.5 05-25-00 E)" + region: [europe, oceania] + required: false + md5: "de93caec13d1a141a40a79f5c86168d6" + source_ref: "src/core/bios.cpp:81" + + - name: "ps2_scph18000.bin" + description: "PS2, SCPH-18000 (v5.0 10-27-00 J)" + region: [japan] + required: false + md5: "d8f485717a5237285e4d7c5f881b7f32" + note: "The table hashes the first 512 KB that are read, whatever the file size." + source_ref: "src/core/bios.cpp:82-83" + + - name: "ps2_scph30003.bin" + description: "PS2, SCPH-30003 (v5.0 09-02-00 E)" + region: [europe, oceania] + required: false + md5: "71f50ef4f4e17c163c78908e16244f7d" + note: "The table hashes the first 512 KB that are read, whatever the file size." + source_ref: "src/core/bios.cpp:84-85" + + - name: "psxonpsp660.bin" + description: "PSP, SCPH-1000R (v4.5 05-25-00 J)" + required: false + md5: "c53ca5908936d412331790f4426c6c33" + source_ref: "src/core/bios.cpp:86-87" + + - name: "scph1000r.bin" + description: "SCPH-1000R (v4.5 05-25-00 J)" + region: [japan] + required: false + md5: "476d68a94ccec3b9c8303bbd1daf2810" + source_ref: "src/core/bios.cpp:88" + + - name: "ps1_rom.bin" + description: "PS3 (v5.0 06-23-03 A)" + required: false + md5: "fbb5f59ec332451debccf1e377017237" + size: 4089584 + validation: [size] + note: "The whole 0x3E66F0 PS3 image. Only its first 512 KB are read and hashed, md5 c02a6fbb1b27359f84e92fae8bc21316. Marked not patch compatible: fast boot is refused with this image." + source_ref: "src/core/bios.cpp:89" + + - name: "ps1_rom.bin" + description: "PS3 (v5.0 06-23-03 A)" + required: false + md5: "81bbe60ba7a3d1cea1d48c14cbcc647b" + note: "Marked not patch compatible: fast boot is refused with this image." + source_ref: "src/core/bios.cpp:90"