diff --git a/pcsx2/GameDatabase.cpp b/pcsx2/GameDatabase.cpp
index ba1832adbc..e08672710d 100644
--- a/pcsx2/GameDatabase.cpp
+++ b/pcsx2/GameDatabase.cpp
@@ -51,8 +51,8 @@ void BaseGameDatabaseImpl::updateGame(const Game_Data& game)
}
// Searches the current game's data to see if the given key exists
-bool Game_Data::keyExists(const wxChar* key) {
- KeyPairArray::iterator it( kList.begin() );
+bool Game_Data::keyExists(const wxChar* key) const {
+ KeyPairArray::const_iterator it( kList.begin() );
for ( ; it != kList.end(); ++it) {
if (it[0].CompareKey(key)) {
return true;
@@ -73,8 +73,8 @@ void Game_Data::deleteKey(const wxChar* key) {
}
// Gets a string representation of the 'value' for the given key
-wxString Game_Data::getString(const wxChar* key) {
- KeyPairArray::iterator it( kList.begin() );
+wxString Game_Data::getString(const wxChar* key) const {
+ KeyPairArray::const_iterator it( kList.begin() );
for ( ; it != kList.end(); ++it) {
if (it[0].CompareKey(key)) {
return it[0].value;
diff --git a/pcsx2/GameDatabase.h b/pcsx2/GameDatabase.h
index 375c9b6f2d..5d40acf319 100644
--- a/pcsx2/GameDatabase.h
+++ b/pcsx2/GameDatabase.h
@@ -95,9 +95,9 @@ struct Game_Data
kList.clear();
}
- bool keyExists(const wxChar* key);
+ bool keyExists(const wxChar* key) const;
void deleteKey(const wxChar* key);
- wxString getString(const wxChar* key);
+ wxString getString(const wxChar* key) const;
void writeString(const wxString& key, const wxString& value);
void writeBool(const wxString& key, bool value);
@@ -105,46 +105,46 @@ struct Game_Data
return !id.IsEmpty();
}
- bool sectionExists(const wxChar* key, const wxString& value) {
+ bool sectionExists(const wxChar* key, const wxString& value) const {
return keyExists(wxsFormat(L"[%s%s%s]", key, value.IsEmpty() ? L"" : L" = ", value.c_str()));
}
- wxString getSection(const wxChar* key, const wxString& value) {
+ wxString getSection(const wxChar* key, const wxString& value) const {
return getString(wxsFormat(L"[%s%s%s]", key, value.IsEmpty() ? L"" : L" = ", value.c_str()));
}
// Gets an integer representation of the 'value' for the given key
- int getInt(const wxChar* key) {
+ int getInt(const wxChar* key) const {
return wxStrtoul(getString(key), NULL, 0);
}
// Gets a u8 representation of the 'value' for the given key
- u8 getU8(const wxChar* key) {
+ u8 getU8(const wxChar* key) const {
return (u8)wxAtoi(getString(key));
}
// Gets a bool representation of the 'value' for the given key
- bool getBool(const wxChar* key) {
+ bool getBool(const wxChar* key) const {
return !!wxAtoi(getString(key));
}
- bool keyExists(const char* key) {
+ bool keyExists(const char* key) const {
return keyExists(fromUTF8(key));
}
- wxString getString(const char* key) {
+ wxString getString(const char* key) const {
return getString(fromUTF8(key));
}
- int getInt(const char* key) {
+ int getInt(const char* key) const {
return getInt(fromUTF8(key));
}
- u8 getU8(const char* key) {
+ u8 getU8(const char* key) const {
return getU8(fromUTF8(key));
}
- bool getBool(const char* key) {
+ bool getBool(const char* key) const {
return getBool(fromUTF8(key));
}
};
diff --git a/pcsx2/Patch.cpp b/pcsx2/Patch.cpp
index 397602b0b2..bf00f86140 100644
--- a/pcsx2/Patch.cpp
+++ b/pcsx2/Patch.cpp
@@ -131,27 +131,24 @@ void TrimPatches(wxString& s)
// This routine loads patches from the game database
// Returns number of patches loaded
-int InitPatches(const wxString& name)
+int InitPatches(const wxString& crc, const Game_Data& game)
{
bool patchFound = false;
wxString patch;
patchnumber = 0;
- if (IGameDatabase* GameDB = AppHost_GetGameDatabase() )
+ if (game.IsOk())
{
- Game_Data game;
- if (GameDB->findGame(game,name)) {
- if (game.sectionExists(L"patches", name)) {
- patch = game.getSection(L"patches", name);
- patchFound = true;
- }
- else if (game.keyExists(L"[patches]")) {
- patch = game.getString(L"[patches]");
- patchFound = true;
- }
+ if (game.sectionExists(L"patches", crc)) {
+ patch = game.getSection(L"patches", crc);
+ patchFound = true;
+ }
+ else if (game.keyExists(L"[patches]")) {
+ patch = game.getString(L"[patches]");
+ patchFound = true;
}
}
-
+
if (patchFound) {
Console.WriteLn(Color_Green, "Patch found in the Database!");
TrimPatches(patch);
diff --git a/pcsx2/Patch.h b/pcsx2/Patch.h
index c75a368fe2..a4db00831d 100644
--- a/pcsx2/Patch.h
+++ b/pcsx2/Patch.h
@@ -12,10 +12,11 @@
* You should have received a copy of the GNU General Public License along with PCSX2.
* If not, see .
*/
-#ifndef __PATCH_H__
-#define __PATCH_H__
+
+#pragma once
#include "Pcsx2Defs.h"
+#include "SysForwardDefs.h"
#define MAX_PATCH 512
#define MAX_CHEAT 1024
@@ -56,16 +57,14 @@ namespace PatchFunc
PATCHTABLEFUNC cheat;
}
-int InitCheats(const wxString& name);
-void inifile_command(bool isCheat, const wxString& cmd);
-void inifile_trim(wxString& buffer);
+extern int InitCheats(const wxString& name);
+extern void inifile_command(bool isCheat, const wxString& cmd);
+extern void inifile_trim(wxString& buffer);
-int InitPatches(const wxString& name);
-int AddPatch(int Mode, int Place, int Address, int Size, u64 data);
-void ResetPatch(void);
-void ApplyPatch(int place = 1);
-void ApplyCheat(int place = 1);
-void _ApplyPatch(IniPatch *p);
-
-#endif /* __PATCH_H__ */
+extern int InitPatches(const wxString& name, const Game_Data& game);
+extern int AddPatch(int Mode, int Place, int Address, int Size, u64 data);
+extern void ResetPatch(void);
+extern void ApplyPatch(int place = 1);
+extern void ApplyCheat(int place = 1);
+extern void _ApplyPatch(IniPatch *p);
diff --git a/pcsx2/SysForwardDefs.h b/pcsx2/SysForwardDefs.h
new file mode 100644
index 0000000000..b2ddb35f97
--- /dev/null
+++ b/pcsx2/SysForwardDefs.h
@@ -0,0 +1,25 @@
+/* PCSX2 - PS2 Emulator for PCs
+ * Copyright (C) 2002-2010 PCSX2 Dev Team
+ *
+ * PCSX2 is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU Lesser General Public License as published by the Free Software Found-
+ * ation, either version 3 of the License, or (at your option) any later version.
+ *
+ * PCSX2 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 for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with PCSX2.
+ * If not, see .
+ */
+
+#pragma once
+
+static const int PCSX2_VersionHi = 0;
+static const int PCSX2_VersionMid = 9;
+static const int PCSX2_VersionLo = 7;
+
+class SysCoreThread;
+class CpuInitializerSet;
+
+struct Game_Data;
diff --git a/pcsx2/System.h b/pcsx2/System.h
index acfd943468..91a9ab055e 100644
--- a/pcsx2/System.h
+++ b/pcsx2/System.h
@@ -15,17 +15,12 @@
#pragma once
+#include "SysForwardDefs.h"
+
#include "Utilities/SafeArray.h"
#include "Utilities/Threading.h" // to use threading stuff, include the Threading namespace in your file.
#include "CDVD/CDVDaccess.h"
-static const int PCSX2_VersionHi = 0;
-static const int PCSX2_VersionMid = 9;
-static const int PCSX2_VersionLo = 7;
-
-class SysCoreThread;
-class CpuInitializerSet;
-
typedef SafeArray VmStateBuffer;
// --------------------------------------------------------------------------------------
diff --git a/pcsx2/gui/AppCoreThread.cpp b/pcsx2/gui/AppCoreThread.cpp
index ce3b23a2b6..3b5589f9e0 100644
--- a/pcsx2/gui/AppCoreThread.cpp
+++ b/pcsx2/gui/AppCoreThread.cpp
@@ -266,7 +266,7 @@ void AppCoreThread::ApplySettings( const Pcsx2Config& src )
}
if (EmuConfig.EnablePatches) {
- if (int patches = InitPatches(gameCRC)) {
+ if (int patches = InitPatches(gameCRC, game)) {
gamePatch.Printf(L" [%d Patches]", patches);
}
if (int fixes = loadGameSettings(fixup, GameDB)) {
diff --git a/pcsx2/windows/VCprojects/pcsx2_2008.vcproj b/pcsx2/windows/VCprojects/pcsx2_2008.vcproj
index 9a43bb4cc5..11731ee54a 100644
--- a/pcsx2/windows/VCprojects/pcsx2_2008.vcproj
+++ b/pcsx2/windows/VCprojects/pcsx2_2008.vcproj
@@ -475,6 +475,10 @@
RelativePath="..\..\Stats.h"
>
+
+