PCEE2 - RetroBIOS¶
Technical notes
libretro port of current PCSX2, merged up to upstream 6db638dc (v2.7.523, pcee2-libretro/upstream.version); the build reports that version as library_version. Everything the port adds lives in pcee2-libretro/ and in the libretro renderer bridges; the BIOS, CDVD, patch and database code is upstream PCSX2.
InitializeConfig maps the PCSX2 folder layout under
BIOS detection is filename-agnostic. The core option pcsx2_bios lists every file of pcsx2/bios that IsBIOS accepts: a romdir whose RESET entry is followed by a readable ROMVER, whose fifth character gives the zone (Japan, USA, Europe, Asia, China, T10K, COH-H, Test, Free). With the option on auto, SettingsOverride selects the first accepted file (Libretro.cpp:578-618, pcsx2/ps2/BiosTools.cpp:80-197, 284-294). When no BIOS is configured or the configured name is missing, LoadBIOS falls back to FindBiosImage, which also filters on size between 4 and 8 MB (BiosTools.cpp:258-282, 317-369). The image is read into the 4 MB ROM region; a file shorter than 2465792 bytes turns off the OSDSys parameter HLE. No hash is matched. Booting with no content starts the BIOS (Libretro.cpp:2090-2096).
Companions derive from the selected image: rom1 and rom2 are tried as the full name plus extension, then with the extension replaced, and are skipped when absent; the nvm is read at the replaced extension and rebuilt with region and language defaults when missing or blank; the mec is written back as 0x00020603 when it cannot be read (BiosTools.cpp:214-241, 366-367, pcsx2/CDVD/CDVD.cpp:136-205).
The shaders, four interface fonts and GameIndex.yaml are built into the core (cmake/EmbedResources.cmake:19-31, pcsx2/CMakeLists.txt:1137-1157) and win over the copies on disk unless PCEE2_EXTERNAL_RESOURCES is set in the environment (pcsx2/EmbeddedResources.cpp:8-12, pcsx2/GS/Renderers/Common/GSDevice.cpp:372-387, pcsx2/ImGui/ImGuiManager.cpp:470-492, pcsx2/GameDatabase.cpp:1021-1050, Libretro.cpp:451-473). A missing resources directory is a warning, not a failure (Libretro.cpp:433-442). What the directory still supplies to this build is patches.zip. RedumpDatabase.yaml is read only by the Qt game summary (pcsx2/GameDatabase.cpp:1197-1210 has no caller in the core), game_controller_db.txt only by the SDL input source the port disables (Libretro.cpp:561-562, pcsx2/Input/SDLInputSource.cpp:701-706), the achievement sounds only with achievements enabled, which no core option or adopted ini section does (pcsx2/Achievements.cpp:943-951), and fullscreenui/no-save.png only by the save state selector, whose hotkeys the port clears (Libretro.cpp:564, pcsx2/ImGui/ImGuiOverlays.cpp:1461-1462). The port supplies Roboto alone to ImGui, so no emoji font is read.
Per-game user files keep their PCSX2 locations under
7 files | 1 required, 6 optional | 7 in repo, 0 missing | 3 with HLE fallback Categories: 6 BIOS, 1 game data
<bios>.bin required in repo
PS2 BIOS image
- Path:
pcsx2/bios/ - Size: min 4.0 MB, max 8.0 MB
- Validation: size
- Source:
pcee2-libretro/Libretro.cpp:578-618,pcsx2/ps2/BiosTools.cpp:16-17,pcsx2/ps2/BiosTools.cpp:80-197,pcsx2/ps2/BiosTools.cpp:258-294,pcsx2/ps2/BiosTools.cpp:317-369 - Any file of pcsx2/bios whose romdir carries RESET and ROMVER. The 4 to 8 MB filter applies in FindBiosImage only; the core option scan and the auto selection accept any size that passes the romdir check.
<bios>.rom1 optional in repo
DVD player ROM
- Path:
pcsx2/bios/ - Size: max 4.0 MB
- Source:
pcsx2/ps2/BiosTools.cpp:214-241,pcsx2/ps2/BiosTools.cpp:366,pcsx2/MemoryTypes.h:13 - Tried as
.bin.rom1 then .rom1, opened case-insensitively, skipped with a console line when absent.
<bios>.rom2 optional in repo
Chinese ROM extension
- Path:
pcsx2/bios/ - Size: max 4.0 MB
- Source:
pcsx2/ps2/BiosTools.cpp:214-241,pcsx2/ps2/BiosTools.cpp:367,pcsx2/MemoryTypes.h:14 - Same lookup as rom1. Present on Chinese region consoles only.
<bios>.nvm optional in repo HLE fallback
Console NVRAM (region parameters, language, iLink ID, OSD settings)
- Path:
pcsx2/bios/ - Size: 1.0 KB
- Source:
pcsx2/CDVD/CDVD.cpp:47,pcsx2/CDVD/CDVD.cpp:136-188,pcsx2/CDVD/CDVD.cpp:207-238 - Read at
.nvm, rebuilt in memory with region and language defaults when it is missing, short, or has a blank config block, and written back on save.
<bios>.mec optional in repo HLE fallback
Mechacon version, one u32
- Path:
pcsx2/bios/ - Size: 4 B
- Source:
pcsx2/CDVD/CDVD.cpp:49,pcsx2/CDVD/CDVD.cpp:190-204 - Read at
.mec; written as 0x00020603 when it cannot be read.
patches.zip optional in repo game_data bundled
Built-in game patch archive (pnach per serial and CRC)
- Path:
pcsx2/resources/patches.zip - Source:
pcsx2/Patch.cpp:117,pcsx2/Patch.cpp:289-317,pcsx2/Patch.cpp:365-405 - Opened read only from the resources directory when a game's patches are enumerated and searched for
_ .pnach, then .pnach. Files in the patches folder take precedence. A failure to open is reported once on screen. Not part of the PCSX2 source tree: PCSX2 builds fetch it from the pcsx2_patches releases, a rolling asset rebuilt on every patch commit.
eeprom.dat optional in repo HLE fallback
DEV9 network adapter EEPROM
- Size: 64 B
- Source:
pcsx2/DEV9/DEV9.cpp:60-73,pcsx2/DEV9/DEV9.cpp:97-158 - Opened read-write and mapped from the process working directory by DEV9init; the built-in eeprom table is used when it cannot be opened.
Data directories¶
pcsx2-resources>pcsx2/resources
Generated on 2026-09-14T09:03:10Z