2009-07-28 21:32:10 +00:00
// Copyright (C) 2003 Dolphin Project.
2008-12-08 05:25:12 +00:00
// 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/
2009-06-09 19:40:47 +00:00
# include <wx/wx.h>
# include <wx/sizer.h>
# include <wx/filepicker.h>
# include <wx/gbsizer.h>
# include <wx/notebook.h>
# include <wx/mimetype.h>
2008-12-08 05:25:12 +00:00
# include "ConfigDlg.h"
# include "../Globals.h"
2009-09-13 09:23:30 +00:00
# include "VideoConfig.h"
2008-12-08 05:25:12 +00:00
# include "../TextureMngr.h"
2009-04-19 10:10:45 +00:00
# include "VertexShaderManager.h"
2009-06-09 21:10:14 +00:00
# include "../PostProcessing.h"
2009-09-06 15:11:21 +00:00
# include "Render.h"
# include "FileUtil.h"
2008-12-08 05:25:12 +00:00
2009-07-02 17:11:27 +00:00
BEGIN_EVENT_TABLE ( GFXConfigDialogOGL , wxDialog )
EVT_CLOSE ( GFXConfigDialogOGL : : OnClose )
2010-02-25 06:12:35 +00:00
EVT_BUTTON ( wxID_CLOSE , GFXConfigDialogOGL : : CloseClick )
EVT_BUTTON ( wxID_ABOUT , GFXConfigDialogOGL : : AboutClick )
2009-07-02 17:11:27 +00:00
EVT_CHECKBOX ( ID_VSYNC , GFXConfigDialogOGL : : GeneralSettingsChanged )
EVT_CHOICE ( ID_MAXANISOTROPY , GFXConfigDialogOGL : : GeneralSettingsChanged )
EVT_CHOICE ( ID_MSAAMODECB , GFXConfigDialogOGL : : GeneralSettingsChanged )
EVT_CHECKBOX ( ID_NATIVERESOLUTION , GFXConfigDialogOGL : : GeneralSettingsChanged )
2009-10-22 19:13:22 +00:00
EVT_CHECKBOX ( ID_2X_RESOLUTION , GFXConfigDialogOGL : : GeneralSettingsChanged )
2009-07-02 17:11:27 +00:00
EVT_CHECKBOX ( ID_USEXFB , GFXConfigDialogOGL : : GeneralSettingsChanged )
2010-03-10 06:45:13 +00:00
EVT_CHECKBOX ( ID_USEREALXFB , GFXConfigDialogOGL : : GeneralSettingsChanged )
2009-07-02 17:11:27 +00:00
EVT_CHECKBOX ( ID_FORCEFILTERING , GFXConfigDialogOGL : : GeneralSettingsChanged )
2010-05-04 14:43:30 +00:00
EVT_CHECKBOX ( ID_USENATIVEMIPS , GFXConfigDialogOGL : : GeneralSettingsChanged )
2010-07-21 12:07:24 +00:00
EVT_CHECKBOX ( ID_EFBSCALEDCOPY , GFXConfigDialogOGL : : GeneralSettingsChanged )
2009-07-02 17:11:27 +00:00
EVT_CHECKBOX ( ID_AUTOSCALE , GFXConfigDialogOGL : : GeneralSettingsChanged )
2010-01-17 14:17:23 +00:00
EVT_CHECKBOX ( ID_WIDESCREENHACK , GFXConfigDialogOGL : : GeneralSettingsChanged )
2010-01-13 21:11:02 +00:00
EVT_CHOICE ( ID_ASPECT , GFXConfigDialogOGL : : GeneralSettingsChanged )
2009-07-02 17:11:27 +00:00
EVT_CHECKBOX ( ID_CROP , GFXConfigDialogOGL : : GeneralSettingsChanged )
EVT_CHECKBOX ( ID_WIREFRAME , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_SHOWFPS , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_STATISTICS , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_PROJSTATS , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_SHOWEFBCOPYREGIONS , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_SHADERERRORS , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_TEXFMTOVERLAY , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_TEXFMTCENTER , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_DUMPTEXTURES , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_HIRESTEXTURES , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_DUMPEFBTARGET , GFXConfigDialogOGL : : AdvancedSettingsChanged )
2010-02-25 06:12:35 +00:00
EVT_CHECKBOX ( ID_DUMPFRAMES , GFXConfigDialogOGL : : AdvancedSettingsChanged )
2009-07-02 17:11:27 +00:00
EVT_CHECKBOX ( ID_FREELOOK , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_DISABLELIGHTING , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_DISABLETEXTURING , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_DISABLEFOG , GFXConfigDialogOGL : : AdvancedSettingsChanged )
2009-10-22 19:13:22 +00:00
EVT_CHECKBOX ( ID_OSDHOTKEY , GFXConfigDialogOGL : : AdvancedSettingsChanged )
2009-07-02 17:11:27 +00:00
EVT_CHECKBOX ( ID_HACK , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_SAFETEXTURECACHE , GFXConfigDialogOGL : : AdvancedSettingsChanged )
2010-02-27 16:07:29 +00:00
EVT_RADIOBUTTON ( ID_RADIO_SAFETEXTURECACHE_SAFE , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_RADIOBUTTON ( ID_RADIO_SAFETEXTURECACHE_NORMAL , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_RADIOBUTTON ( ID_RADIO_SAFETEXTURECACHE_FAST , GFXConfigDialogOGL : : AdvancedSettingsChanged )
2010-02-25 06:12:35 +00:00
EVT_CHECKBOX ( ID_DSTALPHAPASS , GFXConfigDialogOGL : : AdvancedSettingsChanged )
2009-07-02 17:11:27 +00:00
EVT_CHECKBOX ( ID_CHECKBOX_DISABLECOPYEFB , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_RADIOBUTTON ( ID_RADIO_COPYEFBTORAM , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_RADIOBUTTON ( ID_RADIO_COPYEFBTOGL , GFXConfigDialogOGL : : AdvancedSettingsChanged )
EVT_CHOICE ( ID_PHACKVALUE , GFXConfigDialogOGL : : GeneralSettingsChanged )
EVT_CHOICE ( ID_POSTSHADER , GFXConfigDialogOGL : : GeneralSettingsChanged )
EVT_BUTTON ( ID_RELOADSHADER , GFXConfigDialogOGL : : ReloadShaderClick )
EVT_BUTTON ( ID_EDITSHADER , GFXConfigDialogOGL : : EditShaderClick )
2008-12-08 05:25:12 +00:00
END_EVENT_TABLE ( )
2009-07-02 17:11:27 +00:00
GFXConfigDialogOGL : : GFXConfigDialogOGL ( wxWindow * parent , wxWindowID id , const wxString & title , const wxPoint & position , const wxSize & size , long style )
2008-12-08 05:25:12 +00:00
: wxDialog ( parent , id , title , position , size , style )
{
}
2009-09-02 21:00:45 +00:00
2009-02-19 10:29:53 +00:00
// Close and unload the window
// ---------------
2009-07-02 17:11:27 +00:00
GFXConfigDialogOGL : : ~ GFXConfigDialogOGL ( )
2008-12-08 05:25:12 +00:00
{
2009-07-02 17:11:27 +00:00
INFO_LOG ( CONSOLE , " GFXConfigDialogOGL Closed " ) ;
2008-12-08 05:25:12 +00:00
}
2010-02-25 06:12:35 +00:00
2009-07-02 17:11:27 +00:00
void GFXConfigDialogOGL : : OnClose ( wxCloseEvent & event )
2009-02-19 10:29:53 +00:00
{
2009-07-26 09:52:35 +00:00
//INFO_LOG(CONSOLE, "OnClose");
2009-02-22 04:24:53 +00:00
// notice that we don't run wxEntryCleanup(); here so the dll will still be loaded
/* JP: Yes, it seems like Close() does not do that. It only runs EndModal() or something
similar to hide the window . And I don ' t understand the " Window deletion overview " on
2009-02-25 05:54:36 +00:00
the wxWidgets website . Destroy ( ) doesn ' t run the destructor either . However running
wxEntryCleanup ( ) from here crashes the process . But we can run it from CloseClick ( ) */
2009-02-22 04:24:53 +00:00
//wxEntryCleanup();
2009-02-19 10:29:53 +00:00
//EndModal(0);
// Allow wxWidgets to close and unload the window
2009-07-26 09:52:35 +00:00
//event.Skip();
CloseWindow ( ) ;
2009-02-19 10:29:53 +00:00
}
2009-07-02 17:11:27 +00:00
void GFXConfigDialogOGL : : CloseClick ( wxCommandEvent & WXUNUSED ( event ) )
2009-02-19 10:29:53 +00:00
{
2009-07-26 09:52:35 +00:00
//INFO_LOG(CONSOLE, "CloseClick");
2009-02-22 04:24:53 +00:00
2009-02-25 05:54:36 +00:00
// If we run wxEntryCleanup() the class will be entirely deleted, and the destructor will be run
//g_Config.Save();
2009-02-23 21:38:06 +00:00
//wxEntryCleanup();
2009-02-22 04:24:53 +00:00
2009-07-26 09:52:35 +00:00
//Close();
CloseWindow ( ) ;
2009-02-19 10:29:53 +00:00
}
2009-09-02 21:00:45 +00:00
2010-02-06 16:20:54 +00:00
// This one could be used to reload shaders while dolphin is running...
void GFXConfigDialogOGL : : LoadShaders ( )
{
arrayStringFor_PostShaderCB . Clear ( ) ;
2009-09-02 21:00:45 +00:00
2010-02-06 16:20:54 +00:00
arrayStringFor_PostShaderCB . Add ( wxT ( " (off) " ) ) ;
if ( File : : IsDirectory ( File : : GetUserPath ( D_SHADERS_IDX ) ) )
{
File : : FSTEntry entry ;
File : : ScanDirectoryTree ( File : : GetUserPath ( D_SHADERS_IDX ) , entry ) ;
for ( u32 i = 0 ; i < entry . children . size ( ) ; i + + )
{
std : : string name = entry . children [ i ] . virtualName . c_str ( ) ;
if ( ! strcasecmp ( name . substr ( name . size ( ) - 4 ) . c_str ( ) , " .txt " ) )
name = name . substr ( 0 , name . size ( ) - 4 ) ;
2010-06-11 08:39:03 +00:00
arrayStringFor_PostShaderCB . Add ( wxString : : From8BitData ( name . c_str ( ) ) ) ;
2010-02-06 16:20:54 +00:00
}
}
else
{
File : : CreateDir ( File : : GetUserPath ( D_SHADERS_IDX ) ) ;
}
}
2010-02-25 06:12:35 +00:00
2010-02-06 16:20:54 +00:00
void GFXConfigDialogOGL : : InitializeGUILists ( )
{
// Keep Aspect Ratio
arrayStringFor_AspectRatio . Add ( wxT ( " Auto Aspect (recommended) " ) ) ;
arrayStringFor_AspectRatio . Add ( wxT ( " Force 16:9 Widescreen " ) ) ;
arrayStringFor_AspectRatio . Add ( wxT ( " Force 4:3 Standard " ) ) ;
arrayStringFor_AspectRatio . Add ( wxT ( " Stretch to Window " ) ) ;
// Antialias (MSAA)
arrayStringFor_MSAAModeCB . Add ( wxT ( " (off) " ) ) ;
arrayStringFor_MSAAModeCB . Add ( wxT ( " 2x " ) ) ;
arrayStringFor_MSAAModeCB . Add ( wxT ( " 4x " ) ) ;
arrayStringFor_MSAAModeCB . Add ( wxT ( " 8x " ) ) ;
arrayStringFor_MSAAModeCB . Add ( wxT ( " 8x CSAA " ) ) ;
arrayStringFor_MSAAModeCB . Add ( wxT ( " 8xQ CSAA " ) ) ;
arrayStringFor_MSAAModeCB . Add ( wxT ( " 16x CSAA " ) ) ;
arrayStringFor_MSAAModeCB . Add ( wxT ( " 16xQ CSAA " ) ) ;
// Anisotropic filter
arrayStringFor_MaxAnisotropyCB . Add ( wxT ( " 1x " ) ) ;
arrayStringFor_MaxAnisotropyCB . Add ( wxT ( " 2x " ) ) ;
arrayStringFor_MaxAnisotropyCB . Add ( wxT ( " 4x " ) ) ;
arrayStringFor_MaxAnisotropyCB . Add ( wxT ( " 8x " ) ) ;
arrayStringFor_MaxAnisotropyCB . Add ( wxT ( " 16x " ) ) ;
// Post-processing shader
LoadShaders ( ) ;
// Hacks
arrayStringFor_PhackvalueCB . Add ( wxT ( " None " ) ) ;
arrayStringFor_PhackvalueCB . Add ( wxT ( " Zelda Twilight Princess Bloom hack " ) ) ;
arrayStringFor_PhackvalueCB . Add ( wxT ( " Sonic and the Black Knight " ) ) ;
arrayStringFor_PhackvalueCB . Add ( wxT ( " Bleach Versus Crusade " ) ) ;
2010-04-15 09:23:59 +00:00
arrayStringFor_PhackvalueCB . Add ( wxT ( " Skies of Arcadia " ) ) ;
2010-02-06 16:20:54 +00:00
}
2010-02-25 06:12:35 +00:00
2010-02-06 16:20:54 +00:00
void GFXConfigDialogOGL : : InitializeGUIValues ( )
{
// General Display Settings
m_NativeResolution - > SetValue ( g_Config . bNativeResolution ) ;
m_2xResolution - > SetValue ( g_Config . b2xResolution ) ;
2010-02-22 01:08:42 +00:00
2010-02-06 16:20:54 +00:00
m_KeepAR - > SetSelection ( g_Config . iAspectRatio ) ;
m_Crop - > SetValue ( g_Config . bCrop ) ;
2009-02-19 10:29:53 +00:00
2010-02-06 16:20:54 +00:00
// Advanced Display Settings
m_OSDHotKey - > SetValue ( g_Config . bOSDHotKey ) ;
m_VSync - > SetValue ( g_Config . bVSync ) ;
m_UseXFB - > SetValue ( g_Config . bUseXFB ) ;
2010-03-10 06:45:13 +00:00
m_UseRealXFB - > SetValue ( g_Config . bUseRealXFB ) ;
2010-02-06 16:20:54 +00:00
m_AutoScale - > SetValue ( g_Config . bAutoScale ) ;
m_WidescreenHack - > SetValue ( g_Config . bWidescreenHack ) ;
2010-05-04 14:43:30 +00:00
m_UseNativeMips - > SetValue ( g_Config . bUseNativeMips ) ;
2010-07-21 12:07:24 +00:00
m_EFBScaledCopy - > SetValue ( g_Config . bCopyEFBScaled ) ;
2010-02-06 16:20:54 +00:00
// Enhancements
m_MaxAnisotropyCB - > SetSelection ( g_Config . iMaxAnisotropy - 1 ) ;
m_ForceFiltering - > SetValue ( g_Config . bForceFiltering ) ;
m_MSAAModeCB - > SetSelection ( g_Config . iMultisampleMode ) ;
2010-06-11 08:39:03 +00:00
wxString shader = wxString : : From8BitData ( g_Config . sPostProcessingShader . c_str ( ) ) ;
2010-02-06 16:20:54 +00:00
if ( shader = = _ ( " " ) )
shader = wxT ( " (off) " ) ;
m_PostShaderCB - > SetStringSelection ( shader ) ;
// Information
m_ShowFPS - > SetValue ( g_Config . bShowFPS ) ;
//m_ShaderErrors->SetValue(g_Config.bShowShaderErrors);
m_Statistics - > SetValue ( g_Config . bOverlayStats ) ;
m_ProjStats - > SetValue ( g_Config . bOverlayProjStats ) ;
m_ShowEFBCopyRegions - > SetValue ( g_Config . bShowEFBCopyRegions ) ;
m_TexFmtOverlay - > SetValue ( g_Config . bTexFmtOverlayEnable ) ;
m_TexFmtCenter - > SetValue ( g_Config . bTexFmtOverlayCenter ) ;
m_TexFmtCenter - > Enable ( m_TexFmtOverlay - > IsChecked ( ) ) ;
// Render
m_Wireframe - > SetValue ( g_Config . bWireFrame ) ;
m_DisableLighting - > SetValue ( g_Config . bDisableLighting ) ;
m_DisableTexturing - > SetValue ( g_Config . bDisableTexturing ) ;
2010-02-25 06:12:35 +00:00
m_DstAlphaPass - > SetValue ( g_Config . bDstAlphaPass ) ;
m_DisableFog - > SetValue ( g_Config . bDisableFog ) ;
2010-02-06 16:20:54 +00:00
m_CheckBox_DisableCopyEFB - > SetValue ( g_Config . bEFBCopyDisable ) ;
g_Config . bCopyEFBToTexture ? m_Radio_CopyEFBToGL - > SetValue ( true ) : m_Radio_CopyEFBToRAM - > SetValue ( true ) ;
// Utility
m_DumpTextures - > SetValue ( g_Config . bDumpTextures ) ;
m_HiresTextures - > SetValue ( g_Config . bHiresTextures ) ;
m_DumpEFBTarget - > SetValue ( g_Config . bDumpEFBTarget ) ;
m_DumpFrames - > SetValue ( g_Config . bDumpFrames ) ;
m_FreeLook - > SetValue ( g_Config . bFreeLook ) ;
// Hacks controls
m_PhackvalueCB - > SetSelection ( g_Config . iPhackvalue ) ;
m_SafeTextureCache - > SetValue ( g_Config . bSafeTextureCache ) ;
2010-02-27 16:07:29 +00:00
if ( g_Config . iSafeTextureCache_ColorSamples = = 0 )
m_Radio_SafeTextureCache_Safe - > SetValue ( true ) ;
else
if ( g_Config . iSafeTextureCache_ColorSamples > 128 )
m_Radio_SafeTextureCache_Normal - > SetValue ( true ) ;
else
m_Radio_SafeTextureCache_Fast - > SetValue ( true ) ;
2010-02-06 16:20:54 +00:00
}
2010-02-25 06:12:35 +00:00
2010-02-06 16:20:54 +00:00
void GFXConfigDialogOGL : : InitializeGUITooltips ( )
{
// Tool tips
m_NativeResolution - > SetToolTip (
wxT ( " This will use the game's native resolution and stretch it to fill the " )
wxT ( " \n window instead of changing the internal display resolution. It " )
wxT ( " \n may result in a blurrier image, but it may also give a higher " )
wxT ( " \n FPS if you have a slow graphics card. " )
wxT ( " \n \n Applies instanty during gameplay: <Yes> " ) ) ;
m_2xResolution - > SetToolTip ( wxT (
" Applies instanty during gameplay: <Yes, if allowed> " ) ) ;
m_KeepAR - > SetToolTip (
wxT ( " This sets the aspect ratio of the image. " )
wxT ( " \n The Widescreen hack may cause graphical issues in some games ! " )
wxT ( " \n \n Applies instanty during gameplay: <Yes> " ) ) ;
m_Crop - > SetToolTip (
wxT ( " Crop the picture instead of creating a letterbox. It will assume that your screen " )
wxT ( " \n is of the 5:4 format if you have selected the 4:3 aspect ratio. It will assume " )
wxT ( " \n that your screen is of the 16:10 format if you have selected the 16:9 aspect ratio. " )
wxT ( " \n \n Applies instanty during gameplay: <Yes> " ) ) ;
m_MSAAModeCB - > SetToolTip ( wxT (
" Applies instanty during gameplay: <No> " ) ) ;
m_OSDHotKey - > SetToolTip (
wxT ( " Enable OSD hotkeys '3', '4', '5', '6' and '7' to easily toggle some settings. " ) ) ;
// Enhancements
m_ForceFiltering - > SetToolTip (
wxT ( " Even though it will increase the IQ, it will also break some EFB effects \n " )
wxT ( " such as Bink FMV in many Wii games or the goo in Mario Sunshine, so be careful :) " ) ) ;
// Render
m_DstAlphaPass - > SetToolTip ( wxT ( " This renders a second time to set alpha to a constant value, " )
wxT ( " \n Disabling it may speed up some games, but could also cause glitches. " ) ) ;
m_DisableFog - > SetToolTip ( wxT ( " This option should not require a restart. " ) ) ;
m_CheckBox_DisableCopyEFB - > SetToolTip ( wxT ( " This may lead to a higher FPS in for example Zelda - TP. " )
wxT ( " But it may also cause graphical errors and missing graphics. " ) ) ;
m_Radio_CopyEFBToRAM - > SetToolTip ( wxT ( " [This option will apply immediately and does not require a restart to take effect.] " ) ) ;
m_Radio_CopyEFBToGL - > SetToolTip ( wxT ( " [This option will apply immediately and does not require a restart to take effect.] " ) ) ;
// Utility
# ifdef _WIN32
m_DumpFrames - > SetToolTip (
wxT ( " When dumping begins, you will be prompted to choose a video codec to " )
wxT ( " encode the video in. " ) ) ;
# else
m_DumpFrames - > SetToolTip ( wxT (
" !!WARNING!! This option dumps raw bitmaps of each frame, and will fill up "
" your hard drive very quickly. Only turn this on if you have a named pipe "
" set up for the dump or several gigabytes of space available. " ) ) ;
# endif
m_FreeLook - > SetToolTip (
wxT ( " Use WASD to move around, 0 and 9 to move faster or slower, and the " )
wxT ( " left mouse button to pan the view. " ) ) ;
// Hacks controls
m_SafeTextureCache - > SetToolTip ( wxT ( " This is useful to prevent Metroid Prime from crashing, but can cause problems in other games. " )
wxT ( " \n [This option will apply immediately and does not require a restart. However it may not " )
wxT ( " be entirely safe to change it midgames.] " ) ) ;
2010-02-27 16:07:29 +00:00
m_Radio_SafeTextureCache_Safe - > SetToolTip (
wxT ( " [This option will apply immediately and does not require a restart to take effect.] " ) ) ;
m_Radio_SafeTextureCache_Normal - > SetToolTip (
wxT ( " [This option will apply immediately and does not require a restart to take effect.] " ) ) ;
m_Radio_SafeTextureCache_Fast - > SetToolTip (
wxT ( " [This option will apply immediately and does not require a restart to take effect.] " ) ) ;
2010-02-06 16:20:54 +00:00
}
2010-02-25 06:12:35 +00:00
2009-07-02 17:11:27 +00:00
void GFXConfigDialogOGL : : CreateGUIControls ( )
2008-12-08 05:25:12 +00:00
{
2010-02-06 16:20:54 +00:00
InitializeGUILists ( ) ;
2008-12-08 05:25:12 +00:00
// Notebook
m_Notebook = new wxNotebook ( this , ID_NOTEBOOK , wxDefaultPosition , wxDefaultSize ) ;
m_PageGeneral = new wxPanel ( m_Notebook , ID_PAGEGENERAL , wxDefaultPosition , wxDefaultSize ) ;
m_Notebook - > AddPage ( m_PageGeneral , wxT ( " General " ) ) ;
m_PageAdvanced = new wxPanel ( m_Notebook , ID_PAGEADVANCED , wxDefaultPosition , wxDefaultSize ) ;
m_Notebook - > AddPage ( m_PageAdvanced , wxT ( " Advanced " ) ) ;
// Buttons
2010-02-25 06:12:35 +00:00
m_About = new wxButton ( this , wxID_ABOUT , wxT ( " About " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_Close = new wxButton ( this , wxID_CLOSE , wxT ( " Close " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2008-12-08 05:25:12 +00:00
// Put notebook and buttons in sizers
wxBoxSizer * sButtons ;
sButtons = new wxBoxSizer ( wxHORIZONTAL ) ;
sButtons - > Add ( m_About , 0 , wxALL , 5 ) ;
sButtons - > AddStretchSpacer ( ) ;
sButtons - > Add ( m_Close , 0 , wxALL , 5 ) ;
wxBoxSizer * sMain ;
sMain = new wxBoxSizer ( wxVERTICAL ) ;
sMain - > Add ( m_Notebook , 1 , wxEXPAND | wxALL , 5 ) ;
sMain - > Add ( sButtons , 0 , wxEXPAND , 5 ) ;
this - > SetSizer ( sMain ) ;
this - > Layout ( ) ;
2009-06-06 13:36:33 +00:00
// General Display Settings
sbBasic = new wxStaticBoxSizer ( wxVERTICAL , m_PageGeneral , wxT ( " Basic Display Settings " ) ) ;
2010-04-12 01:33:10 +00:00
wxStaticText * IRText = new wxStaticText ( m_PageGeneral , wxID_ANY , wxT ( " Resolution: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
2009-06-08 06:05:09 +00:00
m_NativeResolution = new wxCheckBox ( m_PageGeneral , ID_NATIVERESOLUTION , wxT ( " Native " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-09-05 05:42:51 +00:00
m_2xResolution = new wxCheckBox ( m_PageGeneral , ID_2X_RESOLUTION , wxT ( " 2x " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-02-28 16:33:59 +00:00
// Aspect ratio / positioning controls
2009-06-06 13:36:33 +00:00
wxStaticText * KeepARText = new wxStaticText ( m_PageGeneral , wxID_ANY , wxT ( " Keep aspect ratio: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
2010-02-06 16:20:54 +00:00
m_KeepAR = new wxChoice ( m_PageGeneral , ID_ASPECT , wxDefaultPosition , wxDefaultSize , arrayStringFor_AspectRatio ) ;
2009-02-25 05:54:36 +00:00
m_Crop = new wxCheckBox ( m_PageGeneral , ID_CROP , wxT ( " Crop " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-01-04 23:00:07 +00:00
2009-06-06 13:36:33 +00:00
// Advanced Display Settings
sbBasicAdvanced = new wxStaticBoxSizer ( wxVERTICAL , m_PageGeneral , wxT ( " Advanced Display Settings " ) ) ;
2009-10-24 00:18:21 +00:00
m_OSDHotKey = new wxCheckBox ( m_PageGeneral , ID_OSDHOTKEY , wxT ( " Enable Hotkeys " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2010-02-28 21:56:17 +00:00
# if !defined(_WIN32) && (!defined(HAVE_X11) || !HAVE_X11)
2009-10-22 19:13:22 +00:00
m_OSDHotKey - > Enable ( false ) ;
2010-02-06 16:20:54 +00:00
# endif
m_VSync = new wxCheckBox ( m_PageGeneral , ID_VSYNC , wxT ( " VSync (req. restart) " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2010-03-10 06:45:13 +00:00
m_UseXFB = new wxCheckBox ( m_PageGeneral , ID_USEXFB , wxT ( " Use XFB " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_UseRealXFB = new wxCheckBox ( m_PageGeneral , ID_USEREALXFB , wxT ( " Use Real XFB " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2010-02-06 16:20:54 +00:00
m_AutoScale = new wxCheckBox ( m_PageGeneral , ID_AUTOSCALE , wxT ( " Auto scale (try to remove borders) " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_WidescreenHack = new wxCheckBox ( m_PageGeneral , ID_WIDESCREENHACK , wxT ( " Wide screen hack " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2010-05-04 14:43:30 +00:00
m_UseNativeMips = new wxCheckBox ( m_PageGeneral , ID_USENATIVEMIPS , wxT ( " Use Native Mips " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2010-07-21 12:07:24 +00:00
m_EFBScaledCopy = new wxCheckBox ( m_PageGeneral , ID_EFBSCALEDCOPY , wxT ( " EFB Scaled Copy " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-06-08 02:48:38 +00:00
2008-12-08 05:25:12 +00:00
// Enhancements
sbEnhancements = new wxStaticBoxSizer ( wxVERTICAL , m_PageGeneral , wxT ( " Enhancements " ) ) ;
2009-04-24 01:30:45 +00:00
wxStaticText * AnisoText = new wxStaticText ( m_PageGeneral , ID_MAXANISOTROPYTEXT , wxT ( " Anisotropic filter: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
2008-12-08 05:25:12 +00:00
m_MaxAnisotropyCB = new wxChoice ( m_PageGeneral , ID_MAXANISOTROPY , wxDefaultPosition , wxDefaultSize , arrayStringFor_MaxAnisotropyCB , 0 , wxDefaultValidator ) ;
2009-10-22 19:13:22 +00:00
m_ForceFiltering = new wxCheckBox ( m_PageGeneral , ID_FORCEFILTERING , wxT ( " Force Linear filter (!) " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2010-02-06 16:20:54 +00:00
wxStaticText * MSAAText = new wxStaticText ( m_PageGeneral , ID_MSAAMODETEXT , wxT ( " Antialias (MSAA): " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_MSAAModeCB = new wxChoice ( m_PageGeneral , ID_MSAAMODECB , wxDefaultPosition , wxDefaultSize , arrayStringFor_MSAAModeCB , 0 , wxDefaultValidator ) ;
2009-06-09 19:40:47 +00:00
wxStaticText * PostShaderText = new wxStaticText ( m_PageGeneral , ID_POSTSHADERTEXT , wxT ( " Post-processing shader: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_PostShaderCB = new wxChoice ( m_PageGeneral , ID_POSTSHADER , wxDefaultPosition , wxDefaultSize , arrayStringFor_PostShaderCB , 0 , wxDefaultValidator ) ;
m_ReloadShader = new wxButton ( m_PageGeneral , ID_RELOADSHADER , wxT ( " &Reload " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_EditShader = new wxButton ( m_PageGeneral , ID_EDITSHADER , wxT ( " &Edit " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-09-06 15:11:21 +00:00
// Sizers
2008-12-08 05:25:12 +00:00
sGeneral = new wxBoxSizer ( wxVERTICAL ) ;
2010-02-25 06:12:35 +00:00
sBasic = new wxGridBagSizer ( 0 , 0 ) ;
2009-06-06 13:36:33 +00:00
2009-06-07 14:50:16 +00:00
sBasic - > Add ( IRText , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
2009-08-13 09:24:44 +00:00
sBasic - > Add ( m_NativeResolution , wxGBPosition ( 0 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
2009-09-05 05:42:51 +00:00
sBasic - > Add ( m_2xResolution , wxGBPosition ( 0 , 2 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
2009-08-13 09:24:44 +00:00
2010-04-22 04:28:34 +00:00
sBasic - > Add ( KeepARText , wxGBPosition ( 1 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
sBasic - > Add ( m_KeepAR , wxGBPosition ( 1 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sBasic - > Add ( m_Crop , wxGBPosition ( 1 , 2 ) , wxGBSpan ( 1 , 1 ) , wxALL | wxALIGN_CENTER_VERTICAL , 5 ) ;
2009-02-25 05:54:36 +00:00
2009-10-24 00:18:21 +00:00
sbBasic - > Add ( sBasic ) ;
2008-12-08 05:25:12 +00:00
sGeneral - > Add ( sbBasic , 0 , wxEXPAND | wxALL , 5 ) ;
2009-06-06 13:36:33 +00:00
sBasicAdvanced = new wxGridBagSizer ( 0 , 0 ) ;
2009-09-06 15:11:21 +00:00
2010-04-12 01:33:10 +00:00
sBasicAdvanced - > Add ( m_OSDHotKey , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
sBasicAdvanced - > Add ( m_VSync , wxGBPosition ( 1 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
sBasicAdvanced - > Add ( m_UseXFB , wxGBPosition ( 2 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
sBasicAdvanced - > Add ( m_UseRealXFB , wxGBPosition ( 3 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
sBasicAdvanced - > Add ( m_AutoScale , wxGBPosition ( 4 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
sBasicAdvanced - > Add ( m_WidescreenHack , wxGBPosition ( 5 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
2010-05-04 14:43:30 +00:00
sBasicAdvanced - > Add ( m_UseNativeMips , wxGBPosition ( 6 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
2010-07-21 12:07:24 +00:00
sBasicAdvanced - > Add ( m_EFBScaledCopy , wxGBPosition ( 7 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
2009-06-06 13:36:33 +00:00
sbBasicAdvanced - > Add ( sBasicAdvanced ) ;
sGeneral - > Add ( sbBasicAdvanced , 0 , wxEXPAND | wxALL , 5 ) ;
2008-12-08 05:25:12 +00:00
sEnhancements = new wxGridBagSizer ( 0 , 0 ) ;
2009-03-08 20:04:40 +00:00
sEnhancements - > Add ( AnisoText , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
2009-10-22 19:13:22 +00:00
sEnhancements - > Add ( m_MaxAnisotropyCB , wxGBPosition ( 0 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALL | wxEXPAND , 5 ) ;
2009-10-24 00:18:21 +00:00
sEnhancements - > Add ( m_ForceFiltering , wxGBPosition ( 0 , 2 ) , wxGBSpan ( 1 , 2 ) , wxALL | wxALIGN_CENTER_VERTICAL , 5 ) ;
2009-03-08 20:04:40 +00:00
sEnhancements - > Add ( MSAAText , wxGBPosition ( 1 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
2009-10-22 19:13:22 +00:00
sEnhancements - > Add ( m_MSAAModeCB , wxGBPosition ( 1 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALL | wxEXPAND , 5 ) ;
sEnhancements - > Add ( PostShaderText , wxGBPosition ( 2 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
sEnhancements - > Add ( m_PostShaderCB , wxGBPosition ( 2 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sEnhancements - > Add ( m_ReloadShader , wxGBPosition ( 2 , 2 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sEnhancements - > Add ( m_EditShader , wxGBPosition ( 2 , 3 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
2008-12-08 05:25:12 +00:00
sbEnhancements - > Add ( sEnhancements ) ;
sGeneral - > Add ( sbEnhancements , 0 , wxEXPAND | wxALL , 5 ) ;
m_PageGeneral - > SetSizer ( sGeneral ) ;
sGeneral - > Layout ( ) ;
// Information
sbInfo = new wxStaticBoxSizer ( wxVERTICAL , m_PageAdvanced , wxT ( " Info " ) ) ;
m_ShowFPS = new wxCheckBox ( m_PageAdvanced , ID_SHOWFPS , wxT ( " Overlay FPS " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2010-02-06 16:20:54 +00:00
m_ShaderErrors = new wxCheckBox ( m_PageAdvanced , ID_SHADERERRORS , wxT ( " Show shader compilation issues " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_ShaderErrors - > Enable ( false ) ;
2008-12-08 05:25:12 +00:00
m_Statistics = new wxCheckBox ( m_PageAdvanced , ID_STATISTICS , wxT ( " Overlay some statistics " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-02-15 20:49:59 +00:00
m_ProjStats = new wxCheckBox ( m_PageAdvanced , ID_PROJSTATS , wxT ( " Overlay Projection Stats " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-03-16 07:54:44 +00:00
m_ShowEFBCopyRegions = new wxCheckBox ( m_PageAdvanced , ID_SHOWEFBCOPYREGIONS , wxT ( " Show EFB Copy Regions " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2008-12-08 05:25:12 +00:00
m_TexFmtOverlay = new wxCheckBox ( m_PageAdvanced , ID_TEXFMTOVERLAY , wxT ( " Overlay texture format " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_TexFmtCenter = new wxCheckBox ( m_PageAdvanced , ID_TEXFMTCENTER , wxT ( " centered " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
// Render
sbRendering = new wxStaticBoxSizer ( wxVERTICAL , m_PageAdvanced , wxT ( " Rendering " ) ) ;
m_Wireframe = new wxCheckBox ( m_PageAdvanced , ID_WIREFRAME , wxT ( " Enable Wireframe " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_DisableLighting = new wxCheckBox ( m_PageAdvanced , ID_DISABLELIGHTING , wxT ( " Disable Material Lighting " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_DisableTexturing = new wxCheckBox ( m_PageAdvanced , ID_DISABLETEXTURING , wxT ( " Disable Texturing " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2010-02-25 06:12:35 +00:00
m_DstAlphaPass = new wxCheckBox ( m_PageAdvanced , ID_DSTALPHAPASS , wxT ( " Disable Destination Alpha Pass " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_DisableFog = new wxCheckBox ( m_PageAdvanced , ID_DISABLEFOG , wxT ( " Disable Fog " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-01-19 21:18:43 +00:00
2009-01-13 20:50:51 +00:00
m_StaticBox_EFB = new wxStaticBox ( m_PageAdvanced , ID_STATICBOX_EFB , wxT ( " EFB Copy " ) ) ;
m_CheckBox_DisableCopyEFB = new wxCheckBox ( m_PageAdvanced , ID_CHECKBOX_DISABLECOPYEFB , wxT ( " Disable " ) ) ;
2010-06-19 16:22:24 +00:00
m_Radio_CopyEFBToRAM = new wxRadioButton ( m_PageAdvanced , ID_RADIO_COPYEFBTORAM , wxT ( " To RAM (accuracy) " ) ) ;
m_Radio_CopyEFBToGL = new wxRadioButton ( m_PageAdvanced , ID_RADIO_COPYEFBTOGL , wxT ( " To GL texture (performance) " ) ) ;
2008-12-08 05:25:12 +00:00
// Utility
sbUtilities = new wxStaticBoxSizer ( wxVERTICAL , m_PageAdvanced , wxT ( " Utilities " ) ) ;
2009-03-07 09:29:25 +00:00
m_DumpTextures = new wxCheckBox ( m_PageAdvanced , ID_DUMPTEXTURES , wxT ( " Dump textures " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-05-07 07:43:56 +00:00
m_HiresTextures = new wxCheckBox ( m_PageAdvanced , ID_HIRESTEXTURES , wxT ( " Load Hires textures " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-03-07 09:29:25 +00:00
m_DumpEFBTarget = new wxCheckBox ( m_PageAdvanced , ID_DUMPEFBTARGET , wxT ( " Dump EFB Target " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-03-28 21:07:16 +00:00
m_DumpFrames = new wxCheckBox ( m_PageAdvanced , ID_DUMPFRAMES , wxT ( " Dump Rendered Frames " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-08-08 22:01:18 +00:00
m_FreeLook = new wxCheckBox ( m_PageAdvanced , ID_FREELOOK , wxT ( " Free Look " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2008-12-08 05:25:12 +00:00
2009-02-19 02:58:29 +00:00
// Hacks controls
2010-02-27 16:07:29 +00:00
sHacks = new wxStaticBoxSizer ( wxVERTICAL , m_PageAdvanced , wxT ( " Hacks " ) ) ;
2009-05-11 06:40:03 +00:00
m_PhackvalueCB = new wxChoice ( m_PageAdvanced , ID_PHACKVALUE , wxDefaultPosition , wxDefaultSize , arrayStringFor_PhackvalueCB , 0 , wxDefaultValidator ) ;
2010-02-27 16:07:29 +00:00
m_SafeTextureCache = new wxCheckBox ( m_PageAdvanced , ID_SAFETEXTURECACHE , wxT ( " Use Safe texture cache " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_Radio_SafeTextureCache_Safe = new wxRadioButton ( m_PageAdvanced , ID_RADIO_SAFETEXTURECACHE_SAFE , wxT ( " Safe " ) , wxDefaultPosition , wxDefaultSize , wxRB_GROUP ) ;
m_Radio_SafeTextureCache_Normal = new wxRadioButton ( m_PageAdvanced , ID_RADIO_SAFETEXTURECACHE_NORMAL , wxT ( " Normal " ) ) ;
m_Radio_SafeTextureCache_Fast = new wxRadioButton ( m_PageAdvanced , ID_RADIO_SAFETEXTURECACHE_FAST , wxT ( " Fast " ) ) ;
2009-04-10 10:25:53 +00:00
2009-02-19 02:58:29 +00:00
// Sizers
2010-02-27 16:07:29 +00:00
sHacks - > Add ( m_PhackvalueCB , 0 , wxTOP , 0 ) ;
sbHacks = new wxStaticBoxSizer ( wxHORIZONTAL , m_PageAdvanced , wxT ( " Safe Texture Cache " ) ) ;
sbHacks - > Add ( m_SafeTextureCache , 0 , wxALL , 5 ) ;
sbHacks - > AddStretchSpacer ( ) ;
sbHacks - > Add ( m_Radio_SafeTextureCache_Safe , 0 , wxALL , 5 ) ;
sbHacks - > Add ( m_Radio_SafeTextureCache_Normal , 0 , wxALL , 5 ) ;
sbHacks - > Add ( m_Radio_SafeTextureCache_Fast , 0 , wxALL , 5 ) ;
sHacks - > Add ( sbHacks , 0 , wxEXPAND | ( wxTOP ) , 5 ) ;
2009-02-19 02:58:29 +00:00
// Sizers
2008-12-08 05:25:12 +00:00
sAdvanced = new wxBoxSizer ( wxVERTICAL ) ;
sInfo = new wxGridBagSizer ( 0 , 0 ) ;
sInfo - > Add ( m_ShowFPS , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
2009-03-02 19:38:38 +00:00
sInfo - > Add ( m_ShaderErrors , wxGBPosition ( 1 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
sInfo - > Add ( m_Statistics , wxGBPosition ( 2 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
2009-07-26 09:52:35 +00:00
sInfo - > Add ( m_ProjStats , wxGBPosition ( 3 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
sInfo - > Add ( m_ShowEFBCopyRegions , wxGBPosition ( 4 , 0 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
sInfo - > Add ( m_TexFmtOverlay , wxGBPosition ( 5 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sInfo - > Add ( m_TexFmtCenter , wxGBPosition ( 5 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
2008-12-08 05:25:12 +00:00
sbInfo - > Add ( sInfo ) ;
2009-02-19 02:58:29 +00:00
2009-01-13 20:50:51 +00:00
wxBoxSizer * sRenderBoxRow1 = new wxBoxSizer ( wxHORIZONTAL ) ;
2008-12-08 05:25:12 +00:00
sRendering = new wxGridBagSizer ( 0 , 0 ) ;
2009-04-01 12:31:18 +00:00
sRendering - > Add ( m_Wireframe , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 4 ) ;
sRendering - > Add ( m_DisableLighting , wxGBPosition ( 1 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 4 ) ;
sRendering - > Add ( m_DisableTexturing , wxGBPosition ( 2 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 4 ) ;
2010-02-25 06:12:35 +00:00
sRendering - > Add ( m_DstAlphaPass , wxGBPosition ( 3 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 4 ) ;
2009-04-01 12:31:18 +00:00
sRendering - > Add ( m_DisableFog , wxGBPosition ( 4 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 4 ) ;
sRenderBoxRow1 - > Add ( sRendering , 0 , wxALL | wxEXPAND , 1 ) ;
2010-02-06 16:20:54 +00:00
wxStaticBoxSizer * sSBox = new wxStaticBoxSizer ( m_StaticBox_EFB , wxVERTICAL ) ;
wxBoxSizer * sStrip1 = new wxBoxSizer ( wxHORIZONTAL ) ;
sStrip1 - > Add ( m_CheckBox_DisableCopyEFB , 0 , wxALL | wxEXPAND , 5 ) ;
sSBox - > Add ( sStrip1 , 0 , wxALL | wxEXPAND , 0 ) ;
sSBox - > Add ( m_Radio_CopyEFBToRAM , 0 , wxALL | wxEXPAND , 5 ) ;
sSBox - > Add ( m_Radio_CopyEFBToGL , 0 , wxALL | wxEXPAND , 5 ) ;
2009-01-13 20:50:51 +00:00
sRenderBoxRow1 - > Add ( sSBox , 0 , wxALL | wxEXPAND , 5 ) ;
sbRendering - > Add ( sRenderBoxRow1 ) ;
2009-02-19 02:58:29 +00:00
2010-02-25 06:12:35 +00:00
sUtilities = new wxGridBagSizer ( 0 , 0 ) ;
2009-04-19 10:10:45 +00:00
sUtilities - > Add ( m_DumpTextures , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
2009-05-07 07:43:56 +00:00
sUtilities - > Add ( m_HiresTextures , wxGBPosition ( 0 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
sUtilities - > Add ( m_DumpEFBTarget , wxGBPosition ( 0 , 2 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
2009-04-19 10:10:45 +00:00
sUtilities - > Add ( m_DumpFrames , wxGBPosition ( 1 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
2010-02-25 06:12:35 +00:00
sUtilities - > Add ( m_FreeLook , wxGBPosition ( 1 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
2009-02-04 17:33:59 +00:00
sbUtilities - > Add ( sUtilities , 1 , wxEXPAND ) ;
2008-12-08 05:25:12 +00:00
2009-02-19 02:58:29 +00:00
// Sizers
sAdvanced - > Add ( sbInfo , 0 , wxEXPAND | wxALL , 5 ) ;
sAdvanced - > Add ( sbRendering , 0 , wxEXPAND | ( wxLEFT | wxDOWN | wxRIGHT ) , 5 ) ;
sAdvanced - > Add ( sbUtilities , 1 , wxEXPAND | ( wxLEFT | wxDOWN | wxRIGHT ) , 5 ) ;
2010-02-27 16:07:29 +00:00
sAdvanced - > Add ( sHacks , 0 , wxEXPAND | ( wxLEFT | wxDOWN | wxRIGHT ) , 5 ) ;
2009-02-19 02:58:29 +00:00
2008-12-08 05:25:12 +00:00
m_PageAdvanced - > SetSizer ( sAdvanced ) ;
sAdvanced - > Layout ( ) ;
2010-02-06 16:20:54 +00:00
InitializeGUIValues ( ) ;
InitializeGUITooltips ( ) ;
2008-12-08 05:25:12 +00:00
Fit ( ) ;
2010-07-18 20:06:24 +00:00
# ifndef __APPLE__
Center ( ) ; //it seems to cause problems on macs with small screens
# endif
2009-02-19 02:58:29 +00:00
UpdateGUI ( ) ;
2008-12-08 05:25:12 +00:00
}
2009-07-02 17:11:27 +00:00
void GFXConfigDialogOGL : : AboutClick ( wxCommandEvent & WXUNUSED ( event ) )
2008-12-08 05:25:12 +00:00
{
2009-07-30 07:08:31 +00:00
wxMessageBox ( wxT ( " Dolphin OpenGL Plugin \n By zerofrog(@gmail.com) \n \n " )
wxT ( " A card supporting Vertex/Pixel Shader 2.0 or higher, framebuffer objects, " )
wxT ( " and multiple render targets is required in order to use this plugin. " ) ,
wxT ( " Dolphin OGL " ) , wxOK , this ) ;
2008-12-08 05:25:12 +00:00
}
2009-07-02 17:11:27 +00:00
void GFXConfigDialogOGL : : ReloadShaderClick ( wxCommandEvent & WXUNUSED ( event ) )
2009-06-09 19:40:47 +00:00
{
PostProcessing : : ReloadShader ( ) ;
}
2009-07-02 17:11:27 +00:00
void GFXConfigDialogOGL : : EditShaderClick ( wxCommandEvent & WXUNUSED ( event ) )
2009-06-09 19:40:47 +00:00
{
2009-06-09 21:10:14 +00:00
if ( m_PostShaderCB - > GetStringSelection ( ) = = wxT ( " (off) " ) )
2009-06-09 19:40:47 +00:00
return ;
2010-06-11 08:39:03 +00:00
wxString shader = wxString : : From8BitData ( File : : GetUserPath ( D_SHADERS_IDX ) ) + m_PostShaderCB - > GetStringSelection ( ) + _ ( " .txt " ) ;
2009-06-09 19:40:47 +00:00
if ( wxFileExists ( shader ) )
{
wxFileType * filetype = wxTheMimeTypesManager - > GetFileTypeFromExtension ( _ ( " txt " ) ) ;
if ( filetype = = NULL ) // From extension failed, trying with MIME type now
{
filetype = wxTheMimeTypesManager - > GetFileTypeFromMimeType ( _ ( " text/plain " ) ) ;
if ( filetype = = NULL ) // MIME type failed, aborting mission
{
PanicAlert ( " Filetype 'txt' is unknown! Will not open! " ) ;
return ;
}
}
wxString OpenCommand ;
OpenCommand = filetype - > GetOpenCommand ( shader ) ;
if ( OpenCommand . IsEmpty ( ) )
PanicAlert ( " Couldn't find open command for extension 'ini'! " ) ;
else
if ( wxExecute ( OpenCommand , wxEXEC_ASYNC ) = = - 1 )
PanicAlert ( " wxExecute returned -1 on application run! " ) ;
}
}
2009-07-02 17:11:27 +00:00
void GFXConfigDialogOGL : : GeneralSettingsChanged ( wxCommandEvent & event )
2008-12-08 05:25:12 +00:00
{
switch ( event . GetId ( ) )
{
2009-02-28 16:33:59 +00:00
case ID_NATIVERESOLUTION :
g_Config . bNativeResolution = m_NativeResolution - > IsChecked ( ) ;
2009-09-05 05:42:51 +00:00
// Don't allow 1x and 2x at the same time
if ( g_Config . bNativeResolution ) { g_Config . b2xResolution = false ; m_2xResolution - > SetValue ( false ) ; }
break ;
case ID_2X_RESOLUTION :
g_Config . b2xResolution = m_2xResolution - > IsChecked ( ) ;
// Don't allow 1x and 2x at the same time
if ( g_Config . b2xResolution ) { g_Config . bNativeResolution = false ; m_NativeResolution - > SetValue ( false ) ; }
2009-06-08 06:05:09 +00:00
break ;
2009-03-05 23:11:13 +00:00
case ID_VSYNC :
g_Config . bVSync = m_VSync - > IsChecked ( ) ;
break ;
2009-02-28 16:33:59 +00:00
case ID_USEXFB :
g_Config . bUseXFB = m_UseXFB - > IsChecked ( ) ;
break ;
2010-03-10 06:45:13 +00:00
case ID_USEREALXFB :
g_Config . bUseRealXFB = m_UseRealXFB - > IsChecked ( ) ;
break ;
2010-05-04 14:43:30 +00:00
case ID_USENATIVEMIPS :
g_Config . bUseNativeMips = m_UseNativeMips - > IsChecked ( ) ;
break ;
2010-07-21 12:07:24 +00:00
case ID_EFBSCALEDCOPY :
g_Config . bCopyEFBScaled = m_EFBScaledCopy - > IsChecked ( ) ;
break ;
2009-02-28 16:33:59 +00:00
case ID_AUTOSCALE :
g_Config . bAutoScale = m_AutoScale - > IsChecked ( ) ;
2008-12-08 05:25:12 +00:00
break ;
2010-01-13 21:11:02 +00:00
case ID_ASPECT :
g_Config . iAspectRatio = m_KeepAR - > GetSelection ( ) ;
break ;
case ID_WIDESCREENHACK :
g_Config . bWidescreenHack = m_WidescreenHack - > IsChecked ( ) ;
2008-12-08 05:25:12 +00:00
break ;
2009-03-09 20:18:36 +00:00
case ID_CROP :
2010-02-25 06:12:35 +00:00
g_Config . bCrop = m_Crop - > IsChecked ( ) ;
2009-02-25 05:54:36 +00:00
break ;
2009-03-09 20:18:36 +00:00
case ID_FORCEFILTERING :
2010-02-25 06:12:35 +00:00
g_Config . bForceFiltering = m_ForceFiltering - > IsChecked ( ) ;
2009-03-09 20:18:36 +00:00
break ;
2008-12-08 05:25:12 +00:00
case ID_MAXANISOTROPY :
g_Config . iMaxAnisotropy = m_MaxAnisotropyCB - > GetSelection ( ) + 1 ;
break ;
2009-03-08 20:04:40 +00:00
case ID_MSAAMODECB :
g_Config . iMultisampleMode = m_MSAAModeCB - > GetSelection ( ) ;
2008-12-08 05:25:12 +00:00
break ;
2009-05-11 21:20:27 +00:00
case ID_PHACKVALUE :
2009-05-11 06:40:03 +00:00
g_Config . iPhackvalue = m_PhackvalueCB - > GetSelection ( ) ;
2009-05-11 21:20:27 +00:00
if ( g_Config . iPhackvalue > = 0 )
2009-05-11 06:40:03 +00:00
{
2009-06-03 23:38:31 +00:00
g_Config . UpdateProjectionHack ( ) ;
2009-05-11 06:40:03 +00:00
}
break ;
2009-06-09 19:40:47 +00:00
case ID_POSTSHADER :
2009-06-09 21:10:14 +00:00
g_Config . sPostProcessingShader = m_PostShaderCB - > GetString ( m_PostShaderCB - > GetSelection ( ) ) . mb_str ( ) ;
2009-06-09 19:40:47 +00:00
if ( g_Config . sPostProcessingShader = = " (off) " )
g_Config . sPostProcessingShader = " " ;
break ;
2008-12-08 05:25:12 +00:00
}
2009-02-19 02:58:29 +00:00
UpdateGUI ( ) ;
}
2009-07-02 17:11:27 +00:00
void GFXConfigDialogOGL : : AdvancedSettingsChanged ( wxCommandEvent & event )
2008-12-08 05:25:12 +00:00
{
switch ( event . GetId ( ) )
{
case ID_SHOWFPS :
g_Config . bShowFPS = m_ShowFPS - > IsChecked ( ) ;
break ;
case ID_SHADERERRORS :
g_Config . bShowShaderErrors = m_ShaderErrors - > IsChecked ( ) ;
break ;
case ID_STATISTICS :
g_Config . bOverlayStats = m_Statistics - > IsChecked ( ) ;
break ;
case ID_TEXFMTOVERLAY :
g_Config . bTexFmtOverlayEnable = m_TexFmtOverlay - > IsChecked ( ) ;
m_TexFmtCenter - > Enable ( m_TexFmtOverlay - > IsChecked ( ) ) ;
2009-02-22 20:21:56 +00:00
TextureMngr : : Invalidate ( false ) ;
2008-12-08 05:25:12 +00:00
break ;
case ID_TEXFMTCENTER :
g_Config . bTexFmtOverlayCenter = m_TexFmtCenter - > IsChecked ( ) ;
2009-02-22 20:21:56 +00:00
TextureMngr : : Invalidate ( false ) ;
2008-12-08 05:25:12 +00:00
break ;
2009-03-16 07:54:44 +00:00
case ID_SHOWEFBCOPYREGIONS :
g_Config . bShowEFBCopyRegions = m_ShowEFBCopyRegions - > IsChecked ( ) ;
break ;
2008-12-08 05:25:12 +00:00
case ID_WIREFRAME :
g_Config . bWireFrame = m_Wireframe - > IsChecked ( ) ;
break ;
case ID_DISABLELIGHTING :
g_Config . bDisableLighting = m_DisableLighting - > IsChecked ( ) ;
break ;
case ID_DISABLETEXTURING :
g_Config . bDisableTexturing = m_DisableTexturing - > IsChecked ( ) ;
break ;
2009-04-01 12:31:18 +00:00
case ID_DISABLEFOG :
g_Config . bDisableFog = m_DisableFog - > IsChecked ( ) ;
2010-02-25 06:12:35 +00:00
break ;
case ID_DSTALPHAPASS :
2009-03-16 05:04:59 +00:00
g_Config . bDstAlphaPass = m_DstAlphaPass - > IsChecked ( ) ;
break ;
2008-12-08 05:25:12 +00:00
case ID_DUMPTEXTURES :
g_Config . bDumpTextures = m_DumpTextures - > IsChecked ( ) ;
break ;
2009-05-07 07:43:56 +00:00
case ID_HIRESTEXTURES :
g_Config . bHiresTextures = m_HiresTextures - > IsChecked ( ) ;
break ;
2009-03-07 09:29:25 +00:00
case ID_DUMPEFBTARGET :
g_Config . bDumpEFBTarget = m_DumpEFBTarget - > IsChecked ( ) ;
break ;
2009-03-28 21:07:16 +00:00
case ID_DUMPFRAMES :
g_Config . bDumpFrames = m_DumpFrames - > IsChecked ( ) ;
break ;
2010-02-25 06:12:35 +00:00
case ID_FREELOOK :
2009-04-19 10:10:45 +00:00
g_Config . bFreeLook = m_FreeLook - > IsChecked ( ) ;
break ;
2008-12-08 05:25:12 +00:00
case ID_TEXTUREPATH :
break ;
2009-01-13 20:50:51 +00:00
case ID_CHECKBOX_DISABLECOPYEFB :
g_Config . bEFBCopyDisable = m_CheckBox_DisableCopyEFB - > IsChecked ( ) ;
2008-12-08 05:25:12 +00:00
break ;
2009-10-22 19:13:22 +00:00
case ID_OSDHOTKEY :
g_Config . bOSDHotKey = m_OSDHotKey - > IsChecked ( ) ;
2008-12-08 05:25:12 +00:00
break ;
2009-02-19 02:58:29 +00:00
// Hacks
2008-12-08 05:25:12 +00:00
case ID_SAFETEXTURECACHE :
g_Config . bSafeTextureCache = m_SafeTextureCache - > IsChecked ( ) ;
break ;
2010-02-27 16:07:29 +00:00
case ID_RADIO_SAFETEXTURECACHE_SAFE :
g_Config . iSafeTextureCache_ColorSamples = 0 ;
break ;
case ID_RADIO_SAFETEXTURECACHE_NORMAL :
if ( g_Config . iSafeTextureCache_ColorSamples < 512 )
g_Config . iSafeTextureCache_ColorSamples = 512 ;
break ;
case ID_RADIO_SAFETEXTURECACHE_FAST :
if ( g_Config . iSafeTextureCache_ColorSamples > 128 | | g_Config . iSafeTextureCache_ColorSamples = = 0 )
g_Config . iSafeTextureCache_ColorSamples = 128 ;
break ;
2009-05-11 06:40:03 +00:00
case ID_HACK :
g_Config . bHack = m_Hack - > IsChecked ( ) ;
2009-04-10 10:25:53 +00:00
break ;
2009-01-13 20:50:51 +00:00
case ID_RADIO_COPYEFBTORAM :
2010-01-29 07:44:21 +00:00
g_Config . bCopyEFBToTexture = false ;
2009-01-13 20:50:51 +00:00
break ;
case ID_RADIO_COPYEFBTOGL :
2010-01-29 07:44:21 +00:00
g_Config . bCopyEFBToTexture = true ;
2009-01-11 22:25:57 +00:00
break ;
2009-02-15 20:49:59 +00:00
case ID_PROJSTATS :
g_Config . bOverlayProjStats = m_ProjStats - > IsChecked ( ) ;
break ;
2008-12-08 05:25:12 +00:00
default :
break ;
}
2009-02-19 02:58:29 +00:00
UpdateGUI ( ) ;
2008-12-08 05:25:12 +00:00
}
2009-07-26 09:52:35 +00:00
void GFXConfigDialogOGL : : CloseWindow ( )
{
// Save the config to INI
2010-02-02 21:56:29 +00:00
g_Config . Save ( ( std : : string ( File : : GetUserPath ( D_CONFIG_IDX ) ) + " gfx_opengl.ini " ) . c_str ( ) ) ;
2009-07-26 09:52:35 +00:00
EndModal ( 1 ) ;
}
2009-02-19 02:58:29 +00:00
2009-07-02 17:11:27 +00:00
void GFXConfigDialogOGL : : UpdateGUI ( )
2009-02-19 02:58:29 +00:00
{
2009-02-25 05:54:36 +00:00
// This is only used together with the aspect ratio options
2010-01-13 21:11:02 +00:00
m_Crop - > Enable ( g_Config . iAspectRatio ! = ASPECT_STRETCH ) ;
2010-03-10 06:45:13 +00:00
if ( g_Config . bUseRealXFB )
2009-03-08 21:42:27 +00:00
{
2010-03-10 06:45:13 +00:00
// must use XFB to use real XFB
g_Config . bUseXFB = true ;
m_UseXFB - > SetValue ( true ) ;
2009-02-28 16:33:59 +00:00
// XFB looks much better if the copy comes from native resolution.
g_Config . bNativeResolution = true ;
m_NativeResolution - > SetValue ( true ) ;
2010-01-17 14:17:23 +00:00
//also disable 2x, since it might leave both checked.
g_Config . b2xResolution = false ;
m_2xResolution - > SetValue ( false ) ;
2009-02-28 16:33:59 +00:00
}
2010-03-10 06:45:13 +00:00
m_AutoScale - > Enable ( ! g_Config . bUseRealXFB ) ;
m_UseXFB - > Enable ( ! g_Config . bUseRealXFB ) ;
2009-02-20 15:52:17 +00:00
2009-09-06 15:11:21 +00:00
// Resolution settings
2010-01-17 14:17:23 +00:00
//disable native/2x choice when real xfb is on. native simply looks best, as ector noted above.
//besides, it would look odd if one disabled native, and it came back on again.
2010-03-10 06:45:13 +00:00
m_NativeResolution - > Enable ( ! g_Config . bUseRealXFB ) ;
m_2xResolution - > Enable ( ! g_Config . bUseRealXFB & & ( ! g_Config . bRunning | | Renderer : : Allow2x ( ) ) ) ;
2009-08-23 03:14:07 +00:00
2009-09-06 15:11:21 +00:00
// Disable the Copy to options when EFBCopy is disabled
2009-08-23 03:14:07 +00:00
m_Radio_CopyEFBToRAM - > Enable ( ! ( g_Config . bEFBCopyDisable ) ) ;
2010-02-25 06:12:35 +00:00
m_Radio_CopyEFBToGL - > Enable ( ! ( g_Config . bEFBCopyDisable ) ) ;
2010-02-27 16:07:29 +00:00
// Disable/Enable Safe Texture Cache options
m_Radio_SafeTextureCache_Safe - > Enable ( g_Config . bSafeTextureCache ) ;
m_Radio_SafeTextureCache_Normal - > Enable ( g_Config . bSafeTextureCache ) ;
m_Radio_SafeTextureCache_Fast - > Enable ( g_Config . bSafeTextureCache ) ;
2009-02-20 03:49:57 +00:00
}
2009-06-06 13:36:33 +00:00