Repository navigation
feat(libkernel): read param.sfo when param.json is absent - #5993
Conversation
|
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.
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
dd7d0d7 to
c8d40fc
Compare
|
Rebased onto I checked the overlap the bot lists. I fetched each listed pull request and, for every file it shares with this one, merged its change with The bot lists 61 pull requests, with 88 shared files between them. This pull request adds a conflict in two:
The other 59 merge the same with and without this pull request. AI-assisted: yes (Claude Code). I ran these checks myself on Windows 11. 🤖 Generated with Claude Code |
c8d40fc to
91117ec
Compare
|
Rebased onto AI-assisted: yes (Claude Code). 🤖 Generated with Claude Code |
jotitadev
left a comment
There was a problem hiding this comment.
Linux run (Ubuntu 26.04, Intel i7-8700, GCC 15.2, full build, non-GPU tests), head 91117ec4d merged onto main 44df21632.
- Builds;
param_sfo_parser,param_json_parser,param_json_utf8,guest_app_infoand the fivedownload_data_mount_*cases (including the newsfo) pass, 9/9. - With
AppMetadata.cppfrommain(parser and tests kept):download_data_mount_sfoandguest_app_infoabort; the other seven pass.
Non-GPU suite (ctest -E "^agc"): same result as main; only file_writer_binary and file_writer_text fail, and they fail on main too on this machine (Ubuntu 26.04 coreutils).
Written with AI assistance (Claude Code). I ran the builds and tests above on my machine.
|
Thanks for the Linux run, @jotitadev, and for checking that AI-assisted: yes (Claude Code). 🤖 Generated with Claude Code |
PS4 titles ship sce_sys/param.sfo instead of param.json. When param.json is absent, the application metadata now reads the title, title ID, download data size and user defined parameters from param.sfo, and /data and /download0 are mounted for it as for param.json. param.json is still preferred when both files exist.
91117ec to
487b9fd
Compare
What
PS4 titles and homebrew ship
sce_sys/param.sfoinstead ofparam.json. The OpenOrbis graphics, input and pngdec samples stop right aftermain: Creating a scenewithwhat(): param.json not found. Whenparam.jsonis absent, the application metadata now reads the title, title ID, download data size and user defined parameters fromparam.sfo, and/dataand/download0are mounted for it as forparam.json.param.jsonis still preferred when both files exist.The parser checks the PSF header, the table and entry bounds, string terminators, 32-bit integer entries, repeated keys and a negative download data size, and throws on each. The localized
TITLE_00toTITLE_30are not selected by the console language; that is recorded in the libkernel debt file.Part of the PS4 homebrew work tracked in #3093.
Tested
Windows 11 Pro 26200, WinLibs GCC 15.2.0 r7, Release, full build with
BUILD_TESTING=ON, onmaine442f4c2e:param_sfo_parser(new),guest_app_info,param_json_parserand thedownload_data_mount_*cases, including the newsfocase: 9/9.guest_app_infochecks thatparam.jsonwins overparam.sfoand that a process with onlyparam.sfogets its title ID;download_data_mount_sfostarts a process whose run directory has onlyparam.sfoand checks/data,/download0and the title ID.param.sfo; never reading it; not mounting/dataor/download0for it; ignoring integer entries; shifting the user parameters; not checking the entry count or the data length; accepting repeated keys or a negative download data size.main84b01f9cd, all together one442f4c2e): graphics, input and pngdec start with their ownparam.sfo.tools/check_conventions.py --base origin/mainpasses.Not tested on Linux.
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code