Merge pull request #431 from outis1one/claude/wolf-pair-port-conflict-7nz8qg

Backfill PCEE2 as a PS2 alternative emulator in ES-DE
This commit is contained in:
Outis
2026-09-03 11:18:40 -04:00
committed by GitHub
+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