EVO Player v0.1.0
Pre-release
Pre-release
A rebuild of the interface, and the tooling to work on it without a console.
New
- Launch screen. A hero that resumes what you were last watching, a
Jump back in shelf, and a Library shelf. Two-dimensional cursor: each
shelf remembers its own column, and empty shelves are skipped rather than
becoming dead stops. - File browser inspector. Selecting a file shows a frame from it plus
type, container, size, length, resolution and codecs, read from the
container itself. Probing is debounced, so scrolling never stalls. - Side navigation rail. Sections are reachable from each other instead of
each being a dead end you had to back out of. Back is a stack now, so a
screen opened from two places returns to the right one. - Hold to scroll. Every list moved one item per physical press before.
Shoulder buttons page; L2/R2 jump to the next initial in the browser. - Themed toast, and a
dangertheme token for failure states. Existing
.themefiles inherit it. - Playback OSD follows the theme — panel, seek bar, scrubber, chapter
marks, captions and the music visualiser. - Theme swatches on the settings row, so cycling themes is not blind.
- L3 captures a screenshot during playback (R3 keeps subtitle delay).
Fixed
- The eighth settings row was visible but unreachable — navigation wrapped at
a hardcoded count that had drifted from the real one. That whole class of
bug is gone; counts now live with the cursor. - Audio failures were all blamed on E-AC3, including files with no audio
track at all. The message was hardcoded and overwrote the accurate one.
E-AC3, AC-3, DTS, TrueHD, FLAC, Opus and ALAC are all present and linked. - Pixelated previews — thumbnails were point-sampled twice, once down and
once up. Minification now box-filters and the preview is presented 1:1. - The 4K converter created and joined worker threads every frame, the
pattern already documented here as causing a freeze. It uses a persistent
pool: 4K conversion measured 11.57 ms → 9.15 ms per frame on the host. - Commas and parentheses rendered as gaps: the font atlas has neither, and an
unknown glyph leaves a hole rather than being skipped. - Scrims painted as hard black slabs —
evo_ui_vgradreplaces rather than
blends, so a transparent colour was written straight into the framebuffer. - The expanded rail was not quite opaque, letting the page title ghost
through it.
Removed
- Haptics. Built, tested on hardware, and taken out: every vibration
entry point inlibScePadeither reports success and does nothing or
rejects the call, whilescePadSetLightBarsucceeds on the same handle.
Sound and lightbar remain. Evidence is indocs/ui-handoff.mdso nobody
re-derives it.
Tooling
tools/uiplay.sh— the UI as a navigable page in a browser, on any
machine. Real renderer, real font atlas, real icons.tools/uiview.sh— render any screen to a PNG.tools/shot.sh— fetch captures and interrogate them numerically: probe a
coordinate, scan pixel runs, crop, diff.tools/klog.sh— console log, timestamped, append-only, survives payload
restarts.tools/launch.sh— refuses to stack app instances, which is what
kernel-panicked a console during development.tools/bench.sh— host benchmark for the converter, with correctness
hashing and ASan/TSan modes.
Known gaps
- The player OSD is themed but still draws its own layout rather than the
shared chrome. gpu-notes.mdpreviously recommended an SDL2/mesa path for GPU YUV
conversion. That does not work: the sysroot ships OSMesa (llvmpipe), a
software rasteriser, with noradeonsi. The document now records the
measurements.
Install
- Jailbreak the console (12.70) and start
ps5-payload-elfldr. - Deploy ps5-payload-websrv.
- Extract the homebrew zip to a USB stick as
/homebrew/EVOPlayer/,
or copy it to/data/homebrew/EVOPlayer/over FTP. - Launch it from
http://<ps5>:8080/index.html.
EVOPlayer-*.elf is the bare payload. Note that sending it with
elfldr alone runs it headless — it needs the homebrew launcher to
get a display plane. See the README.
Requirements
- PS5 on firmware 12.70, jailbroken (re-run after every reboot)
- A USB stick for media
Verification
Built reproducibly in CI from the pinned toolchain (clang 18.1.3,
PS5 Payload SDK v0.42, FFmpeg 7.0.1). CI has no console, so these
binaries are not hardware-tested. Checksums in SHA256SUMS.txt.
Licensed GPL-3.0-or-later. Derived from ProsperoPlayer; see NOTICE.