summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorRachel Bryk <RachelBryk@gmail.com>2014-11-07 21:29:41 -0500
committerRachel Bryk <RachelBryk@gmail.com>2014-11-11 20:19:19 -0500
commit463c4faf1c24167f2ccec5883ea4b0deec857b8a (patch)
tree16448b27029d19d33d51b4dfc4ccf356307d832f /Source/Core
parent4714564fbdf6ae1030c7ad49e398dae563217ea7 (diff)
Add GPUDeterminismMode to isoproperties.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DolphinWX/ISOProperties.cpp36
-rw-r--r--Source/Core/DolphinWX/ISOProperties.h69
2 files changed, 72 insertions, 33 deletions
diff --git a/Source/Core/DolphinWX/ISOProperties.cpp b/Source/Core/DolphinWX/ISOProperties.cpp
index dac3514a25..2d2e80232f 100644
--- a/Source/Core/DolphinWX/ISOProperties.cpp
+++ b/Source/Core/DolphinWX/ISOProperties.cpp
@@ -404,6 +404,16 @@ void CISOProperties::CreateGUIControls(bool IsWad)
BlockMerging = new wxCheckBox(m_GameConfig, ID_MERGEBLOCKS, _("Enable Block Merging"), wxDefaultPosition, wxDefaultSize, GetElementStyle("Core", "BlockMerging"));
DSPHLE = new wxCheckBox(m_GameConfig, ID_AUDIO_DSP_HLE, _("DSP HLE emulation (fast)"), wxDefaultPosition, wxDefaultSize, GetElementStyle("Core", "DSPHLE"));
+ wxBoxSizer* const sGPUDeterminism = new wxBoxSizer(wxHORIZONTAL);
+ wxStaticText* const GPUDeterminismText = new wxStaticText(m_GameConfig, wxID_ANY, _("Deterministic dual core: "));
+ arrayStringFor_GPUDeterminism.Add(_("Not Set"));
+ arrayStringFor_GPUDeterminism.Add(_("auto"));
+ arrayStringFor_GPUDeterminism.Add(_("none"));
+ arrayStringFor_GPUDeterminism.Add(_("fake-completion"));
+ GPUDeterminism = new wxChoice(m_GameConfig, ID_EMUSTATE, wxDefaultPosition, wxDefaultSize, arrayStringFor_GPUDeterminism);
+ sGPUDeterminism->Add(GPUDeterminismText);
+ sGPUDeterminism->Add(GPUDeterminism);
+
// Wii Console
EnableWideScreen = new wxCheckBox(m_GameConfig, ID_ENABLEWIDESCREEN, _("Enable WideScreen"), wxDefaultPosition, wxDefaultSize, GetElementStyle("Wii", "Widescreen"));
@@ -432,6 +442,7 @@ void CISOProperties::CreateGUIControls(bool IsWad)
sbCoreOverrides->Add(FastDiscSpeed, 0, wxLEFT, 5);
sbCoreOverrides->Add(BlockMerging, 0, wxLEFT, 5);
sbCoreOverrides->Add(DSPHLE, 0, wxLEFT, 5);
+ sbCoreOverrides->Add(sGPUDeterminism, 0, wxEXPAND|wxALL, 5);
wxStaticBoxSizer * const sbWiiOverrides = new wxStaticBoxSizer(wxVERTICAL, m_GameConfig, _("Wii Console"));
if (!DiscIO::IsVolumeWiiDisc(OpenISO) && !DiscIO::IsVolumeWadFile(OpenISO))
@@ -1051,6 +1062,19 @@ void CISOProperties::LoadGameConfig()
EmuIssues->Enable(EmuState->GetSelection() != 0);
+ sTemp = "";
+ if (!GameIniLocal.GetIfExists("Core", "GPUDeterminismMode", &sTemp))
+ GameIniDefault.GetIfExists("Core", "GPUDeterminismMode", &sTemp);
+
+ if (sTemp == "")
+ GPUDeterminism->SetSelection(0);
+ else if (sTemp == "auto")
+ GPUDeterminism->SetSelection(1);
+ else if (sTemp == "none")
+ GPUDeterminism->SetSelection(2);
+ else if (sTemp == "fake-completion")
+ GPUDeterminism->SetSelection(3);
+
PatchList_Load();
ActionReplayList_Load();
m_geckocode_panel->LoadCodes(GameIniDefault, GameIniLocal, OpenISO->GetUniqueID());
@@ -1116,6 +1140,18 @@ bool CISOProperties::SaveGameConfig()
std::string emu_issues = EmuIssues->GetValue().ToStdString();
SAVE_IF_NOT_DEFAULT("EmuState", "EmulationIssues", emu_issues, "");
+ std::string tmp;
+ if (GPUDeterminism->GetSelection() == 0)
+ tmp = "Not Set";
+ else if (GPUDeterminism->GetSelection() == 1)
+ tmp = "auto";
+ else if (GPUDeterminism->GetSelection() == 2)
+ tmp = "none";
+ else if (GPUDeterminism->GetSelection() == 3)
+ tmp = "fake-completion";
+
+ SAVE_IF_NOT_DEFAULT("Core", "GPUDeterminismMode", tmp, "Not Set");
+
PatchList_Save();
ActionReplayList_Save();
Gecko::SaveCodes(GameIniLocal, m_geckocode_panel->GetCodes());
diff --git a/Source/Core/DolphinWX/ISOProperties.h b/Source/Core/DolphinWX/ISOProperties.h
index acc7692a68..b77bb55115 100644
--- a/Source/Core/DolphinWX/ISOProperties.h
+++ b/Source/Core/DolphinWX/ISOProperties.h
@@ -69,46 +69,49 @@ private:
// Core
wxCheckBox *CPUThread, *SkipIdle, *MMU, *BAT, *DCBZOFF, *FPRF;
wxCheckBox *VBeam, *SyncGPU, *FastDiscSpeed, *BlockMerging, *DSPHLE;
+
+ wxArrayString arrayStringFor_GPUDeterminism;
+ wxChoice* GPUDeterminism;
// Wii
- wxCheckBox *EnableWideScreen;
+ wxCheckBox* EnableWideScreen;
wxArrayString arrayStringFor_EmuState;
- wxChoice *EmuState;
- wxTextCtrl *EmuIssues;
+ wxChoice* EmuState;
+ wxTextCtrl* EmuIssues;
wxArrayString arrayStringFor_Patches;
- wxCheckListBox *Patches;
- wxButton *EditPatch;
- wxButton *RemovePatch;
+ wxCheckListBox* Patches;
+ wxButton* EditPatch;
+ wxButton* RemovePatch;
wxArrayString arrayStringFor_Cheats;
- wxCheckListBox *Cheats;
- wxButton *EditCheat;
- wxButton *RemoveCheat;
+ wxCheckListBox* Cheats;
+ wxButton* EditCheat;
+ wxButton* RemoveCheat;
wxArrayString arrayStringFor_Speedhacks;
- wxCheckListBox *Speedhacks;
- wxButton *EditSpeedhack;
- wxButton *AddSpeedhack;
- wxButton *RemoveSpeedhack;
-
- wxTextCtrl *m_Name;
- wxTextCtrl *m_GameID;
- wxTextCtrl *m_Country;
- wxTextCtrl *m_MakerID;
- wxTextCtrl *m_Revision;
- wxTextCtrl *m_Date;
- wxTextCtrl *m_FST;
- wxTextCtrl *m_MD5Sum;
- wxButton *m_MD5SumCompute;
+ wxCheckListBox* Speedhacks;
+ wxButton* EditSpeedhack;
+ wxButton* AddSpeedhack;
+ wxButton* RemoveSpeedhack;
+
+ wxTextCtrl* m_Name;
+ wxTextCtrl* m_GameID;
+ wxTextCtrl* m_Country;
+ wxTextCtrl* m_MakerID;
+ wxTextCtrl* m_Revision;
+ wxTextCtrl* m_Date;
+ wxTextCtrl* m_FST;
+ wxTextCtrl* m_MD5Sum;
+ wxButton* m_MD5SumCompute;
wxArrayString arrayStringFor_Lang;
- wxChoice *m_Lang;
- wxTextCtrl *m_ShortName;
- wxTextCtrl *m_Maker;
- wxTextCtrl *m_Comment;
- wxStaticBitmap *m_Banner;
+ wxChoice* m_Lang;
+ wxTextCtrl* m_ShortName;
+ wxTextCtrl* m_Maker;
+ wxTextCtrl* m_Comment;
+ wxStaticBitmap* m_Banner;
- wxTreeCtrl *m_Treectrl;
+ wxTreeCtrl* m_Treectrl;
wxTreeItemId RootId;
- Gecko::CodeConfigPanel *m_geckocode_panel;
+ Gecko::CodeConfigPanel* m_geckocode_panel;
enum
{
@@ -193,10 +196,10 @@ private:
void SetRefresh(wxCommandEvent& event);
void OnChangeBannerLang(wxCommandEvent& event);
- GameListItem *OpenGameListItem;
+ GameListItem* OpenGameListItem;
- std::vector<const DiscIO::SFileInfo *> GCFiles;
- typedef std::vector<const DiscIO::SFileInfo *>::iterator fileIter;
+ std::vector<const DiscIO::SFileInfo*> GCFiles;
+ typedef std::vector<const DiscIO::SFileInfo*>::iterator fileIter;
size_t CreateDirectoryTree(wxTreeItemId& parent,
std::vector<const DiscIO::SFileInfo*> fileInfos,