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)."
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 ─────────────────────────────────────────────────────────
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
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
boot Wii titles at all) is fetched automatically now, right after the core
itself downloads — no more manual trip through RetroArch's own Online