feat: profile ten more standalone emulators

PS2, PS3, Xbox 360, Atari, C64, BBC Micro and arcade front-ends read
from their own source trees.
This commit is contained in:
Abdessamad Derraz committed 2026-08-11 05:34:21 +02:00
1 parent ca3a91d65b
commit 266567b9a0
10 files changed
+4855

No files matched your search

+173
View File
@@ -0,0 +1,173 @@
emulator: AetherSX2
type: standalone
core_classification: community_fork
bios_mode: agnostic
source: "https://github.com/Trixarian/AetherSX2"
upstream: "https://github.com/PCSX2/pcsx2"
profiled_date: "2026-08-11"
source_commit: "1d1f795dfc70e38da67724c7298779260f513889"
core_version: "1.5-3939"
display_name: "Sony - PlayStation 2 (AetherSX2)"
cores:
- aethersx2
- aethersx2-sa
systems:
- sony-playstation-2
bios_directory: "bios/"
resources_directory: "resources/"
notes: |
PlayStation 2 emulator for ARM, built on PCSX2 and carrying its own AArch64
recompilers. The application itself is closed source; the PCSX2-derived files
were released separately as an LGPL tarball in which pcsx2/libAetherSX2.a
holds the parts that stayed closed, and that drop sits on an earlier code line
than any released build, with no Vulkan renderer in its GS tree and the older
asset set. Every name, path and size below was read from
the three builds that were distributed: v1.5-3939 for Apple Silicon macOS,
v1.5-3668 for Android, and v1.5-3606 for AArch64 Linux, which ROCKNIX
repackages as aethersx2-sa. The three agree throughout.
ref: aethersx2/pcsx2/CMakeLists.txt:1585, aethersx2/pcsx2/Mdec.cpp:1
A BIOS image is required and boot stops without one. It belongs in the bios
folder of the data directory, Library/Application Support/AetherSX2 on macOS
and Android/data/xyz.aethersx2.android on Android, and the Folders section of
PCSX2.ini names another path when set.
ref: aethersx2 v1.5-3939 MacOS/AetherSX2, aethersx2 archive/desktop/mac/README.md
Detection is by content. The scan lists the BIOS folder with a *.* mask, keeps
files between 4 and 8 MB, and accepts an image whose romdir carries a RESET
entry followed by a readable ROMVER; the fifth ROMVER character gives the
zone among T10K, Test, Japan, USA, Europe, HK, Free and China. An image named
in the configuration is opened at its own path, without the size filter and
without the romdir test. No name and no hash is matched anywhere. The image is
read into the 4 MB ROM region and truncated to it, and one shorter than
2465792 bytes turns off the OSDSys parameter HLE.
ref: aethersx2/pcsx2/ps2/BiosTools.cpp:27-28,
aethersx2/pcsx2/ps2/BiosTools.cpp:62-175,
aethersx2/pcsx2/ps2/BiosTools.cpp:235-260,
aethersx2/pcsx2/ps2/BiosTools.cpp:272-316,
aethersx2 v1.5-3606 usr/share/aethersx2 0xa45ffc,
aethersx2 v1.5-3939 MacOS/AetherSX2 0x1006e7650
Companions derive from the selected image. rom1 and rom2 are appended to the
full name first, then substituted for the existing extension, so an image at
ps2-0230a-20080220.bin is followed by ps2-0230a-20080220.bin.rom1 then
ps2-0230a-20080220.rom1. The nvm and the mec are read at the substituted
extension only, and both are written with defaults when they are absent or
too short.
ref: aethersx2/pcsx2/ps2/BiosTools.cpp:192-218,
aethersx2/pcsx2/CDVD/CDVD.cpp:120-144,
aethersx2/pcsx2/CDVD/CDVD.cpp:158-197
The network adapter opens eeprom.dat and flash.dat from the working directory,
standing in a compiled-in image for the first and a blank card for the second.
DEV9hdd.raw is the default name of the empty disk image its settings page
writes.
ref: aethersx2/pcsx2/DEV9/DEV9.cpp:109-161,
aethersx2/pcsx2/DEV9/flash.cpp:76-104
An IRX named in the configuration is read into the ROM region at 0x3C0000 at
boot. The field is empty by default and names no file of its own.
ref: aethersx2/pcsx2/ps2/BiosTools.cpp:220-233,
aethersx2/pcsx2/ps2/BiosTools.cpp:327-328
Read from the build's own resources folder and versioned with it: the shader
sources each GS backend compiles at startup, the OSD and fullscreen interface
fonts, the flag and placeholder textures, and the achievement notification
sounds. The macOS build keeps the folder at AetherSX2.app/Contents/Resources
and adds its Metal libraries; the Android build carries the shaders, fonts,
icons and sounds as APK assets and draws its own interface.
ref: aethersx2 v1.5-3939 AetherSX2.app/Contents/Resources,
aethersx2 v1.5-3668 xyz.aethersx2.android assets
files:
- name: ps2-0230a-20080220.bin
path: bios/ps2-0230a-20080220.bin
required: true
min_size: 4194304
max_size: 8388608
validation: [size]
description: "PS2 BIOS image"
note: "Any image whose romdir holds RESET and ROMVER is accepted, whatever its name. The 4 to 8 MB range gates the folder scan; an image named in the configuration skips both that range and the romdir test."
source_ref: "aethersx2/pcsx2/ps2/BiosTools.cpp:27-28, aethersx2/pcsx2/ps2/BiosTools.cpp:235-260, aethersx2/pcsx2/ps2/BiosTools.cpp:272-316, aethersx2 v1.5-3606 usr/share/aethersx2 0xa45ffc"
- name: ps2-0230a-20080220.rom1
path: bios/ps2-0230a-20080220.rom1
required: false
max_size: 4194304
description: "DVD player ROM"
note: "Tried as {bios}.rom1 then {biosbase}.rom1. Read at 0x2404000 of the EE memory block and truncated to 4 MB. Logged and skipped when absent."
source_ref: "aethersx2/pcsx2/ps2/BiosTools.cpp:192-218, aethersx2 v1.5-3606 usr/share/aethersx2 0xa45b44, aethersx2 v1.5-3939 MacOS/AetherSX2 0x1006e7184"
- name: ps2-0230a-20080220.rom2
path: bios/ps2-0230a-20080220.rom2
required: false
max_size: 524288
description: "Chinese ROM extension"
note: "Same two-step naming as rom1. Read at 0x2804000 of the EE memory block and truncated to 512 KB. Only present on Chinese region consoles."
source_ref: "aethersx2/pcsx2/ps2/BiosTools.cpp:192-218, aethersx2 v1.5-3606 usr/share/aethersx2 0xa45d50, aethersx2 v1.5-3939 MacOS/AetherSX2 0x1006e7338"
- name: ps2-0230a-20080220.nvm
path: bios/ps2-0230a-20080220.nvm
required: false
hle_fallback: true
size: 1024
description: "Console NVRAM"
note: "Read at the BIOS path with the extension replaced by nvm. Carries the console id, the iLink id, the language and the OSD configuration. A 1024 byte image is written when the file is missing or shorter, zeroed except for a fixed iLink id and the language defaults of the BIOS region."
source_ref: "aethersx2/pcsx2/CDVD/CDVD.cpp:158-197, aethersx2 v1.5-3606 usr/share/aethersx2 0x95d8e0"
- name: ps2-0230a-20080220.mec
path: bios/ps2-0230a-20080220.mec
required: false
hle_fallback: true
size: 4
description: "Mechacon version"
note: "Read at the BIOS path with the extension replaced by mec. Written as 03 06 02 00 when the file is missing or shorter than 4 bytes."
source_ref: "aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, aethersx2 v1.5-3606 usr/share/aethersx2 0x95e7fc"
- name: eeprom.dat
required: false
hle_fallback: true
size: 64
description: "DEV9 EEPROM"
note: "Opened from the working directory when the network adapter starts and mapped over 64 bytes. A compiled-in image stands in when the file is missing or cannot be mapped."
source_ref: "aethersx2/pcsx2/DEV9/DEV9.cpp:146-161, aethersx2 v1.5-3606 usr/share/aethersx2 0x97ac90"
- name: flash.dat
required: false
hle_fallback: true
max_size: 8650752
description: "DEV9 SmartMedia flash image"
note: "Opened from the working directory at network adapter init and read as 1024 blocks of 16 pages of 512 bytes plus 16 ECC bytes. The card is filled with 0xFF when the file is absent, and a short read is logged."
source_ref: "aethersx2/pcsx2/DEV9/flash.cpp:76-104, aethersx2 v1.5-3606 usr/share/aethersx2 0x97ac40"
- name: GameIndex.yaml
path: resources/GameIndex.yaml
required: false
bundled: true
description: "Game database"
note: "Read from the resources folder, keyed by serial, and carrying the per-game fixes, patches and settings overrides. Parsed into gamedb.cache in the cache folder and reparsed whenever the modification time moves."
source_ref: "aethersx2/pcsx2/GameDatabase.cpp:35-36, aethersx2/pcsx2/GameDatabase.cpp:348-352, aethersx2/pcsx2/GameDatabase.cpp:523-535"
- name: cheats_ws.zip
path: resources/cheats_ws.zip
required: false
description: "Widescreen patch archive"
note: "Per-game pnach entries matched on the disc CRC, loaded when widescreen patches are enabled. The cheats_ws folder takes precedence and the archive is skipped when it holds a match. Shipped by the Linux and Android builds; the macOS build looks for it without carrying one."
source_ref: "aethersx2/pcsx2/Patch.cpp:202-231, aethersx2 v1.5-3939 MacOS/AetherSX2"
- name: cheats_ni.zip
path: resources/cheats_ni.zip
required: false
description: "No-interlacing patch archive"
note: "Same form as cheats_ws.zip, loaded when no-interlacing patches are enabled, with the cheats_ni folder taking precedence. Shipped by the Linux and Android builds; the macOS build looks for it without carrying one."
source_ref: "aethersx2/pcsx2/Patch.cpp:202-231, aethersx2 v1.5-3939 MacOS/AetherSX2"
- name: game_controller_db.txt
path: resources/game_controller_db.txt
required: false
bundled: true
description: "SDL controller mapping database"
note: "Read from the resources folder and fed to SDL at input init. SDL falls back to its built-in mappings when the file cannot be read."
source_ref: "aethersx2/pcsx2/PAD/Host/SDLJoystick.cpp:46, aethersx2 v1.5-3939 AetherSX2.app/Contents/Resources"
File diff suppressed because it is too large. Load diff
+272
View File
@@ -0,0 +1,272 @@
emulator: aPS3e
type: standalone
core_classification: community_fork
source: "https://github.com/aenu1/aps3e"
source_branch: main4
upstream: "https://github.com/RPCS3/rpcs3"
profiled_date: "2026-08-11"
source_commit: "65ec7583bb8c1ff8b5e516c8f8c8d006d9cae3c2"
upstream_commit: "40e9ee5af0de7ca31691c58eebe64ba205a2900b"
core_version: "2.41"
display_name: "Sony - PlayStation 3 (aPS3e)"
cores:
- aps3e
systems:
- sony-playstation-3
notes: |
PlayStation 3 emulator for Android, distributed on Google Play as aenu.aps3e
and aenu.aps3e.premium. RPCS3 is vendored whole under app/src/main/cpp/rpcs3
rather than pulled as a submodule, and a JNI layer of about six thousand lines
replaces the Qt front end. The vendored tree reports itself as 0.0.41-alpha.1
at RPCS3 commit 40e9ee5a.
ref: aps3e/app/src/main/cpp/rpcs3/rpcs3/git-version.h:3,
aps3e/app/src/main/cpp/rpcs3/rpcs3/rpcs3_version.cpp:29
Source drops land on successive branches, not on the default one. Release 2.41
of 2026-07-30 is the commit titled 2.41 at the head of main4; the lightweight
tags 2.39, 2.40 and 2.41 all sit on the head of main2, an April tree that
predates every one of those releases and whose generated git-version.h was
never filled in. main4 is the tree read here. No versionName is usable either:
the only gradle file committed is app/build.gradle.bak, which carries the
placeholder 1.19a and is renamed and completed with the signing block at build
time.
ref: aps3e/README.md, aps3e/app/build.gradle.bak:16
Emulator paths derive from APS3E_DATA_DIR, set by the Java layer to the
external files directory of the package. The config directory holds dev_flash,
dev_hdd0, custom_cfg and the global config.yml; caches live beside it. The
custom font directory sits at the data root, and the custom GPU driver
directory sits in internal storage because the external filesystem cannot
carry an executable mapping.
ref: aps3e/app/src/main/cpp/aps3e_rp3_impl.cpp:127-133,
aps3e/app/src/main/java/aenu/aps3e/Application.java:21-64
The PS3 firmware is required and nothing runs without it. Three independent
gates enforce it: the game list refuses to launch an entry when the marker
config/dev_flash/.installed is absent, the quick start wizard keeps its Next
button disabled on the firmware page until that marker exists, and the boot
path itself returns firmware_missing when dev_flash/sys/external/liblv2.sprx
is not a file. The third gate covers the intent launched directly against
EmulatorActivity, which does not pass through the game list. The shipped
configuration leaves Libraries Control empty, so liblv2.sprx keeps its default
entry in the module list and the check fires.
ref: aps3e/app/src/main/java/aenu/aps3e/MainActivity.java:143-145,
aps3e/app/src/main/java/aenu/aps3e/MainActivity.java:187-190,
aps3e/app/src/main/java/aenu/aps3e/QuickStartActivity.java:316-318,
aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/System.cpp:2747-2767,
aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/Cell/lv2/sys_prx.cpp:86,
aps3e/app/src/main/assets/config/config.yml
Overlay text is drawn from a font list chosen by the Font File Selection
setting. From Firmware, the default, asks for Arial.ttf, arial.ttf, the
Android system face at /system/fonts/Roboto-Regular.ttf and then
SCE-PS3-VR-R-LATIN.TTF for Latin, SCE-PS3-SR-R-JPN.TTF and SCE-PS3-DH-R-CGB.TTF
for the CJK base, and SCE-PS3-YG-R-KOR.TTF for Hangul. The SCE faces are
resolved against dev_flash/data/font and dev_flash/data/font/SONY-CC, so they
come from the firmware rather than from a separate download. Custom points all
three classes at one file and reverts to From Firmware when that path no
longer exists.
ref: aps3e/app/src/main/cpp/aps3e_rp3_impl.cpp:192-222,
aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/RSX/Overlays/overlay_fonts.cpp:113-118
Vulkan is reached through a loader chosen before the emulator starts. The
global config YAML is read directly for Use Custom Driver and Custom Driver
Library Path, and the named library is dlopened when both are set and the path
exists; otherwise the system libvulkan.so is used. Drivers are imported either
as a bare shared object or as a zip whose meta.json names the library.
ref: aps3e/app/src/main/cpp/aps3e_emu.cpp:875-899,
aps3e/app/src/main/cpp/vkapi.cpp:21,
aps3e/app/src/main/java/aenu/aps3e/EmulatorSettings.java:1229-1324
Encrypted disc images are supported by a loader that has no counterpart in the
desktop code line. Launching an ISO makes the Java layer look for a sidecar key
beside it, trying the base name with .dkey and then with .key, and hand the
descriptor down beside the image. The key is accepted at exactly 32 bytes, read
as a hex string, or exactly 16 bytes, read as raw bytes, and installed as an
AES-128 decryption context. A 3k3y watermark at offset 0xF70 is recognised
separately and needs no key.
ref: aps3e/app/src/main/java/aenu/aps3e/Utils.java:170-190,
aps3e/app/src/main/java/aenu/aps3e/EmulatorActivity.java:147-153,
aps3e/app/src/main/cpp/rpcs3/rpcs3/Loader/iso.cpp:354-399,
aps3e/app/src/main/cpp/rpcs3/rpcs3/Loader/iso.cpp:508-554
One import entry point takes EDAT, RAP and PKG. A RAP is copied verbatim into
the exdata folder of user 00000001 and rejected unless it is exactly 16 bytes.
An EDAT is parsed for its NPD header, rejected below 0x90 bytes or without the
NPD magic, and written to the same folder under the content id the header
carries. A PKG goes through the package reader and lands in dev_hdd0.
ref: aps3e/app/src/main/java/aenu/aps3e/MainActivity.java:594-605,
aps3e/app/src/main/java/aenu/aps3e/Emulator.java:820-844,
aps3e/app/src/main/cpp/aps3e_emu.cpp:801-829,
aps3e/app/src/main/cpp/aps3e_emu.cpp:783-793
patch.yml, compatibility_table.json and database_config.json ship inside the
APK as assets and are not user supplied.
ref: aps3e/app/src/main/assets
files:
- name: PS3UPDAT.PUP
required: true
storage: large_file
description: "PS3 system software update package"
note: >-
Selected through the file picker and read from a descriptor. The PUP object
rejects an empty file, a wrong magic, a declared size the file does not
reach, an unreadable entry table and a failed entry hash. Segment 0x300
carries the installation package database and segment 0x100 the version
string; the packages whose names contain dev_flash_ are decrypted with the
SCEPKG keys and their inner TARs extracted over dev_flash. The Java layer
creates dev_flash/.installed once the native call returns true. No digest
of the file itself is compared against anything.
source_ref: "aps3e/app/src/main/cpp/aps3e_emu.cpp:587-757, aps3e/app/src/main/cpp/emulator_aps3e.cpp:1045, aps3e/app/src/main/java/aenu/aps3e/MainActivity.java:538-570, aps3e/app/src/main/res/values/strings.xml:108-110"
- name: "<game>.dkey"
aliases: ["<game>.key"]
required: false
size_options: [16, 32]
validation: [size]
unsourceable: "per-disc AES-128 key named after the image it decrypts, one per title, carried by disc dump catalogues rather than by the emulator"
description: "Redump disc decryption key read beside an encrypted ISO"
note: >-
Resolved as a sidecar of the image being launched, .dkey first then .key,
and passed down as a second descriptor. 32 bytes are read as a hex string
and converted, 16 bytes are taken as raw; any other length fails the key
check. An image whose odd regions are encrypted does not boot without it.
source_ref: "aps3e/app/src/main/java/aenu/aps3e/Utils.java:170-190, aps3e/app/src/main/cpp/rpcs3/rpcs3/Loader/iso.cpp:354-399, aps3e/app/src/main/cpp/rpcs3/rpcs3/Loader/iso.cpp:850-870"
- name: "<content_id>.rap"
required: false
size: 16
validation: [size]
unsourceable: "per-title activation licence tied to the account that bought the content, never distributed generically"
description: "PSN content licence"
note: >-
Imported through the EDAT/RAP/PKG entry and copied byte for byte into
dev_hdd0/home/00000001/exdata under the name it was given. The import is
refused unless the source is exactly 16 bytes. SELF decryption looks the
matching file up in that folder by content id, with a lowercase extension.
source_ref: "aps3e/app/src/main/java/aenu/aps3e/MainActivity.java:596-600, aps3e/app/src/main/java/aenu/aps3e/Emulator.java:820-844, aps3e/app/src/main/cpp/rpcs3/rpcs3/Crypto/unself.cpp:1271-1286, aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/system_utils.cpp:391"
- name: "<content_id>.edat"
required: false
min_size: 144
validation: [size]
unsourceable: "per-content licensed data file, shipped with the content it belongs to"
description: "Encrypted data file for licensed content"
note: >-
Imported through the same entry. The NPD header is read and the file
refused below 0x90 bytes or when the magic is not NPD, then written whole
to dev_hdd0/home/00000001/exdata under the content id the header declares.
source_ref: "aps3e/app/src/main/java/aenu/aps3e/MainActivity.java:601-605, aps3e/app/src/main/cpp/aps3e_emu.cpp:801-829, aps3e/app/src/main/cpp/emulator_aps3e.cpp:1052, aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/system_utils.cpp:413"
- name: "<font>.ttf"
aliases: ["<font>.ttc", "<font>.otf"]
required: false
config_key: "Miscellaneous/Custom Font File Path"
unsourceable: "any TrueType, TrueType collection or OpenType face the user picks, with no name or version the code expects"
description: "Replacement face for the overlay text"
note: >-
Copied into the font directory at the data root by the picker, its absolute
path stored in the configuration. Used for the default, CJK base and Hangul
classes at once, and only while Font File Selection is Custom. The setting
reverts to From Firmware when the stored path no longer resolves, so the
firmware faces cover the absence.
source_ref: "aps3e/app/src/main/java/aenu/aps3e/EmulatorSettings.java:1326-1346, aps3e/app/src/main/cpp/aps3e_rp3_impl.cpp:203-215, aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/system_config.h:401-402"
- name: "<driver>.so"
aliases: ["<driver>.zip"]
required: false
config_key: "Video/Vulkan/Custom Driver Library Path"
unsourceable: "third-party Vulkan driver built for one GPU family, not an emulator artefact"
description: "Replacement Vulkan driver"
note: >-
Imported as a shared object, or as a zip whose meta.json names the library
to keep, and unpacked into the driver directory in internal storage. Read
from the global config YAML before the emulator initialises and dlopened in
place of the system loader. The system libvulkan.so is used when Use Custom
Driver is off, the path is empty, or the file is gone.
source_ref: "aps3e/app/src/main/java/aenu/aps3e/EmulatorSettings.java:1229-1324, aps3e/app/src/main/cpp/aps3e_emu.cpp:875-899, aps3e/app/src/main/cpp/vkapi.cpp:21, aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/system_config.h:209-211"
# Layout produced by extracting PS3UPDAT.PUP, and the paths this tree reads from it.
dev_flash:
path: "config/dev_flash/"
source_ref: "aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/vfs_config.h:15, aps3e/app/src/main/cpp/aps3e_rp3_impl.cpp:127-129"
note: >-
Mounted at /dev_flash and rooted at the config directory. Written only by the
firmware installer, which extracts the dev_flash_ packages of the PUP into it.
sys_external:
path: "dev_flash/sys/external/"
source_ref: "aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/Cell/PPUModule.cpp:2608-2610, aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/Cell/lv2/sys_prx.cpp:207"
note: >-
Firmware SPRX modules. liblv2.sprx gates the boot and pulls the rest in;
each module can be forced to LLE or HLE through Libraries Control, which
the shipped configuration leaves empty. flashATRAC.pic is named by
cellSysmodule for the ATRAC module path.
critical_file: "liblv2.sprx"
sys_internal:
path: "dev_flash/sys/internal/"
source_ref: "aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/Cell/lv2/sys_prx.cpp:33-34"
note: "Internal modules, libfs_utility_init.sprx among them."
fonts:
path: "dev_flash/data/font/"
source_ref: "aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/Cell/Modules/cellFont.cpp:226-241, aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/Cell/Modules/cellFont.cpp:281, aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/RSX/Overlays/overlay_fonts.cpp:117-118"
note: >-
Faces cellFontOpenFontset maps by type, and the directory the overlay
searches for its own list. A fontset the emulator does not implement falls
back to SCE-PS3-RD-R-LATIN.TTF.
files:
- "SCE-PS3-RD-R-LATIN.TTF"
- "SCE-PS3-RD-L-LATIN.TTF"
- "SCE-PS3-RD-B-LATIN.TTF"
- "SCE-PS3-RD-R-LATIN2.TTF"
- "SCE-PS3-RD-L-LATIN2.TTF"
- "SCE-PS3-RD-B-LATIN2.TTF"
- "SCE-PS3-MT-R-LATIN.TTF"
- "SCE-PS3-NR-R-JPN.TTF"
- "SCE-PS3-NR-L-JPN.TTF"
- "SCE-PS3-NR-B-JPN.TTF"
- "SCE-PS3-YG-R-KOR.TTF"
- "SCE-PS3-SR-R-LATIN.TTF"
- "SCE-PS3-SR-R-LATIN2.TTF"
- "SCE-PS3-SR-R-JPN.TTF"
- "SCE-PS3-VR-R-LATIN.TTF"
- "SCE-PS3-VR-R-LATIN2.TTF"
- "SONY-CC/SCE-PS3-DH-R-CGB.TTF"
certs:
path: "dev_flash/data/cert/"
source_ref: "aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/Cell/Modules/cellSsl.cpp:110"
note: "Root certificates cellSsl enumerates."
vsh:
path: "dev_flash/vsh/"
source_ref: "aps3e/app/src/main/cpp/rpcs3/rpcs3/util/sysinfo.cpp:651-653, aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/Cell/PPUThread.cpp:4433-4441, aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/RSX/Overlays/overlay_user_list_dialog.cpp:207"
note: >-
vsh/etc/version.txt supplies the installed firmware version, compared
against the PS3_SYSTEM_VER a title declares. vsh/module/eseibrd.sprx is
precompiled at boot and vsh/resource/explore/user carries the avatars the
user list draws.
ps1emu:
path: "dev_flash/ps1emu/"
source_ref: "aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/System.cpp:2171"
note: "ps1_newemu.self, the argv[0] of a PS1 Classics boot."
pspemu:
path: "dev_flash/pspemu/"
source_ref: "aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/System.cpp:2199"
note: "psp_emulator.self, the argv[0] of a PSP minis boot."
dev_flash2:
path: "config/dev_flash2/"
source_ref: "aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/vfs_config.h:16, aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/Cell/lv2/sys_fs.cpp:28"
note: "CELL_FS_FAT on CELL_FS_IOS:BUILTIN_FLSH2. Mount point only, created empty."
dev_flash3:
path: "config/dev_flash3/"
source_ref: "aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/vfs_config.h:17, aps3e/app/src/main/cpp/rpcs3/rpcs3/Emu/Cell/lv2/sys_fs.cpp:27"
note: "CELL_FS_FAT on CELL_FS_IOS:BUILTIN_FLSH3. Mount point only, created empty."
+168
View File
@@ -0,0 +1,168 @@
emulator: ArcadeFlashWeb
type: standalone
core_classification: launcher
source: "https://github.com/aureyoboss/ArcadeFlashWeb"
upstream: "https://github.com/aureyoboss/ArcadeFlashWeb"
profiled_date: "2026-08-11"
source_commit: "5de66e0cd69b48721a094887a28d042f71ddad08"
core_version: "1.0.2"
display_name: "Adobe Flash (ArcadeFlashWeb)"
cores:
- arcadeflashweb
systems:
- flash
notes: |
Qt 5.13 application that plays SWF files by hosting Adobe's Pepper Flash
runtime inside a QtWebEngine view. Windows only. ES-DE runs
ArcadeFlashWeb.exe -fullscreen -source:<rom>, RetroBat adds -nodatetime,
-savedataflash: and -picturesfolder: and sets the working directory to the
program folder. The repository carries the Qt and QML sources and the
releases; arcadeflashweb.com no longer resolves and holds no archived
capture. Every string quoted below was also read back from the shipped
v1.0.2 executable, which matches the sources.
ref: src/ArcadeFlashWeb.pro:1-5, src/main.qml:34-35
The runtime is registered from the command line. main sets
QTWEBENGINE_CHROMIUM_FLAGS to "--enable-pepper-testing
--ppapi-flash-path=./pepflashplayer.dll" before QtWebEngine::initialize, so
Chromium takes the plugin from that path. It is the one file resolved
against the process working directory; everything else below hangs off
applicationDirPath. No --ppapi-flash-version accompanies it, and nothing
reads the manifest.json sitting beside the library: QtWebEngine builds the
plugin entry from the two switches alone and the library never names that
file. The manifest is still what identifies the build, Pepper Flash
32.0.0.371 for win/ia32.
ref: src/main.cpp:37-44, ArcadeFlashWeb v1.0.2 manifest.json:2-7,
qtwebengine 5.13 src/core/content_client_qt.cpp AddPepperFlashFromCommandLine
A local movie is not handed to the view. The url becomes
file:///<appdir>/flash/flash.html?jeu=<rom>=<width>=<height>, and that page
splits the query on the equals signs, fits the movie to the window and calls
swfobject.embedSWF with scale exactfit and wmode direct. The version it asks
for is 32.0.0, so SWFObject creates the object only when the registered
plugin reports at least that. A -source: containing "http" loads in the view
unchanged and uses none of this.
ref: src/main.qml:317-347, src/Navigateur.qml:144-155,
ArcadeFlashWeb v1.0.2 flash/flash.html:38-104
Natural dimensions come from swfdump. When -swfwidth: and -swfheight: are
not both given, which is the case for both ES-DE and RetroBat, the program
runs cmd /C <appdir>/swfdump.exe -X -Y <rom> redirected to swf.txt in the
data directory and reads the second and fourth whitespace fields back.
ref: src/main.qml:109-128, src/main.qml:321-335, src/Navigateur.qml:147-148
-profilantimicro: starts AntiMicro hidden with a profile from
antimicro/profiles before the movie loads. Adding -controleurantimicro:
replaces that argument with --profile-controller, and the profile file is
then not passed at all.
ref: src/main.qml:305-314
Written rather than expected: swf.txt, the QML LocalStorage database holding
the last browser path with the bezel, screen mode and clock flags, the
QtWebEngine cache and persistent storage under -savedataflash:, and the JPEG
screenshots. The interface icons, the bezel, the CRT and scanline overlays
and the wallpaper are compiled in through qml.qrc, so of the images only the
copy under flash/images is read from disk, and it is byte for byte the
compiled one. Two files ship unread: flash/swfobject/expressInstall.swf,
which flash.html disables by passing false for the express install url, and
flash/swfobject/test.swf, which nothing names.
ref: src/qml.qrc:1-33, src/Sauvegarde.js:1-30, src/main.qml:132-159,
ArcadeFlashWeb v1.0.2 flash/flash.html:102
The remainder of the release is the Qt 5.13.2 deployment of the program
itself. VCRUNTIME140.dll and the UCRT stubs sit in the executable's import
directory, so the Visual C++ 2017 x86 redistributable has to be installed,
and the release carries its installer.
ref: README.md:59, ArcadeFlashWeb v1.0.2 ArcadeFlashWeb.exe import directory
files:
- name: pepflashplayer.dll
required: true
bundled: true
description: "Adobe Pepper Flash Player runtime"
note: >-
Handed to Chromium as --ppapi-flash-path and resolved against the process
working directory. Without it no plugin is registered, SWFObject finds no
player and the movie is never embedded. The page asks for a reported
version of at least 32.0.0; the build that ships is the 32-bit 32.0.0.371.
source_ref: "src/main.cpp:40, ArcadeFlashWeb v1.0.2 flash/flash.html:102"
- name: flash.html
path: flash/flash.html
required: true
bundled: true
description: "Page that embeds the movie"
note: >-
Every local SWF goes through it, carrying the path and the two dimensions
in the query string. Absent, the view is pointed at a file that does not
exist and nothing plays.
source_ref: "src/main.qml:327,334, src/Navigateur.qml:150"
- name: swfobject.js
path: flash/swfobject/swfobject.js
required: true
bundled: true
description: "SWFObject 2.2 embed library"
note: >-
The only definition of swfobject, included by flash.html before the script
that calls embedSWF. It reads the player version from the Shockwave Flash
plugin description, refines it from a probe object's $version, and refuses
to embed below the version the page asks for.
source_ref: "ArcadeFlashWeb v1.0.2 flash/flash.html:38, ArcadeFlashWeb v1.0.2 flash/swfobject/swfobject.js:1-4"
- name: background.jpg
path: flash/images/background.jpg
required: false
bundled: true
description: "Backdrop of the player page"
note: >-
Drawn behind the movie by the page's bg div. The same image is compiled
into the binary for the QML side, so only this copy is read from disk.
source_ref: "ArcadeFlashWeb v1.0.2 flash/flash.html:110, src/qml.qrc:23"
- name: swfdump.exe
required: false
bundled: true
description: "SWFTools swfdump, reads the movie's natural size"
note: >-
Run through cmd /C with -X -Y and the output redirected to swf.txt, then
parsed as the second and fourth whitespace fields. Skipped when both
-swfwidth: and -swfheight: are given. Absent, the redirection still
creates an empty file, both fields parse to NaN and the page sizes the
object from that.
source_ref: "src/main.qml:324-325, src/Navigateur.qml:147-148"
- name: antimicro.exe
path: antimicro/antimicro.exe
required: false
bundled: true
description: "AntiMicro gamepad to keyboard mapper"
note: >-
Started hidden before the movie loads, only when -profilantimicro: is
given. The copy that ships is a 2016 build carrying its own Qt 5 runtime
in the same folder.
source_ref: "src/main.qml:309,311"
- name: arcadeflashweb.gamecontroller.amgp
path: antimicro/profiles/arcadeflashweb.gamecontroller.amgp
required: false
bundled: true
description: "AntiMicro mapping profile"
note: >-
Passed to AntiMicro as --profile under the name -profilantimicro: gives;
the name that ships is the one the built-in help quotes. With
-controleurantimicro: also set the call carries --profile-controller
instead and no profile file is read.
source_ref: "src/main.qml:309-312"
- name: pepper.vch
required: false
bundled: true
description: "Adobe Flash Access blob shipped with the runtime"
note: >-
Named in the Flash library's own string table next to PepperFlashPlayer.
PKCS#7 over 446144 opaque bytes, signed through the Adobe Flash Access
chain under subject CN AdobeIV-202002031156. It carries DRM material and
no plain SWF needs it.
source_ref: "ArcadeFlashWeb v1.0.2 pepflashplayer.dll string table"
+109
View File
@@ -0,0 +1,109 @@
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"
+844
View File
@@ -0,0 +1,844 @@
emulator: ARMSX2
type: standalone + libretro
core_classification: community_fork
bios_mode: agnostic
source: "https://github.com/ARMSX2/ARMSX2"
upstream: "https://github.com/PCSX2/pcsx2"
profiled_date: "2026-08-11"
source_commit: "e509b17e7a8f741f89c1e2a36539c32122467d34"
core_version: "2.6.6.5"
display_name: "Sony - PlayStation 2 (ARMSX2)"
cores:
- armsx2
- armsx2_libretro
systems:
- sony-playstation-2
bios_directory: "bios/"
resources_directory: "resources/"
notes: |
PlayStation 2 emulator, a GPL-3.0 fork of PCSX2 that replaces the x86-64 only
EE, IOP, VU and vtlb fast memory recompilers with native AArch64 ones. One tree
builds the Android application com.armsx2, an iOS package, macOS, Windows and
Linux on arm64, an SDL handheld frontend, and a libretro core.
ref: README.md:1-24, platforms/android/app/build.gradle.kts:17-74,
.github/workflows/build-all.yml:79-85
A BIOS image is required and boot stops without one: LoadBIOS returning false
makes VMManager report that a PlayStation 2 BIOS is needed and return a startup
failure. Only a GS dump replay skips the load. The folder is Bios under the data
directory, bios by default, and on Android the setup wizard keeps it in
app-private storage because the native file APIs cannot reliably open a dump off
a SAF volume.
ref: pcsx2/ps2/BiosTools.cpp:332-348, pcsx2/VMManager.cpp:1592-1607,
pcsx2/Pcsx2Config.cpp:2498,
platforms/android/app/src/main/java/kr/co/iefriends/pcsx2/NativeApp.java:82-93
Detection is by content. The scan lists the BIOS folder, keeps files between 4
and 8 MB, and accepts an image whose romdir carries a RESET entry followed by a
readable ROMVER; the fifth ROMVER character gives the zone among Japan, USA,
Europe, Asia, China, T10K, COH-H, Test and Free, and an EXTINFO entry supplies
the serial. An image named in the configuration is opened at its own path,
without the size filter. No name and no hash is matched anywhere. The image is
read into the 4 MB ROM region and truncated to it, and one shorter than 2465792
bytes turns off the OSDSys parameter HLE. IsBIOSFromFd runs the same romdir test
on a file descriptor, which is how the Android picker identifies a dump handed
over by the storage framework.
ref: pcsx2/ps2/BiosTools.cpp:16-17, pcsx2/ps2/BiosTools.cpp:80-197,
pcsx2/ps2/BiosTools.cpp:258-309, pcsx2/ps2/BiosTools.cpp:350-373
Companions derive from the selected image. rom1 and rom2 are appended to the
full name first, then substituted for the existing extension, so an image at
ps2-0230a-20080220.bin is followed by ps2-0230a-20080220.bin.rom1 then
ps2-0230a-20080220.rom1, and the open retries case-insensitively. Both regions
are 4 MB here. The nvm and the mec are read at the substituted extension only;
the nvm is rebuilt in memory with region and language defaults when it is
missing or its config block is blank, and the mec is written back to disk as
0x00020603 when it cannot be read.
ref: pcsx2/ps2/BiosTools.cpp:214-241, pcsx2/ps2/BiosTools.cpp:381-397,
pcsx2/MemoryTypes.h:12-14, pcsx2/CDVD/CDVD.cpp:46-60,
pcsx2/CDVD/CDVD.cpp:147-214
The network adapter opens eeprom.dat and flash.dat from the working directory,
standing in a compiled-in image for the first and a card filled with 0xFF for
the second. DEV9hdd.raw is the default name of the empty disk image the settings
page writes, and memory cards, save states and screenshots are likewise produced
by the emulator rather than read from a distribution.
ref: pcsx2/DEV9/DEV9.cpp:109-160, pcsx2/DEV9/flash.cpp:8-16,
pcsx2/DEV9/flash.cpp:62-86, pcsx2/DEV9/DEV9.h:31-33
An IRX named in the configuration is read into the ROM region at 0x3C0000 once
the IOP reaches 0x1630. The field is empty by default and names no file of its
own.
ref: pcsx2/ps2/BiosTools.cpp:243-256, pcsx2/ps2/BiosTools.cpp:399-400,
pcsx2/R3000AInterpreter.cpp:220
Everything under the resources folder is read at its own name from
EmuFolders::Resources, and GetOverridableResourcePath lets a copy in
UserResources take precedence. The standalone builds carry the folder with them,
the Android application unpacks it from its assets and force-refreshes the
shaders and the two game databases on update because a stale copy no longer
matches the binary. The libretro core ships as a bare shared object and reads
the same tree from <system>/pcsx2/resources, with the BIOS folder at
<system>/pcsx2/bios, so a libretro user supplies both.
ref: pcsx2/Pcsx2Config.cpp:2348-2357, pcsx2/Pcsx2Config.cpp:2507,
pcsx2/Pcsx2Config.cpp:2584-2598, pcsx2-libretro/Main.cpp:157-158,
pcsx2-libretro/Main.cpp:1000,
platforms/android/app/src/main/java/kr/co/iefriends/pcsx2/MainActivity.java:60-61,
platforms/android/app/src/main/java/kr/co/iefriends/pcsx2/MainActivity.java:355-372
Missing resources are not uniformly survivable. A font that cannot be read fails
LoadFontData, which fails ImGuiManager::Initialize and tears the GS device down,
whichever renderer is running. A shader source that cannot be read fails the
pipeline compile and the device with it, but only for the backend that reads it,
and the renderer setting picks among OpenGL, Vulkan and, on Windows, Direct3D 11
and 12. Vulkan is the only backend the Android, iOS and libretro builds have, so
its sources are the ones no session can do without. The single caught failure is
the Vulkan sharpening pipeline, which turns itself off. The databases, the patch
archive, the controller mappings, the sounds and the interface artwork degrade
instead.
ref: pcsx2/ImGui/ImGuiManager.cpp:155-160, pcsx2/ImGui/ImGuiManager.cpp:501-575,
pcsx2/GS/GS.cpp:88-110, pcsx2/GS/GS.cpp:160-179,
pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2593-2612
The Qt builds resolve a per-script interface font by filename, first under
UserResources then under the resources folder, and download the first entry of
the script table into UserResources/fonts when neither holds it. Only the Latin
and emoji entries are shipped.
ref: pcsx2-qt/Translations.cpp:312-370, pcsx2-qt/Translations.cpp:407-424,
pcsx2-qt/Translations.cpp:541-549
files:
- name: ps2-0230a-20080220.bin
path: pcsx2/bios/ps2-0230a-20080220.bin
standalone_path: bios/ps2-0230a-20080220.bin
agnostic: true
required: true
min_size: 4194304
max_size: 8388608
validation: [size]
description: "PS2 BIOS image"
note: >-
Any image whose romdir holds RESET and ROMVER is accepted, whatever its
name. The 4 to 8 MB range gates the folder scan; an image named in the
configuration skips that range. Read into the 4 MB ROM region and truncated
to it. Shorter than 2465792 bytes disables the OSDSys parameter HLE.
source_ref: "pcsx2/ps2/BiosTools.cpp:16-17, pcsx2/ps2/BiosTools.cpp:80-197, pcsx2/ps2/BiosTools.cpp:258-294, pcsx2/ps2/BiosTools.cpp:332-373"
- name: ps2-0230a-20080220.rom1
path: pcsx2/bios/ps2-0230a-20080220.rom1
standalone_path: bios/ps2-0230a-20080220.rom1
required: false
max_size: 4194304
description: "DVD player ROM"
note: >-
Tried as {bios}.rom1 then {biosbase}.rom1, with a case-insensitive retry on
the open. Copied to the ROM1 region and truncated to 4 MB. Logged and
skipped when absent.
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241, pcsx2/ps2/BiosTools.cpp:381, pcsx2/ps2/BiosTools.cpp:386-397, pcsx2/MemoryTypes.h:13"
- name: ps2-0230a-20080220.rom2
path: pcsx2/bios/ps2-0230a-20080220.rom2
standalone_path: bios/ps2-0230a-20080220.rom2
required: false
max_size: 4194304
description: "Chinese ROM extension"
note: >-
Same two-step naming as rom1. Copied to the ROM2 region, which is 4 MB in
this tree. Only present on Chinese region consoles.
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241, pcsx2/ps2/BiosTools.cpp:382, pcsx2/ps2/BiosTools.cpp:386-397, pcsx2/MemoryTypes.h:14"
- name: ps2-0230a-20080220.nvm
path: pcsx2/bios/ps2-0230a-20080220.nvm
standalone_path: bios/ps2-0230a-20080220.nvm
required: false
hle_fallback: true
size: 1024
description: "Console NVRAM"
note: >-
Read at the BIOS path with the extension replaced by nvm. Carries the
console id, the iLink id, the MAC, the model number and the OSD
configuration. A 1024 byte image is built in memory when the file is absent,
short, or carries a blank config block, zeroed except for a fixed iLink id
and the language and region defaults of the BIOS region.
source_ref: "pcsx2/CDVD/CDVD.cpp:46-47, pcsx2/CDVD/CDVD.cpp:147-200"
- name: ps2-0230a-20080220.mec
path: pcsx2/bios/ps2-0230a-20080220.mec
standalone_path: bios/ps2-0230a-20080220.mec
required: false
hle_fallback: true
size: 4
description: "Mechacon version"
note: >-
Read at the BIOS path with the extension replaced by mec. Defaults to
0x00020603 and is written back at that path when it cannot be read.
source_ref: "pcsx2/CDVD/CDVD.cpp:60, pcsx2/CDVD/CDVD.cpp:201-214"
- name: eeprom.dat
required: false
hle_fallback: true
size: 64
description: "DEV9 EEPROM"
note: >-
Opened from the working directory when the network adapter starts and mapped
over 64 bytes. A compiled-in image stands in when the file is missing or
cannot be mapped.
source_ref: "pcsx2/DEV9/DEV9.cpp:60, pcsx2/DEV9/DEV9.cpp:109-160"
- name: flash.dat
required: false
hle_fallback: true
max_size: 8650752
description: "DEV9 SmartMedia flash image"
note: >-
Opened from the working directory at network adapter init and read as 1024
blocks of 16 pages of 512 bytes plus 16 ECC bytes. The card is filled with
0xFF when the file is absent, and a short read is logged.
source_ref: "pcsx2/DEV9/flash.cpp:8-16, pcsx2/DEV9/flash.cpp:62-86"
- name: "<module>.irx"
required: false
config_key: "EmuCore/CurrentIRX"
unsourceable: "any IOP module the user points at, under no name and no version the code expects"
description: "IOP module injected at boot"
note: >-
Read into the ROM region at 0x3C0000 when the IOP program counter reaches
0x1630 and the setting is longer than three characters. Empty by default.
source_ref: "pcsx2/ps2/BiosTools.cpp:243-256, pcsx2/ps2/BiosTools.cpp:399-400, pcsx2/R3000AInterpreter.cpp:220, pcsx2/Config.h:1601"
- name: GameIndex.yaml
path: pcsx2/resources/GameIndex.yaml
standalone_path: resources/GameIndex.yaml
required: false
bundled: true
description: "Game database"
note: >-
Read from the resources folder, keyed by serial, carrying the per-game
fixes, patches and settings overrides. Parsed once on first lookup.
source_ref: "pcsx2/GameDatabase.cpp:43, pcsx2/GameDatabase.cpp:1205-1210"
- name: armsx2_overrides.yaml
path: pcsx2/resources/armsx2_overrides.yaml
standalone_path: resources/armsx2_overrides.yaml
required: false
bundled: true
description: "Mobile GPU game database overlay"
note: >-
Second pass over the game database, merged onto the entries GameIndex.yaml
declares. Carries GS and JIT tuning correct on tiler GPUs. Kept outside the
shipped resources folder and copied in only for arm64 Linux, Android and
iOS; the loader no-ops where it is absent.
source_ref: "pcsx2/GameDatabase.cpp:50, pcsx2/GameDatabase.cpp:1211-1214, cmake/BuildParameters.cmake:186-200, pcsx2/CMakeLists.txt:1441-1451, platforms/android/app/build.gradle.kts:40-48"
- name: RedumpDatabase.yaml
path: pcsx2/resources/RedumpDatabase.yaml
standalone_path: resources/RedumpDatabase.yaml
required: false
bundled: true
description: "Disc track hash database"
note: >-
Loaded on the first hash lookup and used to tell the user whether a dump
matches a known good one. Read by the Qt game summary page.
source_ref: "pcsx2/GameDatabase.cpp:1278, pcsx2/GameDatabase.cpp:1328-1345, pcsx2-qt/Settings/GameSummaryWidget.cpp:322"
- name: patches.zip
path: pcsx2/resources/patches.zip
standalone_path: resources/patches.zip
required: false
bundled: true
description: "Game patch archive"
note: >-
Per-game pnach entries matched on serial and disc CRC. The patches and
cheats folders take precedence over the archive. Fetched from the
pcsx2_patches releases at build time for the desktop builds and committed
for Android and iOS.
source_ref: "pcsx2/Patch.cpp:118, pcsx2/Patch.cpp:290-318, pcsx2/Patch.cpp:425-435, .github/workflows/linux_build_qt.yml:33"
- name: game_controller_db.txt
path: pcsx2/resources/game_controller_db.txt
standalone_path: resources/game_controller_db.txt
required: false
bundled: true
description: "SDL controller mapping database"
note: >-
A copy in the data root wins, then the resources folder, and the path is
handed to SDL as a hint. SDL falls back to its built-in mappings when
neither exists.
source_ref: "pcsx2/Input/SDLInputSource.cpp:24, pcsx2/Input/SDLInputSource.cpp:614-627"
- name: Roboto-Regular.ttf
path: pcsx2/resources/fonts/Roboto-Regular.ttf
standalone_path: resources/fonts/Roboto-Regular.ttf
required: true
bundled: true
description: "Interface font"
note: >-
Seeded as the standard font when no language layer supplied one, which is
always the case on Android. LoadFontData fails without it and the GS device
is torn down.
source_ref: "pcsx2/ImGui/ImGuiManager.cpp:501-523, pcsx2/ImGui/ImGuiManager.cpp:155-160, pcsx2/GS/GS.cpp:160-179"
- name: RobotoMono-Medium.ttf
path: pcsx2/resources/fonts/RobotoMono-Medium.ttf
standalone_path: resources/fonts/RobotoMono-Medium.ttf
required: true
bundled: true
description: "Fixed-width interface font"
note: >-
Read for the fixed-width font. LoadFontData fails without it. Also the
initial path the fullscreen interface offers when picking a custom OSD font.
source_ref: "pcsx2/ImGui/ImGuiManager.cpp:544-552, pcsx2/ImGui/FullscreenUI_Settings.cpp:3417"
- name: fa-solid-900.ttf
path: pcsx2/resources/fonts/fa-solid-900.ttf
standalone_path: resources/fonts/fa-solid-900.ttf
required: true
bundled: true
description: "Font Awesome icon font"
note: "Read for the interface icon glyphs. LoadFontData fails without it."
source_ref: "pcsx2/ImGui/ImGuiManager.cpp:554-562"
- name: promptfont.otf
path: pcsx2/resources/fonts/promptfont.otf
standalone_path: resources/fonts/promptfont.otf
required: true
bundled: true
description: "Controller prompt font"
note: "Read for the controller button glyphs. LoadFontData fails without it."
source_ref: "pcsx2/ImGui/ImGuiManager.cpp:564-572"
- name: Twemoji.Mozilla.ttf
path: pcsx2/resources/fonts/Twemoji.Mozilla.ttf
standalone_path: resources/fonts/Twemoji.Mozilla.ttf
required: false
bundled: true
description: "Emoji font"
note: >-
First entry of the emoji script table, resolved under UserResources then the
resources folder and downloaded into UserResources/fonts when neither holds
it.
source_ref: "pcsx2-qt/Translations.cpp:340-347, pcsx2-qt/Translations.cpp:407-424, pcsx2-qt/Translations.cpp:541-549"
- name: NotoColorEmoji-Regular.ttf
path: pcsx2/resources/fonts/NotoColorEmoji-Regular.ttf
standalone_path: resources/fonts/NotoColorEmoji-Regular.ttf
required: false
bundled: true
description: "Android emoji font"
note: >-
Committed under the Android asset tree and unpacked with the rest of the
resources folder. Rendered by the Compose interface.
source_ref: "platforms/android/app/src/main/assets/resources/fonts/NotoColorEmoji-Regular.ttf, platforms/android/app/src/main/java/com/armsx2/ui/emulation/EmulationMenuScreen.kt:507"
- name: NotoSansJP-Regular.ttf
path: pcsx2/resources/fonts/NotoSansJP-Regular.ttf
standalone_path: resources/fonts/NotoSansJP-Regular.ttf
required: false
description: "Japanese interface font"
note: >-
First entry of the Japanese script table. Resolved under UserResources then
the resources folder, and downloaded into UserResources/fonts when the
interface language needs it and neither holds it. Not shipped.
source_ref: "pcsx2-qt/Translations.cpp:354-360, pcsx2-qt/Translations.cpp:407-424, pcsx2-qt/Translations.cpp:541-549"
- name: NotoSansKR-Regular.ttf
path: pcsx2/resources/fonts/NotoSansKR-Regular.ttf
standalone_path: resources/fonts/NotoSansKR-Regular.ttf
required: false
description: "Korean interface font"
note: "Same resolution and download path as the Japanese font. Not shipped."
source_ref: "pcsx2-qt/Translations.cpp:361-367, pcsx2-qt/Translations.cpp:407-424, pcsx2-qt/Translations.cpp:541-549"
- name: NotoSansSC-Regular.ttf
path: pcsx2/resources/fonts/NotoSansSC-Regular.ttf
standalone_path: resources/fonts/NotoSansSC-Regular.ttf
required: false
description: "Simplified Chinese interface font"
note: "Same resolution and download path as the Japanese font. Not shipped."
source_ref: "pcsx2-qt/Translations.cpp:320-326, pcsx2-qt/Translations.cpp:407-424, pcsx2-qt/Translations.cpp:541-549"
- name: NotoSansTC-Regular.ttf
path: pcsx2/resources/fonts/NotoSansTC-Regular.ttf
standalone_path: resources/fonts/NotoSansTC-Regular.ttf
required: false
description: "Traditional Chinese interface font"
note: "Same resolution and download path as the Japanese font. Not shipped."
source_ref: "pcsx2-qt/Translations.cpp:327-333, pcsx2-qt/Translations.cpp:407-424, pcsx2-qt/Translations.cpp:541-549"
- name: NotoSansArabic-Regular.ttf
path: pcsx2/resources/fonts/NotoSansArabic-Regular.ttf
standalone_path: resources/fonts/NotoSansArabic-Regular.ttf
required: false
description: "Arabic interface font"
note: "Same resolution and download path as the Japanese font. Not shipped."
source_ref: "pcsx2-qt/Translations.cpp:314-319, pcsx2-qt/Translations.cpp:407-424, pcsx2-qt/Translations.cpp:541-549"
- name: NotoSansHebrew-Regular.ttf
path: pcsx2/resources/fonts/NotoSansHebrew-Regular.ttf
standalone_path: resources/fonts/NotoSansHebrew-Regular.ttf
required: false
description: "Hebrew interface font"
note: "Same resolution and download path as the Japanese font. Not shipped."
source_ref: "pcsx2-qt/Translations.cpp:348-353, pcsx2-qt/Translations.cpp:407-424, pcsx2-qt/Translations.cpp:541-549"
- name: NotoSansDevanagari-Regular.ttf
path: pcsx2/resources/fonts/NotoSansDevanagari-Regular.ttf
standalone_path: resources/fonts/NotoSansDevanagari-Regular.ttf
required: false
description: "Devanagari interface font"
note: "Same resolution and download path as the Japanese font. Not shipped."
source_ref: "pcsx2-qt/Translations.cpp:334-339, pcsx2-qt/Translations.cpp:407-424, pcsx2-qt/Translations.cpp:541-549"
- name: tfx.glsl
path: pcsx2/resources/shaders/vulkan/tfx.glsl
standalone_path: resources/shaders/vulkan/tfx.glsl
required: true
bundled: true
description: "Vulkan texture function shader"
note: >-
Compiled at device creation. The Vulkan backend is the only one the Android,
iOS and libretro builds use, and a source that cannot be read fails the
pipeline compile and the device with it.
source_ref: "pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2568, pcsx2/GS/Renderers/Common/GSDevice.cpp:422-425"
- name: convert.glsl
path: pcsx2/resources/shaders/vulkan/convert.glsl
standalone_path: resources/shaders/vulkan/convert.glsl
required: true
bundled: true
description: "Vulkan conversion shader"
source_ref: "pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5521-5527, pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5877"
- name: present.glsl
path: pcsx2/resources/shaders/vulkan/present.glsl
standalone_path: resources/shaders/vulkan/present.glsl
required: true
bundled: true
description: "Vulkan presentation shader"
source_ref: "pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5706"
- name: merge.glsl
path: pcsx2/resources/shaders/vulkan/merge.glsl
standalone_path: resources/shaders/vulkan/merge.glsl
required: true
bundled: true
description: "Vulkan merge shader"
source_ref: "pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5807"
- name: interlace.glsl
path: pcsx2/resources/shaders/vulkan/interlace.glsl
standalone_path: resources/shaders/vulkan/interlace.glsl
required: true
bundled: true
description: "Vulkan interlace shader"
source_ref: "pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5756"
- name: shadeboost.glsl
path: pcsx2/resources/shaders/vulkan/shadeboost.glsl
standalone_path: resources/shaders/vulkan/shadeboost.glsl
required: true
bundled: true
description: "Vulkan shade boost shader"
note: >-
Compiled by the post-processing pass, which runs unconditionally in the
device creation chain, so a source that cannot be read fails the device.
source_ref: "pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5857, pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5911-5917, pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2593-2598"
- name: cas.glsl
path: pcsx2/resources/shaders/vulkan/cas.glsl
standalone_path: resources/shaders/vulkan/cas.glsl
required: false
bundled: true
description: "Vulkan contrast adaptive sharpening shader"
note: >-
Includes ffx_a.h and ffx_cas.h. The only shader whose compile failure is
caught: sharpening is turned off and device creation carries on, because
older Adreno compilers reject the compute pipeline.
source_ref: "pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5963, pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2606-2612"
- name: imgui.glsl
path: pcsx2/resources/shaders/vulkan/imgui.glsl
standalone_path: resources/shaders/vulkan/imgui.glsl
required: true
bundled: true
description: "Vulkan interface shader"
source_ref: "pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5989"
- name: fxaa.fx
path: pcsx2/resources/shaders/common/fxaa.fx
standalone_path: resources/shaders/common/fxaa.fx
required: true
bundled: true
description: "FXAA shader, shared by every backend"
note: >-
Compiled by the Vulkan and OpenGL post-processing passes as part of device
creation, so the device fails without it. The Direct3D backends compile it
lazily on first use and only lose the effect.
source_ref: "pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5884, pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:607, pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2805-2813, pcsx2/GS/Renderers/DX11/GSDevice11.cpp:1933-1940"
- name: ffx_a.h
path: pcsx2/resources/shaders/common/ffx_a.h
standalone_path: resources/shaders/common/ffx_a.h
required: false
bundled: true
description: "FidelityFX helper header"
note: >-
Read as a source file and substituted for the include line of the sharpening
shader before compilation.
source_ref: "pcsx2/GS/Renderers/Common/GSDevice.cpp:1481-1488"
- name: ffx_cas.h
path: pcsx2/resources/shaders/common/ffx_cas.h
standalone_path: resources/shaders/common/ffx_cas.h
required: false
bundled: true
description: "FidelityFX CAS header"
note: "Substituted the same way as ffx_a.h."
source_ref: "pcsx2/GS/Renderers/Common/GSDevice.cpp:1481-1488"
- name: tfx_vgs.glsl
path: pcsx2/resources/shaders/opengl/tfx_vgs.glsl
standalone_path: resources/shaders/opengl/tfx_vgs.glsl
required: false
bundled: true
description: "OpenGL texture function vertex and geometry shader"
note: >-
The OpenGL backend is one of three the renderer setting selects, and it is
what an Android device falls back to when Vulkan is not chosen. Its device
creation fails without this source; a Vulkan session is unaffected.
source_ref: "pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:749-753, pcsx2/GS/GS.cpp:88-110"
- name: tfx_fs.glsl
path: pcsx2/resources/shaders/opengl/tfx_fs.glsl
standalone_path: resources/shaders/opengl/tfx_fs.glsl
required: false
bundled: true
description: "OpenGL texture function fragment shader"
note: "Read with tfx_vgs.glsl; the OpenGL device fails without it."
source_ref: "pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:749-753"
- name: convert.glsl
path: pcsx2/resources/shaders/opengl/convert.glsl
standalone_path: resources/shaders/opengl/convert.glsl
required: false
bundled: true
description: "OpenGL conversion shader"
note: "The OpenGL device fails without it."
source_ref: "pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:441-447"
- name: present.glsl
path: pcsx2/resources/shaders/opengl/present.glsl
standalone_path: resources/shaders/opengl/present.glsl
required: false
bundled: true
description: "OpenGL presentation shader"
note: "The OpenGL device fails without it."
source_ref: "pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:527-532"
- name: merge.glsl
path: pcsx2/resources/shaders/opengl/merge.glsl
standalone_path: resources/shaders/opengl/merge.glsl
required: false
bundled: true
description: "OpenGL merge shader"
note: "The OpenGL device fails without it."
source_ref: "pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:563-568"
- name: interlace.glsl
path: pcsx2/resources/shaders/opengl/interlace.glsl
standalone_path: resources/shaders/opengl/interlace.glsl
required: false
bundled: true
description: "OpenGL interlace shader"
note: "The OpenGL device fails without it."
source_ref: "pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:586-591"
- name: shadeboost.glsl
path: pcsx2/resources/shaders/opengl/shadeboost.glsl
standalone_path: resources/shaders/opengl/shadeboost.glsl
required: false
bundled: true
description: "OpenGL shade boost shader"
note: >-
Compiled with the FXAA program in the OpenGL device creation chain, so that
device fails without it.
source_ref: "pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:607-608, pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:3060-3066"
- name: cas.glsl
path: pcsx2/resources/shaders/opengl/cas.glsl
standalone_path: resources/shaders/opengl/cas.glsl
required: false
bundled: true
description: "OpenGL contrast adaptive sharpening shader"
note: >-
A desktop GL compute shader, gated away from GL ES contexts because feeding
it to an ES compiler crashes some drivers.
source_ref: "pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:3251, pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:610-615"
- name: imgui.glsl
path: pcsx2/resources/shaders/opengl/imgui.glsl
standalone_path: resources/shaders/opengl/imgui.glsl
required: false
bundled: true
description: "OpenGL interface shader"
note: "The OpenGL device fails without it."
source_ref: "pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:709-710, pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:3309-3316"
- name: tfx.fx
path: pcsx2/resources/shaders/dx11/tfx.fx
standalone_path: resources/shaders/dx11/tfx.fx
required: false
bundled: true
description: "Direct3D texture function shader"
note: >-
Read by the Direct3D 11 and Direct3D 12 backends of the Windows on arm64
build, whose devices fail without it. The Android asset step drops the dx11
folder because the mobile backends never compile it.
source_ref: "pcsx2/GS/Renderers/DX11/GSDevice11.cpp:215-218, pcsx2/GS/Renderers/DX12/GSDevice12.cpp:967, platforms/android/app/build.gradle.kts:40-47"
- name: convert.fx
path: pcsx2/resources/shaders/dx11/convert.fx
standalone_path: resources/shaders/dx11/convert.fx
required: false
bundled: true
description: "Direct3D conversion shader"
note: "The Direct3D devices fail without it."
source_ref: "pcsx2/GS/Renderers/DX11/GSDevice11.cpp:229-231, pcsx2/GS/Renderers/DX12/GSDevice12.cpp:2827"
- name: present.fx
path: pcsx2/resources/shaders/dx11/present.fx
standalone_path: resources/shaders/dx11/present.fx
required: false
bundled: true
description: "Direct3D presentation shader"
note: "The Direct3D devices fail without it."
source_ref: "pcsx2/GS/Renderers/DX11/GSDevice11.cpp:265, pcsx2/GS/Renderers/DX12/GSDevice12.cpp:2971"
- name: merge.fx
path: pcsx2/resources/shaders/dx11/merge.fx
standalone_path: resources/shaders/dx11/merge.fx
required: false
bundled: true
description: "Direct3D merge shader"
note: "The Direct3D devices fail without it."
source_ref: "pcsx2/GS/Renderers/DX11/GSDevice11.cpp:317, pcsx2/GS/Renderers/DX12/GSDevice12.cpp:3050"
- name: interlace.fx
path: pcsx2/resources/shaders/dx11/interlace.fx
standalone_path: resources/shaders/dx11/interlace.fx
required: false
bundled: true
description: "Direct3D interlace shader"
note: "The Direct3D devices fail without it."
source_ref: "pcsx2/GS/Renderers/DX11/GSDevice11.cpp:352, pcsx2/GS/Renderers/DX12/GSDevice12.cpp:3014"
- name: shadeboost.fx
path: pcsx2/resources/shaders/dx11/shadeboost.fx
standalone_path: resources/shaders/dx11/shadeboost.fx
required: false
bundled: true
description: "Direct3D shade boost shader"
source_ref: "pcsx2/GS/Renderers/DX11/GSDevice11.cpp:372, pcsx2/GS/Renderers/DX12/GSDevice12.cpp:3120"
- name: cas.hlsl
path: pcsx2/resources/shaders/dx11/cas.hlsl
standalone_path: resources/shaders/dx11/cas.hlsl
required: false
bundled: true
description: "Direct3D contrast adaptive sharpening shader"
note: "Includes ffx_a.h and ffx_cas.h."
source_ref: "pcsx2/GS/Renderers/DX11/GSDevice11.cpp:2259, pcsx2/GS/Renderers/DX12/GSDevice12.cpp:2299"
- name: imgui.fx
path: pcsx2/resources/shaders/dx11/imgui.fx
standalone_path: resources/shaders/dx11/imgui.fx
required: false
bundled: true
description: "Direct3D interface shader"
note: "The Direct3D devices fail without it."
source_ref: "pcsx2/GS/Renderers/DX11/GSDevice11.cpp:2309-2313, pcsx2/GS/Renderers/DX12/GSDevice12.cpp:2327"
- name: message.wav
path: pcsx2/resources/sounds/achievements/message.wav
standalone_path: resources/sounds/achievements/message.wav
required: false
bundled: true
description: "Achievement notification sound"
note: >-
Played from the resources folder when the achievement information sound is
enabled and no custom sound is set.
source_ref: "pcsx2/Achievements.cpp:68, pcsx2/Achievements.cpp:1275-1281, pcsx2/Achievements.cpp:1525"
- name: unlock.wav
path: pcsx2/resources/sounds/achievements/unlock.wav
standalone_path: resources/sounds/achievements/unlock.wav
required: false
bundled: true
description: "Achievement unlock sound"
source_ref: "pcsx2/Achievements.cpp:69, pcsx2/Achievements.cpp:1275-1281, pcsx2/Achievements.cpp:1578"
- name: lbsubmit.wav
path: pcsx2/resources/sounds/achievements/lbsubmit.wav
standalone_path: resources/sounds/achievements/lbsubmit.wav
required: false
bundled: true
description: "Leaderboard submission sound"
source_ref: "pcsx2/Achievements.cpp:70, pcsx2/Achievements.cpp:1275-1281, pcsx2/Achievements.cpp:1672"
- name: placeholder.png
path: pcsx2/resources/fullscreenui/placeholder.png
standalone_path: resources/fullscreenui/placeholder.png
required: false
bundled: true
description: "Fullscreen interface placeholder texture"
note: >-
Named as the placeholder texture when the fullscreen interface initialises.
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:335"
- name: no-save.png
path: pcsx2/resources/fullscreenui/no-save.png
standalone_path: resources/fullscreenui/no-save.png
required: false
bundled: true
description: "Empty save slot texture"
source_ref: "pcsx2/ImGui/ImGuiOverlays.cpp:1664"
- name: media-cdrom.svg
path: pcsx2/resources/fullscreenui/media-cdrom.svg
standalone_path: resources/fullscreenui/media-cdrom.svg
required: false
bundled: true
description: "Game list menu icon"
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:1367, pcsx2/ImGui/FullscreenUI.cpp:3483"
- name: start-game.svg
path: pcsx2/resources/fullscreenui/start-game.svg
standalone_path: resources/fullscreenui/start-game.svg
required: false
bundled: true
description: "Start game menu icon"
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:1373"
- name: applications-system.svg
path: pcsx2/resources/fullscreenui/applications-system.svg
standalone_path: resources/fullscreenui/applications-system.svg
required: false
bundled: true
description: "Settings menu icon"
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:1380, pcsx2/ImGui/FullscreenUI.cpp:3478"
- name: exit.svg
path: pcsx2/resources/fullscreenui/exit.svg
standalone_path: resources/fullscreenui/exit.svg
required: false
bundled: true
description: "Exit menu icon"
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:1386, pcsx2/ImGui/FullscreenUI.cpp:1519"
- name: start-file.svg
path: pcsx2/resources/fullscreenui/start-file.svg
standalone_path: resources/fullscreenui/start-file.svg
required: false
bundled: true
description: "Start file menu icon"
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:1443"
- name: drive-cdrom.svg
path: pcsx2/resources/fullscreenui/drive-cdrom.svg
standalone_path: resources/fullscreenui/drive-cdrom.svg
required: false
bundled: true
description: "Start disc menu icon"
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:1449"
- name: start-bios.svg
path: pcsx2/resources/fullscreenui/start-bios.svg
standalone_path: resources/fullscreenui/start-bios.svg
required: false
bundled: true
description: "Start BIOS menu icon"
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:1455"
- name: back-icon.svg
path: pcsx2/resources/fullscreenui/back-icon.svg
standalone_path: resources/fullscreenui/back-icon.svg
required: false
bundled: true
description: "Back menu icon"
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:1461, pcsx2/ImGui/FullscreenUI.cpp:1511"
- name: desktop-mode.svg
path: pcsx2/resources/fullscreenui/desktop-mode.svg
standalone_path: resources/fullscreenui/desktop-mode.svg
required: false
bundled: true
description: "Desktop mode menu icon"
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:1527"
- name: AppBanner.svg
path: pcsx2/resources/icons/AppBanner.svg
standalone_path: resources/icons/AppBanner.svg
required: false
bundled: true
description: "Application banner"
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:762"
- name: AppIconLarge.png
path: pcsx2/resources/icons/AppIconLarge.png
standalone_path: resources/icons/AppIconLarge.png
required: false
bundled: true
description: "Application icon"
note: >-
Drawn by the fullscreen interface, shown by the Qt setup wizard, and copied
out when a desktop entry is written.
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:1291, pcsx2-qt/SetupWizardDialog.cpp:165, pcsx2-qt/QtUtils.cpp:843"
- name: AppIconLarge.ico
path: pcsx2/resources/icons/AppIconLarge.ico
standalone_path: resources/icons/AppIconLarge.ico
required: false
bundled: true
description: "Windows application icon"
note: "Read next to the program when a shortcut is written."
source_ref: "pcsx2-qt/QtUtils.cpp:755"
- name: ra-icon.svg
path: pcsx2/resources/icons/ra-icon.svg
standalone_path: resources/icons/ra-icon.svg
required: false
bundled: true
description: "RetroAchievements icon"
source_ref: "pcsx2/ImGui/FullscreenUI_Settings.cpp:4388, pcsx2-qt/SetupWizardDialog.cpp:428, pcsx2-qt/Settings/AchievementLoginDialog.cpp:21"
- name: "star-<rating>.svg"
path: pcsx2/resources/icons/
standalone_path: resources/icons/
required: false
bundled: true
description: "Compatibility rating icons"
note: >-
Six files, star-0.svg through star-5.svg, named from the compatibility
rating of the entry.
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:767, pcsx2-qt/GameList/GameListModel.cpp:529"
- name: "<region>.svg"
path: pcsx2/resources/icons/flags/
standalone_path: resources/icons/flags/
required: false
bundled: true
description: "Region flag icons"
note: >-
Forty-eight files, named from the region of the entry through
RegionToFlagFilename.
source_ref: "pcsx2/ImGui/FullscreenUI.cpp:2842"
- name: cover-placeholder.png
path: pcsx2/resources/cover-placeholder.png
standalone_path: resources/cover-placeholder.png
required: false
bundled: true
description: "Game list cover placeholder"
source_ref: "pcsx2-qt/GameList/GameListModel.cpp:531"
+183
View File
@@ -0,0 +1,183 @@
emulator: aX360e
type: standalone
core_classification: community_fork
source: "https://github.com/aenu1/ax360e"
source_branch: main
upstream: "https://github.com/xenia-canary/xenia-canary"
profiled_date: "2026-08-11"
source_commit: "a451abd20ae0660bc53bcf90473ac0e6c6c0d86d"
upstream_commit: "dc561e4df578c903087f9bdf56ff61d9ef9f2a93"
core_version: "1.18"
display_name: "Microsoft - Xbox 360 (aX360e)"
cores:
- ax360e
systems:
- microsoft-xbox-360
mode: standalone
notes: |
Xbox 360 emulator for Android, distributed on Google Play as aenu.ax360e and
aenu.ax360e.free. Xenia Canary is vendored whole under
app/src/main/cpp/xenia-canary at canary_experimental dc561e4d, and a JNI layer
replaces the desktop front end: its own windowed app and window, AAudio and
OpenSLES audio systems, an Android input driver, and disc image, disc archive,
STFS and XEX devices backed by the Storage Access Framework.
ref: ax360e/app/src/main/cpp/version.h:4-5,
ax360e/app/src/main/cpp/CMakeLists.txt:39-74,
ax360e/app/src/main/cpp/ax360e_emu.cpp:615
The version is read from the commit subjects, which carry it: 1.18 is the head
of main, 1.17 the drop before it. The repository has no tags, and the only
gradle file committed is app/build.gradle.bak, which still declares versionName
0.14 and is renamed and completed with the signing block at build time.
ref: ax360e/README.md, ax360e/app/build.gradle.bak:13-14
No Xbox 360 system file is loaded. The kernel, XAM and XBDM are HLE modules
registered at startup, and every key the emulator needs is a constant in the
source: the XEX1 retail, XEX2 retail and XEX2 devkit keys tried in turn when an
image is read, the 0x19 key pair the profile blob is encrypted with, and the
key vault map XeKeysGetKey answers from. There is no NAND, flash or keyvault
path.
ref: ax360e/app/src/main/cpp/xenia-canary/src/xenia/emulator.cc:316-318,
ax360e/app/src/main/cpp/xenia-canary/src/xenia/cpu/xex_module.cc:54-62,
ax360e/app/src/main/cpp/xenia-canary/src/xenia/cpu/xex_module.cc:953-963,
ax360e/app/src/main/cpp/xenia-canary/src/xenia/kernel/util/crypto_utils.cc:20-31,
ax360e/app/src/main/cpp/xenia-canary/src/xenia/kernel/xboxkrnl/xboxkrnl_crypt.cc:164-168
The storage root is the external files directory of the package and is passed
as a launch argument beside the config path and the log path. Content, cache,
patches and plugins hang off it, the global configuration is
xenia-canary.config.toml, and per title overrides live in
custom_config/<title_id>.config.toml. The custom driver directory sits in
internal storage instead, because the external filesystem cannot carry an
executable mapping.
ref: ax360e/app/src/main/java/aenu/ax360e/Application.java:14-53,
ax360e/app/src/main/java/aenu/ax360e/EmulatorActivity.java:67-73,
ax360e/app/src/main/cpp/ax360e_emu.cpp:273-316
ES-DE starts the emulator with the aenu.intent.action.AX360E action and a
game_uri extra. The native side dispatches on the name the descriptor resolves
to: .xex, .iso and .zar each go to their own loader, and anything else is taken
for an STFS container and launched beside a sibling directory named after the
file with .data appended.
ref: ax360e/app/src/main/AndroidManifest.xml:57-59,
ax360e/app/src/main/cpp/ax360e_emu.cpp:554-575
A default profile ships with the application. Its Account blob is extracted
from the assets on first run under XUID E0300000A360E000, and the shipped
configuration logs that XUID into slot 0. Further profiles are created by the
emulator itself, which writes the blob it encrypts.
ref: ax360e/app/src/main/java/aenu/ax360e/Application.java:30-34,
ax360e/app/src/main/java/aenu/ax360e/Application.java:92-96,
ax360e/app/src/main/assets/config/default_config.toml:314,
ax360e/app/src/main/cpp/xenia-canary/src/xenia/kernel/xam/profile_manager.cc:502-558
477 game patches ship inside the APK. The patch database reads the patches
directory only, so a bundled patch reaches the emulator once the user opens the
patch dialog for that title and presses Apply, which writes the asset out under
the same name.
ref: ax360e/app/src/main/assets/game-patches,
ax360e/app/src/main/cpp/xenia-canary/src/xenia/patcher/patch_db.cc:30-56,
ax360e/app/src/main/java/aenu/ax360e/Emulator.java:121-151,
ax360e/app/src/main/java/aenu/ax360e/MainActivity.java:503-512
files:
- name: "<driver>.zip"
required: false
config_key: "Vulkan|vulkan_lib_path"
unsourceable: "third-party Vulkan driver built for one GPU family, not an emulator artefact"
description: "Replacement Vulkan driver package"
note: >-
Imported through a picker that keeps only names ending in .zip. The archive
is read whole, meta.json names the library to keep, and a single .so is
taken instead when no meta.json is present; the .so files and meta.json are
unpacked into a directory named after the archive, in internal storage. The
configured path is read before the instance is created and opened through
adrenotools when it exists, otherwise the system libvulkan.so is used. The
setting is greyed out on devices without /dev/kgsl-3d0.
source_ref: "ax360e/app/src/main/java/aenu/ax360e/EmulatorSettings.java:709-713, ax360e/app/src/main/java/aenu/ax360e/Utils.java:150-215, ax360e/app/src/main/cpp/xenia-canary/src/xenia/ui/vulkan/vulkan_instance.cc:34, ax360e/app/src/main/cpp/xenia-canary/src/xenia/ui/vulkan/vulkan_instance.cc:71-91, ax360e/app/src/main/java/aenu/emulator/Emulator.java:116-122"
- name: "<font>.ttf"
required: false
config_key: "UI|custom_font_path"
unsourceable: "any TrueType face the user picks, with no name or version the code expects"
description: "Replacement face for the overlay text"
note: >-
Loaded first when the configured path exists, over the Basic Latin, Latin
Supplement, Extended Latin, Greek, Cyrillic, punctuation, superscript,
letterlike and number form ranges. A face that fails to build is cleared and
the embedded ProggyTiny is used instead, so the absence is covered.
source_ref: "ax360e/app/src/main/cpp/xenia-canary/src/xenia/ui/imgui_drawer.cc:42-44, ax360e/app/src/main/cpp/xenia-canary/src/xenia/ui/imgui_drawer.cc:340-374, ax360e/app/src/main/cpp/xenia-canary/src/xenia/ui/imgui_drawer.cc:507-514"
- name: "<title_id> - <title>.patch.toml"
required: false
bundled: true
description: "Memory patch set for one title"
note: >-
Read from the patches directory under the storage root, keeping names that
open with eight hexadecimal digits and close with .patch.toml. The title id
and title name fields and a hash node are mandatory, the file is dropped
without them, and each entry of the patch array is applied only when its
is_enabled flag is set and the module hash matches. Patching is on by
default.
source_ref: "ax360e/app/src/main/cpp/xenia-canary/src/xenia/patcher/patch_db.cc:17-18, ax360e/app/src/main/cpp/xenia-canary/src/xenia/patcher/patch_db.cc:30-98, ax360e/app/src/main/cpp/xenia-canary/src/xenia/patcher/patch_db.h:121-122, ax360e/app/src/main/cpp/xenia-canary/src/xenia/patcher/patcher.cc:22-35, ax360e/app/src/main/cpp/xenia-canary/src/xenia/emulator.cc:308"
- name: plugins.toml
required: false
config_key: "General|allow_plugins"
unsourceable: "per-title manifest written by whoever authors the mod, with no distributed form"
description: "Plugin manifest for one title"
note: >-
Read from plugins/<TITLE_ID>/ under the storage root, where the directory
name is eight hexadecimal digits. Each entry of the plugin array needs a
hash node, and an entry without one is skipped. Plugin loading is off by
default, so nothing under plugins is scanned until it is turned on.
source_ref: "ax360e/app/src/main/cpp/xenia-canary/src/xenia/patcher/plugin_loader.cc:16-21, ax360e/app/src/main/cpp/xenia-canary/src/xenia/patcher/plugin_loader.cc:40-127, ax360e/app/src/main/cpp/xenia-canary/src/xenia/emulator.cc:320-321"
- name: "<plugin>.xex"
required: false
unsourceable: "homebrew module built for one title, distributed with the mod it belongs to"
description: "Plugin module named by a plugin manifest"
note: >-
The title directory is mounted as the plugins device and each enabled entry
whose hash matches the running module is loaded as a user module on its own
thread. A directory that cannot be mounted is a fatal error.
source_ref: "ax360e/app/src/main/cpp/xenia-canary/src/xenia/patcher/plugin_loader.cc:175-257, ax360e/app/src/main/cpp/xenia-canary/src/xenia/emulator.cc:1996-1999"
- name: Account
required: false
bundled: true
load_from: content_dir
path: "content/<XUID>/FFFE07D1/00010000/<XUID>/Account"
description: "Encrypted profile account blob"
note: >-
Opened from the mounted profile when a XUID is logged in, and decrypted with
the 0x19 key, retail first then devkit, against the HMAC the first sixteen
bytes carry. The application extracts the one it ships for XUID
E0300000A360E000 on first run, and the emulator writes its own when a
profile is created.
source_ref: "ax360e/app/src/main/cpp/xenia-canary/src/xenia/kernel/xam/profile_manager.cc:188-230, ax360e/app/src/main/cpp/xenia-canary/src/xenia/kernel/xam/profile_manager.cc:40-68, ax360e/app/src/main/java/aenu/ax360e/Application.java:30-34, ax360e/app/src/main/java/aenu/ax360e/Application.java:92-96"
exclusion_note: >
Six file loads present in the vendored tree are not reached by this build and
are not listed. The notification sound named by notification_sound_path is
played inside a XE_PLATFORM_WIN32 block, and the setting is dropped from the
generated preference screen. tahoma.ttf and msgothic.ttc are read by the
Windows font paths only. The fontconfig CJK match is compiled out by
XE_PLATFORM_LINUX && !(XE_PLATFORM_ANDROID || XE_PLATFORM_AX360E), and
platform.h defines XE_PLATFORM_AX360E for this target. gamecontrollerdb.txt
belongs to the SDL input driver, and xenia-hid-sdl is absent from the link
list. portable.txt is read by xenia_main.cc, which is not compiled, the
application supplying its own windowed app. libSPIRV-Tools-shared.so is loaded
by the standalone shader compiler and needs VULKAN_SDK in the environment.
librenderdoc.so is opened with RTLD_NOLOAD, which returns a handle only when
the library is already mapped and never reads the file.
ref: ax360e/app/src/main/cpp/xenia-canary/src/xenia/ui/imgui_guest_notification.cc:49-60,
ax360e/app/src/main/cpp/emulator_ax360e.cpp:356,
ax360e/app/src/main/cpp/xenia-canary/src/xenia/ui/imgui_drawer.cc:376-407,
ax360e/app/src/main/cpp/xenia-canary/src/xenia/ui/imgui_drawer.cc:409-493,
ax360e/app/src/main/cpp/xenia-canary/src/xenia/base/platform.h:34-37,
ax360e/app/src/main/cpp/CMakeLists.txt:91-131,
ax360e/app/src/main/cpp/xenia-canary/src/xenia/app/xenia_main.cc:480,
ax360e/app/src/main/cpp/xenia-canary/src/xenia/ui/vulkan/spirv_tools_context.cc:28-37,
ax360e/app/src/main/cpp/xenia-canary/src/xenia/ui/renderdoc_api.cc:35-41
+735
View File
@@ -0,0 +1,735 @@
emulator: beebem
type: standalone
core_classification: other
source: "https://github.com/stardot/beebem-windows"
upstream: "https://github.com/stardot/beebem-windows"
profiled_date: "2026-08-11"
source_commit: "a982ba6a74af09e801c296b29d514dbd4da09b94"
core_version: "4.19"
display_name: "Acorn - BBC Micro (BeebEm)"
cores: [beebem]
systems:
- bbc-micro-b
- bbc-micro-bplus
- bbc-master-128
- bbc-master-et
notes: |
BBC Micro and Master Series emulator for Windows. Started by Dave Gilbert on
Unix in 1994, ported to Windows. Five machine models: Model B, Model B with
Integra-B board, Model B Plus, Master 128, Master ET.
ref: Src/Model.h:24-32
Two file roots. GetUserDataPath() defaults to <Documents>\BeebEm and falls back
to <app>\UserData; it holds BeebFile/ and the .cfg and .kmap files. GetAppPath()
is the program directory and holds Teletext.fnt and the sound samples.
ref: Src/BeebWin.cpp:5813-5851
ROM slots are read from Roms.cfg: one OS ROM plus 16 paged banks per model,
each line naming a file under BeebFile/, or EMPTY, or RAM. Paths in the profile
are the shipped default configuration, which matches the DefaultRoms table
compiled into the binary.
ref: Src/RomConfigFile.cpp:39-141
ref: Src/BeebMem.cpp:1277-1356
A missing Roms.cfg is not covered by DefaultRoms: Load() returns at the open
failure, before the backfill loop, and RomConfigFile has no constructor and no
Reset() caller, so every slot stays an empty string and no ROM loads.
ref: Src/RomConfigFile.cpp:158-219
Roms_Torch.cfg is the alternate configuration for the Torch Z80 co-processor,
selected with `BeebEm.exe -Roms Roms_Torch.cfg` by the shipped BeebEmTorch.vbs.
It adds the MCP host-tube ROMs and swaps the Integra-B slots.
ref: UserData/Roms_Torch.cfg, BeebEmTorch.vbs:3
ReadRom derives a .map path from every ROM file name and hands it to the
debugger symbol loader. Only BBC/OS12.map ships.
ref: Src/BeebMem.cpp:1252-1254, 1311-1313
No hash is verified anywhere. The code checks sizes only, per entry below.
Hashes here identify the dumps the emulator ships.
BeebFile/ also carries an application ROM library (word processors, drawing
packages, language ROMs) and DiscIms/ carries the disc images supplied with the
Master 512, ARM and Z80 co-processors. No code path names them; they load only
through the file browser in Edit ROM Configuration, the same way a disc image
does.
ref: Src/RomConfigDialog.cpp:179-215
Alternate dumps ship under their own names for slots already listed here:
BeebFile/M128-MOS3.5/ holds the MOS 3.50 set for the M128 slots, and
BeebFile/Z80-1.20.rom is the Acorn v1.20 Z80 ROM. Both are used by renaming
them onto the listed paths, so they are variants of those entries.
ref: Help/roms.html, Help/z80copro.html
exclusion_note: >
The TMS5220 speech generator is compiled out. Speech.cpp:57-1621 wraps the whole
implementation, including the SpeechInit() that reads Phroms.cfg and the PHROM
files, in #if ENABLE_SPEECH, and all four build configurations in
Src/BeebEm.vcxproj define ENABLE_SPEECH=0. Every call site is guarded the same
way. UserData/Phroms.cfg and the seven files in UserData/Phroms/ (PHROMA,
PHROMUS, VM61002-5.bin, VM71003A.bin) ship but no released binary opens them.
ref: Src/BeebEm.vcxproj:98,117,134,157 - Src/Speech.cpp:57,1621 - Help/speech.html
files:
# -- BBC Model B --
- name: OS12.rom
path: BeebFile/BBC/OS12.rom
description: "BBC Micro OS 1.20"
system: bbc-micro-b
required: true
bundled: true
size: 16384
md5: 0a59a5ba15fe8557b5f7fee32bbd393a
sha1: 0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d
validation: [size]
note: "OS ROM slot. Read into 0xc000; an error is reported unless 16384 bytes are read."
source_ref: "Src/BeebMem.cpp:1291-1308, Src/RomConfigFile.cpp:43"
- name: BASIC2.rom
path: BeebFile/BBC/BASIC2.rom
description: "BBC BASIC II"
system: bbc-micro-b
required: true
bundled: true
size: 16384
md5: 2cc67be4624df4dc66617742571a8e3d
sha1: 4a7393f3a45ea309f744441c16723e2ef447a281
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:44, Src/BeebMem.cpp:1322-1356"
- name: DNFS.rom
path: BeebFile/BBC/DNFS.rom
description: "Acorn DFS 1.20 and NFS 3.34 combined"
system: bbc-micro-b
required: true
bundled: true
size: 16384
md5: 5daed103918277e2065dd7e8d23e57a5
sha1: 7e3c536baeae84d6498a14e8405319e01ee78232
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:45, Src/BeebMem.cpp:1322-1356"
- name: OS12.map
path: BeebFile/BBC/OS12.map
description: "Debugger symbol map for OS 1.20"
system: bbc-micro-b
required: false
bundled: true
size: 19711
md5: c335bb52e811d79fd3cc9b4807f98cfd
sha1: 3fb4f63479a7bedec968ec47627b17752d5889e1
note: "Path derived from the ROM file name by ReplaceFileExt. Absence is silent."
source_ref: "Src/BeebMem.cpp:1311-1313"
# -- BBC Model B with Integra-B board --
- name: OS12.rom
path: BeebFile/BBCINT/OS12.rom
description: "BBC Micro OS 1.20, Integra-B configuration"
system: bbc-micro-b
required: true
bundled: true
size: 16384
md5: 0a59a5ba15fe8557b5f7fee32bbd393a
sha1: 0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d
validation: [size]
note: "OS ROM slot for Model::IntegraB. Same dump as BeebFile/BBC/OS12.rom."
source_ref: "Src/RomConfigFile.cpp:63, Src/BeebMem.cpp:1291-1308"
- name: IBOS126.rom
path: BeebFile/BBCINT/IBOS126.rom
description: "Integra-B IBOS 1.26"
system: bbc-micro-b
required: true
bundled: true
size: 16384
md5: 1b57c2ba920a00d5b4ef89be68aedc43
sha1: d0153203802c8ec3e3270443be809e23d574280b
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:64"
- name: BASIC2.rom
path: BeebFile/BBCINT/BASIC2.rom
description: "BBC BASIC II"
system: bbc-micro-b
required: true
bundled: true
size: 16384
md5: 2cc67be4624df4dc66617742571a8e3d
sha1: 4a7393f3a45ea309f744441c16723e2ef447a281
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:65"
- name: DNFS.rom
path: BeebFile/BBCINT/DNFS.rom
description: "Acorn DFS 1.20 and NFS 3.34 combined"
system: bbc-micro-b
required: true
bundled: true
size: 16384
md5: 5daed103918277e2065dd7e8d23e57a5
sha1: 7e3c536baeae84d6498a14e8405319e01ee78232
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:66"
- name: IBOS.rom
path: BeebFile/BBCINT/IBOS.rom
description: "Integra-B IBOS 1.20"
system: bbc-micro-b
required: false
bundled: true
size: 16384
md5: 8882e50d5d98851a04f541c71bd25f31
sha1: 0f5b2a5bee23808b34eab2f027f7c1e77395c782
max_size: 131072
note: "Integra-B slot under the Torch configuration."
source_ref: "UserData/Roms_Torch.cfg:24"
- name: WDFS.rom
path: BeebFile/BBCINT/WDFS.rom
description: "Watford DFS 1.44"
system: bbc-micro-b
required: false
bundled: true
size: 16384
md5: 1d250b0242e447e9106e8bfd1f27ea84
sha1: 387d2468c6e1360f5b531784ce95d5f71a50c2b5
max_size: 131072
note: "Filing system slot under the Torch configuration."
source_ref: "UserData/Roms_Torch.cfg:26"
- name: MCP120-CBL.rom
path: BeebFile/BBC/MCP120-CBL.rom
description: "Torch MCP 1.20 host tube ROM, 8271 FDC"
system: bbc-micro-b
required: false
bundled: true
size: 16384
md5: 42f92cb02602e903d7bdabb33bf30966
sha1: 0edb0db70c9571540793e321f527e68188b6e4cd
max_size: 131072
note: "Host tube support for the Torch Z80 co-processor on a Model B."
source_ref: "UserData/Roms_Torch.cfg:5, Help/z80torch.html"
# -- BBC Model B Plus --
- name: B+MOS.rom
path: BeebFile/BPLUS/B+MOS.rom
description: "BBC Model B Plus MOS 2.00"
system: bbc-micro-bplus
required: true
bundled: true
size: 16384
md5: 978370cc7ab8589a137ada34388a6e32
sha1: d9426dd7454ca199cdef9435daa332cdf405c965
validation: [size]
note: "OS ROM slot for Model::BPlus."
source_ref: "Src/RomConfigFile.cpp:83, Src/BeebMem.cpp:1291-1308"
- name: BASIC2.rom
path: BeebFile/BPLUS/BASIC2.rom
description: "BBC BASIC II"
system: bbc-micro-bplus
required: true
bundled: true
size: 16384
md5: 2cc67be4624df4dc66617742571a8e3d
sha1: 4a7393f3a45ea309f744441c16723e2ef447a281
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:84"
- name: DFS-2.26.rom
path: BeebFile/BPLUS/DFS-2.26.rom
description: "Acorn 1770 DFS 2.26"
system: bbc-micro-bplus
required: true
bundled: true
size: 16384
md5: f083f49d6fe66344c650d7e74249cb96
sha1: cf2ebc422a8d24ec6f1a0320520c38a0e704109a
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:85"
- name: ADFS-1.30.rom
path: BeebFile/BPLUS/ADFS-1.30.rom
description: "Acorn ADFS 1.30"
system: bbc-micro-bplus
required: false
bundled: true
size: 16384
md5: 831ee90ac5d49ba5507252faf0c12536
sha1: 301fd05c475a629c4bec70510d4507256a5b00d8
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:86"
- name: WDFS.rom
path: BeebFile/BPLUS/WDFS.rom
description: "Watford DFS 1.44"
system: bbc-micro-bplus
required: false
bundled: true
size: 16384
md5: 1d250b0242e447e9106e8bfd1f27ea84
sha1: 387d2468c6e1360f5b531784ce95d5f71a50c2b5
max_size: 131072
note: >
Named as a Model B Plus essential ROM by the emulator help, which predates
the current default configuration: the DefaultRoms table and the shipped
Roms.cfg fill the filing system slots with DFS-2.26.rom and ADFS-1.30.rom.
source_ref: "Help/roms.html, Src/RomConfigFile.cpp:83-99"
# -- BBC Master 128 --
- name: MOS.rom
path: BeebFile/M128/MOS.rom
description: "BBC Master 128 MOS 3.20"
system: bbc-master-128
required: true
bundled: true
size: 16384
md5: 9087f772447038a00178488b3591347b
sha1: 04d5876999f93fc61a18f172b1fbb3b75db733ac
validation: [size]
note: "OS ROM slot for Model::Master128."
source_ref: "Src/RomConfigFile.cpp:103, Src/BeebMem.cpp:1291-1308"
- name: Terminal.rom
path: BeebFile/M128/Terminal.rom
description: "Master 128 Terminal emulator ROM"
system: bbc-master-128
required: true
bundled: true
size: 16384
md5: 7e053353b78b4631c274280931d96f02
sha1: d990f41a3a0605127083a3cf7a3a676dd30423ef
max_size: 131072
note: "A different dump from the Master ET Terminal.rom of the same name."
source_ref: "Src/RomConfigFile.cpp:104"
- name: BASIC4.rom
path: BeebFile/M128/BASIC4.rom
description: "BBC BASIC IV"
system: bbc-master-128
required: true
bundled: true
size: 16384
md5: 63a6f43cbf491533cb03ceca2d2728d4
sha1: c45fd3c0abdcd32b78d2288addd2a777b19e9a1d
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:107"
- name: DFS.rom
path: BeebFile/M128/DFS.rom
description: "Master 128 DFS 2.24"
system: bbc-master-128
required: true
bundled: true
size: 16384
md5: 865a0f7a5d6f10f48798801bf514d761
sha1: cff80460954b3b9f75c83bd6a301c45d24d118a6
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:110"
- name: ADFS.rom
path: BeebFile/M128/ADFS.rom
description: "Master 128 ADFS 2.03"
system: bbc-master-128
required: false
bundled: true
size: 16384
md5: 10f08b255d6a6e3e888631946b628f1a
sha1: 7557e99be10d81c0395df2dc6c2f8e2f95896c29
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:106"
- name: View.rom
path: BeebFile/M128/View.rom
description: "Acorn View word processor"
system: bbc-master-128
required: false
bundled: true
size: 16384
md5: 178d09285727d596f8863f94a2fc8dad
sha1: 14820174e8ea802f1ae95186285a4592fd519699
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:105"
- name: Edit.rom
path: BeebFile/M128/Edit.rom
description: "Acorn Edit text editor"
system: bbc-master-128
required: false
bundled: true
size: 16384
md5: cb3d762eaab6130d1360e1ac575589de
sha1: 96d209441f4cabacf3d4e8e9da68cce918ea923e
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:108"
- name: ViewSheet.rom
path: BeebFile/M128/ViewSheet.rom
description: "Acorn ViewSheet spreadsheet"
system: bbc-master-128
required: false
bundled: true
size: 16384
md5: 7d5a80a8ce929d0a0f6ca8626cb9f436
sha1: b7e85a55f517959912422b02248a03a4d32f6998
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:109"
- name: ANFS-4.25-2201351.rom
path: BeebFile/M128/ANFS-4.25-2201351.rom
description: "Acorn Advanced NFS 4.25"
system: bbc-master-128
required: false
bundled: true
size: 16384
md5: 306cb8ff6622dbfc79dc487ac4e407e1
sha1: 14f75d36ffe9af14aaac42df55b4fe3729ba75cf
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:111"
- name: MCP122-ABM.rom
path: BeebFile/M128/MCP122-ABM.rom
description: "Torch MCP 1.22 host tube ROM, Master"
system: bbc-master-128
required: false
bundled: true
size: 16384
md5: bf3d2b0a61ba36bd08d02f30e632e5ce
sha1: 35843ace281494ab40463a69a263244d0cb0ecd6
max_size: 131072
note: "Host tube support for the Torch Z80 co-processor on a Master."
source_ref: "UserData/Roms_Torch.cfg:79, Help/z80torch.html"
# -- BBC Master ET --
- name: MOS400.rom
path: BeebFile/Master ET/MOS400.rom
description: "BBC Master ET MOS 4.00"
system: bbc-master-et
required: true
bundled: true
size: 16384
md5: 4d4afbf220abaa702026f42f98eb5807
sha1: c9483ef3ebd66930e635674a3776d171785ae959
validation: [size]
note: "OS ROM slot for Model::MasterET."
source_ref: "Src/RomConfigFile.cpp:123, Src/BeebMem.cpp:1291-1308"
- name: Terminal.rom
path: BeebFile/Master ET/Terminal.rom
description: "Master ET Terminal emulator ROM"
system: bbc-master-et
required: true
bundled: true
size: 16384
md5: 456cb9035fd3d6c9d4d98adcd65882d8
sha1: 0b4425149ca93dddf8d03da3767635dc3f1eecb8
max_size: 131072
note: "A different dump from the Master 128 Terminal.rom of the same name."
source_ref: "Src/RomConfigFile.cpp:124"
- name: ANFS425.rom
path: BeebFile/Master ET/ANFS425.rom
description: "Acorn Advanced NFS 4.25"
system: bbc-master-et
required: true
bundled: true
size: 16384
md5: 306cb8ff6622dbfc79dc487ac4e407e1
sha1: 14f75d36ffe9af14aaac42df55b4fe3729ba75cf
max_size: 131072
note: "Filing system of the Econet terminal, which has no disc filing system."
source_ref: "Src/RomConfigFile.cpp:125"
- name: BASIC4.rom
path: BeebFile/Master ET/BASIC4.rom
description: "BBC BASIC IV"
system: bbc-master-et
required: true
bundled: true
size: 16384
md5: 63a6f43cbf491533cb03ceca2d2728d4
sha1: c45fd3c0abdcd32b78d2288addd2a777b19e9a1d
max_size: 131072
source_ref: "Src/RomConfigFile.cpp:126"
# -- Second processor ROMs --
- name: 6502Tube.rom
path: BeebFile/6502Tube.rom
description: "Acorn 6502 second processor Tube OS 1.10"
system: bbc-micro-b
required: false
bundled: true
size: 2048
md5: cd6ba85e22adec70b6d863de4c053db7
sha1: 05980c296e1a7800c4aa21d6bed16323b6d859d5
validation: [size]
note: >
Copied into tube RAM at 0xf800 on every 65C02 reset. An error is reported
unless 2048 bytes are read.
source_ref: "Src/Tube.cpp:1534-1559"
- name: Z80.rom
path: BeebFile/Z80.rom
description: "Acorn Z80 second processor ROM 1.21"
system: bbc-micro-b
required: false
bundled: true
size: 4096
md5: c4c72ceb73300253dc69c865af32f5ac
sha1: d05de861922fed73041cc8ac2666886d95bae15b
validation: [size]
note: >
Loaded for TubeDevice::AcornZ80. An error is reported unless 4096 bytes are
read. Jonathan Harston's v1.21; the Acorn v1.20 ships as Z80-1.20.rom and is
used by renaming it onto this path.
source_ref: "Src/Z80Support.cpp:243-267, Help/z80copro.html"
- name: CCPN102.rom
path: BeebFile/CCPN102.rom
description: "Torch Z80 CCPN 1.02 second processor ROM"
system: bbc-micro-b
required: false
bundled: true
size: 8192
md5: f786d0647f9732fa065695d569d261ab
sha1: e6ee738e5f2f8556002b79d18caa8ef21f14e08d
size_options: [2048, 4096, 8192]
note: >
Loaded for TubeDevice::TorchZ80. Up to 8192 bytes are read and a short image
is mirrored to fill the 8 KB window: a 2 KB image is repeated four times, a
4 KB image twice. No size is rejected.
source_ref: "Src/Z80Support.cpp:268-299"
- name: BIOS.rom
path: BeebFile/BIOS.rom
description: "Master 512 80186 co-processor BIOS"
system: bbc-master-128
required: false
bundled: true
size: 16384
md5: de72efe184f74f1cb98f92b1fbf532bb
sha1: eb2a043d139ae0f3d512b4f1afa32286510c886c
validation: [size]
note: >
Loaded at 0xf0000 and mirrored three times to fill the top of the 1 MB space.
An error is reported unless 0x4000 bytes are read.
source_ref: "Src/Master512CoPro.cpp:3768-3797"
- name: ARMeval_100.rom
path: BeebFile/ARMeval_100.rom
description: "Acorn ARM Evaluation System ROM 1.00"
system: bbc-master-128
required: false
bundled: true
size: 16384
md5: 751f615ccbefa312915d1be8aa5617f5
sha1: ba33eaf1a23cfef6fc1b88aa516ca2b3693e69d9
validation: [size]
note: >
Rejected as InvalidROM unless the file is exactly ROM_SIZE, which Arm.h
defines as 0x4000. The dialog text at BeebWin.cpp:1043 says 4096 bytes and
does not match the constant it reports on.
source_ref: "Src/Arm.cpp:100-129, Src/Arm.h:254, Src/BeebWin.cpp:1017-1047"
- name: Sprow.rom
path: BeebFile/Sprow.rom
description: "Sprow ARM7TDMI co-processor system software 0.40"
system: bbc-master-128
required: false
bundled: true
size: 524288
md5: 4da45778c15098755294b8b78e32839b
sha1: babfb5bdb8265cf3ac7feff254146cb2d2773da1
validation: [size]
note: >
512 KB on-board flash carrying the system software and BASIC. Rejected as
InvalidROM unless the file is exactly 0x80000 bytes.
source_ref: "Src/SprowCoPro.cpp:51-90, Src/SprowCoPro.h:49, Src/BeebWin.cpp:1058-1088"
# -- Program directory files --
- name: Teletext.fnt
description: "Mode 7 SAA5050 teletext character set"
system: bbc-micro-b
required: true
bundled: true
size: 3456
md5: 007ba0c023740666e56f879f5d0d4461
sha1: 7d1d2a7321b21a237ad2c52afb21a432ce674967
note: >
Read from the program directory. The only file whose absence stops the
emulator: BuildMode7Font failure makes Initialise return false and Main.cpp
then exits with status 1.
source_ref: "Src/BeebWin.cpp:491-502, Src/Main.cpp:62-66"
- name: RelayOn.snd
description: "Cassette relay engage sample"
system: bbc-micro-b
required: false
bundled: true
size: 297
md5: 6e7137fbd3545f8303b6d1594c3b2ccb
sha1: b6e7c8a33117f4f8a49c5fd4326f948d1763f1e1
note: "Read from the program directory. Missing samples are reported and playback is skipped."
source_ref: "Src/Sound.cpp:65, 538-570, 805"
- name: RelayOff.snd
description: "Cassette relay release sample"
system: bbc-micro-b
required: false
bundled: true
size: 400
md5: 0699cec768a8f84827fef594f4f73c22
sha1: 9c9a3d5ebf0e4b4c183e74b9c2ec79f280cc1556
source_ref: "Src/Sound.cpp:66, 538-570"
- name: DriveMotor.snd
description: "Disc drive motor sample"
system: bbc-micro-b
required: false
bundled: true
size: 44127
md5: a681147ce93e1b5a9e22bb00b701e1cf
sha1: cf496c677d345bb65feccf8cf2269a4cd7053645
source_ref: "Src/Sound.cpp:67, 538-570"
- name: HeadLoad.snd
description: "Disc drive head load sample"
system: bbc-micro-b
required: false
bundled: true
size: 8837
md5: cf30cf2585f9edff7a3d166e6a07b40a
sha1: 2f7204df95363ce56c486696a878ed113bedb23b
source_ref: "Src/Sound.cpp:68, 538-570"
- name: HeadUnload.snd
description: "Disc drive head unload sample"
system: bbc-micro-b
required: false
bundled: true
size: 4446
md5: d9b352abee95ee2873c1753fb0d6ad11
sha1: 781692c24e737d60045b10eb0b8434eccdd1ea82
source_ref: "Src/Sound.cpp:69, 538-570"
- name: HeadSeek.snd
description: "Disc drive head seek sample"
system: bbc-micro-b
required: false
bundled: true
size: 31969
md5: 2672a78593558045736c62cf9e0252bc
sha1: 759d62a94e1571810fe2edc10e14b07b5dd4b2b5
source_ref: "Src/Sound.cpp:70, 538-570"
- name: HeadStep.snd
description: "Disc drive head step sample"
system: bbc-micro-b
required: false
bundled: true
size: 2251
md5: 46c4fdb65f67ac2cdc97fb42455d3b11
sha1: 5e07a972059751d094fc96610734bb6d659348fe
source_ref: "Src/Sound.cpp:71, 538-570"
# -- User data directory files --
- name: Roms.cfg
description: "ROM slot table, one OS ROM plus 16 paged banks per model"
system: bbc-micro-b
required: true
bundled: true
size: 840
md5: 33c5208252f32334618a3fd9294acdf4
sha1: a538968ecb96e520546a99008cdfc2af98a92a81
note: >
Without it Load returns before the DefaultRoms backfill, every slot stays an
empty string and no ROM is loaded. Overridable with -Roms.
source_ref: "Src/BeebWin.cpp:334, 473, Src/RomConfigFile.cpp:158-219"
- name: Roms_Torch.cfg
description: "ROM slot table for the Torch Z80 co-processor"
system: bbc-micro-b
required: false
bundled: true
size: 817
md5: 4a3789eb3c7949871cdbfd856d21625d
sha1: 7b0827bd0fd9425c2e1b4f59313701b78f6d83e0
note: "Selected by the shipped BeebEmTorch.vbs as `BeebEm.exe -Roms Roms_Torch.cfg`."
source_ref: "BeebEmTorch.vbs:3, Help/z80torch.html"
- name: Preferences.cfg
description: "Emulator preferences"
system: bbc-micro-b
required: false
bundled: true
size: 2047
md5: 0108b1eb683308408ad109ce6e4d2839
sha1: 31291e6f9e2f0b20ccb80bf3ef5e2fe8a5dc712c
note: "Absence is reported and built-in defaults are used. Rewritten on save."
source_ref: "Src/BeebWin.cpp:296, Src/BeebWinPrefs.cpp:282-298, Src/Preferences.cpp:59-66"
- name: Logical.kmap
description: "Logical keyboard mapping"
system: bbc-micro-b
required: false
bundled: true
size: 6716
md5: 07b0e1d4cb329185a8a52c48db00bcf9
sha1: 5817277bcb110b747432b8716a0ffbe0c1e13de2
note: "Read at ApplyPreferences. The return value is ignored, leaving the built-in map."
source_ref: "Src/BeebWin.cpp:560-563, Src/KeyMap.cpp:65-78"
- name: Default.kmap
description: "Default keyboard mapping"
system: bbc-micro-b
required: false
bundled: true
size: 6716
md5: 199de64bdb59a176d102f03cca4eadf9
sha1: 63c72e11f6ce8cd9dc5ebb96b4938010f4b2e4f0
source_ref: "Src/BeebWin.cpp:565-567, Src/KeyMap.cpp:65-78"
- name: DefaultUser.kmap
description: "Fallback user keyboard mapping"
system: bbc-micro-b
required: false
bundled: true
size: 6716
md5: 199de64bdb59a176d102f03cca4eadf9
sha1: 63c72e11f6ce8cd9dc5ebb96b4938010f4b2e4f0
note: "Read only when the user key map preference is unset or fails to load."
source_ref: "Src/BeebWinPrefs.cpp:934-957"
- name: Econet.cfg
description: "Econet station to address map"
system: bbc-micro-b
required: false
bundled: true
size: 5704
md5: 7cb22b998d2de0f85a638485b9f8db6e
sha1: faf55cd1eafaa3499695fe8179e43ffe6f86daaa
note: >
Read when Econet is enabled, which is off by default. A read failure makes
EconetReset return false and Econet stays off. Overridable with -EconetCfg.
source_ref: "Src/BeebWin.cpp:526-537, Src/Econet.cpp:784-792, 1039-1042"
- name: AUNMap
description: "Econet network to IP subnet map"
system: bbc-micro-b
required: false
bundled: true
size: 1812
md5: d2e4b22f9433cf16a3dcb320dc2cf1a2
sha1: efd505f459448c5741a8ca249089f068b72cb751
note: "Read only when AUN mode is on. Overridable with -AUNMap."
source_ref: "Src/BeebWin.cpp:539-550, Src/Econet.cpp:931-938, 1059-1061"
File diff suppressed because it is too large. Load diff
+202
View File
@@ -0,0 +1,202 @@
emulator: Citra MMJ
type: standalone
core_classification: community_fork
source: "https://github.com/weihuoya/citra"
upstream: "https://github.com/weihuoya/citra"
profiled_date: "2026-08-11"
source_commit: "302b0c3bc4312bc96489c11584a97664894b343f"
core_version: "20251112"
display_name: "Nintendo - 3DS (Citra MMJ)"
cores:
- citra-mmj
systems:
- nintendo-3ds
mode: standalone
notes: |
Citra fork for Android, shipped as four APKs of the same build per release:
the org.citra.emu package, a com.antutu.ABenchMark package, and a
StorageAccess variant of each. The user directory is citra-emu at the root of
external storage, and Android/data/org.citra.emu/files/citra-emu for the
StorageAccess builds. External files live in sysdata/ and nand/ below it.
ref: src/android/app/src/main/java/org/citra/emu/utils/CitraDirectory.java:61-94,
src/common/common_paths.h:23-29, src/common/file_util.cpp:398-430
InitKeys reads boot9.bin, then the native firm titles in the NAND tree, then
sector0x96.bin for the New 3DS firm, then aes_keys.txt. Content left
encrypted stops loading with ErrorEncrypted, shown as "ROM Encrypted".
ref: src/core/hw/aes/key.cpp:497-508, src/core/file_sys/ncch_container.cpp:348-351,
src/android/jni/main_android.cpp:88-90
GetSharedFont tries the shared font system archive, then shared_font.bin,
then the regional BCFNT for the CFG region, and ends the session with
ErrorSystemFiles when the three fail. The embedded open-source font answers
title low ID 0x00014002 only, so CHN, KOR and TWN, which resolve to
0x00014102, 0x00014202 and 0x00014302, depend on a file. Region defaults to
the code the ROM declares.
ref: src/core/hle/service/apt/apt.cpp:143, src/core/hle/service/apt/apt.cpp:256-272,
src/core/file_sys/archive_ncch.cpp:143-148, src/core/hle/service/cfg/cfg.cpp:176-181
Loading the four regional fonts from sysdata is specific to this fork.
ref: src/core/hle/service/apt/apt.cpp:184-228
The APK assets carry those fonts, three system archives, the DLP module and a
seeded CFG savegame, and the first run copies them into the user directory
without overwriting what is already there. System archives ship as split-off
RomFS, picked up beside the .app path the title tree resolves to.
ref: src/android/app/src/main/java/org/citra/emu/utils/CitraDirectory.java:192-207,
src/android/app/src/main/java/org/citra/emu/utils/CitraDirectory.java:368-399,
src/core/file_sys/ncch_container.cpp:726-741
LLE is opt-in per service module and reads the module from the NAND title
tree, falling back to HLE when it is absent. There is no title downloader:
system titles come from CIA files the user installs.
ref: src/core/hle/service/service.cpp:60-107, src/core/hle/service/service.cpp:197-213,
src/android/jni/main_android.cpp:278-289
ClCertA is read from NAND title 0x0004001b00010002 and decrypted with the
keyslot 0x0D normal key. HTTPS client authentication stays off without both.
ref: src/core/hle/service/http_c.cpp:810-884
Amiibo dumps are read as .bin files from amiibo/, cheat codes from
cheats/<title id>.txt, texture packs and mods from load/.
ref: src/android/app/src/main/java/org/citra/emu/ui/AmiiboDialog.java:57-64,
src/core/cheats/cheats.cpp:93-110, src/core/custom_tex_cache.cpp:67,
src/core/file_sys/ncch_container.cpp:359-365
files:
- name: boot9.bin
path: sysdata/boot9.bin
system: nintendo-3ds
required: false
size: 65536
validation: [size]
description: "ARM9 bootrom"
note: "AES key section read at offset 55760, RSA modulus and exponent at 0xB3E0 and 0xB4E0. Both readers bail on any other size."
source_ref: "src/core/hw/aes/key.cpp:135-205, src/core/hw/rsa/rsa.cpp:49-80"
- name: aes_keys.txt
path: sysdata/aes_keys.txt
system: nintendo-3ds
required: false
description: "AES key slots"
note: "One name=hex pair per line, slot0x<NN>Key<X|Y|N> and common<N>. Read last, so it overrides what boot9.bin and the native firm titles set."
source_ref: "src/core/hw/aes/key.cpp:428-493, src/core/hw/aes/key.cpp:497-508"
- name: sector0x96.bin
path: sysdata/sector0x96.bin
system: nintendo-3ds
required: false
min_size: 17
validation: [size]
description: "New 3DS NAND secret sector"
note: "First 16 bytes decrypt the slot 0x15 KeyX of the New 3DS safe mode native firm, title 0x0004013820000003. A file of 16 bytes or less trips a live assert: Android compiles out ASSERT_MSG, not ASSERT."
source_ref: "src/core/hw/aes/key.cpp:309-345, src/core/hw/aes/key.cpp:380-386, src/common/assert.h:30-35, src/common/assert.h:59-62"
- name: seeddb.bin
path: sysdata/seeddb.bin
system: nintendo-3ds
required: false
description: "game seed database"
note: "Seed-encrypted titles from firmware 9.6 onwards. An empty database is written when the file is absent."
source_ref: "src/core/file_sys/seed_db.cpp:12-57"
- name: shared_font.bin
path: sysdata/shared_font.bin
system: nintendo-3ds
required: false
hle_fallback: true
description: "system shared font, legacy dump"
note: "Copied whole into the shared memory block, so the file carries the 0x80 byte APT header. Tried after the system archive and before the regional BCFNT files."
source_ref: "src/core/hle/service/apt/apt.cpp:230-246, src/core/hle/service/apt/apt.cpp:256-272"
- name: cbf_std.bcfnt
path: sysdata/cbf_std.bcfnt
system: nintendo-3ds
required: false
bundled: true
hle_fallback: true
region: [japan, north-america, europe, australia]
description: "shared font for JPN, USA, EUR and AUS"
note: "Read to offset 0x80 of the shared memory block, so the file is a bare uncompressed BCFNT. Selected for every CFG region other than CHN, KOR and TWN, where the embedded open-source font already answers the archive request."
source_ref: "src/core/hle/service/apt/apt.cpp:184-228, src/core/file_sys/archive_ncch.cpp:143-148"
- name: cbf_zh-Hans-CN.bcfnt
path: sysdata/cbf_zh-Hans-CN.bcfnt
system: nintendo-3ds
required: false
bundled: true
region: [china]
description: "shared font for CHN"
note: "Selected when the CFG region is CHN. The embedded font does not cover archive 0x00014102, so the session ends with ErrorSystemFiles without this file or shared_font.bin."
source_ref: "src/core/hle/service/apt/apt.cpp:184-228, src/core/hle/service/apt/apt.cpp:256-272"
- name: cbf_ko-Hang-KR.bcfnt
path: sysdata/cbf_ko-Hang-KR.bcfnt
system: nintendo-3ds
required: false
bundled: true
region: [south-korea]
description: "shared font for KOR"
note: "Selected when the CFG region is KOR. The embedded font does not cover archive 0x00014202, so the session ends with ErrorSystemFiles without this file or shared_font.bin."
source_ref: "src/core/hle/service/apt/apt.cpp:184-228, src/core/hle/service/apt/apt.cpp:256-272"
- name: cbf_zh-Hant-TW.bcfnt
path: sysdata/cbf_zh-Hant-TW.bcfnt
system: nintendo-3ds
required: false
bundled: true
region: [taiwan]
description: "shared font for TWN"
note: "Selected when the CFG region is TWN. The embedded font does not cover archive 0x00014302, so the session ends with ErrorSystemFiles without this file or shared_font.bin."
source_ref: "src/core/hle/service/apt/apt.cpp:184-228, src/core/hle/service/apt/apt.cpp:256-272"
- name: "00000000.app.romfs"
path: nand/00000000000000000000000000000000/title/0004009b/00010202/content/00000000.app.romfs
system: nintendo-3ds
required: false
bundled: true
hle_fallback: true
description: "Mii data system archive, title 0x0004009b00010202"
note: "Split-off RomFS served in place of the NCCH the title tree resolves to. An open-source replacement is built into the binary."
source_ref: "src/core/file_sys/ncch_container.cpp:726-741, src/core/file_sys/archive_ncch.cpp:132-136"
- name: "00000000.app.romfs"
path: nand/00000000000000000000000000000000/title/0004009b/00010402/content/00000000.app.romfs
system: nintendo-3ds
required: false
bundled: true
hle_fallback: true
description: "country list system archive, title 0x0004009b00010402"
note: "Split-off RomFS served in place of the NCCH the title tree resolves to. An open-source replacement is built into the binary."
source_ref: "src/core/file_sys/ncch_container.cpp:726-741, src/core/file_sys/archive_ncch.cpp:137-142"
- name: "00000000.app.romfs"
path: nand/00000000000000000000000000000000/title/000400db/00010302/content/00000000.app.romfs
system: nintendo-3ds
required: false
bundled: true
hle_fallback: true
description: "bad word list system archive, title 0x000400db00010302"
note: "Split-off RomFS served in place of the NCCH the title tree resolves to. An open-source replacement is built into the binary."
source_ref: "src/core/file_sys/ncch_container.cpp:726-741, src/core/file_sys/archive_ncch.cpp:150-157"
- name: "00000000.tmd"
path: nand/00000000000000000000000000000000/title/00040130/00002802/content/00000000.tmd
system: nintendo-3ds
required: false
bundled: true
hle_fallback: true
description: "title metadata of the DLP module, title 0x0004013000002802"
note: "Read to resolve the content ID of index 0, which the shipped metadata gives as 0x1f. Without it the path falls back to content ID 0 and the module is not found."
source_ref: "src/core/hle/service/am/am.cpp:466-501"
- name: "0000001f.app"
path: nand/00000000000000000000000000000000/title/00040130/00002802/content/0000001f.app
system: nintendo-3ds
required: false
bundled: true
hle_fallback: true
description: "DLP system module, title 0x0004013000002802"
note: "Loaded as a process when LLE is enabled for DLP, otherwise the HLE service is installed."
source_ref: "src/core/hle/service/service.cpp:78, src/core/hle/service/service.cpp:197-213"