mirror of
https://github.com/mihawk-99/PS5_RetroArch.git
synced 2026-10-18 23:09:29 -05:00
Qualify the console build with authenticated achievement-set loading, a fresh badge download, FCEUmm LAN hosting and relay joining. The relay session exchanges scripted controls and passes 55 direct emulation-state CRC comparisons. Normal quit returns the elevation service's root counts to baseline. Expose DNS/TLS failures and add a debug-only trace at the upstream state CRC comparison. This adds one port hook, so the intentional patch-count assertion changes from 253 to 254. Keep the requested Online Updater removal and repeatable RetroArch runner arguments. The verified build uses the standard SDK socket API. Online startup still requires the qualified external Lapy service; no autoload is installed. Document the force-close teardown timeout and untested lobby/NAT scope. Credentials, settings, saves and raw console captures are not committed. Validation: PS5_FRONTENDS='es-de picker' with the pinned picker template; tools/verify.sh format unit build integration evidence passed (193 unit, 193 integration). After moving only the debug trace to the received-CRC path, 24 focused frontend/patch tests and format/build passed again, followed by the final console runs. Final format/evidence, manifest and notices checks passed. Evidence: evidence/online-features/capture.json and expectation.json. Replay: python3 tools/evidence.py compare evidence/ (126 captures, zero failures). Console reproduction: evidence/online-features/README.txt and console_netplay.py.
94 lines
5.4 KiB
Plaintext
94 lines
5.4 KiB
Plaintext
# RetroAchievements and NetPlay on PS5
|
|
|
|
Online startup needs the qualified external Lapy service already running before
|
|
RetroArch launches. The application uses its existing cooperative SDK request;
|
|
no daemon or kernel code is linked into RetroArch. Without service readiness,
|
|
normal sandbox startup remains available, but outgoing online features do not.
|
|
|
|
Prepare the service using evidence/network-elevation/README.txt and apply
|
|
evidence/installed-paths/daemon-readiness.patch as described in that directory.
|
|
Use the daemon built for PPSA99169 and this SDK, with all preflight guards enabled.
|
|
The one-shot form serves one launch. The previously qualified bounded service
|
|
also covers the picker returning to RetroArch. No autoload installation is made
|
|
by this change, and a service from another title is not interchangeable.
|
|
|
|
In WebUI > global settings > Achievements, save both username and password,
|
|
enable achievements, and restart with the service ready. The prior login failure
|
|
came from a different saved username, not password punctuation or URL encoding.
|
|
Passwords, tokens, settings, game paths and saves stay on the console.
|
|
|
|
For NetPlay, both peers need compatible RetroArch/core versions and identical
|
|
content. A host must accept incoming TCP on its chosen port (default 55435),
|
|
or use RetroArch's relay. The PC firewall was active during this verification;
|
|
its inbound rules were not available, so the console joining a PC was verified
|
|
through the official relay. Console hosting was verified over the LAN. Router
|
|
settings and Sony domain blocking were not changed. Public lobby listing and
|
|
long Internet gameplay sessions are outside these captures.
|
|
|
|
## Reproduce the checks
|
|
|
|
Build all shipped targets:
|
|
|
|
PS5_FRONTENDS='es-de picker' PS5_VULKAN_TEMPLATE="$PWD/build/picker-template" \
|
|
bash tools/verify.sh format unit build integration evidence
|
|
|
|
Follow evidence/installed-paths/README.txt to prepare console.py and its runner
|
|
under ignored build/. Use private .env for console access. Keep every raw capture
|
|
outside the repository; do not copy saved configs into evidence. Verify console
|
|
idle and the previous daemon's completion before every new launch.
|
|
|
|
The console harness uses /usr/bin/retroarch, a matching FCEUmm core at
|
|
build/netplay-host/fceumm/fceumm_libretro.so and the existing minimal pc.cfg in
|
|
that directory. It generates its own diagnostic NES content, scripts three
|
|
controller presses, and uses temporary console settings with saving disabled.
|
|
The fixture polls both controllers into RAM and increments a counter. No game,
|
|
BIOS or save data is part of the fixture.
|
|
|
|
From the repository root, using fresh /tmp output directories:
|
|
|
|
python3 -B evidence/online-features/console_netplay.py /tmp/netplay-join relay-join
|
|
python3 -B evidence/online-features/analyse_netplay.py /tmp/netplay-join relay-join
|
|
python3 -B evidence/online-features/console_netplay.py /tmp/netplay-host lan-host
|
|
python3 -B evidence/online-features/analyse_netplay.py /tmp/netplay-host lan-host
|
|
|
|
The relay test starts a private PC-hosted session through the standard relay
|
|
protocol. A loopback forwarding socket captures its session identifier and wire
|
|
traffic. The console connects directly to the official relay. Nothing is posted
|
|
to the public lobby. The LAN-host test forwards the PC client's connection to the
|
|
console. Each direction's 24-byte RetroArch handshake is followed by framed
|
|
commands; the analyser counts input frames, nonzero controller values and CRC
|
|
messages. The console client's debug log records the actual local/remote state
|
|
CRC comparison, including mismatches; a handshake alone is not a passing result.
|
|
|
|
For RetroAchievements, use the owner's existing supported content and console
|
|
credentials with the installed-paths runner, overriding OUT to a fresh /tmp
|
|
folder. Run an achievements label and a badge-download label. Require successful
|
|
login, session start and achievement-set load; delete only the test thumbnail
|
|
00000.png before the badge check and validate its downloaded PNG. Do not log or
|
|
commit account values, tokens, content names, configuration or save files.
|
|
|
|
Capture.json contains sanitized results and raw-log hashes. The raw logs and
|
|
wire dumps are private /tmp artifacts. The executable hash ties these checks to
|
|
the shipped build. The additional patch is debug logging at upstream's existing
|
|
CRC comparison; it changes neither the wire protocol nor synchronization rules.
|
|
|
|
## Failures retained
|
|
|
|
The first full gate attempt was sandbox-blocked in 13 local-server test setups;
|
|
rerunning with local networking enabled resolved those errors. Adding the trace
|
|
required updating the intentional patch-count assertion from 253 to 254. The
|
|
24 focused frontend/patch checks passed after that update.
|
|
|
|
The first final-build relay capture proved frame/input traffic but contained no
|
|
state-comparison traces: the initial hook covered deferred checks, while this
|
|
session checked received CRCs directly. The hook was moved to that existing
|
|
comparison, the 24 focused checks passed again, and all shipped targets were
|
|
rebuilt and read-back verified before the final console tests.
|
|
|
|
Two forced-close host trials exceeded the one-shot daemon's 60-second teardown
|
|
observation window (wait_title_exit, error 60, counts 75/74). Closing the PC peer
|
|
first did not resolve that timeout. Subsequent preflights returned to the original
|
|
73/72 counts. Normal RetroArch quit passed cleanup; the timeout is retained as a
|
|
force-close limitation, not treated as either verified cleanup or a proven leak.
|
|
No daemon guard or timeout was weakened.
|