diff --git a/src/core/libraries/np_manager/np_manager.cpp b/src/core/libraries/np_manager/np_manager.cpp index a761caa73..e4c24cad3 100644 --- a/src/core/libraries/np_manager/np_manager.cpp +++ b/src/core/libraries/np_manager/np_manager.cpp @@ -874,8 +874,16 @@ int PS4_SYSV_ABI sceNpCheckCallback() { return ORBIS_OK; } +struct NpStateCallbackForNpToolkit { + OrbisNpStateCallbackForNpToolkit func; + void* userdata; +}; + +NpStateCallbackForNpToolkit NpStateCbForNp; + int PS4_SYSV_ABI sceNpCheckCallbackForLib() { - LOG_ERROR(Lib_NpManager, "(STUBBED) called"); + // LOG_ERROR(Lib_NpManager, "(STUBBED) called"); + NpStateCbForNp.func(0, ORBIS_NP_STATE_SIGNED_OUT, NpStateCbForNp.userdata); return ORBIS_OK; } @@ -2507,9 +2515,12 @@ int PS4_SYSV_ABI Func_FF966E4351E564D6() { return ORBIS_OK; } -int PS4_SYSV_ABI sceNpRegisterStateCallbackForToolkit() { +int PS4_SYSV_ABI sceNpRegisterStateCallbackForToolkit(OrbisNpStateCallbackForNpToolkit callback, + void* userdata) { LOG_ERROR(Lib_NpManager, "(STUBBED) called"); - return ORBIS_OK; + NpStateCbForNp.func = callback; + NpStateCbForNp.userdata = userdata; + return 1; } int PS4_SYSV_ABI sceNpUnregisterStateCallbackForToolkit() { diff --git a/src/core/libraries/np_manager/np_manager.h b/src/core/libraries/np_manager/np_manager.h index 5955a40b4..fa0ac82f3 100644 --- a/src/core/libraries/np_manager/np_manager.h +++ b/src/core/libraries/np_manager/np_manager.h @@ -11,6 +11,15 @@ class SymbolsResolver; namespace Libraries::NpManager { +enum OrbisNpState { + ORBIS_NP_STATE_UNKNOWN = 0, + ORBIS_NP_STATE_SIGNED_OUT, + ORBIS_NP_STATE_SIGNED_IN +}; + +using OrbisNpStateCallbackForNpToolkit = PS4_SYSV_ABI void (*)(s32 userId, OrbisNpState state, + void* userdata); + constexpr int ORBIS_NP_ONLINEID_MAX_LENGTH = 16; typedef int OrbisUserServiceUserId; @@ -526,7 +535,8 @@ int PS4_SYSV_ABI Func_F91B5B25CC9B30D9(); int PS4_SYSV_ABI Func_FC335B7102A585B3(); int PS4_SYSV_ABI Func_FCEAC354CA8B206E(); int PS4_SYSV_ABI Func_FF966E4351E564D6(); -int PS4_SYSV_ABI sceNpRegisterStateCallbackForToolkit(); +int PS4_SYSV_ABI sceNpRegisterStateCallbackForToolkit(OrbisNpStateCallbackForNpToolkit callback, + void* userdata); int PS4_SYSV_ABI sceNpUnregisterStateCallbackForToolkit(); void RegisterlibSceNpManager(Core::Loader::SymbolsResolver* sym);