Repository navigation
God of War Ragnarök (PPSA08329) #12128
Replies: 10 comments
Update: boots, presents frames, then stops on a compute shaderContent version: 06.006.000 (PPSA08329) AnyPS5 commit: System: Windows 11 Pro 26300, Ryzen 7 7800X3D, 64 GB, NVIDIA RTX 4080 SUPER (driver 617.42), WinLibs GCC 15.2.0, Release. Furthest point: in-game rendering starts. With a warm shader cache it presents 16 frames in the first 150 s, at about 10 s per frame (p50 9.4–9.9 s). The trace summary puts the time in How it was run:
Blockers found in order:
Open pull requests needed: #11617, #10304, plus new work for blocker 4. Not tested: Linux, AMD or Intel GPUs, the EU copy, any controller input or gameplay, and audio beyond the device opening. I didn't check what the first frames show beyond the dump's size. Speed was not compared with AI-assisted (Claude Code). |
Follow-up: what the
|
Progress: past
|
The
|
|
Correction, October 28: The causal/exclusion statements in this earlier report were too strong. Those captures did not establish exact backing/draw/presented-frame correspondence or prove that the final pass wrote black; sampled bytes also do not prove full-surface draw coverage. A later instrumented paired readback found nonzero RGB throughout the selected target backing after the identified draw/pass boundary. The capture closes the pass to insert a copy, so it does not prove identical uninstrumented scheduling or correct scene content. The observations below are historical, run-specific evidence; cache, synchronization and fade hypotheses are not globally ruled out by these checks. See the qualified paired-capture follow-up. The "Ruled out" list and deductions that sampled buffers prove per-frame writes, correct FP16 export, or zero color at that export are withdrawn. The original text below is retained only as historical context. Correction by Codex; the original Claude Code attribution is retained. Historical report; the deductions identified above are withdrawnWhy GWR's frame dumps are black: the game writes black, and the dumps report it correctlySetup: The dumps are not an artifact:
What writes it. Per frame, queue 0 ends with two fullscreen triangles (
The UI draws (vertex Not settled yet: a real black screen, or a wrong input to that final pass. At about 10 s per frame, the longest run produced 43 frames. If the title advances by a capped time step per frame, that is only around 1.5 s of game time, so a fade or loading screen is still possible. The next step is to resolve the T#s and constants of AI-assisted (Claude Code). |
|
Correction, October 28: The causal/exclusion statements in this earlier report were too strong. Those captures did not establish exact backing/draw/presented-frame correspondence or prove that the final pass wrote black; sampled bytes also do not prove full-surface draw coverage. A later instrumented paired readback found nonzero RGB throughout the selected target backing after the identified draw/pass boundary. The capture closes the pass to insert a copy, so it does not prove identical uninstrumented scheduling or correct scene content. The observations below are historical, run-specific evidence; cache, synchronization and fade hypotheses are not globally ruled out by these checks. See the qualified paired-capture follow-up. The "Ruled out" list and deductions that sampled buffers prove per-frame writes, correct FP16 export, or zero color at that export are withdrawn. The original text below is retained only as historical context. Correction by Codex; the original Claude Code attribution is retained. Historical report; the deductions identified above are withdrawnBlack frames, round 2: the final pass reads a non-black image and still writes black. Root cause not found yetSame setup as before ( The last pass of each frame. Vertex
The input to that pass is not black:
The display format and export are behaving as designed:
Ruled out:
Next: run fragment shader AI-assisted (Claude Code). |
Live-stage capture and confined replay updateI followed the existing Windows integration with a bounded, no-input background capture. The owned process was intentionally stopped after collection (exit 126 after 40.9 s); this is not a gameplay or performance result.
The important limitation is attribution: these are CPU snapshots observed after a presentation event, not exact-frame GPU-resident input captures. A stable SRT does not freeze texture contents. Initial and later SRTs are stored separately. The controlled fixture is not a faithful replay of the complete draw state, and neither it nor this short capture establishes the failure cause or a fix. The earlier final-pass diagnosis remains a hypothesis. Next is comparing the actual resident input and complete color-attachment/draw state. No production workaround was added, and proprietary shader/input bytes remain private. AI-assisted: Codex. Additional controlled replay: overlaying the captured 64 KiB HDR/dither prefixes and using the later captured SRT also produces nonblack output: float RGB approximately (0.975586, 0.981445, 0.986816), and A2R10G10B10 output 0xfe6fb3f2 (998, 1004, 1010, alpha 3). All four synthetic/captured-prefix and float/packed cases pass with zero VUIDs. This uses a 32x8 target and only prefix-overlaid textures; uncaptured contents and remaining graphics state are still synthetic, so it is not a complete frame replay. The existing storage-dump selector emitted no files in a follow-up run; no GPU-resident input-content claim is made. |
|
Further diagnostic evidence: the final fragment's input has now been read back from its actual GPU storage image, rather than inferred from guest-memory bytes. The capture binds fragment entry This rules out an all-zero source image for that captured draw. It does not show that the source is correct scene content, establish post-sampler colors, or identify the black-output cause. The separately collected first presented frame is black; it is not asserted to be the same frame as this input readback. The next boundary is the draw's output before presentation. The readback mechanism and exact-selector controls were first exercised on synthetic data with validation. Initial correlated-readback attempts yielded no capture because I omitted the second flag required by driver correlation ( AI-assisted: Codex. |
|
Paired input/output capture follow-up for PPSA08329: the instrumented run now has completed readbacks for the same selected draw (token26, submission101, queue0, offset826, batch197), fragment
This describes backing contents in an instrumented run: the capture closes the render pass to insert its copy, so identical scheduling in an uninstrumented run is unproven. There is no pre-draw sentinel/coverage proof that the selected draw wrote every texel. Correct scene content and correspondence to the separately captured black first-presented frame remain unverified. This does not establish a VideoOut cause, rendering fix or performance result. Independent review checked payload hashes, matching draw identities, completion receipts, synthetic float/packed controls and source/deployment hashes. The original runtime driver is restored. The next diagnostic step is to follow the backing/frame identity through transfer and presentation. No rendering workaround has been pushed. AI-assisted: yes (Codex). |
Linux/RADV report: in game, the opening sled ride renders, about 2 fps thereContent version: 06.006.000 (PPSA08329) AnyPS5 commit:
System: Ubuntu 26.04.1 (Linux 7.0.0-38), Ryzen 5 9600X, 30 GB, AMD Radeon RX 9060 XT (RADV GFX1200, Mesa 26.0.8-1ubuntu0.3), GCC 15.2.0, Release. Furthest point: In game. What is shown:
Frame rate:
Two things that may help others here
Current state and blockers:
How it was run:
AI-assisted (Claude Code). |
Uh oh!
There was an error while loading. Please reload this page.
Existing thread
Title
God of War Ragnarök (PPSA08329)
Content version tested
06.006.000
AnyPS5 commit
mainf759e16, with no pull requests merged on top.System tested
Relinker-only Release build on Ubuntu 22.04 (WSL2), GCC 11.4. The title doesn't convert, so no GPU or runtime was involved.
Furthest point
Does not convert
What is shown
Nothing. The relinker exits with code 2 before writing any output.
Current blocker
#12123. The title's bundled
sce_module/libc.prxhas one rawsyscallat0x116c84. It's an inline_umtx_opwait (syscall 454, op 2) with an argument layout that doesn't match FreeBSD: the address has bit 63 set and the timeout is passed inuaddr1. A PS5 measurement of that call is needed before it can be handled.--trap-sdk-syscall-stubsdoesn't recognise it, and trapping it wouldn't help, because the game probably reaches this wait.Open pull requests needed: none known yet.
How it was run
Only the executables were extracted from the package:
eboot.bin,sce_module/libc.prxandsce_module/libSceJobManager.prx. All three were converted with each of these:All three stop on the same line. An earlier Windows build at
main9b197b6 refused at the same offset.AI-assisted (Claude Code).
All reactions