ARMSX2 - RetroBIOS¶
Technical 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:42, platforms/android/app/build.gradle.kts:110-124, .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:408-432, pcsx2/VMManager.cpp:2003-2023, pcsx2/Pcsx2Config.cpp:2554, platforms/android/app/src/main/java/kr/co/iefriends/pcsx2/NativeApp.java:80-92
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. The console scan passes over a COH-H image. 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:17-18, pcsx2/ps2/BiosTools.cpp:81-211, pcsx2/ps2/BiosTools.cpp:329-385, pcsx2/ps2/BiosTools.cpp:434-457
An arcade session, opened from an .acgame manifest carrying an NM game id, takes a Namco System 246 or 256 board BIOS instead. Filenames/ArcadeBIOS names it; when that is empty or is not a COH-H image the BIOS folder is scanned for images between 2 and 8 MB whose zone is COH-H, the one with EXTINFO serial 20040519-145634, the System 256 board, being preferred. Boot stops when none is found. The boot ELF, the media image and the SRAM the manifest names are per-title content resolved beside it, and its dongle and second card are looked up in the memory cards folder. ref: pcsx2/ps2/BiosTools.cpp:272-327, pcsx2/ps2/BiosTools.cpp:412-419, pcsx2/VMManager.cpp:834-847, pcsx2/VMManager.cpp:1615-1750, pcsx2/VMManager.cpp:2006-2013
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, or 0x0104020a in an arcade session, when it cannot be read. ref: pcsx2/ps2/BiosTools.cpp:228-255, pcsx2/ps2/BiosTools.cpp:465-481, pcsx2/MemoryTypes.h:12-14, pcsx2/CDVD/CDVD.cpp:48-64, pcsx2/CDVD/CDVD.cpp:150-221
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:224-275, 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:257-270, pcsx2/ps2/BiosTools.cpp:483-484, pcsx2/R3000AInterpreter.cpp:223, pcsx2/arm64/iR3000A-arm64.cpp:1283
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 reads the same tree from <system>/pcsx2/resources, with the BIOS folder at <system>/pcsx2/bios. Its build also compiles in the shaders under shaders/common, shaders/opengl and shaders/vulkan, GameIndex.yaml and a patches.zip fetched at configure time; the copy in the resources folder wins and the compiled-in one stands in when the file is absent. ref: pcsx2/Pcsx2Config.cpp:2400-2414, pcsx2/Pcsx2Config.cpp:2563, pcsx2/Pcsx2Config.cpp:2637-2651, pcsx2-libretro/Main.cpp:180-181, pcsx2-libretro/Main.cpp:1101, 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:370-387, pcsx2/CMakeLists.txt:1477-1496, pcsx2/CMakeLists.txt:1531-1533, pcsx2/GS/Renderers/Common/GSDevice.cpp:528-540, pcsx2/GameDatabase.cpp:1314-1324, pcsx2/Patch.cpp:303-325
Missing resources are not uniformly survivable. A font that cannot be read is logged and skipped, LoadFontData succeeding regardless. 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, Direct3D 11 and 12 on Windows and Metal on Apple systems. The caught failures are the three Vulkan compute pipelines, sharpening, FSR1 and SGSR, which turn themselves 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:509-525, pcsx2/ImGui/ImGuiManager.cpp:527-570, pcsx2/GS/GS.cpp:97-133, pcsx2/GS/GS.cpp:175-194, pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:3056-3094
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
81 files | 9 required, 72 optional | 77 in repo, 3 missing, 1 unsourceable | 4 with HLE fallback
ps2-0230a-20080220.bin required in repo
PS2 BIOS image
- Path:
pcsx2/bios/ps2-0230a-20080220.bin - Size: min 4.0 MB, max 8.0 MB
- Validation: size
- Source:
pcsx2/ps2/BiosTools.cpp:17-18,pcsx2/ps2/BiosTools.cpp:81-211,pcsx2/ps2/BiosTools.cpp:329-358,pcsx2/ps2/BiosTools.cpp:408-468 - Platforms: batocera, emudeck, lakka, recalbox, retroarch, retrobat, retrodeck, retropie, rocknix, romm
- 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. A COH-H image is passed over by the console scan.
r27v1602f.8g optional in repo
Namco System 256 board BIOS
- Path:
pcsx2/bios/r27v1602f.8g - Size: min 2.0 MB, max 8.0 MB
- Validation: size
- Source:
pcsx2/ps2/BiosTools.cpp:272-327,pcsx2/ps2/BiosTools.cpp:412-432,pcsx2/VMManager.cpp:834-838,pcsx2/VMManager.cpp:2006-2013 - Platforms: retrobat
- Config key:
Filenames/ArcadeBIOS - Read by arcade sessions only, which cannot boot without a COH-H image. Found by content, whatever its name: the BIOS folder is scanned for images between 2 and 8 MB whose ROMVER zone is COH-H, and the scan stops at the one whose EXTINFO serial is 20040519-145634, the System 256 board, which also runs System 246 games. A configured arcade BIOS that is not COH-H is set aside for that scan. The name is the board position the 2 MB chip dump carries.
r27v1602f.7d optional in repo
Namco System 246 board BIOS
- Path:
pcsx2/bios/r27v1602f.7d - Size: min 2.0 MB, max 8.0 MB
- Validation: size
- Source:
pcsx2/ps2/BiosTools.cpp:176-183,pcsx2/ps2/BiosTools.cpp:272-327,pcsx2/ps2/BiosTools.cpp:412-432 - Platforms: retrobat
- Config key:
Filenames/ArcadeBIOS - The other COH-H image the same scan accepts, taken when no System 256 image is in the folder. The System 246 Rack C board carries EXTINFO serial 20021119-163841.
ps2-0230a-20080220.rom1 optional in repo
DVD player ROM
- Path:
pcsx2/bios/ps2-0230a-20080220.rom1 - Size: max 4.0 MB
- Source:
pcsx2/ps2/BiosTools.cpp:228-255,pcsx2/ps2/BiosTools.cpp:465,pcsx2/ps2/BiosTools.cpp:470-481,pcsx2/MemoryTypes.h:13 - 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.
ps2-0230a-20080220.rom2 optional in repo
Chinese ROM extension
- Path:
pcsx2/bios/ps2-0230a-20080220.rom2 - Size: max 4.0 MB
- Aliases:
SCPH-90006_BIOS_VX_HK _230.ROM2 - Source:
pcsx2/ps2/BiosTools.cpp:228-255,pcsx2/ps2/BiosTools.cpp:466,pcsx2/ps2/BiosTools.cpp:470-481,pcsx2/MemoryTypes.h:14 - Same two-step naming as rom1. Copied to the ROM2 region, which is 4 MB in this tree. Only present on Chinese region consoles.
ps2-0230a-20080220.nvm optional in repo HLE fallback
Console NVRAM
- Path:
pcsx2/bios/ps2-0230a-20080220.nvm - Size: 1.0 KB
- Source:
pcsx2/CDVD/CDVD.cpp:48-49,pcsx2/CDVD/CDVD.cpp:150-204 - 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. An arcade session skips the blank-block test and fills the built image with 0xFF instead.
ps2-0230a-20080220.mec optional in repo HLE fallback
Mechacon version
- Path:
pcsx2/bios/ps2-0230a-20080220.mec - Size: 4 B
- Source:
pcsx2/CDVD/CDVD.cpp:62-63,pcsx2/CDVD/CDVD.cpp:206-219 - Read at the BIOS path with the extension replaced by mec. Defaults to 0x00020603, or 0x0104020a in an arcade session, and is written back at that path when it cannot be read.
eeprom.dat optional in repo HLE fallback
DEV9 EEPROM
- Size: 64 B
- Source:
pcsx2/DEV9/DEV9.cpp:77,pcsx2/DEV9/DEV9.cpp:224-275 - 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.
flash.dat optional missing HLE fallback
DEV9 SmartMedia flash image
- Size: max 8.2 MB
- Source:
pcsx2/DEV9/flash.cpp:8-16,pcsx2/DEV9/flash.cpp:62-86 - 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.
<module>.irx optional unsourceable
IOP module injected at boot
- Source:
pcsx2/ps2/BiosTools.cpp:257-270,pcsx2/ps2/BiosTools.cpp:483-484,pcsx2/R3000AInterpreter.cpp:223,pcsx2/arm64/iR3000A-arm64.cpp:1283,pcsx2/Config.h:1671 - Config key:
EmuCore/CurrentIRX - 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.
GameIndex.yaml optional in repo bundled
Game database
- Path:
pcsx2/resources/GameIndex.yaml - Size: 2.6 MB
- SHA1:
72bfdf91fa11... - Source:
pcsx2/GameDatabase.cpp:47,pcsx2/GameDatabase.cpp:1373-1378,pcsx2/GameDatabase.cpp:1314-1324 - Read from the resources folder, keyed by serial, carrying the per-game fixes, patches and settings overrides. Parsed once on first lookup. The libretro build falls back on a compiled-in copy when the file is absent.
armsx2_overrides.yaml optional in repo bundled
Mobile GPU game database overlay
- Path:
pcsx2/resources/armsx2_overrides.yaml - Source:
pcsx2/GameDatabase.cpp:54,pcsx2/GameDatabase.cpp:1379-1382,cmake/BuildParameters.cmake:227-240,pcsx2/CMakeLists.txt:1828-1837,platforms/android/app/build.gradle.kts:73-85 - 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.
RedumpDatabase.yaml optional in repo bundled
Disc track hash database
- Path:
pcsx2/resources/RedumpDatabase.yaml - Size: 1.8 MB
- SHA1:
bf2c73d668cd... - Source:
pcsx2/GameDatabase.cpp:1461,pcsx2/GameDatabase.cpp:1511-1526,pcsx2-qt/Settings/GameSummaryWidget.cpp:325 - 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.
patches.zip optional in repo bundled
Game patch archive
- Path:
pcsx2/resources/patches.zip - Size: 1.9 MB
- SHA1:
f7d0f1606c87... - Source:
pcsx2/Patch.cpp:122,pcsx2/Patch.cpp:294-345,pcsx2/Patch.cpp:452-464,.github/workflows/linux_build_qt.yml:33 - 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. The libretro build compiles in the copy it fetches at configure time and opens it when the file is absent.
game_controller_db.txt optional in repo bundled
SDL controller mapping database
- Path:
pcsx2/resources/game_controller_db.txt - Source:
pcsx2/Input/SDLInputSource.cpp:24,pcsx2/Input/SDLInputSource.cpp:699-713 - 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.
Roboto-Regular.ttf optional in repo bundled
Interface font
- Path:
pcsx2/resources/fonts/Roboto-Regular.ttf - Source:
pcsx2/ImGui/ImGuiManager.cpp:509-525,pcsx2/ImGui/ImGuiManager.cpp:533-543,pcsx2/ImGui/ImGuiManager.cpp:155-160,pcsx2/GS/GS.cpp:175-194 - Seeded as the standard font when no language layer supplied one, which is always the case on Android. A missing file is logged and the font list is left empty.
RobotoMono-Medium.ttf optional in repo bundled
Fixed-width interface font
- Path:
pcsx2/resources/fonts/RobotoMono-Medium.ttf - Source:
pcsx2/ImGui/ImGuiManager.cpp:509-525,pcsx2/ImGui/ImGuiManager.cpp:565,pcsx2/ImGui/FullscreenUI_Settings.cpp:3533 - Read for the fixed-width font, the standard font standing in when it is missing. Also the initial path the fullscreen interface offers when picking a custom OSD font.
fa-solid-900.ttf optional in repo bundled
Font Awesome icon font
- Path:
pcsx2/resources/fonts/fa-solid-900.ttf - Source:
pcsx2/ImGui/ImGuiManager.cpp:509-525,pcsx2/ImGui/ImGuiManager.cpp:566 - Read for the interface icon glyphs. A missing file is logged and skipped.
promptfont.otf optional in repo bundled
Controller prompt font
- Path:
pcsx2/resources/fonts/promptfont.otf - Source:
pcsx2/ImGui/ImGuiManager.cpp:509-525,pcsx2/ImGui/ImGuiManager.cpp:567 - Read for the controller button glyphs. A missing file is logged and skipped.
Twemoji.Mozilla.ttf optional in repo bundled
Emoji font
- Path:
pcsx2/resources/fonts/Twemoji.Mozilla.ttf - Source:
pcsx2-qt/Translations.cpp:340-347,pcsx2-qt/Translations.cpp:407-424,pcsx2-qt/Translations.cpp:541-549,platforms/android/app/build.gradle.kts:79-81 - First entry of the emoji script table, resolved under UserResources then the resources folder and downloaded into UserResources/fonts when neither holds it. Read by the Qt builds only; the Android asset step leaves it out.
NotoSansJP-Regular.ttf optional in repo
Japanese interface font
- Path:
pcsx2/resources/fonts/NotoSansJP-Regular.ttf - Source:
pcsx2-qt/Translations.cpp:354-360,pcsx2-qt/Translations.cpp:407-424,pcsx2-qt/Translations.cpp:541-549 - 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.
NotoSansKR-Regular.ttf optional in repo
Korean interface font
- Path:
pcsx2/resources/fonts/NotoSansKR-Regular.ttf - Source:
pcsx2-qt/Translations.cpp:361-367,pcsx2-qt/Translations.cpp:407-424,pcsx2-qt/Translations.cpp:541-549 - Same resolution and download path as the Japanese font. Not shipped.
NotoSansSC-Regular.ttf optional in repo
Simplified Chinese interface font
- Path:
pcsx2/resources/fonts/NotoSansSC-Regular.ttf - Source:
pcsx2-qt/Translations.cpp:320-326,pcsx2-qt/Translations.cpp:407-424,pcsx2-qt/Translations.cpp:541-549 - Same resolution and download path as the Japanese font. Not shipped.
NotoSansTC-Regular.ttf optional in repo
Traditional Chinese interface font
- Path:
pcsx2/resources/fonts/NotoSansTC-Regular.ttf - Source:
pcsx2-qt/Translations.cpp:327-333,pcsx2-qt/Translations.cpp:407-424,pcsx2-qt/Translations.cpp:541-549 - Same resolution and download path as the Japanese font. Not shipped.
NotoSansArabic-Regular.ttf optional in repo
Arabic interface font
- Path:
pcsx2/resources/fonts/NotoSansArabic-Regular.ttf - Source:
pcsx2-qt/Translations.cpp:314-319,pcsx2-qt/Translations.cpp:407-424,pcsx2-qt/Translations.cpp:541-549 - Same resolution and download path as the Japanese font. Not shipped.
NotoSansHebrew-Regular.ttf optional in repo
Hebrew interface font
- Path:
pcsx2/resources/fonts/NotoSansHebrew-Regular.ttf - Source:
pcsx2-qt/Translations.cpp:348-353,pcsx2-qt/Translations.cpp:407-424,pcsx2-qt/Translations.cpp:541-549 - Same resolution and download path as the Japanese font. Not shipped.
NotoSansDevanagari-Regular.ttf optional in repo
Devanagari interface font
- Path:
pcsx2/resources/fonts/NotoSansDevanagari-Regular.ttf - Source:
pcsx2-qt/Translations.cpp:334-339,pcsx2-qt/Translations.cpp:407-424,pcsx2-qt/Translations.cpp:541-549 - Same resolution and download path as the Japanese font. Not shipped.
tfx.glsl required in repo bundled
Vulkan texture function shader
- Path:
pcsx2/resources/shaders/vulkan/tfx.glsl - Source:
pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:3031-3036,pcsx2/GS/Renderers/Common/GSDevice.cpp:528-540 - Compiled at device creation. A source that cannot be read fails the pipeline compile and the Vulkan device with it. The libretro build falls back on a compiled-in copy of every shader source.
convert.glsl required in repo bundled
Vulkan conversion shader
- Path:
pcsx2/resources/shaders/vulkan/convert.glsl - Source:
pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:6174-6179,pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:6537-6542
present.glsl required in repo bundled
Vulkan presentation shader
- Path:
pcsx2/resources/shaders/vulkan/present.glsl - Source:
pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:6366-6370
merge.glsl required in repo bundled
Vulkan merge shader
- Path:
pcsx2/resources/shaders/vulkan/merge.glsl - Source:
pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:6467-6471
interlace.glsl required in repo bundled
Vulkan interlace shader
- Path:
pcsx2/resources/shaders/vulkan/interlace.glsl - Source:
pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:6416-6420
shadeboost.glsl required in repo bundled
Vulkan shade boost shader
- Path:
pcsx2/resources/shaders/vulkan/shadeboost.glsl - Source:
pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:6517,pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:6572-6577,pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:3056-3061 - Compiled by the post-processing pass, which runs unconditionally in the device creation chain, so a source that cannot be read fails the device.
cas.glsl optional in repo bundled
Vulkan contrast adaptive sharpening shader
- Path:
pcsx2/resources/shaders/vulkan/cas.glsl - SHA1:
005cecf1a5e2... - Source:
pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:6623-6625,pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:3069-3076 - 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.
fsr1.glsl optional in repo bundled
Vulkan FSR1 upscaling shader
- Path:
pcsx2/resources/shaders/vulkan/fsr1.glsl - Source:
pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:6672-6676,pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:3087-3091,pcsx2/GS/Renderers/Common/GSDevice.cpp:1643-1660 - Read twice, once per pass, with ffx_a_fsr1.h and ffx_fsr1.h substituted for its include lines. A failure turns FSR1 upscaling off and device creation carries on.
sgsr.glsl optional in repo bundled
Vulkan SGSR upscaling shader
- Path:
pcsx2/resources/shaders/vulkan/sgsr.glsl - Source:
pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:6720-6724,pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:3081-3085 - Read twice, once per edge-direction variant. A failure turns SGSR upscaling off and device creation carries on.
imgui.glsl required in repo bundled
Vulkan interface shader
- Path:
pcsx2/resources/shaders/vulkan/imgui.glsl - Source:
pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:6747-6752,pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:3093-3094
fxaa.fx required in repo bundled
FXAA shader, shared by every backend
- Path:
pcsx2/resources/shaders/common/fxaa.fx - Source:
pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp:6544-6549,pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:686-687,pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:3180-3188,pcsx2/GS/Renderers/DX11/GSDevice11.cpp:1967-1974,pcsx2/GS/Renderers/DX12/GSDevice12.cpp:3167 - 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.
ffx_a.h optional in repo bundled
FidelityFX helper header
- Path:
pcsx2/resources/shaders/common/ffx_a.h - Source:
pcsx2/GS/Renderers/Common/GSDevice.cpp:1630-1641 - Read as a source file and substituted for the include line of the sharpening shader before compilation.
ffx_cas.h optional in repo bundled
FidelityFX CAS header
- Path:
pcsx2/resources/shaders/common/ffx_cas.h - Source:
pcsx2/GS/Renderers/Common/GSDevice.cpp:1630-1641 - Substituted the same way as ffx_a.h.
ffx_a_fsr1.h optional in repo bundled
FidelityFX helper header for FSR1
- Path:
pcsx2/resources/shaders/common/ffx_a_fsr1.h - Source:
pcsx2/GS/Renderers/Common/GSDevice.cpp:1643-1660 - Read as a source file and substituted for the include line of the FSR1 shader before compilation.
ffx_fsr1.h optional in repo bundled
FidelityFX FSR1 header
- Path:
pcsx2/resources/shaders/common/ffx_fsr1.h - Source:
pcsx2/GS/Renderers/Common/GSDevice.cpp:1643-1660 - Substituted the same way as ffx_a_fsr1.h.
tfx_vgs.glsl optional in repo bundled
OpenGL texture function vertex and geometry shader
- Path:
pcsx2/resources/shaders/opengl/tfx_vgs.glsl - Source:
pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:891-895,pcsx2/GS/GS.cpp:97-133 - The OpenGL backend is one of those 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.
tfx_fs.glsl optional in repo bundled
OpenGL texture function fragment shader
- Path:
pcsx2/resources/shaders/opengl/tfx_fs.glsl - Source:
pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:891-895 - Read with tfx_vgs.glsl; the OpenGL device fails without it.
convert.glsl optional in repo bundled
OpenGL conversion shader
- Path:
pcsx2/resources/shaders/opengl/convert.glsl - Source:
pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:517-523 - The OpenGL device fails without it.
present.glsl optional in repo bundled
OpenGL presentation shader
- Path:
pcsx2/resources/shaders/opengl/present.glsl - Source:
pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:605-610 - The OpenGL device fails without it.
merge.glsl optional in repo bundled
OpenGL merge shader
- Path:
pcsx2/resources/shaders/opengl/merge.glsl - Source:
pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:641-646 - The OpenGL device fails without it.
interlace.glsl optional in repo bundled
OpenGL interlace shader
- Path:
pcsx2/resources/shaders/opengl/interlace.glsl - Source:
pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:664-669 - The OpenGL device fails without it.
shadeboost.glsl optional in repo bundled
OpenGL shade boost shader
- Path:
pcsx2/resources/shaders/opengl/shadeboost.glsl - Source:
pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:686-687,pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:3435-3441 - Compiled with the FXAA program in the OpenGL device creation chain, so that device fails without it.
cas.glsl optional in repo bundled
OpenGL contrast adaptive sharpening shader
- Path:
pcsx2/resources/shaders/opengl/cas.glsl - Source:
pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:3624-3630,pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:689-698 - A desktop GL compute shader, read only on a GL 4.2 context with compute shaders and gated away from GL ES contexts because feeding it to an ES compiler crashes some drivers. A failure turns sharpening off.
imgui.glsl optional in repo bundled
OpenGL interface shader
- Path:
pcsx2/resources/shaders/opengl/imgui.glsl - Source:
pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:792-793,pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp:3684-3691 - The OpenGL device fails without it.
tfx.fx optional in repo bundled
Direct3D texture function shader
- Path:
pcsx2/resources/shaders/dx11/tfx.fx - Source:
pcsx2/GS/Renderers/DX11/GSDevice11.cpp:215-218,pcsx2/GS/Renderers/DX12/GSDevice12.cpp:1008,platforms/android/app/build.gradle.kts:73-78 - 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.
convert.fx optional in repo bundled
Direct3D conversion shader
- Path:
pcsx2/resources/shaders/dx11/convert.fx - Source:
pcsx2/GS/Renderers/DX11/GSDevice11.cpp:229-231,pcsx2/GS/Renderers/DX12/GSDevice12.cpp:2893 - The Direct3D devices fail without it.
present.fx optional in repo bundled
Direct3D presentation shader
- Path:
pcsx2/resources/shaders/dx11/present.fx - Source:
pcsx2/GS/Renderers/DX11/GSDevice11.cpp:267,pcsx2/GS/Renderers/DX12/GSDevice12.cpp:3041 - The Direct3D devices fail without it.
merge.fx optional in repo bundled
Direct3D merge shader
- Path:
pcsx2/resources/shaders/dx11/merge.fx - Source:
pcsx2/GS/Renderers/DX11/GSDevice11.cpp:319,pcsx2/GS/Renderers/DX12/GSDevice12.cpp:3120 - The Direct3D devices fail without it.
interlace.fx optional in repo bundled
Direct3D interlace shader
- Path:
pcsx2/resources/shaders/dx11/interlace.fx - Source:
pcsx2/GS/Renderers/DX11/GSDevice11.cpp:354,pcsx2/GS/Renderers/DX12/GSDevice12.cpp:3084 - The Direct3D devices fail without it.
shadeboost.fx optional in repo bundled
Direct3D shade boost shader
- Path:
pcsx2/resources/shaders/dx11/shadeboost.fx - Source:
pcsx2/GS/Renderers/DX11/GSDevice11.cpp:374,pcsx2/GS/Renderers/DX12/GSDevice12.cpp:3190
cas.hlsl optional in repo bundled
Direct3D contrast adaptive sharpening shader
- Path:
pcsx2/resources/shaders/dx11/cas.hlsl - Source:
pcsx2/GS/Renderers/DX11/GSDevice11.cpp:2305,pcsx2/GS/Renderers/DX12/GSDevice12.cpp:2365 - Includes ffx_a.h and ffx_cas.h.
imgui.fx optional in repo bundled
Direct3D interface shader
- Path:
pcsx2/resources/shaders/dx11/imgui.fx - Source:
pcsx2/GS/Renderers/DX11/GSDevice11.cpp:2355-2359,pcsx2/GS/Renderers/DX12/GSDevice12.cpp:2393 - The Direct3D devices fail without it.
proverb.zip optional in repo standalone
Arcade boot programs
- Size: max 64.0 MB
- Validation: size
- Source:
platforms/android/app/src/main/java/com/armsx2/arcade/ArcadeLibrary.kt:46-47,platforms/android/app/src/main/java/com/armsx2/arcade/ArcadeLibrary.kt:58,platforms/android/app/src/main/java/com/armsx2/arcade/ArcadeLibrary.kt:118,platforms/android/app/src/main/java/com/armsx2/arcade/ArcadeLibrary.kt:131-167,platforms/android/app/src/main/java/com/armsx2/arcade/ArcadeLibrary.kt:393-400,pcsx2/VMManager.cpp:1719-1726 - The Proverb bootloader release, one zip holding bin/<gameid>/boot.elf for every arcade game. The Android application downloads it from the proverb nightly release into arcade under its files directory, refuses one over 64 MB or one holding no boot program, and writes the game's boot.elf out of it at each import. The core opens only that boot.elf, at the path the game's manifest gives, and an arcade boot stops without it.
message.wav optional in repo bundled
Achievement notification sound
- Path:
pcsx2/resources/sounds/achievements/message.wav - Source:
pcsx2/Achievements.cpp:68,pcsx2/Achievements.cpp:1278-1284,pcsx2/Achievements.cpp:1528 - Played from the resources folder when the achievement information sound is enabled and no custom sound is set.
unlock.wav optional in repo bundled
Achievement unlock sound
- Path:
pcsx2/resources/sounds/achievements/unlock.wav - Size: 198.0 KB
- SHA1:
da328a0a3074... - Source:
pcsx2/Achievements.cpp:69,pcsx2/Achievements.cpp:1278-1284,pcsx2/Achievements.cpp:1581
lbsubmit.wav optional in repo bundled
Leaderboard submission sound
- Path:
pcsx2/resources/sounds/achievements/lbsubmit.wav - Source:
pcsx2/Achievements.cpp:70,pcsx2/Achievements.cpp:1278-1284,pcsx2/Achievements.cpp:1675
placeholder.png optional in repo bundled
Fullscreen interface placeholder texture
- Path:
pcsx2/resources/fullscreenui/placeholder.png - Source:
pcsx2/ImGui/FullscreenUI.cpp:331 - Named as the placeholder texture when the fullscreen interface initialises.
no-save.png optional in repo bundled
Empty save slot texture
- Path:
pcsx2/resources/fullscreenui/no-save.png - Source:
pcsx2/ImGui/ImGuiOverlays.cpp:1689
media-cdrom.svg optional in repo bundled
Game list menu icon
- Path:
pcsx2/resources/fullscreenui/media-cdrom.svg - Source:
pcsx2/ImGui/FullscreenUI.cpp:1398,pcsx2/ImGui/FullscreenUI.cpp:3522
start-game.svg optional in repo bundled
Start game menu icon
- Path:
pcsx2/resources/fullscreenui/start-game.svg - Source:
pcsx2/ImGui/FullscreenUI.cpp:1404
applications-system.svg optional in repo bundled
Settings menu icon
- Path:
pcsx2/resources/fullscreenui/applications-system.svg - Source:
pcsx2/ImGui/FullscreenUI.cpp:1411,pcsx2/ImGui/FullscreenUI.cpp:3517
exit.svg optional in repo bundled
Exit menu icon
- Path:
pcsx2/resources/fullscreenui/exit.svg - Source:
pcsx2/ImGui/FullscreenUI.cpp:1417,pcsx2/ImGui/FullscreenUI.cpp:1550
start-file.svg optional in repo bundled
Start file menu icon
- Path:
pcsx2/resources/fullscreenui/start-file.svg - Source:
pcsx2/ImGui/FullscreenUI.cpp:1474
drive-cdrom.svg optional in repo bundled
Start disc menu icon
- Path:
pcsx2/resources/fullscreenui/drive-cdrom.svg - Source:
pcsx2/ImGui/FullscreenUI.cpp:1480
start-bios.svg optional in repo bundled
Start BIOS menu icon
- Path:
pcsx2/resources/fullscreenui/start-bios.svg - Source:
pcsx2/ImGui/FullscreenUI.cpp:1486
back-icon.svg optional in repo bundled
Back menu icon
- Path:
pcsx2/resources/fullscreenui/back-icon.svg - Source:
pcsx2/ImGui/FullscreenUI.cpp:1492,pcsx2/ImGui/FullscreenUI.cpp:1542
desktop-mode.svg optional in repo bundled
Desktop mode menu icon
- Path:
pcsx2/resources/fullscreenui/desktop-mode.svg - Source:
pcsx2/ImGui/FullscreenUI.cpp:1558
AppBanner.svg optional in repo bundled
Application banner
- Path:
pcsx2/resources/icons/AppBanner.svg - Source:
pcsx2/ImGui/FullscreenUI.cpp:783
AppIconLarge.png optional in repo bundled
Application icon
- Path:
pcsx2/resources/icons/AppIconLarge.png - Source:
pcsx2/ImGui/FullscreenUI.cpp:1315,pcsx2-qt/SetupWizardDialog.cpp:165,pcsx2-qt/QtUtils.cpp:843 - Drawn by the fullscreen interface, shown by the Qt setup wizard, and copied out when a desktop entry is written.
AppIconLarge.ico optional in repo bundled
Windows application icon
- Path:
pcsx2/resources/icons/AppIconLarge.ico - Source:
pcsx2-qt/QtUtils.cpp:755 - Read next to the program when a shortcut is written.
ra-icon.svg optional in repo bundled
RetroAchievements icon
- Path:
pcsx2/resources/icons/ra-icon.svg - Source:
pcsx2/ImGui/FullscreenUI_Settings.cpp:4503,pcsx2-qt/SetupWizardDialog.cpp:428,pcsx2-qt/Settings/AchievementLoginDialog.cpp:21
star-<rating>.svg optional missing bundled
Compatibility rating icons
- Path:
pcsx2/resources/icons/star-<rating>.svg - Source:
pcsx2/ImGui/FullscreenUI.cpp:788,pcsx2-qt/GameList/GameListModel.cpp:529 - Six files, star-0.svg through star-5.svg, named from the compatibility rating of the entry.
<region>.svg optional missing bundled
Region flag icons
- Path:
pcsx2/resources/icons/flags/<region>.svg - Source:
pcsx2/ImGui/FullscreenUI.cpp:2881 - Forty-eight files, named from the region of the entry through RegionToFlagFilename.
cover-placeholder.png optional in repo bundled
Game list cover placeholder
- Path:
pcsx2/resources/cover-placeholder.png - Source:
pcsx2-qt/GameList/GameListModel.cpp:531
Generated on 2026-10-10T11:26:00Z