Remove pre-generated SYSCONF

Dolphin is able to generate one with all correct default settings, so
we don't need to ship with a pre-generated SYSCONF and worry about
syncing default settings.

Additionally, this commit changes SysConf to work with session SYSCONFs
so that Dolphin is able to generate a default one even for Movie/TAS.
Which SYSCONF needs to be touched is explicitly specified to avoid
confusion about which file SysConf is managing.

(Another notable change is that the Wii root functions are moved into
Core to prevent Common from depending on Core.)
This commit is contained in:
Léo Lam
2017-01-06 21:59:02 +01:00
parent d346d4ced1
commit 64101137cd
14 changed files with 111 additions and 82 deletions

View File

@ -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

View File

@ -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");

View File

@ -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);
}

View File

@ -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" />

View File

@ -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>

View File

@ -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();

View File

@ -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

View File

@ -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();
}
}
}

View File

@ -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();
}