mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-15 19:28:29 +12:00
nn_fp: Full rework of friend service
This commit is contained in:
parent
13a50a915e
commit
0d71885c88
37 changed files with 2862 additions and 1991 deletions
|
@ -724,7 +724,7 @@ uint32 RPLLoader_MakePPCCallable(void(*ppcCallableExport)(PPCInterpreter_t* hCPU
|
|||
if (it != g_map_callableExports.end())
|
||||
return it->second;
|
||||
// get HLE function index
|
||||
sint32 functionIndex = PPCInterpreter_registerHLECall(ppcCallableExport);
|
||||
sint32 functionIndex = PPCInterpreter_registerHLECall(ppcCallableExport, fmt::format("PPCCallback{:x}", (uintptr_t)ppcCallableExport));
|
||||
MPTR codeAddr = memory_getVirtualOffsetFromPointer(RPLLoader_AllocateTrampolineCodeSpace(4));
|
||||
uint32 opcode = (1 << 26) | functionIndex;
|
||||
memory_write<uint32>(codeAddr, opcode);
|
||||
|
|
|
@ -85,6 +85,7 @@ void osLib_addFunctionInternal(const char* libraryName, const char* functionName
|
|||
uint32 funcHashA, funcHashB;
|
||||
osLib_generateHashFromName(libraryName, &libHashA, &libHashB);
|
||||
osLib_generateHashFromName(functionName, &funcHashA, &funcHashB);
|
||||
std::string hleName = fmt::format("{}.{}", libraryName, functionName);
|
||||
// if entry already exists, update it
|
||||
for (auto& it : *s_osFunctionTable)
|
||||
{
|
||||
|
@ -93,11 +94,11 @@ void osLib_addFunctionInternal(const char* libraryName, const char* functionName
|
|||
it.funcHashA == funcHashA &&
|
||||
it.funcHashB == funcHashB)
|
||||
{
|
||||
it.hleFunc = PPCInterpreter_registerHLECall(osFunction);
|
||||
it.hleFunc = PPCInterpreter_registerHLECall(osFunction, hleName);
|
||||
return;
|
||||
}
|
||||
}
|
||||
s_osFunctionTable->emplace_back(libHashA, libHashB, funcHashA, funcHashB, fmt::format("{}.{}", libraryName, functionName), PPCInterpreter_registerHLECall(osFunction));
|
||||
s_osFunctionTable->emplace_back(libHashA, libHashB, funcHashA, funcHashB, hleName, PPCInterpreter_registerHLECall(osFunction, hleName));
|
||||
}
|
||||
|
||||
extern "C" DLLEXPORT void osLib_registerHLEFunction(const char* libraryName, const char* functionName, void(*osFunction)(PPCInterpreter_t * hCPU))
|
||||
|
|
|
@ -912,8 +912,8 @@ namespace coreinit
|
|||
sint32 FSOpenFile(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, char* path, char* mode, FSFileHandleDepr_t* fileHandle, uint32 errHandling)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSOpenFileAsync(fsClient, fsCmdBlock, path, mode, fileHandle, errHandling, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSOpenFileAsync(fsClient, fsCmdBlock, path, mode, fileHandle, errHandling, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errHandling);
|
||||
}
|
||||
|
||||
|
@ -941,8 +941,8 @@ namespace coreinit
|
|||
sint32 FSOpenFileEx(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, char* path, char* mode, uint32 createMode, uint32 openFlag, uint32 preallocSize, FSFileHandleDepr_t* fileHandle, uint32 errHandling)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSOpenFileExAsync(fsClient, fsCmdBlock, path, mode, createMode, openFlag, preallocSize, fileHandle, errHandling, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSOpenFileExAsync(fsClient, fsCmdBlock, path, mode, createMode, openFlag, preallocSize, fileHandle, errHandling, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errHandling);
|
||||
}
|
||||
|
||||
|
@ -975,8 +975,8 @@ namespace coreinit
|
|||
sint32 FSCloseFile(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, uint32 fileHandle, uint32 errHandling)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSCloseFileAsync(fsClient, fsCmdBlock, fileHandle, errHandling, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSCloseFileAsync(fsClient, fsCmdBlock, fileHandle, errHandling, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errHandling);
|
||||
}
|
||||
|
||||
|
@ -1009,8 +1009,8 @@ namespace coreinit
|
|||
sint32 FSFlushFile(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, uint32 fileHandle, uint32 errHandling)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSFlushFileAsync(fsClient, fsCmdBlock, fileHandle, errHandling, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSFlushFileAsync(fsClient, fsCmdBlock, fileHandle, errHandling, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errHandling);
|
||||
}
|
||||
|
||||
|
@ -1090,7 +1090,7 @@ namespace coreinit
|
|||
sint32 FSReadFile(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, void* dst, uint32 size, uint32 count, uint32 fileHandle, uint32 flag, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSReadFileAsync(fsClient, fsCmdBlock, dst, size, count, fileHandle, flag, errorMask, asyncParams.GetPointer());
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
@ -1105,7 +1105,7 @@ namespace coreinit
|
|||
sint32 FSReadFileWithPos(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, void* dst, uint32 size, uint32 count, uint32 filePos, uint32 fileHandle, uint32 flag, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSReadFileWithPosAsync(fsClient, fsCmdBlock, dst, size, count, filePos, fileHandle, flag, errorMask, asyncParams.GetPointer());
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
@ -1183,7 +1183,7 @@ namespace coreinit
|
|||
sint32 FSWriteFile(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, void* src, uint32 size, uint32 count, uint32 fileHandle, uint32 flag, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSWriteFileAsync(fsClient, fsCmdBlock, src, size, count, fileHandle, flag, errorMask, asyncParams.GetPointer());
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
@ -1196,7 +1196,7 @@ namespace coreinit
|
|||
sint32 FSWriteFileWithPos(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, void* src, uint32 size, uint32 count, uint32 filePos, uint32 fileHandle, uint32 flag, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSWriteFileWithPosAsync(fsClient, fsCmdBlock, src, size, count, filePos, fileHandle, flag, errorMask, asyncParams.GetPointer());
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
@ -1228,7 +1228,7 @@ namespace coreinit
|
|||
{
|
||||
// used by games: Mario Kart 8
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSSetPosFileAsync(fsClient, fsCmdBlock, fileHandle, filePos, errorMask, asyncParams.GetPointer());
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
@ -1259,7 +1259,7 @@ namespace coreinit
|
|||
sint32 FSGetPosFile(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, uint32 fileHandle, uint32be* returnedFilePos, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSGetPosFileAsync(fsClient, fsCmdBlock, fileHandle, returnedFilePos, errorMask, asyncParams.GetPointer());
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
@ -1307,8 +1307,8 @@ namespace coreinit
|
|||
sint32 FSOpenDir(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, char* path, FSDirHandlePtr dirHandleOut, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSOpenDirAsync(fsClient, fsCmdBlock, path, dirHandleOut, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSOpenDirAsync(fsClient, fsCmdBlock, path, dirHandleOut, errorMask, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
||||
|
@ -1337,8 +1337,8 @@ namespace coreinit
|
|||
sint32 FSReadDir(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, FSDirHandle2 dirHandle, FSDirEntry_t* dirEntryOut, uint32 errorMask, FSAsyncParamsNew_t* fsAsyncParams)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSReadDirAsync(fsClient, fsCmdBlock, dirHandle, dirEntryOut, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSReadDirAsync(fsClient, fsCmdBlock, dirHandle, dirEntryOut, errorMask, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
||||
|
@ -1367,8 +1367,8 @@ namespace coreinit
|
|||
sint32 FSCloseDir(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, FSDirHandle2 dirHandle, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSCloseDirAsync(fsClient, fsCmdBlock, dirHandle, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSCloseDirAsync(fsClient, fsCmdBlock, dirHandle, errorMask, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
||||
|
@ -1400,8 +1400,8 @@ namespace coreinit
|
|||
sint32 FSRewindDir(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, FSDirHandle2 dirHandle, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSRewindDirAsync(fsClient, fsCmdBlock, dirHandle, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSRewindDirAsync(fsClient, fsCmdBlock, dirHandle, errorMask, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
||||
|
@ -1435,7 +1435,7 @@ namespace coreinit
|
|||
sint32 FSAppendFile(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, uint32 size, uint32 count, uint32 fileHandle, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSAppendFileAsync(fsClient, fsCmdBlock, size, count, fileHandle, errorMask, asyncParams.GetPointer());
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
@ -1467,7 +1467,7 @@ namespace coreinit
|
|||
sint32 FSTruncateFile(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, FSFileHandle2 fileHandle, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSTruncateFileAsync(fsClient, fsCmdBlock, fileHandle, errorMask, asyncParams.GetPointer());
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
@ -1531,7 +1531,7 @@ namespace coreinit
|
|||
sint32 FSRename(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, char* srcPath, char* dstPath, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSRenameAsync(fsClient, fsCmdBlock, srcPath, dstPath, errorMask, asyncParams.GetPointer());
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
@ -1582,8 +1582,8 @@ namespace coreinit
|
|||
sint32 FSRemove(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, uint8* filePath, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSRemoveAsync(fsClient, fsCmdBlock, filePath, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSRemoveAsync(fsClient, fsCmdBlock, filePath, errorMask, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
||||
|
@ -1634,8 +1634,8 @@ namespace coreinit
|
|||
sint32 FSMakeDir(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, const char* path, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSMakeDirAsync(fsClient, fsCmdBlock, path, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSMakeDirAsync(fsClient, fsCmdBlock, path, errorMask, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
||||
|
@ -1683,8 +1683,8 @@ namespace coreinit
|
|||
sint32 FSChangeDir(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, char* path, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSChangeDirAsync(fsClient, fsCmdBlock, path, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSChangeDirAsync(fsClient, fsCmdBlock, path, errorMask, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
||||
|
@ -1718,8 +1718,8 @@ namespace coreinit
|
|||
sint32 FSGetCwd(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, char* dirPathOut, sint32 dirPathMaxLen, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSGetCwdAsync(fsClient, fsCmdBlock, dirPathOut, dirPathMaxLen, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSGetCwdAsync(fsClient, fsCmdBlock, dirPathOut, dirPathMaxLen, errorMask, &asyncParams);
|
||||
auto r = __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
return r;
|
||||
}
|
||||
|
@ -1763,8 +1763,8 @@ namespace coreinit
|
|||
sint32 FSFlushQuota(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, char* path, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSFlushQuotaAsync(fsClient, fsCmdBlock, path, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSFlushQuotaAsync(fsClient, fsCmdBlock, path, errorMask, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
||||
|
@ -1821,8 +1821,8 @@ namespace coreinit
|
|||
sint32 FSGetStat(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, const char* path, FSStat_t* statOut, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSGetStatAsync(fsClient, fsCmdBlock, path, statOut, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSGetStatAsync(fsClient, fsCmdBlock, path, statOut, errorMask, &asyncParams);
|
||||
sint32 ret = __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
return ret;
|
||||
}
|
||||
|
@ -1858,8 +1858,8 @@ namespace coreinit
|
|||
sint32 FSGetStatFile(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, FSFileHandle2 fileHandle, FSStat_t* statOut, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSGetStatFileAsync(fsClient, fsCmdBlock, fileHandle, statOut, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSGetStatFileAsync(fsClient, fsCmdBlock, fileHandle, statOut, errorMask, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
||||
|
@ -1873,8 +1873,8 @@ namespace coreinit
|
|||
sint32 FSGetFreeSpaceSize(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, const char* path, FSLargeSize* returnedFreeSize, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSGetFreeSpaceSizeAsync(fsClient, fsCmdBlock, path, returnedFreeSize, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSGetFreeSpaceSizeAsync(fsClient, fsCmdBlock, path, returnedFreeSize, errorMask, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
||||
|
@ -1908,8 +1908,8 @@ namespace coreinit
|
|||
sint32 FSIsEof(FSClient_t* fsClient, FSCmdBlock_t* fsCmdBlock, uint32 fileHandle, uint32 errorMask)
|
||||
{
|
||||
StackAllocator<FSAsyncParamsNew_t, 1> asyncParams;
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, asyncParams);
|
||||
sint32 fsAsyncRet = FSIsEofAsync(fsClient, fsCmdBlock, fileHandle, errorMask, asyncParams);
|
||||
__FSAsyncToSyncInit(fsClient, fsCmdBlock, &asyncParams);
|
||||
sint32 fsAsyncRet = FSIsEofAsync(fsClient, fsCmdBlock, fileHandle, errorMask, &asyncParams);
|
||||
return __FSProcessAsyncResult(fsClient, fsCmdBlock, fsAsyncRet, errorMask);
|
||||
}
|
||||
|
||||
|
|
|
@ -355,23 +355,6 @@ namespace coreinit
|
|||
IOS_ERROR _IPCDriver_SetupCmd_IOSIoctlv(IPCDriver& ipcDriver, IPCResourceBufferDescriptor* requestDescriptor, uint32 requestId, uint32 numIn, uint32 numOut, IPCIoctlVector* vec)
|
||||
{
|
||||
IPCCommandBody& cmdBody = requestDescriptor->resourcePtr->commandBody;
|
||||
// verify input and output vectors
|
||||
IPCIoctlVector* vecIn = vec;
|
||||
IPCIoctlVector* vecOut = vec + numIn;
|
||||
for (uint32 i = 0; i < numIn; i++)
|
||||
{
|
||||
if (vecIn[i].baseVirt == nullptr && vecIn[i].size != 0)
|
||||
return IOS_ERROR_INVALID_ARG;
|
||||
vecIn[i].basePhys = vecIn[i].baseVirt;
|
||||
vecIn[i].baseVirt = nullptr;
|
||||
}
|
||||
for (uint32 i = 0; i < numOut; i++)
|
||||
{
|
||||
if (vecOut[i].baseVirt == nullptr && vecOut[i].size != 0)
|
||||
return IOS_ERROR_INVALID_ARG;
|
||||
vecOut[i].basePhys = vecOut[i].baseVirt;
|
||||
vecOut[i].baseVirt = nullptr;
|
||||
}
|
||||
// set args
|
||||
cmdBody.ppcVirt0 = MEMPTR<void>(vec).GetMPTR();
|
||||
cmdBody.args[0] = requestId;
|
||||
|
|
|
@ -195,7 +195,28 @@ namespace coreinit
|
|||
else if ((formatStr[0] == 'l' && formatStr[1] == 'l' && (formatStr[2] == 'x' || formatStr[2] == 'X')))
|
||||
{
|
||||
formatStr += 3;
|
||||
// number (64bit)
|
||||
// double (64bit)
|
||||
strncpy(tempFormat, formatStart, std::min((std::ptrdiff_t)sizeof(tempFormat) - 1, formatStr - formatStart));
|
||||
if ((formatStr - formatStart) < sizeof(tempFormat))
|
||||
tempFormat[(formatStr - formatStart)] = '\0';
|
||||
else
|
||||
tempFormat[sizeof(tempFormat) - 1] = '\0';
|
||||
if (integerParamIndex & 1)
|
||||
integerParamIndex++;
|
||||
sint32 tempLen = sprintf(tempStr, tempFormat, PPCInterpreter_getCallParamU64(hCPU, integerParamIndex));
|
||||
integerParamIndex += 2;
|
||||
for (sint32 i = 0; i < tempLen; i++)
|
||||
{
|
||||
if (writeIndex >= maxLength)
|
||||
break;
|
||||
strOut[writeIndex] = tempStr[i];
|
||||
writeIndex++;
|
||||
}
|
||||
}
|
||||
else if ((formatStr[0] == 'l' && formatStr[1] == 'l' && formatStr[2] == 'd'))
|
||||
{
|
||||
formatStr += 3;
|
||||
// signed integer (64bit)
|
||||
strncpy(tempFormat, formatStart, std::min((std::ptrdiff_t)sizeof(tempFormat) - 1, formatStr - formatStart));
|
||||
if ((formatStr - formatStart) < sizeof(tempFormat))
|
||||
tempFormat[(formatStr - formatStart)] = '\0';
|
||||
|
|
|
@ -859,10 +859,10 @@ namespace H264
|
|||
return H264DEC_STATUS::SUCCESS;
|
||||
}
|
||||
StackAllocator<coreinit::OSEvent> executeDoneEvent;
|
||||
coreinit::OSInitEvent(executeDoneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
coreinit::OSInitEvent(&executeDoneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
std::vector<H264AVCDecoder::DecodeResult> results;
|
||||
auto asyncTask = std::async(std::launch::async, _async_H264DECEnd, executeDoneEvent.GetPointer(), session, ctx, &results);
|
||||
coreinit::OSWaitEvent(executeDoneEvent);
|
||||
coreinit::OSWaitEvent(&executeDoneEvent);
|
||||
_ReleaseDecoderSession(session);
|
||||
if (!results.empty())
|
||||
{
|
||||
|
@ -977,9 +977,9 @@ namespace H264
|
|||
StackAllocator<H264DECFrameOutput, 8> stack_decodedFrameResult;
|
||||
|
||||
for (sint32 i = 0; i < outputFrameCount; i++)
|
||||
stack_resultPtrArray[i] = stack_decodedFrameResult + i;
|
||||
stack_resultPtrArray[i] = &stack_decodedFrameResult + i;
|
||||
|
||||
H264DECFrameOutput* frameOutput = stack_decodedFrameResult + 0;
|
||||
H264DECFrameOutput* frameOutput = &stack_decodedFrameResult + 0;
|
||||
memset(frameOutput, 0x00, sizeof(H264DECFrameOutput));
|
||||
frameOutput->imagePtr = (uint8*)decodeResult.imageOutput;
|
||||
frameOutput->result = 100;
|
||||
|
@ -1022,10 +1022,10 @@ namespace H264
|
|||
return 0;
|
||||
}
|
||||
StackAllocator<coreinit::OSEvent> executeDoneEvent;
|
||||
coreinit::OSInitEvent(executeDoneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
coreinit::OSInitEvent(&executeDoneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
H264AVCDecoder::DecodeResult decodeResult;
|
||||
auto asyncTask = std::async(std::launch::async, _async_H264DECExecute, executeDoneEvent.GetPointer(), session, ctx, imageOutput , &decodeResult);
|
||||
coreinit::OSWaitEvent(executeDoneEvent);
|
||||
auto asyncTask = std::async(std::launch::async, _async_H264DECExecute, &executeDoneEvent, session, ctx, imageOutput , &decodeResult);
|
||||
coreinit::OSWaitEvent(&executeDoneEvent);
|
||||
_ReleaseDecoderSession(session);
|
||||
if(decodeResult.frameReady)
|
||||
H264DoFrameOutputCallback(ctx, decodeResult);
|
||||
|
|
|
@ -391,7 +391,7 @@ void nnActExport_GetMiiName(PPCInterpreter_t* hCPU)
|
|||
|
||||
StackAllocator<FFLData_t> miiData;
|
||||
|
||||
uint32 r = nn::act::GetMiiEx(miiData, iosu::act::ACT_SLOT_CURRENT);
|
||||
uint32 r = nn::act::GetMiiEx(&miiData, iosu::act::ACT_SLOT_CURRENT);
|
||||
// extract name
|
||||
sint32 miiNameLength = 0;
|
||||
for (sint32 i = 0; i < MII_FFL_NAME_LENGTH; i++)
|
||||
|
@ -414,7 +414,7 @@ void nnActExport_GetMiiNameEx(PPCInterpreter_t* hCPU)
|
|||
|
||||
StackAllocator<FFLData_t> miiData;
|
||||
|
||||
uint32 r = nn::act::GetMiiEx(miiData, slot);
|
||||
uint32 r = nn::act::GetMiiEx(&miiData, slot);
|
||||
// extract name
|
||||
sint32 miiNameLength = 0;
|
||||
for (sint32 i = 0; i < MII_FFL_NAME_LENGTH; i++)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -47,10 +47,10 @@ namespace nn
|
|||
InitializeOliveRequest(req);
|
||||
|
||||
StackAllocator<coreinit::OSEvent> requestDoneEvent;
|
||||
coreinit::OSInitEvent(requestDoneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
coreinit::OSInitEvent(&requestDoneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
std::future<sint32> requestRes = std::async(std::launch::async, DownloadCommunityDataList_AsyncRequest,
|
||||
std::ref(req), reqUrl, requestDoneEvent.GetPointer(), pOutList, pOutNum, numMaxList, pParam);
|
||||
coreinit::OSWaitEvent(requestDoneEvent);
|
||||
coreinit::OSWaitEvent(&requestDoneEvent);
|
||||
|
||||
return requestRes.get();
|
||||
}
|
||||
|
|
|
@ -199,9 +199,9 @@ namespace nn
|
|||
InitializeOliveRequest(req);
|
||||
|
||||
StackAllocator<coreinit::OSEvent> requestDoneEvent;
|
||||
coreinit::OSInitEvent(requestDoneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
coreinit::OSInitEvent(&requestDoneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
std::future<sint32> requestRes = std::async(std::launch::async, MakeDiscoveryRequest_AsyncRequest, std::ref(req), requestUrl.c_str(), requestDoneEvent.GetPointer());
|
||||
coreinit::OSWaitEvent(requestDoneEvent);
|
||||
coreinit::OSWaitEvent(&requestDoneEvent);
|
||||
|
||||
return requestRes.get();
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ namespace nn
|
|||
// open archive
|
||||
g_offlineDBArchive = ZArchiveReader::OpenFromFile(ActiveSettings::GetUserDataPath("resources/miiverse/OfflineDB.zar"));
|
||||
if(!g_offlineDBArchive)
|
||||
cemuLog_log(LogType::Force, "Failed to open resources/miiverse/OfflineDB.zar. Miiverse posts will not be available");
|
||||
cemuLog_log(LogType::Force, "Offline miiverse posts are not available");
|
||||
g_offlineDBInitialized = true;
|
||||
}
|
||||
|
||||
|
@ -175,9 +175,9 @@ namespace nn
|
|||
return OLV_RESULT_SUCCESS; // the offlineDB doesn't contain any self posts
|
||||
|
||||
StackAllocator<coreinit::OSEvent> doneEvent;
|
||||
coreinit::OSInitEvent(doneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
coreinit::OSInitEvent(&doneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
auto asyncTask = std::async(std::launch::async, _Async_OfflineDB_DownloadPostDataListParam_DownloadPostDataList, doneEvent.GetPointer(), downloadedTopicData, downloadedPostData, postCountOut, maxCount, param);
|
||||
coreinit::OSWaitEvent(doneEvent);
|
||||
coreinit::OSWaitEvent(&doneEvent);
|
||||
nnResult r = asyncTask.get();
|
||||
return r;
|
||||
}
|
||||
|
@ -204,9 +204,9 @@ namespace nn
|
|||
nnResult OfflineDB_DownloadPostDataListParam_DownloadExternalImageData(DownloadedDataBase* _this, void* imageDataOut, uint32be* imageSizeOut, uint32 maxSize)
|
||||
{
|
||||
StackAllocator<coreinit::OSEvent> doneEvent;
|
||||
coreinit::OSInitEvent(doneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
coreinit::OSInitEvent(&doneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
auto asyncTask = std::async(std::launch::async, _Async_OfflineDB_DownloadPostDataListParam_DownloadExternalImageData, doneEvent.GetPointer(), _this, imageDataOut, imageSizeOut, maxSize);
|
||||
coreinit::OSWaitEvent(doneEvent);
|
||||
coreinit::OSWaitEvent(&doneEvent);
|
||||
nnResult r = asyncTask.get();
|
||||
return r;
|
||||
}
|
||||
|
|
|
@ -54,9 +54,9 @@ namespace nn
|
|||
InitializeOliveRequest(req);
|
||||
|
||||
StackAllocator<coreinit::OSEvent> requestDoneEvent;
|
||||
coreinit::OSInitEvent(requestDoneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
coreinit::OSInitEvent(&requestDoneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
std::future<sint32> requestRes = std::async(std::launch::async, UploadCommunityData_AsyncRequest, std::ref(req), requestUrl, requestDoneEvent.GetPointer(), pOutData, pParam);
|
||||
coreinit::OSWaitEvent(requestDoneEvent);
|
||||
coreinit::OSWaitEvent(&requestDoneEvent);
|
||||
|
||||
return requestRes.get();
|
||||
}
|
||||
|
|
|
@ -44,9 +44,9 @@ namespace nn
|
|||
InitializeOliveRequest(req);
|
||||
|
||||
StackAllocator<coreinit::OSEvent> requestDoneEvent;
|
||||
coreinit::OSInitEvent(requestDoneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
coreinit::OSInitEvent(&requestDoneEvent, coreinit::OSEvent::EVENT_STATE::STATE_NOT_SIGNALED, coreinit::OSEvent::EVENT_MODE::MODE_MANUAL);
|
||||
std::future<sint32> requestRes = std::async(std::launch::async, UploadFavoriteToCommunityData_AsyncRequest, std::ref(req), requestUrl, requestDoneEvent.GetPointer(), pOutData, pParam);
|
||||
coreinit::OSWaitEvent(requestDoneEvent);
|
||||
coreinit::OSWaitEvent(&requestDoneEvent);
|
||||
|
||||
return requestRes.get();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue