mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-11 16:49:12 +01:00
4d512ecba7
No need to use "Sound Loop Hack", so I just removed it. 2. Fixed the WAD game loading issue. What can I say, I have to go though and patch all the WII_IPC_HLE devices to take care of this. 3. Applied tomman's Linux keyboard patch, but I can't test here, no suitable environment. 4. Disabled configuration dialogs when game is running, you have to pause game first to be able to change any configuration. (Which prevents some accidental crash to happen.) 5. Other trivial fixes, no need to mention. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4632 8ced0084-cf51-0410-be5f-012b33b47a6e
149 lines
6.3 KiB
C++
149 lines
6.3 KiB
C++
// Copyright (C) 2003 Dolphin Project.
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, version 2.0.
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License 2.0 for more details.
|
|
|
|
// A copy of the GPL 2.0 should have been included with the program.
|
|
// If not, see http://www.gnu.org/licenses/
|
|
|
|
// Official SVN repository and contact information can be found at
|
|
// http://code.google.com/p/dolphin-emu/
|
|
|
|
|
|
#include "Config.h"
|
|
#include "ConfigDlg.h"
|
|
|
|
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)
|
|
EVT_COMMAND_SCROLL(ID_VOLUME, DSPConfigDialogHLE::VolumeChanged)
|
|
END_EVENT_TABLE()
|
|
|
|
DSPConfigDialogHLE::DSPConfigDialogHLE(wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &position, const wxSize& size, long style)
|
|
: wxDialog(parent, id, title, position, size, style)
|
|
{
|
|
// Center window
|
|
CenterOnParent();
|
|
|
|
m_OK = new wxButton(this, wxID_OK, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
|
|
|
|
// 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 Audio Throttle"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
|
|
m_buttonEnableRE0Fix = new wxCheckBox(this, ID_ENABLE_RE0_FIX, wxT("Enable RE0 Audio Hack"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
|
|
wxStaticText *BackendText = new wxStaticText(this, wxID_ANY, wxT("Audio Backend"), wxDefaultPosition, wxDefaultSize, 0);
|
|
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);
|
|
|
|
// Update values
|
|
m_buttonEnableHLEAudio->SetValue(g_Config.m_EnableHLEAudio ? true : false);
|
|
m_buttonEnableDTKMusic->SetValue(ac_Config.m_EnableDTKMusic ? true : false);
|
|
m_buttonEnableThrottle->SetValue(ac_Config.m_EnableThrottle ? true : false);
|
|
m_buttonEnableRE0Fix->SetValue(g_Config.m_EnableRE0Fix ? true : false);
|
|
|
|
// Add tooltips
|
|
m_buttonEnableHLEAudio->SetToolTip(wxT("This is usually used to play voice and sound effects."));
|
|
m_buttonEnableDTKMusic->SetToolTip(wxT("This is used to play music tracks, like BGM."));
|
|
m_buttonEnableThrottle->SetToolTip(wxT("This is used to control game speed by sound throttle.\n")
|
|
wxT("Disabling this could cause abnormal game speed, such as too fast.\n")
|
|
wxT("But sometimes enabling this causes constant noise."));
|
|
|
|
m_buttonEnableRE0Fix->SetToolTip(wxT("This fixes audio in Resident Evil Zero and maybe some other games."));
|
|
|
|
m_BackendSelection->SetToolTip(wxT("Changing this will have no effect while the emulator is running!"));
|
|
|
|
// Create sizer and add items to dialog
|
|
wxBoxSizer *sMain = new wxBoxSizer(wxVERTICAL);
|
|
wxBoxSizer *sSettings = new wxBoxSizer(wxHORIZONTAL);
|
|
wxBoxSizer *sBackend = new wxBoxSizer(wxHORIZONTAL);
|
|
wxBoxSizer *sButtons = new wxBoxSizer(wxHORIZONTAL);
|
|
|
|
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);
|
|
sbSettings->Add(m_buttonEnableRE0Fix, 0, wxALL, 5);
|
|
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);
|
|
|
|
sSettings->Add(sbSettings, 0, wxALL|wxEXPAND, 4);
|
|
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);
|
|
}
|
|
|
|
// Add audio output options
|
|
void DSPConfigDialogHLE::AddBackend(const char* backend)
|
|
{
|
|
// Update values
|
|
m_BackendSelection->Append(wxString::FromAscii(backend));
|
|
#ifdef __APPLE__
|
|
m_BackendSelection->SetValue(wxString::FromAscii(ac_Config.sBackend));
|
|
#else
|
|
m_BackendSelection->SetValue(wxString::FromAscii(ac_Config.sBackend.c_str()));
|
|
#endif
|
|
|
|
// Unfortunately, DSound is the only API having a volume setting...
|
|
#ifndef _WIN32
|
|
m_volumeSlider->Disable();
|
|
m_volumeText->Disable();
|
|
#endif
|
|
}
|
|
|
|
void DSPConfigDialogHLE::ClearBackends()
|
|
{
|
|
m_BackendSelection->Clear();
|
|
}
|
|
|
|
DSPConfigDialogHLE::~DSPConfigDialogHLE()
|
|
{
|
|
}
|
|
|
|
void DSPConfigDialogHLE::VolumeChanged(wxScrollEvent& WXUNUSED(event))
|
|
{
|
|
ac_Config.m_Volume = m_volumeSlider->GetValue();
|
|
ac_Config.Update();
|
|
|
|
m_volumeText->SetLabel(wxString::Format(wxT("%d %%"), m_volumeSlider->GetValue()));
|
|
}
|
|
|
|
void DSPConfigDialogHLE::SettingsChanged(wxCommandEvent& event)
|
|
{
|
|
g_Config.m_EnableHLEAudio = m_buttonEnableHLEAudio->GetValue();
|
|
ac_Config.m_EnableDTKMusic = m_buttonEnableDTKMusic->GetValue();
|
|
ac_Config.m_EnableThrottle = m_buttonEnableThrottle->GetValue();
|
|
g_Config.m_EnableRE0Fix = m_buttonEnableRE0Fix->GetValue();
|
|
|
|
#ifdef __APPLE__
|
|
strncpy(ac_Config.sBackend, m_BackendSelection->GetValue().mb_str(), 128);
|
|
#else
|
|
ac_Config.sBackend = m_BackendSelection->GetValue().mb_str();
|
|
#endif
|
|
ac_Config.Update();
|
|
g_Config.Save();
|
|
|
|
if (event.GetId() == wxID_OK)
|
|
EndModal(wxID_OK);
|
|
}
|