From 6b911baac9b241fb29bb2ec47e04978059b481ef Mon Sep 17 00:00:00 2001 From: Ordinary205 <125112932+Ordinary205@users.noreply.github.com> Date: Sun, 14 Jan 2024 12:50:44 +0000 Subject: [PATCH] libSceMoveTracker --- fpPS4.lpr | 1 + src/ps4_libscemovetracker | 82 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 src/ps4_libscemovetracker diff --git a/fpPS4.lpr b/fpPS4.lpr index 2a2ee4a1..92b401ea 100644 --- a/fpPS4.lpr +++ b/fpPS4.lpr @@ -27,6 +27,7 @@ ps4_libSceMouse, ps4_libSceIme, ps4_libSceMove, + ps4_libSceMoveTracker, ps4_libScePlayGo, ps4_libSceDiscMap, ps4_libSceAppContent, diff --git a/src/ps4_libscemovetracker b/src/ps4_libscemovetracker new file mode 100644 index 00000000..b18f1207 --- /dev/null +++ b/src/ps4_libscemovetracker @@ -0,0 +1,82 @@ +unit ps4_libSceMoveTracker; + +{$mode ObjFPC}{$H+} + +interface + +uses + ps4_program; + +implementation + +const + SCE_MOVE_TRACKER_ERROR_INVALID_ARG=-2131820541; //0x80EF0003; + + SCE_MOVE_MAX_CONTROLLERS=4; + SCE_MOVE_MAX_CONTROLLERS_PER_PLAYER=2; + +type + pSceMoveButtonData=^SceMoveButtonData; + SceMoveButtonData=packed record + digitalButtons,analogT:Word; + end; + + pSceMoveExtensionPortData=^SceMoveExtensionPortData; + SceMoveExtensionPortData=packed record + end; + + pSceMoveData=^SceMoveData; + SceMoveData=packed record + accelerometer:single; + gyro:single; + pad:SceMoveButtonData; + ext:SceMoveExtensionPortData; + timestamp:Integer; + counter:Integer; + temperature:single; + end; + + pSceMoveTrackerControllerInput=^SceMoveTrackerControllerInput; + SceMoveTrackerControllerInput=packed record + handle:Integer; + data:pSceMoveData; + num:Integer; + end; + +function ps4_sceMoveTrackerGetWorkingMemorySize(onionSize,garlicSize:PInteger):Integer; SysV_ABI_CDecl; +begin + if (onionSize=nil) or (garlicSize=nil) then Exit(SCE_MOVE_TRACKER_ERROR_INVALID_ARG); + onionSize^:=0; + garlicSize^:=0; + Result:=0; +end; + +function ps4_sceMoveTrackerInit(onionMemory,garlicMemory:Pointer;pipeId,queueId:Integer):Integer; SysV_ABI_CDecl; +begin + if (onionMemory=nil) or (garlicMemory=nil) then Exit(SCE_MOVE_TRACKER_ERROR_INVALID_ARG); + Result:=0; +end; + +function ps4_sceMoveTrackerControllersUpdate(controllerInputs:SceMoveTrackerControllerInput):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + +function Load_libSceMoveTracker(Const name:RawByteString):TElf_node; +var + lib:PLIBRARY; +begin + Result:=TElf_node.Create; + Result.pFileName:=name; + + lib:=Result._add_lib('libSceMoveTracker'); + lib^.set_proc($820D5DE0AB32555B,@ps4_sceMoveTrackerGetWorkingMemorySize); + lib^.set_proc($178C366ADC06E36F,@ps4_sceMoveTrackerInit); + lib^.set_proc($FD8F2194C801B2BE,@ps4_sceMoveTrackerControllersUpdate); +end; + +initialization + ps4_app.RegistredPreLoad('libSceMoveTracker.prx',@Load_libSceMoveTracker); + +end. +