Files
libretro/emulators/armsx1.yml
T
Abdessamad Derraz 266567b9a0 feat: profile ten more standalone emulators
PS2, PS3, Xbox 360, Atari, C64, BBC Micro and arcade front-ends read
from their own source trees.
2026-08-11 05:34:21 +02:00

110 lines
5.5 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-08-11"
source_commit: "fadd20b6587a291e59b49378a2428358c6663b8c"
core_version: "0.1.3"
display_name: "Sony - PlayStation (ARMSX1)"
verification: existence
bios_size: 524288
bios_directory: "bios/"
cores:
- armsx1
systems:
- sony-playstation
notes: |
PlayStation emulator forked from psxe, rebuilt around SDL2 frontends and a
Dear ImGui fullscreen shell. Desktop, Android, iOS, UWP, WebAssembly and
PSVita builds come out of one tree. The Android application is
com.nanodata.armsx with the activity com.armsx2.Main, and its Compose
launcher hosts the same core in process.
ref: README.md:1-2, android/app/build.gradle:71-79,
android/app/src/main/AndroidManifest.xml:78-92
A BIOS image is required. Boot stops before a session exists when no path
resolves, and again when the file cannot be read. Skip BIOS does not change
that: the image runs from reset and the hook only takes over at the shell
entry point, once the kernel is built.
ref: frontend/main.cpp:2529-2549, psx/psx.c:249-252, psx/fastboot.h:45,
psx/fastboot.c:225-239
psxe_cfg_get_bios_path answers in three steps: the override file when it
exists, then a scan of the search folder, then the override path unchanged.
The override is [bios].override_file or -b and defaults to bios.bin under the
preference path SDL_GetPrefPath("nanodata", "armsx"); the search folder is
[bios].search_path or -B and defaults to the relative path bios.
ref: frontend/config.c:1540-1559, frontend/config.c:1385-1404,
frontend/config.c:677-683, frontend/config.c:54-57
The scan reads that folder once, keeps .bin and .rom, and returns the entry
named bios.bin. Its other branch compares [bios].preferred_model against each
filename through a normaliser that drops every non-alphanumeric character and
lowercases the rest, applied to the name including its extension, so
scph1001.bin normalises to scph1001bin and no model value equals it. A name
carrying no extension, which would, is dropped by the extension filter first.
ref: frontend/config.c:292-357, frontend/config.c:226-247,
frontend/config.c:249-260
Nothing identifies the image beyond that. No name table, no size test, no
hash. The loader takes the file's own length, allocates it, and the bus maps
the device from 0x1fc00000 over that same length, which is how the 1 MB
SCPH-5903 image stays addressable in full.
ref: psx/dev/bios.c:21-54, psx/bus.c:50-54, psx/dev/bios.h:8-10
preferred_model carries 22 values, SCPH-1000 through SCPH-102C, printed by
--help-model and mirrored by the Android model picker.
ref: frontend/config.c:177-200,
android/app/src/main/java/com/armsx2/config/Ps1Settings.kt:416-423
On Android the preference path is the application files directory, so
settings.toml and the default bios.bin sit there. The BIOS picker copies the
chosen dump to user_bios.bin and writes its absolute path into
[bios].override_file. EmulatorActivity passes --bios <files>/bios.bin when
the package carries an assets/bios.bin, and the in-process launcher repeats
that check with stat; release 0.1.3 ships no such asset.
ref: android/app/src/main/java/com/armsx2/core/Ps1Config.kt:20-41,
android/app/src/main/java/com/armsx2/ui/settings/Ps1BiosTab.kt:38-48,
android/app/src/main/java/com/nanodata/armsx/EmulatorActivity.java:58-61,
android/app/src/main/java/com/nanodata/armsx/EmulatorActivity.java:95-99,
frontend/android_jni.cpp:1708-1743, ARMSX1-0.1.3-release.apk assets
The remaining paths the core opens are per game, and are written by the
emulator or picked by the user: memory cards, created blank at first use;
save states, rewind snapshots and screenshots; a GameShark .cht catalogue
named by [cheats].cheats_file; and content-addressed PNG packs under the
replacements folder of [video].texture_dir.
ref: psx/dev/mcd.c:139-154, psx/cheats.c:346-390, psx/texrep.c:846-848
files:
- name: scph1001.bin
agnostic: true
required: true
min_size: 524288
max_size: 1048576
description: "PlayStation BIOS image"
note: >-
Any image is accepted, whatever its name and length: the file is read
whole and mapped at its own size. 524288 is the region psx_bios_init
declares before the load, and 1048576 the SCPH-5903 image the loader
names as the exception. The folder scan reaches an image only under the
name bios.bin; [bios].override_file, -b and the Android picker open a
path directly.
source_ref: "psx/dev/bios.c:21-54, psx/dev/bios.h:8-10, frontend/config.c:292-357, frontend/config.c:1540-1559, frontend/main.cpp:2529-2535"
- 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 into the 512 KB region at 0x1f000000, which is filled with 0xff when
no path is set. Named by [paths].expansion_rom, -e, or the Advanced tab of
the Android settings. A path that is set and cannot be opened fails
psx_init and stops the boot.
source_ref: "psx/dev/exp1.c:12-44, psx/dev/exp1.h:8-10, psx/psx.c:260-261, frontend/config.c:681, frontend/main.cpp:1906, android/app/src/main/java/com/armsx2/ui/settings/Ps1AdvancedTab.kt:96-100"