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
commit1664c74a6c5a02640bb5f2204b661f94e825d906 (patch)
tree76e64c8defb6dc833a1e419aacc7f04370f5354d /src/core/file_sys/sdmc_factory.cpp
parentbfecd395d49581a575d8cf1d8a22a5305a49a45a (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 cb56d8f2d..f4dba8f16 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");
}