308 lines
8.6 KiB
C++
308 lines
8.6 KiB
C++
// 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/
|
|
|
|
#ifndef __CONFIG_MAIN_h__
|
|
#define __CONFIG_MAIN_h__
|
|
|
|
#include <wx/wx.h>
|
|
#include <wx/gbsizer.h>
|
|
#include <wx/notebook.h>
|
|
#include <wx/filepicker.h>
|
|
#include "ConfigManager.h"
|
|
|
|
class CConfigMain
|
|
: public wxDialog
|
|
{
|
|
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();
|
|
|
|
void OnClick(wxMouseEvent& event);
|
|
void CloseClick(wxCommandEvent& event);
|
|
void OnSelectionChanged(wxCommandEvent& event);
|
|
void OnConfig(wxCommandEvent& event);
|
|
|
|
bool bRefreshList;
|
|
|
|
private:
|
|
|
|
DECLARE_EVENT_TABLE();
|
|
|
|
wxBoxSizer* sGeneralPage; // General Settings
|
|
wxCheckBox* ConfirmStop, *AutoHideCursor;
|
|
wxCheckBox* HideCursor, *UsePanicHandlers;
|
|
wxCheckBox* WiimoteStatusLEDs, * WiimoteStatusSpeakers;
|
|
|
|
wxArrayString arrayStringFor_InterfaceLang;
|
|
wxChoice* InterfaceLang;
|
|
|
|
wxArrayString arrayStringFor_Framelimit;
|
|
wxChoice* InterfaceFramelimit;
|
|
|
|
wxRadioBox* Theme;
|
|
|
|
wxBoxSizer* sCore;
|
|
wxStaticBoxSizer* sbBasic, *sbAdvanced, *sbInterface;
|
|
wxCheckBox* AlwaysUseHLEBIOS;
|
|
wxCheckBox* UseDynaRec;
|
|
wxCheckBox* UseDualCore;
|
|
wxCheckBox* DSPThread;
|
|
wxCheckBox* LockThreads;
|
|
wxCheckBox* OptimizeQuantizers;
|
|
wxCheckBox* SkipIdle;
|
|
wxCheckBox* EnableCheats;
|
|
|
|
wxBoxSizer* sGamecube; // GC settings
|
|
wxStaticBoxSizer* sbGamecubeIPLSettings;
|
|
wxGridBagSizer* sGamecubeIPLSettings;
|
|
wxArrayString arrayStringFor_GCSystemLang;
|
|
wxStaticText* GCSystemLangText;
|
|
wxChoice* GCSystemLang;
|
|
wxChoice *GCEXIDevice[3];
|
|
wxButton *GCMemcardPath[2];
|
|
wxChoice *GCSIDevice[4];
|
|
|
|
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;
|
|
|
|
wxButton* m_Close;
|
|
|
|
|
|
FILE* pStream;
|
|
u8 m_SYSCONF[0x4000];
|
|
bool m_bSysconfOK;
|
|
|
|
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
|
|
|
|
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"
|
|
|
|
? ? 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;
|
|
|
|
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;
|
|
|
|
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_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_INTERFACE_FRAMELIMIT_TEXT, ID_INTERFACE_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_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_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 FillChoiceBox(wxChoice* _pChoice, int _PluginType, const std::string& _SelectFilename);
|
|
void CallConfig(wxChoice* _pChoice);
|
|
bool GetFilename(wxChoice* _pChoice, std::string& _rFilename);
|
|
};
|
|
|
|
#endif
|