mirror of
https://github.com/mihawk-99/PS5_RetroArch.git
synced 2026-10-18 23:09:29 -05:00
The fork's pin carries GTA IV 1.00's frame-rate patch (its render thread's frame lock, which RPCS3's database only unlocks for 1.08), savestates that resume a disc game kept in a dev_hdd0 folder and load over one another, and files in /app0 written through the console's FTP server once the title's write budget is spent (the SDK fork's offload streams: GTA IV reinstalled 1414 MiB in 4 minutes with the budget spent, byte for byte). From the baseline state at 300%: 50.4-51.5 fps where the game held itself to 30 (docs/RPCS3_PORT.md, GTA IV; docs/PHASE_LOG.md). The platform probe's "offload" word measures writing through that server from the title. The sampler bounds its frame walk by each thread's stack, which faulted with every core thread sampled, and reports each busy thread, which the most frequent groups hid.
132 lines
7.7 KiB
Markdown
132 lines
7.7 KiB
Markdown
# Active work
|
|
|
|
_Updated: 2026-09-29_
|
|
|
|
## Now: v0.5.0-alpha.5 released, the first on RADV; Dolphin's first start next
|
|
|
|
**Released.** Build `f96bdb0e` (release notes `docs/releases/v0.5.0-alpha.5.md`):
|
|
the title links ../PS5_Vulkan's RADV release archive by default (PS5_Mesa
|
|
`cedb774`, built by ../PS5_Vulkan `5d8f37d`), SDK fork `95c08f2`, LRPS2 `6d14775` with
|
|
its port patch, the same tree as the fork's `main` at `9c2eea4` (6x). `PS5_VULKAN_DRIVER=ps5vk` still builds ps5vk,
|
|
which v0.4.0-alpha.4 (build `870bd1bb`) shipped. On RADV the release battery
|
|
(every core with a game, the menu, Close Content and a reload, Threaded Video on
|
|
half) passed three times as the driver changed, and PPSSPP's ten-minute soak once
|
|
(docs/PHASE_LOG.md, 2026-09-28). PPSSPP's MSAA works, RADV's shader cache is in
|
|
`radv-shader-cache/`, and the title heap has an arena for each thread. The
|
|
console's installed title is still v0.4.0-alpha.4's build.
|
|
|
|
**Dolphin round (after v0.4.0-alpha.4, on ps5vk):** the PS5 defaults are 6x, Async
|
|
(UberShaders), 16x AF and GPU texture decoding (patches/dolphin, e905c4e): RE4,
|
|
Melee, Wind Waker and Mario Kart Wii at 100% after boot. ../PS5_Vulkan R94
|
|
compiles pipelines on six threads at once; R95 writes tiled uploads a run at a
|
|
time. Rogue Leader still dips (attract 71-87%, gameplay 93-96%): Dolphin's MMU
|
|
emulation and its threads waiting on each other, not the driver.
|
|
|
|
**Seven more systems (2026-09-28, docs/PHASE_LOG.md):** Beetle PSX HW (16x),
|
|
Mupen64Plus-Next (ParaLLEl-RDP 8x), Beetle Saturn (needs a BIOS), VICE x64sc,
|
|
MAME 0.289 (vector screens at 4K, raster native), DeSmuME (5x) and Azahar (18x),
|
|
each from my fork at a pinned revision. They all pass the battery, and every
|
|
tested game runs at full speed. Load Content lists INTERNAL and EXTERNAL
|
|
(patch 0097). The installed title is build `4be9e814`.
|
|
|
|
Still open for them: EXTERNAL (`/mnt`) is empty inside the title's sandbox
|
|
(USB and extended storage need the title jailbroken; etaHEN's jailbreak call is
|
|
one way), Saturn gameplay with a BIOS and a vector game at 4K in MAME. The
|
|
forks are published on github.com/mihawk-99 at the pinned revisions, so a
|
|
checkout without the sibling forks builds from there.
|
|
|
|
**Now: RPCS3 as a libretro core** (docs/RPCS3_PORT.md). The game under test
|
|
is GTA IV (BLES00229 1.00, kept as `dev_hdd0/game/GTA4`) since 2026-09-29, and
|
|
the goal is 4K at a stable, stutter-free 60 fps, measured from a save state in
|
|
its first playable scene. It boots (a FIFO in local memory, the ZCULL late
|
|
fault, its folder's name), installs 3.3 GB to `dev_hdd0` on its first start,
|
|
saves and loads states, and with the fork's frame-rate patch for 1.00 runs at
|
|
50-51 fps at 300% (54 at 100%) where it was held to 30; the guest RSX is 98%
|
|
busy and the SPU threads meet on `vm::writer_lock`, which is next. Every game
|
|
in RPCS3's patch database now starts with its frame-rate patch ("Frame-rate
|
|
patches", on by default), and RPCS3's settings are core options by section. A
|
|
title's writes are held to about 2 MiB/s once a 1.3 GiB burst is spent; RPCS3's
|
|
files in `/app0` then go through the console's FTP server, another process
|
|
(about 6 MiB/s for GTA IV's install, 8x faster, byte for byte the same). Earlier
|
|
(2026-09-28): God of War HD (NPUA80490) reached gameplay at 100% and 300% and
|
|
passed the ten-minute run and the Close Content + reload battery; my acceptance
|
|
of its 300% screenshot is still open.
|
|
|
|
**Dolphin transitions (paused 2026-09-28 for RPCS3):** Rogue Leader's dips are
|
|
not shader compiles. The emulation thread spins in `sched_yield` inside a
|
|
libkernel lock for about half its slow time, and runs the MMU slow path for
|
|
the rest (docs/PHASE_LOG.md). Next: name that lock with the sampler's stack
|
|
scan, then compile-thread priority, the boot INI save, the GPU-thread cost and
|
|
the MMU fast path.
|
|
|
|
**Open:**
|
|
|
|
1. Dolphin's first start of a game on RADV, from an empty shader cache: Wind
|
|
Waker's first two 10 s windows at 83% and 92%, where ps5vk had 86% and 99%.
|
|
The time is Mesa's NIR optimisation of Dolphin's ubershaders
|
|
(../PS5_Vulkan/docs/RADV_PHASE.md).
|
|
2. Rogue Leader in Dolphin (measured on ps5vk; not yet on RADV): I chose to make Dolphin itself faster on the PS5 --
|
|
its MMU slow path, where 16 KiB host pages limit page-table fastmem, and its
|
|
GPU-thread cost -- rather than underclock the emulated CPU (75% reached
|
|
83-100% but changes the game's timing). Queued while the driver's Vulkan 1.4
|
|
plan is decided (../PS5_Vulkan/docs/VULKAN_1_4_PLAN.md).
|
|
3. The CPU's transfers on the GPU (CP DMA for linear copies, vk_meta for tiled
|
|
ones), with the golden comparisons updated for the new submission shapes.
|
|
4. The 60 Hz fallback on a display that stays at 60 Hz (the tester's trace).
|
|
5. LRPS2: the upstream PCSX2 port in ../PS5_LRPS2's working tree, 8x as the PS5
|
|
default, the lighting compared with the native picture.
|
|
|
|
**Test runs and core options.** RetroArch here uses per-core options
|
|
(`global_core_options = false` in my config), so a run's `core_options_path`
|
|
is ignored and each core reads `config/<core>/<core>.opt`. A test that needs
|
|
its own options sets `global_core_options = "true"` with its own path; my
|
|
per-core files are never edited.
|
|
|
|
## Accepted baselines
|
|
|
|
- Native byte order on driver `8b311e3`: I accepted the colours with the red/blue
|
|
compensation gone (`evidence/driver-1.0-native-byte-order/`).
|
|
- XMB: large-list allocation failures fixed (`601e575`), crash-free navigation
|
|
(`docs/XMB_LIST_SAFETY.md`, `evidence/xmb-safe-list-run/`).
|
|
- Gameplay: Genesis Plus GX colours, sound, controls and transitions accepted;
|
|
FCEUmm, mGBA, Snes9x and FBNeo evidence in `native-core-loading/`, `mgba-native/`,
|
|
`snes9x-native/`, `fbneo-native/`.
|
|
- Thumbnail and configuration-reset fixes (patches 0081/0082).
|
|
- PPSSPP (God of War: Ghost of Sparta, Yu-Gi-Oh! GX Tag Force at 10x): picture,
|
|
full speed at 120 Hz, save states, fast-forward, close and reopen.
|
|
|
|
## Named errors and remaining limits
|
|
|
|
- First frontend snapshot has five intentional missing-core recovery errors and two
|
|
archive-extraction failures; I identified the content as Sega System 16 & 32,
|
|
which belongs to FBNeo. No general archive fix is inferred.
|
|
- Console verification does not cover every supported system, BIOS/disc/CHD, NTSC and
|
|
interlace options, SRAM/state round trips, long-run A/V or performance. Zero backend
|
|
errors is not proof of uninterrupted audio across all workloads.
|
|
- Upstream compiler warnings (old zlib prototypes, Tremor's long-to-int abs conversion,
|
|
an unused blip helper's missing return) are neither suppressed nor treated as
|
|
acceptance.
|
|
- The loader still rejects TLS, legacy init/fini, nonempty preinit and unsupported
|
|
relocations/dependencies; cores share the frontend process, so a rejected load is safe
|
|
but an arbitrary core fault is not isolated.
|
|
- The withdrawn path has the console history; the native byte order does not yet. A
|
|
colour regression would show as red and blue exchanged in the menu, in core frames or
|
|
in thumbnails, and is the first thing to check on the next run.
|
|
|
|
## Preserved platform and file locations
|
|
|
|
XMB stays default and RGUI selectable. Vulkan remains the presentation route; video_ps5
|
|
stays selectable as CPU fallback. Native audio/input/binding, config saving, FTP
|
|
permissions and directory browsing remain. Deployments preserve live settings/games.
|
|
|
|
FTP base `/data/homebrew/PPSA99169/` corresponds to in-title `/app0`. Use content/,
|
|
system/, cores/, config/retroarch.cfg, savefiles/, savestates/. Genesis Plus GX Sega CD
|
|
BIOS files use system/ root; FBNeo uses system/fbneo/. See `docs/DEPLOYMENT.md`.
|
|
|
|
## Operating notes
|
|
|
|
Uploads are authorized; check console idle before deployment. A launch without args.txt needs my
|
|
intervention. Start klog first, preserve old logs, and capture allocation, frontend and
|
|
trace logs. Never interrupt another title. No new core or unrelated driver work is
|
|
assigned by this file.
|