From 72a5a166162674226b3c800a6df6d67070825478 Mon Sep 17 00:00:00 2001 From: Ordinary205 <125112932+Ordinary205@users.noreply.github.com> Date: Tue, 2 Apr 2024 22:54:03 +0400 Subject: [PATCH] Multiple Functions (Part 3) (#207) * sceAjmBatchJobInlineBuffer * sceAjmInstanceCodecType * sceGnmDebugHardwareStatus * sceGnmDeleteEqEvent * sceImeDialogInit * sceLoginDialogUpdateStatus * sceNetBandwidthControlSetDefaultParam * sceNpSignalingSetContextOption * sceNpWebApi2PushEventCreateFilter * sceNpWebApi2PushEventCreateHandle * sceNpWebApi2PushEventRegisterCallback * sceSigninDialogGetResult * sceSslFreeCaCerts * sceSslGetCaCerts * sceUsbStorageInit * sceVideoOutAddDriver * sceVoiceResumePortAll * Fixes * + * Fix build * + * + * + * + * + * + * + * + * + * + --------- Co-authored-by: red-prig --- fpPS4.lpr | 2 +- src/ajm/ps4_libsceajm.pas | 20 ++++++ src/np/ps4_libscenpsignaling.pas | 8 +++ src/np/ps4_libscenpwebapi.pas | 39 +++++++++- src/ps4_libSceSsl.pas | 30 ++++++++ src/ps4_libscedialogs.pas | 112 +++++++++++++++++++++++++++-- src/ps4_libscegnmdriver.pas | 50 +++++++++++++ src/ps4_libsceime.pas | 75 ++++++++++++++----- src/ps4_libscenet.pas | 6 ++ src/ps4_libsceusbstorage.pas | 35 +++++++++ src/ps4_libscevideoout.pas | 10 +++ src/ps4_libscevoice.pas | 6 ++ src/ps4_libscewebbrowserdialog.pas | 53 -------------- 13 files changed, 366 insertions(+), 80 deletions(-) create mode 100644 src/ps4_libsceusbstorage.pas delete mode 100644 src/ps4_libscewebbrowserdialog.pas diff --git a/fpPS4.lpr b/fpPS4.lpr index 7b3252a..d2c59b9 100644 --- a/fpPS4.lpr +++ b/fpPS4.lpr @@ -69,12 +69,12 @@ uses ps4_libSceShareUtility, ps4_libSceSocialScreen, ps4_libSceVideoRecording, - ps4_libSceWebBrowserDialog, ps4_libSceCompanionHttpd, ps4_libSceCompanionUtil, ps4_libSceContentExport, ps4_libSceConvertKeycode, ps4_libSceUsbd, + ps4_libSceUsbStorage, ps4_libSceAudiodecCpu, ps4_libSceDepth, ps4_libSceNpTus, diff --git a/src/ajm/ps4_libsceajm.pas b/src/ajm/ps4_libsceajm.pas index f963e42..965371e 100644 --- a/src/ajm/ps4_libsceajm.pas +++ b/src/ajm/ps4_libsceajm.pas @@ -305,6 +305,11 @@ begin if not FAjmMap.Delete(uiContext) then Result:=SCE_AJM_ERROR_INVALID_CONTEXT; end; +function ps4_sceAjmInstanceCodecType(uiCodec:SceAjmCodecType):Integer; SysV_ABI_CDecl; +begin + Result:=uiCodec shr $E; +end; + function ps4_sceAjmInstanceCreate(uiContext:SceAjmContextId; uiCodec:SceAjmCodecType; uiFlags:QWORD; @@ -391,6 +396,19 @@ begin end; +function ps4_sceAjmBatchJobInlineBuffer( + const pBatchPosition :Pointer; + const pDataInput :Pointer; + const szDataInputSize:QWORD; + const pBatchAddress :PPointer):Pointer; SysV_ABI_CDecl; +begin + PDWORD(pBatchPosition)^ :=PDWORD(pBatchPosition)^ and $ffffffe0 or 7; + PDWORD(pBatchPosition + 4)^:=(szDataInputSize + 7) and $fffffff8; + Move(pDataInput^, Pointer(pBatchPosition + 8)^, szDataInputSize); + pBatchAddress^:=(pBatchPosition + 8); + Result:=pBatchPosition + 8 + ((szDataInputSize + 7) and $fffffffffffffff8); +end; + function ps4_sceAjmBatchJobRunBufferRa( pBatchPosition:Pointer; uiInstance:SceAjmInstanceId; @@ -477,9 +495,11 @@ begin lib^.set_proc($43777216EC069FAE,@ps4_sceAjmModuleRegister); lib^.set_proc($5A2EC3B652D5F8A2,@ps4_sceAjmModuleUnregister); lib^.set_proc($307BABEAA0AC52EB,@ps4_sceAjmFinalize); + lib^.set_proc($7625E340D88CBBFB,@ps4_sceAjmInstanceCodecType); lib^.set_proc($031A03AC8369E09F,@ps4_sceAjmInstanceCreate); lib^.set_proc($45B2DBB8ABFCCE1A,@ps4_sceAjmInstanceDestroy); lib^.set_proc($7660F26CDFFF167F,@ps4_sceAjmBatchJobControlBufferRa); + lib^.set_proc($B2D96086789CDC97,@ps4_sceAjmBatchJobInlineBuffer); lib^.set_proc($125B25382A4E227B,@ps4_sceAjmBatchJobRunBufferRa); lib^.set_proc($EE37405CAFB67CCA,@ps4_sceAjmBatchJobRunSplitBufferRa); lib^.set_proc($7C5164934C5F196B,@ps4_sceAjmBatchStartBuffer); diff --git a/src/np/ps4_libscenpsignaling.pas b/src/np/ps4_libscenpsignaling.pas index e4da3b8..e79d9f8 100644 --- a/src/np/ps4_libscenpsignaling.pas +++ b/src/np/ps4_libscenpsignaling.pas @@ -61,6 +61,13 @@ begin Result:=0; end; +function ps4_sceNpSignalingSetContextOption(ctxId:DWORD; + optname:Integer; + optval:Integer):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + function Load_libSceNpSignaling(Const name:RawByteString):TElf_node; var lib:PLIBRARY; @@ -73,6 +80,7 @@ begin lib^.set_proc($E7262311D778B7C6,@ps4_sceNpSignalingCreateContext); lib^.set_proc($7432CD15D63C770B,@ps4_sceNpSignalingCreateContextA); lib^.set_proc($53C01032538505CF,@ps4_sceNpSignalingGetLocalNetInfo); + lib^.set_proc($207443BD9A1D3D86,@ps4_sceNpSignalingSetContextOption); end; initialization diff --git a/src/np/ps4_libscenpwebapi.pas b/src/np/ps4_libscenpwebapi.pas index 16d3e40..b83ca79 100644 --- a/src/np/ps4_libscenpwebapi.pas +++ b/src/np/ps4_libscenpwebapi.pas @@ -272,6 +272,18 @@ type responseDataSize:QWORD; end; + pSceNpWebApi2ExtdPushEventExtdDataKey=^SceNpWebApi2ExtdPushEventExtdDataKey; + SceNpWebApi2ExtdPushEventExtdDataKey=packed record + val:array[0..SCE_NP_WEBAPI_EXTD_PUSH_EVENT_EXTD_DATA_KEY_LEN_MAX] of AnsiChar; + end; + + pSceNpWebApi2PushEventFilterParameter=^SceNpWebApi2PushEventFilterParameter; + SceNpWebApi2PushEventFilterParameter=packed record + dataType :SceNpWebApi2ExtdPushEventExtdDataKey; + pExtdDataKey :Pointer; + extdDataKeyNum:QWORD; + end; + const SCE_NP_WEBAPI2_PUSH_EVENT_UUID_LENGTH=36; @@ -325,6 +337,28 @@ begin Result:=0; end; +function ps4_sceNpWebApi2PushEventCreateHandle(libCtxId:Integer):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + +function ps4_sceNpWebApi2PushEventCreateFilter(libCtxId:Integer; + handleId:Integer; + pNpServiceName:PChar; + npServiceLabel:DWORD; + pFilterParam:pSceNpWebApi2PushEventFilterParameter; + filterParamNum:QWORD):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + +function ps4_sceNpWebApi2PushEventRegisterCallback(libCtxId:Integer; + cbFunc:Pointer; + pUserArg:Pointer):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + //NpWebApi2 function Load_libSceNpWebApi(Const name:RawByteString):TElf_node; @@ -374,7 +408,10 @@ begin lib^.set_proc($95038217CE25BF3C,@ps4_sceNpWebApi2SendRequest); lib^.set_proc($B24E786E2E85B583,@ps4_sceNpWebApi2CreateUserContext); lib^.set_proc($41A7F179933758AE,@ps4_sceNpWebApi2PushEventDeletePushContext); - lib^.set_proc($7A038EBEB9C5EA62,@ps4_sceNpWebApi2AddHttpRequestHeader); + lib^.set_proc($7A038EBEB9C5EA62,@ps4_sceNpWebApi2AddHttpRequestHeader); + lib^.set_proc($595D46C0CDF63606,@ps4_sceNpWebApi2PushEventCreateHandle); + lib^.set_proc($32C685851FA53C4E,@ps4_sceNpWebApi2PushEventCreateFilter); + lib^.set_proc($7D8DD0A9E36417C9,@ps4_sceNpWebApi2PushEventRegisterCallback); end; initialization diff --git a/src/ps4_libSceSsl.pas b/src/ps4_libSceSsl.pas index c6d275c..144dac3 100644 --- a/src/ps4_libSceSsl.pas +++ b/src/ps4_libSceSsl.pas @@ -7,6 +7,20 @@ interface uses ps4_program; +type + pSceSslData=^SceSslData; + SceSslData=packed record + ptr :PChar; + size:QWORD; + end; + + pSceSslCaCerts=^SceSslCaCerts; + SceSslCaCerts=packed record + certData :pSceSslData; + certDataNum:QWORD; + pool :Pointer; + end; + implementation function ps4_sceSslInit(poolSize:size_t):Integer; SysV_ABI_CDecl; @@ -21,6 +35,20 @@ begin Result:=0; end; +function ps4_sceSslGetCaCerts(libsslCtxId:Integer; + caCerts:pSceSslCaCerts):Integer; SysV_ABI_CDecl; +begin + Writeln('sceSslGetCaCerts:',libsslCtxId); + Result:=0; +end; + +function ps4_sceSslFreeCaCerts(libsslCtxId:Integer; + caCerts:pSceSslCaCerts):Integer; SysV_ABI_CDecl; +begin + Writeln('sceSslFreeCaCerts:',libsslCtxId); + Result:=0; +end; + function Load_libSceSsl(Const name:RawByteString):TElf_node; var lib:PLIBRARY; @@ -32,6 +60,8 @@ begin lib^.set_proc($85DA551140C55B7B,@ps4_sceSslInit); lib^.set_proc($D0AD7243A2EFFD87,@ps4_sceSslTerm); + lib^.set_proc($4C37D0A8EFE031B6,@ps4_sceSslGetCaCerts); + lib^.set_proc($A88BCBB34818C62D,@ps4_sceSslFreeCaCerts); end; initialization diff --git a/src/ps4_libscedialogs.pas b/src/ps4_libscedialogs.pas index 469f7d8..a1c6473 100644 --- a/src/ps4_libscedialogs.pas +++ b/src/ps4_libscedialogs.pas @@ -8,6 +8,7 @@ uses ps4_program, Classes, SysUtils, + ps4_libSceIme, ps4_libSceSaveData; implementation @@ -458,6 +459,20 @@ const SCE_SIGNIN_DIALOG_STATUS_RUNNING =2; SCE_SIGNIN_DIALOG_STATUS_FINISHED =3; + //SceSigninDialogResultType + SCE_SIGNIN_DIALOG_RESULT_OK =0; + SCE_SIGNIN_DIALOG_RESULT_USER_CANCELED=1; + +type + pSceSigninDialogResultType=^SceSigninDialogResultType; + SceSigninDialogResultType=Integer; + + pSceSigninDialogResult=^SceSigninDialogResult; + SceSigninDialogResult=packed record + _result :SceSigninDialogResultType; + reserved:array[0..2] of Integer; + end; + var status_signin_dialog:Integer=SCE_SIGNIN_DIALOG_STATUS_NONE; @@ -468,6 +483,11 @@ begin Result:=0; end; +function ps4_sceSigninDialogGetResult(_result:pSceSigninDialogResult):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + function ps4_sceSigninDialogTerminate():Integer; SysV_ABI_CDecl; begin Writeln('sceSigninDialogTerminate'); @@ -508,14 +528,55 @@ const SCE_IME_DIALOG_STATUS_RUNNING =1; SCE_IME_DIALOG_STATUS_FINISHED=2; +type + pSceImeDialogParam=^SceImeDialogParam; + SceImeDialogParam=packed record + userId :Integer; + _type :SceImeType; + supportedLanguages :QWORD; + enterLabel :SceImeEnterLabel; + inputMethod :SceImeInputMethod; + filter :SceImeTextFilter; + option :DWORD; + maxTextLength :DWORD; + inputTextBuffer :PWideChar; + posx :Single; + posy :Single; + horizontalAlignment:SceImeHorizontalAlignment; + verticalAlignment :SceImeVerticalAlignment; + placeholder :PWideChar; + title :PWideChar; + reserved :array[0..15] of ShortInt; + end; + + pSceImeParamExtended=^SceImeParamExtended; + SceImeParamExtended=packed record + option :DWORD; + colorBase :SceImeColor; + colorLine :SceImeColor; + colorTextField :SceImeColor; + colorPreedit :SceImeColor; + colorButtonDefault :SceImeColor; + colorButtonFunction :SceImeColor; + colorButtonSymbol :SceImeColor; + colorText :SceImeColor; + colorSpecial :SceImeColor; + priority :SceImePanelPriority; + additionalDictionaryPath:PChar; + extKeyboardFilter :SceImeExtKeyboardFilter; + disableDevice :DWORD; + extKeyboardMode :DWORD; + reserved :array[0..59] of ShortInt; + end; + var status_ime_dialog:Integer=SCE_IME_DIALOG_STATUS_NONE; -//function ps4_sceImeDialogInit(param:pSceImeDialogParam; -// extended:pSceImeParamExtended -// ):Integer; SysV_ABI_CDecl; -// -//nop nid:libSceImeDialog:354781ACDEE1CDFD:sceImeDialogInit +function ps4_sceImeDialogInit(const param:pSceImeDialogParam; + const extended:pSceImeParamExtended):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; function ps4_sceImeDialogGetStatus:Integer; SysV_ABI_CDecl; begin @@ -529,6 +590,11 @@ begin Result:=0; end; +function ps4_sceLoginDialogUpdateStatus():Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + // function ps4_sceHmdSetupDialogInitialize():Integer; SysV_ABI_CDecl; @@ -572,6 +638,23 @@ end; // +function ps4_sceWebBrowserDialogUpdateStatus():Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + +function ps4_sceWebBrowserDialogGetStatus():Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + +function ps4_sceWebBrowserDialogTerminate():Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + +// + function Load_libSceCommonDialog(Const name:RawByteString):TElf_node; var lib:PLIBRARY; @@ -676,6 +759,7 @@ begin lib^.set_proc($9A56067E6A84DDF4,@ps4_sceSigninDialogInitialize); lib^.set_proc($265A49568456BFB5,@ps4_sceSigninDialogOpen); lib^.set_proc($070DF59624C54F70,@ps4_sceSigninDialogUpdateStatus); + lib^.set_proc($9EA1BBAEA9D8C355,@ps4_sceSigninDialogGetResult); lib^.set_proc($2D79664BA3EF25D5,@ps4_sceSigninDialogTerminate); end; @@ -696,6 +780,7 @@ begin Result:=TElf_node.Create; Result.pFileName:=name; lib:=Result._add_lib('libSceImeDialog'); + lib^.set_proc($354781ACDEE1CDFD,@ps4_sceImeDialogInit); lib^.set_proc($2000E60F8B527016,@ps4_sceImeDialogGetStatus); end; @@ -707,6 +792,7 @@ begin Result.pFileName:=name; lib:=Result._add_lib('libSceLoginDialog'); lib^.set_proc($A8FFC4BD0465D877,@ps4_sceLoginDialogInitialize); + lib^.set_proc($DAB73E7A049F6F90,@ps4_sceLoginDialogUpdateStatus); end; function Load_libSceHmdSetupDialog(Const name:RawByteString):TElf_node; @@ -744,6 +830,19 @@ begin lib^.set_proc($F7E83D88EABEEE48,@ps4_sceInvitationDialogUpdateStatus); end; +function Load_libSceWebBrowserDialog(Const name:RawByteString):TElf_node; +var + lib:PLIBRARY; +begin + Result:=TElf_node.Create; + Result.pFileName:=name; + + lib:=Result._add_lib('libSceWebBrowserDialog'); + lib^.set_proc($875751FEDE484A08,@ps4_sceWebBrowserDialogUpdateStatus); + lib^.set_proc($0854C6E9AF138CE5,@ps4_sceWebBrowserDialogGetStatus); + lib^.set_proc($A1C1EDC81C077F2B,@ps4_sceWebBrowserDialogTerminate); +end; + initialization ps4_app.RegistredPreLoad('libSceCommonDialog.prx' ,@Load_libSceCommonDialog); ps4_app.RegistredPreLoad('libSceErrorDialog.prx' ,@Load_libSceErrorDialog); @@ -757,7 +856,8 @@ initialization ps4_app.RegistredPreLoad('libSceLoginDialog.prx' ,@Load_libSceLoginDialog); ps4_app.RegistredPreLoad('libSceHmdSetupDialog.prx' ,@Load_libSceHmdSetupDialog); ps4_app.RegistredPreLoad('libSceNpFriendListDialog.prx' ,@Load_libSceNpFriendListDialog); - ps4_app.RegistredPreLoad('libSceInvitationDialog.prx' ,@Load_libSceInvitationDialog); + ps4_app.RegistredPreLoad('libSceInvitationDialog.prx' ,@Load_libSceInvitationDialog); + ps4_app.RegistredPreLoad('libSceWebBrowserDialog.prx' ,@Load_libSceWebBrowserDialog); end. diff --git a/src/ps4_libscegnmdriver.pas b/src/ps4_libscegnmdriver.pas index a2e1cf7..639eb12 100644 --- a/src/ps4_libscegnmdriver.pas +++ b/src/ps4_libscegnmdriver.pas @@ -23,6 +23,7 @@ uses sys_kernel, ps4_queue, ps4_libkernel, + ps4_kernel_file, ps4_libSceVideoOut{, ps4_pssl}; const @@ -2105,6 +2106,12 @@ var ComputeEvents:array[0..6] of Thamt64locked; +procedure ps4_sceGnmDebugHardwareStatus(flag:DWORD); SysV_ABI_CDecl; +begin + if (flag<>0) then Exit; + //kmd_dump_status(g_gcHandle,0,0); +end; + function _sceGnmAddEqEvent(eq:SceKernelEqueue;id:Integer;udata:Pointer):Integer; var pEvents:Phamt64locked; @@ -2159,6 +2166,46 @@ begin _sig_unlock; end; +function _sceGnmDeleteEqEvent(eq:SceKernelEqueue;id:Integer):Integer; +var + pEvents:Phamt64locked; + P:PPointer; + node:PKEventNode; +begin + Writeln('sceGnmDeleteEqEvent:',id); + + Case id of + kEqEventCompute0RelMem..kEqEventCompute6RelMem + + :pEvents:=@ComputeEvents[id]; + kEqEventGfxEop :pEvents:=@EopEvents; + else + Exit(SCE_KERNEL_ERROR_EINVAL); + end; + + pEvents^.LockWr; + P:=HAMT_search64(@pEvents^.hamt,QWORD(eq)); + if (P<>nil) then + begin + node:=P^; + _free_kevent_node(node); + end else + begin + pEvents^.Unlock; + Exit(SCE_KERNEL_ERROR_ENOENT); + end; + pEvents^.Unlock; + + Result:=0; +end; + +function ps4_sceGnmDeleteEqEvent(eq:SceKernelEqueue;id:Integer):Integer; SysV_ABI_CDecl; +begin + _sig_lock; + Result:=_sceGnmDeleteEqEvent(eq,id); + _sig_unlock; +end; + procedure _on_trigger_eop(data,userdata:Pointer); var node:PKEventNode; @@ -2269,7 +2316,10 @@ begin lib^.set_proc($4CB5789ACC226780,@ps4_sceGnmDriverCaptureInProgress); + lib^.set_proc($AA91884F33C4F997,@ps4_sceGnmDebugHardwareStatus); + lib^.set_proc($6F4C729659D563F2,@ps4_sceGnmAddEqEvent); + lib^.set_proc($3D54FE7EEA12F605,@ps4_sceGnmDeleteEqEvent); lib^.set_proc($6F4F0082D3E51CF8,@ps4_sceGnmAreSubmitsAllowed); diff --git a/src/ps4_libsceime.pas b/src/ps4_libsceime.pas index a81a754..d793a22 100644 --- a/src/ps4_libsceime.pas +++ b/src/ps4_libsceime.pas @@ -595,10 +595,10 @@ type end; SceImeEditText=packed record - str:pWideChar; + str :pWideChar; caretIndex:DWORD; - areaNum:DWORD; - textArea:array[0..SCE_IME_MAX_TEXT_AREA-1] of SceImeTextAreaProperty; + areaNum :DWORD; + textArea :array[0..SCE_IME_MAX_TEXT_AREA-1] of SceImeTextAreaProperty; end; SceImePositionAndForm=packed record @@ -631,30 +631,30 @@ type pSceImeKeyboardInfo=^SceImeKeyboardInfo; SceImeKeyboardInfo=packed record - userId:Integer; - device:Integer; //SceImeKeyboardDeviceType - _type:Integer; //SceImeKeyboardType + userId :Integer; + device :Integer; //SceImeKeyboardDeviceType + _type :Integer; //SceImeKeyboardType repeatDelay:DWORD; repeatRate :DWORD; - status:Integer; //SceImeKeyboardStatus - reserved:array[0..11] of Byte; + status :Integer; //SceImeKeyboardStatus + reserved :array[0..11] of Byte; end; pSceImeKeyboardResourceIdArray=^SceImeKeyboardResourceIdArray; SceImeKeyboardResourceIdArray=packed record - userId:Integer; + userId :Integer; resourceId:array[0..SCE_IME_KEYBOARD_MAX_NUMBER-1] of DWORD; end; SceImeKeycode=packed record - keycode:Word; - character:WideChar; - status:DWORD; - _type:Integer; //SceImeKeyboardType - userId:Integer; + keycode :Word; + character :WideChar; + status :DWORD; + _type :Integer; //SceImeKeyboardType + userId :Integer; resourceId:DWORD; - _align:Integer; - timestamp:QWORD; //SceRtcTick + _align :Integer; + timestamp :QWORD; //SceRtcTick end; pSceImeEventParam=^SceImeEventParam; @@ -680,14 +680,51 @@ type param:SceImeEventParam; end; + pSceImeType=^SceImeType; + SceImeType=Integer; + + pSceImeEnterLabel=^SceImeEnterLabel; + SceImeEnterLabel=Integer; + + pSceImeInputMethod=^SceImeInputMethod; + SceImeInputMethod=Integer; + + pSceImeTextFilter=^SceImeTextFilter; + SceImeTextFilter=packed record + outText :PWideChar; + outTextLength:PDWORD; + srcText :PWideChar; + srcTextLength:DWORD; + end; + + pSceImeHorizontalAlignment=^SceImeHorizontalAlignment; + SceImeHorizontalAlignment=Integer; + + pSceImeVerticalAlignment=^SceImeVerticalAlignment; + SceImeVerticalAlignment=Integer; + + pSceImePanelPriority=^SceImePanelPriority; + SceImePanelPriority=Integer; + + pSceImeKeyboardType=^SceImeKeyboardType; + SceImeKeyboardType=Integer; + + pSceImeExtKeyboardFilter=^SceImeExtKeyboardFilter; + SceImeExtKeyboardFilter=packed record + srcKeycode:SceImeKeycode; + outKeycode:Word; + outStatus :PDWORD; + reserved :Pointer; + end; + SceImeEventHandler=procedure(arg:Pointer;e:pSceImeEvent); SysV_ABI_CDecl; pSceImeKeyboardParam=^SceImeKeyboardParam; SceImeKeyboardParam=packed record - option:DWORD; + option :DWORD; reserved1:DWORD; - arg:Pointer; - handler:SceImeEventHandler; + arg :Pointer; + handler :SceImeEventHandler; reserved2:QWORD; end; diff --git a/src/ps4_libscenet.pas b/src/ps4_libscenet.pas index b7f37f0..99709c8 100644 --- a/src/ps4_libscenet.pas +++ b/src/ps4_libscenet.pas @@ -467,6 +467,11 @@ begin Result:=0; end; +function ps4_sceNetBandwidthControlSetDefaultParam(param1:Pointer;param2:Integer):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + function ps4_sceNetCtlInit:Integer; SysV_ABI_CDecl; begin Result:=0; @@ -779,6 +784,7 @@ begin lib^.set_proc($3975D7E26524DEE9,@ps4_sceNetConnect); lib^.set_proc($76B8C86C36C0ED44,@ps4_sceNetEpollWait); lib^.set_proc($227A7595F2FE25DC,@ps4_sceNetEpollDestroy); + lib^.set_proc($3F8CD95C4EDBA6C0,@ps4_sceNetBandwidthControlSetDefaultParam); end; function Load_libSceNetCtl(Const name:RawByteString):TElf_node; diff --git a/src/ps4_libsceusbstorage.pas b/src/ps4_libsceusbstorage.pas new file mode 100644 index 0000000..65ab9fa --- /dev/null +++ b/src/ps4_libsceusbstorage.pas @@ -0,0 +1,35 @@ +unit ps4_libSceUsbStorage; + +{$mode ObjFPC}{$H+} + +interface + +uses + ps4_program, + Classes, + SysUtils, + sys_pthread; + +implementation + +function ps4_sceUsbStorageInit(pAttr:p_pthread_attr_t):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + +function Load_libSceUsbStorage(Const name:RawByteString):TElf_node; +var + lib:PLIBRARY; +begin + Result:=TElf_node.Create; + Result.pFileName:=name; + + lib:=Result._add_lib('libSceUsbStorage'); + lib^.set_proc($0430D9C05E64B937,@ps4_sceUsbStorageInit); +end; + +initialization + ps4_app.RegistredPreLoad('libSceUsbStorage.prx' ,@Load_libSceUsbStorage); + +end. + diff --git a/src/ps4_libscevideoout.pas b/src/ps4_libscevideoout.pas index 23bed09..749ca66 100644 --- a/src/ps4_libscevideoout.pas +++ b/src/ps4_libscevideoout.pas @@ -757,6 +757,15 @@ begin end; +function ps4_sceVideoOutAddDriver(driver_id:Integer; //driver id + cbs :Pointer; //cbs table + param_3 :PDWORD; + param_4 :QWORD):Pointer; SysV_ABI_CDecl; +begin + Assert(false,'TODO:abstract driver structure'); + Result:=nil; //need link to *t_driver structure +end; + function ps4_sceVideoOutAddFlipEvent(eq:SceKernelEqueue;hVideo:Integer;udata:Pointer):Integer; SysV_ABI_CDecl; var H:TVideoOut; @@ -2038,6 +2047,7 @@ begin lib^.set_proc($32DE101C793190E7,@ps4_sceVideoOutGetEventCount); lib^.set_proc($AD651370A7645334,@ps4_sceVideoOutGetEventData); lib^.set_proc($536249B52A8D2992,@ps4_sceVideoOutGetEventId); + lib^.set_proc($1EDC127781F64F0B,@ps4_sceVideoOutAddDriver); lib^.set_proc($1D7CE32BDC88DF49,@ps4_sceVideoOutAddFlipEvent); lib^.set_proc($5EBBBDDB01C94668,@ps4_sceVideoOutAddVblankEvent); lib^.set_proc($8BAFEC47DD56B7FE,@ps4_sceVideoOutSetBufferAttribute); diff --git a/src/ps4_libscevoice.pas b/src/ps4_libscevoice.pas index 8055e01..36496dd 100644 --- a/src/ps4_libscevoice.pas +++ b/src/ps4_libscevoice.pas @@ -176,6 +176,11 @@ begin Result:=0; end; +function ps4_sceVoiceResumePortAll():Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + function Load_libSceVoice(Const name:RawByteString):TElf_node; var lib:PLIBRARY; @@ -194,6 +199,7 @@ begin lib^.set_proc($710E831AC4048D5E,@ps4_sceVoiceReadFromOPort); lib^.set_proc($4011680088C9A174,@ps4_sceVoiceSetVolume); lib^.set_proc($8305329E41203456,@ps4_sceVoiceSetMuteFlag); + lib^.set_proc($8DB909166399F54D,@ps4_sceVoiceResumePortAll); end; function Load_libSceVoiceQoS(Const name:RawByteString):TElf_node; diff --git a/src/ps4_libscewebbrowserdialog.pas b/src/ps4_libscewebbrowserdialog.pas deleted file mode 100644 index 273ed96..0000000 --- a/src/ps4_libscewebbrowserdialog.pas +++ /dev/null @@ -1,53 +0,0 @@ -unit ps4_libSceWebBrowserDialog; - -{$mode ObjFPC}{$H+} - -interface - -uses - ps4_program, - Classes, - SysUtils; - -const - //SceCommonDialogStatus - SCE_COMMON_DIALOG_STATUS_NONE =0; - SCE_COMMON_DIALOG_STATUS_INITIALIZED=1; - SCE_COMMON_DIALOG_STATUS_RUNNING =2; - SCE_COMMON_DIALOG_STATUS_FINISHED =3; - -implementation - -function ps4_sceWebBrowserDialogUpdateStatus():Integer; SysV_ABI_CDecl; -begin - Result:=0; -end; - -function ps4_sceWebBrowserDialogGetStatus():Integer; SysV_ABI_CDecl; -begin - Result:=0; -end; - -function ps4_sceWebBrowserDialogTerminate():Integer; SysV_ABI_CDecl; -begin - Result:=0; -end; - -function Load_libSceWebBrowserDialog(Const name:RawByteString):TElf_node; -var - lib:PLIBRARY; -begin - Result:=TElf_node.Create; - Result.pFileName:=name; - - lib:=Result._add_lib('libSceWebBrowserDialog'); - lib^.set_proc($875751FEDE484A08,@ps4_sceWebBrowserDialogUpdateStatus); - lib^.set_proc($0854C6E9AF138CE5,@ps4_sceWebBrowserDialogGetStatus); - lib^.set_proc($A1C1EDC81C077F2B,@ps4_sceWebBrowserDialogTerminate); -end; - -initialization - ps4_app.RegistredPreLoad('libSceWebBrowserDialog.prx',@Load_libSceWebBrowserDialog); - -end. -