aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/VirtualFileSystem.cs
diff options
context:
space:
mode:
authorThomas Guillemard <thog@protonmail.com>2018-07-17 21:14:27 +0200
committergdkchan <gab.dark.100@gmail.com>2018-07-17 16:14:27 -0300
commitc2c765b30fdfa9184df580133e22ae946eebc022 (patch)
tree3784a0bdaab54f47c6cdc0ca83ed78a0de4563f5 /Ryujinx.HLE/VirtualFileSystem.cs
parent5d698a7d8d240b9d324e385fb05c0ce9f26fb410 (diff)
hbabi: Implement argv (#272)
This commit implements the argv config key in Ryujinx (by creating a temporary copy of the homebrew executable in the sdmc VFS) to make it possible to load libnx's "romfs" files. This commit also call Os.Dispose in Ns.OnFinish to dispose all resources when exiting
Diffstat (limited to 'Ryujinx.HLE/VirtualFileSystem.cs')
-rw-r--r--Ryujinx.HLE/VirtualFileSystem.cs29
1 files changed, 29 insertions, 0 deletions
diff --git a/Ryujinx.HLE/VirtualFileSystem.cs b/Ryujinx.HLE/VirtualFileSystem.cs
index 8b71caa9..38df81f8 100644
--- a/Ryujinx.HLE/VirtualFileSystem.cs
+++ b/Ryujinx.HLE/VirtualFileSystem.cs
@@ -45,6 +45,35 @@ namespace Ryujinx.HLE
public string GetGameSavesPath() => MakeDirAndGetFullPath(NandPath);
+ public string SwitchPathToSystemPath(string SwitchPath)
+ {
+ string[] Parts = SwitchPath.Split(":");
+ if (Parts.Length != 2)
+ {
+ return null;
+ }
+ return GetFullPath(MakeDirAndGetFullPath(Parts[0]), Parts[1]);
+ }
+
+ public string SystemPathToSwitchPath(string SystemPath)
+ {
+ string BaseSystemPath = GetBasePath() + "/";
+ if (SystemPath.StartsWith(BaseSystemPath))
+ {
+ string RawPath = SystemPath.Replace(BaseSystemPath, "");
+ int FirstSeparatorOffset = RawPath.IndexOf('/');
+ if (FirstSeparatorOffset == -1)
+ {
+ return $"{RawPath}:/";
+ }
+
+ string BasePath = RawPath.Substring(0, FirstSeparatorOffset);
+ string FileName = RawPath.Substring(FirstSeparatorOffset + 1);
+ return $"{BasePath}:/{FileName}";
+ }
+ return null;
+ }
+
private string MakeDirAndGetFullPath(string Dir)
{
string FullPath = Path.Combine(GetBasePath(), Dir);