Repository navigation
fix(pad): accept vibration mode 5 - #5523
Merged
adriadam10 merged 1 commit intoOct 14, 2026
Merged
Conversation
9 tasks done
MarcZX10
approved these changes
Oct 13, 2026
MarcZX10
left a comment
Contributor
There was a problem hiding this comment.
The change is narrowly scoped: mode 5 is accepted while 4, 6+, and negative values remain rejected, and the regression checks cover those boundaries. The PR also records the remaining uncertainty about mode semantics and the expected one-line rebase with #5264. The current CI checks pass, while platform/build jobs are skipped; I’m relying on the Linux test evidence documented in the PR, not claiming an independent local run.
11 tasks done
Crimson Desert (PPSA25286) calls scePadSetVibrationMode(handle, 5) at start-up, and main rejects any mode above 3 with SCE_PAD_ERROR_INVALID_ARG (0x80920001). The title then carries on with the call failed. The modes are not documented. SharpProspero names 1 (advanced) and 2 (compatible); mode 3 was accepted for PPSA21480. The call now also accepts 5, which a shipped title passes, and keeps rejecting the values no title has been seen to use (4, 6 and above). The mode is stored as before and has no other effect. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
milescoviello
force-pushed
the
fix/pad-vibration-mode-5
branch
from
October 14, 2026 21:07
7dd948e to
d476518
Compare
Collaborator
|
Checked the diff, |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Crimson Desert (PPSA25286) calls
scePadSetVibrationMode(handle, 5)on its open pad handle at start-up.mainrejects any mode above 3, so the call returnsSCE_PAD_ERROR_INVALID_ARG(0x80920001). The title carries on with the call failed.The modes are not documented:
Advanced) and 2 (Compatible).scePadOpen.INVALID_HANDLE, notINVALID_ARG. Modes above 3 on an open handle could not be measured there.The call now also accepts 5, the value a shipped title passes on an open handle. It keeps rejecting the values no title has been seen to use (4, 6 and above), and the mode is stored as before with no other effect. The libScePad debt entry now lists 5 next to 3 as accepted modes of unknown meaning.
guest_padchecks that mode 5 is accepted and that 4 and 6 are still refused.Rebased onto #5264, which now checks the mode before the handle as the console does: the change is
if (mode > 3 && mode != 5)after itsmode <= 0check, and the debt entry keeps #5264's console measurements and adds mode 5.#5038 rewrites the neighbouring
scePadOpenentry of the libScePad debt file, so whichever of the two lands second needs a one-line rebase there.Tested
Ubuntu 24.04, GCC 13.3 (CI's compiler), Release with CI's configure flags. After the rebase onto
mainfa539dd,guest_padagain fails withmain'sExport.cppand passes with the change, andtools/check_conventions.py --base upstream/mainpasses. Before it, onmainbf8dc61:main'sExport.cppand the new checks,guest_padfails; with the change it passes 20/20.guest_*tests pass in two runs.--to-inteland run on Linux under gdb, logging every libScePad, libSceSaveData, libSceUserService and other service call that returns an error code:main's libScePad,scePadSetVibrationMode(handle 1, mode 5) returns0x80920001.tools/check_conventions.py --base upstream/mainpasses.Not checked on a console.
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