Files
libretro/emulators/pcee2.yml
T
Abdessamad Derraz 3011727e6f chore: move pcee2 to upstream v2.9.138
The port now merges PCSX2 ab0b401f and embeds patches.zip, packed from the pcsx2_patches submodule (pcsx2/CMakeLists.txt:1183-1205, pcsx2/Patch.cpp:292-331). The resources copy is read only with PCEE2_EXTERNAL_RESOURCES set. Same files.
2026-10-23 15:52:34 +02:00

165 lines
8.0 KiB
YAML

emulator: PCEE2
type: libretro
core_classification: community_fork
bios_mode: agnostic
source: "https://github.com/WizzardSK/pcee2-libretro"
upstream: "https://github.com/PCSX2/pcsx2"
profiled_date: "2026-09-03"
source_commit: "387691a29efef63bafad04148d1ff94bf40e791b"
upstream_commit: "ab0b401f99729ef8da3009f9af28d8ee96e0e7ba"
core_version: "v2.9.138"
display_name: "Sony - PlayStation 2 (PCEE2)"
cores: [pcee2]
systems: [sony-playstation-2]
bios_directory: "pcsx2/bios/"
resources_directory: "pcsx2/resources/"
data_directories:
- ref: pcsx2-resources
destination: "pcsx2/resources"
source_ref: "pcee2-libretro/Libretro.cpp:543-571, pcsx2/Pcsx2Config.cpp:2417-2429"
notes: |
libretro port of current PCSX2, merged up to upstream ab0b401f (v2.9.138,
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, while the BIOS, CDVD, patch and database code is
upstream PCSX2.
InitializeConfig maps the PCSX2 folder layout under <system>/pcsx2:
AppRoot and DataRoot are that directory, Resources and UserResources are
pcsx2/resources, Settings is pcsx2/inis, and EmuFolders::LoadConfig
derives bios, memcards, cheats, patches, textures, gamesettings, cache,
snaps, sstates, logs, covers, inputprofiles and videos from DataRoot
(pcee2-libretro/Libretro.cpp:543-557, pcsx2/Pcsx2Config.cpp:2348-2365).
A standalone PCSX2.ini dropped in pcsx2/inis contributes nine emulation
sections as the baseline (pcee2-libretro/Libretro.cpp:633-664), and the core options and the
port overrides apply on top.
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 (pcee2-libretro/Libretro.cpp:707-747,
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 (pcsx2/ps2/BiosTools.cpp:258-282, 317-369).
The image is read into the 4 MB ROM region, and a file shorter than 2465792
bytes turns off the OSDSys parameter HLE. No hash is matched. Booting with
no content starts the BIOS (pcee2-libretro/Libretro.cpp:2286-2296).
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, and the mec is written back
as 0x00020603 when it cannot be read (pcsx2/ps2/BiosTools.cpp:214-241, 366-367,
pcsx2/CDVD/CDVD.cpp:136-205).
The shaders, four interface fonts, GameIndex.yaml and patches.zip are built
into the core (cmake/EmbedResources.cmake:19-31, 46-62,
pcsx2/CMakeLists.txt:1170-1219)
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:441-465,
pcsx2/ImGui/ImGuiManager.cpp:473-495, pcsx2/GameDatabase.cpp:1037-1066, pcsx2/Patch.cpp:292-331,
pcee2-libretro/Libretro.cpp:580-602). A missing resources directory is a warning, not a
failure (pcee2-libretro/Libretro.cpp:562-571). patches.zip is packed at build time from the
3rdparty/pcsx2_patches submodule, so the build carries the patches of the
commit it points at, and the directory supplies nothing this build reads
by default. RedumpDatabase.yaml is read only by the Qt game
summary (pcsx2/GameDatabase.cpp:1213-1226 has no caller in the core),
game_controller_db.txt only by the SDL input source the port disables
(pcee2-libretro/Libretro.cpp:690-691, 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:944-952), and
fullscreenui/no-save.png only by the save state selector, whose hotkeys the
port clears (pcee2-libretro/Libretro.cpp:693, pcsx2/ImGui/ImGuiOverlays.cpp:1441-1442).
The port supplies Roboto alone to ImGui, so no emoji font is read.
Per-game user files keep their PCSX2 locations under <system>/pcsx2:
cheats and patches as <serial>_<crc>.pnach (pcsx2/Patch.cpp:333-368),
gamesettings/<serial>_<crc>.ini (pcsx2/VMManager.cpp:842-845),
textures/<serial>/replacements (pcsx2/GS/Renderers/HW/GSTextureReplacements.cpp:269-271),
memcards/*.ps2, which the core creates and lists in the memory card
options (pcee2-libretro/Libretro.cpp:749-769). The DEV9 HDD image is named in the ini and
created on demand.
files:
- name: "<bios>.bin"
path: "pcsx2/bios/<bios>.bin"
description: "PS2 BIOS image"
min_size: 4194304
max_size: 8388608
required: true
validation: [size]
source_ref: "source pcee2-libretro/Libretro.cpp:707-747, source pcsx2/ps2/BiosTools.cpp:16-17, source pcsx2/ps2/BiosTools.cpp:80-197, source pcsx2/ps2/BiosTools.cpp:258-294, source pcsx2/ps2/BiosTools.cpp:317-369"
note: >
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.
- name: "<bios>.rom1"
path: "pcsx2/bios/<bios>.rom1"
description: "DVD player ROM"
max_size: 4194304
required: false
source_ref: "source pcsx2/ps2/BiosTools.cpp:214-241, source pcsx2/ps2/BiosTools.cpp:366, source pcsx2/MemoryTypes.h:13"
note: >
Tried as <bios>.bin.rom1 then <bios>.rom1, opened case-insensitively,
skipped with a console line when absent.
- name: "<bios>.rom2"
path: "pcsx2/bios/<bios>.rom2"
description: "Chinese ROM extension"
max_size: 4194304
required: false
source_ref: "source pcsx2/ps2/BiosTools.cpp:214-241, source pcsx2/ps2/BiosTools.cpp:367, source pcsx2/MemoryTypes.h:14"
note: >
Same lookup as rom1. Present on Chinese region consoles only.
- name: "<bios>.nvm"
path: "pcsx2/bios/<bios>.nvm"
description: "Console NVRAM (region parameters, language, iLink ID, OSD settings)"
size: 1024
required: false
hle_fallback: true
source_ref: "source pcsx2/CDVD/CDVD.cpp:47, source pcsx2/CDVD/CDVD.cpp:136-188, source pcsx2/CDVD/CDVD.cpp:207-238"
note: >
Read at <bios>.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.
- name: "<bios>.mec"
path: "pcsx2/bios/<bios>.mec"
description: "Mechacon version, one u32"
size: 4
required: false
hle_fallback: true
source_ref: "source pcsx2/CDVD/CDVD.cpp:49, source pcsx2/CDVD/CDVD.cpp:190-204"
note: >
Read at <bios>.mec, written as 0x00020603 when it cannot be read.
- name: "patches.zip"
path: "pcsx2/resources/patches.zip"
description: "Built-in game patch archive (pnach per serial and CRC)"
required: false
category: game_data
source_ref: "upstream pcsx2/Patch.cpp:117, source pcsx2/Patch.cpp:292-331, source pcsx2/Patch.cpp:379-419, source pcsx2/CMakeLists.txt:1183-1205"
note: >
Embedded in the core, packed from the 3rdparty/pcsx2_patches submodule.
The copy in the resources directory is opened only when
PCEE2_EXTERNAL_RESOURCES is set or the build carries no embedded copy.
Searched for <serial>_<crc>.pnach, then <crc>.pnach, when a game's
patches are enumerated. Files in the patches folder take precedence. A
failure to open is reported once on screen.
- name: "eeprom.dat"
description: "DEV9 network adapter EEPROM"
size: 64
required: false
hle_fallback: true
source_ref: "upstream pcsx2/DEV9/DEV9.cpp:60-73, source pcsx2/DEV9/DEV9.cpp:97-158"
note: >
Opened read-write and mapped from the process working directory by
DEV9init. The built-in eeprom table is used when it cannot be opened.