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/
2010-06-13 19:41:07 +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>
# include "DlgSettings.h"
2008-12-08 05:25:12 +00:00
# include "W32Util/PropertySheet.h"
# include "W32Util/ShellUtil.h"
2010-02-02 21:56:29 +00:00
# include "FileUtil.h"
2008-12-08 05:25:12 +00:00
# include "D3DBase.h"
2010-05-23 02:29:23 +00:00
# include "D3DUtil.h"
2008-12-08 05:25:12 +00:00
2009-09-13 09:23:30 +00:00
# include "VideoConfig.h"
2008-12-08 05:25:12 +00:00
# include "TextureCache.h"
2010-06-13 19:41:07 +00:00
BEGIN_EVENT_TABLE ( GFXConfigDialogDX , wxDialog )
EVT_CLOSE ( GFXConfigDialogDX : : OnClose )
EVT_BUTTON ( ID_CLOSE , GFXConfigDialogDX : : CloseClick )
//Direct3D Tab
EVT_CHECKBOX ( ID_VSYNC , GFXConfigDialogDX : : DirectXSettingsChanged )
EVT_CHECKBOX ( ID_WIDESCREEN_HACK , GFXConfigDialogDX : : DirectXSettingsChanged )
EVT_CHOICE ( ID_ASPECT , GFXConfigDialogDX : : DirectXSettingsChanged )
EVT_CHOICE ( ID_ANTIALIASMODE , GFXConfigDialogDX : : DirectXSettingsChanged )
EVT_CHOICE ( ID_EFBSCALEMODE , GFXConfigDialogDX : : DirectXSettingsChanged )
EVT_CHECKBOX ( ID_EFB_ACCESS_ENABLE , GFXConfigDialogDX : : DirectXSettingsChanged )
EVT_CHECKBOX ( ID_SAFETEXTURECACHE , GFXConfigDialogDX : : DirectXSettingsChanged )
EVT_RADIOBUTTON ( ID_RADIO_SAFETEXTURECACHE_SAFE , GFXConfigDialogDX : : DirectXSettingsChanged )
EVT_RADIOBUTTON ( ID_RADIO_SAFETEXTURECACHE_NORMAL , GFXConfigDialogDX : : DirectXSettingsChanged )
EVT_RADIOBUTTON ( ID_RADIO_SAFETEXTURECACHE_FAST , GFXConfigDialogDX : : DirectXSettingsChanged )
//Enhancements tab
EVT_CHECKBOX ( ID_FORCEFILTERING , GFXConfigDialogDX : : EnhancementsSettingsChanged )
EVT_CHECKBOX ( ID_FORCEANISOTROPY , GFXConfigDialogDX : : EnhancementsSettingsChanged )
EVT_CHECKBOX ( ID_LOADHIRESTEXTURES , GFXConfigDialogDX : : EnhancementsSettingsChanged )
EVT_CHECKBOX ( ID_EFBSCALEDCOPY , GFXConfigDialogDX : : EnhancementsSettingsChanged )
//Advanced Tab
EVT_CHECKBOX ( ID_DISABLEFOG , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_OVERLAYFPS , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_ENABLEEFBCOPY , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_RADIOBUTTON ( ID_EFBTORAM , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_RADIOBUTTON ( ID_EFBTOTEX , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_ENABLEHOTKEY , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_WIREFRAME , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_ENABLEXFB , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_ENABLEREALXFB , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_USENATIVEMIPS , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_TEXDUMP , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_DUMPFRAMES , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_OVERLAYSTATS , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_PROJSTATS , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_SHADERERRORS , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_TEXFMT_OVERLAY , GFXConfigDialogDX : : AdvancedSettingsChanged )
EVT_CHECKBOX ( ID_TEXFMT_CENTER , GFXConfigDialogDX : : AdvancedSettingsChanged )
END_EVENT_TABLE ( )
GFXConfigDialogDX : : GFXConfigDialogDX ( wxWindow * parent , wxWindowID id , const wxString & title , const wxPoint & position , const wxSize & size , long style )
: wxDialog ( parent , id , title , position , size , style )
2008-12-08 05:25:12 +00:00
{
2010-06-13 19:41:07 +00:00
}
// Close and unload the window
// ---------------
GFXConfigDialogDX : : ~ GFXConfigDialogDX ( )
{
INFO_LOG ( CONSOLE , " GFXConfigDialogDX Closed " ) ;
}
void GFXConfigDialogDX : : OnClose ( wxCloseEvent & event )
{
//INFO_LOG(CONSOLE, "OnClose");
CloseWindow ( ) ;
}
void GFXConfigDialogDX : : CloseClick ( wxCommandEvent & WXUNUSED ( event ) )
{
//INFO_LOG(CONSOLE, "CloseClick");
CloseWindow ( ) ;
}
void GFXConfigDialogDX : : InitializeGUIValues ( )
{
// General Display Settings
m_AdapterCB - > SetSelection ( g_Config . iAdapter ) ;
m_VSync - > SetValue ( g_Config . bVSync ) ;
m_WidescreenHack - > SetValue ( g_Config . bWidescreenHack ) ;
m_KeepAR - > SetSelection ( g_Config . iAspectRatio ) ;
m_MSAAModeCB - > SetSelection ( g_Config . iMultisampleMode ) ;
m_EFBScaleMode - > SetSelection ( g_Config . iEFBScale ) ;
m_EnableEFBAccess - > SetValue ( g_Config . bEFBAccessEnable ) ;
m_SafeTextureCache - > SetValue ( g_Config . bSafeTextureCache ) ;
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 ) ;
2010-02-26 12:54:08 +00:00
else
2010-06-13 19:41:07 +00:00
m_Radio_SafeTextureCache_Fast - > SetValue ( true ) ;
// Enhancements
if ( g_Config . iMaxAnisotropy = = 1 )
m_MaxAnisotropy - > SetValue ( false ) ;
else
2008-12-08 05:25:12 +00:00
{
2010-06-13 19:41:07 +00:00
if ( g_Config . iMaxAnisotropy = = 8 )
m_MaxAnisotropy - > SetValue ( true ) ;
2008-12-08 05:25:12 +00:00
}
2010-06-13 19:41:07 +00:00
m_ForceFiltering - > SetValue ( g_Config . bForceFiltering ) ;
m_HiresTextures - > SetValue ( g_Config . bHiresTextures ) ;
m_MSAAModeCB - > SetSelection ( g_Config . iMultisampleMode ) ;
m_EFBScaledCopy - > SetValue ( g_Config . bCopyEFBScaled ) ;
//Advance
m_DisableFog - > SetValue ( g_Config . bDisableFog ) ;
m_OverlayFPS - > SetValue ( g_Config . bShowFPS ) ;
m_CopyEFB - > SetValue ( ! g_Config . bEFBCopyDisable ) ;
g_Config . bCopyEFBToTexture ? m_Radio_CopyEFBToGL - > SetValue ( true ) : m_Radio_CopyEFBToRAM - > SetValue ( true ) ;
m_EnableHotkeys - > SetValue ( g_Config . bOSDHotKey ) ;
m_WireFrame - > SetValue ( g_Config . bWireFrame ) ;
m_EnableXFB - > SetValue ( g_Config . bUseXFB ) ;
m_EnableRealXFB - > SetValue ( g_Config . bUseRealXFB ) ;
m_UseNativeMips - > SetValue ( g_Config . bUseNativeMips ) ;
m_DumpTextures - > SetValue ( g_Config . bDumpTextures ) ;
m_DumpFrames - > SetValue ( g_Config . bDumpFrames ) ;
m_OverlayStats - > SetValue ( g_Config . bOverlayStats ) ;
m_ProjStats - > SetValue ( g_Config . bOverlayProjStats ) ;
m_ShaderErrors - > SetValue ( g_Config . bShowShaderErrors ) ;
m_TexfmtOverlay - > SetValue ( g_Config . bTexFmtOverlayEnable ) ;
m_TexfmtCenter - > SetValue ( g_Config . bTexFmtOverlayCenter ) ;
m_TexfmtCenter - > Enable ( m_TexfmtOverlay - > IsChecked ( ) ) ;
}
void GFXConfigDialogDX : : CreateGUIControls ( )
{
this - > SetSizeHints ( wxDefaultSize , wxDefaultSize ) ;
this - > SetBackgroundColour ( wxSystemSettings : : GetColour ( wxSYS_COLOUR_BTNFACE ) ) ;
wxBoxSizer * sMain ;
sMain = new wxBoxSizer ( wxVERTICAL ) ;
m_Notebook = new wxNotebook ( this , ID_NOTEBOOK , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_PageDirect3D = new wxPanel ( m_Notebook , ID_DIRERCT3D , wxDefaultPosition , wxDefaultSize , wxTAB_TRAVERSAL ) ;
m_PageEnhancements = new wxPanel ( m_Notebook , ID_PAGEENHANCEMENTS , wxDefaultPosition , wxDefaultSize , wxTAB_TRAVERSAL ) ;
m_PageAdvanced = new wxPanel ( m_Notebook , ID_PAGEADVANCED , wxDefaultPosition , wxDefaultSize , wxTAB_TRAVERSAL ) ;
//D3D Tab
wxStaticBoxSizer * sbBasic ;
sbBasic = new wxStaticBoxSizer ( new wxStaticBox ( m_PageDirect3D , wxID_ANY , wxT ( " Basic " ) ) , wxVERTICAL ) ;
m_AdapterText = new wxStaticText ( m_PageDirect3D , wxID_ANY , wxT ( " Adapter: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_AdapterText - > Wrap ( - 1 ) ;
wxArrayString arrayStringFor_AdapterCB ;
for ( int i = 0 ; i < D3D : : GetNumAdapters ( ) ; + + i )
2010-05-23 02:29:23 +00:00
{
2010-06-13 19:41:07 +00:00
const D3D : : Adapter & adapter = D3D : : GetAdapter ( i ) ;
arrayStringFor_AdapterCB . Add ( wxString : : FromAscii ( adapter . ident . Description ) ) ;
}
const D3D : : Adapter & adapter = D3D : : GetAdapter ( g_Config . iAdapter ) ;
m_AdapterCB = new wxChoice ( m_PageDirect3D , ID_ADAPTER , wxDefaultPosition , wxDefaultSize , arrayStringFor_AdapterCB , 0 ) ;
m_VSync = new wxCheckBox ( m_PageDirect3D , ID_VSYNC , wxT ( " Vsync " ) , wxPoint ( - 1 , - 1 ) , wxDefaultSize , 0 ) ;
m_WidescreenHack = new wxCheckBox ( m_PageDirect3D , ID_WIDESCREEN_HACK , wxT ( " Widescreen Hack " ) , wxPoint ( - 1 , - 1 ) , wxDefaultSize , 0 ) ;
m_staticARText = new wxStaticText ( m_PageDirect3D , wxID_ANY , wxT ( " Aspect Ratio: " ) , wxPoint ( - 1 , - 1 ) , wxDefaultSize , 0 ) ;
m_staticARText - > Wrap ( - 1 ) ;
wxString m_KeepARChoices [ ] = { wxT ( " Auto " ) , wxT ( " Force 16:9 Widescreen " ) , wxT ( " Force 4:3 Standart " ) , wxT ( " Stretch to Window " ) } ;
int m_KeepARNChoices = sizeof ( m_KeepARChoices ) / sizeof ( wxString ) ;
m_KeepAR = new wxChoice ( m_PageDirect3D , ID_ASPECT , wxPoint ( - 1 , - 1 ) , wxDefaultSize , m_KeepARNChoices , m_KeepARChoices , 0 ) ;
m_KeepAR - > SetSelection ( 0 ) ;
m_staticMSAAText = new wxStaticText ( m_PageDirect3D , wxID_ANY , wxT ( " SSAA mode: " ) , wxPoint ( - 1 , - 1 ) , wxDefaultSize , 0 ) ;
m_staticMSAAText - > Wrap ( - 1 ) ;
wxArrayString arrayStringFor_MSAAModeCB ;
for ( int i = 0 ; i < ( int ) adapter . aa_levels . size ( ) ; i + + )
2008-12-08 05:25:12 +00:00
{
2010-06-13 19:41:07 +00:00
arrayStringFor_MSAAModeCB . Add ( wxString : : FromAscii ( adapter . aa_levels [ i ] . name ) ) ;
2008-12-08 05:25:12 +00:00
}
2010-06-13 19:41:07 +00:00
m_MSAAModeCB = new wxChoice ( m_PageDirect3D , ID_ANTIALIASMODE , wxPoint ( - 1 , - 1 ) , wxDefaultSize , arrayStringFor_MSAAModeCB , 0 ) ;
m_EFBScaleText = new wxStaticText ( m_PageDirect3D , wxID_ANY , wxT ( " EFB Scale: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_EFBScaleText - > Wrap ( - 1 ) ;
wxString m_EFBScaleModeChoices [ ] = { wxT ( " Auto (Fractional) " ) , wxT ( " Auto (Integral) " ) , wxT ( " 1x " ) , wxT ( " 2x " ) , wxT ( " 3x " ) } ;
int m_EFBScaleModeNChoices = sizeof ( m_EFBScaleModeChoices ) / sizeof ( wxString ) ;
m_EFBScaleMode = new wxChoice ( m_PageDirect3D , ID_EFBSCALEMODE , wxDefaultPosition , wxDefaultSize , m_EFBScaleModeNChoices , m_EFBScaleModeChoices , 0 ) ;
m_EnableEFBAccess = new wxCheckBox ( m_PageDirect3D , ID_EFB_ACCESS_ENABLE , wxT ( " Enable CPU->EFB access " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
wxStaticBoxSizer * sbSTC ;
sbSTC = new wxStaticBoxSizer ( new wxStaticBox ( m_PageDirect3D , wxID_ANY , wxT ( " Safe Texture Cache " ) ) , wxVERTICAL ) ;
m_SafeTextureCache = new wxCheckBox ( m_PageDirect3D , ID_SAFETEXTURECACHE , wxT ( " Use Safe Texture Cache " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_Radio_SafeTextureCache_Safe = new wxRadioButton ( m_PageDirect3D , ID_RADIO_SAFETEXTURECACHE_SAFE , wxT ( " Safe " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_Radio_SafeTextureCache_Normal = new wxRadioButton ( m_PageDirect3D , ID_RADIO_SAFETEXTURECACHE_NORMAL , wxT ( " Normal " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_Radio_SafeTextureCache_Fast = new wxRadioButton ( m_PageDirect3D , ID_RADIO_SAFETEXTURECACHE_FAST , wxT ( " Fast " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
// Sizers
wxGridBagSizer * sBasic ;
wxBoxSizer * sGeneral ;
sGeneral = new wxBoxSizer ( wxVERTICAL ) ;
sBasic = new wxGridBagSizer ( 0 , 0 ) ;
sBasic - > SetFlexibleDirection ( wxBOTH ) ;
sBasic - > SetNonFlexibleGrowMode ( wxFLEX_GROWMODE_SPECIFIED ) ;
sBasic - > Add ( m_AdapterText , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sBasic - > Add ( m_AdapterCB , wxGBPosition ( 0 , 1 ) , wxGBSpan ( 1 , 2 ) , wxALL | wxEXPAND , 5 ) ;
sBasic - > Add ( m_VSync , wxGBPosition ( 1 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
sBasic - > Add ( m_WidescreenHack , wxGBPosition ( 1 , 2 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sBasic - > Add ( m_staticARText , wxGBPosition ( 2 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
sBasic - > Add ( m_KeepAR , wxGBPosition ( 2 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sBasic - > Add ( m_staticMSAAText , wxGBPosition ( 3 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL | wxALIGN_CENTER_VERTICAL , 5 ) ;
sBasic - > Add ( m_MSAAModeCB , wxGBPosition ( 3 , 1 ) , wxGBSpan ( 1 , 2 ) , wxALL , 5 ) ;
sBasic - > Add ( m_EFBScaleText , wxGBPosition ( 4 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sBasic - > Add ( m_EFBScaleMode , wxGBPosition ( 4 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sBasic - > Add ( m_EnableEFBAccess , wxGBPosition ( 5 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sbBasic - > Add ( sBasic , 0 , 0 , 5 ) ;
sGeneral - > Add ( sbBasic , 0 , wxEXPAND | wxALL , 5 ) ;
wxGridBagSizer * sSTC ;
sSTC = new wxGridBagSizer ( 0 , 0 ) ;
sSTC - > SetFlexibleDirection ( wxBOTH ) ;
sSTC - > SetNonFlexibleGrowMode ( wxFLEX_GROWMODE_SPECIFIED ) ;
sSTC - > Add ( m_SafeTextureCache , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sSTC - > Add ( 0 , 0 , wxGBPosition ( 0 , 1 ) , wxGBSpan ( 1 , 1 ) , wxEXPAND , 5 ) ;
sSTC - > Add ( m_Radio_SafeTextureCache_Safe , wxGBPosition ( 0 , 2 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sSTC - > Add ( m_Radio_SafeTextureCache_Normal , wxGBPosition ( 0 , 3 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sSTC - > Add ( m_Radio_SafeTextureCache_Fast , wxGBPosition ( 0 , 4 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sbSTC - > Add ( sSTC , 0 , wxEXPAND , 5 ) ;
sGeneral - > Add ( sbSTC , 0 , wxEXPAND | wxALL , 5 ) ;
m_PageDirect3D - > SetSizer ( sGeneral ) ;
m_PageDirect3D - > Layout ( ) ;
sGeneral - > Fit ( m_PageDirect3D ) ;
m_Notebook - > AddPage ( m_PageDirect3D , wxT ( " Direct3D " ) , true ) ;
//Enhancements Tab
wxStaticBoxSizer * sbTextureFilter ;
sbTextureFilter = new wxStaticBoxSizer ( new wxStaticBox ( m_PageEnhancements , wxID_ANY , wxT ( " Texture Filtering " ) ) , wxVERTICAL ) ;
m_ForceFiltering = new wxCheckBox ( m_PageEnhancements , ID_FORCEFILTERING , wxT ( " Force bi/trilinear filtering (Breaks video in several Wii games ) " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_MaxAnisotropy = new wxCheckBox ( m_PageEnhancements , ID_FORCEANISOTROPY , wxT ( " Enable 16x Anisotropy filtering " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_HiresTextures = new wxCheckBox ( m_PageEnhancements , ID_LOADHIRESTEXTURES , wxT ( " Enable hires Texture loading " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
wxStaticBoxSizer * sbEFBHacks ;
sbEFBHacks = new wxStaticBoxSizer ( new wxStaticBox ( m_PageEnhancements , wxID_ANY , wxT ( " EFB Hacks " ) ) , wxVERTICAL ) ;
m_EFBScaledCopy = new wxCheckBox ( m_PageEnhancements , ID_EFBSCALEDCOPY , wxT ( " EFB Scaled Copy " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
// Sizers
wxBoxSizer * sEnhancements ;
wxGridBagSizer * sTextureFilter ;
sEnhancements = new wxBoxSizer ( wxVERTICAL ) ;
sTextureFilter = new wxGridBagSizer ( 0 , 0 ) ;
sTextureFilter - > SetFlexibleDirection ( wxBOTH ) ;
sTextureFilter - > SetNonFlexibleGrowMode ( wxFLEX_GROWMODE_SPECIFIED ) ;
sTextureFilter - > Add ( m_ForceFiltering , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sTextureFilter - > Add ( m_MaxAnisotropy , wxGBPosition ( 1 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sTextureFilter - > Add ( m_HiresTextures , wxGBPosition ( 2 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sbTextureFilter - > Add ( sTextureFilter , 0 , wxEXPAND , 5 ) ;
sEnhancements - > Add ( sbTextureFilter , 0 , wxEXPAND | wxALL , 5 ) ;
wxGridBagSizer * sEFBHacks ;
sEFBHacks = new wxGridBagSizer ( 0 , 0 ) ;
sEFBHacks - > SetFlexibleDirection ( wxBOTH ) ;
sEFBHacks - > SetNonFlexibleGrowMode ( wxFLEX_GROWMODE_SPECIFIED ) ;
sEFBHacks - > Add ( m_EFBScaledCopy , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sbEFBHacks - > Add ( sEFBHacks , 1 , wxEXPAND , 5 ) ;
sEnhancements - > Add ( sbEFBHacks , 0 , wxEXPAND | wxALL , 5 ) ;
m_PageEnhancements - > SetSizer ( sEnhancements ) ;
m_PageEnhancements - > Layout ( ) ;
sEnhancements - > Fit ( m_PageEnhancements ) ;
m_Notebook - > AddPage ( m_PageEnhancements , wxT ( " Enhancements " ) , false ) ;
//Advanced Tab
wxStaticBoxSizer * sbSettings ;
sbSettings = new wxStaticBoxSizer ( new wxStaticBox ( m_PageAdvanced , wxID_ANY , wxT ( " Settings " ) ) , wxVERTICAL ) ;
m_DisableFog = new wxCheckBox ( m_PageAdvanced , ID_DISABLEFOG , wxT ( " Disable Fog " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_OverlayFPS = new wxCheckBox ( m_PageAdvanced , ID_OVERLAYFPS , wxT ( " Overlay FPS Counter " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_CopyEFB = new wxCheckBox ( m_PageAdvanced , ID_ENABLEEFBCOPY , wxT ( " Enable EFB Copy " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_EnableHotkeys = new wxCheckBox ( m_PageAdvanced , ID_ENABLEHOTKEY , wxT ( " Enable Hotkey " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_Radio_CopyEFBToRAM = new wxRadioButton ( m_PageAdvanced , ID_EFBTORAM , wxT ( " To Ram " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_Radio_CopyEFBToGL = new wxRadioButton ( m_PageAdvanced , ID_EFBTOTEX , wxT ( " To Texture " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_WireFrame = new wxCheckBox ( m_PageAdvanced , ID_WIREFRAME , wxT ( " Enable Wireframe " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_EnableRealXFB = new wxCheckBox ( m_PageAdvanced , ID_ENABLEREALXFB , wxT ( " Enable Real XFB " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_EnableXFB = new wxCheckBox ( m_PageAdvanced , ID_ENABLEXFB , wxT ( " Enable XFB " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_UseNativeMips = new wxCheckBox ( m_PageAdvanced , ID_USENATIVEMIPS , wxT ( " Use Native Mips " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
wxStaticBoxSizer * sbDataDumping ;
sbDataDumping = new wxStaticBoxSizer ( new wxStaticBox ( m_PageAdvanced , wxID_ANY , wxT ( " Data Dumping " ) ) , wxVERTICAL ) ;
m_DumpTextures = new wxCheckBox ( m_PageAdvanced , ID_TEXDUMP , wxT ( " Dump Textures " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_DumpFrames = new wxCheckBox ( m_PageAdvanced , ID_DUMPFRAMES , wxT ( " Dump Frames To User/Dump/Frames " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
wxStaticBoxSizer * sbDebuggingTools ;
sbDebuggingTools = new wxStaticBoxSizer ( new wxStaticBox ( m_PageAdvanced , wxID_ANY , wxT ( " Debugging tools " ) ) , wxVERTICAL ) ;
m_OverlayStats = new wxCheckBox ( m_PageAdvanced , ID_OVERLAYSTATS , wxT ( " Overlay Some Statics " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_ShaderErrors = new wxCheckBox ( m_PageAdvanced , ID_SHADERERRORS , wxT ( " Show Shader Compilation Errors " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_ShaderErrors - > Enable ( false ) ;
m_TexfmtOverlay = new wxCheckBox ( m_PageAdvanced , ID_TEXFMT_OVERLAY , wxT ( " Enable TexFmt Overlay " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_TexfmtCenter = new wxCheckBox ( m_PageAdvanced , ID_TEXFMT_CENTER , wxT ( " Centered " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_ProjStats = new wxCheckBox ( m_PageAdvanced , wxID_ANY , wxT ( " Overlay Projection Stats " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
// Sizers
wxBoxSizer * sAdvanced ;
sAdvanced = new wxBoxSizer ( wxVERTICAL ) ;
wxGridBagSizer * sSettings ;
sSettings = new wxGridBagSizer ( 0 , 0 ) ;
sSettings - > SetFlexibleDirection ( wxBOTH ) ;
sSettings - > SetNonFlexibleGrowMode ( wxFLEX_GROWMODE_SPECIFIED ) ;
sSettings - > Add ( m_DisableFog , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sSettings - > Add ( m_OverlayFPS , wxGBPosition ( 0 , 1 ) , wxGBSpan ( 1 , 1 ) , wxEXPAND | wxLEFT , 20 ) ;
sSettings - > Add ( m_CopyEFB , wxGBPosition ( 1 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sSettings - > Add ( m_EnableHotkeys , wxGBPosition ( 1 , 1 ) , wxGBSpan ( 1 , 1 ) , wxEXPAND | wxLEFT , 20 ) ;
sSettings - > Add ( m_Radio_CopyEFBToRAM , wxGBPosition ( 2 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxLEFT , 10 ) ;
sSettings - > Add ( m_Radio_CopyEFBToGL , wxGBPosition ( 3 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALIGN_CENTER_VERTICAL | wxLEFT | wxTOP , 10 ) ;
sSettings - > Add ( m_WireFrame , wxGBPosition ( 2 , 1 ) , wxGBSpan ( 1 , 1 ) , wxEXPAND | wxLEFT , 20 ) ;
sSettings - > Add ( m_EnableRealXFB , wxGBPosition ( 4 , 1 ) , wxGBSpan ( 1 , 1 ) , wxEXPAND | wxLEFT , 20 ) ;
sSettings - > Add ( m_EnableXFB , wxGBPosition ( 4 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sSettings - > Add ( m_UseNativeMips , wxGBPosition ( 5 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sbSettings - > Add ( sSettings , 0 , wxEXPAND , 5 ) ;
sAdvanced - > Add ( sbSettings , 0 , wxEXPAND | wxALL , 5 ) ;
wxGridBagSizer * sDataDumping ;
sDataDumping = new wxGridBagSizer ( 0 , 0 ) ;
sDataDumping - > SetFlexibleDirection ( wxBOTH ) ;
sDataDumping - > SetNonFlexibleGrowMode ( wxFLEX_GROWMODE_SPECIFIED ) ;
sDataDumping - > Add ( m_DumpTextures , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sDataDumping - > Add ( m_DumpFrames , wxGBPosition ( 1 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sbDataDumping - > Add ( sDataDumping , 0 , wxEXPAND , 5 ) ;
sAdvanced - > Add ( sbDataDumping , 0 , wxEXPAND | wxALL , 5 ) ;
wxGridBagSizer * sDebuggingTools ;
sDebuggingTools = new wxGridBagSizer ( 0 , 0 ) ;
sDebuggingTools - > SetFlexibleDirection ( wxBOTH ) ;
sDebuggingTools - > SetNonFlexibleGrowMode ( wxFLEX_GROWMODE_SPECIFIED ) ;
sDebuggingTools - > Add ( m_OverlayStats , wxGBPosition ( 0 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sDebuggingTools - > Add ( m_ShaderErrors , wxGBPosition ( 1 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sDebuggingTools - > Add ( m_TexfmtOverlay , wxGBPosition ( 2 , 0 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sDebuggingTools - > Add ( m_TexfmtCenter , wxGBPosition ( 2 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sDebuggingTools - > Add ( m_ProjStats , wxGBPosition ( 0 , 1 ) , wxGBSpan ( 1 , 1 ) , wxALL , 5 ) ;
sbDebuggingTools - > Add ( sDebuggingTools , 0 , wxEXPAND , 5 ) ;
sAdvanced - > Add ( sbDebuggingTools , 0 , wxEXPAND | wxALL , 5 ) ;
m_PageAdvanced - > SetSizer ( sAdvanced ) ;
m_PageAdvanced - > Layout ( ) ;
sAdvanced - > Fit ( m_PageAdvanced ) ;
m_Notebook - > AddPage ( m_PageAdvanced , wxT ( " Advanced " ) , false ) ;
sMain - > Add ( m_Notebook , 1 , wxALL | wxEXPAND , 5 ) ;
//Buttons
wxBoxSizer * sButtons ;
sButtons = new wxBoxSizer ( wxVERTICAL ) ;
m_Close = new wxButton ( this , ID_CLOSE , wxT ( " Close " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
sButtons - > Add ( m_Close , 0 , wxALL | wxEXPAND , 5 ) ;
sMain - > Add ( sButtons , 0 , wxALIGN_RIGHT , 5 ) ;
this - > SetSizer ( sMain ) ;
this - > Layout ( ) ;
InitializeGUIValues ( ) ;
Fit ( ) ;
Center ( ) ;
UpdateGUI ( ) ;
}
void GFXConfigDialogDX : : DirectXSettingsChanged ( wxCommandEvent & event )
2008-12-08 05:25:12 +00:00
{
2010-06-13 19:41:07 +00:00
switch ( event . GetId ( ) )
2008-12-08 05:25:12 +00:00
{
2010-06-13 19:41:07 +00:00
case ID_ADAPTER :
g_Config . iAdapter = m_AdapterCB - > GetSelection ( ) ;
break ;
case ID_VSYNC :
g_Config . bVSync = m_VSync - > IsChecked ( ) ;
break ;
case ID_WIDESCREEN_HACK :
g_Config . bWidescreenHack = m_WidescreenHack - > IsChecked ( ) ;
break ;
case ID_ASPECT :
g_Config . iAspectRatio = m_KeepAR - > GetSelection ( ) ;
break ;
case ID_ANTIALIASMODE :
g_Config . iMultisampleMode = m_MSAAModeCB - > GetSelection ( ) ;
break ;
case ID_EFBSCALEMODE :
g_Config . iEFBScale = m_EFBScaleMode - > GetSelection ( ) ;
break ;
case ID_EFB_ACCESS_ENABLE :
g_Config . bEFBAccessEnable = m_EnableEFBAccess - > IsChecked ( ) ;
break ;
case ID_SAFETEXTURECACHE :
g_Config . bSafeTextureCache = m_SafeTextureCache - > IsChecked ( ) ;
break ;
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 ;
2008-12-08 05:25:12 +00:00
}
2010-06-13 19:41:07 +00:00
UpdateGUI ( ) ;
}
2008-12-08 05:25:12 +00:00
2010-06-13 19:41:07 +00:00
void GFXConfigDialogDX : : EnhancementsSettingsChanged ( wxCommandEvent & event )
2008-12-08 05:25:12 +00:00
{
2010-06-13 19:41:07 +00:00
switch ( event . GetId ( ) )
2008-12-08 05:25:12 +00:00
{
2010-06-13 19:41:07 +00:00
case ID_FORCEFILTERING :
g_Config . bForceFiltering = m_ForceFiltering - > IsChecked ( ) ;
break ;
case ID_FORCEANISOTROPY :
g_Config . iMaxAnisotropy = m_MaxAnisotropy - > IsChecked ( ) ? 8 : 1 ;
break ;
case ID_LOADHIRESTEXTURES :
g_Config . bHiresTextures = m_HiresTextures - > IsChecked ( ) ;
break ;
case ID_EFBSCALEDCOPY :
g_Config . bCopyEFBScaled = m_EFBScaledCopy - > IsChecked ( ) ;
break ;
2008-12-08 05:25:12 +00:00
}
2010-06-13 19:41:07 +00:00
UpdateGUI ( ) ;
}
void GFXConfigDialogDX : : AdvancedSettingsChanged ( wxCommandEvent & event )
{
switch ( event . GetId ( ) )
2008-12-08 05:25:12 +00:00
{
2010-06-13 19:41:07 +00:00
case ID_DISABLEFOG :
g_Config . bDisableFog = m_DisableFog - > IsChecked ( ) ;
break ;
case ID_OVERLAYFPS :
g_Config . bShowFPS = m_OverlayFPS - > IsChecked ( ) ;
break ;
case ID_ENABLEEFBCOPY :
g_Config . bEFBCopyDisable = ! m_CopyEFB - > IsChecked ( ) ;
break ;
case ID_EFBTORAM :
g_Config . bCopyEFBToTexture = false ;
break ;
case ID_EFBTOTEX :
g_Config . bCopyEFBToTexture = true ;
break ;
case ID_ENABLEHOTKEY :
g_Config . bOSDHotKey = m_EnableHotkeys - > IsChecked ( ) ;
break ;
case ID_WIREFRAME :
g_Config . bWireFrame = m_WireFrame - > IsChecked ( ) ;
break ;
case ID_ENABLEXFB :
g_Config . bUseXFB = m_EnableXFB - > IsChecked ( ) ;
break ;
case ID_ENABLEREALXFB :
g_Config . bUseRealXFB = m_EnableRealXFB - > IsChecked ( ) ;
break ;
case ID_USENATIVEMIPS :
g_Config . bUseNativeMips = m_UseNativeMips - > IsChecked ( ) ;
break ;
case ID_TEXDUMP :
g_Config . bDumpTextures = m_DumpTextures - > IsChecked ( ) ;
break ;
case ID_DUMPFRAMES :
g_Config . bDumpFrames = m_DumpFrames - > IsChecked ( ) ;
break ;
case ID_OVERLAYSTATS :
g_Config . bOverlayStats = m_OverlayStats - > IsChecked ( ) ;
break ;
case ID_PROJSTATS :
g_Config . bOverlayProjStats = m_ProjStats - > IsChecked ( ) ;
break ;
case ID_SHADERERRORS :
g_Config . bShowShaderErrors = m_ShaderErrors - > IsChecked ( ) ;
break ;
case ID_TEXFMT_OVERLAY :
g_Config . bTexFmtOverlayEnable = m_TexfmtOverlay - > IsChecked ( ) ;
break ;
case ID_TEXFMT_CENTER :
g_Config . bTexFmtOverlayCenter = m_TexfmtCenter - > IsChecked ( ) ;
break ;
2008-12-08 05:25:12 +00:00
}
2010-06-13 19:41:07 +00:00
UpdateGUI ( ) ;
}
2008-12-08 05:25:12 +00:00
2010-06-13 19:41:07 +00:00
void GFXConfigDialogDX : : CloseWindow ( )
{
// Save the config to INI
g_Config . Save ( ( std : : string ( File : : GetUserPath ( D_CONFIG_IDX ) ) + " gfx_dx9.ini " ) . c_str ( ) ) ;
EndModal ( 1 ) ;
}
2008-12-08 05:25:12 +00:00
2010-06-13 19:41:07 +00:00
void GFXConfigDialogDX : : UpdateGUI ( )
2008-12-08 05:25:12 +00:00
{
2010-06-13 19:41:07 +00:00
if ( g_Config . bUseRealXFB )
2008-12-08 05:25:12 +00:00
{
2010-06-13 19:41:07 +00:00
// must use XFB to use real XFB
g_Config . bUseXFB = true ;
m_EnableXFB - > SetValue ( true ) ;
2008-12-08 05:25:12 +00:00
}
2010-06-13 19:41:07 +00:00
m_EnableXFB - > Enable ( ! g_Config . bUseRealXFB ) ;
m_TexfmtCenter - > Enable ( g_Config . bTexFmtOverlayEnable ) ;
// Disable the Copy to options when EFBCopy is disabled
m_Radio_CopyEFBToRAM - > Enable ( ! g_Config . bEFBCopyDisable ) ;
m_Radio_CopyEFBToGL - > Enable ( ! g_Config . bEFBCopyDisable ) ;
// 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 ) ;
2010-02-02 21:56:29 +00:00
}