You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Resident Evil 4 (PPSA07411): start-up needs a library named Party.prx; with the missing exports added it stops at sce::Json::InitParameter2::setSpecialFloatFormatType #2776
Resident Evil 4 (PPSA07411 v01.000.000): start-up needs a library named Party.prx that does not exist here; with the missing exports added it stops at sce::Json::InitParameter2::setSpecialFloatFormatType
1. Party.prx
The first start fails before the title runs:
-> FAILED
Failed to load module: ...\libs\Party.prx
GetLastError: 126
The executable's list of needed libraries contains Party.prx (module name Party), next to libSceUserService.prx. There is no library of that name in core/libs/prx, and tools/import_audit.py does not report it, because the registry only holds import entries and Party has none. unused-filter=2 (1552 imports filtered to 889) keeps Party.prx in the list. I do not know what, if anything, the title imports from it.
2. 36 missing exports (import audit across the executable and its module, libraries built from main at about b5f5362d plus some unrelated stub exports): 937 unique imports, 676 implemented, 51 stubs, 36 absent:
library
absent
libSceHmd2
11
libScePad (VR controller, one without a name: n3kSX62fgNo)
6
libSceSsl
6
libSceJson2 (sce::Json::Value and InitParameter2 members)
3. What the title does next. To test the exports I put an unrelated small library next to the others as libs\Party.prx (only so the loader passes; this is a measuring aid and not a proposal). Then everything loads, the title opens /app0/natives/PS5/runtime.args, starts a FileReader thread and calls one of the new exports:
what(): _ZN3sce4Json14InitParameter225setSpecialFloatFormatTypeENS0_22SpecialFloatFormatTypeE not implemented
So the title reaches its own code, and its first real stop is setSpecialFloatFormatType. I have no verified signature or layout for it (InitParameter2's layout is unknown, see TechnicalDebt), so I am not proposing code for it.
Windows 10 (19045), MinGW-w64 GCC 15.2.0 (WinLibs r7), Release. The executable and module were relinked from the ELF copies of the dump. Dump from my own digital copy; no game files shared. AI-assisted.
On the Party.prx part: since nothing is imported from it, I have a branch that lets the Windows start-up skip a missing library like that instead of stopping with error 126. It's Silverash-i8/AnyPS5-fork:fix/windows-skip-missing-unused-library (ce0b99ac on main57f96fd2); details are on #2591, which is the same problem with libSceXml.prx. With it you shouldn't need the stand-in library any more. The stub prints ...\Party.prx -> not found; nothing is imported from it, continuing without it and carries on. A missing library that the title does import from still stops as before.
I can't run RE4 here, so I haven't checked it gets you to the same setSpecialFloatFormatType stop. I'd be glad to hear if it does.
@Silverash-i8 thanks. I ran RE4 with your branch (see #2591): it starts past Party.prx.
Update on what stopped RE4 after that, each with a branch and test on current main (verified by running; none of these alone is shown to make the title playable):
The remaining stop I can see is the AGC state check at register 0x292 (see PR #419). I have not established what that register means, so I'm not proposing a change there.
The Party.prx start-up part of this is on main now: #3129 (carried by CnRJay, merged 2026-10-11) skips a needed library nothing imports from, the same change you tested in #2591. The other RE4 stops listed here are unaffected.
Refreshed the RE4 export branch on current main (1be0a7c) so it can be carried without rework: https://github.com/xXPBSXx/AnyPS5/tree/fix/export-ppsa07411-imports-v2 (two commits: the IPv6 link-local all-nodes address and the declared-only imports; guest_ppsa07411_exports and the conventions check pass). It no longer contains sceSharePlayGetCurrentConnectionInfoA: RE4 imports it, but it should come from the implementation with the layout in #3210, so the import audit for RE4 shows that one as absent until #3210 is merged. Nothing else changed in content. The old branch stays as it is.
Windows check of fix/export-ppsa07411-imports-v2 (head 640172b1) together with #3341 (the SharePlay carry), both merged onto main5c34f9e without conflicts: Windows 11, WinLibs GCC 15.2.0 r7, Release. guest_ppsa07411_exports, guest_share_play and patched_libraries all pass, so the two can be carried in either order.
AI-assisted (Claude Code); I ran this on my machine.
Also refreshed on current main: the InitParameter2::setSpecialFloatFormatType change that RE4 needed (it stores the value instead of throwing): https://github.com/xXPBSXx/AnyPS5/tree/fix/json2-special-float-format-v2. It is stacked on fix/export-ppsa07411-imports-v2 (the function is one of that branch's declared-only imports, and this commit replaces its stub with the implementation), so it needs that branch first. guest_json, guest_ppsa07411_exports and the conventions check pass.
Branches refreshed on current main (a11c8f7), each built and tested (the matching ctest targets and tools/check_conventions.py pass). The earlier -v2 branches conflicted with main after the carried #3177 commits (duplicate setNullAccessCallBack, scePadUnknown_n3kSX62fgNo, SharePlay), so these are rebuilt from the list of functions that main still lacks:
Analysis of the RE4 stop scan conversion mode is unsupported (register 0x292 = 0x00000003):
Register:0x292 in the context bank is PA_SC_MODE_CNTL_0 (Linux gc_10_1_0_offset.h: mmPA_SC_MODE_CNTL_0 0x0292). Source is Linux amdgpu GFX10 headers, not PS5 documentation.
Value 3: bit 0 MSAA_ENABLE, bit 1 VPORT_SCISSOR_ENABLE (gc_10_1_0_sh_mask.h, PA_SC_MODE_CNTL_0__*_MASK). Bit 1 is already handled (State.cpp applies the viewport scissor when (read(cx, 0x292) & 2u) != 0).
Where we throw:core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp on current main: ScanModeMask = ~0x22u (line 110, so bits 1 and 5 are allowed), the check at line 651 (zero(cx, 0x292, result.samples > 1 ? ScanModeMask & ~1u : ScanModeMask, ...)) and the draw precheck at line 1103. So with feat(agc): multisampled color and depth targets with CB resolves #419 on main, bit 0 passes only when the draw's targets have more than one sample; RE4 ends here, so its draw has MSAA_ENABLE set and single-sample targets (or at least result.samples == 1; I have not looked at its targets).
Is a narrow allowance supported by a source? Only partly. Mesa treats MSAA_ENABLE as an API-level rasterizer flag independent of the target's sample count: radeonsi sets it as multisample || poly_smooth || line_smooth (si_state.c, around line 968), and radv derives it from the rasterization sample count and line mode (radv_cmd_buffer.c, S_028A48_MSAA_ENABLE(msaa_enable)). So MSAA_ENABLE=1 with a 1-sample target is a legitimate state, for example with smooth lines. What that changes for a 1-sample target depends on the primitive type (polygon/line smoothing), and I found no source for the console's behavior or for shadPS4/KytyPS5 handling of this bit. Without knowing the title's primitives I do not propose letting it through; a draw of plain triangles would be the case a later change could relax, with a test.
Still open, status on mainf990506 (Windows import audit of the relinked RE4 executable, 937 unique imports): 8 imports are still absent: sce::Json::InitParameter2::setSpecialFloatFormatType, sceHmd2GetDeviceInformationByHandle, sceHmd2GetFieldOfView, sceHmd2Terminate, scePadVrControllerSetVibration, scePadVrControllerReadCombinedState, scePadVrControllerSetVibrationMode, sceVrTracker2ResetLocalCoordinate. The load therefore still fails with unresolved ELF import WVZBP4IyM+E on a Windows run. #3773 (merged) covered the rest of the list; the remaining eight are in my branches fix/export-ppsa07411-imports-v3/fix/json2-special-float-format-v3 and in open PR #4044 (PS VR2 calls).
@xXPBSXx#4309 is on main now, with #3737 and #4044. Could you run PPSA07411 on current main and say whether it gets past scan conversion mode is unsupported (register 0x292 = 0x00000003)? If it stops on a new message from that check (it names the register: a sample 0 off the pixel center, a missing 0x2fe, or a primitive other than triangles), please post it here.
Run of PPSA07411 (RE4) on current mainc36fd0a0e (contains #4309, #4044 and #3737; no other open PR), Windows 10, MinGW GCC, RTX 4080 SUPER, freshly relinked, 0 absent imports, 150 s limit, one run.
It no longer stops at scan conversion mode is unsupported (register 0x292 = 3). The new stop, about the first presentation (the run aborts at about 100 lines of log):
[videoout] presentation failed: AGC graphics: missing register in context bank at DWORD 0x2fe (766)
what(): AGC graphics: missing register in context bank at DWORD 0x2fe (766)
FATAL: abort() (SIGABRT)
That is the generic missing register in <bank> bank message from State.cpp, not one of the new messages of the check you mention (sample 0 off pixel center, primitive other than triangle); the register that is absent from the bank is context register 0x2fe. Before it the log has two lines of the form Shader 0x7ff709efa500 could not be prepared at registration (its s_swappc_b64 at program counter 0x74 calls a computed target); preparing it when it is used. I did not look into which draw state lacks 0x2fe, or where the title writes it.
@oneandonlydean you asked about 0x2fe; here are the numbers. RE4 (PPSA07411) on main9aa5fd2 (with #4309), relinked, 0 absent imports, 150 s, with a temporary local print at the failing check (not committed).
Where it throws.DecodeState in State.cpp, in the result.samples == 1 && (read(cx, 0x292) & 1u) != 0 branch: for (pixel = 0..3) static_cast<void>(read(cx, 0x2fe + pixel * 4u)); (read throws missing register in context bank at DWORD 0x2fe when the register was never written). The function right after it, singleSampleMsaaRejection, reads the same registers through find and already treats an absent register as no objection, and Graphics.cpp pins the strict behavior (queue.context.erase(0x306); expectFailure(..., "missing register") in MsaaEnableSingleSampleTests), so it looks deliberate.
What the title has in that bank when the draw is decoded (context registers 0x2f5..0x30f; - = never written):
0x292 = 0x00000003 (MSAA_ENABLE | VPORT_SCISSOR_ENABLE) 0x2f8 = 0x00000000 (1 sample)
2f5:- 2f6:- 2f7:- 2f8:00000000 2f9:0000002d 2fa:41eaaaab 2fb:3f800000 2fc:41808887 2fd:3f800000
2fe..30d: all 16 sample-location registers absent
30e:ffffffff 30f:ffffffff (the PA_SC_AA_MASK words are written)
So RE4 sets MSAA_ENABLE with one sample and the AA mask but never writes the sample locations (nor PA_SC_CENTROID_PRIORITY_0/1 at 0x2f5/0x2f6).
Reset value. Linux gc_10_1_0_default.h (amdgpu, not PS5) lists mmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0 .. X1Y1_3_DEFAULT = 0x00000000 and mmPA_SC_AA_CONFIG_DEFAULT = 0; all-zero locations are the pixel center, the case the check accepts. Mesa always programs these registers explicitly, so it says nothing about a title that does not. What the console's default hardware-state packets leave there is not known to me (our libSceAgc writes none of them), so I would not treat a missing register as 0 on my own authority.
Question for you, since you own this check: would you accept "register never written = pixel center" for the single-sample case (dropping the read loop and the test line, keeping everything singleSampleMsaaRejection does), with a TechnicalDebt line that this rests on the amdgpu reset value? If yes I can prepare it with the test changed accordingly; if you prefer the strict behavior, RE4 stays stopped here.
Yes, go ahead. With one sample an unwritten location register reads as the pixel center, which is the case the check accepts. Drop the read loop in that branch, keep singleSampleMsaaRejection as it is, and change the MsaaEnableSingleSampleTests line to expect the draw to pass. The TechnicalDebt line should say it rests on the amdgpu reset value, not on a console measurement.
Resident Evil Village (PPSA01556, v1.210) stops on the same line, also at its first presented frame, about 20 s in. Setup: Windows 11, MinGW-w64 GCC 15.2.0 (WinLibs r7), Release, RTX 3070 Laptop, maine51428b, freshly relinked, no missing imports:
[videoout] presentation failed: AGC graphics: missing register in context bank at DWORD 0x2fe (766)
It throws in the same place as RE4: the read loop in the single-sample MSAA_ENABLE branch of DecodeState. I checked with a temporary print at the check (not committed), on main7e181fc plus #4693 and #4876, which don't touch the AGC state. The context bank holds the same values as the RE4 dump above, guard band included:
decodeSampleLocations is never reached with more than one sample. With the change agreed above (the loop dropped, singleSampleMsaaRejection unchanged), Village gets past this frame and keeps presenting, so the fix would unblock PPSA01556 as well as PPSA07411.
Closing: the last stop here, missing register in context bank at DWORD 0x2fe, is handled on main since #4949, and the missing exports are in. If PPSA07411 stops somewhere else on current main, reopen or open a new issue with the log line.
Activity
Silverash-i8 commentedon Oct 10, 2026
On the
Party.prxpart: since nothing is imported from it, I have a branch that lets the Windows start-up skip a missing library like that instead of stopping with error 126. It'sSilverash-i8/AnyPS5-fork:fix/windows-skip-missing-unused-library(ce0b99aconmain57f96fd2); details are on #2591, which is the same problem withlibSceXml.prx. With it you shouldn't need the stand-in library any more. The stub prints...\Party.prx -> not found; nothing is imported from it, continuing without itand carries on. A missing library that the title does import from still stops as before.I can't run RE4 here, so I haven't checked it gets you to the same
setSpecialFloatFormatTypestop. I'd be glad to hear if it does.AI-assisted (Claude Code).
xXPBSXx commentedon Oct 10, 2026
@Silverash-i8 thanks. I ran RE4 with your branch (see #2591): it starts past
Party.prx.Update on what stopped RE4 after that, each with a branch and test on current
main(verified by running; none of these alone is shown to make the title playable):sceKernelAvailableDirectMemorySizereturned the first free gap,sceKernelMprotectrejected a thread stack: libkernel: AvailableDirectMemorySize reports first gap, Mprotect rejects host stack memory #3143libSceSystemGesturetouch calls andsceSharePlayGetCurrentConnectionInfoAstopped on stubs: libSceSystemGesture and libSceSharePlay exports that stop RE4 #3144The remaining stop I can see is the AGC state check at
register 0x292(see PR #419). I have not established what that register means, so I'm not proposing a change there.AI-assisted (Claude Code).
Silverash-i8 commentedon Oct 11, 2026
The
Party.prxstart-up part of this is onmainnow: #3129 (carried by CnRJay, merged 2026-10-11) skips a needed library nothing imports from, the same change you tested in #2591. The other RE4 stops listed here are unaffected.AI-assisted (Claude Code).
xXPBSXx commentedon Oct 11, 2026
Refreshed the RE4 export branch on current
main(1be0a7c) so it can be carried without rework: https://github.com/xXPBSXx/AnyPS5/tree/fix/export-ppsa07411-imports-v2 (two commits: the IPv6 link-local all-nodes address and the declared-only imports;guest_ppsa07411_exportsand the conventions check pass). It no longer containssceSharePlayGetCurrentConnectionInfoA: RE4 imports it, but it should come from the implementation with the layout in #3210, so the import audit for RE4 shows that one as absent until #3210 is merged. Nothing else changed in content. The old branch stays as it is.AI-assisted (Claude Code).
Silverash-i8 commentedon Oct 11, 2026
Windows check of
fix/export-ppsa07411-imports-v2(head640172b1) together with #3341 (the SharePlay carry), both merged ontomain5c34f9e without conflicts: Windows 11, WinLibs GCC 15.2.0 r7, Release.guest_ppsa07411_exports,guest_share_playandpatched_librariesall pass, so the two can be carried in either order.AI-assisted (Claude Code); I ran this on my machine.
xXPBSXx commentedon Oct 11, 2026
Also refreshed on current
main: theInitParameter2::setSpecialFloatFormatTypechange that RE4 needed (it stores the value instead of throwing): https://github.com/xXPBSXx/AnyPS5/tree/fix/json2-special-float-format-v2. It is stacked onfix/export-ppsa07411-imports-v2(the function is one of that branch's declared-only imports, and this commit replaces its stub with the implementation), so it needs that branch first.guest_json,guest_ppsa07411_exportsand the conventions check pass.AI-assisted (Claude Code).
xXPBSXx commentedon Oct 11, 2026
Branches refreshed on current
main(a11c8f7), each built and tested (the matchingctesttargets andtools/check_conventions.pypass). The earlier-v2branches conflicted withmainafter the carried #3177 commits (duplicatesetNullAccessCallBack,scePadUnknown_n3kSX62fgNo, SharePlay), so these are rebuilt from the list of functions thatmainstill lacks:-v2)InitParameter2::setSpecialFloatFormatType(stacked on the RE4 branch): https://github.com/xXPBSXx/AnyPS5/tree/fix/json2-special-float-format-v3sceNpEntitlementAccessGetGameTrialsFlagandsceVideoOutDeleteOutputModeEventare onmainnow): https://github.com/xXPBSXx/AnyPS5/tree/fix/export-ppsa02530-imports-v3 (replaces-v2)sceAgcDcbSetWorkloadsActive/Completeas NOP packets (Tomba! 2 stops there): https://github.com/xXPBSXx/AnyPS5/tree/fix/agc-workload-nop-packetskqueue/kevent(Cloudberry Kingdom): https://github.com/xXPBSXx/AnyPS5/tree/feat/libkernel-kqueue-vnode-v2AI-assisted (Claude Code).
feat(libSceJson2): implement the InitParameter2 constructors and setS…
feat(libSceJson2): implement the InitParameter2 constructors and setS…
xXPBSXx commentedon Oct 11, 2026
Analysis of the RE4 stop
scan conversion mode is unsupported (register 0x292 = 0x00000003):0x292in the context bank isPA_SC_MODE_CNTL_0(Linuxgc_10_1_0_offset.h:mmPA_SC_MODE_CNTL_0 0x0292). Source is Linux amdgpu GFX10 headers, not PS5 documentation.MSAA_ENABLE, bit 1VPORT_SCISSOR_ENABLE(gc_10_1_0_sh_mask.h,PA_SC_MODE_CNTL_0__*_MASK). Bit 1 is already handled (State.cppapplies the viewport scissor when(read(cx, 0x292) & 2u) != 0).core/libs/prx/libSceAgcDriver/Graphics/src/State.cppon currentmain:ScanModeMask = ~0x22u(line 110, so bits 1 and 5 are allowed), the check at line 651 (zero(cx, 0x292, result.samples > 1 ? ScanModeMask & ~1u : ScanModeMask, ...)) and the draw precheck at line 1103. So with feat(agc): multisampled color and depth targets with CB resolves #419 onmain, bit 0 passes only when the draw's targets have more than one sample; RE4 ends here, so its draw hasMSAA_ENABLEset and single-sample targets (or at leastresult.samples == 1; I have not looked at its targets).MSAA_ENABLEas an API-level rasterizer flag independent of the target's sample count: radeonsi sets it asmultisample || poly_smooth || line_smooth(si_state.c, around line 968), and radv derives it from the rasterization sample count and line mode (radv_cmd_buffer.c,S_028A48_MSAA_ENABLE(msaa_enable)). SoMSAA_ENABLE=1with a 1-sample target is a legitimate state, for example with smooth lines. What that changes for a 1-sample target depends on the primitive type (polygon/line smoothing), and I found no source for the console's behavior or for shadPS4/KytyPS5 handling of this bit. Without knowing the title's primitives I do not propose letting it through; a draw of plain triangles would be the case a later change could relax, with a test.No code from me for this one.
AI-assisted (Claude Code).
xXPBSXx commentedon Oct 11, 2026
Still open, status on
mainf990506 (Windows import audit of the relinked RE4 executable, 937 unique imports): 8 imports are still absent:sce::Json::InitParameter2::setSpecialFloatFormatType,sceHmd2GetDeviceInformationByHandle,sceHmd2GetFieldOfView,sceHmd2Terminate,scePadVrControllerSetVibration,scePadVrControllerReadCombinedState,scePadVrControllerSetVibrationMode,sceVrTracker2ResetLocalCoordinate. The load therefore still fails withunresolved ELF import WVZBP4IyM+Eon a Windows run. #3773 (merged) covered the rest of the list; the remaining eight are in my branchesfix/export-ppsa07411-imports-v3/fix/json2-special-float-format-v3and in open PR #4044 (PS VR2 calls).AI-assisted (Claude Code).
oneandonlydean commentedon Oct 12, 2026
@xXPBSXx #4309 is on
mainnow, with #3737 and #4044. Could you run PPSA07411 on currentmainand say whether it gets pastscan conversion mode is unsupported (register 0x292 = 0x00000003)? If it stops on a new message from that check (it names the register: a sample 0 off the pixel center, a missing0x2fe, or a primitive other than triangles), please post it here.xXPBSXx commentedon Oct 12, 2026
Run of PPSA07411 (RE4) on current
mainc36fd0a0e(contains #4309, #4044 and #3737; no other open PR), Windows 10, MinGW GCC, RTX 4080 SUPER, freshly relinked, 0 absent imports, 150 s limit, one run.It no longer stops at
scan conversion mode is unsupported (register 0x292 = 3). The new stop, about the first presentation (the run aborts at about 100 lines of log):That is the generic
missing register in <bank> bankmessage fromState.cpp, not one of the new messages of the check you mention (sample 0 off pixel center, primitive other than triangle); the register that is absent from the bank is context register0x2fe. Before it the log has two lines of the formShader 0x7ff709efa500 could not be prepared at registration (its s_swappc_b64 at program counter 0x74 calls a computed target); preparing it when it is used. I did not look into which draw state lacks0x2fe, or where the title writes it.AI-assisted (Claude Code).
xXPBSXx commentedon Oct 12, 2026
@oneandonlydean you asked about
0x2fe; here are the numbers. RE4 (PPSA07411) onmain9aa5fd2 (with #4309), relinked, 0 absent imports, 150 s, with a temporary local print at the failing check (not committed).Where it throws.
DecodeStateinState.cpp, in theresult.samples == 1 && (read(cx, 0x292) & 1u) != 0branch:for (pixel = 0..3) static_cast<void>(read(cx, 0x2fe + pixel * 4u));(readthrowsmissing register in context bank at DWORD 0x2fewhen the register was never written). The function right after it,singleSampleMsaaRejection, reads the same registers throughfindand already treats an absent register as no objection, andGraphics.cpppins the strict behavior (queue.context.erase(0x306); expectFailure(..., "missing register")inMsaaEnableSingleSampleTests), so it looks deliberate.What the title has in that bank when the draw is decoded (context registers
0x2f5..0x30f;-= never written):So RE4 sets MSAA_ENABLE with one sample and the AA mask but never writes the sample locations (nor
PA_SC_CENTROID_PRIORITY_0/1at0x2f5/0x2f6).Reset value. Linux
gc_10_1_0_default.h(amdgpu, not PS5) listsmmPA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0 .. X1Y1_3_DEFAULT = 0x00000000andmmPA_SC_AA_CONFIG_DEFAULT = 0; all-zero locations are the pixel center, the case the check accepts. Mesa always programs these registers explicitly, so it says nothing about a title that does not. What the console's default hardware-state packets leave there is not known to me (ourlibSceAgcwrites none of them), so I would not treat a missing register as 0 on my own authority.Question for you, since you own this check: would you accept "register never written = pixel center" for the single-sample case (dropping the
readloop and the test line, keeping everythingsingleSampleMsaaRejectiondoes), with a TechnicalDebt line that this rests on the amdgpu reset value? If yes I can prepare it with the test changed accordingly; if you prefer the strict behavior, RE4 stays stopped here.AI-assisted (Claude Code).
oneandonlydean commentedon Oct 12, 2026
Yes, go ahead. With one sample an unwritten location register reads as the pixel center, which is the case the check accepts. Drop the
readloop in that branch, keepsingleSampleMsaaRejectionas it is, and change theMsaaEnableSingleSampleTestsline to expect the draw to pass. The TechnicalDebt line should say it rests on the amdgpu reset value, not on a console measurement.EagleBearerYS commentedon Oct 13, 2026
Resident Evil Village (PPSA01556, v1.210) stops on the same line, also at its first presented frame, about 20 s in. Setup: Windows 11, MinGW-w64 GCC 15.2.0 (WinLibs r7), Release, RTX 3070 Laptop,
maine51428b, freshly relinked, no missing imports:It throws in the same place as RE4: the read loop in the single-sample
MSAA_ENABLEbranch ofDecodeState. I checked with a temporary print at the check (not committed), onmain7e181fc plus #4693 and #4876, which don't touch the AGC state. The context bank holds the same values as the RE4 dump above, guard band included:decodeSampleLocationsis never reached with more than one sample. With the change agreed above (the loop dropped,singleSampleMsaaRejectionunchanged), Village gets past this frame and keeps presenting, so the fix would unblock PPSA01556 as well as PPSA07411.oneandonlydean commentedon Oct 14, 2026
Closing: the last stop here,
missing register in context bank at DWORD 0x2fe, is handled on main since #4949, and the missing exports are in. If PPSA07411 stops somewhere else on current main, reopen or open a new issue with the log line.