Skip to content
Permalink
Browse files

Merge pull request #7966 from Techjar/fix-netplay-full-wii-save

Core/WiiRoot: Fix NetPlay full Wii save sync not copying all the saves back to main NAND
  • Loading branch information...
leoetlino committed May 1, 2019
2 parents e9f7cb9 + 20530c2 commit 98b670dd29fd470fc3e55d58a176f94f0c2c29a4
Showing with 19 additions and 18 deletions.
  1. +19 −18 Source/Core/Core/WiiRoot.cpp
@@ -252,27 +252,28 @@ void CleanUpWiiFileSystemContents()
WARN_LOG(CORE, "Failed to copy Mii database to the NAND");
}

const u64 title_id = SConfig::GetInstance().GetTitleID();

const auto session_save = WiiSave::MakeNandStorage(ios->GetFS().get(), title_id);

// FS won't write the save if the directory doesn't exist
const std::string title_path = Common::GetTitleDataPath(title_id);
if (!configured_fs->GetMetadata(IOS::PID_KERNEL, IOS::PID_KERNEL, title_path))
for (const u64 title_id : ios->GetES()->GetInstalledTitles())
{
configured_fs->CreateDirectory(IOS::PID_KERNEL, IOS::PID_KERNEL, title_path, 0,
{IOS::HLE::FS::Mode::ReadWrite, IOS::HLE::FS::Mode::ReadWrite,
IOS::HLE::FS::Mode::ReadWrite});
}
const auto session_save = WiiSave::MakeNandStorage(ios->GetFS().get(), title_id);

const auto user_save = WiiSave::MakeNandStorage(configured_fs.get(), title_id);
// FS won't write the save if the directory doesn't exist
const std::string title_path = Common::GetTitleDataPath(title_id);
if (!configured_fs->GetMetadata(IOS::PID_KERNEL, IOS::PID_KERNEL, title_path))
{
configured_fs->CreateDirectory(IOS::PID_KERNEL, IOS::PID_KERNEL, title_path, 0,
{IOS::HLE::FS::Mode::ReadWrite, IOS::HLE::FS::Mode::ReadWrite,
IOS::HLE::FS::Mode::ReadWrite});
}

const std::string backup_path =
File::GetUserPath(D_BACKUP_IDX) + StringFromFormat("/%016" PRIx64 ".bin", title_id);
const auto backup_save = WiiSave::MakeDataBinStorage(&ios->GetIOSC(), backup_path, "w+b");
const auto user_save = WiiSave::MakeNandStorage(configured_fs.get(), title_id);

// Backup the existing save just in case it's still needed.
WiiSave::Copy(user_save.get(), backup_save.get());
WiiSave::Copy(session_save.get(), user_save.get());
const std::string backup_path =
File::GetUserPath(D_BACKUP_IDX) + StringFromFormat("/%016" PRIx64 ".bin", title_id);
const auto backup_save = WiiSave::MakeDataBinStorage(&ios->GetIOSC(), backup_path, "w+b");

// Backup the existing save just in case it's still needed.
WiiSave::Copy(user_save.get(), backup_save.get());
WiiSave::Copy(session_save.get(), user_save.get());
}
}
} // namespace Core

0 comments on commit 98b670d

Please sign in to comment.
You can’t perform that action at this time.