feat(share): answer sceShareSetContentParamForApplicationTitle
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
d70b899894
commit
eb1d558fe9
|
|
@ -118,8 +118,10 @@ int APS5_VABI sceShareGetRunningStatus(uint32_t* status) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int APS5_VABI sceShareSetContentParamForApplicationTitle(void) {
|
||||
NotImplemented_nid_no_patch(__func__);
|
||||
int APS5_VABI sceShareSetContentParamForApplicationTitle(const char* application_title) {
|
||||
if (application_title == nullptr) {
|
||||
return ERROR_INVALID_PARAM;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ int APS5_VABI sceShareCaptureVideoClip(const void* param, std::int32_t* req_id);
|
|||
int APS5_VABI sceShareGetCurrentStatus(std::uint32_t feature_flag, void* status);
|
||||
int APS5_VABI sceShareOpenMenuForContent(const void* content_id);
|
||||
int APS5_VABI sceShareGetRunningStatus(std::uint32_t* status);
|
||||
int APS5_VABI sceShareSetContentParamForApplicationTitle(const char* application_title);
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
|
@ -64,5 +65,7 @@ int main() {
|
|||
Require(sceShareGetRunningStatus(running) == 0);
|
||||
Require(running[0] == 0 && running[1] == 0x5a5a5a5au);
|
||||
Require(sceShareGetRunningStatus(nullptr) == invalidParam);
|
||||
Require(sceShareSetContentParamForApplicationTitle("title") == 0);
|
||||
Require(sceShareSetContentParamForApplicationTitle(nullptr) == invalidParam);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -230,6 +230,7 @@ Throughout the project, every function at every stage either **does exactly what
|
|||
- [_sceUlobjmgrRegisterObject](../../core/libs/prx/ulobjmgr/Export.cpp) (ulobjmgr) - parameters taken from shadPS4 (PS4): a nonzero 64-bit object, a nonzero 32-bit kind and a 32-bit id output; the meaning of the first two and the PS5 signature are unverified. The id bound of `_sceUlobjmgrUnregisterObject` (below 0x4000) and the raw `EINVAL` (22) return also come from shadPS4
|
||||
- [sceShareGetCurrentStatus](../../core/libs/prx/libSceShare/Export.cpp) (libSceShare) - validation (feature flag non-zero, status non-null) and the all-zero 16-byte status taken from the [KytyPS5](https://github.com/KytyPS5/KytyPS5) reimplementation, not confirmed on a PS5 title; the meaning of the recording status values is unknown
|
||||
- [sceShareGetRunningStatus](../../core/libs/prx/libSceShare/Export.cpp) (libSceShare) - only the first 32-bit word of the status is known: PPSA01317 treats bits 0x3c of it as a running share feature and gives the call a 40-byte buffer. The host never records or broadcasts, so it stores 0 in that word and leaves the rest untouched; a null status returns `INVALID_PARAM` by analogy with `sceShareGetCurrentStatus`
|
||||
- [sceShareSetContentParamForApplicationTitle](../../core/libs/prx/libSceShare/Export.cpp) (libSceShare) - imported by PPSA12544's Unity plugins; the signature follows [KytyPS5](https://github.com/KytyPS5/KytyPS5/blob/main/src/libs/libShare.cpp), not confirmed on a PS5 title. The application title is only checked for null, as KytyPS5 does, since nothing is captured
|
||||
- [sceAgcDcbSetZPassPredicationEnableGetSize, sceAgcDcbSetPredicationDisableGetSize, sceAgcDcbSetBoolPredicationEnableGetSize](../../core/libs/prx/libSceAgc/DcbState/src/Predication.cpp) (libSceAgc) - the builders are inline in the SDK and not exported; the size is assumed to be that of the SET_PREDICATION packet `sceAgcDcbSetPredication` writes (16 bytes)
|
||||
- [Resource registration](../../core/libs/prx/libSceAgcDriver/Resource/src/Registration.cpp) (libSceAgcDriver) - registration always fails with `RESOURCE_REGISTRATION_UNAVAILABLE`, so the owner and resource queries, `sceAgcDriverSetResourceUserData`, `sceAgcDriverFindResourcesPublic` and `sceAgcDriverUnregisterAllResourcesForOwner` return the same error without reading their arguments. Their parameter lists follow the libSceGnmDriver counterparts and are unverified. `sceAgcDriverGetResourceRegistrationMaxNameLength` writes 0xfc and returns 0, as [prosper](https://github.com/mattias800/prosper) does from a title's registration configuration; the `uint32_t*` parameter matches the SDK wrapper `sce::Agc::ResourceRegistration::getMaxNameLength(unsigned int*)`. sharpemu writes 256 and KytyPS5 returns `RESOURCE_REGISTRATION_UNAVAILABLE`, so the value is unverified; a null output throws
|
||||
- [Shader registration](../../core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp) (libSceAgcDriver) - a shader header is accepted at any address: PPSA26344 passes headers 4 and 1 bytes past an 8-byte boundary; whether the console refuses an alignment is unknown
|
||||
|
|
|
|||
Loading…
Reference in New Issue