From 43319bde2dab4ea2962c34a1c1a404879871f68a Mon Sep 17 00:00:00 2001 From: Collecting Date: Wed, 31 Dec 2025 04:00:32 +0000 Subject: [PATCH] feat(fs): Cross-Compatible Emulator Save Pathing w/ Custom Save Paths Signed-off-by: Collecting --- src/frontend_common/config.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/frontend_common/config.cpp b/src/frontend_common/config.cpp index 8b9b85ba3..d53e022e2 100644 --- a/src/frontend_common/config.cpp +++ b/src/frontend_common/config.cpp @@ -459,6 +459,7 @@ void Config::ReadValues() { ReadDataStorageValues(); ReadDebuggingValues(); ReadCustomSavePathValues(); + ReadMirrorValues(); ReadDisabledAddOnValues(); ReadDisabledCheatValues(); ReadNetworkValues(); @@ -564,6 +565,7 @@ void Config::SaveValues() { SaveDataStorageValues(); SaveDebuggingValues(); SaveCustomSavePathValues(); + SaveMirrorValues(); SaveDisabledAddOnValues(); SaveDisabledCheatValues(); SaveNetworkValues(); @@ -1181,3 +1183,33 @@ void Config::SetArrayIndex(const int index) { array_stack.back().size = array_index; array_stack.back().index = array_index; } + +void Config::ReadMirrorValues() { + BeginGroup(std::string("MirroredSaves")); + const int size = BeginArray(std::string("")); // Keyless array style + for (int i = 0; i < size; ++i) { + SetArrayIndex(i); + const auto title_id = ReadUnsignedIntegerSetting(std::string("title_id"), 0); + const auto path = ReadStringSetting(std::string("path"), std::string("")); + + if (title_id != 0 && !path.empty()) { + Settings::values.mirrored_save_paths.insert_or_assign(title_id, path); + } + } + EndArray(); + EndGroup(); +} + +void Config::SaveMirrorValues() { + BeginGroup(std::string("MirroredSaves")); + int i = 0; + BeginArray(std::string("")); // Keyless array style + for (const auto& elem : Settings::values.mirrored_save_paths) { + SetArrayIndex(i); + WriteIntegerSetting(std::string("title_id"), elem.first, std::make_optional(static_cast(0))); + WriteStringSetting(std::string("path"), elem.second, std::make_optional(std::string(""))); + ++i; + } + EndArray(); + EndGroup(); +}