diff --git a/src/core/hle/libraries/libs.cpp b/src/core/hle/libraries/libs.cpp index 815a7c547..938abbe3d 100644 --- a/src/core/hle/libraries/libs.cpp +++ b/src/core/hle/libraries/libs.cpp @@ -6,7 +6,7 @@ #include "core/hle/libraries/libpad/pad.h" #include "core/hle/libraries/libsystemservice/system_service.h" #include "core/hle/libraries/libc/libc.h" - +#include "core/hle/libraries/libsavedata/save_data.h" namespace Core::Libraries { void InitHLELibs(Loader::SymbolsResolver* sym) { @@ -17,6 +17,7 @@ void InitHLELibs(Loader::SymbolsResolver* sym) { LibPad::padSymbolsRegister(sym); LibSystemService::systemServiceSymbolsRegister(sym); LibC::libcSymbolsRegister(sym); + LibSaveData::saveDataSymbolsRegister(sym); } } // namespace Core::Libraries diff --git a/src/core/hle/libraries/libsavedata/save_data.cpp b/src/core/hle/libraries/libsavedata/save_data.cpp new file mode 100644 index 000000000..b238253e2 --- /dev/null +++ b/src/core/hle/libraries/libsavedata/save_data.cpp @@ -0,0 +1,16 @@ +#include "save_data.h" + +#include +#include + +#include "common/log.h" + +namespace Core::Libraries::LibSaveData { +s32 sceSaveDataMount2(const SceSaveDataMount2* mount, SceSaveDataMountResult* mountResult) { + PRINT_DUMMY_FUNCTION_NAME(); + return SCE_OK; +} +void saveDataSymbolsRegister(Loader::SymbolsResolver* sym) { + LIB_FUNCTION("0z45PIH+SNI", "libSceSaveData", 1, "libSceSaveData", 1, 1, sceSaveDataMount2); +} +} // namespace Core::Libraries::LibSaveData \ No newline at end of file diff --git a/src/core/hle/libraries/libsavedata/save_data.h b/src/core/hle/libraries/libsavedata/save_data.h new file mode 100644 index 000000000..1eb86a33d --- /dev/null +++ b/src/core/hle/libraries/libsavedata/save_data.h @@ -0,0 +1,51 @@ +#pragma once + +#include + +#include "common/types.h" + +namespace Core::Loader { +class SymbolsResolver; +} + +namespace Core::Libraries::LibSaveData { + +constexpr int SCE_SAVE_DATA_TITLE_ID_DATA_SIZE = 10; // Save data title ID size +constexpr int SCE_SAVE_DATA_DIRNAME_DATA_MAXSIZE = 32; // Maximum size for a save data directory name +constexpr int SCE_SAVE_DATA_MOUNT_POINT_DATA_MAXSIZE = 16; // Maximum size for a mount point name +constexpr int SCE_SAVE_DATA_FINGERPRINT_DATA_SIZE = 65; // Fingerprint size +constexpr int SCE_SAVE_DATA_TITLE_MAXSIZE = 128; // Maximum size for a save data title name (NULL-terminated, UTF-8) +constexpr int SCE_SAVE_DATA_SUBTITLE_MAXSIZE = 128; // Maximum size for a save data subtitle name (NULL-terminated, UTF-8) +constexpr int SCE_SAVE_DATA_DETAIL_MAXSIZE = 1024; // Maximum size for save data detailed information (NULL-terminated, UTF-8) + +struct SceSaveDataDirName { + char data[SCE_SAVE_DATA_DIRNAME_DATA_MAXSIZE]; +}; + +struct SceSaveDataMountPoint { + char data[SCE_SAVE_DATA_MOUNT_POINT_DATA_MAXSIZE]; +}; +struct SceSaveDataMount2 { + Core::Libraries::LibUserService::SceUserServiceUserId userId; + s32 padding; + const SceSaveDataDirName* dirName; + u64 blocks; + u32 mountMode; + u08 reserved[32]; + s32 padding2; +}; + +struct SceSaveDataMountResult { + SceSaveDataMountPoint mountPoint; + u64 requiredBlocks; + u32 unused; + u32 mountStatus; + u08 reserved[28]; + s32 padding; +}; + +s32 sceSaveDataMount2(const SceSaveDataMount2* mount, SceSaveDataMountResult* mountResult); + +void saveDataSymbolsRegister(Loader::SymbolsResolver* sym); + +} // namespace Core::Libraries::LibSaveData \ No newline at end of file