|
|
@@ -226,6 +226,7 @@ ResultVal<FileSys::EntryType> VfsDirectoryServiceWrapper::GetEntryType(
|
|
|
static std::unique_ptr<FileSys::RomFSFactory> romfs_factory;
|
|
|
static std::unique_ptr<FileSys::SaveDataFactory> save_data_factory;
|
|
|
static std::unique_ptr<FileSys::SDMCFactory> sdmc_factory;
|
|
|
+static std::unique_ptr<FileSys::BISFactory> bis_factory;
|
|
|
|
|
|
ResultCode RegisterRomFS(std::unique_ptr<FileSys::RomFSFactory>&& factory) {
|
|
|
ASSERT_MSG(romfs_factory == nullptr, "Tried to register a second RomFS");
|
|
|
@@ -248,6 +249,13 @@ ResultCode RegisterSDMC(std::unique_ptr<FileSys::SDMCFactory>&& factory) {
|
|
|
return RESULT_SUCCESS;
|
|
|
}
|
|
|
|
|
|
+ResultCode RegisterBIS(std::unique_ptr<FileSys::BISFactory>&& factory) {
|
|
|
+ ASSERT_MSG(bis_factory == nullptr, "Tried to register a second BIS");
|
|
|
+ bis_factory = std::move(factory);
|
|
|
+ LOG_DEBUG(Service_FS, "Registred BIS");
|
|
|
+ return RESULT_SUCCESS;
|
|
|
+}
|
|
|
+
|
|
|
ResultVal<FileSys::VirtualFile> OpenRomFS(u64 title_id) {
|
|
|
LOG_TRACE(Service_FS, "Opening RomFS for title_id={:016X}", title_id);
|
|
|
|
|
|
@@ -281,6 +289,14 @@ ResultVal<FileSys::VirtualDir> OpenSDMC() {
|
|
|
return sdmc_factory->Open();
|
|
|
}
|
|
|
|
|
|
+std::shared_ptr<FileSys::RegisteredCache> GetSystemNANDContents() {
|
|
|
+ return bis_factory->GetSystemNANDContents();
|
|
|
+}
|
|
|
+
|
|
|
+std::shared_ptr<FileSys::RegisteredCache> GetUserNANDContents() {
|
|
|
+ return bis_factory->GetUserNANDContents();
|
|
|
+}
|
|
|
+
|
|
|
void RegisterFileSystems(const FileSys::VirtualFilesystem& vfs) {
|
|
|
romfs_factory = nullptr;
|
|
|
save_data_factory = nullptr;
|
|
|
@@ -291,6 +307,9 @@ void RegisterFileSystems(const FileSys::VirtualFilesystem& vfs) {
|
|
|
auto sd_directory = vfs->OpenDirectory(FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir),
|
|
|
FileSys::Mode::ReadWrite);
|
|
|
|
|
|
+ if (bis_factory == nullptr)
|
|
|
+ bis_factory = std::make_unique<FileSys::BISFactory>(nand_directory);
|
|
|
+
|
|
|
auto savedata = std::make_unique<FileSys::SaveDataFactory>(std::move(nand_directory));
|
|
|
save_data_factory = std::move(savedata);
|
|
|
|