Backfill PCEE2 as a PS2 alternative emulator in ES-DE

The PCEE2 libretro core (a separate, actively-developed PCSX2 port,
WizzardSK/pcee2-libretro) is only in ES-DE's own bundled es_systems.xml
as of 3.5.0, which hasn't been released yet - confirmed against ES-DE's
own CHANGELOG.md and by diffing the v3.4.1 tag's real ps2 system block
against git master's (identical except for this one missing <command>
line). ghcr.io/games-on-whales/es-de:edge always installs the latest
*released* AppImage (confirmed against gow's own Dockerfile, which
queries GitLab's releases API), so the container this repo runs
genuinely has no PCEE2 entry at all yet - not a missing core download,
a missing menu entry.

Backfills it via the same esde-custom-systems/es_systems.xml mechanism
already used for the TI-99/4A and Wii U customizations, replicating the
real v3.4.1 ps2 block verbatim plus the one new command (as the default,
matching upstream's own placement). The core file itself needs no extra
handling - confirmed live against the libretro buildbot that
pcee2_libretro.so.zip is already covered by the normal RetroArch cores
pre-download.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLX1yYKJExGSXmgUhxKQG6
This commit is contained in:
Claude
2026-09-03 15:15:25 +00:00
parent 0be27b15e9
commit 8aaaf993ac
+75
View File
@@ -1334,6 +1334,61 @@ WIIUXMLPY
log_info "system in ES-DE (per-game or per-system, via its own 'Alternative emulators' option)." log_info "system in ES-DE (per-game or per-system, via its own 'Alternative emulators' option)."
fi fi
# ── PS2: backfill the PCEE2 RetroArch core as an alternative emulator ──────
# ghcr.io/games-on-whales/es-de:edge only ever installs ES-DE's latest
# RELEASED AppImage (confirmed against gow's own apps/es-de/build/Dockerfile
# — it queries GitLab's releases API for the newest tag, not git master),
# which is currently v3.4.1. PCEE2 (a separate, actively-developed libretro
# PCSX2 port, WizzardSK/pcee2-libretro) was only added to ES-DE's own
# bundled es_systems.xml under "Version 3.5.0 (in development)" — confirmed
# against ES-DE's real CHANGELOG.md and by diffing the v3.4.1 tag's actual
# ps2 system block against git master's: identical except for this one
# missing <command> line. So on the version this container actually runs,
# "PCEE2" genuinely isn't in the alternative-emulators list at all yet —
# not a missing download, a missing menu entry. This backfills it (as the
# new default, matching upstream's own placement) while every other field
# and command is copied verbatim from the real v3.4.1 block, so nothing
# else about the ps2 system changes. The actual pcee2_libretro.so core
# file doesn't need any extra download step here — confirmed live against
# the libretro buildbot's own index that it's already covered by this
# installer's normal "./manage.sh cores all" (the default RetroArch core
# pre-download prompt below), same as every other libretro core.
mkdir -p "$GAME_STORAGE_DIR/esde-custom-systems"
local _PS2_XML="$GAME_STORAGE_DIR/esde-custom-systems/es_systems.xml"
backup_if_exists "$_PS2_XML"
python3 - "$_PS2_XML" << 'PS2XMLPY'
import re, sys
path = sys.argv[1]
try:
with open(path) as f:
content = f.read()
except FileNotFoundError:
content = '<systemList>\n</systemList>\n'
content = re.sub(r'[ \t]*<system>\s*<name>ps2</name>.*?</system>[ \t]*\n?', '', content, flags=re.DOTALL)
block = ''' <system>
<name>ps2</name>
<fullname>Sony PlayStation 2</fullname>
<path>%ROMPATH%/ps2</path>
<extension>.bin .BIN .chd .CHD .ciso .CISO .cso .CSO .desktop .dump .DUMP .elf .ELF .gz .GZ .m3u .M3U .mdf .MDF .img .IMG .iso .ISO .isz .ISZ .ngr .NRG .zso .ZSO</extension>
<command label="PCEE2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcee2_libretro.so %ROM%</command>
<command label="LRPS2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx2_libretro.so %ROM%</command>
<command label="PCSX2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx2_libretro.so %ROM%</command>
<command label="PCSX2 (Standalone)">%EMULATOR_PCSX2% -batch %ROM%</command>
<command label="PCSX2 Legacy (Standalone)">%EMULATOR_PCSX2-LEGACY% --nogui %ROM%</command>
<command label="Play! (Standalone)">%EMULATOR_PLAY!% --fullscreen --disc %ROM%</command>
<command label="Shortcut or script">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<platform>ps2</platform>
<theme>ps2</theme>
</system>
'''
content = content.replace('</systemList>', block + '</systemList>')
with open(path, 'w') as f:
f.write(content)
PS2XMLPY
chown "$ACTUAL_USER:$ACTUAL_USER" "$_PS2_XML"
log_success "PS2: added PCEE2 as the default RetroArch core (custom_systems/es_systems.xml) — ES-DE's"
log_info "own build doesn't ship it yet (added upstream in the not-yet-released 3.5.0)"
# ── App selection ───────────────────────────────────────────────────────── # ── App selection ─────────────────────────────────────────────────────────
echo "" echo ""
echo "═══════════════════════════════════════════════════════" echo "═══════════════════════════════════════════════════════"
@@ -3946,6 +4001,26 @@ RetroArch/core-based option. Same config either way — ES-DE's embedded
RetroArch and the standalone RetroArch app (if you added it) share the RetroArch and the standalone RetroArch app (if you added it) share the
same \`retroarch/\` cores/saves/system directories. same \`retroarch/\` cores/saves/system directories.
**PS2 has three RetroArch-core alternative-emulator labels — PCEE2,
LRPS2, and PCSX2** — and it's worth knowing they're not three different
cores: LRPS2 and PCSX2 both point at the exact same file
(\`pcsx2_libretro.so\`, ES-DE's own naming carried over from when the core
was called LRPS2 upstream), while **PCEE2** (\`pcee2_libretro.so\`) is a
genuinely separate, actively-developed libretro port
([WizzardSK/pcee2-libretro](https://github.com/WizzardSK/pcee2-libretro)).
ES-DE only added PCEE2 as an alternative emulator (as the new *default*,
in fact) in version 3.5.0 — confirmed against ES-DE's own CHANGELOG.md —
which hasn't been released yet as of this writing, so the actual ES-DE
build \`ghcr.io/games-on-whales/es-de:edge\` ships (it always installs the
latest *released* AppImage, confirmed against gow's own Dockerfile) is
still on 3.4.1 and genuinely has no PCEE2 entry at all. This installer
backfills it via \`esde-custom-systems/es_systems.xml\` (same mechanism as
the TI-99/4A and Wii U customizations above) so it shows up as an
alternative — and as the default — regardless. The core file itself needs
no special handling: it's on the official libretro buildbot like every
other core, so the normal RetroArch cores pre-download below already
covers it.
The Dolphin core's \`Sys\` folder (compatibility DB + IPL data it needs to The Dolphin core's \`Sys\` folder (compatibility DB + IPL data it needs to
boot Wii titles at all) is fetched automatically now, right after the core boot Wii titles at all) is fetched automatically now, right after the core
itself downloads — no more manual trip through RetroArch's own Online itself downloads — no more manual trip through RetroArch's own Online