Skip to content

feat(libScePad): declare 23 game-facing exports - #4620

Closed
iDiesIrae-Req wants to merge 1 commit into
boykopovar:mainfrom
iDiesIrae-Req:feat/libscepad-declare-exports
Closed

iDiesIrae-Req wants to merge 1 commit into
boykopovar:mainfrom
iDiesIrae-Req:feat/libscepad-declare-exports

Conversation

@iDiesIrae-Req

@iDiesIrae-Req iDiesIrae-Req commented Oct 12, 2026 •

Copy link
Copy Markdown

What

Declares 23 libScePad exports as throwing stubs (NotImplemented_nid_no_patch(__func__)). They are declared without parameters because their signatures are unknown, and are recorded in debt/libScePad.md.

scePadGetCapability, scePadGetControllerType, scePadGetDeviceInfo, scePadGetExtensionUnitInfo, scePadGetIdleCount, scePadGetMotionSensorPosition, scePadGetMotionTimerUnit, scePadGetSphereRadius, scePadIsDS4Connected, scePadIsLightBarBaseBrightnessControllable, scePadIsMoveConnected, scePadIsMoveReproductionModel, scePadIsSupportedAudioFunction, scePadIsValidHandle, scePadOpenExt2, scePadReadHistory, scePadReadStateExt, scePadResetLightBarAll, scePadResetLightBarAllByPortType, scePadSetExtensionReport, scePadSetLightBarBaseBrightness, scePadSetLightBarBlinking, scePadVrControllerGetPhysicalUsbConnectionStatus.

The names come from the aerolib NID list pinned in tools/nid_names.py, and each one hashes to its NID. Only game-facing calls were picked. System and internal names in the same list (Leonardo, Lotus, IR code, profile editing, telemetry, process focus, tracker) were left out.

No title is known to import these yet. A title that does now fails with a named not implemented error instead of a missing-import error.

tools/progress.py --compare against main 8a67eb2: +23 declared functions, all libScePad.

Rebased onto main 8a67eb2.

Tested

On Windows 11, WinLibs GCC 15.2.0 r7, Release, main 8a67eb2 plus this commit:

  • the libs target builds (Patching NIDs for libScePad, OK);
  • all 24 aerolib NIDs (these 23 plus main's scePadVrControllerGetTriggerEffectStates) are exported by the built libScePad.prx;
  • no name is defined twice in libScePad;
  • tools/check_conventions.py --base origin/main passes.

ctest was not run. No title was run.

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

🤖 Generated with Claude Code

Throwing stubs for libScePad names from the aerolib NID list, each hashing
to its NID. Signatures are unknown and recorded in debt/libScePad.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@iDiesIrae-Req
iDiesIrae-Req force-pushed the feat/libscepad-declare-exports branch from 9d16c4a to debcdcf Compare October 12, 2026 21:47
@iDiesIrae-Req iDiesIrae-Req changed the title feat(libScePad): declare 24 game-facing exports feat(libScePad): declare 23 game-facing exports Oct 12, 2026
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 12, 2026
@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

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.

Pull request Conflicting files (lines on main) Same exports Same new files
#4962 docs/dev/debt/libScePad.md L10
#5004 docs/dev/debt/libScePad.md L10
#5038 docs/dev/debt/libScePad.md L10
#5125 docs/dev/debt/libScePad.md L10

@github-actions

Copy link
Copy Markdown

Progress report (8a67eb2 → debcdcf)

📉 System libraries: 87.3% (-0.56%, +23 declared functions)

🆕 23 declared as stubs
Library Name
libScePad scePadGetCapability
libScePad scePadGetControllerType
libScePad scePadGetDeviceInfo
libScePad scePadGetExtensionUnitInfo
libScePad scePadGetIdleCount
libScePad scePadGetMotionSensorPosition
libScePad scePadGetMotionTimerUnit
libScePad scePadGetSphereRadius
libScePad scePadIsDS4Connected
libScePad scePadIsLightBarBaseBrightnessControllable
libScePad scePadIsMoveConnected
libScePad scePadIsMoveReproductionModel
libScePad scePadIsSupportedAudioFunction
libScePad scePadIsValidHandle
libScePad scePadOpenExt2
libScePad scePadReadHistory
libScePad scePadReadStateExt
libScePad scePadResetLightBarAll
libScePad scePadResetLightBarAllByPortType
libScePad scePadSetExtensionReport
libScePad scePadSetLightBarBaseBrightness
libScePad scePadSetLightBarBlinking
libScePad scePadVrControllerGetPhysicalUsbConnectionStatus

@adriadam10

Copy link
Copy Markdown
Collaborator

Closing this one, for these reasons:

  • It adds 23 exports that only throw NotImplemented, with no parameters because their signatures are unknown. Behaviour is the same as main for any title that calls them (it aborts either way); only the symbol now exists.
  • The description states that no title is known to import them, so nothing here boots, fixes or measures anything. Filling progress gaps is not a reason on its own to add exports.
  • No test and no reference (KytyPS5, shadPS4, FreeBSD, a real title's call site) backs any signature or return value.

You're welcome to reopen, or send a new PR, once a title imports one of these calls and the PR implements it with a signature, behaviour from a reference or call-site evidence, and a test that fails without the change.

@adriadam10 adriadam10 closed this Oct 13, 2026
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.

3 participants