mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 16:43:05 -05:00
3.3 KiB
3.3 KiB
libSceSystemGesture technical debt
Silent stubs
- System gesture recognizers (libSceSystemGesture) -
sceSystemGestureGetTouchEvents,GetTouchEventsCount,GetTouchEventByIndex,GetTouchEventByEventIDand the recognizer append, remove, reset and update calls report that no recognizer ever matches, so a title receives primitive touch events but no tap, drag, hold, pinch, rotation or flick event. Handle and pointer arguments are still checked across all query entry points. Error codes follow the 0x80D1 values main already uses in this file; KytyPS5 uses 0x8089 (INVALID_ARGUMENT 0x80890001, INVALID_HANDLE 0x80890006), and which one the console returns is not verified.sceSystemGestureGetTouchRecognizerInformationreturns the gesture type and rectangle given tosceSystemGestureCreateTouchRecognizerorUpdateTouchRecognizerRectangle, stored in the title's recognizer buffer in a layout private to this file, and always reportsupdated_time0 because no recognizer is ever updated with input. It throws for a recognizer that was not created bysceSystemGestureCreateTouchRecognizeror has no rectangle, since the console's result in those cases is not known
Unknown function info
- Primitive touch events (libSceSystemGesture) -
sceSystemGestureUpdatePrimitiveTouchRecognizerreads the pad reports the title passes in,{int32 padHandle, int32 reportNumber, const ScePadData* padDataBuffer, 8 reserved bytes}, as fpPS4 recordsSceSystemGestureTouchPadData;padHandleis not checked and a report of a pad other than the one the title opened is not told apart. The touch states 0 inactive, 1 begin, 2 active and 3 end are the Vita ones in RPCS3, whose recognizer, rectangle and primitive event layouts are the ones main already uses, and no public source states the PS5 values. A primitive keeps the touch id the pad reports, its positions are the pad's touchpad coordinates unscaled,delta_timeandelapsed_timecome from the reports' owntimestamp, andis_updatedis 1 for a primitive whose state or position changed in the update; the console's units, scaling andis_updatedrule are unverified. An ended touch stays readable as oneendevent until the next report sampled drops it. A nullpInputData, a nullpadDataBufferor areportNumberof 0 or less leaves the events unchanged and returns success, an event buffer shorter than the event count reports as many events as it holds, andsceSystemGestureGetPrimitiveTouchEventByPrimitiveIDthrows for an id that no tracked touch has; what the console answers in those cases is not known - sceSystemGestureDebugGetVersion (libSceSystemGesture) - its name and NID are in the PS5 3.20 export inventory, but no credible prototype was found. It is declared without parameters solely to resolve known imports; this is not an ABI claim