diff --git a/Source/Core/Common/Common.vcproj b/Source/Core/Common/Common.vcproj index 93958f9d86..628ca6e250 100644 --- a/Source/Core/Common/Common.vcproj +++ b/Source/Core/Common/Common.vcproj @@ -1,7 +1,7 @@ + + + + diff --git a/Source/Core/Common/Src/SysConf.cpp b/Source/Core/Common/Src/SysConf.cpp new file mode 100644 index 0000000000..38c4f6f549 --- /dev/null +++ b/Source/Core/Common/Src/SysConf.cpp @@ -0,0 +1,156 @@ +// Copyright (C) 2003 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 "FileUtil.h" +#include "SysConf.h" + +SysConf::SysConf() +: m_IsValid(false) +{ + if (LoadFromFile(WII_SYSCONF_FILE)) + m_IsValid = true; +} + +SysConf::~SysConf() +{ + if (!m_IsValid) + return; + + Save(); + + for (size_t i = 0; i < m_Entries.size() - 1; i++) + { + delete [] m_Entries.at(i).data; + m_Entries.at(i).data = NULL; + } +} + +bool SysConf::LoadFromFile(const char *filename) +{ + FILE* f = fopen(filename, "rb"); + + if (f == NULL) + return false; + + // Basic check + if (File::GetSize(filename) != SYSCONF_SIZE) + { + PanicAlert("Your SYSCONF file is the wrong size - should be 0x%04x", SYSCONF_SIZE); + return false; + } + + // Fill in infos + if (fread(&m_Header.version, sizeof(m_Header.version), 1, f) != 1) return false; + if (fread(&m_Header.numEntries, sizeof(m_Header.numEntries), 1, f) != 1) return false; + m_Header.numEntries = Common::swap16(m_Header.numEntries) + 1; + + for (u16 index = 0; index < m_Header.numEntries; index++) + { + SSysConfEntry tmpEntry; + if (fread(&tmpEntry.offset, sizeof(tmpEntry.offset), 1, f) != 1) return false; + tmpEntry.offset = Common::swap16(tmpEntry.offset); + m_Entries.push_back(tmpEntry); + } + + // Last offset is an invalid entry. We ignore it throughout this class + for (size_t i = 0; i < m_Entries.size() - 1; i++) + { + SSysConfEntry& curEntry = m_Entries.at(i); + if (fseek(f, curEntry.offset, SEEK_SET) != 0) return false; + + u8 description = 0; + if (fread(&description, sizeof(description), 1, f) != 1) return false; + // Data type + curEntry.type = (SysconfType)((description & 0xe0) >> 5); + // Length of name in bytes - 1 + curEntry.nameLength = (description & 0x1f) + 1; + // Name + if (fread(&curEntry.name, curEntry.nameLength, 1, f) != 1) return false; + curEntry.name[curEntry.nameLength] = '\0'; + // Get length of data + curEntry.dataLength = 0; + switch (curEntry.type) + { + case Type_BigArray: + if (fread(&curEntry.dataLength, 2, 1, f) != 1) return false; + curEntry.dataLength = Common::swap16(curEntry.dataLength); + break; + case Type_SmallArray: + if (fread(&curEntry.dataLength, 1, 1, f) != 1) return false; + break; + case Type_Byte: + case Type_Bool: + curEntry.dataLength = 1; + break; + case Type_Short: + curEntry.dataLength = 2; + break; + case Type_Long: + curEntry.dataLength = 4; + break; + default: + PanicAlert("Unknown entry type %i in SYSCONF (%s@%x)!", + curEntry.type, curEntry.name, curEntry.offset); + return false; + } + // Fill in the actual data + if (curEntry.dataLength) + { + curEntry.data = new u8[curEntry.dataLength]; + if (fread(curEntry.data, curEntry.dataLength, 1, f) != 1) return false; + } + } + + // OK!, done! + m_Filename = filename; + fclose(f); + return true; +} + +bool SysConf::SaveToFile(const char *filename) +{ + FILE *f = fopen(filename, "r+b"); + + if (f == NULL) + return false; + + for (size_t i = 0; i < m_Entries.size() - 1; i++) + { + // Seek to after the name of this entry + if (fseek(f, m_Entries.at(i).offset + m_Entries.at(i).nameLength + 1, SEEK_SET) != 0) return false; + // We may have to write array length value... + if (m_Entries.at(i).type == Type_BigArray) + { + u16 tmpDataLength = Common::swap16(m_Entries.at(i).dataLength); + if (fwrite(&tmpDataLength, 2, 1, f) != 1) return false; + } + else if (m_Entries.at(i).type == Type_SmallArray) + { + if (fwrite(&m_Entries.at(i).dataLength, 1, 1, f) != 1) return false; + } + // Now write the actual data + if (fwrite(m_Entries.at(i).data, m_Entries.at(i).dataLength, 1, f) != 1) return false; + } + + fclose(f); + return true; +} + +bool SysConf::Save() +{ + return SaveToFile(m_Filename.c_str()); +} diff --git a/Source/Core/Common/Src/SysConf.h b/Source/Core/Common/Src/SysConf.h new file mode 100644 index 0000000000..e58f2618d6 --- /dev/null +++ b/Source/Core/Common/Src/SysConf.h @@ -0,0 +1,122 @@ +// Copyright (C) 2003 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/ + +#ifndef __SYSCONF_MANAGER_h__ +#define __SYSCONF_MANAGER_h__ + +// This class is meant to edit the values in a given Wii SYSCONF file +// It currently does not add/remove/rearrange sections, +// instead only modifies exiting sections' data + +#define SYSCONF_SIZE 0x4000 + +enum SysconfType +{ + Type_BigArray = 1, + Type_SmallArray, + Type_Byte, + Type_Short, + Type_Long, + Type_Unknown, + Type_Bool +}; + +struct SSysConfHeader +{ + char version[4]; + u16 numEntries; +}; + +struct SSysConfEntry +{ + u16 offset; + SysconfType type; + u8 nameLength; + char name[32]; + u16 dataLength; + u8* data; + + template + T GetData() { return *(T*)data; } +}; + +class SysConf +{ +private: + SSysConfHeader m_Header; + std::string m_Filename; + std::vector m_Entries; + bool m_IsValid; + +public: + SysConf(); + ~SysConf(); + + bool IsValid() { return m_IsValid; } + + template + T GetData(const char* sectionName) + { + if (!m_IsValid) + { + PanicAlert("Trying to read from invalid SYSCONF"); + return 0; + } + + size_t index = 0; + for (index; index < m_Entries.size() - 1; index++) + { + if (strcmp(m_Entries.at(index).name, sectionName) == 0) + break; + } + if (index == m_Entries.size() - 1) + { + PanicAlert("Section %s not found in SYSCONF", sectionName); + return 0; + } + + return m_Entries.at(index).GetData(); + } + + template + bool SetData(const char* sectionName, T newValue) + { + if (!m_IsValid) + return false; + + size_t index = 0; + for (index; index < m_Entries.size() - 1; index++) + { + if (strcmp(m_Entries.at(index).name, sectionName) == 0) + break; + } + if (index == m_Entries.size() - 1) + { + PanicAlert("Section %s not found in SYSCONF", sectionName); + return false; + } + + *(T*)m_Entries.at(index).data = newValue; + return true; + } + + bool Save(); + bool SaveToFile(const char* filename); + bool LoadFromFile(const char* filename); +}; + +#endif // __SYSCONF_MANAGER_h__ diff --git a/Source/Core/Core/Src/ConfigManager.cpp b/Source/Core/Core/Src/ConfigManager.cpp index 4ad02bbd6c..8126e93c57 100644 --- a/Source/Core/Core/Src/ConfigManager.cpp +++ b/Source/Core/Core/Src/ConfigManager.cpp @@ -38,6 +38,7 @@ SConfig::SConfig() SConfig::~SConfig() { SaveSettings(); + delete m_SYSCONF; } @@ -122,10 +123,6 @@ void SConfig::SaveSettings() ini.Set("Core", "RunCompareClient", m_LocalCoreStartupParameter.bRunCompareClient); ini.Set("Core", "FrameLimit", m_Framelimit); - // Wii - ini.Set("Wii", "Widescreen", m_LocalCoreStartupParameter.bWidescreen); - ini.Set("Wii", "ProgressiveScan", m_LocalCoreStartupParameter.bProgressiveScan); - // Plugins ini.Set("Core", "GFXPlugin", m_LocalCoreStartupParameter.m_strVideoPlugin); ini.Set("Core", "DSPPlugin", m_LocalCoreStartupParameter.m_strDSPPlugin); @@ -141,12 +138,13 @@ void SConfig::SaveSettings() #else ini.Save(CONFIG_FILE); #endif + + m_SYSCONF->Save(); } void SConfig::LoadSettings() -{ - +{ NOTICE_LOG(BOOT, "Loading Settings from %s", CONFIG_FILE); IniFile ini; #if defined(__APPLE__) @@ -239,10 +237,6 @@ void SConfig::LoadSettings() ini.Get("Core", "TLBHack", &m_LocalCoreStartupParameter.iTLBHack, 0); ini.Get("Core", "FrameLimit", &m_Framelimit, 1); - // Wii - ini.Get("Wii", "Widescreen", &m_LocalCoreStartupParameter.bWidescreen, false); - ini.Get("Wii", "ProgressiveScan", &m_LocalCoreStartupParameter.bProgressiveScan, false); - // Plugins ini.Get("Core", "GFXPlugin", &m_LocalCoreStartupParameter.m_strVideoPlugin, m_DefaultGFXPlugin.c_str()); ini.Get("Core", "DSPPlugin", &m_LocalCoreStartupParameter.m_strDSPPlugin, m_DefaultDSPPlugin.c_str()); @@ -253,14 +247,12 @@ void SConfig::LoadSettings() } ini.Get("Core", "WiiMote1Plugin", &m_LocalCoreStartupParameter.m_strWiimotePlugin[0], m_DefaultWiiMotePlugin.c_str()); } + + m_SYSCONF = new SysConf(); } void SConfig::LoadSettingsHLE() { IniFile ini; - // ini.Load(FULL_CONFIG_DIR "DSP.ini"); ini.Get("Config", "EnableRE0AudioFix", &m_EnableRE0Fix, false); // RE0 Hack } - - - diff --git a/Source/Core/Core/Src/ConfigManager.h b/Source/Core/Core/Src/ConfigManager.h index 9cd8d81467..daad5aa2e8 100644 --- a/Source/Core/Core/Src/ConfigManager.h +++ b/Source/Core/Core/Src/ConfigManager.h @@ -24,6 +24,7 @@ #include "Boot/Boot.h" #include "HW/EXI_Device.h" #include "HW/SI_Device.h" +#include "SysConf.h" // HyperIris: not sure but a temporary implement enum INTERFACE_LANGUAGE @@ -80,6 +81,8 @@ struct SConfig bool m_ListUsa; bool m_ListJap; + SysConf* m_SYSCONF; + // save settings void SaveSettings(); diff --git a/Source/Core/Core/Src/CoreParameter.h b/Source/Core/Core/Src/CoreParameter.h index 9a4dd6d21a..78e479c938 100644 --- a/Source/Core/Core/Src/CoreParameter.h +++ b/Source/Core/Core/Src/CoreParameter.h @@ -72,11 +72,10 @@ struct SCoreStartupParameter int iTLBHack; - int SelectedLanguage; + int SelectedLanguage; // Wii settings - bool bWii; bool bWiiLeds; bool bWiiSpeakers; - bool bWidescreen, bProgressiveScan; + bool bWii, bWiiLeds, bWiiSpeakers; // Interface settings bool bConfirmStop, bHideCursor, bAutoHideCursor, bUsePanicHandlers; diff --git a/Source/Core/DolphinWX/Src/BootManager.cpp b/Source/Core/DolphinWX/Src/BootManager.cpp index 4d85ae7bc7..22d803ede6 100644 --- a/Source/Core/DolphinWX/Src/BootManager.cpp +++ b/Source/Core/DolphinWX/Src/BootManager.cpp @@ -52,6 +52,7 @@ #include "Volume.h" #include "VolumeCreator.h" #include "ConfigManager.h" +#include "SysConf.h" #include "Core.h" #if defined(HAVE_WX) && HAVE_WX #include "ConfigMain.h" @@ -127,24 +128,8 @@ bool BootCore(const std::string& _rFilename) // Wii settings if (StartUp.bWii) { - game_ini.Get("Wii", "ProgressiveScan", &StartUp.bProgressiveScan, StartUp.bProgressiveScan); - game_ini.Get("Wii", "Widescreen", &StartUp.bWidescreen, StartUp.bWidescreen); - // Save the update Wii SYSCONF settings - FILE* pStream = fopen(WII_SYSCONF_FILE, "r+b"); - if (pStream) - { - const int IPL_PGS = 0x17CC; // progressive scan - const int IPL_AR = 0x04D9; // widescreen - fseek(pStream, IPL_PGS, 0); - fputc(StartUp.bProgressiveScan ? 1 : 0, pStream); - fseek(pStream, IPL_AR, 0); - fputc(StartUp.bWidescreen ? 1 : 0, pStream); - fclose(pStream); - } - else - { - PanicAlert("Could not write to %s", WII_SYSCONF_FILE); - } + // Flush possible changes to SYSCONF to file + SConfig::GetInstance().m_SYSCONF->Save(); } } diff --git a/Source/Core/DolphinWX/Src/ConfigMain.cpp b/Source/Core/DolphinWX/Src/ConfigMain.cpp index 1b569b5b8d..80f11d406a 100644 --- a/Source/Core/DolphinWX/Src/ConfigMain.cpp +++ b/Source/Core/DolphinWX/Src/ConfigMain.cpp @@ -26,6 +26,7 @@ #include "ConfigMain.h" #include "PluginManager.h" #include "ConfigManager.h" +#include "SysConf.h" #include "Frame.h" @@ -98,21 +99,6 @@ CConfigMain::CConfigMain(wxWindow* parent, wxWindowID id, const wxString& title, // Control refreshing of the ISOs list bRefreshList = false; - // Load Wii SYSCONF - pStream = NULL; - pStream = fopen(WII_SYSCONF_FILE, "rb"); - if (pStream != NULL) - { - fread(m_SYSCONF, 1, 0x4000, pStream); - fclose(pStream); - m_bSysconfOK = true; - } - else - { - PanicAlert("Could not read %s. Please recover the SYSCONF file to that location.", WII_SYSCONF_FILE); - m_bSysconfOK = false; - } - CreateGUIControls(); // Update selected ISO paths @@ -437,29 +423,27 @@ void CConfigMain::CreateGUIControls() GamecubePage->SetSizer(sGamecube); sGamecube->Layout(); - - // Wii page sbWiimoteSettings = new wxStaticBoxSizer(wxVERTICAL, WiiPage, wxT("Wiimote Settings")); arrayStringFor_WiiSensBarPos.Add(wxT("Bottom")); arrayStringFor_WiiSensBarPos.Add(wxT("Top")); WiiSensBarPosText = new wxStaticText(WiiPage, ID_WII_BT_BAR_TEXT, wxT("Sensor Bar Position:"), wxDefaultPosition, wxDefaultSize); WiiSensBarPos = new wxChoice(WiiPage, ID_WII_BT_BAR, wxDefaultPosition, wxDefaultSize, arrayStringFor_WiiSensBarPos, 0, wxDefaultValidator); - WiiSensBarPos->SetSelection(m_SYSCONF[BT_BAR]); + WiiSensBarPos->SetSelection(SConfig::GetInstance().m_SYSCONF->GetData("BT.BAR")); - sbWiiIPLSettings = new wxStaticBoxSizer(wxVERTICAL, WiiPage, wxT("IPL Settings")); + sbWiiIPLSettings = new wxStaticBoxSizer(wxVERTICAL, WiiPage, wxT("Misc Settings")); WiiScreenSaver = new wxCheckBox(WiiPage, ID_WII_IPL_SSV, wxT("Enable Screen Saver (burn-in reduction)"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); - WiiScreenSaver->SetValue(m_SYSCONF[IPL_SSV]!=0); + WiiScreenSaver->SetValue(!!SConfig::GetInstance().m_SYSCONF->GetData("IPL.SSV")); WiiProgressiveScan = new wxCheckBox(WiiPage, ID_WII_IPL_PGS, wxT("Enable Progressive Scan"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); - WiiProgressiveScan->SetValue(m_SYSCONF[IPL_PGS]!=0 || SConfig::GetInstance().m_LocalCoreStartupParameter.bProgressiveScan); + WiiProgressiveScan->SetValue(!!SConfig::GetInstance().m_SYSCONF->GetData("IPL.PGS")); WiiEuRGB60 = new wxCheckBox(WiiPage, ID_WII_IPL_E60, wxT("Use EuRGB60 Mode (PAL6)"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); - WiiEuRGB60->SetValue(m_SYSCONF[IPL_E60]!=0); + WiiEuRGB60->SetValue(!!SConfig::GetInstance().m_SYSCONF->GetData("IPL.E60")); arrayStringFor_WiiAspectRatio.Add(wxT("4:3")); arrayStringFor_WiiAspectRatio.Add(wxT("16:9")); WiiAspectRatioText = new wxStaticText(WiiPage, ID_WII_IPL_AR_TEXT, wxT("Aspect Ratio:"), wxDefaultPosition, wxDefaultSize); WiiAspectRatio = new wxChoice(WiiPage, ID_WII_IPL_AR, wxDefaultPosition, wxDefaultSize, arrayStringFor_WiiAspectRatio, 0, wxDefaultValidator); - WiiAspectRatio->SetSelection(m_SYSCONF[IPL_AR]!=0 || SConfig::GetInstance().m_LocalCoreStartupParameter.bWidescreen); + WiiAspectRatio->SetSelection(SConfig::GetInstance().m_SYSCONF->GetData("IPL.AR")); WiiSystemLangText = new wxStaticText(WiiPage, ID_WII_IPL_LNG_TEXT, wxT("System Language:"), wxDefaultPosition, wxDefaultSize); WiiSystemLang = new wxChoice(WiiPage, ID_WII_IPL_LNG, wxDefaultPosition, wxDefaultSize, arrayStringFor_WiiSystemLang, 0, wxDefaultValidator); - WiiSystemLang->SetSelection(m_SYSCONF[IPL_LNG]); + WiiSystemLang->SetSelection(SConfig::GetInstance().m_SYSCONF->GetData("IPL.LNG")); // Populate sbWiimoteSettings sWii = new wxBoxSizer(wxVERTICAL); @@ -594,22 +578,8 @@ void CConfigMain::OnClose(wxCloseEvent& WXUNUSED (event)) { EndModal((bRefreshList) ? wxID_OK : wxID_CLOSE); - // First check that we did successfully populate m_SYSCONF earlier, otherwise don't - // save anything, it will be a corrupted file - if(m_bSysconfOK) - { - // Save SYSCONF with the new settings - pStream = fopen(WII_SYSCONF_FILE, "wb"); - if (pStream != NULL) - { - fwrite(m_SYSCONF, 1, 0x4000, pStream); - fclose(pStream); - } - else - { - PanicAlert("Could not write to %s", WII_SYSCONF_FILE); - } - } + // Sysconf saves when it gets deleted + //delete SConfig::GetInstance().m_SYSCONF; // Save the config. Dolphin crashes to often to save the settings on closing only SConfig::GetInstance().SaveSettings(); @@ -820,25 +790,23 @@ void CConfigMain::WiiSettingsChanged(wxCommandEvent& event) switch (event.GetId()) { case ID_WII_BT_BAR: // Wiimote settings - m_SYSCONF[BT_BAR] = WiiSensBarPos->GetSelection(); + SConfig::GetInstance().m_SYSCONF->SetData("BT.BAR", WiiSensBarPos->GetSelection()); break; - case ID_WII_IPL_AR: // IPL settings - m_SYSCONF[IPL_AR] = WiiAspectRatio->GetSelection(); - SConfig::GetInstance().m_LocalCoreStartupParameter.bWidescreen = WiiAspectRatio->GetSelection() ? true : false; + case ID_WII_IPL_AR: // SYSCONF settings + SConfig::GetInstance().m_SYSCONF->SetData("IPL.AR", WiiAspectRatio->GetSelection()); break; case ID_WII_IPL_SSV: - m_SYSCONF[IPL_SSV] = WiiScreenSaver->IsChecked(); + SConfig::GetInstance().m_SYSCONF->SetData("IPL.SSV", WiiScreenSaver->IsChecked()); break; case ID_WII_IPL_LNG: - m_SYSCONF[IPL_LNG] = WiiSystemLang->GetSelection(); + SConfig::GetInstance().m_SYSCONF->SetData("IPL.LNG", WiiSystemLang->GetSelection()); break; case ID_WII_IPL_PGS: - m_SYSCONF[IPL_PGS] = WiiProgressiveScan->IsChecked(); - SConfig::GetInstance().m_LocalCoreStartupParameter.bProgressiveScan = WiiProgressiveScan->IsChecked(); + SConfig::GetInstance().m_SYSCONF->SetData("IPL.PGS", WiiProgressiveScan->IsChecked()); break; case ID_WII_IPL_E60: - m_SYSCONF[IPL_E60] = WiiEuRGB60->IsChecked(); + SConfig::GetInstance().m_SYSCONF->SetData("IPL.E60", WiiEuRGB60->IsChecked()); break; } } diff --git a/Source/Core/DolphinWX/Src/ConfigMain.h b/Source/Core/DolphinWX/Src/ConfigMain.h index 541bcb7c0b..fab56c3f4b 100644 --- a/Source/Core/DolphinWX/Src/ConfigMain.h +++ b/Source/Core/DolphinWX/Src/ConfigMain.h @@ -24,284 +24,222 @@ #include #include "ConfigManager.h" -class CConfigMain - : public wxDialog +class CConfigMain : public wxDialog { - public: +public: - CConfigMain(wxWindow* parent, - wxWindowID id = 1, - const wxString& title = wxT("Dolphin Configuration"), - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE); - virtual ~CConfigMain(); + CConfigMain(wxWindow* parent, + wxWindowID id = 1, + const wxString& title = wxT("Dolphin Configuration"), + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_DIALOG_STYLE); + virtual ~CConfigMain(); - void OnClick(wxMouseEvent& event); - void CloseClick(wxCommandEvent& event); - void OnSelectionChanged(wxCommandEvent& event); - void OnConfig(wxCommandEvent& event); + void OnClick(wxMouseEvent& event); + void CloseClick(wxCommandEvent& event); + void OnSelectionChanged(wxCommandEvent& event); + void OnConfig(wxCommandEvent& event); - bool bRefreshList; + bool bRefreshList; - private: +private: - DECLARE_EVENT_TABLE(); + DECLARE_EVENT_TABLE(); - wxBoxSizer* sGeneralPage; // General Settings - wxCheckBox* ConfirmStop, *AutoHideCursor; - wxCheckBox* HideCursor, *UsePanicHandlers; - wxCheckBox* WiimoteStatusLEDs, * WiimoteStatusSpeakers; - - wxArrayString arrayStringFor_InterfaceLang; - wxChoice* InterfaceLang; + wxBoxSizer* sGeneralPage; // General Settings + wxCheckBox* ConfirmStop, *AutoHideCursor; + wxCheckBox* HideCursor, *UsePanicHandlers; + wxCheckBox* WiimoteStatusLEDs, * WiimoteStatusSpeakers; - wxArrayString arrayStringFor_Framelimit; - wxChoice* Framelimit; + wxArrayString arrayStringFor_InterfaceLang; + wxChoice* InterfaceLang; - wxRadioBox* Theme; - - wxBoxSizer* sCore; - wxStaticBoxSizer* sbBasic, *sbAdvanced, *sbInterface; - wxCheckBox* AlwaysUseHLEBIOS; - wxCheckBox* UseDynaRec; - wxCheckBox* UseDualCore; - wxCheckBox* DSPThread; - wxCheckBox* LockThreads; - wxCheckBox* OptimizeQuantizers; - wxCheckBox* SkipIdle; - wxCheckBox* EnableCheats; + wxArrayString arrayStringFor_Framelimit; + wxChoice* Framelimit; - wxBoxSizer* sGamecube; // GC settings - wxStaticBoxSizer* sbGamecubeIPLSettings; - wxGridBagSizer* sGamecubeIPLSettings; - wxArrayString arrayStringFor_GCSystemLang; - wxStaticText* GCSystemLangText; - wxChoice* GCSystemLang; - wxChoice *GCEXIDevice[3]; - wxButton *GCMemcardPath[2]; - wxChoice *GCSIDevice[4]; + wxRadioBox* Theme; - wxBoxSizer* sWii; // Wii settings - wxStaticBoxSizer* sbWiimoteSettings; - wxGridBagSizer* sWiimoteSettings; - wxStaticBoxSizer* sbWiiIPLSettings; - wxGridBagSizer* sWiiIPLSettings; - wxBoxSizer* sPaths; - wxStaticBoxSizer* sbISOPaths; - wxBoxSizer* sISOButtons; - wxGridBagSizer* sOtherPaths; - wxBoxSizer* sPlugins; - wxStaticBoxSizer* sbGraphicsPlugin; - wxStaticBoxSizer* sbDSPPlugin; - wxStaticBoxSizer* sbPadPlugin; - wxStaticBoxSizer* sbWiimotePlugin; + wxBoxSizer* sCore; + wxStaticBoxSizer* sbBasic, *sbAdvanced, *sbInterface; + wxCheckBox* AlwaysUseHLEBIOS; + wxCheckBox* UseDynaRec; + wxCheckBox* UseDualCore; + wxCheckBox* DSPThread; + wxCheckBox* LockThreads; + wxCheckBox* OptimizeQuantizers; + wxCheckBox* SkipIdle; + wxCheckBox* EnableCheats; - wxNotebook *Notebook; - wxPanel *GeneralPage; - wxPanel *GamecubePage; - wxPanel *WiiPage; - wxPanel *PathsPage; - wxPanel *PluginPage; + wxBoxSizer* sGamecube; // GC settings + wxStaticBoxSizer* sbGamecubeIPLSettings; + wxGridBagSizer* sGamecubeIPLSettings; + wxArrayString arrayStringFor_GCSystemLang; + wxStaticText* GCSystemLangText; + wxChoice* GCSystemLang; + wxChoice *GCEXIDevice[3]; + wxButton *GCMemcardPath[2]; + wxChoice *GCSIDevice[4]; - wxButton* m_Close; + wxBoxSizer* sWii; // Wii settings + wxStaticBoxSizer* sbWiimoteSettings; + wxGridBagSizer* sWiimoteSettings; + wxStaticBoxSizer* sbWiiIPLSettings; + wxGridBagSizer* sWiiIPLSettings; + wxBoxSizer* sPaths; + wxStaticBoxSizer* sbISOPaths; + wxBoxSizer* sISOButtons; + wxGridBagSizer* sOtherPaths; + wxBoxSizer* sPlugins; + wxStaticBoxSizer* sbGraphicsPlugin; + wxStaticBoxSizer* sbDSPPlugin; + wxStaticBoxSizer* sbPadPlugin; + wxStaticBoxSizer* sbWiimotePlugin; + wxNotebook *Notebook; + wxPanel *GeneralPage; + wxPanel *GamecubePage; + wxPanel *WiiPage; + wxPanel *PathsPage; + wxPanel *PluginPage; - FILE* pStream; - u8 m_SYSCONF[0x4000]; - bool m_bSysconfOK; + wxButton* m_Close; - enum - { - BT_DINF = 0x0044, - BT_SENS = 0x04AF, - BT_BAR = 0x04E1, - BT_SPKV = 0x151A, - BT_MOT = 0x1807 - }; - enum - { - IPL_AR = 0x04D9, - IPL_SSV = 0x04EA, - IPL_LNG = 0x04F3, - IPL_PGS = 0x17CC, - IPL_E60 = 0x17D5 - }; - /* Some offsets in SYSCONF: (taken from ector's SYSCONF) - Note: offset is where the actual data starts, not where the type or name begins - offset length name comment - 0x0044 0x460 BT.DINF List of Wiimotes "synced" to the system - 0x158B ? BT.CDIF ? -- Starts with 0x0204 followed by 0x210 of 0x00 - 0x04AF 4 BT.SENS Wiimote sensitivity setting - 0x04E1 1 BT.BAR Sensor bar position (0:bottom) - 0x151A 1 BT.SPKV Wiimote speaker volume - 0x1807 1 BT.MOT Wiimote motor on/off + FILE* pStream; - 0x17F3 2 IPL.IDL Shutdown mode and idle LED mode - 0x17C3 1 IPL.UPT Update Type - 0x04BB 0x16 IPL.NIK Console Nickname - 0x04D9 1 IPL.AR Aspect ratio setting. 0: 4:3 1: 16:9 - 0x04EA 1 IPL.SSV Screen Saver off/on (burn-in reduction) - 0x04F3 1 IPL.LNG System Language, see conf.c for some values - 0x04FD 0x1007 IPL.SADR "Simple Address" Contains some region info - 0x150E 4 IPL.CB Counter Bias -- difference between RTC and local time, in seconds - 0x1522 0x50 IPL.PC Parental Control password/setting - 0x17B1 1 IPL.CD Config Done flag -- has initial setup been performed? - 0x17BA 1 IPL.CD2 Config2 Done flag -- has network setup been performed? - 0x17FF 1 IPL.EULA EULA Done flag -- has EULA been acknowledged? - 0x17CC 1 IPL.PGS Use Progressive Scan - 0x17D5 1 IPL.E60 Use EuRGB60 (PAL6) - ? 1 IPL.SND Sound setting - 0x17DD 1 IPL.DH Display Offset (Horiz) - 0x179A 4 IPL.INC "Installed Channel App Count" - ? ? IPL.ARN ? - 0x17A7 4 IPL.FRC "Free Channel App Count" + wxArrayString arrayStringFor_WiiSensBarPos; // Wiimote Settings + wxStaticText* WiiSensBarPosText; + wxChoice* WiiSensBarPos; - ? ? DEV.BTM ? - ? ? DEV.VIM ? - ? ? DEV.CTC ? - ? ? DEV.DSM ? - ? ? DVD.CNF ? - 0x1582 ? WWW.RST WWW Restriction - ? ? NET.CNF ? - ? ? NET.CFG ? - 0x1576 4 NET.CTPC Net Content Restrictions ("Content Parental Control"?) - 0x17E7 4 NET.WCFG WC24 Configuration flags - */ - wxArrayString arrayStringFor_WiiSensBarPos; // Wiimote Settings - wxStaticText* WiiSensBarPosText; - wxChoice* WiiSensBarPos; + wxCheckBox* WiiScreenSaver; // IPL settings + wxCheckBox* WiiProgressiveScan; + wxCheckBox* WiiEuRGB60; + wxArrayString arrayStringFor_WiiAspectRatio; + wxStaticText* WiiAspectRatioText; + wxChoice* WiiAspectRatio; + wxArrayString arrayStringFor_WiiSystemLang; + wxStaticText* WiiSystemLangText; + wxChoice* WiiSystemLang; - wxCheckBox* WiiScreenSaver; // IPL settings - wxCheckBox* WiiProgressiveScan; - wxCheckBox* WiiEuRGB60; - wxArrayString arrayStringFor_WiiAspectRatio; - wxStaticText* WiiAspectRatioText; - wxChoice* WiiAspectRatio; - wxArrayString arrayStringFor_WiiSystemLang; - wxStaticText* WiiSystemLangText; - wxChoice* WiiSystemLang; + wxArrayString arrayStringFor_ISOPaths; + wxListBox* ISOPaths; + wxButton* AddISOPath; + wxButton* RemoveISOPath; + wxCheckBox* RecersiveISOPath; + wxStaticText* DefaultISOText; + wxFilePickerCtrl* DefaultISO; + wxStaticText* DVDRootText; + wxDirPickerCtrl* DVDRoot; - wxArrayString arrayStringFor_ISOPaths; - wxListBox* ISOPaths; - wxButton* AddISOPath; - wxButton* RemoveISOPath; - wxCheckBox* RecersiveISOPath; - wxStaticText* DefaultISOText; - wxFilePickerCtrl* DefaultISO; - wxStaticText* DVDRootText; - wxDirPickerCtrl* DVDRoot; + wxStaticText* PADText; + wxButton* PADConfig; + wxChoice* PADSelection; + wxButton* DSPConfig; + wxStaticText* DSPText; + wxChoice* DSPSelection; + wxButton* GraphicConfig; + wxStaticText* GraphicText; + wxChoice* GraphicSelection; + wxButton* WiimoteConfig; + wxStaticText* WiimoteText; + wxChoice* WiimoteSelection; - wxStaticText* PADText; - wxButton* PADConfig; - wxChoice* PADSelection; - wxButton* DSPConfig; - wxStaticText* DSPText; - wxChoice* DSPSelection; - wxButton* GraphicConfig; - wxStaticText* GraphicText; - wxChoice* GraphicSelection; - wxButton* WiimoteConfig; - wxStaticText* WiimoteText; - wxChoice* WiimoteSelection; + enum + { + ID_NOTEBOOK = 1000, + ID_GENERALPAGE, + ID_GAMECUBEPAGE, + ID_WIIPAGE, + ID_PATHSPAGE, + ID_PLUGINPAGE, - enum - { - ID_NOTEBOOK = 1000, - ID_GENERALPAGE, - ID_GAMECUBEPAGE, - ID_WIIPAGE, - ID_PATHSPAGE, - ID_PLUGINPAGE, + ID_ALLWAYS_HLEBIOS, + ID_USEDYNAREC, + ID_USEDUALCORE, + ID_DSPTHREAD, + ID_LOCKTHREADS, + ID_OPTIMIZEQUANTIZERS, + ID_IDLESKIP, + ID_ENABLECHEATS, - ID_ALLWAYS_HLEBIOS, - ID_USEDYNAREC, - ID_USEDUALCORE, - ID_DSPTHREAD, - ID_LOCKTHREADS, - ID_OPTIMIZEQUANTIZERS, - ID_IDLESKIP, - ID_ENABLECHEATS, + ID_INTERFACE_CONFIRMSTOP, // Interface settings + ID_INTERFACE_USEPANICHANDLERS, + ID_INTERFACE_HIDECURSOR_TEXT, ID_INTERFACE_HIDECURSOR, ID_INTERFACE_AUTOHIDECURSOR, + ID_INTERFACE_WIIMOTE_TEXT, ID_INTERFACE_WIIMOTE_LEDS, ID_INTERFACE_WIIMOTE_SPEAKERS, + ID_INTERFACE_LANG_TEXT, ID_INTERFACE_LANG, + ID_INTERFACE_THEME, + ID_FRAMELIMIT_TEXT, ID_FRAMELIMIT, - ID_INTERFACE_CONFIRMSTOP, // Interface settings - ID_INTERFACE_USEPANICHANDLERS, - ID_INTERFACE_HIDECURSOR_TEXT, ID_INTERFACE_HIDECURSOR, ID_INTERFACE_AUTOHIDECURSOR, - ID_INTERFACE_WIIMOTE_TEXT, ID_INTERFACE_WIIMOTE_LEDS, ID_INTERFACE_WIIMOTE_SPEAKERS, - ID_INTERFACE_LANG_TEXT, ID_INTERFACE_LANG, - ID_INTERFACE_THEME, - ID_FRAMELIMIT_TEXT, ID_FRAMELIMIT, + ID_GC_SRAM_LNG_TEXT, + ID_GC_SRAM_LNG, + ID_GC_EXIDEVICE_SLOTA_TEXT, + ID_GC_EXIDEVICE_SLOTA, + ID_GC_EXIDEVICE_SLOTA_PATH, + ID_GC_EXIDEVICE_SLOTB_TEXT, + ID_GC_EXIDEVICE_SLOTB, + ID_GC_EXIDEVICE_SLOTB_PATH, + ID_GC_EXIDEVICE_SP1_TEXT, + ID_GC_EXIDEVICE_SP1, + ID_GC_SIDEVICE_TEXT, + ID_GC_SIDEVICE0, + ID_GC_SIDEVICE1, + ID_GC_SIDEVICE2, + ID_GC_SIDEVICE3, - ID_GC_SRAM_LNG_TEXT, - ID_GC_SRAM_LNG, - ID_GC_EXIDEVICE_SLOTA_TEXT, - ID_GC_EXIDEVICE_SLOTA, - ID_GC_EXIDEVICE_SLOTA_PATH, - ID_GC_EXIDEVICE_SLOTB_TEXT, - ID_GC_EXIDEVICE_SLOTB, - ID_GC_EXIDEVICE_SLOTB_PATH, - ID_GC_EXIDEVICE_SP1_TEXT, - ID_GC_EXIDEVICE_SP1, - ID_GC_SIDEVICE_TEXT, - ID_GC_SIDEVICE0, - ID_GC_SIDEVICE1, - ID_GC_SIDEVICE2, - ID_GC_SIDEVICE3, + ID_WII_BT_BAR_TEXT, + ID_WII_BT_BAR, + ID_WII_IPL_SSV, + ID_WII_IPL_PGS, + ID_WII_IPL_E60, + ID_WII_IPL_AR_TEXT, + ID_WII_IPL_AR, + ID_WII_IPL_LNG_TEXT, + ID_WII_IPL_LNG, - ID_WII_BT_BAR_TEXT, - ID_WII_BT_BAR, - ID_WII_IPL_SSV, - ID_WII_IPL_PGS, - ID_WII_IPL_E60, - ID_WII_IPL_AR_TEXT, - ID_WII_IPL_AR, - ID_WII_IPL_LNG_TEXT, - ID_WII_IPL_LNG, + ID_ISOPATHS, + ID_ADDISOPATH, + ID_REMOVEISOPATH, + ID_RECERSIVEISOPATH, + ID_DEFAULTISO_TEXT, + ID_DEFAULTISO, + ID_DVDROOT_TEXT, + ID_DVDROOT, - ID_ISOPATHS, - ID_ADDISOPATH, - ID_REMOVEISOPATH, - ID_RECERSIVEISOPATH, - ID_DEFAULTISO_TEXT, - ID_DEFAULTISO, - ID_DVDROOT_TEXT, - ID_DVDROOT, + ID_WIIMOTE_ABOUT, + ID_WIIMOTE_CONFIG, + ID_WIIMOTE_TEXT, + ID_WIIMOTE_CB, + ID_PAD_TEXT, + ID_PAD_ABOUT , + ID_PAD_CONFIG, + ID_PAD_CB, + ID_DSP_ABOUT, + ID_DSP_CONFIG, + ID_DSP_TEXT, + ID_DSP_CB, + ID_GRAPHIC_ABOUT, + ID_GRAPHIC_CONFIG, + ID_GRAPHIC_TEXT, + ID_GRAPHIC_CB + }; - ID_WIIMOTE_ABOUT, - ID_WIIMOTE_CONFIG, - ID_WIIMOTE_TEXT, - ID_WIIMOTE_CB, - ID_PAD_TEXT, - ID_PAD_ABOUT , - ID_PAD_CONFIG, - ID_PAD_CB, - ID_DSP_ABOUT, - ID_DSP_CONFIG, - ID_DSP_TEXT, - ID_DSP_CB, - ID_GRAPHIC_ABOUT, - ID_GRAPHIC_CONFIG, - ID_GRAPHIC_TEXT, - ID_GRAPHIC_CB - }; + void CreateGUIControls(); + void UpdateGUI(); + void OnClose(wxCloseEvent& event); + void CoreSettingsChanged(wxCommandEvent& event); + void GCSettingsChanged(wxCommandEvent& event); + void ChooseMemcardPath(std::string& strMemcard, bool isSlotA); + void ChooseSIDevice(std::string deviceName, int deviceNum); + void ChooseEXIDevice(std::string deviceName, int deviceNum); + void WiiSettingsChanged(wxCommandEvent& event); + void ISOPathsSelectionChanged(wxCommandEvent& event); + void RecursiveDirectoryChanged(wxCommandEvent& event); + void AddRemoveISOPaths(wxCommandEvent& event); + void DefaultISOChanged(wxFileDirPickerEvent& event); + void DVDRootChanged(wxFileDirPickerEvent& event); - void CreateGUIControls(); - void UpdateGUI(); - void OnClose(wxCloseEvent& event); - void CoreSettingsChanged(wxCommandEvent& event); - void GCSettingsChanged(wxCommandEvent& event); - void ChooseMemcardPath(std::string& strMemcard, bool isSlotA); - void ChooseSIDevice(std::string deviceName, int deviceNum); - void ChooseEXIDevice(std::string deviceName, int deviceNum); - void WiiSettingsChanged(wxCommandEvent& event); - void ISOPathsSelectionChanged(wxCommandEvent& event); - void RecursiveDirectoryChanged(wxCommandEvent& event); - void AddRemoveISOPaths(wxCommandEvent& event); - void DefaultISOChanged(wxFileDirPickerEvent& event); - void DVDRootChanged(wxFileDirPickerEvent& event); - - void FillChoiceBox(wxChoice* _pChoice, int _PluginType, const std::string& _SelectFilename); - void CallConfig(wxChoice* _pChoice); - bool GetFilename(wxChoice* _pChoice, std::string& _rFilename); + void FillChoiceBox(wxChoice* _pChoice, int _PluginType, const std::string& _SelectFilename); + void CallConfig(wxChoice* _pChoice); + bool GetFilename(wxChoice* _pChoice, std::string& _rFilename); }; - #endif diff --git a/Source/Core/DolphinWX/Src/Summarize.h b/Source/Core/DolphinWX/Src/Summarize.h index 52fc602e9b..b30f2dd0b3 100644 --- a/Source/Core/DolphinWX/Src/Summarize.h +++ b/Source/Core/DolphinWX/Src/Summarize.h @@ -95,8 +95,8 @@ std::string Summarize_Settings() Core::GetStartupParameter().bRunCompareClient?"True":"False", Core::GetStartupParameter().iTLBHack?"True":"False", SConfig::GetInstance().m_Framelimit*5, - Core::GetStartupParameter().bWidescreen?"True":"False", - Core::GetStartupParameter().bProgressiveScan?"True":"False" + SConfig::GetInstance().m_SYSCONF->GetData("IPL.AR")?"True":"False", + SConfig::GetInstance().m_SYSCONF->GetData("IPL.PGS")?"True":"False" ); }