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 <vdpasha@mail.ru>
This commit is contained in:
Ordinary205 2024-04-02 22:54:03 +04:00 committed by GitHub
parent b9eab2c9d4
commit 72a5a16616
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 366 additions and 80 deletions

View File

@ -69,12 +69,12 @@ uses
ps4_libSceShareUtility, ps4_libSceShareUtility,
ps4_libSceSocialScreen, ps4_libSceSocialScreen,
ps4_libSceVideoRecording, ps4_libSceVideoRecording,
ps4_libSceWebBrowserDialog,
ps4_libSceCompanionHttpd, ps4_libSceCompanionHttpd,
ps4_libSceCompanionUtil, ps4_libSceCompanionUtil,
ps4_libSceContentExport, ps4_libSceContentExport,
ps4_libSceConvertKeycode, ps4_libSceConvertKeycode,
ps4_libSceUsbd, ps4_libSceUsbd,
ps4_libSceUsbStorage,
ps4_libSceAudiodecCpu, ps4_libSceAudiodecCpu,
ps4_libSceDepth, ps4_libSceDepth,
ps4_libSceNpTus, ps4_libSceNpTus,

View File

@ -305,6 +305,11 @@ begin
if not FAjmMap.Delete(uiContext) then Result:=SCE_AJM_ERROR_INVALID_CONTEXT; if not FAjmMap.Delete(uiContext) then Result:=SCE_AJM_ERROR_INVALID_CONTEXT;
end; end;
function ps4_sceAjmInstanceCodecType(uiCodec:SceAjmCodecType):Integer; SysV_ABI_CDecl;
begin
Result:=uiCodec shr $E;
end;
function ps4_sceAjmInstanceCreate(uiContext:SceAjmContextId; function ps4_sceAjmInstanceCreate(uiContext:SceAjmContextId;
uiCodec:SceAjmCodecType; uiCodec:SceAjmCodecType;
uiFlags:QWORD; uiFlags:QWORD;
@ -391,6 +396,19 @@ begin
end; 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( function ps4_sceAjmBatchJobRunBufferRa(
pBatchPosition:Pointer; pBatchPosition:Pointer;
uiInstance:SceAjmInstanceId; uiInstance:SceAjmInstanceId;
@ -477,9 +495,11 @@ begin
lib^.set_proc($43777216EC069FAE,@ps4_sceAjmModuleRegister); lib^.set_proc($43777216EC069FAE,@ps4_sceAjmModuleRegister);
lib^.set_proc($5A2EC3B652D5F8A2,@ps4_sceAjmModuleUnregister); lib^.set_proc($5A2EC3B652D5F8A2,@ps4_sceAjmModuleUnregister);
lib^.set_proc($307BABEAA0AC52EB,@ps4_sceAjmFinalize); lib^.set_proc($307BABEAA0AC52EB,@ps4_sceAjmFinalize);
lib^.set_proc($7625E340D88CBBFB,@ps4_sceAjmInstanceCodecType);
lib^.set_proc($031A03AC8369E09F,@ps4_sceAjmInstanceCreate); lib^.set_proc($031A03AC8369E09F,@ps4_sceAjmInstanceCreate);
lib^.set_proc($45B2DBB8ABFCCE1A,@ps4_sceAjmInstanceDestroy); lib^.set_proc($45B2DBB8ABFCCE1A,@ps4_sceAjmInstanceDestroy);
lib^.set_proc($7660F26CDFFF167F,@ps4_sceAjmBatchJobControlBufferRa); lib^.set_proc($7660F26CDFFF167F,@ps4_sceAjmBatchJobControlBufferRa);
lib^.set_proc($B2D96086789CDC97,@ps4_sceAjmBatchJobInlineBuffer);
lib^.set_proc($125B25382A4E227B,@ps4_sceAjmBatchJobRunBufferRa); lib^.set_proc($125B25382A4E227B,@ps4_sceAjmBatchJobRunBufferRa);
lib^.set_proc($EE37405CAFB67CCA,@ps4_sceAjmBatchJobRunSplitBufferRa); lib^.set_proc($EE37405CAFB67CCA,@ps4_sceAjmBatchJobRunSplitBufferRa);
lib^.set_proc($7C5164934C5F196B,@ps4_sceAjmBatchStartBuffer); lib^.set_proc($7C5164934C5F196B,@ps4_sceAjmBatchStartBuffer);

View File

@ -61,6 +61,13 @@ begin
Result:=0; Result:=0;
end; 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; function Load_libSceNpSignaling(Const name:RawByteString):TElf_node;
var var
lib:PLIBRARY; lib:PLIBRARY;
@ -73,6 +80,7 @@ begin
lib^.set_proc($E7262311D778B7C6,@ps4_sceNpSignalingCreateContext); lib^.set_proc($E7262311D778B7C6,@ps4_sceNpSignalingCreateContext);
lib^.set_proc($7432CD15D63C770B,@ps4_sceNpSignalingCreateContextA); lib^.set_proc($7432CD15D63C770B,@ps4_sceNpSignalingCreateContextA);
lib^.set_proc($53C01032538505CF,@ps4_sceNpSignalingGetLocalNetInfo); lib^.set_proc($53C01032538505CF,@ps4_sceNpSignalingGetLocalNetInfo);
lib^.set_proc($207443BD9A1D3D86,@ps4_sceNpSignalingSetContextOption);
end; end;
initialization initialization

View File

@ -272,6 +272,18 @@ type
responseDataSize:QWORD; responseDataSize:QWORD;
end; 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 const
SCE_NP_WEBAPI2_PUSH_EVENT_UUID_LENGTH=36; SCE_NP_WEBAPI2_PUSH_EVENT_UUID_LENGTH=36;
@ -325,6 +337,28 @@ begin
Result:=0; Result:=0;
end; 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 //NpWebApi2
function Load_libSceNpWebApi(Const name:RawByteString):TElf_node; function Load_libSceNpWebApi(Const name:RawByteString):TElf_node;
@ -374,7 +408,10 @@ begin
lib^.set_proc($95038217CE25BF3C,@ps4_sceNpWebApi2SendRequest); lib^.set_proc($95038217CE25BF3C,@ps4_sceNpWebApi2SendRequest);
lib^.set_proc($B24E786E2E85B583,@ps4_sceNpWebApi2CreateUserContext); lib^.set_proc($B24E786E2E85B583,@ps4_sceNpWebApi2CreateUserContext);
lib^.set_proc($41A7F179933758AE,@ps4_sceNpWebApi2PushEventDeletePushContext); 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; end;
initialization initialization

View File

@ -7,6 +7,20 @@ interface
uses uses
ps4_program; 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 implementation
function ps4_sceSslInit(poolSize:size_t):Integer; SysV_ABI_CDecl; function ps4_sceSslInit(poolSize:size_t):Integer; SysV_ABI_CDecl;
@ -21,6 +35,20 @@ begin
Result:=0; Result:=0;
end; 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; function Load_libSceSsl(Const name:RawByteString):TElf_node;
var var
lib:PLIBRARY; lib:PLIBRARY;
@ -32,6 +60,8 @@ begin
lib^.set_proc($85DA551140C55B7B,@ps4_sceSslInit); lib^.set_proc($85DA551140C55B7B,@ps4_sceSslInit);
lib^.set_proc($D0AD7243A2EFFD87,@ps4_sceSslTerm); lib^.set_proc($D0AD7243A2EFFD87,@ps4_sceSslTerm);
lib^.set_proc($4C37D0A8EFE031B6,@ps4_sceSslGetCaCerts);
lib^.set_proc($A88BCBB34818C62D,@ps4_sceSslFreeCaCerts);
end; end;
initialization initialization

View File

@ -8,6 +8,7 @@ uses
ps4_program, ps4_program,
Classes, Classes,
SysUtils, SysUtils,
ps4_libSceIme,
ps4_libSceSaveData; ps4_libSceSaveData;
implementation implementation
@ -458,6 +459,20 @@ const
SCE_SIGNIN_DIALOG_STATUS_RUNNING =2; SCE_SIGNIN_DIALOG_STATUS_RUNNING =2;
SCE_SIGNIN_DIALOG_STATUS_FINISHED =3; 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 var
status_signin_dialog:Integer=SCE_SIGNIN_DIALOG_STATUS_NONE; status_signin_dialog:Integer=SCE_SIGNIN_DIALOG_STATUS_NONE;
@ -468,6 +483,11 @@ begin
Result:=0; Result:=0;
end; end;
function ps4_sceSigninDialogGetResult(_result:pSceSigninDialogResult):Integer; SysV_ABI_CDecl;
begin
Result:=0;
end;
function ps4_sceSigninDialogTerminate():Integer; SysV_ABI_CDecl; function ps4_sceSigninDialogTerminate():Integer; SysV_ABI_CDecl;
begin begin
Writeln('sceSigninDialogTerminate'); Writeln('sceSigninDialogTerminate');
@ -508,14 +528,55 @@ const
SCE_IME_DIALOG_STATUS_RUNNING =1; SCE_IME_DIALOG_STATUS_RUNNING =1;
SCE_IME_DIALOG_STATUS_FINISHED=2; 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 var
status_ime_dialog:Integer=SCE_IME_DIALOG_STATUS_NONE; status_ime_dialog:Integer=SCE_IME_DIALOG_STATUS_NONE;
//function ps4_sceImeDialogInit(param:pSceImeDialogParam; function ps4_sceImeDialogInit(const param:pSceImeDialogParam;
// extended:pSceImeParamExtended const extended:pSceImeParamExtended):Integer; SysV_ABI_CDecl;
// ):Integer; SysV_ABI_CDecl; begin
// Result:=0;
//nop nid:libSceImeDialog:354781ACDEE1CDFD:sceImeDialogInit end;
function ps4_sceImeDialogGetStatus:Integer; SysV_ABI_CDecl; function ps4_sceImeDialogGetStatus:Integer; SysV_ABI_CDecl;
begin begin
@ -529,6 +590,11 @@ begin
Result:=0; Result:=0;
end; end;
function ps4_sceLoginDialogUpdateStatus():Integer; SysV_ABI_CDecl;
begin
Result:=0;
end;
// //
function ps4_sceHmdSetupDialogInitialize():Integer; SysV_ABI_CDecl; 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; function Load_libSceCommonDialog(Const name:RawByteString):TElf_node;
var var
lib:PLIBRARY; lib:PLIBRARY;
@ -676,6 +759,7 @@ begin
lib^.set_proc($9A56067E6A84DDF4,@ps4_sceSigninDialogInitialize); lib^.set_proc($9A56067E6A84DDF4,@ps4_sceSigninDialogInitialize);
lib^.set_proc($265A49568456BFB5,@ps4_sceSigninDialogOpen); lib^.set_proc($265A49568456BFB5,@ps4_sceSigninDialogOpen);
lib^.set_proc($070DF59624C54F70,@ps4_sceSigninDialogUpdateStatus); lib^.set_proc($070DF59624C54F70,@ps4_sceSigninDialogUpdateStatus);
lib^.set_proc($9EA1BBAEA9D8C355,@ps4_sceSigninDialogGetResult);
lib^.set_proc($2D79664BA3EF25D5,@ps4_sceSigninDialogTerminate); lib^.set_proc($2D79664BA3EF25D5,@ps4_sceSigninDialogTerminate);
end; end;
@ -696,6 +780,7 @@ begin
Result:=TElf_node.Create; Result:=TElf_node.Create;
Result.pFileName:=name; Result.pFileName:=name;
lib:=Result._add_lib('libSceImeDialog'); lib:=Result._add_lib('libSceImeDialog');
lib^.set_proc($354781ACDEE1CDFD,@ps4_sceImeDialogInit);
lib^.set_proc($2000E60F8B527016,@ps4_sceImeDialogGetStatus); lib^.set_proc($2000E60F8B527016,@ps4_sceImeDialogGetStatus);
end; end;
@ -707,6 +792,7 @@ begin
Result.pFileName:=name; Result.pFileName:=name;
lib:=Result._add_lib('libSceLoginDialog'); lib:=Result._add_lib('libSceLoginDialog');
lib^.set_proc($A8FFC4BD0465D877,@ps4_sceLoginDialogInitialize); lib^.set_proc($A8FFC4BD0465D877,@ps4_sceLoginDialogInitialize);
lib^.set_proc($DAB73E7A049F6F90,@ps4_sceLoginDialogUpdateStatus);
end; end;
function Load_libSceHmdSetupDialog(Const name:RawByteString):TElf_node; function Load_libSceHmdSetupDialog(Const name:RawByteString):TElf_node;
@ -744,6 +830,19 @@ begin
lib^.set_proc($F7E83D88EABEEE48,@ps4_sceInvitationDialogUpdateStatus); lib^.set_proc($F7E83D88EABEEE48,@ps4_sceInvitationDialogUpdateStatus);
end; 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 initialization
ps4_app.RegistredPreLoad('libSceCommonDialog.prx' ,@Load_libSceCommonDialog); ps4_app.RegistredPreLoad('libSceCommonDialog.prx' ,@Load_libSceCommonDialog);
ps4_app.RegistredPreLoad('libSceErrorDialog.prx' ,@Load_libSceErrorDialog); ps4_app.RegistredPreLoad('libSceErrorDialog.prx' ,@Load_libSceErrorDialog);
@ -757,7 +856,8 @@ initialization
ps4_app.RegistredPreLoad('libSceLoginDialog.prx' ,@Load_libSceLoginDialog); ps4_app.RegistredPreLoad('libSceLoginDialog.prx' ,@Load_libSceLoginDialog);
ps4_app.RegistredPreLoad('libSceHmdSetupDialog.prx' ,@Load_libSceHmdSetupDialog); ps4_app.RegistredPreLoad('libSceHmdSetupDialog.prx' ,@Load_libSceHmdSetupDialog);
ps4_app.RegistredPreLoad('libSceNpFriendListDialog.prx' ,@Load_libSceNpFriendListDialog); 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. end.

View File

@ -23,6 +23,7 @@ uses
sys_kernel, sys_kernel,
ps4_queue, ps4_queue,
ps4_libkernel, ps4_libkernel,
ps4_kernel_file,
ps4_libSceVideoOut{, ps4_pssl}; ps4_libSceVideoOut{, ps4_pssl};
const const
@ -2105,6 +2106,12 @@ var
ComputeEvents:array[0..6] of Thamt64locked; 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; function _sceGnmAddEqEvent(eq:SceKernelEqueue;id:Integer;udata:Pointer):Integer;
var var
pEvents:Phamt64locked; pEvents:Phamt64locked;
@ -2159,6 +2166,46 @@ begin
_sig_unlock; _sig_unlock;
end; 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); procedure _on_trigger_eop(data,userdata:Pointer);
var var
node:PKEventNode; node:PKEventNode;
@ -2269,7 +2316,10 @@ begin
lib^.set_proc($4CB5789ACC226780,@ps4_sceGnmDriverCaptureInProgress); lib^.set_proc($4CB5789ACC226780,@ps4_sceGnmDriverCaptureInProgress);
lib^.set_proc($AA91884F33C4F997,@ps4_sceGnmDebugHardwareStatus);
lib^.set_proc($6F4C729659D563F2,@ps4_sceGnmAddEqEvent); lib^.set_proc($6F4C729659D563F2,@ps4_sceGnmAddEqEvent);
lib^.set_proc($3D54FE7EEA12F605,@ps4_sceGnmDeleteEqEvent);
lib^.set_proc($6F4F0082D3E51CF8,@ps4_sceGnmAreSubmitsAllowed); lib^.set_proc($6F4F0082D3E51CF8,@ps4_sceGnmAreSubmitsAllowed);

View File

@ -595,10 +595,10 @@ type
end; end;
SceImeEditText=packed record SceImeEditText=packed record
str:pWideChar; str :pWideChar;
caretIndex:DWORD; caretIndex:DWORD;
areaNum:DWORD; areaNum :DWORD;
textArea:array[0..SCE_IME_MAX_TEXT_AREA-1] of SceImeTextAreaProperty; textArea :array[0..SCE_IME_MAX_TEXT_AREA-1] of SceImeTextAreaProperty;
end; end;
SceImePositionAndForm=packed record SceImePositionAndForm=packed record
@ -631,30 +631,30 @@ type
pSceImeKeyboardInfo=^SceImeKeyboardInfo; pSceImeKeyboardInfo=^SceImeKeyboardInfo;
SceImeKeyboardInfo=packed record SceImeKeyboardInfo=packed record
userId:Integer; userId :Integer;
device:Integer; //SceImeKeyboardDeviceType device :Integer; //SceImeKeyboardDeviceType
_type:Integer; //SceImeKeyboardType _type :Integer; //SceImeKeyboardType
repeatDelay:DWORD; repeatDelay:DWORD;
repeatRate :DWORD; repeatRate :DWORD;
status:Integer; //SceImeKeyboardStatus status :Integer; //SceImeKeyboardStatus
reserved:array[0..11] of Byte; reserved :array[0..11] of Byte;
end; end;
pSceImeKeyboardResourceIdArray=^SceImeKeyboardResourceIdArray; pSceImeKeyboardResourceIdArray=^SceImeKeyboardResourceIdArray;
SceImeKeyboardResourceIdArray=packed record SceImeKeyboardResourceIdArray=packed record
userId:Integer; userId :Integer;
resourceId:array[0..SCE_IME_KEYBOARD_MAX_NUMBER-1] of DWORD; resourceId:array[0..SCE_IME_KEYBOARD_MAX_NUMBER-1] of DWORD;
end; end;
SceImeKeycode=packed record SceImeKeycode=packed record
keycode:Word; keycode :Word;
character:WideChar; character :WideChar;
status:DWORD; status :DWORD;
_type:Integer; //SceImeKeyboardType _type :Integer; //SceImeKeyboardType
userId:Integer; userId :Integer;
resourceId:DWORD; resourceId:DWORD;
_align:Integer; _align :Integer;
timestamp:QWORD; //SceRtcTick timestamp :QWORD; //SceRtcTick
end; end;
pSceImeEventParam=^SceImeEventParam; pSceImeEventParam=^SceImeEventParam;
@ -680,14 +680,51 @@ type
param:SceImeEventParam; param:SceImeEventParam;
end; 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; SceImeEventHandler=procedure(arg:Pointer;e:pSceImeEvent); SysV_ABI_CDecl;
pSceImeKeyboardParam=^SceImeKeyboardParam; pSceImeKeyboardParam=^SceImeKeyboardParam;
SceImeKeyboardParam=packed record SceImeKeyboardParam=packed record
option:DWORD; option :DWORD;
reserved1:DWORD; reserved1:DWORD;
arg:Pointer; arg :Pointer;
handler:SceImeEventHandler; handler :SceImeEventHandler;
reserved2:QWORD; reserved2:QWORD;
end; end;

View File

@ -467,6 +467,11 @@ begin
Result:=0; Result:=0;
end; end;
function ps4_sceNetBandwidthControlSetDefaultParam(param1:Pointer;param2:Integer):Integer; SysV_ABI_CDecl;
begin
Result:=0;
end;
function ps4_sceNetCtlInit:Integer; SysV_ABI_CDecl; function ps4_sceNetCtlInit:Integer; SysV_ABI_CDecl;
begin begin
Result:=0; Result:=0;
@ -779,6 +784,7 @@ begin
lib^.set_proc($3975D7E26524DEE9,@ps4_sceNetConnect); lib^.set_proc($3975D7E26524DEE9,@ps4_sceNetConnect);
lib^.set_proc($76B8C86C36C0ED44,@ps4_sceNetEpollWait); lib^.set_proc($76B8C86C36C0ED44,@ps4_sceNetEpollWait);
lib^.set_proc($227A7595F2FE25DC,@ps4_sceNetEpollDestroy); lib^.set_proc($227A7595F2FE25DC,@ps4_sceNetEpollDestroy);
lib^.set_proc($3F8CD95C4EDBA6C0,@ps4_sceNetBandwidthControlSetDefaultParam);
end; end;
function Load_libSceNetCtl(Const name:RawByteString):TElf_node; function Load_libSceNetCtl(Const name:RawByteString):TElf_node;

View File

@ -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.

View File

@ -757,6 +757,15 @@ begin
end; 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; function ps4_sceVideoOutAddFlipEvent(eq:SceKernelEqueue;hVideo:Integer;udata:Pointer):Integer; SysV_ABI_CDecl;
var var
H:TVideoOut; H:TVideoOut;
@ -2038,6 +2047,7 @@ begin
lib^.set_proc($32DE101C793190E7,@ps4_sceVideoOutGetEventCount); lib^.set_proc($32DE101C793190E7,@ps4_sceVideoOutGetEventCount);
lib^.set_proc($AD651370A7645334,@ps4_sceVideoOutGetEventData); lib^.set_proc($AD651370A7645334,@ps4_sceVideoOutGetEventData);
lib^.set_proc($536249B52A8D2992,@ps4_sceVideoOutGetEventId); lib^.set_proc($536249B52A8D2992,@ps4_sceVideoOutGetEventId);
lib^.set_proc($1EDC127781F64F0B,@ps4_sceVideoOutAddDriver);
lib^.set_proc($1D7CE32BDC88DF49,@ps4_sceVideoOutAddFlipEvent); lib^.set_proc($1D7CE32BDC88DF49,@ps4_sceVideoOutAddFlipEvent);
lib^.set_proc($5EBBBDDB01C94668,@ps4_sceVideoOutAddVblankEvent); lib^.set_proc($5EBBBDDB01C94668,@ps4_sceVideoOutAddVblankEvent);
lib^.set_proc($8BAFEC47DD56B7FE,@ps4_sceVideoOutSetBufferAttribute); lib^.set_proc($8BAFEC47DD56B7FE,@ps4_sceVideoOutSetBufferAttribute);

View File

@ -176,6 +176,11 @@ begin
Result:=0; Result:=0;
end; end;
function ps4_sceVoiceResumePortAll():Integer; SysV_ABI_CDecl;
begin
Result:=0;
end;
function Load_libSceVoice(Const name:RawByteString):TElf_node; function Load_libSceVoice(Const name:RawByteString):TElf_node;
var var
lib:PLIBRARY; lib:PLIBRARY;
@ -194,6 +199,7 @@ begin
lib^.set_proc($710E831AC4048D5E,@ps4_sceVoiceReadFromOPort); lib^.set_proc($710E831AC4048D5E,@ps4_sceVoiceReadFromOPort);
lib^.set_proc($4011680088C9A174,@ps4_sceVoiceSetVolume); lib^.set_proc($4011680088C9A174,@ps4_sceVoiceSetVolume);
lib^.set_proc($8305329E41203456,@ps4_sceVoiceSetMuteFlag); lib^.set_proc($8305329E41203456,@ps4_sceVoiceSetMuteFlag);
lib^.set_proc($8DB909166399F54D,@ps4_sceVoiceResumePortAll);
end; end;
function Load_libSceVoiceQoS(Const name:RawByteString):TElf_node; function Load_libSceVoiceQoS(Const name:RawByteString):TElf_node;

View File

@ -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.