Repository navigation
Recommended settings for Persona 3 Reload - #568
Merged
Merged
Conversation
Persona 3 Reload (Steam 2161700) flashed through its logos and movies: most frames showed a flat colour or diagonal streaks instead of the picture. The video decoded correctly. The quad that shows it reads its UVs from a typed view in an UPLOAD ring, and the converted shaders ignore a typed view's element offset, so a view off a 64-byte boundary read the bytes before it. Frame captures matched this: where those bytes were index data every vertex got UV (0,0), giving one flat texel, and where they happened to be the previous quad's UVs the frame looked right. typed-view-align = 16 and typed-view-shadow = 1, the fix Horizon Zero Dawn and Ghost of Tsushima already use, stop it. On an iPhone 17 Pro Max (iOS 27.0.1) the videos now play correctly on v0.2.0, with no GPU errors over about 5 minutes. Some frame stutters remain in the game. The list is the working one as it ran, without env.FEX_TSOENABLED = 1, which is already FEX's default, so it has no block of tested defaults. check-game-recommendations.py covers the new list and how it is recognised. Its Swift fixture already stops at the Garry's Mod hl2.exe check on main; with that condition removed, everything passes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Henry Morin <henry@hmorin.com>
125hz
pushed a commit
that referenced
this pull request
Nov 5, 2026
Persona 3 Reload (Steam 2161700) gets a recommended list that stops its logos and movies flashing. Most frames showed a flat colour or diagonal streaks instead of the picture. The fix is two existing switches, with no runtime change.
125hz
added a commit
that referenced
this pull request
Nov 5, 2026
…568 follow-up) The new list set env.MADEIRA_FEX_AVX = 1 beside avx: false, so AVX was on while the toggle showed Off. The toggle carries it now; the behaviour is the same. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Persona 3 Reload (Steam 2161700) gets a recommended list that stops its logos and movies flashing. Most frames showed a flat colour or diagonal streaks instead of the picture. The fix is two existing switches, with no runtime change.
Cause
The video decodes correctly:
PixelShader_YUV_to_RGBwrites the right frame every time. The fault is in the opaque quad that then shows it. That quad reads its UVs through a typed view (R16G16_FLOAT) in an UPLOAD ring, so the view lands at a different address each frame. A view is made from a 64-byte boundary, with an element offset to its first element, and the converted shaders ignore that offset. So when the view is off a 64-byte boundary, the shader reads the bytes before it.Frame captures on one run:
0,1,2,2,1,3), about 0 as half-floatsupload-guard = 2andfence-strict = 2found no hazard and did not change the flashing, which fits: the data is intact, just read from the wrong place.What changed
persona-3-reloadlist, recognised by App ID, theP3Rfolder orP3R.exe.typed-view-align = 16andtyped-view-shadow = 1are the fix, the same pair Horizon Zero Dawn, Ghost of Tsushima and Horizon Forbidden West use.pool-split,real-suspend,MADEIRA_X64_IMAGE_NOCOPY,MADEIRA_FEX_AVXandMADEIRA_EC_HOOK_TRACE = 0come from the working list as it ran.MADEIRA_X64_IMAGE_NOCOPYis what got past c0000017 whenP3R.exeloaded.env.FEX_TSOENABLED = 1was in the working config and is left out, as it is already FEX's default.Tests
check-game-recommendations.pycovers the new list and how it is recognised.hl2.execheck, before reaching the new P3R check. With that condition temporarily removed, everything passes. That failure is not fixed here.Device testing
iPhone 17 Pro Max, iOS 27.0.1, v0.2.0, with these settings entered by hand: logos and movies play correctly, about 27 fps over two runs of about 4-5 minutes, 0 command buffers in error, and 0 typed views relying on an element offset.
Not tested: this list applied through a fresh install, or an app built from this branch.
Known issue
Some frame stutters remain in the game. A warm shader cache cut pipeline build time and the longest stall, but windows under 15 fps barely moved (6.3% to 5.2%, with
metalfx-upscaleon only in the first run). The rest look CPU-bound, and I have not found the cause, so this is left for separate work.🤖 Generated with Claude Code