diff --git a/modules/libSceSharePlay/CMakeLists.txt b/modules/libSceSharePlay/CMakeLists.txt new file mode 100644 index 0000000..7e2c364 --- /dev/null +++ b/modules/libSceSharePlay/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.24) +include(../setupModule.cmake) + +set(libName libSceSharePlay) +project(${libName}) + +add_library(${libName} SHARED entry.cpp) + +setupModule(${libName}) \ No newline at end of file diff --git a/modules/libSceSharePlay/codes.h b/modules/libSceSharePlay/codes.h new file mode 100644 index 0000000..17700df --- /dev/null +++ b/modules/libSceSharePlay/codes.h @@ -0,0 +1,10 @@ +#pragma once +#include + +namespace Err { + constexpr int SCE_SHARE_PLAY_ERROR_INVALID_ARGS = -2129788927; /* 0x810E0001 */ + constexpr int SCE_SHARE_PLAY_ERROR_OUT_OF_MEMORY = -2129788926; /* 0x810E0002 */ + constexpr int SCE_SHARE_PLAY_ERROR_ALREADY_INITIALIZED = -2129788925; /* 0x810E0003 */ + constexpr int SCE_SHARE_PLAY_ERROR_NOT_INITIALIZED = -2129788924; /* 0x810E0004 */ + constexpr int SCE_SHARE_PLAY_ERROR_FATAL = -2129788923; /* 0x810E0005 */ +} // namespace Err \ No newline at end of file diff --git a/modules/libSceSharePlay/entry.cpp b/modules/libSceSharePlay/entry.cpp new file mode 100644 index 0000000..c9d52d4 --- /dev/null +++ b/modules/libSceSharePlay/entry.cpp @@ -0,0 +1,48 @@ +#include "common.h" +#include "logging.h" +#include "types.h" + +LOG_DEFINE_MODULE(libSceSharePlay); + +namespace {} // namespace + +extern "C" { + +EXPORT const char* MODULE_NAME = "libSceSharePlay"; + +EXPORT SYSV_ABI int32_t sceSharePlayInitialize(void* pHeap, size_t heapSize) { + LOG_USE_MODULE(libSceSharePlay); + + LOG_INFO(L"pHeap:0x%08llx heapSize:0x%08x", (uint64_t)pHeap, heapSize); + + LOG_ERR(L"TODO: %S", __FUNCTION__); + + return Ok; +} + +EXPORT SYSV_ABI int32_t sceSharePlayTerminate() { + LOG_USE_MODULE(libSceSharePlay); + + LOG_ERR(L"TODO: %S", __FUNCTION__); + + return Ok; +} + +EXPORT SYSV_ABI int32_t sceSharePlaySetProhibition(SceSharePlayProhibitionMode mode) { + LOG_USE_MODULE(libSceSharePlay); + + LOG_ERR(L"TODO: %S", __FUNCTION__); + + return Ok; +} + +EXPORT SYSV_ABI int32_t sceSharePlayGetCurrentConnectionInfoA(SceSharePlayConnectionInfoA* pInfo) { + LOG_USE_MODULE(libSceSharePlay); + + // *pInfo = {}; + + LOG_ERR(L"TODO: %S", __FUNCTION__); + + return Ok; +} +} \ No newline at end of file diff --git a/modules/libSceSharePlay/types.h b/modules/libSceSharePlay/types.h new file mode 100644 index 0000000..72603dd --- /dev/null +++ b/modules/libSceSharePlay/types.h @@ -0,0 +1,32 @@ +#pragma once +#include "codes.h" +#include "modules/libSceNpManager/types.h" + +enum class SceSharePlayProhibitionMode : unsigned int { + SCE_SHARE_PLAY_PROHIBITION_MODE_OFF = 0, + SCE_SHARE_PLAY_PROHIBITION_MODE_CONTROL_ONLY = 1, + SCE_SHARE_PLAY_PROHIBITION_MODE_CONTROL_SCREEN = 2 +} + +enum class SceSharePlayConnectionStatus : unsigned int { + SCE_SHARE_PLAY_CONNECTION_STATUS_DORMANT = 0, + SCE_SHARE_PLAY_CONNECTION_STATUS_READY = 1, + SCE_SHARE_PLAY_CONNECTION_STATUS_CONNECTED = 2, +} + +enum class SceSharePlayControllerMode : unsigned int { + SCE_SHARE_PLAY_CONTROLLER_MODE_WATCHING_HOST_PLAY = 0, + SCE_SHARE_PLAY_CONTROLLER_MODE_PLAYING_AS_HOST = 1, + SCE_SHARE_PLAY_CONTROLLER_MODE_PLAYING_GAME_WITH_HOST = 2, +} + +struct SceSharePlayConnectionInfoA { + SceSharePlayConnectionStatus status; + SceSharePlayControllerMode mode; + SceNpOnlineId hostOnelineId; + SceNpOnlineId visitorOnlineId; + SceNpAccountId hostAccountId; + SceNpAccountId visitorAccountId; + SceUserServiceUserId hostUserId; + SceUserServiceUserId visitorUserId; +} \ No newline at end of file