Repository navigation
feat(libSceHmd2): export missing firmware HMD2 interfaces - #8028
Conversation
Progress report (8a7ba4b → 0ef3bed)📉 System libraries: 64.98% (-0.19%, +19 declared functions) 🆕 19 declared as stubs
|
|
Cross-referencing an interaction with #7826 (T3cm0's measured pre-init sweep, opened this morning) that I don't think either thread knows about yet. The overlap: this PR's named stubs register their NIDs by symbol name (the NID is computed from the function name at patch time — SHA1 over the name plus a fixed suffix), while #7826 registers literal NIDs through If both merged as-is, those 75 NIDs would be double-registered — and nothing at build time catches it: the symbols coexist in the binary, the duplicate only shows at guest patch time. (Same mechanism, for what it's worth, let 7 of The two PRs answer the same exports differently (this one: |
|
@ymatrix1 thanks. Most names check out against the pinned aerolib, but these don't appear in it: in #8021 sceAudioOut2LoPortSetAttributesEx, sceAudioOut2LoPortGetAttributes, sceAudioOut2LoPortCreateEx, sceAudioOut2LoContextQueryMemoryEx, sceAudioOut2LoContextGetAttributes, sceAudioOut2LoContextCreateEx, sceAudioOut2SetTvCorrectionInfo, sceAudioOut2GetSystemDebugState, sceAudioOut2SetSpeakerInfo, sceAudioOut2PortSetAttributesEx, sceAudioOut2SetHrtfIdForCronos, and in #8028 sceHmd2ReprojectionClearEventGpuEnd, sceHmd2ReprojectionClearEventGpuStart and sceHmd2GazeGetEnabledEye. Which database did these names come from? Also, #7798 already answers 54 of #8028's Hmd2 NIDs before initialization; whichever of the two lands second will need to drop its copy of those. |
|
@oneandonlydean thanks. The names came from a local NID name database built from aerolib plus extra name lists (not just the pinned file). Each name hashes to an NID that the console's own library exports, which is how I matched them, but I can't show where the extra names originate, so I removed every name that is not in the pinned aerolib: the three you listed are gone. I also dropped the stubs that #7798 already covers, and the PR is now 19 stubs. @blawesom thanks for the cross-reference. I compared the remaining 19 names (as NIDs) with the NIDs registered in #7826 (205) and #7798 (125) and none collides. |
What
Declare 19 libSceHmd2 exports that exist in the firmware library and were missing here, as throwing stubs (
NotImplemented_nid_no_patch(__func__)). The export list comes from the firmware libSceHmd2 dynamic function symbols, names from the verified NID database; every name recomputes to its NID. Signatures are unknown, so each is declared without parameters and listed under Unknown function info indocs/dev/debt/libSceHmd2.md.Left out:
sceHmd2ReprojectionClearEventGpuEnd,sceHmd2ReprojectionClearEventGpuStartandsceHmd2GazeGetEnabledEye(names not in the project's pinned aerolib). The NIDs that open PR #7798 already covers withAPS5_EXPORT, and those declared by #7805 and #7826, are not declared here, so no function is defined twice.Tested
Not built and not run: the Windows MinGW toolchain here cannot assemble the exception-using ms_abi code, so the full build and ctest were not run. Checked
tools/check_conventions.py --base origin/main --head HEAD(passes),g++ -std=c++20 -fsyntax-onlyonlibSceHmd2/Export.cpp(clean), no duplicate definitions, no name defined elsewhere incore/or added by an open PR, andtools/pr_overlap.py(it lists open PRs 7690, 7798, 7805 and 7826 as sharing the files without comparing them, so I compared their added NIDs and function names against these stubs and removed every overlap; branch merged with currentmain).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)