From 1820ed7815677e37b548eb44a579fd94284cec0f Mon Sep 17 00:00:00 2001 From: Collecting Date: Wed, 31 Dec 2025 03:50:58 +0000 Subject: [PATCH] feat(fs): Cross-Compatible Emulator Save Pathing w/ Custom Save Paths Signed-off-by: Collecting --- src/core/file_sys/directory_save_data_filesystem.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/core/file_sys/directory_save_data_filesystem.h b/src/core/file_sys/directory_save_data_filesystem.h index 954841cdd..9a1f1a101 100644 --- a/src/core/file_sys/directory_save_data_filesystem.h +++ b/src/core/file_sys/directory_save_data_filesystem.h @@ -18,8 +18,10 @@ namespace FileSys { /// Uses /0 (committed) and /1 (working) directories for journaling class DirectorySaveDataFileSystem { public: - // optional directory here for backup - explicit DirectorySaveDataFileSystem(VirtualDir base_filesystem, VirtualDir backup_filesystem = nullptr); + // Updated constructor to include mirror_filesystem for external sync (Ryujinx/Eden/etc) + explicit DirectorySaveDataFileSystem(VirtualDir base_filesystem, + VirtualDir backup_filesystem = nullptr, + VirtualDir mirror_filesystem = nullptr); ~DirectorySaveDataFileSystem(); /// Initialize the journaling filesystem @@ -53,9 +55,11 @@ private: Result SynchronizeDirectory(const char* dest_name, const char* source_name); Result CopyDirectoryRecursively(VirtualDir dest, VirtualDir source); Result RetryFinitelyForTargetLocked(std::function operation); + void SmartSyncToMirror(VirtualDir mirror_dest, VirtualDir citron_source); VirtualDir base_fs; - VirtualDir backup_fs; // This will store the NAND path + VirtualDir backup_fs; // This stores the secondary NAND path + VirtualDir mirror_fs; // This stores the External Mirror path (Ryujinx/Eden/etc) VirtualDir working_dir; VirtualDir committed_dir; SaveDataExtraDataAccessor extra_data_accessor;