Skip to content

Recommended settings for Persona 3 Reload - #568

Merged
125hz merged 1 commit into
willfaust:mainfrom
220111:p3r-recommended-settings
Nov 5, 2026
Merged

125hz merged 1 commit into
willfaust:mainfrom
220111:p3r-recommended-settings

Conversation

@220111

@220111 220111 commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

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_RGB writes 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:

Frame Element offset What the shader reads On screen
1264 0 the real UVs correct
1435 4 the previous quad's identical UVs correct, by luck
1656 4 index data (0,1,2,2,1,3), about 0 as half-floats flat dark, one texel
1512 8 not in the capture flat grey, matching the video's top-left texel

upload-guard = 2 and fence-strict = 2 found no hazard and did not change the flashing, which fits: the data is intact, just read from the wrong place.

What changed

  • A persona-3-reload list, recognised by App ID, the P3R folder or P3R.exe.
  • typed-view-align = 16 and typed-view-shadow = 1 are 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_AVX and MADEIRA_EC_HOOK_TRACE = 0 come from the working list as it ran. MADEIRA_X64_IMAGE_NOCOPY is what got past c0000017 when P3R.exe loaded.
  • The list has no block of tested defaults because it did not run with them. env.FEX_TSOENABLED = 1 was in the working config and is left out, as it is already FEX's default.

Tests

  • check-game-recommendations.py covers the new list and how it is recognised.
  • Its Swift fixture already stops on main, at the Garry's Mod hl2.exe check, 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-upscale on 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

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
125hz merged commit f2fbc1a into willfaust:main Nov 5, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants