feat(libs): add exports imported by PPSA12544
Implement scePthreadGetschedparam and scePthreadSetschedparam on top of the thread priority, POSIX utimes and fsync on top of sceKernelUtimes and sceKernelFsync, and sceUserServiceGetAccessibilityZoomFollowFocus like the other accessibility queries. Add the remaining imports of PPSA12544 as unimplemented exports and record unknown NIDs and signatures in the technical debt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
0518f0e021
commit
8f6328242d
|
|
@ -150,4 +150,16 @@ int APS5_VABI sceAgcUnknown_y5K5tPktiL8() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
APS5_EXPORT("dbOlWdppb4o", sceAgcUnknown_dbOlWdppb4o);
|
||||
int APS5_VABI sceAgcUnknown_dbOlWdppb4o(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
APS5_EXPORT("vieBRwlh1Lw", sceAgcUnknown_vieBRwlh1Lw);
|
||||
int APS5_VABI sceAgcUnknown_vieBRwlh1Lw(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -457,6 +457,16 @@ int APS5_VABI sceFontWritingLineWritesOrder() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceFontGraphicsDrawupFillTextureImageObject(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceFontGraphicsDrawupFillTexturePatternObject(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#pragma GCC visibility pop
|
||||
|
|
|
|||
|
|
@ -214,4 +214,24 @@ int APS5_VABI sceHttp2GetMemoryPoolStats() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceHttp2CookieFlush(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceHttp2CreateCookieBox(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceHttp2SetCookieBox(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceHttp2SetRequestNoContentLength(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -911,4 +911,10 @@ int APS5_VABI sceNetResolverStartAton(int rid, const void* addr, char* hostname,
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceNetResolverGetError(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -233,4 +233,10 @@ int APS5_VABI scePadSetVibrationTriggerEffectWeakWhileEmbeddedMicInUse(bool enab
|
|||
return PAD_OK;
|
||||
}
|
||||
|
||||
APS5_EXPORT("fCWdlnmB1Ks", scePadUnknown_fCWdlnmB1Ks);
|
||||
int APS5_VABI scePadUnknown_fCWdlnmB1Ks(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,4 +73,34 @@ int APS5_VABI sceSslGetMemoryPoolStats() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceSslFreeSslCertName(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceSslGetIssuerName(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceSslGetNameEntryCount(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceSslGetNameEntryInfo(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceSslGetPem(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceSslGetSubjectName(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -130,4 +130,29 @@ int APS5_VABI sceSystemServiceLaunchPlayerDialog(const void* param) {
|
|||
return SYSTEM_SERVICE_OK;
|
||||
}
|
||||
|
||||
int APS5_VABI sceSystemServiceDisableMusicPlayer(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceSystemServiceOpenChallengeActivity(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceSystemServiceOpenTournamentOccurrence(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceSystemServiceReenableMusicPlayer(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceSystemServiceShowControllerSettings(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,6 +48,14 @@ int APS5_VABI sceUserServiceGetAccessibilityZoomEnabled(int user_id, int32_t* zo
|
|||
return USER_SERVICE_OK;
|
||||
}
|
||||
|
||||
int APS5_VABI sceUserServiceGetAccessibilityZoomFollowFocus(int user_id, int32_t* zoom_follow_focus) {
|
||||
if (zoom_follow_focus == nullptr || user_id != USER_SERVICE_INITIAL_USER_ID) {
|
||||
return USER_SERVICE_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
*zoom_follow_focus = 0;
|
||||
return USER_SERVICE_OK;
|
||||
}
|
||||
|
||||
int APS5_VABI sceUserServiceGetAgeLevel(int user_id, uint32_t* age_level) {
|
||||
(void)user_id;
|
||||
(void)age_level;
|
||||
|
|
|
|||
|
|
@ -48,4 +48,22 @@ int32_t APS5_VABI sceLibcUnknown_BnMAMrsfVWo(void) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
APS5_EXPORT("OQ-dzhlnM28", sceLibcInternalExtUnknown_OQ_dzhlnM28);
|
||||
int APS5_VABI sceLibcInternalExtUnknown_OQ_dzhlnM28(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
APS5_EXPORT("qBS714-Jr3g", sceLibcInternalExtUnknown_qBS714_Jr3g);
|
||||
int APS5_VABI sceLibcInternalExtUnknown_qBS714_Jr3g(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
APS5_EXPORT("tB59hFLH3SA", sceLibcInternalExtUnknown_tB59hFLH3SA);
|
||||
int APS5_VABI sceLibcInternalExtUnknown_tB59hFLH3SA(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -487,4 +487,14 @@ int APS5_VABI sceKernelUtimes_nid_postfix(const char* path, const KernelTimeval*
|
|||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI utimes_nid_postfix(const char* path, const KernelTimeval* times) {
|
||||
if (const int error = PathError(path)) return PosixFailure(error);
|
||||
return PosixResult(sceKernelUtimes_nid_postfix(path, times));
|
||||
}
|
||||
|
||||
int APS5_VABI fsync_nid_postfix(int fd) {
|
||||
if (sceKernelFsync(fd) != 0) return PosixFailure(errno);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include "prx/libc/include/General.hpp"
|
||||
#include "../include/Pthread.hpp"
|
||||
#include "Common.hpp"
|
||||
#include "prx/libkernel/KernelErrors.hpp"
|
||||
#include <thread>
|
||||
|
||||
extern "C" {
|
||||
|
|
@ -39,6 +40,18 @@ void APS5_VABI pthread_exit_nid_postfix(void* value) {
|
|||
scePthreadExit(value);
|
||||
}
|
||||
|
||||
int APS5_VABI scePthreadGetschedparam(Pthread thread, int* policy, KernelSchedParam* param) {
|
||||
if (!policy || !param) return SCE_KERNEL_ERROR_EINVAL;
|
||||
*policy = GUEST_SCHED_FIFO;
|
||||
return scePthreadGetprio(thread, ¶m->sched_priority);
|
||||
}
|
||||
|
||||
int APS5_VABI scePthreadSetschedparam(Pthread thread, int policy, const KernelSchedParam* param) {
|
||||
(void)policy;
|
||||
if (!param) return SCE_KERNEL_ERROR_EINVAL;
|
||||
return scePthreadSetprio(thread, param->sched_priority);
|
||||
}
|
||||
|
||||
int APS5_VABI pthread_getschedparam_nid_postfix(Pthread thread, int* policy, KernelSchedParam* param) {
|
||||
if (!policy || !param) return PosixThread::GUEST_EINVAL;
|
||||
*policy = GUEST_SCHED_FIFO;
|
||||
|
|
|
|||
|
|
@ -30,4 +30,46 @@ int APS5_VABI sceKernelUnknown02(void) {
|
|||
NotImplemented_nid_no_patch("0D4-FVvEikw");
|
||||
return 0;
|
||||
}
|
||||
APS5_EXPORT("B2n8aDorSH4", sceKernelUnknown_B2n8aDorSH4);
|
||||
int APS5_VABI sceKernelUnknown_B2n8aDorSH4(void) {
|
||||
NotImplemented_nid_no_patch("B2n8aDorSH4");
|
||||
return 0;
|
||||
}
|
||||
|
||||
APS5_EXPORT("NH6xARDOVv8", sceKernelUnknown_NH6xARDOVv8);
|
||||
int APS5_VABI sceKernelUnknown_NH6xARDOVv8(void) {
|
||||
NotImplemented_nid_no_patch("NH6xARDOVv8");
|
||||
return 0;
|
||||
}
|
||||
|
||||
APS5_EXPORT("PZQhiiLXRFs", sceKernelUnknown_PZQhiiLXRFs);
|
||||
int APS5_VABI sceKernelUnknown_PZQhiiLXRFs(void) {
|
||||
NotImplemented_nid_no_patch("PZQhiiLXRFs");
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceKernelFchmod(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI fchmod_nid_postfix(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI futimes_nid_postfix(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI recvmsg_nid_postfix(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sendmsg_nid_postfix(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,6 +60,11 @@ Throughout the project, every function at every stage either **does exactly what
|
|||
- [BnMAMrsfVWo](../../core/libs/prx/libc/src/HeapDiagnostics.cpp) (libc) - unknown name, signature
|
||||
- [scePngEncEncode](../../core/libs/prx/libScePngEnc/Export.cpp) (libScePngEnc) - whether rows may stay unfiltered when `filter_type` names a subset of the filters is unknown; as in shadPS4, they may only for 0 and for the all-filters mask
|
||||
- AudioIn, NpSessionSignaling and PlayerInvitationDialog exports added without an implementation have assumed signatures
|
||||
- [dbOlWdppb4o, vieBRwlh1Lw](../../core/libs/prx/libSceAgc/Unimplemented.cpp) (libSceAgc) - unknown name, signature
|
||||
- [OQ-dzhlnM28, qBS714-Jr3g, tB59hFLH3SA](../../core/libs/prx/libc/src/HeapDiagnostics.cpp) (libSceLibcInternalExt, implemented in libc) - unknown name, signature
|
||||
- [fCWdlnmB1Ks](../../core/libs/prx/libScePad/Export.cpp) (libScePad) - unknown name, signature
|
||||
- [B2n8aDorSH4, NH6xARDOVv8, PZQhiiLXRFs](../../core/libs/prx/libkernel/Unimplemented.cpp) (libkernel) - unknown name, signature
|
||||
- Font, Http2, Net, Ssl, SystemService and libkernel exports imported by PPSA12544 and added without an implementation have unknown signatures
|
||||
- [libSceAudioPropagation](../../core/libs/prx/libSceAudioPropagation/Export.cpp) (libSceAudioPropagation) - signatures and struct descriptors recovered from PPSA21567's calls (#481), not from documentation. The system options layout is unknown (only checked for non-null); the fourth argument of `sceAudioPropagationSourceCalculateAudioPaths` is unknown; `sceAudioPropagationSourceGetAudioPath` is assumed to output an 8-byte path handle. The meaning of the `RenderInfo` word at +0x28 is unknown (PPSA21567 and PPSA21564 pass 2); only 2 is accepted. Both titles pass one `RenderInfo` per call: a count of 0 throws, and larger counts are handled element by element without proof. No error code is known, so invalid input throws instead of returning one
|
||||
- [sceAvPlayerStartEx](../../core/libs/prx/libSceAvPlayer/Export.cpp) (libSceAvPlayer) - start info layout unknown; it is ignored and playback starts as with `sceAvPlayerStart`
|
||||
- [sceAvPlayerInit / sceAvPlayerInitEx](../../core/libs/prx/libSceAvPlayer/src/Player.cpp) (libSceAvPlayer) - behaviour without a memory replacement unknown; frame and sample buffers then come from the guest heap
|
||||
|
|
|
|||
Loading…
Reference in New Issue