From e572fb102f9b6a107bf2749256d8ca32aa73a579 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sat, 14 Jan 2017 20:10:44 +0100 Subject: [PATCH] Move ES_DIVerify's Movie-related code to a more logical place --- Source/Core/Core/IOS/ES/ES.cpp | 43 ----------------------------- Source/Core/Core/WiiRoot.cpp | 50 ++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 43 deletions(-) diff --git a/Source/Core/Core/IOS/ES/ES.cpp b/Source/Core/Core/IOS/ES/ES.cpp index a32fdc83a9..09c17fbc98 100644 --- a/Source/Core/Core/IOS/ES/ES.cpp +++ b/Source/Core/Core/IOS/ES/ES.cpp @@ -57,16 +57,11 @@ #include "Core/IOS/ES/Formats.h" #include "Core/IOS/USB/Bluetooth/BTEmu.h" #include "Core/IOS/USB/Bluetooth/WiimoteDevice.h" -#include "Core/Movie.h" #include "Core/PowerPC/PowerPC.h" #include "Core/ec_wii.h" #include "DiscIO/NANDContentLoader.h" #include "DiscIO/Volume.h" -#ifdef _WIN32 -#include -#endif - namespace IOS { namespace HLE @@ -1316,44 +1311,6 @@ u32 ES::ES_DIVerify(const std::vector& tmd) File::CreateFullPath(tmd_path); File::CreateFullPath(Common::GetTitleDataPath(tmd_title_id, Common::FROM_SESSION_ROOT)); - std::string save_path = Common::GetTitleDataPath(tmd_title_id, Common::FROM_SESSION_ROOT); - - // TODO: There's not supposed to be a whole load of Movie code in IOS HLE. - // TODO: Force the game to save to another location, instead of moving the user's save. - if (Movie::IsPlayingInput() && Movie::IsConfigSaved() && Movie::IsStartingFromClearSave()) - { - if (File::Exists(save_path + "banner.bin")) - { - if (File::Exists(save_path + "../backup/")) - { - // The last run of this game must have been to play back a movie, so their save is already - // backed up. - File::DeleteDirRecursively(save_path); - } - else - { -#ifdef _WIN32 - MoveFile(UTF8ToTStr(save_path).c_str(), UTF8ToTStr(save_path + "../backup/").c_str()); -#else - File::CopyDir(save_path, save_path + "../backup/"); - File::DeleteDirRecursively(save_path); -#endif - } - } - } - else if (File::Exists(save_path + "../backup/")) - { - // Delete the save made by a previous movie, and copy back the user's save. - if (File::Exists(save_path + "banner.bin")) - File::DeleteDirRecursively(save_path); -#ifdef _WIN32 - MoveFile(UTF8ToTStr(save_path + "../backup/").c_str(), UTF8ToTStr(save_path).c_str()); -#else - File::CopyDir(save_path + "../backup/", save_path); - File::DeleteDirRecursively(save_path + "../backup/"); -#endif - } - if (!File::Exists(tmd_path)) { File::IOFile tmd_file(tmd_path, "wb"); diff --git a/Source/Core/Core/WiiRoot.cpp b/Source/Core/Core/WiiRoot.cpp index dad2252cf1..7d5061e695 100644 --- a/Source/Core/Core/WiiRoot.cpp +++ b/Source/Core/Core/WiiRoot.cpp @@ -9,15 +9,63 @@ #include "Common/Logging/Log.h" #include "Common/NandPaths.h" #include "Common/SysConf.h" +#include "Core/ConfigManager.h" +#include "Core/Movie.h" #include "Core/WiiRoot.h" +#ifdef _WIN32 +#include +#endif + namespace Core { static std::string s_temp_wii_root; +static void InitializeDeterministicWiiSaves() +{ + std::string save_path = + Common::GetTitleDataPath(SConfig::GetInstance().m_title_id, Common::FROM_SESSION_ROOT); + + // TODO: Force the game to save to another location, instead of moving the user's save. + if (Movie::IsPlayingInput() && Movie::IsConfigSaved() && Movie::IsStartingFromClearSave()) + { + if (File::Exists(save_path + "banner.bin")) + { + if (File::Exists(save_path + "../backup/")) + { + // The last run of this game must have been to play back a movie, so their save is already + // backed up. + File::DeleteDirRecursively(save_path); + } + else + { +#ifdef _WIN32 + MoveFile(UTF8ToTStr(save_path).c_str(), UTF8ToTStr(save_path + "../backup/").c_str()); +#else + File::CopyDir(save_path, save_path + "../backup/"); + File::DeleteDirRecursively(save_path); +#endif + } + } + } + else if (File::Exists(save_path + "../backup/")) + { + // Delete the save made by a previous movie, and copy back the user's save. + if (File::Exists(save_path + "banner.bin")) + File::DeleteDirRecursively(save_path); +#ifdef _WIN32 + MoveFile(UTF8ToTStr(save_path + "../backup/").c_str(), UTF8ToTStr(save_path).c_str()); +#else + File::CopyDir(save_path + "../backup/", save_path); + File::DeleteDirRecursively(save_path + "../backup/"); +#endif + } +} + void InitializeWiiRoot(bool use_temporary) { ShutdownWiiRoot(); + if (use_temporary) { s_temp_wii_root = File::CreateTempDir(); @@ -44,6 +92,8 @@ void InitializeWiiRoot(bool use_temporary) { File::SetUserPath(D_SESSION_WIIROOT_IDX, File::GetUserPath(D_WIIROOT_IDX)); } + + InitializeDeterministicWiiSaves(); } void ShutdownWiiRoot()