SaveHelper.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using Ryujinx.HLE.HOS;
  2. using System.IO;
  3. using static Ryujinx.HLE.FileSystem.VirtualFileSystem;
  4. namespace Ryujinx.HLE.FileSystem
  5. {
  6. static class SaveHelper
  7. {
  8. public static string GetSavePath(SaveInfo saveMetaData, ServiceCtx context)
  9. {
  10. string baseSavePath = NandPath;
  11. long currentTitleId = saveMetaData.TitleId;
  12. switch (saveMetaData.SaveSpaceId)
  13. {
  14. case SaveSpaceId.NandUser:
  15. baseSavePath = UserNandPath;
  16. break;
  17. case SaveSpaceId.NandSystem:
  18. baseSavePath = SystemNandPath;
  19. break;
  20. case SaveSpaceId.SdCard:
  21. baseSavePath = Path.Combine(SdCardPath, "Nintendo");
  22. break;
  23. }
  24. baseSavePath = Path.Combine(baseSavePath, "save");
  25. if (saveMetaData.TitleId == 0 && saveMetaData.SaveDataType == SaveDataType.SaveData)
  26. {
  27. currentTitleId = context.Process.TitleId;
  28. }
  29. string saveAccount = saveMetaData.UserId.IsZero() ? "savecommon" : saveMetaData.UserId.ToString();
  30. string savePath = Path.Combine(baseSavePath,
  31. saveMetaData.SaveId.ToString("x16"),
  32. saveAccount,
  33. saveMetaData.SaveDataType == SaveDataType.SaveData ? currentTitleId.ToString("x16") : string.Empty);
  34. return savePath;
  35. }
  36. }
  37. }