Repository navigation
Conversation
c35ef21 to
5e4b06d
Compare
5e4b06d to
3f8bc39
Compare
The flexible memory budget was a fixed 448 MiB. A title can declare its own in param.json (kernel.flexibleMemorySize, in bytes); that value now sets the budget for sceKernelConfiguredFlexibleMemorySize, sceKernelAvailableFlexibleMemorySize and the flexible maps. NHL 27 (PPSA34063) declares 560 MiB and ran out of flexible memory in its menus with 448 MiB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3f8bc39 to
55ee567
Compare
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
|
|
Windows test: head AI-assisted (Claude Code). |
|
Closing as a duplicate of #4508, which was opened earlier and implements the same thing: Your evidence (NHL 27 / PPSA34063 declaring 587202560 and the exhaustion log) is useful there: please add it to #4508 as a comment. Welcome to reopen if #4508 ends up not covering your case. |
What
The flexible memory budget is a fixed 448 MiB. A title can declare its own in
param.json:A commercial title declares 560 MiB. Since the segments of the title's executable count against the budget, it runs out about 20 minutes after its title screen and writes through the null result:
The title does not reach this point on
mainalone (it stops earlier on missing functions, #4544 and others); the lines are fromc6efe068awith those added on my fork (dev-next).parseParamJsonnow readskernel.flexibleMemorySize(a non-negative integer, bytes; anything else throws), andsceKernelConfiguredFlexibleMemorySize,sceKernelAvailableFlexibleMemorySizeand the flexible maps use it. Without the member, or without aparam.json, the budget stays 448 MiB.Not known and recorded in TechnicalDebt: whether the console takes a larger flexible budget out of the direct memory pool, and which values it accepts.
Tested
Windows 11, MinGW-w64 GCC 15.2, AMD RX 6700 XT.
param_json_parserextended: absentkernel, emptykernel, a valid size, and six rejected forms (non-object, negative, fraction, exponent, string, above uint64). It does not build onmain(noflexibleMemorySizefield) and passes with this change.ctest -R "param_json|guest_memory": 4 of 4 pass.python tools/check_conventions.py --base origin/mainpasses.Not tested: Linux, macOS.
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code