diff options
author | Zach Hilman <zachhilman@gmail.com> | 2018-09-27 04:15:51 +0200 |
---|---|---|
committer | Zach Hilman <zachhilman@gmail.com> | 2018-10-01 03:01:35 +0200 |
commit | aa0c82e40534f68ef6dd8d9d881a14ed298b19a0 (patch) | |
tree | d0765d7bb2728ab3e56a6005d7d57b223d3f492e /src/core | |
parent | patch_manager: Add DLC recognition to PatchManager (diff) | |
download | yuzu-aa0c82e40534f68ef6dd8d9d881a14ed298b19a0.tar yuzu-aa0c82e40534f68ef6dd8d9d881a14ed298b19a0.tar.gz yuzu-aa0c82e40534f68ef6dd8d9d881a14ed298b19a0.tar.bz2 yuzu-aa0c82e40534f68ef6dd8d9d881a14ed298b19a0.tar.lz yuzu-aa0c82e40534f68ef6dd8d9d881a14ed298b19a0.tar.xz yuzu-aa0c82e40534f68ef6dd8d9d881a14ed298b19a0.tar.zst yuzu-aa0c82e40534f68ef6dd8d9d881a14ed298b19a0.zip |
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/file_sys/romfs_factory.cpp | 51 |
1 files changed, 25 insertions, 26 deletions
diff --git a/src/core/file_sys/romfs_factory.cpp b/src/core/file_sys/romfs_factory.cpp index d027a8d59..4994c2532 100644 --- a/src/core/file_sys/romfs_factory.cpp +++ b/src/core/file_sys/romfs_factory.cpp @@ -39,36 +39,35 @@ ResultVal<VirtualFile> RomFSFactory::OpenCurrentProcess() { } ResultVal<VirtualFile> RomFSFactory::Open(u64 title_id, StorageId storage, ContentRecordType type) { + std::shared_ptr<NCA> res; + switch (storage) { - case StorageId::NandSystem: { - const auto res = Service::FileSystem::GetSystemNANDContents()->GetEntry(title_id, type); - if (res == nullptr) { - // TODO(DarkLordZach): Find the right error code to use here - return ResultCode(-1); - } - const auto romfs = res->GetRomFS(); - if (romfs == nullptr) { - // TODO(DarkLordZach): Find the right error code to use here - return ResultCode(-1); - } - return MakeResult<VirtualFile>(romfs); - } - case StorageId::NandUser: { - const auto res = Service::FileSystem::GetUserNANDContents()->GetEntry(title_id, type); - if (res == nullptr) { - // TODO(DarkLordZach): Find the right error code to use here - return ResultCode(-1); - } - const auto romfs = res->GetRomFS(); - if (romfs == nullptr) { - // TODO(DarkLordZach): Find the right error code to use here - return ResultCode(-1); - } - return MakeResult<VirtualFile>(romfs); - } + case StorageId::None: + res = Service::FileSystem::GetUnionContents()->GetEntry(title_id, type); + break; + case StorageId::NandSystem: + res = Service::FileSystem::GetSystemNANDContents()->GetEntry(title_id, type); + break; + case StorageId::NandUser: + res = Service::FileSystem::GetUserNANDContents()->GetEntry(title_id, type); + break; + case StorageId::SdCard: + res = Service::FileSystem::GetSDMCContents()->GetEntry(title_id, type); + break; default: UNIMPLEMENTED_MSG("Unimplemented storage_id={:02X}", static_cast<u8>(storage)); } + + if (res == nullptr) { + // TODO(DarkLordZach): Find the right error code to use here + return ResultCode(-1); + } + const auto romfs = res->GetRomFS(); + if (romfs == nullptr) { + // TODO(DarkLordZach): Find the right error code to use here + return ResultCode(-1); + } + return MakeResult<VirtualFile>(romfs); } } // namespace FileSys |