Files
libretro/emulators/emucorex.yml
T
Abdessamad Derraz 7ecd8c948f chore: record the sha1 of bundled files
336 entries for files that arrive with the emulator named no hash, so
the collected copy was the only record of which file the release
ships. Each now carries the sha1 and size of the copy collected from
that emulator's own release, so the profile keeps the file's identity
once the copy leaves the collection. Entries whose name is a pattern
keep no hash.
2026-10-20 09:29:18 +02:00

730 lines
38 KiB
YAML

emulator: EmuCoreX
type: standalone
core_classification: community_fork
source: "https://github.com/sashkinbro/EmuCoreX"
upstream: "https://github.com/PCSX2/pcsx2"
author: "Oleksandr (sashkinbro)"
profiled_date: "2026-10-04"
source_commit: "9884c9f9a0c5d5df2f0c0c064ec41029a4528d72"
prose_written_at: "9884c9f9a0c5d5df2f0c0c064ec41029a4528d72"
upstream_commit: "c10a5c9ad951c517dc48b722b5b84eb9bf7fdb42"
core_version: "0.4.7"
display_name: "Sony - PlayStation 2 (EmuCoreX)"
cores:
- emucorex
systems:
- sony-playstation-2
mode: standalone
bios_directory: "bios/"
resources_directory: "resources/"
notes: |
PlayStation 2 emulator for Android, package com.sbro.emucorex, arm64-v8a only,
minSdk 29. A Kotlin and Compose front end drives a PCSX2 tree vendored under
app/src/main/cpp/pcsx2 and pinned to v2.8.0, reached through the ARM_ANDROID
adapter that owns the JNI entry points. Frontends start the exported activity
com.sbro.emucorex.MainActivity, and ES-DE passes the disc as the intent data URI.
ref: app/build.gradle.kts:66-70, app/build.gradle.kts:97,
app/src/main/AndroidManifest.xml:90-104,
app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:78-82,
app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:359-360
The whole upstream core is linked, with three files swapped out of the target:
Achievements.cpp, Host/SDLAudioStream.cpp and Input/SDLInputSource.cpp are
removed and replaced by the adapter's own achievements, AAudio and OpenSL, and
input sources. OpenGL and Vulkan are on, pcsx2-qt is never added, and the
DX11 and DX12 renderers sit in the Windows branch of the core CMakeLists.
ref: app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:259-272,
app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:59-60,
app/src/main/cpp/pcsx2/pcsx2/CMakeLists.txt:706,
app/src/main/cpp/pcsx2/pcsx2/CMakeLists.txt:723-734
Storage. The data root is the app files directory. The app creates cache,
resources, inis, sstates and memcards under it, then copies the whole resources
asset tree out of the package into resources. The core is handed AppRoot,
DataRoot, Resources, Settings and Cache from that root, and the launcher sets
Folders for Bios, Savestates, MemoryCards, Textures, Cheats, Patches and Logs
per run.
ref: app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:30,
app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:430-432,
app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:563-570,
app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:587-619,
app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:261-265,
app/src/main/java/com/sbro/emucorex/core/EmulatorBridge.kt:612-618
A BIOS image is required and boot stops without one: LoadBIOS returning false
makes VMManager report that a PlayStation 2 BIOS is needed. Only a GS dump
replay skips the load. Detection is by content: the folder scan keeps files
between 2 and 8 MB and accepts an image whose romdir carries a RESET entry
followed by a readable ROMVER, the fifth ROMVER character giving the zone among
Japan, USA, Europe, Asia, China, T10K, COH-H, Test and Free, with EXTINFO
supplying the serial. An image named in the configuration is opened at its own
path without the size filter. No hash is matched, and a console image is
matched under no name.
MIN_BIOS_SIZE was halved to 2 MB to admit the Namco System 246/256 chip dumps,
which are 2 MB where a console image is 4. Three other changes came with it:
a COH-H board is region 11 rather than 8, its description is built from the
EXTINFO serial because Sony left the version and date fields identical across
those BIOSes, and the ROM window is zero-filled before the read so the unused
upper half cannot retain the previous image.
ref: app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:16-17,
app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:80-217,
app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:150-151 (COH-H region),
app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:176-190 (serial description),
app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:278-314,
app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:337-391,
app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:365-367 (ROM window cleared),
app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1898-1912
An arcade launch starts from a manifest carrying an NM game id and a board
generation. It selects the board BIOS by name from the BIOS folder,
r27v1602f.8g for System 256 and Super 256 and r27v1602f.7d for System 246, and
keeps the configured BIOS with a warning when that file is absent. The dongle,
memory card, boot ELF, SRAM and media the manifest names are per-title content
resolved beside it.
ref: app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1530-1598,
app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1608-1733
The app runs its own gate before launching. A candidate is a .bin, .rom, .7d
or .8g between 512 KB and 8 MB. It passes when the core's IsBIOS accepts it,
reached through isBiosPath on the path or isBiosFd on /proc/self/fd, or when
its name carries scph, ps2, bios, rom or r27v1602f. The two extra extensions
are the board positions the Namco dumps carry instead of a conventional one.
ref: app/src/main/java/com/sbro/emucorex/core/BiosValidator.kt:13-21,
app/src/main/java/com/sbro/emucorex/core/BiosValidator.kt:112-146,
app/src/main/java/com/sbro/emucorex/core/BiosValidator.kt:177-185,
app/src/main/cpp/ARM_ANDROID/src/jni/native_app_jni.cpp:493-515
A BIOS folder picked through the storage access framework is copied flat into
imported-bios under the external files directory, and Folders/Bios points there.
The import filter takes any .bin, .rom, .7d or .8g, plus .mec, .nvm and .elf
whose name carries one of the hints. Neither rom1 nor rom2 is an accepted
extension, and LoadExtraRom looks for exactly {bios}.rom1 or {biosbase}.rom1,
so the two ROM modules only reach the core when Folders/Bios is a plain
filesystem path used as-is. A re-import preserves the .nvm and .mec sitting
beside the image.
ref: app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:26-28,
app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:104-157,
app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:430-452,
app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:497-502,
app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:556-563
Much of the bundled resource tree is compiled out on this platform and never
read. ImGuiManager::Initialize returns false before creating the ImGui context,
so LoadFontData and the three fonts it reads are unreachable, and SetFonts and
ReloadFonts both guard on that context. InitializeFullscreenUI returns false
unconditionally, so FullscreenUI::Initialize never runs and nothing under
fullscreenui or icons is loaded. The adapter reads two fonts of its own instead
and hands them over through SetFonts.
ref: app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:131-146,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:148-152,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:163,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:224-229,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:296-316,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:483-536,
app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:384-412,
app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:437
The three achievement sounds are the one resource the code reads that the tree
does not carry. Their directory holds only the README naming their origin,
while upstream v2.8.0 ships message.wav at 15696 bytes, lbsubmit.wav at 82096
and unlock.wav at 202702. The released APK carries all three at those sizes
under assets/resources/sounds/achievements, so the installed app has them.
All four sound settings default on, so a signed-in session asks for them at
every notification.
ref: app/src/main/cpp/pcsx2/bin/resources/sounds/achievements/README.txt:1-3,
app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:81-83,
app/src/main/cpp/pcsx2/pcsx2/Config.h:1371-1374,
app/src/main/cpp/pcsx2/pcsx2/Pcsx2Config.cpp:1963-1966
files:
- name: ps2-0230a-20080220.bin
path: bios/ps2-0230a-20080220.bin
system: sony-playstation-2
agnostic: true
required: true
min_size: 2097152
max_size: 8388608
validation: [size]
description: "PS2 BIOS image"
note: >-
Any image whose romdir holds RESET and ROMVER is accepted, whatever its
name. The 2 to 8 MB range gates the folder scan, but an image named in the
configuration skips that range. Read into the 4 MB ROM region, which is
zero-filled first, and truncated to it. Shorter than 2465792 bytes disables
the OSDSys parameter HLE.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:16-17, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:80-217, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:278-314, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:337-391"
- name: r27v1602f.7d
path: bios/r27v1602f.7d
system: sony-playstation-2
agnostic: true
required: false
size: 2097152
md5: 52cca0058626569c7a9699838baab2d8
sha1: f0a74bbcaf801f3fd0b7002ebd0118564aae3528
crc32: 2b2e41a2
description: "Namco System 246 COH-H BIOS chip dump"
note: >-
Admitted since MIN_BIOS_SIZE fell to 2 MB. The board position is the
extension, so the picker takes .7d alongside .bin and .rom, and the name
hint r27v1602f carries it past the name test. Read into the 4 MB ROM
window, whose upper half is cleared first. ROMVER marks it T with a fifth
character Z, which is what makes it COH-H and region 11. Its description
comes from the EXTINFO serial. A System 246 arcade manifest selects this
name from the BIOS folder. Byte-identical to the r27v1602f.7d member of the
MAME sys246 set.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:16-17, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:150-151, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:176-190, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:365-367, source app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1590-1598, source app/src/main/java/com/sbro/emucorex/core/BiosValidator.kt:13-21"
- name: r27v1602f.8g
path: bios/r27v1602f.8g
system: sony-playstation-2
agnostic: true
required: false
size: 2097152
md5: a58676c6bd79229bda967d07b4ec2e16
sha1: bc4fb4e1e53adbd92385f1726bd69663ff870f1e
crc32: b2a8eeb6
description: "Namco System 256 COH-H BIOS chip dump"
note: >-
The System 256 counterpart, taken by the same path and the same widened
size gate. A System 256 or Super 256 arcade manifest selects this name
from the BIOS folder. Byte-identical to the r27v1602f.8g member of the
MAME sys256 set.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:16-17, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:150-151, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:176-190, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:365-367, source app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1590-1598, source app/src/main/java/com/sbro/emucorex/core/BiosValidator.kt:13-21"
- name: ps2-0230a-20080220.rom1
path: bios/ps2-0230a-20080220.rom1
system: sony-playstation-2
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. The storage access framework import does not carry
this extension, so it is reachable only from a plain BIOS folder path.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:234-261, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:388, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:393-403, source app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:26-28, source app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:497-502"
- name: ps2-0230a-20080220.rom2
aliases:
- "SCPH-90006_BIOS_VX_HK _230.ROM2"
path: bios/ps2-0230a-20080220.rom2
system: sony-playstation-2
required: false
max_size: 4194304
description: "Chinese ROM extension"
note: >-
Same two-step naming as rom1, copied to the ROM2 region. Present on Chinese
region consoles. Carried by the same import restriction as rom1.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:234-261, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:389, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:393-403"
- name: ps2-0230a-20080220.nvm
path: bios/ps2-0230a-20080220.nvm
system: sony-playstation-2
required: false
hle_fallback: true
size: 1024
description: "Console NVRAM"
note: >-
Read at the BIOS path with the extension replaced by nvm, case-insensitively.
Carries the console id, the iLink id, 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, filled with a fixed iLink id and the
language and region defaults of the detected BIOS region. Under a COH-H
BIOS the blank-block test is skipped and the built image is 0xFF-filled
with the iLink id alone.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:47-48, source app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:139-162, source app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:164-167, source app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:169-193"
- name: ps2-0230a-20080220.mec
path: bios/ps2-0230a-20080220.mec
system: sony-playstation-2
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, or 0x0104020a under a COH-H BIOS, and is written back at that
path when it cannot be read.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:50-51, source app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:195-208"
- name: eeprom.dat
system: sony-playstation-2
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: "source app/src/main/cpp/pcsx2/pcsx2/DEV9/DEV9.cpp:104-167"
- name: flash.dat
system: sony-playstation-2
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.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/DEV9/flash.cpp:9-16, source app/src/main/cpp/pcsx2/pcsx2/DEV9/flash.cpp:62-86"
- name: "<module>.irx"
system: sony-playstation-2
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. The launcher fills
it from the boot parameters when the picked file is an IRX. Empty otherwise.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:263-276, source app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:406-407, source app/src/main/cpp/pcsx2/pcsx2/R3000AInterpreter.cpp:220, source app/src/main/cpp/pcsx2/pcsx2/arm64/iop/iR3000A-arm64.cpp:1695, source app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1846, source app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:462-467"
- name: GameIndex.yaml
path: resources/GameIndex.yaml
system: sony-playstation-2
required: false
bundled: true
sha1: 2d9878fdd70979ecf6dd0da7652efd3797c26039
size: 2697551
category: game_data
description: "per-title compatibility and fix database"
note: >-
Opened from the resources directory and parsed into the game database that
drives per-title rounding modes, clamp modes, GS hacks and memory card
filters. The Kotlin catalog reads the same file straight out of the package
for the compatibility badges it draws.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:39, source app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:1036-1037, source app/src/main/java/com/sbro/emucorex/ui/gamedb/GameDbCatalogRepository.kt:97, source app/src/main/java/com/sbro/emucorex/ui/gamedb/GameDbCatalogRepository.kt:202"
- name: RedumpDatabase.yaml
path: resources/RedumpDatabase.yaml
system: sony-playstation-2
required: false
bundled: true
sha1: dceb4536fba7fb89452864fc512a4d071a19eae0
size: 1906463
category: game_data
description: "disc hash database"
note: >-
Opened from the resources directory and parsed into the hash database used
to name a disc from its dump.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:1141, source app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:1198-1199"
- name: patches.zip
path: resources/patches.zip
system: sony-playstation-2
required: false
bundled: true
sha1: a3d939af27fe0929e61b8e20d49ef58316c0a66c
size: 2091144
category: game_data
description: "built-in game patch archive"
note: >-
Opened read only from the resources directory as a zip source and searched
for the pnach matching the running serial and CRC. A failure to open is
reported once and the built-in patches are dropped for the session. The
app logs an error at startup when the copied archive is missing or holds
no pnach.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:118, source app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:290-317, source app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:432-433, source app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:621-635"
- name: Roboto-Regular.ttf
path: resources/fonts/Roboto-Regular.ttf
system: sony-playstation-2
required: false
bundled: true
description: "core text font"
note: >-
Read by the adapter's own font setup before the VM starts and handed to the
core as the standard font. An empty font list is logged as a setup failure.
source_ref: "source app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:384-392, source app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:402-411, source app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:437"
- name: Twemoji.Mozilla.ttf
path: resources/fonts/Twemoji.Mozilla.ttf
system: sony-playstation-2
required: false
bundled: true
description: "core emoji font"
note: >-
Read by the same font setup and appended as the emoji face. Skipped when the
file cannot be read.
source_ref: "source app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:393-400, source app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:402-411"
- name: tfx.glsl
size: 52705
sha1: 373792e3bc3c89226bff1852dca3eaf5a8ae4a80
path: resources/shaders/vulkan/tfx.glsl
system: sony-playstation-2
required: true
bundled: true
description: "Vulkan texture and framebuffer shader"
note: >-
Read from the resources directory when the Vulkan device is created. A read
failure is reported and device creation fails.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:404-407, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2531-2535"
- name: convert.glsl
size: 14941
sha1: 705d20d39a910d58a070fb86780ac58c8007591c
path: resources/shaders/vulkan/convert.glsl
system: sony-playstation-2
required: true
bundled: true
description: "Vulkan format conversion shader"
note: >-
Read when the conversion pipelines are compiled and again as the vertex
stage of the FXAA pipeline.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4901-4905, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5247-5251"
- name: present.glsl
size: 13440
sha1: a848aad1840c7d85bfcdd552521a7181b00331cc
path: resources/shaders/vulkan/present.glsl
system: sony-playstation-2
required: true
bundled: true
description: "Vulkan presentation shader"
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5076-5080"
- name: interlace.glsl
size: 6329
sha1: 268f43cd946eea999c62f63a24eb00cb2fdc342c
path: resources/shaders/vulkan/interlace.glsl
system: sony-playstation-2
required: true
bundled: true
description: "Vulkan deinterlacing shader"
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5126-5130"
- name: merge.glsl
size: 759
sha1: 808b7b46bfb033c7fe4d94d0dbf5a271de30dedc
path: resources/shaders/vulkan/merge.glsl
system: sony-playstation-2
required: true
bundled: true
description: "Vulkan field merge shader"
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5177-5181"
- name: shadeboost.glsl
size: 1831
sha1: 9b2704655a893ff1675d28df4bd9ffc9e15d3dd5
path: resources/shaders/vulkan/shadeboost.glsl
system: sony-playstation-2
required: true
bundled: true
description: "Vulkan brightness and contrast shader"
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5282-5286"
- name: cas.glsl
path: resources/shaders/vulkan/cas.glsl
system: sony-playstation-2
required: true
bundled: true
description: "Vulkan contrast adaptive sharpening shader"
note: >-
Read as a compute shader and its two include lines substituted with the
contents of the common headers. The Vulkan device compiles the CAS
pipelines unconditionally and returns on a failure, so a missing file stops
device creation rather than dropping the feature.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2569-2570, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5333-5335, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1194-1205"
- name: imgui.glsl
size: 791
sha1: 276d984150c2fd2fb5ba287f2e5ceb7262dc5a95
path: resources/shaders/vulkan/imgui.glsl
system: sony-playstation-2
required: true
bundled: true
description: "Vulkan overlay shader"
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5359-5362"
- name: tfx_vgs.glsl
size: 14156
sha1: cb02fa6503183c313aa8d7c278bb9fbfe3d1a943
path: resources/shaders/opengl/tfx_vgs.glsl
system: sony-playstation-2
required: true
bundled: true
description: "OpenGL texture and framebuffer vertex shader"
note: >-
Read from the resources directory when the OpenGL device is created.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:404-407, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:918-924"
- name: tfx_fs.glsl
size: 37479
sha1: f1c97200cb5b571a1ed6d33b5a2f854cebbfb528
path: resources/shaders/opengl/tfx_fs.glsl
system: sony-playstation-2
required: true
bundled: true
description: "OpenGL texture and framebuffer fragment shader"
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:919-924"
- name: convert.glsl
size: 16416
sha1: 35910b67070342cdd6ec4d68eb2e56b39d350543
path: resources/shaders/opengl/convert.glsl
system: sony-playstation-2
required: true
bundled: true
description: "OpenGL format conversion shader"
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:602-606"
- name: present.glsl
size: 14894
sha1: 4abe45e59dc9286321a115c76c31cc7fe85e58d5
path: resources/shaders/opengl/present.glsl
system: sony-playstation-2
required: true
bundled: true
description: "OpenGL presentation shader"
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:688-692"
- name: interlace.glsl
size: 5983
sha1: be39a049af0b8ab0c2168ad6d8cf636e15ae0dd2
path: resources/shaders/opengl/interlace.glsl
system: sony-playstation-2
required: true
bundled: true
description: "OpenGL deinterlacing shader"
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:747-751"
- name: merge.glsl
size: 579
sha1: c8eb9c1926baad8bbba25f97be54abae233fe715
path: resources/shaders/opengl/merge.glsl
system: sony-playstation-2
required: true
bundled: true
description: "OpenGL field merge shader"
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:724-728"
- name: shadeboost.glsl
size: 1548
sha1: 03c8b0d3ebeb0ecdc7f594ba6f7242a6f6e4d564
path: resources/shaders/opengl/shadeboost.glsl
system: sony-playstation-2
required: true
bundled: true
description: "OpenGL brightness and contrast shader"
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:767-768, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2868-2872"
- name: cas.glsl
size: 2483
sha1: cb0d4276f9947762af0841a8af75efa6cbe9109c
path: resources/shaders/opengl/cas.glsl
system: sony-playstation-2
required: false
bundled: true
description: "OpenGL contrast adaptive sharpening shader"
note: >-
Read as a compute program with the two include lines substituted, and
tried only on an ES 3.2 context or on GL 4.2 with compute shaders. A
failure turns CAS sharpening off.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:771, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:3068-3088, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1194-1205"
- name: imgui.glsl
size: 637
sha1: ca149058af89d8f612aaa529661e8267d9569875
path: resources/shaders/opengl/imgui.glsl
system: sony-playstation-2
required: true
bundled: true
description: "OpenGL overlay shader"
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:3152-3156"
- name: fxaa.fx
size: 17432
sha1: 81c56a54bde692fb15fca4efe6db508b7d09bf6e
path: resources/shaders/common/fxaa.fx
system: sony-playstation-2
required: true
bundled: true
description: "antialiasing shader shared by both renderers"
note: >-
Read as the fragment stage of the FXAA pipeline on Vulkan, inside the
post-processing pipelines the device creation chain requires, so a missing
file stops device creation there. On OpenGL the program is compiled beside
the shadeboost one in the device creation chain, which returns on a read
failure.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2556-2561, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5254-5258, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:767-768, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2611-2619"
- name: ffx_a.h
path: resources/shaders/common/ffx_a.h
system: sony-playstation-2
required: true
bundled: true
description: "CAS support header"
note: >-
Read from the resources directory and pasted over the matching include line
of the CAS shader, the compilers having no include support. It shares the
fate of the CAS shader it is pasted into: fatal to device creation on
Vulkan, and only the sharpening feature on OpenGL.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1194-1205, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2569-2570, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:771"
- name: ffx_cas.h
path: resources/shaders/common/ffx_cas.h
system: sony-playstation-2
required: true
bundled: true
description: "CAS kernel header"
note: >-
Read and substituted the same way as the other CAS header, with the same
consequence per renderer when it is missing.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1194-1205, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2569-2570, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:771"
- name: message.wav
path: resources/sounds/achievements/message.wav
sha1: c54f04b63ac6f04e0a0944ef260b5497e4494dbd
size: 15696
system: sony-playstation-2
required: false
bundled: true
description: "achievement notification sound"
note: >-
Played from the resources directory whenever an achievement notification is
raised and no custom sound is configured. Sound effects and the notification
sound both default on. The vendored tree carries only the README for this
directory, but the released APK (EmuCoreX.v0.4.7.apk) ships the file at
15696 bytes, as upstream v2.8.0 does. The Android sound callback returns
without playing when the path is not a file.
source_ref: "source app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:81, source app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:1245-1250, source app/src/main/cpp/pcsx2/pcsx2/Pcsx2Config.cpp:1963-1966, source app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:461-467"
- name: unlock.wav
path: resources/sounds/achievements/unlock.wav
sha1: da328a0a3074ec86fee2d6741bfc2e5a1f68d063
size: 202702
system: sony-playstation-2
required: false
bundled: true
description: "achievement unlock sound"
note: >-
Played on an unlock under the same two settings, both on by default. Absent
from the vendored tree and shipped in the released APK, at the 202702 bytes
of upstream v2.8.0.
source_ref: "source app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:82, source app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:1313-1318"
- name: lbsubmit.wav
path: resources/sounds/achievements/lbsubmit.wav
sha1: 5ad1e110dcf0ffd26405981398892a82e4f3bad1
size: 82096
system: sony-playstation-2
required: false
bundled: true
description: "leaderboard submission sound"
note: >-
Played on a leaderboard submission under the same two settings, both on by
default. Absent from the vendored tree and shipped in the released APK, at
the 82096 bytes of upstream v2.8.0.
source_ref: "source app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:83, source app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:1458-1463"
- name: games.db
size: 6025216
sha1: 0e2ee74d1f9ebc3a6faf9dbaebbacc2ff053f4df
path: "games.db"
system: sony-playstation-2
required: false
bundled: true
category: game_data
description: "bundled catalog of PS2 titles"
note: >-
SQLite catalog carried in the package assets and copied into internal
storage the first time the catalog is queried, then read from there. A copy
already present is kept.
source_ref: "source app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:17-18, source app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:27, source app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:39-56"
- name: "<SERIAL>_<CRC>.pnach"
path: "cheats/<SERIAL>_<CRC>.pnach"
system: sony-playstation-2
required: false
category: game_data
unsourceable: "cheat list authored per title, with no released artefact behind it"
description: "per-title cheat file"
note: >-
The cheats folder is searched for the running serial and CRC, then for files
carrying the CRC alone, both with a trailing wildcard so a suffix after the
CRC is kept. An arcade title, whose serial starts with NM and whose CRC is
zero, is matched on the serial alone. The patches folder is searched the
same way for patches rather than cheats. The app's cheat manager keeps a
picked pnach document in its own store and writes the enabled blocks into
the cheats folder as <SERIAL>_<CRC>.pnach, or <CRC>.pnach without a serial.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:332-345, source app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:347-369, source app/src/main/java/com/sbro/emucorex/ui/cheats/CheatManagerScreen.kt:291-309, source app/src/main/java/com/sbro/emucorex/data/CheatRepository.kt:186-220, source app/src/main/java/com/sbro/emucorex/data/CheatRepository.kt:304-311"
- name: "<hash>.png"
path: "textures/<SERIAL>/replacements/<hash>.png"
system: sony-playstation-2
required: false
category: game_data
unsourceable: "replacement artwork authored against the texture hashes of one title"
description: "replacement texture"
note: >-
Read when texture replacement is on. The replacements folder under the
running serial is walked recursively and a file counts only when its name
parses as the TEX0 hash, optional CLUT hash, optional region size and format
that the texture cache looks it up by. A directory whose case does not match
is reported.
source_ref: "source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/HW/GSTextureReplacements.cpp:36-42, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/HW/GSTextureReplacements.cpp:328-331, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/HW/GSTextureReplacements.cpp:442-500"
- name: "<driver>.zip"
system: sony-playstation-2
required: false
unsourceable: "Vulkan driver built for one GPU family, not an emulator artefact"
description: "replacement Vulkan driver package"
note: >-
Listed by a catalog fetched from the EmuCoreV-Drivers repository, or picked
from the device. A catalog download whose length differs from the size the
catalog states is discarded. The archive is unpacked into a directory named
after it under driver in internal storage, entries carrying a parent path
segment being refused, and the Vulkan library it holds is recorded in a
driver_name.txt written beside it. The install is removed when that library
does not start with the ELF magic or when its GPU vendor, taken from the
catalog or from markers in the library, does not match the device. The
renderer then resolves the driver through adrenotools from that pair. The
system loader is used when no driver is configured.
source_ref: "source app/src/main/java/com/sbro/emucorex/core/GpuDriverCatalogRepository.kt:143-147, source app/src/main/java/com/sbro/emucorex/core/GpuDriverCatalogRepository.kt:76-87, source app/src/main/java/com/sbro/emucorex/core/GpuDriverManager.kt:98-170, source app/src/main/java/com/sbro/emucorex/core/GpuDriverManager.kt:172-181, source app/src/main/java/com/sbro/emucorex/core/GpuDriverManager.kt:214-228, source app/src/main/cpp/ARM_ANDROID/src/runtime/android_runtime.cpp:138-152, source app/src/main/cpp/ARM_ANDROID/src/runtime/android_runtime.cpp:401-402, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/VKLoader.cpp:136, source app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/VKLoader.cpp:200-206"
exclusion_note: >
Left out are the parts of the bundled resource tree that this platform compiles
out. ImGuiManager::Initialize returns false before the ImGui context exists, so
LoadFontData never runs and fonts/RobotoMono-Medium.ttf, fonts/fa-solid-900.ttf
and fonts/promptfont.otf are never read. InitializeFullscreenUI returns false
unconditionally, so FullscreenUI::Initialize never runs and nothing under
fullscreenui or icons is loaded, cover-placeholder.png included. The DX11 and
DX12 renderers sit in the Windows branch of the core CMakeLists, so
shaders/dx11 is dead here. game_controller_db.txt has one consumer,
Input/SDLInputSource.cpp, which the adapter removes from the target and replaces
with a source that never opens it. The user resource override folder is only
ever consulted by those same font and controller database reads, so it is dead
with them. Left out with these are the app's other package assets, which are
read through the asset manager and never reach the filesystem:
catalog/rom_identity_index.json, catalog/rom_identity_overrides.json and
catalog/pcsx2_compat_index.json. Left out too is what the emulator writes and
reads back, which is state rather than system files: the inis, the per-game
settings and input profiles, the memory cards, the save states, the snapshots,
the shader and texture caches, the logs, the dumped textures, and the
system-ca-bundle.pem the app exports from the Android trust store, and the
per-title arcade content a manifest names. The covers folder is inert: its
only readers are the FullscreenUI game list and GameList::DownloadCovers,
which only FullscreenUI calls, and the app runs its own cover cache.
ref: app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:149-152,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:224-229,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:483-536,
app/src/main/cpp/pcsx2/pcsx2/ImGui/FullscreenUI.cpp:323,
app/src/main/cpp/pcsx2/pcsx2/CMakeLists.txt:706,
app/src/main/cpp/pcsx2/pcsx2/CMakeLists.txt:723-734,
app/src/main/cpp/pcsx2/pcsx2/Input/SDLInputSource.cpp:24,
app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:259-263,
app/src/main/cpp/pcsx2/pcsx2/Pcsx2Config.cpp:2452-2466,
app/src/main/cpp/pcsx2/pcsx2/GameList.cpp:1376,
app/src/main/cpp/pcsx2/pcsx2/ImGui/FullscreenUI.cpp:3640,
app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:235-248,
app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:434-436