aboutsummaryrefslogtreecommitdiff
path: root/src/core/file_sys/sdmc_factory.cpp
diff options
context:
space:
mode:
authorlat9nq <22451773+lat9nq@users.noreply.github.com>2021-06-14 21:41:25 -0400
committerMorph <39850852+Morph1984@users.noreply.github.com>2021-06-28 10:08:07 -0400
commit329398cd41d0826dfca1f89c440c71055f57cbe8 (patch)
tree76e64c8defb6dc833a1e419aacc7f04370f5354d /src/core/file_sys/sdmc_factory.cpp
parent7d09c0a6944476db15527a436f7029a4bd2fb23f (diff)
core: Support LayeredFS mod from SDMC directory
Enables loading a mod directly from `[yuzu data directory]/sdmc/atmosphere/contents/[title_id]`. For use with some homebrew mod managers.
Diffstat (limited to 'src/core/file_sys/sdmc_factory.cpp')
-rw-r--r--src/core/file_sys/sdmc_factory.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/core/file_sys/sdmc_factory.cpp b/src/core/file_sys/sdmc_factory.cpp
index cb56d8f2db..f4dba8f163 100644
--- a/src/core/file_sys/sdmc_factory.cpp
+++ b/src/core/file_sys/sdmc_factory.cpp
@@ -27,6 +27,13 @@ ResultVal<VirtualDir> SDMCFactory::Open() const {
return MakeResult<VirtualDir>(dir);
}
+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)
+ return nullptr;
+ return GetOrCreateDirectoryRelative(dir, fmt::format("/atmosphere/contents/{:016X}", title_id));
+}
+
VirtualDir SDMCFactory::GetSDMCContentDirectory() const {
return GetOrCreateDirectoryRelative(dir, "/Nintendo/Contents");
}