mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-02-13 21:40:56 +00:00
cellSaveData workaround
This commit is contained in:
parent
2d99f3556e
commit
65488078a4
@ -39,6 +39,23 @@ enum : u32
|
||||
SAVEDATA_OP_FIXED_DELETE = 14,
|
||||
};
|
||||
|
||||
namespace
|
||||
{
|
||||
struct savedata_context
|
||||
{
|
||||
CellSaveDataCBResult result;
|
||||
CellSaveDataListGet listGet;
|
||||
CellSaveDataListSet listSet;
|
||||
CellSaveDataFixedSet fixedSet;
|
||||
CellSaveDataStatGet statGet;
|
||||
CellSaveDataStatSet statSet;
|
||||
CellSaveDataFileGet fileGet;
|
||||
CellSaveDataFileSet fileSet;
|
||||
};
|
||||
}
|
||||
|
||||
vm::gvar<savedata_context> g_savedata_context;
|
||||
|
||||
std::mutex g_savedata_mutex;
|
||||
|
||||
static NEVER_INLINE s32 savedata_op(ppu_thread& ppu, u32 operation, u32 version, vm::cptr<char> dirName,
|
||||
@ -54,14 +71,16 @@ static NEVER_INLINE s32 savedata_op(ppu_thread& ppu, u32 operation, u32 version,
|
||||
return CELL_SAVEDATA_ERROR_BUSY;
|
||||
}
|
||||
|
||||
vm::var<CellSaveDataCBResult> result;
|
||||
vm::var<CellSaveDataListGet> listGet;
|
||||
vm::var<CellSaveDataListSet> listSet;
|
||||
vm::var<CellSaveDataFixedSet> fixedSet;
|
||||
vm::var<CellSaveDataStatGet> statGet;
|
||||
vm::var<CellSaveDataStatSet> statSet;
|
||||
vm::var<CellSaveDataFileGet> fileGet;
|
||||
vm::var<CellSaveDataFileSet> fileSet;
|
||||
*g_savedata_context = {};
|
||||
|
||||
vm::ptr<CellSaveDataCBResult> result = g_savedata_context.ptr(&savedata_context::result);
|
||||
vm::ptr<CellSaveDataListGet> listGet = g_savedata_context.ptr(&savedata_context::listGet);
|
||||
vm::ptr<CellSaveDataListSet> listSet = g_savedata_context.ptr(&savedata_context::listSet);
|
||||
vm::ptr<CellSaveDataFixedSet> fixedSet = g_savedata_context.ptr(&savedata_context::fixedSet);
|
||||
vm::ptr<CellSaveDataStatGet> statGet = g_savedata_context.ptr(&savedata_context::statGet);
|
||||
vm::ptr<CellSaveDataStatSet> statSet = g_savedata_context.ptr(&savedata_context::statSet);
|
||||
vm::ptr<CellSaveDataFileGet> fileGet = g_savedata_context.ptr(&savedata_context::fileGet);
|
||||
vm::ptr<CellSaveDataFileSet> fileSet = g_savedata_context.ptr(&savedata_context::fileSet);
|
||||
|
||||
// path of the specified user (00000001 by default)
|
||||
const std::string& base_dir = vfs::get(fmt::format("/dev_hdd0/home/%08u/savedata/", userId ? userId : 1u));
|
||||
@ -943,6 +962,8 @@ s32 cellSaveDataUserGetListItem(u32 userId, vm::cptr<char> dirName, vm::ptr<Cell
|
||||
|
||||
void cellSysutil_SaveData_init()
|
||||
{
|
||||
REG_VNID(cellSysutil, 0x00000000, g_savedata_context);
|
||||
|
||||
// libsysutil functions:
|
||||
REG_FUNC(cellSysutil, cellSaveDataEnableOverlay);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user