diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp index 0ee68c0332..78a1dac81b 100644 --- a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp @@ -284,9 +284,17 @@ Result FSP_SRV::OpenSaveDataFileSystem(OutInterface out_interface, id = FileSys::StorageId::NandSystem; break; case FileSys::SaveDataSpaceId::Temporary: + // ok this is definitely wrong. ASSERT(false) here just kills the whole game the first + // time it opens cache storage, and plenty of games do that (TOTK for one). there is + // user-space scratch storage so it belongs on user nand. map it, do not crash. + id = FileSys::StorageId::NandUser; + break; case FileSys::SaveDataSpaceId::ProperSystem: case FileSys::SaveDataSpaceId::SafeMode: - ASSERT(false); + // same deal for these two. they are system-level spaces so they go on system nand. + // way better than nuking the title over a save-space id we just did not list out. + id = FileSys::StorageId::NandSystem; + break; } *out_interface = @@ -324,9 +332,15 @@ Result FSP_SRV::OpenSaveDataFileSystemBySystemSaveDataId(OutInterface system nand. handled, not crashed. + id = FileSys::StorageId::NandSystem; + break; } *out_interface =