mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-25 23:41:19 +01:00
82f772fdcc
Metroid: Other M was the only game which required this field, but the issue in that game can be fixed properly by enabling format change emulation. Hence, there's no point in having this around anymore. Fixes issue 6644.
148 lines
5.4 KiB
C++
148 lines
5.4 KiB
C++
// Copyright 2013 Dolphin Emulator Project
|
|
// Licensed under GPLv2
|
|
// Refer to the license.txt file included.
|
|
|
|
#include <cstdio>
|
|
#include <string>
|
|
#include <wx/checkbox.h>
|
|
#include <wx/choice.h>
|
|
#include <wx/defs.h>
|
|
#include <wx/dialog.h>
|
|
#include <wx/event.h>
|
|
#include <wx/gdicmn.h>
|
|
#include <wx/sizer.h>
|
|
#include <wx/stattext.h>
|
|
#include <wx/string.h>
|
|
#include <wx/textctrl.h>
|
|
#include <wx/translation.h>
|
|
#include <wx/windowid.h>
|
|
|
|
#include "Common/CommonPaths.h"
|
|
#include "Common/FileUtil.h"
|
|
#include "Common/IniFile.h"
|
|
#include "DolphinWX/ISOProperties.h"
|
|
#include "DolphinWX/PHackSettings.h"
|
|
#include "DolphinWX/WxUtils.h"
|
|
|
|
class wxWindow;
|
|
|
|
extern PHackData PHack_Data;
|
|
|
|
BEGIN_EVENT_TABLE(CPHackSettings, wxDialog)
|
|
EVT_CHOICE(ID_PHACK_CHOICE, CPHackSettings::SetRefresh)
|
|
EVT_BUTTON(wxID_OK, CPHackSettings::SavePHackData)
|
|
END_EVENT_TABLE()
|
|
|
|
CPHackSettings::CPHackSettings(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& position, const wxSize& size, long style)
|
|
: wxDialog(parent, id, title, position, size, style)
|
|
{
|
|
CreateGUIControls();
|
|
std::string _iniFilename = File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP "PH_PRESETS.ini";
|
|
PHPresetsIni.Load(_iniFilename);
|
|
PHPresetsIni.SortSections();
|
|
|
|
LoadPHackData();
|
|
}
|
|
|
|
CPHackSettings::~CPHackSettings()
|
|
{
|
|
}
|
|
|
|
void CPHackSettings::CreateGUIControls()
|
|
{
|
|
wxStaticText *PHackChoiceText = new wxStaticText(this, wxID_ANY, _("Presets: "));
|
|
PHackChoice = new wxChoice(this, ID_PHACK_CHOICE);
|
|
PHackChoice->SetToolTip(_("Load preset values from hack patterns available."));
|
|
wxStaticText *PHackZNearText = new wxStaticText(this, wxID_ANY, _("zNear Correction: "));
|
|
PHackZNear = new wxTextCtrl(this, ID_PHACK_ZNEAR);
|
|
PHackZNear->SetToolTip(_("Adds the specified value to zNear Parameter.\nTwo ways to express the floating point values.\nExample: entering '\'200'\' or '\'0.0002'\' directly, it produces equal effects, the acquired value will be '\'0.0002'\'.\nValues: (0->+/-Integer) or (0->+/-FP[6 digits of precision])\n\nNOTE: Check LogWindow/Console for the acquired values."));
|
|
PHackSZNear = new wxCheckBox(this, ID_PHACK_SZNEAR, _("(-)+zNear"));
|
|
PHackSZNear->SetToolTip(_("Changes sign to zNear Parameter (after correction)"));
|
|
wxStaticText *PHackZFarText = new wxStaticText(this, wxID_ANY, _("zFar Correction: "));
|
|
PHackZFar = new wxTextCtrl(this, ID_PHACK_ZFAR);
|
|
PHackZFar->SetToolTip(_("Adds the specified value to zFar Parameter.\nTwo ways to express the floating point values.\nExample: entering '\'200'\' or '\'0.0002'\' directly, it produces equal effects, the acquired value will be '\'0.0002'\'.\nValues: (0->+/-Integer) or (0->+/-FP[6 digits of precision])\n\nNOTE: Check LogWindow/Console for the acquired values."));
|
|
PHackSZFar = new wxCheckBox(this, ID_PHACK_SZFAR, _("(-)+zFar"));
|
|
PHackSZFar->SetToolTip(_("Changes sign to zFar Parameter (after correction)"));
|
|
|
|
wxStaticBoxSizer *sbPHackSettings = new wxStaticBoxSizer(wxVERTICAL, this, _("Parameters"));
|
|
wxFlexGridSizer *szrPHackSettings = new wxFlexGridSizer(3, 5, 5);
|
|
sbPHackSettings->Add(szrPHackSettings, 0, wxEXPAND|wxLEFT|wxTOP, 5);
|
|
szrPHackSettings->Add(PHackZNearText, 0, wxALIGN_CENTER_VERTICAL);
|
|
szrPHackSettings->Add(PHackZNear, 1, wxEXPAND);
|
|
szrPHackSettings->Add(PHackSZNear, 0, wxEXPAND|wxLEFT, 5);
|
|
szrPHackSettings->Add(PHackZFarText, 0, wxALIGN_CENTER_VERTICAL);
|
|
szrPHackSettings->Add(PHackZFar, 1, wxEXPAND);
|
|
szrPHackSettings->Add(PHackSZFar, 0, wxEXPAND|wxLEFT, 5);
|
|
|
|
wxBoxSizer* sPHack = new wxBoxSizer(wxVERTICAL);
|
|
sPHack->Add(PHackChoiceText, 0, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5);
|
|
sPHack->Add(PHackChoice, 0, wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
|
sPHack->Add(sbPHackSettings, 0, wxEXPAND|wxALL, 5);
|
|
sPHack->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
|
|
|
SetSizerAndFit(sPHack);
|
|
SetFocus();
|
|
}
|
|
|
|
void CPHackSettings::LoadPHackData()
|
|
{
|
|
std::string sTemp;
|
|
char sIndex[15];
|
|
|
|
PHackChoice->Clear();
|
|
PHackChoice->Append(_("[Custom]"));
|
|
for (int i=0 ; ; i++)
|
|
{
|
|
sprintf(sIndex,"%d",i);
|
|
if (!PHPresetsIni.Exists(sIndex, "Title"))
|
|
break;
|
|
PHPresetsIni.Get(sIndex, "Title", &sTemp);
|
|
if (sTemp.empty())
|
|
sTemp = wxString(_("(UNKNOWN)")).char_str();
|
|
if (i == 0)
|
|
PHackChoice->Append(StrToWxStr("-------------"));
|
|
PHackChoice->Append(StrToWxStr(sTemp));
|
|
}
|
|
PHackChoice->Select(0);
|
|
|
|
PHackSZNear->Set3StateValue((wxCheckBoxState)PHack_Data.PHackSZNear);
|
|
PHackSZFar->Set3StateValue((wxCheckBoxState)PHack_Data.PHackSZFar);
|
|
|
|
PHackZNear->SetValue(StrToWxStr(PHack_Data.PHZNear));
|
|
PHackZFar->SetValue(StrToWxStr(PHack_Data.PHZFar));
|
|
}
|
|
|
|
void CPHackSettings::SetRefresh(wxCommandEvent& event)
|
|
{
|
|
bool bTemp;
|
|
std::string sTemp;
|
|
char sIndex[15];
|
|
int index = event.GetSelection();
|
|
if (index > 1)
|
|
{
|
|
index -= 2;
|
|
sprintf(sIndex,"%d", index);
|
|
|
|
PHPresetsIni.Get(sIndex, "PH_SZNear", &bTemp);
|
|
PHackSZNear->Set3StateValue((wxCheckBoxState)bTemp);
|
|
PHPresetsIni.Get(sIndex, "PH_SZFar", &bTemp);
|
|
PHackSZFar->Set3StateValue((wxCheckBoxState)bTemp);
|
|
PHPresetsIni.Get(sIndex, "PH_ZNear", &sTemp);
|
|
PHackZNear->SetValue(StrToWxStr(sTemp));
|
|
PHPresetsIni.Get(sIndex, "PH_ZFar", &sTemp);
|
|
PHackZFar->SetValue(StrToWxStr(sTemp));
|
|
}
|
|
}
|
|
|
|
void CPHackSettings::SavePHackData(wxCommandEvent& event)
|
|
{
|
|
PHack_Data.PHackSZNear = PHackSZNear->GetValue();
|
|
PHack_Data.PHackSZFar = PHackSZFar->GetValue();
|
|
|
|
PHack_Data.PHZNear = PHackZNear->GetValue().char_str();
|
|
PHack_Data.PHZFar = PHackZFar->GetValue().char_str();
|
|
|
|
AcceptAndClose();
|
|
event.Skip();
|
|
}
|