summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinWX/src/Config.cpp
blob: 382f5ba816df038d1cc2dbce311fc4b35b4a3e3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// Copyright (C) 2003-2008 Dolphin Project.

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, version 2.0.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License 2.0 for more details.

// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/

// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/

#include <string>

#include "Globals.h"
#include "Common.h"
#include "IniFile.h"
#include "Config.h"

SConfig SConfig::m_Instance;


SConfig::SConfig()
{
	LoadSettings();
}


SConfig::~SConfig()
{
	SaveSettings();
}


void SConfig::SaveSettings()
{
	IniFile ini;
	ini.Load("Dolphin.ini"); // yes we must load first to not kill unknown stuff

	// misc
	{
		ini.Set("General", "LastFilename", m_LastFilename);

		// ISO folders
		ini.Set("General", "GCMPathes",        (int)m_ISOFolder.size());

		for (size_t i = 0; i < m_ISOFolder.size(); i++)
		{
			TCHAR tmp[16];
			sprintf(tmp, "GCMPath%i", (int)i);
			ini.Set("General", tmp, m_ISOFolder[i]);
		}
	}

	// core
	{
		ini.Set("Core", "GFXPlugin",  m_LocalCoreStartupParameter.m_strVideoPlugin);
		ini.Set("Core", "DSPPlugin",  m_LocalCoreStartupParameter.m_strDSPPlugin);
		ini.Set("Core", "PadPlugin",  m_LocalCoreStartupParameter.m_strPadPlugin);

		ini.Set("Core", "HLEBios",        m_LocalCoreStartupParameter.bHLEBios);
		ini.Set("Core", "UseDynarec",     m_LocalCoreStartupParameter.bUseDynarec);
		ini.Set("Core", "UseDualCore",    m_LocalCoreStartupParameter.bUseDualCore);
		ini.Set("Core", "Throttle",       m_LocalCoreStartupParameter.bThrottle);
		ini.Set("Core", "LockThreads",    m_LocalCoreStartupParameter.bLockThreads);
		ini.Set("Core", "DefaultGCM",     m_LocalCoreStartupParameter.m_strDefaultGCM);
		ini.Set("Core", "OptimizeQuantizers", m_LocalCoreStartupParameter.bOptimizeQuantizers);
	}

	ini.Save("Dolphin.ini");
}


void SConfig::LoadSettings()
{
	IniFile ini;
	ini.Load("Dolphin.ini");

	// hard coded default plugin
	{
		ini.Get("Default", "GFXPlugin", &m_DefaultGFXPlugin);
		ini.Get("Default", "DSPPlugin",   &m_DefaultDSPPlugin);
		ini.Get("Default", "PadPlugin",   &m_DefaultPADPlugin);
	}

	// misc
	{
		ini.Get("General", "LastFilename",        &m_LastFilename);

		m_ISOFolder.clear();
		int numGCMPaths;

		if (ini.Get("General", "GCMPathes", &numGCMPaths, 0))
		{
			for (int i = 0; i < numGCMPaths; i++)
			{
				TCHAR tmp[16];
				sprintf(tmp, "GCMPath%i", i);
				std::string tmpPath;
				ini.Get("General", tmp, &tmpPath, "");
				m_ISOFolder.push_back(tmpPath);
			}
		}
	}

	// core
	{
		ini.Get("Core", "GFXPlugin",  &m_LocalCoreStartupParameter.m_strVideoPlugin, m_DefaultGFXPlugin.c_str());
		ini.Get("Core", "DSPPlugin",  &m_LocalCoreStartupParameter.m_strDSPPlugin, m_DefaultDSPPlugin.c_str());
		ini.Get("Core", "PadPlugin",  &m_LocalCoreStartupParameter.m_strPadPlugin, m_DefaultPADPlugin.c_str());

		ini.Get("Core", "UseDynarec",  &m_LocalCoreStartupParameter.bUseDynarec,   false);
		ini.Get("Core", "UseDualCore", &m_LocalCoreStartupParameter.bUseDualCore,  false);
		ini.Get("Core", "Throttle",    &m_LocalCoreStartupParameter.bThrottle,     true);
		ini.Get("Core", "LockThreads", &m_LocalCoreStartupParameter.bLockThreads,  true);
		ini.Get("Core", "OptimizeQuantizers", &m_LocalCoreStartupParameter.bOptimizeQuantizers, true);
	}
}