Files
libretro/emulators/armsx1.yml
T
Abdessamad Derraz 684b643b8a feat: profile armsx1 0.3.6 on swanstation
The Android build now runs libretro SwanStation instead of psxe. Its importer accepts only 512 KB images whose MD5 is in a 25-entry table (Ps1BiosProbe.java:29-55), so the agnostic scph1001.bin entry becomes those 25 identified images. psxe now refuses sizes other than 512 KB and 1 MB (psx/dev/bios.c:44-49).
2026-10-26 23:20:43 +01:00

346 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: "d96a5b8ad6ccccb40a431488aa89b06f0318c217"
core_version: "0.3.6"
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, version 0.3.6 at this revision. That
build runs libretro SwanStation, checked out as the core/swanstation
submodule at dd4805619bbbfc6e0d1776372cb16377088b448e and driven by an
in-process adapter, and no longer the psxe engine. 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:72-75, SWANSTATION-DEV.md:10-19
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 taken from SwanStation's table. 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:1252-1262,
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
Before each launch the settings store walks the BIOS folder, the search
folder and the selected file's folder, each sorted by path, then the older
user_bios.bin and bios.bin imports, and keeps the first 512 KB file whose
MD5 entry names the preferred_model console, SCPH-1001 by default. It writes
that path as [bios].resolved_file, and the adapter hands it to SwanStation
as the BIOS path of all three regions, relative to the system directory,
which is the folder of the selected BIOS or <external files>/bios.
ref: android/app/src/main/java/com/armsx2/config/Ps1SettingsStore.kt:176-195,
android/app/src/main/java/com/armsx2/core/Ps1BiosSelection.java:17-64,
android/app/src/main/java/com/armsx2/config/Ps1Settings.kt:32-33,
android/app/src/main/java/kr/co/iefriends/pcsx2/NativeApp.java:108-123,
native/swanstation/runtime.cpp:243-247, native/swanstation/runtime.cpp:255
No match leaves the path empty, and SwanStation scans the system directory
itself: files of 512 KB, 4 MB or 0x3E66F0 bytes, the first 512 KB hashed
against its 27-entry table, the first image of the console region returned,
otherwise the first known image of another region. An unknown image is
never used, and with nothing found the core boots its built-in OpenBIOS.
The region is Auto unless console.region says pal or ntsc, and Auto follows
the disc, NTSC-U without one.
ref: swanstation src/core/host_interface.cpp:100-194,
swanstation src/core/bios.cpp:28-104,
swanstation src/core/system.cpp:592-645,
swanstation src/core/system.cpp:677-682,
native/swanstation/runtime.cpp:209
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:1378-1399, frontend/config.c:1535-1554,
frontend/main.cpp:2555-2561, psx/dev/bios.c:22-75
files:
- name: "scph1000.bin"
description: "SCPH-1000, DTL-H1000 (v1.0)"
region: [japan]
required: false
variant_group: "psx-bios"
size: 524288
md5: "239665b1a3dade1b5a52c06338011044"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:30"
- name: "scph1001.bin"
description: "SCPH-1001, 5003, DTL-H1201, H3001 (v2.2 12-04-95 A)"
region: [north-america, latin-america]
required: false
variant_group: "psx-bios"
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"
description: "SCPH-1002, DTL-H1002 (v2.0 05-10-95 E)"
region: [europe, oceania]
required: false
variant_group: "psx-bios"
size: 524288
md5: "54847e693405ffeb0359c6287434cbef"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:32"
- name: "scph1002b.bin"
description: "SCPH-1002, DTL-H1102 (v2.1 07-17-95 E)"
region: [europe, oceania]
required: false
variant_group: "psx-bios"
size: 524288
md5: "417b34706319da7cf001e76e40136c23"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:33"
- name: "scph1002c.bin"
description: "SCPH-1002, DTL-H1202, H3002 (v2.2 12-04-95 E)"
region: [europe, oceania]
required: false
variant_group: "psx-bios"
size: 524288
md5: "e2110b8a2b97a8e0b857a45d32f7e187"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:34"
- name: "dtlh1100.bin"
description: "DTL-H1100 (v2.2 03-06-96 D)"
region: [japan]
required: false
variant_group: "psx-bios"
size: 524288
md5: "ca5cfc321f916756e3f0effbfaeba13b"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:35"
- name: "scph3000.bin"
description: "SCPH-3000, DTL-H1000H (v1.1 01-22-95)"
region: [japan]
required: false
variant_group: "psx-bios"
size: 524288
md5: "849515939161e62f6b866f6853006780"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:36"
- name: "scph1001_v20.bin"
description: "SCPH-1001, DTL-H1001 (v2.0 05-07-95 A)"
region: [north-america, latin-america]
required: false
variant_group: "psx-bios"
size: 524288
md5: "dc2b9bf8da62ec93e868cfd29f0d067d"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:37"
- name: "scph3500.bin"
description: "SCPH-3500 (v2.1 07-17-95 J)"
region: [japan]
required: false
variant_group: "psx-bios"
size: 524288
md5: "cba733ceeff5aef5c32254f1d617fa62"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:38"
- name: "scph1001_v21.bin"
description: "SCPH-1001, DTL-H1101 (v2.1 07-17-95 A)"
region: [north-america, latin-america]
required: false
variant_group: "psx-bios"
size: 524288
md5: "da27e8b6dab242d8f91a9b25d80c63b8"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:39"
- name: "scph5000.bin"
description: "SCPH-5000, DTL-H1200, H3000 (v2.2 12-04-95 J)"
region: [japan]
required: false
variant_group: "psx-bios"
size: 524288
md5: "57a06303dfa9cf9351222dfcbb4a29d9"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:40"
- name: "scph5500.bin"
description: "SCPH-5500 (v3.0 09-09-96 J)"
region: [japan]
required: false
variant_group: "psx-bios"
size: 524288
md5: "8dd7d5296a650fac7319bce665a6a53c"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:41"
- name: "scph5501.bin"
description: "SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)"
region: [north-america, latin-america]
required: false
variant_group: "psx-bios"
size: 524288
md5: "490f666e1afb15b7362b406ed1cea246"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:42"
- name: "scph5502.bin"
description: "SCPH-5502, 5552 (v3.0 01-06-97 E)"
region: [europe, oceania]
required: false
variant_group: "psx-bios"
size: 524288
md5: "32736f17079d0b2b7024407c39bd3050"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:43"
- name: "scph7000.bin"
description: "SCPH-7000, 7500, 9000 (v4.0 08-18-97 J)"
region: [japan]
required: false
variant_group: "psx-bios"
size: 524288
md5: "8e4c14f567745eff2f0408c8129f72a6"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:44"
- name: "scph7000w.bin"
description: "SCPH-7000W (v4.1 11-14-97 A)"
region: [japan]
required: false
variant_group: "psx-bios"
size: 524288
md5: "b84be139db3ee6cbd075630aa20a6553"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:45"
- name: "scph7001.bin"
description: "SCPH-7001, 7501, 7503, 9001, 9003, 9903 (v4.1 12-16-97 A)"
region: [north-america, latin-america]
required: false
variant_group: "psx-bios"
size: 524288
md5: "1e68c231d0896b7eadcad1d7d8e76129"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:46"
- name: "scph7002.bin"
description: "SCPH-7002, 7502, 9002 (v4.1 12-16-97 E)"
region: [europe, oceania]
required: false
variant_group: "psx-bios"
size: 524288
md5: "b9d9a0286c33dc6b7237bb13cd46fdee"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:47"
- name: "scph100.bin"
description: "SCPH-100 (v4.3 03-11-00 J)"
region: [japan]
required: false
variant_group: "psx-bios"
size: 524288
md5: "8abc1b549a4a80954addc48ef02c4521"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:48"
- name: "scph101_v44.bin"
description: "SCPH-101 (v4.4 03-24-00 A)"
region: [north-america, latin-america]
required: false
variant_group: "psx-bios"
size: 524288
md5: "9a09ab7e49b422c007e6d54d7c49b965"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:49"
- name: "scph101_v45.bin"
description: "SCPH-101 (v4.5 05-25-00 A)"
region: [north-america, latin-america]
required: false
variant_group: "psx-bios"
size: 524288
md5: "6e3735ff4c7dc899ee98981385f6f3d0"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:50"
- name: "scph102_v44.bin"
description: "SCPH-102 (v4.4 03-24-00 E)"
region: [europe, oceania]
required: false
variant_group: "psx-bios"
size: 524288
md5: "b10f5e0e3d9eb60e5159690680b1e774"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:51"
- name: "scph102_v45.bin"
description: "SCPH-102 (v4.5 05-25-00 E)"
region: [europe, oceania]
required: false
variant_group: "psx-bios"
size: 524288
md5: "de93caec13d1a141a40a79f5c86168d6"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:52"
- name: "psxonpsp660.bin"
description: "PSP, SCPH-1000R (v4.5 05-25-00 J)"
region: [world]
required: false
variant_group: "psx-bios"
size: 524288
md5: "c53ca5908936d412331790f4426c6c33"
validation: [size, md5]
source_ref: "android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:53"
- name: "scph1000r.bin"
description: "SCPH-1000R (v4.5 05-25-00 J)"
region: [japan]
required: false
variant_group: "psx-bios"
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 SwanStation 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"