Files
AnyPS5/core/libs/prx/libSceSharePlay/Export.cpp
T
screammandClaude Fable 5.1 96988048ad feat(libSceSharePlay): implement sceSharePlayProhibitController
PRAGMATA (PPSA02530) imports sceSharePlayProhibitController (NID
FzQS6DREDfk), which no library exports on main, so the load fails on the
unresolved import. It is one of the "six declared-only imports" of
xXPBSXx's branch in #3043 (comment 6107100345): "These only stop the
load failure; as described above, the title calls some of them later and
needs their real behavior."

sharpemu src/SharpEmu.Libs/Share/SharePlayExports.cs:9-31
(a2983692930564815a77f81e74c151268f5b935f, used as a source of facts)
takes one value, accepts 0 and 1 and returns 0. Nothing here would read
the setting, as no Share Play session or visitor controller exists, so
it is not stored. sharpemu rejects other values with its synthetic
0x80020003, not a Share Play code, so they throw, as
sceSharePlayInitialize does for its unknown error. Like the other exports
of the library it does not check initialization. The NID hashes from the
name and is in aerolib. Unverified points are in TechnicalDebt.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-12 21:58:43 +02:00

35 lines
930 B
C++

#include <cstdint>
#include <cstddef>
#include "SceTypes.hpp"
#include "prx/libc/include/General.hpp"
static constexpr int SCE_SHARE_PLAY_ERROR_INVALID_ARGS = static_cast<int>(0x810E0001);
static constexpr std::int32_t SCE_USER_SERVICE_USER_ID_INVALID = -1;
extern "C" {
int APS5_VABI sceSharePlayInitialize(void* heap, size_t heapSize) {
(void)heap;
if (heapSize == 0) APS5_INVALID_ARG_EX;
return 0;
}
int APS5_VABI sceSharePlayTerminate(void) {
return 0;
}
int APS5_VABI sceSharePlayGetCurrentConnectionInfoA(SharePlayConnectionInfoA* info) {
if (info == nullptr) return SCE_SHARE_PLAY_ERROR_INVALID_ARGS;
*info = {};
info->hostUserId = SCE_USER_SERVICE_USER_ID_INVALID;
info->visitorUserId = SCE_USER_SERVICE_USER_ID_INVALID;
return 0;
}
int APS5_VABI sceSharePlayProhibitController(int prohibited) {
if (prohibited != 0 && prohibited != 1) APS5_INVALID_ARG_EX;
return 0;
}
}