summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Parlane <parlane@gmail.com>2017-01-13 09:39:33 +1300
committerGitHub <noreply@github.com>2017-01-13 09:39:33 +1300
commitcc513783899f84dd7dcfaa037c7f100b1a67eccd (patch)
tree0cdcc2d10c1e080dc99d982434e38b5df1903442
parentd346d4ced163502be4d308a6ce8573814454c11c (diff)
parent64101137cd6e507942364fb7e446692d69277341 (diff)
Merge pull request #4621 from leoetlino/default-sysconf
Remove pre-generated SYSCONF
-rw-r--r--Data/Sys/Wii/shared2/sys/SYSCONFbin16384 -> 0 bytes
-rw-r--r--Source/Core/Common/NandPaths.cpp41
-rw-r--r--Source/Core/Common/NandPaths.h4
-rw-r--r--Source/Core/Common/SysConf.cpp39
-rw-r--r--Source/Core/Common/SysConf.h7
-rw-r--r--Source/Core/Core/CMakeLists.txt1
-rw-r--r--Source/Core/Core/ConfigManager.cpp5
-rw-r--r--Source/Core/Core/Core.cpp4
-rw-r--r--Source/Core/Core/Core.vcxproj2
-rw-r--r--Source/Core/Core/Core.vcxproj.filters2
-rw-r--r--Source/Core/Core/HW/HW.cpp6
-rw-r--r--Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb_bt_emu.cpp14
-rw-r--r--Source/Core/Core/WiiRoot.cpp57
-rw-r--r--Source/Core/Core/WiiRoot.h11
14 files changed, 111 insertions, 82 deletions
diff --git a/Data/Sys/Wii/shared2/sys/SYSCONF b/Data/Sys/Wii/shared2/sys/SYSCONF
deleted file mode 100644
index 283c84a7e4..0000000000
--- a/Data/Sys/Wii/shared2/sys/SYSCONF
+++ /dev/null
Binary files differ
diff --git a/Source/Core/Common/NandPaths.cpp b/Source/Core/Common/NandPaths.cpp
index 60cb49fa26..99c75f01f8 100644
--- a/Source/Core/Common/NandPaths.cpp
+++ b/Source/Core/Common/NandPaths.cpp
@@ -20,46 +20,7 @@
namespace Common
{
-static std::string s_temp_wii_root;
-
-void InitializeWiiRoot(bool use_dummy)
-{
- ShutdownWiiRoot();
- if (use_dummy)
- {
- s_temp_wii_root = File::CreateTempDir();
- if (s_temp_wii_root.empty())
- {
- ERROR_LOG(WII_IPC_FILEIO, "Could not create temporary directory");
- return;
- }
- File::CopyDir(File::GetSysDirectory() + WII_USER_DIR, s_temp_wii_root);
- WARN_LOG(WII_IPC_FILEIO, "Using temporary directory %s for minimal Wii FS",
- s_temp_wii_root.c_str());
- static bool s_registered;
- if (!s_registered)
- {
- s_registered = true;
- atexit(ShutdownWiiRoot);
- }
- File::SetUserPath(D_SESSION_WIIROOT_IDX, s_temp_wii_root);
- }
- else
- {
- File::SetUserPath(D_SESSION_WIIROOT_IDX, File::GetUserPath(D_WIIROOT_IDX));
- }
-}
-
-void ShutdownWiiRoot()
-{
- if (!s_temp_wii_root.empty())
- {
- File::DeleteDirRecursively(s_temp_wii_root);
- s_temp_wii_root.clear();
- }
-}
-
-static std::string RootUserPath(FromWhichRoot from)
+std::string RootUserPath(FromWhichRoot from)
{
int idx = from == FROM_CONFIGURED_ROOT ? D_WIIROOT_IDX : D_SESSION_WIIROOT_IDX;
return File::GetUserPath(idx);
diff --git a/Source/Core/Common/NandPaths.h b/Source/Core/Common/NandPaths.h
index ab15d6f049..c5a3234e8c 100644
--- a/Source/Core/Common/NandPaths.h
+++ b/Source/Core/Common/NandPaths.h
@@ -15,15 +15,13 @@ static const std::string TITLEID_SYSMENU_STRING = "0000000100000002";
namespace Common
{
-void InitializeWiiRoot(bool use_temporary);
-void ShutdownWiiRoot();
-
enum FromWhichRoot
{
FROM_CONFIGURED_ROOT, // not related to currently running game - use D_WIIROOT_IDX
FROM_SESSION_ROOT, // request from currently running game - use D_SESSION_WIIROOT_IDX
};
+std::string RootUserPath(FromWhichRoot from);
std::string GetTicketFileName(u64 _titleID, FromWhichRoot from);
std::string GetTMDFileName(u64 _titleID, FromWhichRoot from);
std::string GetTitleDataPath(u64 _titleID, FromWhichRoot from);
diff --git a/Source/Core/Common/SysConf.cpp b/Source/Core/Common/SysConf.cpp
index 3b2ab36694..e8f8fb3cef 100644
--- a/Source/Core/Common/SysConf.cpp
+++ b/Source/Core/Common/SysConf.cpp
@@ -17,9 +17,9 @@
#include "Core/Movie.h"
-SysConf::SysConf()
+SysConf::SysConf(const Common::FromWhichRoot root_type)
{
- UpdateLocation();
+ UpdateLocation(root_type);
}
SysConf::~SysConf()
@@ -50,6 +50,7 @@ bool SysConf::LoadFromFile(const std::string& filename)
{
File::CreateFullPath(filename);
GenerateSysConf();
+ ApplySettingsFromMovie();
return true;
}
@@ -61,12 +62,10 @@ bool SysConf::LoadFromFile(const std::string& filename)
SYSCONF_SIZE, size))
{
GenerateSysConf();
+ ApplySettingsFromMovie();
return true;
}
- else
- {
- return false;
- }
+ return false;
}
File::IOFile f(filename, "rb");
@@ -76,13 +75,7 @@ bool SysConf::LoadFromFile(const std::string& filename)
{
m_Filename = filename;
m_IsValid = true;
- // Apply Wii settings from normal SYSCONF on Movie recording/playback
- if (Movie::IsRecordingInput() || Movie::IsPlayingInput())
- {
- SetData("IPL.LNG", Movie::GetLanguage());
- SetData("IPL.E60", Movie::IsPAL60());
- SetData("IPL.PGS", Movie::IsProgressive());
- }
+ ApplySettingsFromMovie();
return true;
}
}
@@ -90,6 +83,17 @@ bool SysConf::LoadFromFile(const std::string& filename)
return false;
}
+// Apply Wii settings from normal SYSCONF on Movie recording/playback
+void SysConf::ApplySettingsFromMovie()
+{
+ if (!Movie::IsMovieActive())
+ return;
+
+ SetData("IPL.LNG", Movie::GetLanguage());
+ SetData("IPL.E60", Movie::IsPAL60());
+ SetData("IPL.PGS", Movie::IsProgressive());
+}
+
bool SysConf::LoadFromFileInternal(File::IOFile&& file)
{
// Fill in infos
@@ -420,7 +424,7 @@ bool SysConf::Save()
return SaveToFile(m_Filename);
}
-void SysConf::UpdateLocation()
+void SysConf::UpdateLocation(const Common::FromWhichRoot root_type)
{
// if the old Wii User dir had a sysconf file save any settings that have been changed to it
if (m_IsValid)
@@ -429,11 +433,8 @@ void SysConf::UpdateLocation()
// Clear the old filename and set the default filename to the new user path
// So that it can be generated if the file does not exist in the new location
m_Filename.clear();
- // Note: We don't use the dummy Wii root here (if in use) because this is
- // all tied up with the configuration code. In the future this should
- // probably just be synced with the other settings.
- m_FilenameDefault =
- File::GetUserPath(D_WIIROOT_IDX) + DIR_SEP WII_SYSCONF_DIR DIR_SEP WII_SYSCONF;
+ // In the future the SYSCONF should probably just be synced with the other settings.
+ m_FilenameDefault = Common::RootUserPath(root_type) + DIR_SEP WII_SYSCONF_DIR DIR_SEP WII_SYSCONF;
Reload();
}
diff --git a/Source/Core/Common/SysConf.h b/Source/Core/Common/SysConf.h
index 97b3a98232..5eaed702d7 100644
--- a/Source/Core/Common/SysConf.h
+++ b/Source/Core/Common/SysConf.h
@@ -13,6 +13,7 @@
#include "Common/CommonTypes.h"
#include "Common/Logging/Log.h"
#include "Common/MsgHandler.h"
+#include "Common/NandPaths.h"
namespace File
{
@@ -79,7 +80,7 @@ struct SSysConfEntry
class SysConf
{
public:
- SysConf();
+ SysConf(Common::FromWhichRoot root_type);
~SysConf();
bool IsValid() { return m_IsValid; }
@@ -176,13 +177,13 @@ public:
bool SaveToFile(const std::string& filename);
bool LoadFromFile(const std::string& filename);
bool Reload();
- // This function is used when the NAND root is changed
- void UpdateLocation();
+ void UpdateLocation(Common::FromWhichRoot root_type);
private:
bool LoadFromFileInternal(File::IOFile&& file);
void GenerateSysConf();
void Clear();
+ void ApplySettingsFromMovie();
std::string m_Filename;
std::string m_FilenameDefault;
diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt
index a1c72eba39..a5825e15e7 100644
--- a/Source/Core/Core/CMakeLists.txt
+++ b/Source/Core/Core/CMakeLists.txt
@@ -16,6 +16,7 @@ set(SRCS ActionReplay.cpp
NetPlayServer.cpp
PatchEngine.cpp
State.cpp
+ WiiRoot.cpp
Boot/Boot_BS2Emu.cpp
Boot/Boot.cpp
Boot/Boot_DOL.cpp
diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp
index eade56d195..a6a8c3e3b1 100644
--- a/Source/Core/Core/ConfigManager.cpp
+++ b/Source/Core/Core/ConfigManager.cpp
@@ -12,6 +12,7 @@
#include "Common/FileUtil.h"
#include "Common/Logging/Log.h"
#include "Common/MsgHandler.h"
+#include "Common/NandPaths.h"
#include "Common/StringUtil.h"
#include "Common/SysConf.h"
@@ -355,7 +356,7 @@ void SConfig::SaveSysconfSettings(IniFile& ini)
void SConfig::SaveSettingsToSysconf()
{
- SysConf sysconf;
+ SysConf sysconf{Common::FromWhichRoot::FROM_CONFIGURED_ROOT};
sysconf.SetData<u8>("IPL.SSV", m_wii_screensaver);
sysconf.SetData<u8>("IPL.LNG", m_wii_language);
@@ -687,7 +688,7 @@ void SConfig::LoadSysconfSettings(IniFile& ini)
void SConfig::LoadSettingsFromSysconf()
{
- SysConf sysconf;
+ SysConf sysconf{Common::FromWhichRoot::FROM_CONFIGURED_ROOT};
m_wii_screensaver = sysconf.GetData<u8>("IPL.SSV");
m_wii_language = sysconf.GetData<u8>("IPL.LNG");
diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp
index 35029c911c..992bc87b6d 100644
--- a/Source/Core/Core/Core.cpp
+++ b/Source/Core/Core/Core.cpp
@@ -24,7 +24,6 @@
#include "Common/Logging/LogManager.h"
#include "Common/MathUtil.h"
#include "Common/MemoryUtil.h"
-#include "Common/NandPaths.h"
#include "Common/StringUtil.h"
#include "Common/Thread.h"
#include "Common/Timer.h"
@@ -65,6 +64,7 @@
#include "Core/PowerPC/JitInterface.h"
#include "Core/PowerPC/PowerPC.h"
#include "Core/State.h"
+#include "Core/WiiRoot.h"
#ifdef USE_GDBSTUB
#include "Core/PowerPC/GDBStub.h"
@@ -990,7 +990,7 @@ void UpdateWantDeterminism(bool initial)
// We need to clear the cache because some parts of the JIT depend on want_determinism, e.g. use
// of FMA.
JitInterface::ClearCache();
- Common::InitializeWiiRoot(g_want_determinism);
+ Core::InitializeWiiRoot(g_want_determinism);
Core::PauseAndLock(false, was_unpaused);
}
diff --git a/Source/Core/Core/Core.vcxproj b/Source/Core/Core/Core.vcxproj
index 599aa36e07..d18d130422 100644
--- a/Source/Core/Core/Core.vcxproj
+++ b/Source/Core/Core/Core.vcxproj
@@ -263,6 +263,7 @@
<ClCompile Include="PowerPC\PPCTables.cpp" />
<ClCompile Include="PowerPC\Profiler.cpp" />
<ClCompile Include="State.cpp" />
+ <ClCompile Include="WiiRoot.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="ActionReplay.h" />
@@ -464,6 +465,7 @@
<ClInclude Include="PowerPC\PPCTables.h" />
<ClInclude Include="PowerPC\Profiler.h" />
<ClInclude Include="State.h" />
+ <ClInclude Include="WiiRoot.h" />
</ItemGroup>
<ItemGroup>
<Text Include="CMakeLists.txt" />
diff --git a/Source/Core/Core/Core.vcxproj.filters b/Source/Core/Core/Core.vcxproj.filters
index 074218bbe1..4b33dd2e2e 100644
--- a/Source/Core/Core/Core.vcxproj.filters
+++ b/Source/Core/Core/Core.vcxproj.filters
@@ -156,6 +156,7 @@
<ClCompile Include="NetPlayServer.cpp" />
<ClCompile Include="PatchEngine.cpp" />
<ClCompile Include="State.cpp" />
+ <ClCompile Include="WiiRoot.cpp" />
<ClCompile Include="ActionReplay.cpp">
<Filter>ActionReplay</Filter>
</ClCompile>
@@ -794,6 +795,7 @@
<ClInclude Include="NetPlayServer.h" />
<ClInclude Include="PatchEngine.h" />
<ClInclude Include="State.h" />
+ <ClInclude Include="WiiRoot.h" />
<ClInclude Include="ActionReplay.h">
<Filter>ActionReplay</Filter>
</ClInclude>
diff --git a/Source/Core/Core/HW/HW.cpp b/Source/Core/Core/HW/HW.cpp
index efb8590355..732009258b 100644
--- a/Source/Core/Core/HW/HW.cpp
+++ b/Source/Core/Core/HW/HW.cpp
@@ -4,7 +4,6 @@
#include "Common/ChunkFile.h"
#include "Common/CommonTypes.h"
-#include "Common/NandPaths.h"
#include "Core/ConfigManager.h"
#include "Core/Core.h"
@@ -24,6 +23,7 @@
#include "Core/HW/WII_IPC.h"
#include "Core/IPC_HLE/WII_IPC_HLE.h"
#include "Core/State.h"
+#include "Core/WiiRoot.h"
#include "DiscIO/NANDContentLoader.h"
namespace HW
@@ -50,7 +50,7 @@ void Init()
if (SConfig::GetInstance().bWii)
{
- Common::InitializeWiiRoot(Core::g_want_determinism);
+ Core::InitializeWiiRoot(Core::g_want_determinism);
DiscIO::cUIDsys::AccessInstance().UpdateLocation();
DiscIO::CSharedContent::AccessInstance().UpdateLocation();
WII_IPCInterface::Init();
@@ -64,7 +64,7 @@ void Shutdown()
{
WII_IPC_HLE_Interface::Shutdown(); // Depends on Memory
WII_IPCInterface::Shutdown();
- Common::ShutdownWiiRoot();
+ Core::ShutdownWiiRoot();
}
SystemTimers::Shutdown();
diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb_bt_emu.cpp b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb_bt_emu.cpp
index eda94545bc..f81169a140 100644
--- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb_bt_emu.cpp
+++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb_bt_emu.cpp
@@ -12,6 +12,7 @@
#include "Common/FileUtil.h"
#include "Common/Logging/Log.h"
#include "Common/MsgHandler.h"
+#include "Common/NandPaths.h"
#include "Common/StringUtil.h"
#include "Common/SysConf.h"
#include "Core/Core.h"
@@ -38,17 +39,10 @@ CWII_IPC_HLE_Device_usb_oh1_57e_305_emu::CWII_IPC_HLE_Device_usb_oh1_57e_305_emu
u32 _DeviceID, const std::string& _rDeviceName)
: CWII_IPC_HLE_Device_usb_oh1_57e_305_base(_DeviceID, _rDeviceName)
{
- SysConf sysconf;
- if (Core::g_want_determinism)
- {
- // See SysConf::UpdateLocation for comment about the Future.
- sysconf.LoadFromFile(File::GetUserPath(D_SESSION_WIIROOT_IDX) +
- DIR_SEP WII_SYSCONF_DIR DIR_SEP WII_SYSCONF);
- }
- else
- {
+ SysConf sysconf{Core::g_want_determinism ? Common::FromWhichRoot::FROM_SESSION_ROOT :
+ Common::FromWhichRoot::FROM_CONFIGURED_ROOT};
+ if (!Core::g_want_determinism)
BackUpBTInfoSection(&sysconf);
- }
// Activate only first Wii Remote by default
diff --git a/Source/Core/Core/WiiRoot.cpp b/Source/Core/Core/WiiRoot.cpp
new file mode 100644
index 0000000000..d0be403339
--- /dev/null
+++ b/Source/Core/Core/WiiRoot.cpp
@@ -0,0 +1,57 @@
+// Copyright 2016 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#include <string>
+
+#include "Common/CommonPaths.h"
+#include "Common/FileUtil.h"
+#include "Common/Logging/Log.h"
+#include "Common/NandPaths.h"
+#include "Common/SysConf.h"
+#include "Core/WiiRoot.h"
+
+namespace Core
+{
+static std::string s_temp_wii_root;
+
+void InitializeWiiRoot(bool use_temporary)
+{
+ ShutdownWiiRoot();
+ if (use_temporary)
+ {
+ s_temp_wii_root = File::CreateTempDir();
+ if (s_temp_wii_root.empty())
+ {
+ ERROR_LOG(WII_IPC_FILEIO, "Could not create temporary directory");
+ return;
+ }
+ File::CopyDir(File::GetSysDirectory() + WII_USER_DIR, s_temp_wii_root);
+ WARN_LOG(WII_IPC_FILEIO, "Using temporary directory %s for minimal Wii FS",
+ s_temp_wii_root.c_str());
+ static bool s_registered;
+ if (!s_registered)
+ {
+ s_registered = true;
+ atexit(ShutdownWiiRoot);
+ }
+ File::SetUserPath(D_SESSION_WIIROOT_IDX, s_temp_wii_root);
+ // Generate a SYSCONF with default settings for the temporary Wii NAND.
+ SysConf sysconf{Common::FromWhichRoot::FROM_SESSION_ROOT};
+ sysconf.Save();
+ }
+ else
+ {
+ File::SetUserPath(D_SESSION_WIIROOT_IDX, File::GetUserPath(D_WIIROOT_IDX));
+ }
+}
+
+void ShutdownWiiRoot()
+{
+ if (!s_temp_wii_root.empty())
+ {
+ File::DeleteDirRecursively(s_temp_wii_root);
+ s_temp_wii_root.clear();
+ }
+}
+}
diff --git a/Source/Core/Core/WiiRoot.h b/Source/Core/Core/WiiRoot.h
new file mode 100644
index 0000000000..7174fd9943
--- /dev/null
+++ b/Source/Core/Core/WiiRoot.h
@@ -0,0 +1,11 @@
+// Copyright 2016 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#pragma once
+
+namespace Core
+{
+void InitializeWiiRoot(bool use_temporary);
+void ShutdownWiiRoot();
+}