aboutsummaryrefslogtreecommitdiff
path: root/src/core/file_sys
diff options
context:
space:
mode:
authorlat9nq <22451773+lat9nq@users.noreply.github.com>2021-06-15 19:59:10 -0400
committerMorph <39850852+Morph1984@users.noreply.github.com>2021-06-28 10:08:08 -0400
commitbc4dc2135e9065fdc246e36bf7256b036a9cc644 (patch)
tree054ecb8b45f2a550c2f8001a1b3abbd42afb9c04 /src/core/file_sys
parent329398cd41d0826dfca1f89c440c71055f57cbe8 (diff)
core: Simplify SDMC mod loading
If someone else wants to support other mod formats in the SDMC directory, that can be added later. For now, just allow RomFS modding here and force people to do other types of mods the old way. Addresses review comments. Co-authored-by: LC <mathew1800@gmail.com>
Diffstat (limited to 'src/core/file_sys')
-rw-r--r--src/core/file_sys/patch_manager.cpp25
-rw-r--r--src/core/file_sys/sdmc_factory.cpp3
2 files changed, 8 insertions, 20 deletions
diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp
index 6f5aa6da29..13d294ad87 100644
--- a/src/core/file_sys/patch_manager.cpp
+++ b/src/core/file_sys/patch_manager.cpp
@@ -529,26 +529,13 @@ PatchManager::PatchVersionNames PatchManager::GetPatchVersionNames(VirtualFile u
}
}
- // SDMC mod directory (LayeredFS)
+ // SDMC mod directory (RomFS LayeredFS)
const auto sdmc_mod_dir = fs_controller.GetSDMCModificationLoadRoot(title_id);
- if (sdmc_mod_dir != nullptr && sdmc_mod_dir->GetSize() > 0) {
- std::string types;
-
- const auto exefs_dir = FindSubdirectoryCaseless(sdmc_mod_dir, "exefs");
- if (IsDirValidAndNonEmpty(exefs_dir)) {
- bool layeredfs = false;
-
- if (layeredfs)
- AppendCommaIfNotEmpty(types, "LayeredExeFS");
- }
- if (IsDirValidAndNonEmpty(FindSubdirectoryCaseless(sdmc_mod_dir, "romfs")))
- AppendCommaIfNotEmpty(types, "LayeredFS");
-
- if (!types.empty()) {
- const auto mod_disabled =
- std::find(disabled.begin(), disabled.end(), "SDMC") != disabled.end();
- out.insert_or_assign(mod_disabled ? "[D] SDMC" : "SDMC", types);
- }
+ if (sdmc_mod_dir != nullptr && sdmc_mod_dir->GetSize() > 0 &&
+ IsDirValidAndNonEmpty(FindSubdirectoryCaseless(sdmc_mod_dir, "romfs"))) {
+ const auto mod_disabled =
+ std::find(disabled.begin(), disabled.end(), "SDMC") != disabled.end();
+ out.insert_or_assign(mod_disabled ? "[D] SDMC" : "SDMC", "LayeredFS");
}
// DLC
diff --git a/src/core/file_sys/sdmc_factory.cpp b/src/core/file_sys/sdmc_factory.cpp
index f4dba8f163..7e878123c5 100644
--- a/src/core/file_sys/sdmc_factory.cpp
+++ b/src/core/file_sys/sdmc_factory.cpp
@@ -29,8 +29,9 @@ ResultVal<VirtualDir> SDMCFactory::Open() const {
VirtualDir SDMCFactory::GetSDMCModificationLoadRoot(u64 title_id) const {
// LayeredFS doesn't work on updates and title id-less homebrew
- if (title_id == 0 || (title_id & 0xFFF) == 0x800)
+ if (title_id == 0 || (title_id & 0xFFF) == 0x800) {
return nullptr;
+ }
return GetOrCreateDirectoryRelative(dir, fmt::format("/atmosphere/contents/{:016X}", title_id));
}