diff --git a/libctru/include/3ds/services/fspxi.h b/libctru/include/3ds/services/fspxi.h index bac73f0..53528a7 100644 --- a/libctru/include/3ds/services/fspxi.h +++ b/libctru/include/3ds/services/fspxi.h @@ -94,7 +94,7 @@ Result FSPXI_ReadFile(Handle serviceHandle, FSPXI_File file, u32* bytesRead, u64 * @param buffer Buffer to output the hash to. * @param size Size of the buffer. */ -Result FSPXI_CalculateFileHashSHA256(Handle serviceHandle, FSPXI_File file, u32* buffer, u32 size); +Result FSPXI_CalculateFileHashSHA256(Handle serviceHandle, FSPXI_File file, void* buffer, u32 size); /** * @brief Writes to a file. diff --git a/libctru/source/services/fspxi.c b/libctru/source/services/fspxi.c index 5cdf003..6c3463e 100644 --- a/libctru/source/services/fspxi.c +++ b/libctru/source/services/fspxi.c @@ -9,214 +9,214 @@ Result FSPXI_OpenFile(Handle serviceHandle, FSPXI_File* out, FSPXI_Archive archive, FS_Path path, u32 flags, u32 attributes) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x1, 7, 2); // 0x000101C2 - cmdbuf[1] = 0; // transaction - cmdbuf[2] = (u32) archive; - cmdbuf[3] = (u32)(archive >> 32); - cmdbuf[4] = path.type; - cmdbuf[5] = path.size; - cmdbuf[6] = flags; - cmdbuf[7] = attributes; - cmdbuf[8] = IPC_Desc_PXIBuffer(path.size, 0, true); - cmdbuf[9] = (u32) path.data; + cmdbuf[0] = IPC_MakeHeader(0x1, 7, 2); // 0x000101C2 + cmdbuf[1] = 0; // transaction + cmdbuf[2] = (u32) archive; + cmdbuf[3] = (u32)(archive >> 32); + cmdbuf[4] = path.type; + cmdbuf[5] = path.size; + cmdbuf[6] = flags; + cmdbuf[7] = attributes; + cmdbuf[8] = IPC_Desc_PXIBuffer(path.size, 0, true); + cmdbuf[9] = (u32) path.data; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if (out) *out = cmdbuf[2] | ((u64) cmdbuf[3] << 32); + if (out) *out = cmdbuf[2] | ((u64) cmdbuf[3] << 32); - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_DeleteFile(Handle serviceHandle, FSPXI_Archive archive, FS_Path path) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x2, 5, 2); // 0x00020142 - cmdbuf[1] = 0; // transaction - cmdbuf[2] = (u32) archive; - cmdbuf[3] = (u32)(archive >> 32); - cmdbuf[4] = path.type; - cmdbuf[5] = path.size; - cmdbuf[6] = IPC_Desc_PXIBuffer(path.size, 0, true); - cmdbuf[7] = (u32) path.data; + cmdbuf[0] = IPC_MakeHeader(0x2, 5, 2); // 0x00020142 + cmdbuf[1] = 0; // transaction + cmdbuf[2] = (u32) archive; + cmdbuf[3] = (u32)(archive >> 32); + cmdbuf[4] = path.type; + cmdbuf[5] = path.size; + cmdbuf[6] = IPC_Desc_PXIBuffer(path.size, 0, true); + cmdbuf[7] = (u32) path.data; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_RenameFile(Handle serviceHandle, FSPXI_Archive srcArchive, FS_Path srcPath, FSPXI_Archive dstArchive, FS_Path dstPath) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x3, 9, 4); // 0x00030244 - cmdbuf[1] = 0; // transaction - cmdbuf[2] = (u32) srcArchive; - cmdbuf[3] = (u32)(srcArchive >> 32); - cmdbuf[4] = srcPath.type; - cmdbuf[5] = srcPath.size; - cmdbuf[6] = (u32) dstArchive; - cmdbuf[7] = (u32)(dstArchive >> 32); - cmdbuf[8] = dstPath.type; - cmdbuf[9] = dstPath.size; - cmdbuf[10] = IPC_Desc_PXIBuffer(srcPath.size, 0, true); - cmdbuf[11] = (u32) srcPath.data; - cmdbuf[12] = IPC_Desc_PXIBuffer(dstPath.size, 1, true); - cmdbuf[13] = (u32) dstPath.data; + cmdbuf[0] = IPC_MakeHeader(0x3, 9, 4); // 0x00030244 + cmdbuf[1] = 0; // transaction + cmdbuf[2] = (u32) srcArchive; + cmdbuf[3] = (u32)(srcArchive >> 32); + cmdbuf[4] = srcPath.type; + cmdbuf[5] = srcPath.size; + cmdbuf[6] = (u32) dstArchive; + cmdbuf[7] = (u32)(dstArchive >> 32); + cmdbuf[8] = dstPath.type; + cmdbuf[9] = dstPath.size; + cmdbuf[10] = IPC_Desc_PXIBuffer(srcPath.size, 0, true); + cmdbuf[11] = (u32) srcPath.data; + cmdbuf[12] = IPC_Desc_PXIBuffer(dstPath.size, 1, true); + cmdbuf[13] = (u32) dstPath.data; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_DeleteDirectory(Handle serviceHandle, FSPXI_Archive archive, FS_Path path) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x4, 5, 2); // 0x00040142 - cmdbuf[1] = 0; // transaction - cmdbuf[2] = (u32) archive; - cmdbuf[3] = (u32)(archive >> 32); - cmdbuf[4] = path.type; - cmdbuf[5] = path.size; - cmdbuf[6] = IPC_Desc_PXIBuffer(path.size, 0, false); - cmdbuf[7] = (u32) path.data; + cmdbuf[0] = IPC_MakeHeader(0x4, 5, 2); // 0x00040142 + cmdbuf[1] = 0; // transaction + cmdbuf[2] = (u32) archive; + cmdbuf[3] = (u32)(archive >> 32); + cmdbuf[4] = path.type; + cmdbuf[5] = path.size; + cmdbuf[6] = IPC_Desc_PXIBuffer(path.size, 0, false); + cmdbuf[7] = (u32) path.data; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_CreateFile(Handle serviceHandle, FSPXI_Archive archive, FS_Path path, u32 attributes, u64 fileSize) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x5, 8, 2); // 0x00050202 - cmdbuf[1] = 0; // transaction - cmdbuf[2] = (u32) archive; - cmdbuf[3] = (u32)(archive >> 32); - cmdbuf[4] = path.type; - cmdbuf[5] = path.size; - cmdbuf[6] = attributes; - cmdbuf[7] = (u32)fileSize; - cmdbuf[8] = (u32)(fileSize >> 32); - cmdbuf[8] = IPC_Desc_PXIBuffer(path.size, 0, true); - cmdbuf[9] = (u32) path.data; + cmdbuf[0] = IPC_MakeHeader(0x5, 8, 2); // 0x00050202 + cmdbuf[1] = 0; // transaction + cmdbuf[2] = (u32) archive; + cmdbuf[3] = (u32)(archive >> 32); + cmdbuf[4] = path.type; + cmdbuf[5] = path.size; + cmdbuf[6] = attributes; + cmdbuf[7] = (u32)fileSize; + cmdbuf[8] = (u32)(fileSize >> 32); + cmdbuf[8] = IPC_Desc_PXIBuffer(path.size, 0, true); + cmdbuf[9] = (u32) path.data; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_CreateDirectory(Handle serviceHandle, FSPXI_Archive archive, FS_Path path, u32 attributes) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x6, 6, 2); // 0x00060182 - cmdbuf[1] = 0; // transaction - cmdbuf[2] = (u32) archive; - cmdbuf[3] = (u32)(archive >> 32); - cmdbuf[4] = path.type; - cmdbuf[5] = path.size; - cmdbuf[6] = attributes; - cmdbuf[7] = IPC_Desc_PXIBuffer(path.size, 0, true); - cmdbuf[8] = (u32) path.data; + cmdbuf[0] = IPC_MakeHeader(0x6, 6, 2); // 0x00060182 + cmdbuf[1] = 0; // transaction + cmdbuf[2] = (u32) archive; + cmdbuf[3] = (u32)(archive >> 32); + cmdbuf[4] = path.type; + cmdbuf[5] = path.size; + cmdbuf[6] = attributes; + cmdbuf[7] = IPC_Desc_PXIBuffer(path.size, 0, true); + cmdbuf[8] = (u32) path.data; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_RenameDirectory(Handle serviceHandle, FSPXI_Archive srcArchive, FS_Path srcPath, FSPXI_Archive dstArchive, FS_Path dstPath) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x7, 9, 4); // 0x00070244 - cmdbuf[1] = 0; // transaction - cmdbuf[2] = (u32) srcArchive; - cmdbuf[3] = (u32)(srcArchive >> 32); - cmdbuf[4] = srcPath.type; - cmdbuf[5] = srcPath.size; - cmdbuf[6] = (u32) dstArchive; - cmdbuf[7] = (u32)(dstArchive >> 32); - cmdbuf[8] = dstPath.type; - cmdbuf[9] = dstPath.size; - cmdbuf[10] = IPC_Desc_PXIBuffer(srcPath.size, 0, true); - cmdbuf[11] = (u32) srcPath.data; - cmdbuf[12] = IPC_Desc_PXIBuffer(dstPath.size, 1, true); - cmdbuf[13] = (u32) dstPath.data; + cmdbuf[0] = IPC_MakeHeader(0x7, 9, 4); // 0x00070244 + cmdbuf[1] = 0; // transaction + cmdbuf[2] = (u32) srcArchive; + cmdbuf[3] = (u32)(srcArchive >> 32); + cmdbuf[4] = srcPath.type; + cmdbuf[5] = srcPath.size; + cmdbuf[6] = (u32) dstArchive; + cmdbuf[7] = (u32)(dstArchive >> 32); + cmdbuf[8] = dstPath.type; + cmdbuf[9] = dstPath.size; + cmdbuf[10] = IPC_Desc_PXIBuffer(srcPath.size, 0, true); + cmdbuf[11] = (u32) srcPath.data; + cmdbuf[12] = IPC_Desc_PXIBuffer(dstPath.size, 1, true); + cmdbuf[13] = (u32) dstPath.data; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_OpenDirectory(Handle serviceHandle, FSPXI_Directory* out, FSPXI_Archive archive, FS_Path path) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x8, 4, 2); // 0x00080102 - cmdbuf[1] = 0; // transaction - cmdbuf[2] = (u32) archive; - cmdbuf[3] = (u32)(archive >> 32); - cmdbuf[4] = path.type; - cmdbuf[5] = path.size; - cmdbuf[8] = IPC_Desc_PXIBuffer(path.size, 0, true); - cmdbuf[9] = (u32) path.data; + cmdbuf[0] = IPC_MakeHeader(0x8, 4, 2); // 0x00080102 + cmdbuf[1] = 0; // transaction + cmdbuf[2] = (u32) archive; + cmdbuf[3] = (u32)(archive >> 32); + cmdbuf[4] = path.type; + cmdbuf[5] = path.size; + cmdbuf[8] = IPC_Desc_PXIBuffer(path.size, 0, true); + cmdbuf[9] = (u32) path.data; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if (out) *out = cmdbuf[2] | ((u64) cmdbuf[3] << 32); + if (out) *out = cmdbuf[2] | ((u64) cmdbuf[3] << 32); - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_ReadFile(Handle serviceHandle, FSPXI_File file, u32* bytesRead, u64 offset, void* buffer, u32 size) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x9, 5, 2); // 0x00090142 - cmdbuf[1] = (u32) file; - cmdbuf[2] = (u32)(file >> 32); - cmdbuf[3] = (u32) offset; - cmdbuf[4] = (u32)(offset >> 32); - cmdbuf[5] = size; - cmdbuf[6] = IPC_Desc_PXIBuffer(size, 0, false); - cmdbuf[7] = (u32) buffer; + cmdbuf[0] = IPC_MakeHeader(0x9, 5, 2); // 0x00090142 + cmdbuf[1] = (u32) file; + cmdbuf[2] = (u32)(file >> 32); + cmdbuf[3] = (u32) offset; + cmdbuf[4] = (u32)(offset >> 32); + cmdbuf[5] = size; + cmdbuf[6] = IPC_Desc_PXIBuffer(size, 0, false); + cmdbuf[7] = (u32) buffer; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(bytesRead) *bytesRead = cmdbuf[2]; + if(bytesRead) *bytesRead = cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } -Result FSPXI_CalculateFileHashSHA256(Handle serviceHandle, FSPXI_File file, u32* buffer, u32 size) +Result FSPXI_CalculateFileHashSHA256(Handle serviceHandle, FSPXI_File file, void* buffer, u32 size) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0xA, 3, 2); // 0x000A00C2 - cmdbuf[1] = (u32) file; - cmdbuf[2] = (u32)(file >> 32); - cmdbuf[3] = size; - cmdbuf[4] = IPC_Desc_PXIBuffer(size, 0, false); - cmdbuf[5] = (u32) buffer; + cmdbuf[0] = IPC_MakeHeader(0xA, 3, 2); // 0x000A00C2 + cmdbuf[1] = (u32) file; + cmdbuf[2] = (u32)(file >> 32); + cmdbuf[3] = size; + cmdbuf[4] = IPC_Desc_PXIBuffer(size, 0, false); + cmdbuf[5] = (u32) buffer; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_WriteFile(Handle serviceHandle, FSPXI_File file, u32* bytesWritten, u64 offset, const void* buffer, u32 size, u32 flags) @@ -225,8 +225,8 @@ Result FSPXI_WriteFile(Handle serviceHandle, FSPXI_File file, u32* bytesWritten, u32 *cmdbuf = getThreadCommandBuffer(); cmdbuf[0] = IPC_MakeHeader(0xB,6,2); // 0x000B0182 - cmdbuf[1] = (u32) file; - cmdbuf[2] = (u32)(file >> 32); + cmdbuf[1] = (u32) file; + cmdbuf[2] = (u32)(file >> 32); cmdbuf[3] = (u32) offset; cmdbuf[4] = (u32) (offset >> 32); cmdbuf[5] = flags; @@ -243,471 +243,471 @@ Result FSPXI_WriteFile(Handle serviceHandle, FSPXI_File file, u32* bytesWritten, Result FSPXI_CalcSavegameMAC(Handle serviceHandle, FSPXI_File file, const void* inBuffer, u32 inSize, void* outBuffer, u32 outSize) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0xC, 4, 4); - cmdbuf[1] = (u32) file; - cmdbuf[2] = (u32)(file >> 32); - cmdbuf[3] = outSize; - cmdbuf[4] = inSize; - cmdbuf[5] = IPC_Desc_PXIBuffer(inSize, 0, true); - cmdbuf[6] = (u32) inBuffer; - cmdbuf[7] = IPC_Desc_PXIBuffer(outSize, 1, false); - cmdbuf[8] = (u32) outBuffer; + cmdbuf[0] = IPC_MakeHeader(0xC, 4, 4); + cmdbuf[1] = (u32) file; + cmdbuf[2] = (u32)(file >> 32); + cmdbuf[3] = outSize; + cmdbuf[4] = inSize; + cmdbuf[5] = IPC_Desc_PXIBuffer(inSize, 0, true); + cmdbuf[6] = (u32) inBuffer; + cmdbuf[7] = IPC_Desc_PXIBuffer(outSize, 1, false); + cmdbuf[8] = (u32) outBuffer; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_GetFileSize(Handle serviceHandle, FSPXI_File file, u64* size) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0xD, 2, 0); // 0x000D0080 - cmdbuf[1] = (u32) file; - cmdbuf[2] = (u32) (file >> 32); + cmdbuf[0] = IPC_MakeHeader(0xD, 2, 0); // 0x000D0080 + cmdbuf[1] = (u32) file; + cmdbuf[2] = (u32) (file >> 32); - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if (size) *size = cmdbuf[2] | ((u64) cmdbuf[3] << 32); + if (size) *size = cmdbuf[2] | ((u64) cmdbuf[3] << 32); - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_SetFileSize(Handle serviceHandle, FSPXI_File file, u64 size) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0xE, 4, 0); // 0x000E0100 - cmdbuf[1] = (u32) size; - cmdbuf[2] = (u32) (size >> 32); - cmdbuf[3] = (u32) file; - cmdbuf[4] = (u32) (file >> 32); + cmdbuf[0] = IPC_MakeHeader(0xE, 4, 0); // 0x000E0100 + cmdbuf[1] = (u32) size; + cmdbuf[2] = (u32) (size >> 32); + cmdbuf[3] = (u32) file; + cmdbuf[4] = (u32) (file >> 32); - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_CloseFile(Handle serviceHandle, FSPXI_File file) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0xF, 2, 0); // 0x000F0080 - cmdbuf[1] = (u32) file; - cmdbuf[2] = (u32) (file >> 32); + cmdbuf[0] = IPC_MakeHeader(0xF, 2, 0); // 0x000F0080 + cmdbuf[1] = (u32) file; + cmdbuf[2] = (u32) (file >> 32); - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_ReadDirectory(Handle serviceHandle, FSPXI_Directory directory, u32* entriesRead, u32 entryCount, FS_DirectoryEntry* entries) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x10, 3, 2); // 0x001000C2 - cmdbuf[1] = (u32) directory; - cmdbuf[2] = (u32) (directory >> 32); - cmdbuf[3] = entryCount; - cmdbuf[4] = IPC_Desc_PXIBuffer(sizeof(FS_DirectoryEntry) * entryCount, 0, false); - cmdbuf[5] = (u32) entries; + cmdbuf[0] = IPC_MakeHeader(0x10, 3, 2); // 0x001000C2 + cmdbuf[1] = (u32) directory; + cmdbuf[2] = (u32) (directory >> 32); + cmdbuf[3] = entryCount; + cmdbuf[4] = IPC_Desc_PXIBuffer(sizeof(FS_DirectoryEntry) * entryCount, 0, false); + cmdbuf[5] = (u32) entries; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(entriesRead) *entriesRead = cmdbuf[2]; + if(entriesRead) *entriesRead = cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_CloseDirectory(Handle serviceHandle, FSPXI_Directory directory) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x11, 2, 0); // 0x00110080 - cmdbuf[1] = (u32) directory; - cmdbuf[2] = (u32) (directory >> 32); + cmdbuf[0] = IPC_MakeHeader(0x11, 2, 0); // 0x00110080 + cmdbuf[1] = (u32) directory; + cmdbuf[2] = (u32) (directory >> 32); - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_OpenArchive(Handle serviceHandle, FSPXI_Archive* archive, FS_ArchiveID archiveID, FS_Path path) { - if (!archive) return -2; + if (!archive) return -2; - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x12, 3, 2); - cmdbuf[1] = archiveID; - cmdbuf[2] = path.type; - cmdbuf[3] = path.size; - cmdbuf[4] = IPC_Desc_PXIBuffer(path.size, 0, true); - cmdbuf[5] = (u32)path.data; + cmdbuf[0] = IPC_MakeHeader(0x12, 3, 2); + cmdbuf[1] = archiveID; + cmdbuf[2] = path.type; + cmdbuf[3] = path.size; + cmdbuf[4] = IPC_Desc_PXIBuffer(path.size, 0, true); + cmdbuf[5] = (u32)path.data; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - *archive = cmdbuf[2] | ((u64) cmdbuf[3] << 32); + *archive = cmdbuf[2] | ((u64) cmdbuf[3] << 32); - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_HasFile(Handle serviceHandle, FSPXI_Archive archive, bool* out, FS_Path path) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x13, 4, 2); // 0x00130102 - cmdbuf[1] = (u32) archive; - cmdbuf[2] = (u32) (archive >> 32); - cmdbuf[3] = path.type; - cmdbuf[4] = path.size; - cmdbuf[5] = IPC_Desc_PXIBuffer(path.size, 0, true); - cmdbuf[6] = (u32)path.data; + cmdbuf[0] = IPC_MakeHeader(0x13, 4, 2); // 0x00130102 + cmdbuf[1] = (u32) archive; + cmdbuf[2] = (u32) (archive >> 32); + cmdbuf[3] = path.type; + cmdbuf[4] = path.size; + cmdbuf[5] = IPC_Desc_PXIBuffer(path.size, 0, true); + cmdbuf[6] = (u32)path.data; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if (out) *out = (bool)cmdbuf[2]; + if (out) *out = (bool)cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_HasDirectory(Handle serviceHandle, FSPXI_Archive archive, bool* out, FS_Path path) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x14, 4, 2); // 0x00140102 - cmdbuf[1] = (u32) archive; - cmdbuf[2] = (u32) (archive >> 32); - cmdbuf[3] = path.type; - cmdbuf[4] = path.size; - cmdbuf[5] = IPC_Desc_PXIBuffer(path.size, 0, true); - cmdbuf[6] = (u32)path.data; + cmdbuf[0] = IPC_MakeHeader(0x14, 4, 2); // 0x00140102 + cmdbuf[1] = (u32) archive; + cmdbuf[2] = (u32) (archive >> 32); + cmdbuf[3] = path.type; + cmdbuf[4] = path.size; + cmdbuf[5] = IPC_Desc_PXIBuffer(path.size, 0, true); + cmdbuf[6] = (u32)path.data; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if (out) *out = (bool)cmdbuf[2]; + if (out) *out = (bool)cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_CommitSaveData(Handle serviceHandle, FSPXI_Archive archive, u32 id) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x15, 3, 0); // 0x001500C0 - cmdbuf[1] = (u32) archive; - cmdbuf[2] = (u32) (archive >> 32); - cmdbuf[3] = id; + cmdbuf[0] = IPC_MakeHeader(0x15, 3, 0); // 0x001500C0 + cmdbuf[1] = (u32) archive; + cmdbuf[2] = (u32) (archive >> 32); + cmdbuf[3] = id; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_CloseArchive(Handle serviceHandle, FSPXI_Archive archive) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x16, 2, 0); // 0x00160080 - cmdbuf[1] = (u32) archive; - cmdbuf[2] = (u32) (archive >> 32); + cmdbuf[0] = IPC_MakeHeader(0x16, 2, 0); // 0x00160080 + cmdbuf[1] = (u32) archive; + cmdbuf[2] = (u32) (archive >> 32); - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_Unknown0x17(Handle serviceHandle, FSPXI_Archive archive, bool* out) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x17, 2, 0); // 0x00170080 - cmdbuf[1] = (u32) archive; - cmdbuf[2] = (u32) (archive >> 32); + cmdbuf[0] = IPC_MakeHeader(0x17, 2, 0); // 0x00170080 + cmdbuf[1] = (u32) archive; + cmdbuf[2] = (u32) (archive >> 32); - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if (out) *out = (bool)cmdbuf[2]; + if (out) *out = (bool)cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_GetCardType(Handle serviceHandle, FS_CardType* out) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x18, 0, 0); // 0x00180000 + cmdbuf[0] = IPC_MakeHeader(0x18, 0, 0); // 0x00180000 - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(out) *out = cmdbuf[2] & 0xFF; + if(out) *out = cmdbuf[2] & 0xFF; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_GetSdmcArchiveResource(Handle serviceHandle, FS_ArchiveResource* out) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x19, 0, 0); // 0x00190000 + cmdbuf[0] = IPC_MakeHeader(0x19, 0, 0); // 0x00190000 - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(out) - { - out->sectorSize = cmdbuf[2]; - out->clusterSize = cmdbuf[3]; - out->totalClusters = cmdbuf[4]; - out->freeClusters = cmdbuf[5]; - } + if(out) + { + out->sectorSize = cmdbuf[2]; + out->clusterSize = cmdbuf[3]; + out->totalClusters = cmdbuf[4]; + out->freeClusters = cmdbuf[5]; + } - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_GetNandArchiveResource(Handle serviceHandle, FS_ArchiveResource* out) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x1A, 0, 0); // 0x001A0000 + cmdbuf[0] = IPC_MakeHeader(0x1A, 0, 0); // 0x001A0000 - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(out) - { - out->sectorSize = cmdbuf[2]; - out->clusterSize = cmdbuf[3]; - out->totalClusters = cmdbuf[4]; - out->freeClusters = cmdbuf[5]; - } + if(out) + { + out->sectorSize = cmdbuf[2]; + out->clusterSize = cmdbuf[3]; + out->totalClusters = cmdbuf[4]; + out->freeClusters = cmdbuf[5]; + } - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_GetSdmcFatFsError(Handle serviceHandle, u32* out) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x1B, 0, 0); // 0x001B0000 + cmdbuf[0] = IPC_MakeHeader(0x1B, 0, 0); // 0x001B0000 - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(out) *out = cmdbuf[2]; + if(out) *out = cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_IsSdmcDetected(Handle serviceHandle, bool* out) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x1C, 0, 0); // 0x001C0000 + cmdbuf[0] = IPC_MakeHeader(0x1C, 0, 0); // 0x001C0000 - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(out) *out = (bool)cmdbuf[2]; + if(out) *out = (bool)cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_IsSdmcWritable(Handle serviceHandle, bool* out) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x1D, 0, 0); // 0x001D0000 + cmdbuf[0] = IPC_MakeHeader(0x1D, 0, 0); // 0x001D0000 - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(out) *out = (bool)cmdbuf[2]; + if(out) *out = (bool)cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_GetSdmcCid(Handle serviceHandle, void* out, u32 size) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x1E, 0, 0); // 0x001E0000 - cmdbuf[1] = size; - cmdbuf[2] = IPC_Desc_PXIBuffer(size, 0, false); - cmdbuf[3] = (u32) out; + cmdbuf[0] = IPC_MakeHeader(0x1E, 0, 0); // 0x001E0000 + cmdbuf[1] = size; + cmdbuf[2] = IPC_Desc_PXIBuffer(size, 0, false); + cmdbuf[3] = (u32) out; - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_GetNandCid(Handle serviceHandle, void* out, u32 size) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x1F, 0, 0); // 0x001F0000 - cmdbuf[1] = size; - cmdbuf[2] = IPC_Desc_PXIBuffer(size, 0, false); - cmdbuf[3] = (u32) out; + cmdbuf[0] = IPC_MakeHeader(0x1F, 0, 0); // 0x001F0000 + cmdbuf[1] = size; + cmdbuf[2] = IPC_Desc_PXIBuffer(size, 0, false); + cmdbuf[3] = (u32) out; - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_GetSdmcSpeedInfo(Handle serviceHandle, u32* out) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x20, 0, 0); // 0x00200000 + cmdbuf[0] = IPC_MakeHeader(0x20, 0, 0); // 0x00200000 - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(out) *out = cmdbuf[2]; + if(out) *out = cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_GetNandSpeedInfo(Handle serviceHandle, u32* out) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x21, 0, 0); // 0x00210000 + cmdbuf[0] = IPC_MakeHeader(0x21, 0, 0); // 0x00210000 - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(out) *out = cmdbuf[2]; + if(out) *out = cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_GetSdmcLog(Handle serviceHandle, void* out, u32 size) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x22, 1, 2); // 0x00220042 - cmdbuf[1] = size; - cmdbuf[2] = IPC_Desc_PXIBuffer(size, 0, false); - cmdbuf[3] = (u32) out; + cmdbuf[0] = IPC_MakeHeader(0x22, 1, 2); // 0x00220042 + cmdbuf[1] = size; + cmdbuf[2] = IPC_Desc_PXIBuffer(size, 0, false); + cmdbuf[3] = (u32) out; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_GetNandLog(Handle serviceHandle, void* out, u32 size) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x23, 1, 2); // 0x00230042 - cmdbuf[1] = size; - cmdbuf[2] = IPC_Desc_PXIBuffer(size, 0, false); - cmdbuf[3] = (u32) out; + cmdbuf[0] = IPC_MakeHeader(0x23, 1, 2); // 0x00230042 + cmdbuf[1] = size; + cmdbuf[2] = IPC_Desc_PXIBuffer(size, 0, false); + cmdbuf[3] = (u32) out; - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_ClearSdmcLog(Handle serviceHandle) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x24, 0, 0); // 0x00240000 + cmdbuf[0] = IPC_MakeHeader(0x24, 0, 0); // 0x00240000 - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_ClearNandLog(Handle serviceHandle) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x25, 0, 0); // 0x00250000 + cmdbuf[0] = IPC_MakeHeader(0x25, 0, 0); // 0x00250000 - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_CardSlotIsInserted(Handle serviceHandle, bool* inserted) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x26, 0, 0); // 0x00260000 + cmdbuf[0] = IPC_MakeHeader(0x26, 0, 0); // 0x00260000 - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(inserted) *inserted = (bool)cmdbuf[2]; + if(inserted) *inserted = (bool)cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_CardSlotPowerOn(Handle serviceHandle, bool* status) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x27, 0, 0); // 0x00270000 + cmdbuf[0] = IPC_MakeHeader(0x27, 0, 0); // 0x00270000 - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(status) *status = (bool)cmdbuf[2]; + if(status) *status = (bool)cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_CardSlotPowerOff(Handle serviceHandle, bool* status) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x28, 0, 0); // 0x00280000 + cmdbuf[0] = IPC_MakeHeader(0x28, 0, 0); // 0x00280000 - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(status) *status = (bool)cmdbuf[2]; + if(status) *status = (bool)cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_CardSlotGetCardIFPowerStatus(Handle serviceHandle, bool* status) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x29, 0, 0); // 0x00290000 + cmdbuf[0] = IPC_MakeHeader(0x29, 0, 0); // 0x00290000 - if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(status) *status = (bool)cmdbuf[2]; + if(status) *status = (bool)cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_CardNorDirectCommand(Handle serviceHandle, u8 commandId) @@ -852,7 +852,7 @@ Result FSPXI_CardNorDirectSectorEraseWithoutVerify(Handle serviceHandle, u32 add Result FSPXI_GetProductInfo(Handle serviceHandle, FS_ProductInfo* info, FSPXI_Archive archive) { Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + u32 *cmdbuf = getThreadCommandBuffer(); cmdbuf[0] = IPC_MakeHeader(0x33, 2, 0); // 0x00330080 cmdbuf[1] = (u32) archive; @@ -860,74 +860,74 @@ Result FSPXI_GetProductInfo(Handle serviceHandle, FS_ProductInfo* info, FSPXI_Ar if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(info) memcpy(info, &cmdbuf[2], sizeof(FS_ProductInfo)); + if(info) memcpy(info, &cmdbuf[2], sizeof(FS_ProductInfo)); return (Result) cmdbuf[1]; } Result FSPXI_SetCardSpiBaudrate(Handle serviceHandle, FS_CardSpiBaudRate baudRate) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x34, 1, 0); // 0x00340040 - cmdbuf[1] = baudRate; + cmdbuf[0] = IPC_MakeHeader(0x34, 1, 0); // 0x00340040 + cmdbuf[1] = baudRate; - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_SetCardSpiBusMode(Handle serviceHandle, FS_CardSpiBusMode busMode) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x35, 1, 0); // 0x00350040 - cmdbuf[1] = busMode; + cmdbuf[0] = IPC_MakeHeader(0x35, 1, 0); // 0x00350040 + cmdbuf[1] = busMode; - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_SendInitializeInfoTo9(Handle serviceHandle, u8 unk) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x36, 1, 0); // 0x00360040 - cmdbuf[1] = unk; + cmdbuf[0] = IPC_MakeHeader(0x36, 1, 0); // 0x00360040 + cmdbuf[1] = unk; - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_CreateExtSaveData(Handle serviceHandle, FS_ExtSaveDataInfo info) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x37, 4, 0); - memcpy(&cmdbuf[1], &info, sizeof(FS_ExtSaveDataInfo)); + cmdbuf[0] = IPC_MakeHeader(0x37, 4, 0); + memcpy(&cmdbuf[1], &info, sizeof(FS_ExtSaveDataInfo)); - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_DeleteExtSaveData(Handle serviceHandle, FS_ExtSaveDataInfo info) { - Result ret = 0; - u32* cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x38, 4, 0); - memcpy(&cmdbuf[1], &info, sizeof(FS_ExtSaveDataInfo)); + cmdbuf[0] = IPC_MakeHeader(0x38, 4, 0); + memcpy(&cmdbuf[1], &info, sizeof(FS_ExtSaveDataInfo)); - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_EnumerateExtSaveData(Handle serviceHandle, u32* idsWritten, u32 idsSize, FS_MediaType mediaType, u32 idSize, bool shared, u8* ids) @@ -952,10 +952,10 @@ Result FSPXI_EnumerateExtSaveData(Handle serviceHandle, u32* idsWritten, u32 ids Result FSPXI_GetSpecialContentIndex(Handle serviceHandle, u16* index, FS_MediaType mediaType, u64 programId, FS_SpecialContentType type) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x3A, 4, 0); // 0x003A0100 + cmdbuf[0] = IPC_MakeHeader(0x3A, 4, 0); // 0x003A0100 cmdbuf[1] = mediaType; cmdbuf[2] = (u32) programId; cmdbuf[3] = (u32) (programId >> 32); @@ -970,15 +970,15 @@ Result FSPXI_GetSpecialContentIndex(Handle serviceHandle, u16* index, FS_MediaTy Result FSPXI_GetLegacyRomHeader(Handle serviceHandle, FS_MediaType mediaType, u64 programId, void* header) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x3B, 3, 2); // 0x003B00C2 - cmdbuf[1] = mediaType; + cmdbuf[0] = IPC_MakeHeader(0x3B, 3, 2); // 0x003B00C2 + cmdbuf[1] = mediaType; cmdbuf[2] = (u32) programId; cmdbuf[3] = (u32) (programId >> 32); - cmdbuf[4] = IPC_Desc_PXIBuffer(0x378, 0, false); - cmdbuf[5] = (u32) header; + cmdbuf[4] = IPC_Desc_PXIBuffer(0x378, 0, false); + cmdbuf[5] = (u32) header; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -987,16 +987,16 @@ Result FSPXI_GetLegacyRomHeader(Handle serviceHandle, FS_MediaType mediaType, u6 Result FSPXI_GetLegacyBannerData(Handle serviceHandle, FS_MediaType mediaType, u64 programId, void* banner, u8 unk) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x3C, 4, 2); // 0x003C0102 - cmdbuf[1] = mediaType; + cmdbuf[0] = IPC_MakeHeader(0x3C, 4, 2); // 0x003C0102 + cmdbuf[1] = mediaType; cmdbuf[2] = (u32) programId; cmdbuf[3] = (u32) (programId >> 32); - cmdbuf[4] = unk; - cmdbuf[5] = IPC_Desc_PXIBuffer(0x23c0, 0, false); - cmdbuf[6] = (u32) banner; + cmdbuf[4] = unk; + cmdbuf[5] = IPC_Desc_PXIBuffer(0x23c0, 0, false); + cmdbuf[6] = (u32) banner; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1005,11 +1005,11 @@ Result FSPXI_GetLegacyBannerData(Handle serviceHandle, FS_MediaType mediaType, u Result FSPXI_FormatCardNorDevice(Handle serviceHandle, u32 unk) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x3D, 1, 0); // 0x003D0040 - cmdbuf[1] = unk; + cmdbuf[0] = IPC_MakeHeader(0x3D, 1, 0); // 0x003D0040 + cmdbuf[1] = unk; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1018,10 +1018,10 @@ Result FSPXI_FormatCardNorDevice(Handle serviceHandle, u32 unk) Result FSPXI_DeleteSdmcRoot(Handle serviceHandle) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x3E, 0, 0); // 0x003E0000 + cmdbuf[0] = IPC_MakeHeader(0x3E, 0, 0); // 0x003E0000 if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1030,11 +1030,11 @@ Result FSPXI_DeleteSdmcRoot(Handle serviceHandle) Result FSPXI_DeleteAllExtSaveDataOnNand(Handle serviceHandle) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x3F, 1, 0); // 0x003F0000 - cmdbuf[1] = 0; // Transaction + cmdbuf[0] = IPC_MakeHeader(0x3F, 1, 0); // 0x003F0000 + cmdbuf[1] = 0; // Transaction if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1043,10 +1043,10 @@ Result FSPXI_DeleteAllExtSaveDataOnNand(Handle serviceHandle) Result FSPXI_InitializeCtrFilesystem(Handle serviceHandle) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x40, 0, 0); // 0x00400000 + cmdbuf[0] = IPC_MakeHeader(0x40, 0, 0); // 0x00400000 if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1055,10 +1055,10 @@ Result FSPXI_InitializeCtrFilesystem(Handle serviceHandle) Result FSPXI_CreateSeed(Handle serviceHandle) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x41, 0, 0); // 0x00410000 + cmdbuf[0] = IPC_MakeHeader(0x41, 0, 0); // 0x00410000 if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1068,7 +1068,7 @@ Result FSPXI_CreateSeed(Handle serviceHandle) Result FSPXI_GetSdmcCtrRootPath(Handle serviceHandle, u16* out, u32 length) { Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + u32 *cmdbuf = getThreadCommandBuffer(); cmdbuf[0] = IPC_MakeHeader(0x42, 1, 2); // 0x00420042 cmdbuf[1] = length; @@ -1083,26 +1083,26 @@ Result FSPXI_GetSdmcCtrRootPath(Handle serviceHandle, u16* out, u32 length) Result FSPXI_GetArchiveResource(Handle serviceHandle, FS_ArchiveResource* archiveResource, FS_SystemMediaType mediaType) { Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); - + u32 *cmdbuf = getThreadCommandBuffer(); + cmdbuf[0] = IPC_MakeHeader(0x43, 1, 0); // 0x00430040 cmdbuf[1] = mediaType; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - memcpy(archiveResource, &cmdbuf[2], sizeof(FS_ArchiveResource)); + memcpy(archiveResource, &cmdbuf[2], sizeof(FS_ArchiveResource)); return (Result) cmdbuf[1]; } Result FSPXI_ExportIntegrityVerificationSeed(Handle serviceHandle, FS_IntegrityVerificationSeed* seed) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x44, 0, 2); // 0x00440002 - cmdbuf[1] = IPC_Desc_PXIBuffer(0x130, 0, false); - cmdbuf[2] = (u32)seed; + cmdbuf[0] = IPC_MakeHeader(0x44, 0, 2); // 0x00440002 + cmdbuf[1] = IPC_Desc_PXIBuffer(0x130, 0, false); + cmdbuf[2] = (u32)seed; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1111,12 +1111,12 @@ Result FSPXI_ExportIntegrityVerificationSeed(Handle serviceHandle, FS_IntegrityV Result FSPXI_ImportIntegrityVerificationSeed(Handle serviceHandle, const FS_IntegrityVerificationSeed* seed) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x45, 0, 2); // 0x00450002 - cmdbuf[1] = IPC_Desc_PXIBuffer(0x130, 0, true); - cmdbuf[2] = (u32)seed; + cmdbuf[0] = IPC_MakeHeader(0x45, 0, 2); // 0x00450002 + cmdbuf[1] = IPC_Desc_PXIBuffer(0x130, 0, true); + cmdbuf[2] = (u32)seed; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1125,10 +1125,10 @@ Result FSPXI_ImportIntegrityVerificationSeed(Handle serviceHandle, const FS_Inte Result FSPXI_GetLegacySubBannerData(Handle serviceHandle, u32 bannerSize, FS_MediaType mediaType, u64 programId, void* banner) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x46, 4, 2); // 0x00460102 + cmdbuf[0] = IPC_MakeHeader(0x46, 4, 2); // 0x00460102 cmdbuf[1] = bannerSize; cmdbuf[2] = mediaType; cmdbuf[3] = (u32) programId; @@ -1143,13 +1143,13 @@ Result FSPXI_GetLegacySubBannerData(Handle serviceHandle, u32 bannerSize, FS_Med Result FSPXI_GenerateRandomBytes(Handle serviceHandle, void* buf, u32 size) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x47, 1, 2); // 0x00470042 - cmdbuf[1] = size; - cmdbuf[2] = IPC_Desc_PXIBuffer(size, 0, false); - cmdbuf[3] = (u32) buf; + cmdbuf[0] = IPC_MakeHeader(0x47, 1, 2); // 0x00470042 + cmdbuf[1] = size; + cmdbuf[2] = IPC_Desc_PXIBuffer(size, 0, false); + cmdbuf[3] = (u32) buf; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1158,29 +1158,29 @@ Result FSPXI_GenerateRandomBytes(Handle serviceHandle, void* buf, u32 size) Result FSPXI_GetFileLastModified(Handle serviceHandle, FSPXI_Archive archive, u64* out, const u16* path, u32 size) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x48, 3, 2); // 0x004800C2 - cmdbuf[1] = (u32) archive; - cmdbuf[2] = (u32) (archive >> 32); - cmdbuf[3] = size; - cmdbuf[4] = IPC_Desc_PXIBuffer(size, 0, true); - cmdbuf[5] = (u32) path; + cmdbuf[0] = IPC_MakeHeader(0x48, 3, 2); // 0x004800C2 + cmdbuf[1] = (u32) archive; + cmdbuf[2] = (u32) (archive >> 32); + cmdbuf[3] = size; + cmdbuf[4] = IPC_Desc_PXIBuffer(size, 0, true); + cmdbuf[5] = (u32) path; - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if (out) *out = cmdbuf[2] | ((u64) cmdbuf[3] << 32); + if (out) *out = cmdbuf[2] | ((u64) cmdbuf[3] << 32); - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_ReadSpecialFile(Handle serviceHandle, u32* bytesRead, u64 fileOffset, u32 size, void* data) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); - - cmdbuf[0] = IPC_MakeHeader(0x49, 4, 2); // 0x00490102 + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0x49, 4, 2); // 0x00490102 cmdbuf[1] = 0; cmdbuf[2] = (u32) fileOffset; cmdbuf[3] = (u32) (fileOffset >> 32); @@ -1188,46 +1188,46 @@ Result FSPXI_ReadSpecialFile(Handle serviceHandle, u32* bytesRead, u64 fileOffse cmdbuf[5] = IPC_Desc_PXIBuffer(size, 0, false); cmdbuf[6] = (u32) data; - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if (bytesRead) *bytesRead = cmdbuf[2]; + if (bytesRead) *bytesRead = cmdbuf[2]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_GetSpecialFileSize(Handle serviceHandle, u64* fileSize) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x4A, 1, 0); // 0x004A0040 - cmdbuf[1] = 0; // Must be 0 + cmdbuf[0] = IPC_MakeHeader(0x4A, 1, 0); // 0x004A0040 + cmdbuf[1] = 0; // Must be 0 - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if (fileSize) *fileSize = cmdbuf[2] | ((u64) cmdbuf[3] << 32); + if (fileSize) *fileSize = cmdbuf[2] | ((u64) cmdbuf[3] << 32); - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_StartDeviceMoveAsSource(Handle serviceHandle, FS_DeviceMoveContext* context) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x4B, 0, 0); // 0x004B0000 + cmdbuf[0] = IPC_MakeHeader(0x4B, 0, 0); // 0x004B0000 - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if(context) memcpy(context, &cmdbuf[2], sizeof(FS_DeviceMoveContext)); + if(context) memcpy(context, &cmdbuf[2], sizeof(FS_DeviceMoveContext)); - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; } Result FSPXI_StartDeviceMoveAsDestination(Handle serviceHandle, FS_DeviceMoveContext context, bool clear) { Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + u32 *cmdbuf = getThreadCommandBuffer(); cmdbuf[0] = IPC_MakeHeader(0x4C, 9, 0); // 0x004C0240 memcpy(&cmdbuf[1], &context, sizeof(FS_DeviceMoveContext)); @@ -1241,24 +1241,24 @@ Result FSPXI_StartDeviceMoveAsDestination(Handle serviceHandle, FS_DeviceMoveCon Result FSPXI_ReadFileSHA256(Handle serviceHandle, FSPXI_File file, u32* bytesRead, u64 offset, void* readBuffer, u32 readBufferSize, void* hashtable, u32 hashtableSize, u32 unk) { Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x4D, 7, 4); // 0x004D01C4 - cmdbuf[1] = (u32) file; - cmdbuf[2] = (u32) (file >> 32); - cmdbuf[3] = (u32) offset; - cmdbuf[4] = (u32) (offset >> 32); - cmdbuf[5] = readBufferSize; - cmdbuf[6] = unk; - cmdbuf[7] = hashtableSize; - cmdbuf[8] = IPC_Desc_PXIBuffer(hashtableSize, 0, false); - cmdbuf[9] = (u32) hashtable; - cmdbuf[10] = IPC_Desc_PXIBuffer(readBufferSize, 1, false); - cmdbuf[11] = (u32) readBuffer; + cmdbuf[0] = IPC_MakeHeader(0x4D, 7, 4); // 0x004D01C4 + cmdbuf[1] = (u32) file; + cmdbuf[2] = (u32) (file >> 32); + cmdbuf[3] = (u32) offset; + cmdbuf[4] = (u32) (offset >> 32); + cmdbuf[5] = readBufferSize; + cmdbuf[6] = unk; + cmdbuf[7] = hashtableSize; + cmdbuf[8] = IPC_Desc_PXIBuffer(hashtableSize, 0, false); + cmdbuf[9] = (u32) hashtable; + cmdbuf[10] = IPC_Desc_PXIBuffer(readBufferSize, 1, false); + cmdbuf[11] = (u32) readBuffer; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if (bytesRead) *bytesRead = cmdbuf[2]; + if (bytesRead) *bytesRead = cmdbuf[2]; return (Result) cmdbuf[1]; } @@ -1266,25 +1266,25 @@ Result FSPXI_ReadFileSHA256(Handle serviceHandle, FSPXI_File file, u32* bytesRea Result FSPXI_WriteFileSHA256(Handle serviceHandle, FSPXI_File file, u32* bytesWritten, u64 offset, const void* writeBuffer, u32 writeBufferSize, void* hashtable, u32 hashtableSize, u32 unk1, u32 unk2) { Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x4E, 8, 4); // 0x004E0204 - cmdbuf[1] = (u32) file; - cmdbuf[2] = (u32) (file >> 32); - cmdbuf[3] = (u32) offset; - cmdbuf[4] = (u32) (offset >> 32); - cmdbuf[5] = writeBufferSize; - cmdbuf[6] = unk1; - cmdbuf[7] = hashtableSize; - cmdbuf[8] = unk2; - cmdbuf[9] = IPC_Desc_PXIBuffer(hashtableSize, 0, true); - cmdbuf[10] = (u32) hashtable; - cmdbuf[11] = IPC_Desc_PXIBuffer(writeBufferSize, 1, false); - cmdbuf[12] = (u32) writeBuffer; + cmdbuf[0] = IPC_MakeHeader(0x4E, 8, 4); // 0x004E0204 + cmdbuf[1] = (u32) file; + cmdbuf[2] = (u32) (file >> 32); + cmdbuf[3] = (u32) offset; + cmdbuf[4] = (u32) (offset >> 32); + cmdbuf[5] = writeBufferSize; + cmdbuf[6] = unk1; + cmdbuf[7] = hashtableSize; + cmdbuf[8] = unk2; + cmdbuf[9] = IPC_Desc_PXIBuffer(hashtableSize, 0, true); + cmdbuf[10] = (u32) hashtable; + cmdbuf[11] = IPC_Desc_PXIBuffer(writeBufferSize, 1, false); + cmdbuf[12] = (u32) writeBuffer; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if (bytesWritten) *bytesWritten = cmdbuf[2]; + if (bytesWritten) *bytesWritten = cmdbuf[2]; return (Result) cmdbuf[1]; } @@ -1292,11 +1292,11 @@ Result FSPXI_WriteFileSHA256(Handle serviceHandle, FSPXI_File file, u32* bytesWr Result FSPXI_SetCtrCardLatencyParameter(Handle serviceHandle, u64 latency) { Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x4F, 2, 0); // 0x004F0080 - cmdbuf[1] = (u32) latency; - cmdbuf[2] = (u32) (latency >> 32); + cmdbuf[0] = IPC_MakeHeader(0x4F, 2, 0); // 0x004F0080 + cmdbuf[1] = (u32) latency; + cmdbuf[2] = (u32) (latency >> 32); if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1305,11 +1305,11 @@ Result FSPXI_SetCtrCardLatencyParameter(Handle serviceHandle, u64 latency) Result FSPXI_SetPriority(Handle serviceHandle, u32 priority) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x50, 1, 0); // 0x00500040 - cmdbuf[1] = priority; + cmdbuf[0] = IPC_MakeHeader(0x50, 1, 0); // 0x00500040 + cmdbuf[1] = priority; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1318,11 +1318,11 @@ Result FSPXI_SetPriority(Handle serviceHandle, u32 priority) Result FSPXI_SwitchCleanupInvalidSaveData(Handle serviceHandle, bool enable) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x51, 1, 0); // 0x00500040 - cmdbuf[1] = enable; + cmdbuf[0] = IPC_MakeHeader(0x51, 1, 0); // 0x00500040 + cmdbuf[1] = enable; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1331,31 +1331,31 @@ Result FSPXI_SwitchCleanupInvalidSaveData(Handle serviceHandle, bool enable) Result FSPXI_EnumerateSystemSaveData(Handle serviceHandle, u32* idsWritten, u32 idsSize, u32* ids) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x54, 1, 2); // 0x00540042 - cmdbuf[1] = idsSize; - cmdbuf[2] = IPC_Desc_PXIBuffer(idsSize, 0, false); - cmdbuf[3] = (u32) ids; + cmdbuf[0] = IPC_MakeHeader(0x54, 1, 2); // 0x00540042 + cmdbuf[1] = idsSize; + cmdbuf[2] = IPC_Desc_PXIBuffer(idsSize, 0, false); + cmdbuf[3] = (u32) ids; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - if (idsWritten) *idsWritten = cmdbuf[2]; + if (idsWritten) *idsWritten = cmdbuf[2]; return (Result) cmdbuf[1]; } Result FSPXI_ReadNandReport(Handle serviceHandle, void* buffer, u32 size, u32 unk) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x55, 2, 2); // 0x00550082 - cmdbuf[1] = size; - cmdbuf[2] = unk; - cmdbuf[3] = IPC_Desc_PXIBuffer(size, 0, false); - cmdbuf[4] = (u32) buffer; + cmdbuf[0] = IPC_MakeHeader(0x55, 2, 2); // 0x00550082 + cmdbuf[1] = size; + cmdbuf[2] = unk; + cmdbuf[3] = IPC_Desc_PXIBuffer(size, 0, false); + cmdbuf[4] = (u32) buffer; if(R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; @@ -1364,23 +1364,23 @@ Result FSPXI_ReadNandReport(Handle serviceHandle, void* buffer, u32 size, u32 un Result FSPXI_Unknown0x56(Handle serviceHandle, u32 out[4], FS_Archive archive, FS_Path path) { - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = IPC_MakeHeader(0x56, 4, 2); // 0x00560102 - cmdbuf[1] = (u32) archive; - cmdbuf[2] = (u32) (archive >> 32); - cmdbuf[3] = path.type; - cmdbuf[4] = path.size; - cmdbuf[5] = IPC_Desc_PXIBuffer(path.size, 0, true); - cmdbuf[6] = (u32)path.data; + cmdbuf[0] = IPC_MakeHeader(0x56, 4, 2); // 0x00560102 + cmdbuf[1] = (u32) archive; + cmdbuf[2] = (u32) (archive >> 32); + cmdbuf[3] = path.type; + cmdbuf[4] = path.size; + cmdbuf[5] = IPC_Desc_PXIBuffer(path.size, 0, true); + cmdbuf[6] = (u32)path.data; - if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; + if (R_FAILED(ret = svcSendSyncRequest(serviceHandle))) return ret; - out[0] = cmdbuf[2]; - out[1] = cmdbuf[3]; - out[2] = cmdbuf[4]; - out[3] = cmdbuf[5]; + out[0] = cmdbuf[2]; + out[1] = cmdbuf[3]; + out[2] = cmdbuf[4]; + out[3] = cmdbuf[5]; - return (Result) cmdbuf[1]; + return (Result) cmdbuf[1]; }