Files
libretro/emulators/armsx1.yml
T
Abdessamad Derraz 315dab82b7 feat: give each set its requirement and one pick
Three changes to the search-list model, one commit because the readers
and the profiles must move together for the schema to hold.

Set requirement in a groups map. pom2 falls back on apple2.rom for the
][ and the ][+, and on apple2e.rom for the //e it boots and for the
unenhanced //e: one required on the file could not say both. A profile
now declares groups: {name: {required}}, a member writes no required
of its own (schema and validate_schemas refuse one) and load_emulator_
profiles derives it, true when one of its sets is. group takes a name,
a list, or a map from set to rank where the rank differs per set. pom2
is grouped from SystemProfile.cpp and MainWindow.cpp:246-296 at its pin.

One member per required set under --required-only. The pick is the
first the code reads among the held members the region filter leaves,
by rank then declaration order; a set the platform declares a member
of is carried by that declaration. The emulator pack, verify
--emulator, the platform pack, its manifest and verify --platform read
alternatives.required_only_spares or core_file_spares.

variant_group is now selection_slot: files a core chooses between by
a rule other than first found (disc territory for PicoDrive and
Pizza Boy SC, the o2em_bios option, a WebAssembly probe in SWF
Player). Where the code takes any one, the field became a group:
ARMSX1 (ArmSxBackend.java:149-157, name order), ePSXe (load_bios
0x433540-0x433621 of the 2.0.5 Linux x64 binary, one configured path,
HLE when BiosHLE is set), FPse and FPse-NG, DXX-Rebirth's HOGs
(inferno.cpp:472-512). odin and zesarux carried it with no effect.
slot.py compares ranks only between candidates that share a set.
2026-11-09 18:19:32 +01:00

344 lines
13 KiB
YAML

emulator: ARMSX1
type: standalone
core_classification: community_fork
source: "https://github.com/ARMSX2/ARMSX1"
source_branch: "android-compose"
upstream: "https://github.com/allkern/psxe"
profiled_date: "2026-10-26"
source_commit: "61ae0d0797d1d11de00a0b64c116205cb910af77"
core_version: "0.3.18-dma"
version_basis:
kind: file
path: "android/app/build.gradle"
pattern: 'armsxVersionName\s*=\s*\(project\.findProperty\(.armsx\.versionName.\)\s*\?:\s*.([^\x27"]+).'
display_name: "Sony - PlayStation (ARMSX1)"
verification: md5
found_by: content
bios_size: 524288
bios_directory: "bios/"
cores:
- armsx1
systems:
- sony-playstation
notes: |
PlayStation emulator forked from psxe. The released application is the
Android build, com.nanodata.armsx, versionName 0.3.18-dma at this revision.
That build runs the PSX Lab engine from the psxlab tree, through the
ArmSxBackend adapter. The SDL desktop, iOS, UWP, web and PSVita frontends
in the same tree still build on psxe. The release tags 0.1.5 to 0.3.6 all
sit on 99b3081 of the main branch, a 2026-09-05 tree that carries none of
this code. The version is the versionName android-compose builds.
ref: android/app/build.gradle:87-90, PSXLAB-BACKEND.md:1-6
Android accepts a BIOS only through its importer. The setup wizard, the
BIOS manager and its folder scan all ask getBiosInfoFromFd, which requires
exactly 512 KB and then either the OpenBIOS signature at 0x78 or one of 25
MD5 values. A recognised file is copied into <external files>/bios under
its own name. The wizard does not leave the BIOS page until one is
recognised.
ref: android/app/src/main/java/kr/co/iefriends/pcsx2/NativeApp.java:1297-1307,
android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:16-79,
android/app/src/main/java/com/armsx2/ui/onboarding/OnboardingViewModel.kt:183-203,
android/app/src/main/java/com/armsx2/ui/onboarding/OnboardingViewModel.kt:250-255,
android/app/src/main/java/com/armsx2/ui/bios/BiosManagerViewModel.kt:172-187
At launch the adapter lists the 512 KB files of the BIOS folder, the folder
of the BIOS the wizard selected or <external files>/bios, sorted by name.
It loads the file named by Filenames/BIOS, which the host sets to the
per-game BIOS or the wizard's file, else the first of the list, and refuses
anything but 512 KB. No hash is checked at that point, and with no file the
launch stops with "A 512 KiB PlayStation BIOS is required". The settings
store still writes the MD5 match for preferred_model as [bios].resolved_file
and an empty override_file, and the adapter reads neither for the choice.
ref: psxlab/app/src/main/java/dev/psxlab/ArmSxBackend.java:149-168,
psxlab/app/src/main/java/dev/psxlab/ArmSxBackend.java:338,
android/app/src/main/java/kr/co/iefriends/pcsx2/NativeApp.java:124-151,
android/app/src/main/java/kr/co/iefriends/pcsx2/NativeApp.java:225,
android/app/src/main/java/com/armsx2/runtime/MainActivityRuntime.kt:268-269,
android/app/src/main/java/com/armsx2/runtime/MainActivityRuntime.kt:1027-1038,
android/app/src/main/java/com/armsx2/runtime/MainActivityRuntime.kt:2850-2856,
android/app/src/main/java/com/armsx2/config/Ps1SettingsStore.kt:178-197,
android/app/src/main/java/com/armsx2/config/Ps1SettingsStore.kt:416-419
The psxe frontends take [bios].override_file or -b, by default bios.bin
under SDL_GetPrefPath("nanodata", "armsx"), when that file exists.
Otherwise they scan [bios].search_path, bios by default, for .bin and .rom
files and return the first whose stem normalises to preferred_model, else
one named bios.bin, else the override path unchanged. psx_bios_load refuses
anything but 512 KB or the 1 MB SCPH-5903 image and checks no hash.
ref: frontend/config.c:54-57, frontend/config.c:279-352,
frontend/config.c:1384-1405, frontend/config.c:1541-1560,
frontend/main.cpp:2555-2561, psx/dev/bios.c:22-75
groups:
ps-bios:
required: true
files:
- name: "scph1000.bin"
group: ps-bios
priority: 4
description: "SCPH-1000, DTL-H1000 (v1.0)"
region: [japan]
size: 524288
md5: "239665b1a3dade1b5a52c06338011044"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:30"
- name: "scph1001.bin"
group: ps-bios
priority: 6
description: "SCPH-1001, 5003, DTL-H1201, H3001 (v2.2 12-04-95 A)"
region: [north-america, latin-america]
size: 524288
md5: "924e392ed05558ffdb115408c263dccf"
validation: [size, md5]
note: >-
The model both settings files preselect, SCPH-1001. The desktop
scan also reaches this image by its stem.
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:31"
- name: "scph1002a.bin"
group: ps-bios
priority: 9
description: "SCPH-1002, DTL-H1002 (v2.0 05-10-95 E)"
region: [europe, oceania]
size: 524288
md5: "54847e693405ffeb0359c6287434cbef"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:32"
- name: "scph1002b.bin"
group: ps-bios
priority: 10
description: "SCPH-1002, DTL-H1102 (v2.1 07-17-95 E)"
region: [europe, oceania]
size: 524288
md5: "417b34706319da7cf001e76e40136c23"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:33"
- name: "scph1002c.bin"
group: ps-bios
priority: 11
description: "SCPH-1002, DTL-H1202, H3002 (v2.2 12-04-95 E)"
region: [europe, oceania]
size: 524288
md5: "e2110b8a2b97a8e0b857a45d32f7e187"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:34"
- name: "dtlh1100.bin"
group: ps-bios
priority: 1
description: "DTL-H1100 (v2.2 03-06-96 D)"
region: [japan]
size: 524288
md5: "ca5cfc321f916756e3f0effbfaeba13b"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:35"
- name: "scph3000.bin"
group: ps-bios
priority: 16
description: "SCPH-3000, DTL-H1000H (v1.1 01-22-95)"
region: [japan]
size: 524288
md5: "849515939161e62f6b866f6853006780"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:36"
- name: "scph1001_v20.bin"
group: ps-bios
priority: 7
description: "SCPH-1001, DTL-H1001 (v2.0 05-07-95 A)"
region: [north-america, latin-america]
size: 524288
md5: "dc2b9bf8da62ec93e868cfd29f0d067d"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:37"
- name: "scph3500.bin"
group: ps-bios
priority: 17
description: "SCPH-3500 (v2.1 07-17-95 J)"
region: [japan]
size: 524288
md5: "cba733ceeff5aef5c32254f1d617fa62"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:38"
- name: "scph1001_v21.bin"
group: ps-bios
priority: 8
description: "SCPH-1001, DTL-H1101 (v2.1 07-17-95 A)"
region: [north-america, latin-america]
size: 524288
md5: "da27e8b6dab242d8f91a9b25d80c63b8"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:39"
- name: "scph5000.bin"
group: ps-bios
priority: 18
description: "SCPH-5000, DTL-H1200, H3000 (v2.2 12-04-95 J)"
region: [japan]
size: 524288
md5: "57a06303dfa9cf9351222dfcbb4a29d9"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:40"
- name: "scph5500.bin"
group: ps-bios
priority: 19
description: "SCPH-5500 (v3.0 09-09-96 J)"
region: [japan]
size: 524288
md5: "8dd7d5296a650fac7319bce665a6a53c"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:41"
- name: "scph5501.bin"
group: ps-bios
priority: 20
description: "SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)"
region: [north-america, latin-america]
size: 524288
md5: "490f666e1afb15b7362b406ed1cea246"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:42"
- name: "scph5502.bin"
group: ps-bios
priority: 21
description: "SCPH-5502, 5552 (v3.0 01-06-97 E)"
region: [europe, oceania]
size: 524288
md5: "32736f17079d0b2b7024407c39bd3050"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:43"
- name: "scph7000.bin"
group: ps-bios
priority: 22
description: "SCPH-7000, 7500, 9000 (v4.0 08-18-97 J)"
region: [japan]
size: 524288
md5: "8e4c14f567745eff2f0408c8129f72a6"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:44"
- name: "scph7000w.bin"
group: ps-bios
priority: 23
description: "SCPH-7000W (v4.1 11-14-97 A)"
region: [japan]
size: 524288
md5: "b84be139db3ee6cbd075630aa20a6553"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:45"
- name: "scph7001.bin"
group: ps-bios
priority: 24
description: "SCPH-7001, 7501, 7503, 9001, 9003, 9903 (v4.1 12-16-97 A)"
region: [north-america, latin-america]
size: 524288
md5: "1e68c231d0896b7eadcad1d7d8e76129"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:46"
- name: "scph7002.bin"
group: ps-bios
priority: 25
description: "SCPH-7002, 7502, 9002 (v4.1 12-16-97 E)"
region: [europe, oceania]
size: 524288
md5: "b9d9a0286c33dc6b7237bb13cd46fdee"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:47"
- name: "scph100.bin"
group: ps-bios
priority: 3
description: "SCPH-100 (v4.3 03-11-00 J)"
region: [japan]
size: 524288
md5: "8abc1b549a4a80954addc48ef02c4521"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:48"
- name: "scph101_v44.bin"
group: ps-bios
priority: 12
description: "SCPH-101 (v4.4 03-24-00 A)"
region: [north-america, latin-america]
size: 524288
md5: "9a09ab7e49b422c007e6d54d7c49b965"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:49"
- name: "scph101_v45.bin"
group: ps-bios
priority: 13
description: "SCPH-101 (v4.5 05-25-00 A)"
region: [north-america, latin-america]
size: 524288
md5: "6e3735ff4c7dc899ee98981385f6f3d0"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:50"
- name: "scph102_v44.bin"
group: ps-bios
priority: 14
description: "SCPH-102 (v4.4 03-24-00 E)"
region: [europe, oceania]
size: 524288
md5: "b10f5e0e3d9eb60e5159690680b1e774"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:51"
- name: "scph102_v45.bin"
group: ps-bios
priority: 15
description: "SCPH-102 (v4.5 05-25-00 E)"
region: [europe, oceania]
size: 524288
md5: "de93caec13d1a141a40a79f5c86168d6"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:52"
- name: "psxonpsp660.bin"
group: ps-bios
priority: 2
description: "PSP, SCPH-1000R (v4.5 05-25-00 J)"
region: [world]
size: 524288
md5: "c53ca5908936d412331790f4426c6c33"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:53"
- name: "scph1000r.bin"
group: ps-bios
priority: 5
description: "SCPH-1000R (v4.5 05-25-00 J)"
region: [japan]
size: 524288
md5: "476d68a94ccec3b9c8303bbd1daf2810"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:54"
- name: "<expansion>.rom"
required: false
config_key: "paths.expansion_rom"
max_size: 524288
unsourceable: "any expansion port ROM the user points at, under no name and no version the code expects"
description: "Expansion port ROM image"
note: >-
Read by the psxe frontends into the 512 KB region at 0x1f000000, which
is filled with 0xff when no path is set. A path that is set and cannot be
opened fails psx_init. The Android settings only display the key, and
the PSX Lab adapter never reads it.
source_ref: "psx/dev/exp1.c:12-44, psx/dev/exp1.h:9, psx/psx.c:312-313, frontend/config.c:93, frontend/main.cpp:2569-2570, android/app/src/main/java/com/armsx2/ui/settings/Ps1AdvancedTab.kt:102-108"