diff options
author | Thomas Guillemard <thog@protonmail.com> | 2018-07-17 21:14:27 +0200 |
---|---|---|
committer | gdkchan <gab.dark.100@gmail.com> | 2018-07-17 16:14:27 -0300 |
commit | c2c765b30fdfa9184df580133e22ae946eebc022 (patch) | |
tree | 3784a0bdaab54f47c6cdc0ca83ed78a0de4563f5 /Ryujinx.HLE/VirtualFileSystem.cs | |
parent | 5d698a7d8d240b9d324e385fb05c0ce9f26fb410 (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.cs | 29 |
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); |