Skip to content

fix(exports): export the calls PPSA07411 imports - #3773

Merged
adriadam10 merged 3 commits into
boykopovar:mainfrom
xXPBSXx:fix/export-ppsa07411-imports-v4
Oct 11, 2026
Merged

adriadam10 merged 3 commits into
boykopovar:mainfrom
xXPBSXx:fix/export-ppsa07411-imports-v4

Conversation

@xXPBSXx

@xXPBSXx xXPBSXx commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

What

Resident Evil 4 (PPSA07411) fails to load because 12 imports have no export. This PR declares them without parameters as throwing stubs (signatures unknown), as #1347 did for PPSA01317:

Library Exports
libSceSsl (6) sceSslCreateConnection, sceSslDeleteConnection, sceSslEnableVerifyOption, sceSslConnect, sceSslRead, sceSslWrite
libSceJson2 (4) sce::Json::Value::setElementAccessFailureHandler, setSpecialFloatHandler, setTypeMismatchHandler, operator bool
libSceConvertKeycode (1) sceConvertKeycodeGetCharacter
libSceNpSessionSignaling (1) sceNpSessionSignalingGetGroupFromSessionId

Names come from the aerolib NID list (tools/nid_names.py). The title's other missing imports are not in this PR: sce::Json::InitParameter2::setSpecialFloatFormatType is added by #3737 (and #3575), and the PS VR2 calls are split between #3537 and the follow-up #4044. #3537 adds sceHmd2GazeGetResult, sceHmd2Reprojection{Disable,Enable}Mirroring, ...GetMirroring{DisplayBufferSizeAlign,WorkMemorySizeAlign}, ...SetMirroringOption, ...SetParam, ...SetTiming, ...Terminate, scePadVrControllerGetTriggerEffectState, ...SetTriggerEffect(s), sceVrTracker2Finalize, ...GetPlayAreaOrientedBoundingBox and ...LocateCoordinateSystem; #4044 declares the six RE4 imports that #3537 does not have. An earlier version of this description said #3537 contains all of them; that was wrong.

Tested

  • Windows, MinGW GCC 15.2.0, built on current main (a11c8f7f7): ctest -R "guest_ppsa07411_exports|guest_ssl|guest_json" passes; tools/check_conventions.py --base upstream/main passes.
  • Not tested: running PPSA07411 itself with this change. The functions throw, so the title only gets past the loader.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • AI-assisted: yes (Claude Code)

PPSA07411 (Resident Evil 4) fails to load without these imports that no library exports. Their signatures are unknown, so they are declared without parameters and throw until they are implemented. Adds one test and a TechnicalDebt entry.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

Progress report (a11c8f7 → f854e52)

📉 System libraries: 85.51% (-0.3%, +12 declared functions)

🆕 12 declared as stubs
Library Name
libSceConvertKeycode sceConvertKeycodeGetCharacter
libSceJson2 _ZN3sce4Json5Value22setSpecialFloatHandlerEPFKS1_NS0_12FunctionTypeEdPS2_PvPbES5_
libSceJson2 _ZN3sce4Json5Value22setTypeMismatchHandlerEPFRKS1_NS0_9ValueTypeEPS2_S5_PvES6_
libSceJson2 _ZN3sce4Json5Value30setElementAccessFailureHandlerEPFviPKNS0_6StringEPKmPKS1_S8_PvES9_
libSceJson2 _ZNK3sce4Json5ValuecvbEv
libSceNpSessionSignaling sceNpSessionSignalingGetGroupFromSessionId
libSceSsl sceSslConnect
libSceSsl sceSslCreateConnection
libSceSsl sceSslDeleteConnection
libSceSsl sceSslEnableVerifyOption
libSceSsl sceSslRead
libSceSsl sceSslWrite

CONTRIBUTING asks for no tests that only check that a symbol is exported.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@xXPBSXx

xXPBSXx commented Oct 11, 2026

Copy link
Copy Markdown
Contributor Author

Update: removed GuestPPSA07411Exports.cpp and its CMake entry, since CONTRIBUTING asks for no tests that only check that a symbol is exported. The description's mention of the test no longer applies; the TechnicalDebt entry stays. The four libraries (libSceSsl, libSceJson2, libSceConvertKeycode, libSceNpSessionSignaling) build, and check_conventions.py passes.

AI-assisted (Claude Code).

…e file

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@adriadam10

Copy link
Copy Markdown
Collaborator

Checked the 12 names against the aerolib NID list, no overlap with open PRs on these exports, scoped build and ctest (22/22) on current main, conventions check green; merging.

@adriadam10
adriadam10 merged commit 51e2c51 into boykopovar:main Oct 11, 2026
12 checks passed
@xXPBSXx

xXPBSXx commented Oct 11, 2026

Copy link
Copy Markdown
Contributor Author

Correction to this description: it said the PS VR2 imports of Resident Evil 4 are already added by #3537. That was wrong. #3537 adds only part of that family (sceHmd2GazeGetResult, the sceHmd2Reprojection* mirroring/param/timing/terminate calls, scePadVrControllerGetTriggerEffectState, scePadVrControllerSetTriggerEffect(s), sceVrTracker2Finalize, GetPlayAreaOrientedBoundingBox, LocateCoordinateSystem). Six imports of the title stay unexported with #3537 alone: sceHmd2GetDeviceInformationByHandle, sceHmd2Terminate, scePadVrControllerSetVibration, scePadVrControllerSetVibrationMode, scePadVrControllerReadCombinedState and sceVrTracker2ResetLocalCoordinate. They are declared in the follow-up #4044. I found it by running the title's import audit on a stack of main with #3537, #3737, #3791, #3517, #3604 and #3707. The description above is updated.

AI-assisted (Claude Code).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants