Implement some deprecated SaveData API

This commit is contained in:
igor725 2024-04-02 21:32:38 +03:00
parent 9938ea8a7d
commit bc7a2b98d4
No known key found for this signature in database
GPG Key ID: 46F13BBE46F8569D
8 changed files with 70 additions and 26 deletions

2
.vscode/launch.json vendored
View File

@ -6,7 +6,7 @@
"type": "cppvsdbg",
"request": "launch",
"program": "${config:psoff.root-path}/emulator.exe",
"args": ["--file", "${config:psoff.game-path}/eboot.bin", "--d"],
"args": ["--file", "${config:psoff.game-path}/eboot.bin", "--d", "${config:psoff.add-arg}"],
"stopAtEntry": false,
"cwd": "${config:psoff.root-path}",
"environment": [],

View File

@ -246,6 +246,11 @@ class VideoOut: public IVideoOut, private IEventsGraphics {
}
}
void getSafeAreaRatio(float* area) final {
auto ext = m_imageHandler.get()->getExtent();
if (area != nullptr) *area = ext.width / (float)ext.height;
}
vulkan::DeviceInfo* getDeviceInfo() final { return &m_vulkanObj->deviceInfo; }
int addEvent(int handle, EventQueue::KernelEqueueEvent const& event, Kernel::EventQueue::IKernelEqueue_t eq) final;

View File

@ -53,6 +53,13 @@ class IVideoOut {
*/
virtual void setFliprate(int handle, int rate) = 0;
/**
* @brief Returns the current display's safe area
*
* @param area
*/
virtual void getSafeAreaRatio(float* area) = 0;
/**
* @brief Add a VIDEO_OUT_EVENT for the window
*

View File

@ -207,10 +207,6 @@ EXPORT SYSV_ABI int32_t sceSaveDataSyncSaveDataMemory(const SceSaveDataMemorySyn
return Ok;
}
EXPORT SYSV_ABI int32_t sceSaveDataSetupSaveDataMemory(const SceUserServiceUserId userId, size_t memorySize, const SceSaveDataParam* param) {
return Ok;
}
EXPORT SYSV_ABI int32_t sceSaveDataSetupSaveDataMemory2(const SceSaveDataMemorySetup2* setupParam, SceSaveDataMemorySetupResult* result) {
if (setupParam == nullptr || setupParam->memorySize == 0 || setupParam->option != SceSaveDataMemoryOption::SET_PARAM) return getErr(ErrCode::_EINVAL);
@ -269,13 +265,21 @@ EXPORT SYSV_ABI int32_t sceSaveDataSetupSaveDataMemory2(const SceSaveDataMemoryS
return Ok;
}
EXPORT SYSV_ABI int32_t sceSaveDataGetSaveDataMemory(const SceUserServiceUserId userId, void* buf, const size_t bufSize, const uint64_t offset) {
if (buf == nullptr || bufSize == 0) return getErr(ErrCode::_EINVAL);
::memset(buf, 0, bufSize);
return Ok;
EXPORT SYSV_ABI int32_t sceSaveDataSetupSaveDataMemory(const SceUserServiceUserId userId, size_t memorySize, const SceSaveDataParam* param) {
const SceSaveDataMemorySetup2 ssdms2 {
.option = SceSaveDataMemoryOption::SET_PARAM,
.userId = userId,
.memorySize = memorySize,
.iconMemorySize = 0,
.initParam = param,
.initIcon = nullptr,
.slotId = 0,
};
return sceSaveDataSetupSaveDataMemory2(&ssdms2, nullptr);
}
EXPORT SYSV_ABI int32_t sceSaveDataGetSaveDataMemory2(SceSaveDataMemoryGet2* getParam) {
EXPORT SYSV_ABI int32_t sceSaveDataGetSaveDataMemory2(const SceSaveDataMemoryGet2* getParam) {
if (getParam == nullptr || getParam->data == nullptr || getParam->data->buf == nullptr) return getErr(ErrCode::_EINVAL);
auto filename = std::format("SLOT{}_UID{}.dat", getParam->slotId, getParam->userId);
@ -321,8 +325,21 @@ EXPORT SYSV_ABI int32_t sceSaveDataGetSaveDataMemory2(SceSaveDataMemoryGet2* get
return Ok;
}
EXPORT SYSV_ABI int32_t sceSaveDataSetSaveDataMemory(const SceUserServiceUserId userId, const void* buf, const size_t bufSize, const uint64_t offset) {
return Ok;
EXPORT SYSV_ABI int32_t sceSaveDataGetSaveDataMemory(const SceUserServiceUserId userId, void* buf, const size_t bufSize, const int64_t offset) {
if (buf == nullptr || bufSize == 0) return getErr(ErrCode::_EINVAL);
SceSaveDataMemoryData ssdmd {
.buf = buf,
.bufSize = bufSize,
.offset = offset,
};
const SceSaveDataMemoryGet2 ssdmg2 {
.userId = userId,
.data = &ssdmd,
.param = nullptr,
.icon = nullptr,
.slotId = 0,
};
return sceSaveDataGetSaveDataMemory2(&ssdmg2);
}
EXPORT SYSV_ABI int32_t sceSaveDataSetSaveDataMemory2(const SceSaveDataMemorySet2* setParam) {
@ -378,6 +395,23 @@ EXPORT SYSV_ABI int32_t sceSaveDataSetSaveDataMemory2(const SceSaveDataMemorySet
return Ok;
}
EXPORT SYSV_ABI int32_t sceSaveDataSetSaveDataMemory(const SceUserServiceUserId userId, const void* buf, const size_t bufSize, const int64_t offset) {
SceSaveDataMemoryData ssdmd {
.buf = (void*)buf,
.bufSize = bufSize,
.offset = offset,
};
const SceSaveDataMemorySet2 ssdms2 {
.userId = userId,
.data = &ssdmd,
.param = nullptr,
.icon = nullptr,
.dataNum = 1,
.slotId = 0,
};
return sceSaveDataSetSaveDataMemory2(&ssdms2);
}
EXPORT SYSV_ABI int32_t sceSaveDataRestoreBackupData(const SceSaveDataRestoreBackupData* restore) {
LOG_USE_MODULE(libSceSaveData);
LOG_ERR(L"todo %S", __FUNCTION__);

View File

@ -154,7 +154,7 @@ struct SceSaveDataDirNameSearchResult {
struct SceSaveDataMemorySync {
int32_t userId;
uint32_t slotId;
uint32_t slotId; // Values: 0...3
SceSaveDataMemorySyncOption option;
uint8_t reserved[28];
};
@ -203,7 +203,7 @@ struct SceSaveDataMemorySetup2 {
size_t iconMemorySize;
const SceSaveDataParam* initParam;
const SceSaveDataIcon* initIcon;
uint32_t slotId;
uint32_t slotId; // Values: 0...3
uint8_t reserved[20];
};
@ -218,7 +218,7 @@ struct SceSaveDataMemoryGet2 {
SceSaveDataMemoryData* data;
SceSaveDataParam* param;
SceSaveDataIcon* icon;
uint32_t slotId;
uint32_t slotId; // Values: 0...3
uint8_t reserved[28];
};
@ -229,7 +229,7 @@ struct SceSaveDataMemorySet2 {
const SceSaveDataParam* param;
const SceSaveDataIcon* icon;
uint32_t dataNum;
uint32_t slotId;
uint32_t slotId; // Values: 0...3
uint8_t reserved[24];
};
@ -243,4 +243,4 @@ struct SceSaveDataEvent {
SceSaveDataTitleId titleId;
SceSaveDataDirName dirName;
uint8_t reserved[40];
};
};

View File

@ -5,8 +5,9 @@ set(libName libSceSystemService)
project(${libName})
add_library(${libName} SHARED entry.cpp)
add_dependencies(${libName} core config_emu)
target_link_libraries(${libName} PRIVATE SDL2 ${Vulkan_LIBRARIES} config_emu.lib)
target_link_libraries(${libName} PRIVATE core.lib SDL2 ${Vulkan_LIBRARIES} config_emu.lib)
target_compile_definitions(${libName} PRIVATE BOOST_ALL_NO_LIB WIN32_LEAN_AND_MEAN)
setupModule(${libName})
setupModule(${libName})

View File

@ -1,4 +1,5 @@
#include "common.h"
#include "core/videoout/videoout.h"
#include "logging.h"
#include "system_param.h"
#include "tools/config_emu/config_emu.h"
@ -153,10 +154,7 @@ EXPORT SYSV_ABI int32_t sceSystemServiceGetDisplaySafeAreaInfo(SceSystemServiceD
return Err::SERVICE_ERROR_PARAMETER;
}
info->ratio = 16.0f / 9.0f;
LOG_USE_MODULE(libSceSystemService);
LOG_TRACE(L"todo %S", __FUNCTION__);
accessVideoOut().getSafeAreaRatio(&info->ratio);
return Ok;
}

View File

@ -1,7 +1,6 @@
cmake_minimum_required(VERSION 3.24)
set(libName libSceVideoOut)
include(../setupModule.cmake)
set(libName libSceVideoOut)
project(${libName})
add_library(${libName} SHARED entry.cpp)
@ -9,4 +8,4 @@ add_library(${libName} SHARED entry.cpp)
add_dependencies(${libName} core)
target_link_libraries(${libName} PRIVATE core.lib)
setupModule(${libName})
setupModule(${libName})