fix: re-read emucorex and armsx2 at head

This commit is contained in:
Abdessamad Derraz committed 2026-10-04 17:26:02 +02:00
1 parent ee417e547c
commit 3427c44928
4 files changed
+446 -307

No files matched your search

+153 -126
View File
@@ -4,10 +4,10 @@ core_classification: community_fork
source: "https://github.com/sashkinbro/EmuCoreX"
upstream: "https://github.com/PCSX2/pcsx2"
author: "Oleksandr (sashkinbro)"
profiled_date: "2026-09-04"
source_commit: "f32393ae0dc1df81834e58873145cff5b8bc8175"
upstream_commit: "53e3838c1dd59f611fa3d2fd36915903a1304c6e"
core_version: "0.3.3"
profiled_date: "2026-10-04"
source_commit: "ed8d7dd721dc8da958f3149acdc4c72d77d5a685"
upstream_commit: "c10a5c9ad951c517dc48b722b5b84eb9bf7fdb42"
core_version: "0.4.6"
display_name: "Sony - PlayStation 2 (EmuCoreX)"
cores:
- emucorex
@@ -21,23 +21,23 @@ 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.7.316, reached through the ARM_ANDROID
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; ES-DE passes the disc as the intent data URI.
ref: app/build.gradle.kts:53-56, app/build.gradle.kts:77,
app/src/main/AndroidManifest.xml:48-62,
app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:77-79,
app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:338
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:239-256,
app/src/main/cpp/ARM_ANDROID/CMakeLists.txt:58-59,
app/src/main/cpp/pcsx2/pcsx2/CMakeLists.txt:691,
app/src/main/cpp/pcsx2/pcsx2/CMakeLists.txt:708-712
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
@@ -45,12 +45,12 @@ notes: |
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:28,
app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:163-165,
app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:293-300,
app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:316-348,
app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:135-139,
app/src/main/java/com/sbro/emucorex/core/EmulatorBridge.kt:546-552
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
@@ -59,7 +59,8 @@ notes: |
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 name and no hash is matched.
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:
@@ -74,30 +75,40 @@ notes: |
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:1487-1499
app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1898-1912
The app runs its own gate over the same test before launching. A candidate is
a .bin, .rom, .7d or .8g between 512 KB and 8 MB whose name carries scph, ps2,
bios, rom or r27v1602f, and it is confirmed by isBiosPath or isBiosFd, both of
which call the core's IsBIOS on the path or on /proc/self/fd. The two extra
extensions are the board positions the Namco dumps carry instead of a
conventional one.
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:110-137,
app/src/main/cpp/ARM_ANDROID/src/jni/native_app_jni.cpp:414-436
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 or .rom, 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:25-27,
app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:101-154,
app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:366-388,
app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:433-438,
app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:492-499
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,
@@ -106,24 +117,24 @@ notes: |
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:115-128,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:132-136,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:147,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:193-198,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:262-281,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:449-511,
app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:254-282,
app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:307
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.7.316 ships message.wav at 15696 bytes, lbsubmit.wav at 82096
while upstream v2.8.0 ships message.wav at 15696 bytes, lbsubmit.wav at 82096
and unlock.wav at 202702. 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:1346-1349,
app/src/main/cpp/pcsx2/pcsx2/Pcsx2Config.cpp:1951-1954
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
@@ -137,7 +148,7 @@ files:
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
name. The 2 to 8 MB range gates the folder scan; 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.
@@ -159,9 +170,10 @@ files:
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. Byte-identical to the r27v1602f.7d member
of the MAME sys246 set.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:16-17, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:150-151, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:176-190, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:365-367, app/src/main/java/com/sbro/emucorex/core/BiosValidator.kt:13-21"
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: "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:16-17, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:150-151, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:176-190, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:365-367, app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1590-1598, app/src/main/java/com/sbro/emucorex/core/BiosValidator.kt:13-21"
- name: r27v1602f.8g
path: bios/r27v1602f.8g
@@ -175,9 +187,10 @@ files:
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. Byte-identical to the r27v1602f.8g member of the MAME sys256
set.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:16-17, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:150-151, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:176-190, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:365-367, app/src/main/java/com/sbro/emucorex/core/BiosValidator.kt:13-21"
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: "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:16-17, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:150-151, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:176-190, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:365-367, app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1590-1598, app/src/main/java/com/sbro/emucorex/core/BiosValidator.kt:13-21"
- name: ps2-0230a-20080220.rom1
path: bios/ps2-0230a-20080220.rom1
@@ -190,7 +203,7 @@ files:
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: "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:214-241, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:366, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:371-381, app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:25-27, app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:433-438"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:234-261, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:388, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:393-403, app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:26-28, app/src/main/java/com/sbro/emucorex/core/DocumentPathResolver.kt:497-502"
- name: ps2-0230a-20080220.rom2
aliases:
@@ -203,7 +216,7 @@ files:
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: "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:214-241, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:367, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:371-381"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:234-261, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:389, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:393-403"
- name: ps2-0230a-20080220.nvm
path: bios/ps2-0230a-20080220.nvm
@@ -217,8 +230,10 @@ files:
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.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:46-47, app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:160-163, app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:165-189"
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: "app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:47-48, app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:139-162, app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:164-167, app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:169-193"
- name: ps2-0230a-20080220.mec
path: bios/ps2-0230a-20080220.mec
@@ -229,8 +244,9 @@ files:
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: "app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:49, app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:191-204"
0x00020603, or 0x0104020a under a COH-H BIOS, and is written back at that
path when it cannot be read.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:50-51, app/src/main/cpp/pcsx2/pcsx2/CDVD/CDVD.cpp:195-208"
- name: eeprom.dat
system: sony-playstation-2
@@ -242,7 +258,7 @@ files:
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: "app/src/main/cpp/pcsx2/pcsx2/DEV9/DEV9.cpp:97-160"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/DEV9/DEV9.cpp:104-167"
- name: flash.dat
system: sony-playstation-2
@@ -266,7 +282,7 @@ files:
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: "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:243-256, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:384-385, app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1434, app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:334"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:263-276, app/src/main/cpp/pcsx2/pcsx2/ps2/BiosTools.cpp:406-407, app/src/main/cpp/pcsx2/pcsx2/R3000AInterpreter.cpp:220, app/src/main/cpp/pcsx2/pcsx2/arm64/iop/iR3000A-arm64.cpp:1695, app/src/main/cpp/pcsx2/pcsx2/VMManager.cpp:1846, app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:462-467"
- name: GameIndex.yaml
path: resources/GameIndex.yaml
@@ -280,7 +296,7 @@ files:
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: "app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:39, app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:976-977, app/src/main/java/com/sbro/emucorex/ui/gamedb/GameDbCatalogRepository.kt:96, app/src/main/java/com/sbro/emucorex/ui/gamedb/GameDbCatalogRepository.kt:202"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:39, app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:1036-1037, app/src/main/java/com/sbro/emucorex/ui/gamedb/GameDbCatalogRepository.kt:97, app/src/main/java/com/sbro/emucorex/ui/gamedb/GameDbCatalogRepository.kt:202"
- name: RedumpDatabase.yaml
path: resources/RedumpDatabase.yaml
@@ -292,7 +308,7 @@ files:
note: >-
Opened from the resources directory and parsed into the hash database used
to name a disc from its dump.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:1081, app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:1138-1139"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:1141, app/src/main/cpp/pcsx2/pcsx2/GameDatabase.cpp:1198-1199"
- name: patches.zip
path: resources/patches.zip
@@ -304,8 +320,10 @@ files:
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.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:117, app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:289-310, app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:163-165"
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: "app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:118, app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:290-317, app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:432-433, app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:621-635"
- name: Roboto-Regular.ttf
path: resources/fonts/Roboto-Regular.ttf
@@ -316,7 +334,7 @@ files:
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: "app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:254-262, app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:271-282, app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:307"
source_ref: "app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:384-392, app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:402-411, app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:437"
- name: Twemoji.Mozilla.ttf
path: resources/fonts/Twemoji.Mozilla.ttf
@@ -327,7 +345,7 @@ files:
note: >-
Read by the same font setup and appended as the emoji face. Skipped when the
file cannot be read.
source_ref: "app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:263-270, app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:271-282"
source_ref: "app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:393-400, app/src/main/cpp/ARM_ANDROID/src/runtime/upstream_vm_bridge.cpp:402-411"
- name: tfx.glsl
path: resources/shaders/vulkan/tfx.glsl
@@ -338,7 +356,7 @@ files:
note: >-
Read from the resources directory when the Vulkan device is created. A read
failure is reported and device creation fails.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:346-349, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2400-2404"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:404-407, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2531-2535"
- name: convert.glsl
path: resources/shaders/vulkan/convert.glsl
@@ -349,7 +367,7 @@ files:
note: >-
Read when the conversion pipelines are compiled and again as the vertex
stage of the FXAA pipeline.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4462-4466, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4847-4851"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4901-4905, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5247-5251"
- name: present.glsl
path: resources/shaders/vulkan/present.glsl
@@ -357,7 +375,7 @@ files:
required: true
bundled: true
description: "Vulkan presentation shader"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4676-4680"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5076-5080"
- name: interlace.glsl
path: resources/shaders/vulkan/interlace.glsl
@@ -365,7 +383,7 @@ files:
required: true
bundled: true
description: "Vulkan deinterlacing shader"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4726-4730"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5126-5130"
- name: merge.glsl
path: resources/shaders/vulkan/merge.glsl
@@ -373,7 +391,7 @@ files:
required: true
bundled: true
description: "Vulkan field merge shader"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4777-4781"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5177-5181"
- name: shadeboost.glsl
path: resources/shaders/vulkan/shadeboost.glsl
@@ -381,7 +399,7 @@ files:
required: true
bundled: true
description: "Vulkan brightness and contrast shader"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4882-4886"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5282-5286"
- name: cas.glsl
path: resources/shaders/vulkan/cas.glsl
@@ -394,7 +412,7 @@ files:
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: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2438-2439, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4932-4934, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1038-1049"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2569-2570, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5333-5335, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1194-1205"
- name: imgui.glsl
path: resources/shaders/vulkan/imgui.glsl
@@ -402,7 +420,7 @@ files:
required: true
bundled: true
description: "Vulkan overlay shader"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4959-4962"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5359-5362"
- name: tfx_vgs.glsl
path: resources/shaders/opengl/tfx_vgs.glsl
@@ -412,7 +430,7 @@ files:
description: "OpenGL texture and framebuffer vertex shader"
note: >-
Read from the resources directory when the OpenGL device is created.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:346-349, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:778"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:404-407, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:918-924"
- name: tfx_fs.glsl
path: resources/shaders/opengl/tfx_fs.glsl
@@ -420,7 +438,7 @@ files:
required: true
bundled: true
description: "OpenGL texture and framebuffer fragment shader"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:779"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:919-924"
- name: convert.glsl
path: resources/shaders/opengl/convert.glsl
@@ -428,7 +446,7 @@ files:
required: true
bundled: true
description: "OpenGL format conversion shader"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:514-518"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:602-606"
- name: present.glsl
path: resources/shaders/opengl/present.glsl
@@ -436,7 +454,7 @@ files:
required: true
bundled: true
description: "OpenGL presentation shader"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:584"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:688-692"
- name: interlace.glsl
path: resources/shaders/opengl/interlace.glsl
@@ -444,7 +462,7 @@ files:
required: true
bundled: true
description: "OpenGL deinterlacing shader"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:643"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:747-751"
- name: merge.glsl
path: resources/shaders/opengl/merge.glsl
@@ -452,7 +470,7 @@ files:
required: true
bundled: true
description: "OpenGL field merge shader"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:620"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:724-728"
- name: shadeboost.glsl
path: resources/shaders/opengl/shadeboost.glsl
@@ -460,7 +478,7 @@ files:
required: true
bundled: true
description: "OpenGL brightness and contrast shader"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2423"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:767-768, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2868-2872"
- name: cas.glsl
path: resources/shaders/opengl/cas.glsl
@@ -469,9 +487,10 @@ files:
bundled: true
description: "OpenGL contrast adaptive sharpening shader"
note: >-
Read as a compute program with the two include lines substituted, and needs
an ES 3.1 or 3.2 context. A failure turns CAS sharpening off.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2577-2597, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1038-1049"
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: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:771, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:3068-3088, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1194-1205"
- name: imgui.glsl
path: resources/shaders/opengl/imgui.glsl
@@ -479,7 +498,7 @@ files:
required: true
bundled: true
description: "OpenGL overlay shader"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2661"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:3152-3156"
- name: fxaa.fx
path: resources/shaders/common/fxaa.fx
@@ -490,9 +509,10 @@ files:
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 on its
own and an invalid one makes the FXAA pass return without drawing.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2425-2430, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:4854-4858, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2385-2390, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2404-2407"
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: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2556-2561, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:5254-5258, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:767-768, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:2611-2619"
- name: ffx_a.h
path: resources/shaders/common/ffx_a.h
@@ -505,7 +525,7 @@ files:
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: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1038-1049, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2438-2439, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:667"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1194-1205, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2569-2570, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:771"
- name: ffx_cas.h
path: resources/shaders/common/ffx_cas.h
@@ -516,7 +536,7 @@ files:
note: >-
Read and substituted the same way as the other CAS header, with the same
consequence per renderer when it is missing.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1038-1049, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2438-2439, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:667"
source_ref: "app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Common/GSDevice.cpp:1194-1205, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:2569-2570, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:771"
- name: message.wav
path: resources/sounds/achievements/message.wav
@@ -528,9 +548,9 @@ files:
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, so the file has to be supplied; the Android sound callback
returns without playing when the path is not a file. Upstream v2.7.316
returns without playing when the path is not a file. Upstream v2.8.0
ships it at 15696 bytes.
source_ref: "app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:81, app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:1245-1250, app/src/main/cpp/pcsx2/pcsx2/Pcsx2Config.cpp:1951-1954, app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:194-200"
source_ref: "app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:81, app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:1245-1250, app/src/main/cpp/pcsx2/pcsx2/Pcsx2Config.cpp:1963-1966, app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:461-467"
- name: unlock.wav
path: resources/sounds/achievements/unlock.wav
@@ -539,7 +559,7 @@ files:
description: "achievement unlock sound"
note: >-
Played on an unlock under the same two settings, both on by default. Absent
from the vendored tree. Upstream v2.7.316 ships it at 202702 bytes.
from the vendored tree. Upstream v2.8.0 ships it at 202702 bytes.
source_ref: "app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:82, app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:1313-1318"
- name: lbsubmit.wav
@@ -549,7 +569,7 @@ files:
description: "leaderboard submission sound"
note: >-
Played on a leaderboard submission under the same two settings, both on by
default. Absent from the vendored tree. Upstream v2.7.316 ships it at 82096
default. Absent from the vendored tree. Upstream v2.8.0 ships it at 82096
bytes.
source_ref: "app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:83, app/src/main/cpp/ARM_ANDROID/src/integration/pcsx2_achievements_android.cpp:1458-1463"
@@ -564,7 +584,7 @@ files:
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: "app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:18, app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:38-56"
source_ref: "app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:17-18, app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:27, app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:39-56"
- name: "<SERIAL>_<CRC>.pnach"
path: "cheats/<SERIAL>_<CRC>.pnach"
@@ -576,9 +596,12 @@ files:
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. The patches folder is searched the same way for patches rather
than cheats. The app also imports pnach files out of a picked zip.
source_ref: "app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:331-342, app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:344-366, app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:355"
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: "app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:332-345, app/src/main/cpp/pcsx2/pcsx2/Patch.cpp:347-369, app/src/main/java/com/sbro/emucorex/ui/cheats/CheatManagerScreen.kt:291-309, app/src/main/java/com/sbro/emucorex/data/CheatRepository.kt:186-220, app/src/main/java/com/sbro/emucorex/data/CheatRepository.kt:304-311"
- name: "<hash>.png"
path: "textures/<SERIAL>/replacements/<hash>.png"
@@ -598,17 +621,20 @@ files:
- name: "<driver>.zip"
system: sony-playstation-2
required: false
unsourceable: "Vulkan driver built for one Adreno family, not an emulator artefact"
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. 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 renderer then resolves the driver
through adrenotools from that pair. The system loader is used when no driver
is configured.
source_ref: "app/src/main/java/com/sbro/emucorex/core/GpuDriverCatalogRepository.kt:131-135, app/src/main/java/com/sbro/emucorex/core/GpuDriverManager.kt:89-128, app/src/main/java/com/sbro/emucorex/core/GpuDriverManager.kt:135-141, app/src/main/cpp/ARM_ANDROID/src/runtime/android_runtime.cpp:98-112, app/src/main/cpp/ARM_ANDROID/src/runtime/android_runtime.cpp:362"
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: "app/src/main/java/com/sbro/emucorex/core/GpuDriverCatalogRepository.kt:143-147, app/src/main/java/com/sbro/emucorex/core/GpuDriverCatalogRepository.kt:76-87, app/src/main/java/com/sbro/emucorex/core/GpuDriverManager.kt:98-170, app/src/main/java/com/sbro/emucorex/core/GpuDriverManager.kt:172-181, app/src/main/java/com/sbro/emucorex/core/GpuDriverManager.kt:214-228, app/src/main/cpp/ARM_ANDROID/src/runtime/android_runtime.cpp:138-152, app/src/main/cpp/ARM_ANDROID/src/runtime/android_runtime.cpp:401-402, app/src/main/cpp/pcsx2/pcsx2/GS/Renderers/Vulkan/VKLoader.cpp:136, 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
@@ -629,19 +655,20 @@ exclusion_note: >
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. The covers
folder is inert: its only readers are the FullscreenUI game list and
GameList::DownloadCovers, which has no caller, and the app runs its own cover
cache.
ref: app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:133-136,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:193-198,
app/src/main/cpp/pcsx2/pcsx2/ImGui/ImGuiManager.cpp:449-511,
app/src/main/cpp/pcsx2/pcsx2/ImGui/FullscreenUI.cpp:335,
app/src/main/cpp/pcsx2/pcsx2/CMakeLists.txt:691,
app/src/main/cpp/pcsx2/pcsx2/CMakeLists.txt:708-712,
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:239-243,
app/src/main/cpp/pcsx2/pcsx2/Pcsx2Config.cpp:2439-2446,
app/src/main/cpp/pcsx2/pcsx2/GameList.cpp:1336,
app/src/main/java/com/sbro/emucorex/data/ps2/Ps2CatalogRepository.kt:191-203,
app/src/main/java/com/sbro/emucorex/core/NativeApp.kt:166-171
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