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/
# include "Config.h"
# include "ConfigDlg.h"
2009-07-05 14:46:05 +00:00
BEGIN_EVENT_TABLE ( DSPConfigDialogHLE , wxDialog )
EVT_BUTTON ( wxID_OK , DSPConfigDialogHLE : : SettingsChanged )
EVT_CHECKBOX ( ID_ENABLE_HLE_AUDIO , DSPConfigDialogHLE : : SettingsChanged )
EVT_CHECKBOX ( ID_ENABLE_DTK_MUSIC , DSPConfigDialogHLE : : SettingsChanged )
EVT_CHECKBOX ( ID_ENABLE_THROTTLE , DSPConfigDialogHLE : : SettingsChanged )
EVT_CHECKBOX ( ID_ENABLE_RE0_FIX , DSPConfigDialogHLE : : SettingsChanged )
2009-11-28 11:40:04 +00:00
EVT_CHECKBOX ( ID_ENABLE_LOOP_FIX , DSPConfigDialogHLE : : SettingsChanged )
2009-07-05 14:46:05 +00:00
EVT_COMMAND_SCROLL ( ID_VOLUME , DSPConfigDialogHLE : : VolumeChanged )
2009-01-17 21:42:43 +00:00
END_EVENT_TABLE ( )
2009-07-02 19:00:27 +00:00
DSPConfigDialogHLE : : DSPConfigDialogHLE ( wxWindow * parent , wxWindowID id , const wxString & title , const wxPoint & position , const wxSize & size , long style )
2009-01-17 21:42:43 +00:00
: wxDialog ( parent , id , title , position , size , style )
2008-12-08 05:25:12 +00:00
{
// Center window
2009-01-17 21:42:43 +00:00
CenterOnParent ( ) ;
m_OK = new wxButton ( this , wxID_OK , wxT ( " OK " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2008-12-08 05:25:12 +00:00
2009-01-17 21:42:43 +00:00
// Create items
m_buttonEnableHLEAudio = new wxCheckBox ( this , ID_ENABLE_HLE_AUDIO , wxT ( " Enable HLE Audio " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_buttonEnableDTKMusic = new wxCheckBox ( this , ID_ENABLE_DTK_MUSIC , wxT ( " Enable DTK Music " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_buttonEnableThrottle = new wxCheckBox ( this , ID_ENABLE_THROTTLE , wxT ( " Enable Other Audio (Throttle) " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-11-28 11:40:04 +00:00
m_buttonEnableRE0Fix = new wxCheckBox ( this , ID_ENABLE_RE0_FIX , wxT ( " Enable RE0 Audio Hack " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_buttonEnableLoopFix = new wxCheckBox ( this , ID_ENABLE_LOOP_FIX , wxT ( " Enable Loop Audio Hack " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2009-01-29 00:57:55 +00:00
wxStaticText * BackendText = new wxStaticText ( this , wxID_ANY , wxT ( " Audio Backend " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
2009-05-18 19:24:46 +00:00
m_BackendSelection = new wxComboBox ( this , ID_BACKEND , wxEmptyString , wxDefaultPosition , wxSize ( 90 , 20 ) , wxArrayBackends , wxCB_READONLY , wxDefaultValidator ) ;
m_volumeSlider = new wxSlider ( this , ID_VOLUME , ac_Config . m_Volume , 1 , 100 , wxDefaultPosition , wxDefaultSize , wxSL_VERTICAL | wxSL_INVERSE ) ;
m_volumeText = new wxStaticText ( this , wxID_ANY , wxString : : Format ( wxT ( " %d %% " ) , ac_Config . m_Volume ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
2008-12-08 05:25:12 +00:00
2009-01-29 00:57:55 +00:00
// Update values
2009-01-17 21:42:43 +00:00
m_buttonEnableHLEAudio - > SetValue ( g_Config . m_EnableHLEAudio ? true : false ) ;
2009-03-30 09:55:50 +00:00
m_buttonEnableDTKMusic - > SetValue ( ac_Config . m_EnableDTKMusic ? true : false ) ;
m_buttonEnableThrottle - > SetValue ( ac_Config . m_EnableThrottle ? true : false ) ;
2009-11-28 11:40:04 +00:00
m_buttonEnableRE0Fix - > SetValue ( g_Config . m_EnableRE0Fix ? true : false ) ;
m_buttonEnableLoopFix - > SetValue ( g_Config . m_EnableLoopFix ? true : false ) ;
2008-12-08 05:25:12 +00:00
// Add tooltips
2009-01-17 21:42:43 +00:00
m_buttonEnableHLEAudio - > SetToolTip ( wxT ( " This is the most common sound type " ) ) ;
m_buttonEnableDTKMusic - > SetToolTip ( wxT ( " This is sometimes used to play music tracks from the disc " ) ) ;
2009-07-30 07:08:31 +00:00
m_buttonEnableThrottle - > SetToolTip ( wxT ( " This is sometimes used together with pre-rendered movies. \n " )
wxT ( " Disabling this also disables the speed throttle which this causes, \n " )
wxT ( " meaning that there will be no upper limit on your FPS. " ) ) ;
2009-11-28 11:40:04 +00:00
m_buttonEnableRE0Fix - > SetToolTip ( wxT ( " This fixes audio in Resident Evil Zero and maybe some other games. " ) ) ;
m_buttonEnableLoopFix - > SetToolTip ( wxT ( " This fixes audio loops in some games, by default it should be disabled. \n " )
wxT ( " Unless you are experiencing strange sound loops, don't enable it, \n " )
wxT ( " or it will cause some games to hang up. " ) ) ;
2009-01-29 01:53:07 +00:00
m_BackendSelection - > SetToolTip ( wxT ( " Changing this will have no effect while the emulator is running! " ) ) ;
2009-01-17 21:42:43 +00:00
// Create sizer and add items to dialog
wxBoxSizer * sMain = new wxBoxSizer ( wxVERTICAL ) ;
2009-05-18 19:24:46 +00:00
wxBoxSizer * sSettings = new wxBoxSizer ( wxHORIZONTAL ) ;
wxBoxSizer * sBackend = new wxBoxSizer ( wxHORIZONTAL ) ;
wxBoxSizer * sButtons = new wxBoxSizer ( wxHORIZONTAL ) ;
2009-01-17 21:42:43 +00:00
wxStaticBoxSizer * sbSettings = new wxStaticBoxSizer ( wxVERTICAL , this , wxT ( " Sound Settings " ) ) ;
sbSettings - > Add ( m_buttonEnableHLEAudio , 0 , wxALL , 5 ) ;
sbSettings - > Add ( m_buttonEnableDTKMusic , 0 , wxALL , 5 ) ;
sbSettings - > Add ( m_buttonEnableThrottle , 0 , wxALL , 5 ) ;
2009-07-05 07:30:42 +00:00
sbSettings - > Add ( m_buttonEnableRE0Fix , 0 , wxALL , 5 ) ;
2009-11-28 11:40:04 +00:00
sbSettings - > Add ( m_buttonEnableLoopFix , 0 , wxALL , 5 ) ;
2009-05-18 19:24:46 +00:00
sBackend - > Add ( BackendText , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
sBackend - > Add ( m_BackendSelection , 0 , wxALL , 1 ) ;
sbSettings - > Add ( sBackend , 0 , wxALL , 2 ) ;
wxStaticBoxSizer * sbSettingsV = new wxStaticBoxSizer ( wxVERTICAL , this , wxT ( " Volume " ) ) ;
sbSettingsV - > Add ( m_volumeSlider , 0 , wxLEFT | wxRIGHT | wxALIGN_CENTER , 6 ) ;
sbSettingsV - > Add ( m_volumeText , 0 , wxALL | wxALIGN_LEFT , 4 ) ;
2009-07-05 07:30:42 +00:00
sSettings - > Add ( sbSettings , 0 , wxALL | wxEXPAND , 4 ) ;
2009-05-18 19:24:46 +00:00
sSettings - > Add ( sbSettingsV , 0 , wxALL | wxEXPAND , 4 ) ;
sMain - > Add ( sSettings , 0 , wxALL | wxEXPAND , 4 ) ;
sButtons - > AddStretchSpacer ( ) ;
sButtons - > Add ( m_OK , 0 , wxALL , 1 ) ;
sMain - > Add ( sButtons , 0 , wxALL | wxEXPAND , 4 ) ;
SetSizerAndFit ( sMain ) ;
2008-12-08 05:25:12 +00:00
}
2009-02-14 01:07:20 +00:00
// Add audio output options
2009-07-02 19:00:27 +00:00
void DSPConfigDialogHLE : : AddBackend ( const char * backend )
2009-02-14 01:07:20 +00:00
{
2009-05-18 19:24:46 +00:00
// Update values
2009-01-29 00:57:55 +00:00
m_BackendSelection - > Append ( wxString : : FromAscii ( backend ) ) ;
2009-04-25 16:47:45 +00:00
# ifdef __APPLE__
m_BackendSelection - > SetValue ( wxString : : FromAscii ( ac_Config . sBackend ) ) ;
# else
2009-03-30 09:55:50 +00:00
m_BackendSelection - > SetValue ( wxString : : FromAscii ( ac_Config . sBackend . c_str ( ) ) ) ;
2009-04-25 16:47:45 +00:00
# endif
2009-05-18 19:24:46 +00:00
// Unfortunately, DSound is the only API having a volume setting...
# ifndef _WIN32
m_volumeSlider - > Disable ( ) ;
m_volumeText - > Disable ( ) ;
# endif
2009-01-29 00:57:55 +00:00
}
2009-07-13 13:37:52 +00:00
void DSPConfigDialogHLE : : ClearBackends ( )
{
m_BackendSelection - > Clear ( ) ;
}
2009-07-02 19:00:27 +00:00
DSPConfigDialogHLE : : ~ DSPConfigDialogHLE ( )
2009-01-17 21:42:43 +00:00
{
}
2008-12-08 05:25:12 +00:00
2009-07-02 19:00:27 +00:00
void DSPConfigDialogHLE : : VolumeChanged ( wxScrollEvent & WXUNUSED ( event ) )
2009-05-18 19:24:46 +00:00
{
ac_Config . m_Volume = m_volumeSlider - > GetValue ( ) ;
ac_Config . Update ( ) ;
m_volumeText - > SetLabel ( wxString : : Format ( wxT ( " %d %% " ) , m_volumeSlider - > GetValue ( ) ) ) ;
}
2009-07-02 19:00:27 +00:00
void DSPConfigDialogHLE : : SettingsChanged ( wxCommandEvent & event )
2008-12-08 05:25:12 +00:00
{
2009-01-17 21:42:43 +00:00
g_Config . m_EnableHLEAudio = m_buttonEnableHLEAudio - > GetValue ( ) ;
2009-03-30 09:55:50 +00:00
ac_Config . m_EnableDTKMusic = m_buttonEnableDTKMusic - > GetValue ( ) ;
ac_Config . m_EnableThrottle = m_buttonEnableThrottle - > GetValue ( ) ;
2009-11-28 11:40:04 +00:00
g_Config . m_EnableRE0Fix = m_buttonEnableRE0Fix - > GetValue ( ) ;
g_Config . m_EnableLoopFix = m_buttonEnableLoopFix - > GetValue ( ) ;
2009-04-27 23:27:56 +00:00
2009-04-25 16:47:45 +00:00
# ifdef __APPLE__
strncpy ( ac_Config . sBackend , m_BackendSelection - > GetValue ( ) . mb_str ( ) , 128 ) ;
# else
2009-03-30 09:55:50 +00:00
ac_Config . sBackend = m_BackendSelection - > GetValue ( ) . mb_str ( ) ;
2009-04-25 16:47:45 +00:00
# endif
2009-05-18 19:24:46 +00:00
ac_Config . Update ( ) ;
2008-12-08 05:25:12 +00:00
g_Config . Save ( ) ;
2009-01-17 21:42:43 +00:00
if ( event . GetId ( ) = = wxID_OK )
EndModal ( wxID_OK ) ;
2008-12-08 05:25:12 +00:00
}