summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2016-01-27 18:09:49 -0600
committerLéo Lam <leo@innovatetechnologi.es>2017-03-05 15:47:25 +0100
commitb93609e1ffaeaf3faf6f8fde4e9efb45efd21826 (patch)
treeef53bea0a17d6d0d80220d1c3830489cac6e683e /Source
parent1902f9f35aa38f2003a02467906c6c666a49b5a2 (diff)
Movie configuration loader
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/ConfigLoaders/MovieConfigLoader.cpp86
-rw-r--r--Source/Core/Core/ConfigLoaders/MovieConfigLoader.h35
2 files changed, 121 insertions, 0 deletions
diff --git a/Source/Core/Core/ConfigLoaders/MovieConfigLoader.cpp b/Source/Core/Core/ConfigLoaders/MovieConfigLoader.cpp
new file mode 100644
index 0000000000..dc115e1bb4
--- /dev/null
+++ b/Source/Core/Core/ConfigLoaders/MovieConfigLoader.cpp
@@ -0,0 +1,86 @@
+// Copyright 2016 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#include <cstring>
+#include <string>
+
+#include "Common/CommonFuncs.h"
+#include "Common/CommonPaths.h"
+#include "Common/CommonTypes.h"
+#include "Common/Config/Config.h"
+#include "Common/FileUtil.h"
+#include "Common/IniFile.h"
+
+#include "Core/ConfigLoaders/MovieConfigLoader.h"
+#include "Core/Movie.h"
+
+namespace ConfigLoaders
+{
+// TODO: Future project, let this support all the configuration options.
+// This will require a large break to the DTM format
+void MovieConfigLayerLoader::Load(Config::Layer* config_layer)
+{
+ Config::Section* core = config_layer->GetOrCreateSection(Config::System::Main, "Core");
+ Config::Section* display = config_layer->GetOrCreateSection(Config::System::Main, "Display");
+ Config::Section* video_settings = Config::GetOrCreateSection(Config::System::GFX, "Settings");
+ Config::Section* video_hacks = Config::GetOrCreateSection(Config::System::GFX, "Hacks");
+
+ core->Set("SkipIdle", m_header->bSkipIdle);
+ core->Set("CPUThread", m_header->bDualCore);
+ core->Set("DSPHLE", m_header->bDSPHLE);
+ core->Set("FastDiscSpeed", m_header->bFastDiscSpeed);
+ core->Set("CPUCore", m_header->CPUCore);
+ core->Set("SyncGPU", m_header->bSyncGPU);
+ core->Set("GFXBackend", std::string(reinterpret_cast<char*>(m_header->videoBackend)));
+ display->Set("ProgressiveScan", m_header->bProgressive);
+ display->Set("PAL60", m_header->bPAL60);
+
+ video_settings->Set("UseXFB", m_header->bUseXFB);
+ video_settings->Set("UseRealXFB", m_header->bUseRealXFB);
+ video_hacks->Set("EFBAccessEnable", m_header->bEFBAccessEnable);
+ video_hacks->Set("EFBToTextureEnable", m_header->bSkipEFBCopyToRam);
+ video_hacks->Set("EFBEmulateFormatChanges", m_header->bEFBEmulateFormatChanges);
+}
+
+void MovieConfigLayerLoader::Save(Config::Layer* config_layer)
+{
+ Config::Section* core = config_layer->GetOrCreateSection(Config::System::Main, "Core");
+ Config::Section* display = config_layer->GetOrCreateSection(Config::System::Main, "Display");
+ Config::Section* video_settings = Config::GetOrCreateSection(Config::System::GFX, "Settings");
+ Config::Section* video_hacks = Config::GetOrCreateSection(Config::System::GFX, "Hacks");
+
+ std::string video_backend;
+ u32 cpu_core;
+
+ core->Get("SkipIdle", &m_header->bSkipIdle);
+ core->Get("CPUThread", &m_header->bDualCore);
+ core->Get("DSPHLE", &m_header->bDSPHLE);
+ core->Get("FastDiscSpeed", &m_header->bFastDiscSpeed);
+ core->Get("CPUCore", &cpu_core);
+ core->Get("SyncGPU", &m_header->bSyncGPU);
+ core->Get("GFXBackend", &video_backend);
+ display->Get("ProgressiveScan", &m_header->bProgressive);
+ display->Get("PAL60", &m_header->bPAL60);
+
+ video_settings->Get("UseXFB", &m_header->bUseXFB);
+ video_settings->Get("UseRealXFB", &m_header->bUseRealXFB);
+ video_hacks->Get("EFBAccessEnable", &m_header->bEFBAccessEnable);
+ video_hacks->Get("EFBToTextureEnable", &m_header->bSkipEFBCopyToRam);
+ video_hacks->Get("EFBEmulateFormatChanges", &m_header->bEFBEmulateFormatChanges);
+
+ // This never used the regular config
+ m_header->bEFBCopyEnable = true;
+ m_header->bEFBCopyCacheEnable = false;
+
+ m_header->CPUCore = cpu_core;
+ strncpy(reinterpret_cast<char*>(m_header->videoBackend), video_backend.c_str(),
+ ArraySize(m_header->videoBackend));
+}
+
+// Loader generation
+std::unique_ptr<Config::ConfigLayerLoader> GenerateMovieConfigLoader(Movie::DTMHeader* header)
+{
+ return std::make_unique<MovieConfigLayerLoader>(header);
+}
+}
diff --git a/Source/Core/Core/ConfigLoaders/MovieConfigLoader.h b/Source/Core/Core/ConfigLoaders/MovieConfigLoader.h
new file mode 100644
index 0000000000..c14b0fb51c
--- /dev/null
+++ b/Source/Core/Core/ConfigLoaders/MovieConfigLoader.h
@@ -0,0 +1,35 @@
+// Copyright 2016 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <memory>
+
+#include "Common/Config/Config.h"
+
+namespace Movie
+{
+struct DTMHeader;
+}
+
+namespace ConfigLoaders
+{
+class MovieConfigLayerLoader final : public Config::ConfigLayerLoader
+{
+public:
+ explicit MovieConfigLayerLoader(Movie::DTMHeader* header)
+ : ConfigLayerLoader(Config::LayerType::Movie), m_header(header)
+ {
+ }
+
+ void Load(Config::Layer* config_layer) override;
+ void Save(Config::Layer* config_layer) override;
+
+ void ChangeDTMHeader(Movie::DTMHeader* header) { m_header = header; }
+private:
+ Movie::DTMHeader* m_header;
+};
+
+std::unique_ptr<Config::ConfigLayerLoader> GenerateMovieConfigLoader(Movie::DTMHeader* header);
+}