diff --git a/fpPS4.lpr b/fpPS4.lpr index dc774f93..af0cacf1 100644 --- a/fpPS4.lpr +++ b/fpPS4.lpr @@ -13,6 +13,9 @@ uses sys_types, sys_pthread, ps4libdoc, + //ps4_libSceRtc + ps4_libSceNpSignaling, + ps4_libSceNpMatching2, ps4_libSceRemoteplay, ps4_libSceAjm, ps4_libSceMouse, @@ -30,7 +33,7 @@ uses ps4_libSceSaveData, ps4_libSceDialogs, ps4_libSceUserService, - ps4_libsceaudioout, + ps4_libSceAudioOut, ps4_libSceVideoOut, ps4_libScePad, ps4_libkernel, @@ -268,6 +271,9 @@ begin begin //Case Info^.lib^.strName of + // 'libSceGnmDriver':; + // 'libSceAjm':; + // 'libSceAudioOut':; // 'libc':; // 'libSceLibcInternal':; // else @@ -286,8 +292,8 @@ begin // 'sceKernelClockGettime':; // 'pthread_mutex_lock':; // 'pthread_mutex_unlock':; - // //'sceKernelPread':; - // //'sceKernelClose':; + // 'sceKernelPread':; + // 'sceKernelClose':; // 'sceDiscMapIsRequestOnHDD':; // 'Unknow':; // 'sceFiosIOFilterPsarcDearchiver':; @@ -301,10 +307,11 @@ begin // 'scePthreadRwlockUnlock':; // 'scePthreadCondBroadcast':; // 'sceFiosFHCloseSync':; - // //'sceKernelStat':; + // 'sceKernelStat':; // 'sceFiosFHOpenSync':; // 'sceFiosFHGetSize':; - // //'sceKernelOpen':; + // 'sceKernelOpen':; + // 'sceKernelUsleep':; // '_write':; // else // begin @@ -531,6 +538,9 @@ begin //ps4_app.app_path:='G:\Games\Untitled Goose Game\CUSA23079\'; //ps4_app.app_file:='G:\Games\Untitled Goose Game\CUSA23079\eboot.bin'; + //ps4_app.app_path:='C:\Users\User\Desktop\Games\JETPACKJOYRIDE\CUSA03633\'; + //ps4_app.app_file:='C:\Users\User\Desktop\Games\JETPACKJOYRIDE\CUSA03633\eboot.bin'; + //elf:=Telf_file(LoadPs4ElfFromFile('libSceLibcInternal.sprx')); //elf.Prepare; //elf.SavePs4ElfToFile('libSceLibcInternal.prx'); diff --git a/ps4_libkernel/libsysmodule.inc b/ps4_libkernel/libsysmodule.inc index 6580a378..1ac61ce9 100644 --- a/ps4_libkernel/libsysmodule.inc +++ b/ps4_libkernel/libsysmodule.inc @@ -145,4 +145,107 @@ const SCE_SYSMODULE_ERROR_FATAL =-2141581057; // 0x805A10FF SCE_SYSMODULE_LOADED =0; +function GetSysmoduleName(id:Word):RawByteString; +begin + Case id of + SCE_SYSMODULE_FIBER :Result:='SCE_SYSMODULE_FIBER'; + SCE_SYSMODULE_ULT :Result:='SCE_SYSMODULE_ULT'; + SCE_SYSMODULE_NGS2 :Result:='SCE_SYSMODULE_NGS2'; + SCE_SYSMODULE_XML :Result:='SCE_SYSMODULE_XML'; + SCE_SYSMODULE_NP_UTILITY :Result:='SCE_SYSMODULE_NP_UTILITY'; + SCE_SYSMODULE_VOICE :Result:='SCE_SYSMODULE_VOICE'; + SCE_SYSMODULE_VOICEQOS :Result:='SCE_SYSMODULE_VOICEQOS'; + SCE_SYSMODULE_NP_MATCHING2 :Result:='SCE_SYSMODULE_NP_MATCHING2'; + SCE_SYSMODULE_NP_SCORE_RANKING :Result:='SCE_SYSMODULE_NP_SCORE_RANKING'; + SCE_SYSMODULE_RUDP :Result:='SCE_SYSMODULE_RUDP'; + SCE_SYSMODULE_NP_TUS :Result:='SCE_SYSMODULE_NP_TUS'; + SCE_SYSMODULE_FACE :Result:='SCE_SYSMODULE_FACE'; + SCE_SYSMODULE_SMART :Result:='SCE_SYSMODULE_SMART'; + SCE_SYSMODULE_GAME_LIVE_STREAMING :Result:='SCE_SYSMODULE_GAME_LIVE_STREAMING'; + SCE_SYSMODULE_COMPANION_UTIL :Result:='SCE_SYSMODULE_COMPANION_UTIL'; + SCE_SYSMODULE_PLAYGO :Result:='SCE_SYSMODULE_PLAYGO'; + SCE_SYSMODULE_FONT :Result:='SCE_SYSMODULE_FONT'; + SCE_SYSMODULE_VIDEO_RECORDING :Result:='SCE_SYSMODULE_VIDEO_RECORDING'; + SCE_SYSMODULE_S3DCONVERSION :Result:='SCE_SYSMODULE_S3DCONVERSION'; + SCE_SYSMODULE_AUDIODEC :Result:='SCE_SYSMODULE_AUDIODEC'; + SCE_SYSMODULE_JPEG_DEC :Result:='SCE_SYSMODULE_JPEG_DEC'; + SCE_SYSMODULE_JPEG_ENC :Result:='SCE_SYSMODULE_JPEG_ENC'; + SCE_SYSMODULE_PNG_DEC :Result:='SCE_SYSMODULE_PNG_DEC'; + SCE_SYSMODULE_PNG_ENC :Result:='SCE_SYSMODULE_PNG_ENC'; + SCE_SYSMODULE_VIDEODEC :Result:='SCE_SYSMODULE_VIDEODEC'; + SCE_SYSMODULE_MOVE :Result:='SCE_SYSMODULE_MOVE'; + SCE_SYSMODULE_PAD_TRACKER :Result:='SCE_SYSMODULE_PAD_TRACKER'; + SCE_SYSMODULE_DEPTH :Result:='SCE_SYSMODULE_DEPTH'; + SCE_SYSMODULE_HAND :Result:='SCE_SYSMODULE_HAND'; + SCE_SYSMODULE_LIBIME :Result:='SCE_SYSMODULE_LIBIME'; + SCE_SYSMODULE_IME_DIALOG :Result:='SCE_SYSMODULE_IME_DIALOG'; + SCE_SYSMODULE_NP_PARTY :Result:='SCE_SYSMODULE_NP_PARTY'; + SCE_SYSMODULE_FONT_FT :Result:='SCE_SYSMODULE_FONT_FT'; + SCE_SYSMODULE_FREETYPE_OT :Result:='SCE_SYSMODULE_FREETYPE_OT'; + SCE_SYSMODULE_FREETYPE_OL :Result:='SCE_SYSMODULE_FREETYPE_OL'; + SCE_SYSMODULE_FREETYPE_OPT_OL :Result:='SCE_SYSMODULE_FREETYPE_OPT_OL'; + SCE_SYSMODULE_SCREEN_SHOT :Result:='SCE_SYSMODULE_SCREEN_SHOT'; + SCE_SYSMODULE_NP_AUTH :Result:='SCE_SYSMODULE_NP_AUTH'; + SCE_SYSMODULE_SULPHA :Result:='SCE_SYSMODULE_SULPHA'; + SCE_SYSMODULE_SAVE_DATA_DIALOG :Result:='SCE_SYSMODULE_SAVE_DATA_DIALOG'; + SCE_SYSMODULE_INVITATION_DIALOG :Result:='SCE_SYSMODULE_INVITATION_DIALOG'; + SCE_SYSMODULE_DEBUG_KEYBOARD :Result:='SCE_SYSMODULE_DEBUG_KEYBOARD'; + SCE_SYSMODULE_MESSAGE_DIALOG :Result:='SCE_SYSMODULE_MESSAGE_DIALOG'; + SCE_SYSMODULE_AV_PLAYER :Result:='SCE_SYSMODULE_AV_PLAYER'; + SCE_SYSMODULE_CONTENT_EXPORT :Result:='SCE_SYSMODULE_CONTENT_EXPORT'; + SCE_SYSMODULE_AUDIO_3D :Result:='SCE_SYSMODULE_AUDIO_3D'; + SCE_SYSMODULE_NP_COMMERCE :Result:='SCE_SYSMODULE_NP_COMMERCE'; + SCE_SYSMODULE_MOUSE :Result:='SCE_SYSMODULE_MOUSE'; + SCE_SYSMODULE_COMPANION_HTTPD :Result:='SCE_SYSMODULE_COMPANION_HTTPD'; + SCE_SYSMODULE_WEB_BROWSER_DIALOG :Result:='SCE_SYSMODULE_WEB_BROWSER_DIALOG'; + SCE_SYSMODULE_ERROR_DIALOG :Result:='SCE_SYSMODULE_ERROR_DIALOG'; + SCE_SYSMODULE_NP_TROPHY :Result:='SCE_SYSMODULE_NP_TROPHY'; + SCE_SYSMODULE_NP_SNS_FACEBOOK :Result:='SCE_SYSMODULE_NP_SNS_FACEBOOK'; + SCE_SYSMODULE_MOVE_TRACKER :Result:='SCE_SYSMODULE_MOVE_TRACKER'; + SCE_SYSMODULE_NP_PROFILE_DIALOG :Result:='SCE_SYSMODULE_NP_PROFILE_DIALOG'; + SCE_SYSMODULE_NP_FRIEND_LIST_DIALOG :Result:='SCE_SYSMODULE_NP_FRIEND_LIST_DIALOG'; + SCE_SYSMODULE_APP_CONTENT :Result:='SCE_SYSMODULE_APP_CONTENT'; + SCE_SYSMODULE_NP_SIGNALING :Result:='SCE_SYSMODULE_NP_SIGNALING'; + SCE_SYSMODULE_REMOTE_PLAY :Result:='SCE_SYSMODULE_REMOTE_PLAY'; + SCE_SYSMODULE_USBD :Result:='SCE_SYSMODULE_USBD'; + SCE_SYSMODULE_GAME_CUSTOM_DATA_DIALOG :Result:='SCE_SYSMODULE_GAME_CUSTOM_DATA_DIALOG'; + SCE_SYSMODULE_M4AAC_ENC :Result:='SCE_SYSMODULE_M4AAC_ENC'; + SCE_SYSMODULE_AUDIODEC_CPU :Result:='SCE_SYSMODULE_AUDIODEC_CPU'; + SCE_SYSMODULE_ZLIB :Result:='SCE_SYSMODULE_ZLIB'; + SCE_SYSMODULE_CONTENT_SEARCH :Result:='SCE_SYSMODULE_CONTENT_SEARCH'; + SCE_SYSMODULE_DECI4H :Result:='SCE_SYSMODULE_DECI4H'; + SCE_SYSMODULE_HEAD_TRACKER :Result:='SCE_SYSMODULE_HEAD_TRACKER'; + SCE_SYSMODULE_SYSTEM_GESTURE :Result:='SCE_SYSMODULE_SYSTEM_GESTURE'; + SCE_SYSMODULE_VIDEODEC2 :Result:='SCE_SYSMODULE_VIDEODEC2'; + SCE_SYSMODULE_AT9_ENC :Result:='SCE_SYSMODULE_AT9_ENC'; + SCE_SYSMODULE_CONVERT_KEYCODE :Result:='SCE_SYSMODULE_CONVERT_KEYCODE'; + SCE_SYSMODULE_SHARE_PLAY :Result:='SCE_SYSMODULE_SHARE_PLAY'; + SCE_SYSMODULE_HMD :Result:='SCE_SYSMODULE_HMD'; + SCE_SYSMODULE_FACE_TRACKER :Result:='SCE_SYSMODULE_FACE_TRACKER'; + SCE_SYSMODULE_HAND_TRACKER :Result:='SCE_SYSMODULE_HAND_TRACKER'; + SCE_SYSMODULE_AUDIODEC_CPU_HEVAG :Result:='SCE_SYSMODULE_AUDIODEC_CPU_HEVAG'; + SCE_SYSMODULE_LOGIN_DIALOG :Result:='SCE_SYSMODULE_LOGIN_DIALOG'; + SCE_SYSMODULE_LOGIN_SERVICE :Result:='SCE_SYSMODULE_LOGIN_SERVICE'; + SCE_SYSMODULE_SIGNIN_DIALOG :Result:='SCE_SYSMODULE_SIGNIN_DIALOG'; + SCE_SYSMODULE_JSON2 :Result:='SCE_SYSMODULE_JSON2'; + SCE_SYSMODULE_AUDIO_LATENCY_ESTIMATION :Result:='SCE_SYSMODULE_AUDIO_LATENCY_ESTIMATION'; + SCE_SYSMODULE_HMD_SETUP_DIALOG :Result:='SCE_SYSMODULE_HMD_SETUP_DIALOG'; + SCE_SYSMODULE_VR_TRACKER :Result:='SCE_SYSMODULE_VR_TRACKER'; + SCE_SYSMODULE_CONTENT_DELETE :Result:='SCE_SYSMODULE_CONTENT_DELETE'; + SCE_SYSMODULE_IME_BACKEND :Result:='SCE_SYSMODULE_IME_BACKEND'; + SCE_SYSMODULE_NET_CTL_AP_DIALOG :Result:='SCE_SYSMODULE_NET_CTL_AP_DIALOG'; + SCE_SYSMODULE_PLAYGO_DIALOG :Result:='SCE_SYSMODULE_PLAYGO_DIALOG'; + SCE_SYSMODULE_SOCIAL_SCREEN :Result:='SCE_SYSMODULE_SOCIAL_SCREEN'; + SCE_SYSMODULE_EDIT_MP4 :Result:='SCE_SYSMODULE_EDIT_MP4'; + SCE_SYSMODULE_TEXT_TO_SPEECH :Result:='SCE_SYSMODULE_TEXT_TO_SPEECH'; + SCE_SYSMODULE_BLUETOOTH_HID :Result:='SCE_SYSMODULE_BLUETOOTH_HID'; + SCE_SYSMODULE_VR_SERVICE_DIALOG :Result:='SCE_SYSMODULE_VR_SERVICE_DIALOG'; + SCE_SYSMODULE_JOB_MANAGER :Result:='SCE_SYSMODULE_JOB_MANAGER'; + SCE_SYSMODULE_SOCIAL_SCREEN_DIALOG :Result:='SCE_SYSMODULE_SOCIAL_SCREEN_DIALOG'; + SCE_SYSMODULE_NP_TOOLKIT2 :Result:='SCE_SYSMODULE_NP_TOOLKIT2'; + else + Result:=HexStr(id,4); + end; +end; + diff --git a/ps4_libkernel/ps4_libkernel.pas b/ps4_libkernel/ps4_libkernel.pas index 4da0746c..1b0da55e 100644 --- a/ps4_libkernel/ps4_libkernel.pas +++ b/ps4_libkernel/ps4_libkernel.pas @@ -523,121 +523,19 @@ end; function ps4_sceSysmoduleLoadModule(id:Word):Integer; SysV_ABI_CDecl; begin - Write('sceSysmoduleLoadModule:'); - - Case id of - SCE_SYSMODULE_FIBER :Writeln('SCE_SYSMODULE_FIBER '); - SCE_SYSMODULE_ULT :Writeln('SCE_SYSMODULE_ULT '); - SCE_SYSMODULE_NGS2 :Writeln('SCE_SYSMODULE_NGS2 '); - SCE_SYSMODULE_XML :Writeln('SCE_SYSMODULE_XML '); - SCE_SYSMODULE_NP_UTILITY :Writeln('SCE_SYSMODULE_NP_UTILITY '); - SCE_SYSMODULE_VOICE :Writeln('SCE_SYSMODULE_VOICE '); - SCE_SYSMODULE_VOICEQOS :Writeln('SCE_SYSMODULE_VOICEQOS '); - SCE_SYSMODULE_NP_MATCHING2 :Writeln('SCE_SYSMODULE_NP_MATCHING2 '); - SCE_SYSMODULE_NP_SCORE_RANKING :Writeln('SCE_SYSMODULE_NP_SCORE_RANKING '); - SCE_SYSMODULE_RUDP :Writeln('SCE_SYSMODULE_RUDP '); - SCE_SYSMODULE_NP_TUS :Writeln('SCE_SYSMODULE_NP_TUS '); - SCE_SYSMODULE_FACE :Writeln('SCE_SYSMODULE_FACE '); - SCE_SYSMODULE_SMART :Writeln('SCE_SYSMODULE_SMART '); - SCE_SYSMODULE_GAME_LIVE_STREAMING :Writeln('SCE_SYSMODULE_GAME_LIVE_STREAMING '); - SCE_SYSMODULE_COMPANION_UTIL :Writeln('SCE_SYSMODULE_COMPANION_UTIL '); - SCE_SYSMODULE_PLAYGO :Writeln('SCE_SYSMODULE_PLAYGO '); - SCE_SYSMODULE_FONT :Writeln('SCE_SYSMODULE_FONT '); - SCE_SYSMODULE_VIDEO_RECORDING :Writeln('SCE_SYSMODULE_VIDEO_RECORDING '); - SCE_SYSMODULE_S3DCONVERSION :Writeln('SCE_SYSMODULE_S3DCONVERSION '); - SCE_SYSMODULE_AUDIODEC :Writeln('SCE_SYSMODULE_AUDIODEC '); - SCE_SYSMODULE_JPEG_DEC :Writeln('SCE_SYSMODULE_JPEG_DEC '); - SCE_SYSMODULE_JPEG_ENC :Writeln('SCE_SYSMODULE_JPEG_ENC '); - SCE_SYSMODULE_PNG_DEC :Writeln('SCE_SYSMODULE_PNG_DEC '); - SCE_SYSMODULE_PNG_ENC :Writeln('SCE_SYSMODULE_PNG_ENC '); - SCE_SYSMODULE_VIDEODEC :Writeln('SCE_SYSMODULE_VIDEODEC '); - SCE_SYSMODULE_MOVE :Writeln('SCE_SYSMODULE_MOVE '); - SCE_SYSMODULE_PAD_TRACKER :Writeln('SCE_SYSMODULE_PAD_TRACKER '); - SCE_SYSMODULE_DEPTH :Writeln('SCE_SYSMODULE_DEPTH '); - SCE_SYSMODULE_HAND :Writeln('SCE_SYSMODULE_HAND '); - SCE_SYSMODULE_LIBIME :Writeln('SCE_SYSMODULE_LIBIME '); - SCE_SYSMODULE_IME_DIALOG :Writeln('SCE_SYSMODULE_IME_DIALOG '); - SCE_SYSMODULE_NP_PARTY :Writeln('SCE_SYSMODULE_NP_PARTY '); - SCE_SYSMODULE_FONT_FT :Writeln('SCE_SYSMODULE_FONT_FT '); - SCE_SYSMODULE_FREETYPE_OT :Writeln('SCE_SYSMODULE_FREETYPE_OT '); - SCE_SYSMODULE_FREETYPE_OL :Writeln('SCE_SYSMODULE_FREETYPE_OL '); - SCE_SYSMODULE_FREETYPE_OPT_OL :Writeln('SCE_SYSMODULE_FREETYPE_OPT_OL '); - SCE_SYSMODULE_SCREEN_SHOT :Writeln('SCE_SYSMODULE_SCREEN_SHOT '); - SCE_SYSMODULE_NP_AUTH :Writeln('SCE_SYSMODULE_NP_AUTH '); - SCE_SYSMODULE_SULPHA :Writeln('SCE_SYSMODULE_SULPHA '); - SCE_SYSMODULE_SAVE_DATA_DIALOG :Writeln('SCE_SYSMODULE_SAVE_DATA_DIALOG '); - SCE_SYSMODULE_INVITATION_DIALOG :Writeln('SCE_SYSMODULE_INVITATION_DIALOG '); - SCE_SYSMODULE_DEBUG_KEYBOARD :Writeln('SCE_SYSMODULE_DEBUG_KEYBOARD '); - SCE_SYSMODULE_MESSAGE_DIALOG :Writeln('SCE_SYSMODULE_MESSAGE_DIALOG '); - SCE_SYSMODULE_AV_PLAYER :Writeln('SCE_SYSMODULE_AV_PLAYER '); - SCE_SYSMODULE_CONTENT_EXPORT :Writeln('SCE_SYSMODULE_CONTENT_EXPORT '); - SCE_SYSMODULE_AUDIO_3D :Writeln('SCE_SYSMODULE_AUDIO_3D '); - SCE_SYSMODULE_NP_COMMERCE :Writeln('SCE_SYSMODULE_NP_COMMERCE '); - SCE_SYSMODULE_MOUSE :Writeln('SCE_SYSMODULE_MOUSE '); - SCE_SYSMODULE_COMPANION_HTTPD :Writeln('SCE_SYSMODULE_COMPANION_HTTPD '); - SCE_SYSMODULE_WEB_BROWSER_DIALOG :Writeln('SCE_SYSMODULE_WEB_BROWSER_DIALOG '); - SCE_SYSMODULE_ERROR_DIALOG :Writeln('SCE_SYSMODULE_ERROR_DIALOG '); - SCE_SYSMODULE_NP_TROPHY :Writeln('SCE_SYSMODULE_NP_TROPHY '); - SCE_SYSMODULE_NP_SNS_FACEBOOK :Writeln('SCE_SYSMODULE_NP_SNS_FACEBOOK '); - SCE_SYSMODULE_MOVE_TRACKER :Writeln('SCE_SYSMODULE_MOVE_TRACKER '); - SCE_SYSMODULE_NP_PROFILE_DIALOG :Writeln('SCE_SYSMODULE_NP_PROFILE_DIALOG '); - SCE_SYSMODULE_NP_FRIEND_LIST_DIALOG :Writeln('SCE_SYSMODULE_NP_FRIEND_LIST_DIALOG '); - SCE_SYSMODULE_APP_CONTENT :Writeln('SCE_SYSMODULE_APP_CONTENT '); - SCE_SYSMODULE_NP_SIGNALING :Writeln('SCE_SYSMODULE_NP_SIGNALING '); - SCE_SYSMODULE_REMOTE_PLAY :Writeln('SCE_SYSMODULE_REMOTE_PLAY '); - SCE_SYSMODULE_USBD :Writeln('SCE_SYSMODULE_USBD '); - SCE_SYSMODULE_GAME_CUSTOM_DATA_DIALOG :Writeln('SCE_SYSMODULE_GAME_CUSTOM_DATA_DIALOG '); - SCE_SYSMODULE_M4AAC_ENC :Writeln('SCE_SYSMODULE_M4AAC_ENC '); - SCE_SYSMODULE_AUDIODEC_CPU :Writeln('SCE_SYSMODULE_AUDIODEC_CPU '); - SCE_SYSMODULE_ZLIB :Writeln('SCE_SYSMODULE_ZLIB '); - SCE_SYSMODULE_CONTENT_SEARCH :Writeln('SCE_SYSMODULE_CONTENT_SEARCH '); - SCE_SYSMODULE_DECI4H :Writeln('SCE_SYSMODULE_DECI4H '); - SCE_SYSMODULE_HEAD_TRACKER :Writeln('SCE_SYSMODULE_HEAD_TRACKER '); - SCE_SYSMODULE_SYSTEM_GESTURE :Writeln('SCE_SYSMODULE_SYSTEM_GESTURE '); - SCE_SYSMODULE_VIDEODEC2 :Writeln('SCE_SYSMODULE_VIDEODEC2 '); - SCE_SYSMODULE_AT9_ENC :Writeln('SCE_SYSMODULE_AT9_ENC '); - SCE_SYSMODULE_CONVERT_KEYCODE :Writeln('SCE_SYSMODULE_CONVERT_KEYCODE '); - SCE_SYSMODULE_SHARE_PLAY :Writeln('SCE_SYSMODULE_SHARE_PLAY '); - SCE_SYSMODULE_HMD :Writeln('SCE_SYSMODULE_HMD '); - SCE_SYSMODULE_FACE_TRACKER :Writeln('SCE_SYSMODULE_FACE_TRACKER '); - SCE_SYSMODULE_HAND_TRACKER :Writeln('SCE_SYSMODULE_HAND_TRACKER '); - SCE_SYSMODULE_AUDIODEC_CPU_HEVAG :Writeln('SCE_SYSMODULE_AUDIODEC_CPU_HEVAG '); - SCE_SYSMODULE_LOGIN_DIALOG :Writeln('SCE_SYSMODULE_LOGIN_DIALOG '); - SCE_SYSMODULE_LOGIN_SERVICE :Writeln('SCE_SYSMODULE_LOGIN_SERVICE '); - SCE_SYSMODULE_SIGNIN_DIALOG :Writeln('SCE_SYSMODULE_SIGNIN_DIALOG '); - SCE_SYSMODULE_JSON2 :Writeln('SCE_SYSMODULE_JSON2 '); - SCE_SYSMODULE_AUDIO_LATENCY_ESTIMATION :Writeln('SCE_SYSMODULE_AUDIO_LATENCY_ESTIMATION'); - SCE_SYSMODULE_HMD_SETUP_DIALOG :Writeln('SCE_SYSMODULE_HMD_SETUP_DIALOG '); - SCE_SYSMODULE_VR_TRACKER :Writeln('SCE_SYSMODULE_VR_TRACKER '); - SCE_SYSMODULE_CONTENT_DELETE :Writeln('SCE_SYSMODULE_CONTENT_DELETE '); - SCE_SYSMODULE_IME_BACKEND :Writeln('SCE_SYSMODULE_IME_BACKEND '); - SCE_SYSMODULE_NET_CTL_AP_DIALOG :Writeln('SCE_SYSMODULE_NET_CTL_AP_DIALOG '); - SCE_SYSMODULE_PLAYGO_DIALOG :Writeln('SCE_SYSMODULE_PLAYGO_DIALOG '); - SCE_SYSMODULE_SOCIAL_SCREEN :Writeln('SCE_SYSMODULE_SOCIAL_SCREEN '); - SCE_SYSMODULE_EDIT_MP4 :Writeln('SCE_SYSMODULE_EDIT_MP4 '); - SCE_SYSMODULE_TEXT_TO_SPEECH :Writeln('SCE_SYSMODULE_TEXT_TO_SPEECH '); - SCE_SYSMODULE_BLUETOOTH_HID :Writeln('SCE_SYSMODULE_BLUETOOTH_HID '); - SCE_SYSMODULE_VR_SERVICE_DIALOG :Writeln('SCE_SYSMODULE_VR_SERVICE_DIALOG '); - SCE_SYSMODULE_JOB_MANAGER :Writeln('SCE_SYSMODULE_JOB_MANAGER '); - SCE_SYSMODULE_SOCIAL_SCREEN_DIALOG :Writeln('SCE_SYSMODULE_SOCIAL_SCREEN_DIALOG '); - SCE_SYSMODULE_NP_TOOLKIT2 :Writeln('SCE_SYSMODULE_NP_TOOLKIT2 '); - else - Writeln(HexStr(id,4)); - end; - - + Writeln('sceSysmoduleLoadModule:',GetSysmoduleName(id)); Result:=0; end; function ps4_sceSysmoduleUnloadModule(id:Word):Integer; SysV_ABI_CDecl; begin - Writeln('sceSysmoduleUnloadModule:',HexStr(id,4)); + Writeln('sceSysmoduleUnloadModule:',GetSysmoduleName(id)); Result:=0; end; function ps4_sceSysmoduleIsLoaded(id:Word):Integer; SysV_ABI_CDecl; begin - Writeln('sceSysmoduleIsLoaded:',HexStr(id,4)); + Writeln('sceSysmoduleIsLoaded:',GetSysmoduleName(id)); Result:=0; end; @@ -948,8 +846,12 @@ begin lib^.set_proc($5135F325B5A18531,@ps4_scePthreadAttrSetstacksize); lib^.set_proc($D90D33EAB9C1AD31,@ps4_pthread_attr_setstacksize); lib^.set_proc($FD6ADEA6BB6ED10B,@ps4_scePthreadAttrSetdetachstate); + lib^.set_proc($13EB72A37969E4BC,@ps4_pthread_attr_setdetachstate); lib^.set_proc($E3E87D133C0A1782,@ps4_scePthreadAttrSetschedpolicy); lib^.set_proc($0F3112F61405E1FE,@ps4_scePthreadAttrSetschedparam); + lib^.set_proc($1573D61CD93C39FD,@ps4_scePthreadAttrGetschedparam); + lib^.set_proc($7AE291826D159F63,@ps4_pthread_attr_setschedparam); + lib^.set_proc($AA593DA522EC5263,@ps4_pthread_attr_getschedparam); lib^.set_proc($DEAC603387B31130,@ps4_scePthreadAttrSetaffinity); lib^.set_proc($F3EB39073663C528,@ps4_scePthreadAttrGetaffinity); lib^.set_proc($7976D44A911A4EC0,@ps4_scePthreadAttrSetinheritsched); @@ -1070,6 +972,9 @@ begin lib^.set_proc($41CB5E4706EC9D5D,@ps4_usleep); lib^.set_proc($D637D72D15738AC7,@ps4_sceKernelUsleep); + lib^.set_proc($FE8E6E103A4DFA86,@ps4_sceKernelConvertUtcToLocaltime); + lib^.set_proc($D0D4C737534A38D2,@ps4_sceKernelConvertLocaltimeToUtc); + //time //file diff --git a/ps4_libkernel/ps4_pthread.pas b/ps4_libkernel/ps4_pthread.pas index 486cc218..68e8f9ac 100644 --- a/ps4_libkernel/ps4_pthread.pas +++ b/ps4_libkernel/ps4_pthread.pas @@ -20,8 +20,12 @@ function ps4_pthread_attr_destroy(pAttr:p_pthread_attr_t):Integer; SysV_ABI_CDe function ps4_scePthreadAttrSetstacksize(pAttr:p_pthread_attr_t;size:size_t):Integer; SysV_ABI_CDecl; function ps4_pthread_attr_setstacksize(pAttr:p_pthread_attr_t;size:size_t):Integer; SysV_ABI_CDecl; function ps4_scePthreadAttrSetdetachstate(pAttr:p_pthread_attr_t;detachstate:Integer):Integer; SysV_ABI_CDecl; +function ps4_pthread_attr_setdetachstate(pAttr:p_pthread_attr_t;detachstate:Integer):Integer; SysV_ABI_CDecl; function ps4_scePthreadAttrSetschedpolicy(pAttr:p_pthread_attr_t;policy:Integer):Integer; SysV_ABI_CDecl; function ps4_scePthreadAttrSetschedparam(pAttr:p_pthread_attr_t;param:PInteger):Integer; SysV_ABI_CDecl; +function ps4_scePthreadAttrGetschedparam(pAttr:p_pthread_attr_t;param:PInteger):Integer; SysV_ABI_CDecl; +function ps4_pthread_attr_setschedparam(pAttr:p_pthread_attr_t;param:PInteger):Integer; SysV_ABI_CDecl; +function ps4_pthread_attr_getschedparam(pAttr:p_pthread_attr_t;param:PInteger):Integer; SysV_ABI_CDecl; function ps4_scePthreadAttrSetaffinity(pAttr:p_pthread_attr_t;mask:QWORD):Integer; SysV_ABI_CDecl; function ps4_scePthreadAttrGetaffinity(pAttr:p_pthread_attr_t;mask:PQWORD):Integer; SysV_ABI_CDecl; function ps4_scePthreadAttrSetinheritsched(pAttr:p_pthread_attr_t;inheritSched:Integer):Integer; SysV_ABI_CDecl; @@ -205,6 +209,23 @@ begin Result:=0; end; +function ps4_pthread_attr_setdetachstate(pAttr:p_pthread_attr_t;detachstate:Integer):Integer; SysV_ABI_CDecl; +begin + Result:=EINVAL; + if (pAttr=nil) then Exit; + if (pAttr^=nil) then Exit; + + Case detachstate of + PTHREAD_CREATE_JOINABLE:; + PTHREAD_CREATE_DETACHED:; + else + Exit(EINVAL); + end; + + pAttr^^.flags:=detachstate; + Result:=0; +end; + function ps4_scePthreadAttrSetschedpolicy(pAttr:p_pthread_attr_t;policy:Integer):Integer; SysV_ABI_CDecl; begin Result:=SCE_KERNEL_ERROR_EINVAL; @@ -223,6 +244,33 @@ begin Result:=0; end; +function ps4_scePthreadAttrGetschedparam(pAttr:p_pthread_attr_t;param:PInteger):Integer; SysV_ABI_CDecl; +begin + Result:=SCE_KERNEL_ERROR_EINVAL; + if (pAttr=nil) or (param=nil) then Exit; + if (pAttr^=nil) then Exit; + param^:=pAttr^^.prio; + Result:=0; +end; + +function ps4_pthread_attr_setschedparam(pAttr:p_pthread_attr_t;param:PInteger):Integer; SysV_ABI_CDecl; +begin + Result:=EINVAL; + if (pAttr=nil) or (param=nil) then Exit; + if (pAttr^=nil) then Exit; + pAttr^^.prio:=param^; + Result:=0; +end; + +function ps4_pthread_attr_getschedparam(pAttr:p_pthread_attr_t;param:PInteger):Integer; SysV_ABI_CDecl; +begin + Result:=EINVAL; + if (pAttr=nil) or (param=nil) then Exit; + if (pAttr^=nil) then Exit; + param^:=pAttr^^.prio; + Result:=0; +end; + function ps4_scePthreadAttrSetaffinity(pAttr:p_pthread_attr_t;mask:QWORD):Integer; SysV_ABI_CDecl; begin Result:=SCE_KERNEL_ERROR_EINVAL; diff --git a/ps4_libkernel/ps4_time.pas b/ps4_libkernel/ps4_time.pas index ecf8955f..d6e3da5e 100644 --- a/ps4_libkernel/ps4_time.pas +++ b/ps4_libkernel/ps4_time.pas @@ -48,6 +48,25 @@ function ps4_nanosleep(req,rem:Ptimespec):Integer; SysV_ABI_CDecl; function ps4_usleep(usec:DWORD):Integer; SysV_ABI_CDecl; //microseconds function ps4_sceKernelUsleep(usec:DWORD):Integer; SysV_ABI_CDecl; //microseconds +type + ptimesec=^timesec; + timesec=packed record + tz_time :time_t; + tz_secwest:DWORD; + tz_dstsec :DWORD; + end; + +function ps4_sceKernelConvertUtcToLocaltime(_time:time_t; + local_time:ptime_t; + _tsec:ptimesec; + _dstsec:PDWORD):Integer; SysV_ABI_CDecl; + +function ps4_sceKernelConvertLocaltimeToUtc(_time:time_t; + unknow:qword; + utc_time:ptime_t; + _tsec:ptimesec; + _dstsec:PDWORD):Integer; SysV_ABI_CDecl; + implementation Uses @@ -220,6 +239,11 @@ begin tp^.tv_nsec:=(QWORD(ct) mod POW10_7)*100; end; + CLOCK_EXT_NETWORK , + CLOCK_EXT_DEBUG_NETWORK, + CLOCK_EXT_AD_NETWORK , + CLOCK_EXT_RAW_NETWORK , + CLOCK_MONOTONIC, CLOCK_MONOTONIC_PRECISE, CLOCK_MONOTONIC_FAST: @@ -443,6 +467,87 @@ begin Result:=0; end; +// + +function ps4_sceKernelConvertUtcToLocaltime(_time:time_t; + local_time:ptime_t; + _tsec:ptimesec; + _dstsec:PDWORD):Integer; SysV_ABI_CDecl; +var + tmz:timezone; + perror:pinteger; +begin + Result:=ps4_gettimeofday(nil,@tmz); + if (Result<0) then + begin + perror:=_error; + if (perror<>nil) then + begin + Result:=px2sce(perror^); + end; + Exit; + end; + + if (local_time<>nil) then + begin + local_time^:=(tmz.tz_minuteswest+tmz.tz_dsttime)*60+_time; + end; + + if (_tsec<>nil) then + begin + _tsec^.tz_time :=_time; + _tsec^.tz_secwest:=tmz.tz_minuteswest*60; + _tsec^.tz_dstsec :=tmz.tz_dsttime*60; + end; + + if (_dstsec<>nil) then + begin + _dstsec^:=tmz.tz_dsttime*60; + end; +end; + +function ps4_sceKernelConvertLocaltimeToUtc(_time:time_t; + unknow:qword; + utc_time:ptime_t; + _tsec:ptimesec; + _dstsec:PDWORD):Integer; SysV_ABI_CDecl; +var + tmz:timezone; + rtime:time_t; + perror:pinteger; +begin + Result:=ps4_gettimeofday(nil,@tmz); + if (Result<0) then + begin + perror:=_error; + if (perror<>nil) then + begin + Result:=px2sce(perror^); + end; + Exit; + end; + + rtime:=_time-((tmz.tz_minuteswest+tmz.tz_dsttime)*60); + + if (utc_time<>nil) then + begin + utc_time^:=rtime; + end; + + if (_tsec<>nil) then + begin + _tsec^.tz_time :=rtime; + _tsec^.tz_secwest:=tmz.tz_minuteswest*60; + _tsec^.tz_dstsec :=tmz.tz_dsttime*60; + end; + + if (_dstsec<>nil) then + begin + _dstsec^:=tmz.tz_dsttime*60; + end; + +end; + Procedure Init; var min,max,cur:ULONG; diff --git a/ps4_libsceajm.pas b/ps4_libsceajm.pas index d28e58b0..c57c1795 100644 --- a/ps4_libsceajm.pas +++ b/ps4_libsceajm.pas @@ -31,6 +31,36 @@ type SceAjmContextId=Integer; SceAjmCodecType=Integer; + pSceAjmInstanceId=^SceAjmInstanceId; + SceAjmInstanceId=DWORD; + + SceAjmResult=Integer; + pSceAjmSidebandResult=^SceAjmSidebandResult; + SceAjmSidebandResult=packed record + iResult :SceAjmResult; + iInternalResult:SceAjmResult; + end; + + pSceAjmBuffer=^SceAjmBuffer; + SceAjmBuffer=packed record + pAddress:Pointer; + szSize :qword; + end; + +type + pSceAjmBatchId=^SceAjmBatchId; + SceAjmBatchId=DWORD; + + pSceAjmBatchError=^SceAjmBatchError; + SceAjmBatchError=packed record + iErrorCode:Integer; //Detailed error code + align1:Integer; + pJobAddress:Pointer; //For internal use only + uiCommandOffset:Integer; //For internal use only + align2:Integer; + pJobOriginRa:Pointer; //For internal use only + end; + TAjmContext=class(TClassHandle) AJM_CODEC_MP3_DEC :Pointer; AJM_CODEC_AT9_DEC :Pointer; @@ -252,6 +282,108 @@ begin if not FAjmMap.Delete(uiContext) then Result:=SCE_AJM_ERROR_INVALID_CONTEXT; end; +function ps4_sceAjmInstanceCreate(uiContext:SceAjmContextId; + uiCodec:SceAjmCodecType; + uiFlags:QWORD; + pInstance:pSceAjmInstanceId):Integer; SysV_ABI_CDecl; +Var + H:TAjmContext; +begin + Result:=0; + + H:=TAjmContext(FAjmMap.Acqure(uiContext)); + if (H=nil) then Exit(SCE_AJM_ERROR_INVALID_CONTEXT); + + Case uiCodec of + SCE_AJM_CODEC_MP3_DEC , + SCE_AJM_CODEC_AT9_DEC , + SCE_AJM_CODEC_M4AAC_DEC, + SCE_AJM_CODEC_CELP8_DEC, + SCE_AJM_CODEC_CELP8_ENC, + SCE_AJM_CODEC_CELP_DEC , + SCE_AJM_CODEC_CELP_ENC : + begin + //fake instance + pInstance^:=1; + end; + else + begin + Result:=SCE_AJM_ERROR_INVALID_PARAMETER; + H.Release; + Exit; + end; + end; + + H.Release; +end; + +function ps4_sceAjmBatchJobControlBufferRa( + pBatchPosition:Pointer; + uiInstance:SceAjmInstanceId; + uiFlags:qword; + pSidebandInput:Pointer; + szSidebandInputSize:qword; + pSidebandOutput:Pointer; + szSidebandOutputSize:qword; + pReturnAddress:PPointer):Integer; SysV_ABI_CDecl; +begin + Result:=0; + if (pSidebandOutput<>nil) then + begin + FillChar(pSidebandOutput^,szSidebandOutputSize,0); + end; +end; + +function ps4_sceAjmBatchJobRunSplitBufferRa( + pBatchPosition:Pointer; + uiInstance:SceAjmInstanceId; + uiFlags:qword; + pDataInputBuffers:pSceAjmBuffer; + szNumDataInputBuffers:qword; + pDataOutputBuffers:pSceAjmBuffer; + szNumDataOutputBuffers:qword; + pSidebandOutput:Pointer; + szSidebandOutputSize:qword; + pReturnAddress:PPointer):Integer; SysV_ABI_CDecl; +var + i:qword; +begin + Result:=0; + if (pSidebandOutput<>nil) then + begin + FillChar(pSidebandOutput^,szSidebandOutputSize,0); + end; + + if (pDataOutputBuffers<>nil) and (szNumDataOutputBuffers<>0) then + begin + For i:=0 to szNumDataOutputBuffers-1 do + if (pDataOutputBuffers[i].pAddress<>nil) then + begin + FillChar(pDataOutputBuffers[i].pAddress^,pDataOutputBuffers[i].szSize,0); + end; + end; +end; + +function ps4_sceAjmBatchStartBuffer( + uiContext:SceAjmContextId; + pBatchCommands:Pointer; + szBatchSize:qword; + iPriority:Integer; + pBatchError:pSceAjmBatchError; + pBatch:pSceAjmBatchId):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + +function ps4_sceAjmBatchWait( + uiContext:SceAjmContextId; + uiBatch:SceAjmBatchId; + uiTimeout:DWORD; + pBatchError:pSceAjmBatchError):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + function Load_libSceAjm(Const name:RawByteString):TElf_node; var lib:PLIBRARY; @@ -264,6 +396,11 @@ begin lib^.set_proc($43777216EC069FAE,@ps4_sceAjmModuleRegister); lib^.set_proc($5A2EC3B652D5F8A2,@ps4_sceAjmModuleUnregister); lib^.set_proc($307BABEAA0AC52EB,@ps4_sceAjmFinalize); + lib^.set_proc($031A03AC8369E09F,@ps4_sceAjmInstanceCreate); + lib^.set_proc($7660F26CDFFF167F,@ps4_sceAjmBatchJobControlBufferRa); + lib^.set_proc($EE37405CAFB67CCA,@ps4_sceAjmBatchJobRunSplitBufferRa); + lib^.set_proc($7C5164934C5F196B,@ps4_sceAjmBatchStartBuffer); + lib^.set_proc($FEA2EC7C3032C086,@ps4_sceAjmBatchWait); end; initialization diff --git a/ps4_libscenpmanager.pas b/ps4_libscenpmanager.pas index 67defa18..d9233a8a 100644 --- a/ps4_libscenpmanager.pas +++ b/ps4_libscenpmanager.pas @@ -103,6 +103,9 @@ const implementation +uses + ps4_map_mm; + function ps4_sceNpSetContentRestriction(pRestriction:PSceNpContentRestriction):Integer; SysV_ABI_CDecl; begin Writeln('sceNpSetContentRestriction:',HexStr(pRestriction)); @@ -202,6 +205,65 @@ begin end; +type + pnp_mem=^np_mem; + np_mem=packed record + len:qword; + unknow:qword; + ptr:Pointer; + end; + +function ps4_sceNpAllocateKernelMemoryWithAlignment( + len:qword; + name:Pchar; + ptr_out:PPointer; + mem_out:pnp_mem):Integer; SysV_ABI_CDecl; +var + pad_len:qword; +begin + if (mem_out=nil) then + begin + Exit(-$7faa7ffb); + end; + + mem_out^.unknow:=0; + pad_len:=0; + if (len and $3fff)<>0 then + begin + pad_len:=$4000-(len and $3fff); + end; + mem_out^.len:=pad_len+len; + + Result:=ps4_sceKernelMapNamedFlexibleMemory(@mem_out^.ptr,mem_out^.len,3,0,name); + + if (ptr_out<>nil) and (Result >-1) then + begin + ptr_out^:=mem_out^.ptr; + end; +end; + +function ps4_sceNpAllocateKernelMemoryNoAlignment( + len:qword; + name:Pchar; + ptr_out:PPointer; + mem_out:pnp_mem):Integer; SysV_ABI_CDecl; +begin + if (mem_out=nil) then + begin + Exit(-$7faa7ffb); + end; + + mem_out^.unknow:=0; + mem_out^.len:=len; + + Result:=ps4_sceKernelMapNamedFlexibleMemory(@mem_out^.ptr,mem_out^.len,3,0,name); + + if (ptr_out<>nil) and (Result >-1) then + begin + ptr_out^:=mem_out^.ptr; + end; +end; + function Load_libSceNpManager(Const name:RawByteString):TElf_node; var lib:PLIBRARY; @@ -234,6 +296,8 @@ begin lib:=Result._add_lib('libSceNpCommon'); lib^.set_proc($8BC5265D34AAECDE,@ps4_sceNpCmpNpId); + lib^.set_proc($80C958E9E7B0AFF7,@ps4_sceNpAllocateKernelMemoryWithAlignment); + lib^.set_proc($3163CE92ACD8B2CD,@ps4_sceNpAllocateKernelMemoryNoAlignment); end; initialization diff --git a/ps4_libscenpmatching2.pas b/ps4_libscenpmatching2.pas new file mode 100644 index 00000000..737e86a3 --- /dev/null +++ b/ps4_libscenpmatching2.pas @@ -0,0 +1,59 @@ +unit ps4_libSceNpMatching2; + +{$mode ObjFPC}{$H+} + +interface + +uses + ps4_program, + Classes, + SysUtils; + +implementation + +type + pSceNpMatching2InitializeParameter=^SceNpMatching2InitializeParameter; + SceNpMatching2InitializeParameter=packed record + poolSize:QWORD; // 0 = default + cpuAffinityMask:QWORD; // 0 = default SceKernelCpumask + threadPriority:Integer; // 0 = default + padding:Integer; + threadStackSize:QWORD; // 0 = default + size:QWORD; // size of this structure + sslPoolSize:QWORD; // 0 = default + end; + + SceNpMatching2ContextCallback=procedure( + ctxId,event:Word; + eventCause:Byte; + errorCode:Integer; + arg:Pointer); SysV_ABI_CDecl; + + +function ps4_sceNpMatching2Initialize(param:pSceNpMatching2InitializeParameter):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + +function ps4_sceNpMatching2RegisterContextCallback(cbFunc:SceNpMatching2ContextCallback;cbFuncArg:Pointer):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + +function Load_libSceNpMatching2(Const name:RawByteString):TElf_node; +var + lib:PLIBRARY; +begin + Result:=TElf_node.Create; + Result.pFileName:=name; + + lib:=Result._add_lib('libSceNpMatching2'); + lib^.set_proc($D74B777B9F893E75,@ps4_sceNpMatching2Initialize); + lib^.set_proc($7D041F3FCEC8EE1B,@ps4_sceNpMatching2RegisterContextCallback); +end; + +initialization + ps4_app.RegistredPreLoad('libSceNpMatching2.prx',@Load_libSceNpMatching2); + +end. + diff --git a/ps4_libscenpscore.pas b/ps4_libscenpscore.pas index 98b7c617..d06a6efc 100644 --- a/ps4_libscenpscore.pas +++ b/ps4_libscenpscore.pas @@ -184,7 +184,29 @@ begin Result:=0; end; -//nop nid:libSceNpScore:00D26CB0FCF7998D:sceNpScoreRecordScoreAsync +function ps4_sceNpScoreRecordScoreAsync( + reqId:Integer; + boardId:DWORD; //SceNpScoreBoardId + score:Int64; //SceNpScoreValue + scoreComment:pSceNpScoreComment; + gameInfo:pSceNpScoreGameInfo; + tmpRank:DWORD; //SceNpScoreRankNumber + compareDate:QWORD; //SceRtcTick + option:Pointer):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + +function ps4_sceNpScorePollAsync( + reqId:Integer; + r_out:Pinteger):Integer; SysV_ABI_CDecl; +begin + Result:=0; + if (r_out<>nil) then + begin + r_out^:=0; + end; +end; function Load_libSceNpScoreRanking(Const name:RawByteString):TElf_node; var @@ -201,6 +223,8 @@ begin lib^.set_proc($80C6CE9FEFFA7970,@ps4_sceNpScoreGetFriendsRankingA); lib^.set_proc($F66644828884ABA6,@ps4_sceNpScoreGetRankingByAccountIdPcId); lib^.set_proc($2811F10E3CA4FE30,@ps4_sceNpScoreGetRankingByRange); + lib^.set_proc($00D26CB0FCF7998D,@ps4_sceNpScoreRecordScoreAsync); + lib^.set_proc($9B50DF351B2D9124,@ps4_sceNpScorePollAsync); end; initialization diff --git a/ps4_libscenpsignaling.pas b/ps4_libscenpsignaling.pas new file mode 100644 index 00000000..b6529442 --- /dev/null +++ b/ps4_libscenpsignaling.pas @@ -0,0 +1,37 @@ +unit ps4_libSceNpSignaling; + +{$mode ObjFPC}{$H+} + +interface + +uses + ps4_program, + Classes, + SysUtils; + +implementation + +function ps4_sceNpSignalingInitialize(poolSize:QWORD; + threadPriority:Integer; + cpuAffinityMask:Integer; + threadStackSize:QWORD):Integer; SysV_ABI_CDecl; +begin + Result:=0; +end; + +function Load_libSceNpSignaling(Const name:RawByteString):TElf_node; +var + lib:PLIBRARY; +begin + Result:=TElf_node.Create; + Result.pFileName:=name; + + lib:=Result._add_lib('libSceNpSignaling'); + lib^.set_proc($DCA3AE0B84666595,@ps4_sceNpSignalingInitialize); +end; + +initialization + ps4_app.RegistredPreLoad('libSceNpSignaling.prx',@Load_libSceNpSignaling); + +end. + diff --git a/ps4_libscepad.pas b/ps4_libscepad.pas index 35d4748d..831c9c01 100644 --- a/ps4_libscepad.pas +++ b/ps4_libscepad.pas @@ -254,9 +254,20 @@ begin end; function ps4_scePadRead(handle:Integer;data:PScePadData;num:Integer):Integer; SysV_ABI_CDecl; +var + i:Integer; begin - ps4_scePadReadState(handle,data); - Result:=1; + Result:=0; + if (num<>0) then + begin + ps4_scePadReadState(handle,data); + Result:=1; + end; + if (num>1) then + For i:=1 to num-1 do + begin + data[i]:=Default(ScePadData); + end; end; function ps4_scePadSetVibration(handle:Integer;pParam:PScePadVibrationParam):Integer; SysV_ABI_CDecl; diff --git a/ps4_libscertc.pas b/ps4_libscertc.pas new file mode 100644 index 00000000..dbc70db1 --- /dev/null +++ b/ps4_libscertc.pas @@ -0,0 +1,35 @@ +unit ps4_libSceRtc; + +{$mode ObjFPC}{$H+} + +interface + +uses + ps4_program, + Classes, + SysUtils; + +implementation + +//TODO + +//nop nid:libSceRtc:CCEF542F7A8820D4:sceRtcGetCurrentNetworkTick +//nop nid:libSceRtc:D7C076352D72F545:sceRtcGetCurrentTick + +function Load_libSceRtc(Const name:RawByteString):TElf_node; +var + lib:PLIBRARY; +begin + Result:=TElf_node.Create; + Result.pFileName:=name; + + lib:=Result._add_lib('libSceRtc'); + //lib^.set_proc($79A1578DF26FDF1B,@ps4_sceImeKeyboardOpen); + +end; + +initialization + //ps4_app.RegistredPreLoad('libSceRtc.prx',@Load_libSceRtc); + +end. + diff --git a/spirv/emit_mimg.pas b/spirv/emit_mimg.pas index 73802925..b80a6a2c 100644 --- a/spirv/emit_mimg.pas +++ b/spirv/emit_mimg.pas @@ -687,7 +687,9 @@ begin Tgrp:=FetchImage(pLayout,info.dtype,info.tinfo); _emit_image_load(Tgrp,@info); - end + end; + + IMAGE_STORE:; //TODO else Assert(false,'MIMG?'+IntToStr(FSPI.MIMG.OP)); diff --git a/sys/sys_types.pas b/sys/sys_types.pas index b1e4a7e2..df54e271 100644 --- a/sys/sys_types.pas +++ b/sys/sys_types.pas @@ -431,6 +431,9 @@ type end; Ptimezone=^timezone; + time_t=QWORD; + ptime_t=^time_t; + TMemChunk=packed record pAddr:Pointer; nSize:Int64;