From e084d7fff4495a67ecb56978c835af90e655f19d Mon Sep 17 00:00:00 2001 From: goeiecool9999 <> Date: Sat, 10 Sep 2022 22:43:35 +0200 Subject: [PATCH] Fix smash bros SD-card access. Idk why. --- src/Cafe/IOSU/fsa/iosu_fsa.cpp | 5 ++++- src/Cafe/OS/libs/coreinit/coreinit_FS.cpp | 11 +++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Cafe/IOSU/fsa/iosu_fsa.cpp b/src/Cafe/IOSU/fsa/iosu_fsa.cpp index aa2ad553..0f0b9fe0 100644 --- a/src/Cafe/IOSU/fsa/iosu_fsa.cpp +++ b/src/Cafe/IOSU/fsa/iosu_fsa.cpp @@ -609,7 +609,10 @@ namespace iosu #ifndef PUBLIC_RELEASE cemuLog_force("FSAProcessCmd_appendFile(): size 0x{:08x} count 0x{:08x} (todo)\n", _swapEndianU32(cmd->cmdAppendFile.size), _swapEndianU32(cmd->cmdAppendFile.count)); #endif - return _swapEndianU32(cmd->cmdAppendFile.size) * _swapEndianU32(cmd->cmdAppendFile.count); + MPTR destOffset = _swapEndianU32(cmd->cmdDefault.destBufferMPTR); + void* destPtr = memory_getPointerFromVirtualOffset(destOffset); + fsc_setFileSeek(fscFile, fsc_getFileSize(fscFile)); + return fsc_writeFile(fscFile, destPtr, cmd->cmdAppendFile.count); } FSStatus FSAProcessCmd_truncateFile(FSAClient* client, FSAIpcCommand* cmd) diff --git a/src/Cafe/OS/libs/coreinit/coreinit_FS.cpp b/src/Cafe/OS/libs/coreinit/coreinit_FS.cpp index 1598429f..5a2a4d4e 100644 --- a/src/Cafe/OS/libs/coreinit/coreinit_FS.cpp +++ b/src/Cafe/OS/libs/coreinit/coreinit_FS.cpp @@ -83,11 +83,14 @@ namespace coreinit fsCmdBlock->data.mount_it++; // SD - if (mountSourceType == MOUNT_TYPE::SD && fsCmdBlock->data.mount_it == 1) + if (mountSourceType == MOUNT_TYPE::SD) { - mountSourceInfo->sourceType = 0; - strcpy(mountSourceInfo->path, "/sd"); - return FS_RESULT::SUCCESS; + if (fsCmdBlock->data.mount_it == 1 || fsCmdBlock->data.mount_it == 2) + { + mountSourceInfo->sourceType = 0; + strcpy(mountSourceInfo->path, "/sd"); + return FS_RESULT::SUCCESS; + } } return FS_RESULT::END_ITERATION;