wx: Make spu mode and audio driver changeable
From Jan Bücken (nooris), #3288648
This commit is contained in:
parent
961a467f92
commit
5fc80d83aa
|
@ -65,6 +65,24 @@ static int nds_gap_size;
|
||||||
static SPADInitialize PADInitialize;
|
static SPADInitialize PADInitialize;
|
||||||
static bool Touch = false;
|
static bool Touch = false;
|
||||||
|
|
||||||
|
#if defined(WIN32) || defined(HAVE_LIBSOUNDTOUCH)
|
||||||
|
#define HAVE_SPUMODE_SYNCP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum audiodriver_enum {
|
||||||
|
AUDIODRIVER_SDL = 0,
|
||||||
|
AUDIODRIVER_DISABLE
|
||||||
|
};
|
||||||
|
|
||||||
|
enum spumode_enum {
|
||||||
|
SPUMODE_DUALASYNC = 0,
|
||||||
|
SPUMODE_SYNCN,
|
||||||
|
SPUMODE_SYNCZ,
|
||||||
|
#ifdef HAVE_SPUMODE_SYNCP
|
||||||
|
SPUMODE_SYNCP
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
SoundInterface_struct *SNDCoreList[] = {
|
SoundInterface_struct *SNDCoreList[] = {
|
||||||
&SNDDummy,
|
&SNDDummy,
|
||||||
&SNDSDL,
|
&SNDSDL,
|
||||||
|
@ -157,6 +175,8 @@ DesmumeFrame::DesmumeFrame(const wxString& title)
|
||||||
wxMenu *loads(MakeStatesSubMenu(wLoadState01));
|
wxMenu *loads(MakeStatesSubMenu(wLoadState01));
|
||||||
wxMenu *layersMenu = new wxMenu;
|
wxMenu *layersMenu = new wxMenu;
|
||||||
wxMenu *rotateMenu = new wxMenu;
|
wxMenu *rotateMenu = new wxMenu;
|
||||||
|
wxMenu *audiodriverMenu = new wxMenu;
|
||||||
|
wxMenu *spumodeMenu = new wxMenu;
|
||||||
|
|
||||||
LoadSettings();
|
LoadSettings();
|
||||||
|
|
||||||
|
@ -192,6 +212,17 @@ DesmumeFrame::DesmumeFrame(const wxString& title)
|
||||||
|
|
||||||
emulationMenu->Append(wPause, _T("&Pause\tAlt-P"), _T("Pause Emulation"));
|
emulationMenu->Append(wPause, _T("&Pause\tAlt-P"), _T("Pause Emulation"));
|
||||||
emulationMenu->Append(wReset, _T("&Reset\tAlt-R"), _T("Reset Emulation"));
|
emulationMenu->Append(wReset, _T("&Reset\tAlt-R"), _T("Reset Emulation"));
|
||||||
|
emulationMenu->AppendSeparator();
|
||||||
|
emulationMenu->AppendSubMenu(audiodriverMenu, _T("&Audio Driver"));
|
||||||
|
audiodriverMenu->AppendRadioItem(wAUDIODRIVER_SDL, _T("&SDL"));
|
||||||
|
audiodriverMenu->AppendRadioItem(wAUDIODRIVER_DISABLE, _T("&Disable Sound"));
|
||||||
|
emulationMenu->AppendSubMenu(spumodeMenu, _T("&SPU Mode"));
|
||||||
|
spumodeMenu->AppendRadioItem(wSPUMODE_DUALASYNC, _T("&Dual Asynchronous"));
|
||||||
|
spumodeMenu->AppendRadioItem(wSPUMODE_SYNCN, _T("Synchronous (&N)"));
|
||||||
|
spumodeMenu->AppendRadioItem(wSPUMODE_SYNCZ, _T("Synchronous (&Z)"));
|
||||||
|
#ifdef HAVE_SPUMODE_SYNCP
|
||||||
|
spumodeMenu->AppendRadioItem(wSPUMODE_SYNCP, _T("Synchronous (&P)"));
|
||||||
|
#endif
|
||||||
|
|
||||||
configMenu->Append(wConfigureControls, _T("Controls"));
|
configMenu->Append(wConfigureControls, _T("Controls"));
|
||||||
|
|
||||||
|
@ -690,8 +721,16 @@ BEGIN_EVENT_TABLE(DesmumeFrame, wxFrame)
|
||||||
EVT_MENU(wxID_EXIT, DesmumeFrame::OnQuit)
|
EVT_MENU(wxID_EXIT, DesmumeFrame::OnQuit)
|
||||||
EVT_MENU(wxID_OPEN, DesmumeFrame::LoadRom)
|
EVT_MENU(wxID_OPEN, DesmumeFrame::LoadRom)
|
||||||
EVT_MENU(wxID_ABOUT,DesmumeFrame::OnAbout)
|
EVT_MENU(wxID_ABOUT,DesmumeFrame::OnAbout)
|
||||||
|
|
||||||
EVT_MENU(wPause,DesmumeFrame::pause)
|
EVT_MENU(wPause,DesmumeFrame::pause)
|
||||||
EVT_MENU(wReset,DesmumeFrame::reset)
|
EVT_MENU(wReset,DesmumeFrame::reset)
|
||||||
|
|
||||||
|
EVT_MENU_RANGE(wAUDIODRIVER_SDL,wAUDIODRIVER_DISABLE,DesmumeFrame::Modify_AudioDriver)
|
||||||
|
EVT_MENU_RANGE(wSPUMODE_DUALASYNC,wSPUMODE_SYNCZ,DesmumeFrame::Modify_SPUMode)
|
||||||
|
#ifdef HAVE_SPUMODE_SYNCP
|
||||||
|
EVT_MENU(wSPUMODE_SYNCP,DesmumeFrame::Modify_SPUMode)
|
||||||
|
#endif
|
||||||
|
|
||||||
EVT_MENU(wFrameCounter,DesmumeFrame::frameCounter)
|
EVT_MENU(wFrameCounter,DesmumeFrame::frameCounter)
|
||||||
EVT_MENU(wFPS,DesmumeFrame::FPS)
|
EVT_MENU(wFPS,DesmumeFrame::FPS)
|
||||||
EVT_MENU(wDisplayInput,DesmumeFrame::displayInput)
|
EVT_MENU(wDisplayInput,DesmumeFrame::displayInput)
|
||||||
|
@ -748,7 +787,6 @@ END_EVENT_TABLE()
|
||||||
|
|
||||||
IMPLEMENT_APP(Desmume)
|
IMPLEMENT_APP(Desmume)
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
/*
|
/*
|
||||||
* The thread handling functions needed by the GDB stub code.
|
* The thread handling functions needed by the GDB stub code.
|
||||||
|
@ -799,7 +837,6 @@ void DesmumeFrame::OnOpenRecent(wxCommandEvent &event) {
|
||||||
history->RemoveFileFromHistory(id);
|
history->RemoveFileFromHistory(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DesmumeFrame::loadfileMenu(wxMenu *fileMenu)
|
void DesmumeFrame::loadfileMenu(wxMenu *fileMenu)
|
||||||
{
|
{
|
||||||
wxMenu *recentMenu = new wxMenu;
|
wxMenu *recentMenu = new wxMenu;
|
||||||
|
@ -832,9 +869,23 @@ void DesmumeFrame::loadfileMenu(wxMenu *fileMenu)
|
||||||
}
|
}
|
||||||
void DesmumeFrame::loademulationMenu(wxMenu *emulationMenu)
|
void DesmumeFrame::loademulationMenu(wxMenu *emulationMenu)
|
||||||
{
|
{
|
||||||
|
wxMenu *audiodriverMenu = new wxMenu;
|
||||||
|
wxMenu *spumodeMenu = new wxMenu;
|
||||||
emulationMenu->Append(wPause, _T("&Pause\tAlt-P"), _T("Pause Emulation"));
|
emulationMenu->Append(wPause, _T("&Pause\tAlt-P"), _T("Pause Emulation"));
|
||||||
emulationMenu->Append(wReset, _T("&Reset\tAlt-R"), _T("Reset Emulation"));
|
emulationMenu->Append(wReset, _T("&Reset\tAlt-R"), _T("Reset Emulation"));
|
||||||
|
emulationMenu->AppendSeparator();
|
||||||
|
emulationMenu->AppendSubMenu(audiodriverMenu, _T("&Audio Driver"));
|
||||||
|
audiodriverMenu->AppendRadioItem(wAUDIODRIVER_SDL, _T("&SDL"));
|
||||||
|
audiodriverMenu->AppendRadioItem(wAUDIODRIVER_DISABLE, _T("&Disable Sound"));
|
||||||
|
emulationMenu->AppendSubMenu(spumodeMenu, _T("&SPU Mode"));
|
||||||
|
spumodeMenu->AppendRadioItem(wSPUMODE_DUALASYNC, _T("&Dual Asynchronous"));
|
||||||
|
spumodeMenu->AppendRadioItem(wSPUMODE_SYNCN, _T("Synchronous (&N)"));
|
||||||
|
spumodeMenu->AppendRadioItem(wSPUMODE_SYNCZ, _T("Synchronous (&Z)"));
|
||||||
|
#ifdef HAVE_SPUMODE_SYNCP
|
||||||
|
spumodeMenu->AppendRadioItem(wSPUMODE_SYNCP, _T("Synchronous (&P)"));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesmumeFrame::loadrotateMenu(wxMenu *rotateMenu)
|
void DesmumeFrame::loadrotateMenu(wxMenu *rotateMenu)
|
||||||
{
|
{
|
||||||
rotateMenu->AppendRadioItem(wRot0, _T("0"));
|
rotateMenu->AppendRadioItem(wRot0, _T("0"));
|
||||||
|
@ -843,6 +894,7 @@ void DesmumeFrame::loadrotateMenu(wxMenu *rotateMenu)
|
||||||
rotateMenu->AppendRadioItem(wRot270, _T("270"));
|
rotateMenu->AppendRadioItem(wRot270, _T("270"));
|
||||||
rotateMenu->Check(wRot0+(nds_screen_rotation_angle/90), true);
|
rotateMenu->Check(wRot0+(nds_screen_rotation_angle/90), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesmumeFrame::loadviewMenu(wxMenu *viewMenu)
|
void DesmumeFrame::loadviewMenu(wxMenu *viewMenu)
|
||||||
{
|
{
|
||||||
wxMenu *rotateMenu = new wxMenu;
|
wxMenu *rotateMenu = new wxMenu;
|
||||||
|
@ -928,3 +980,45 @@ void DesmumeFrame::loadmenuBar(wxMenuBar *menuBar)
|
||||||
loadviewMenu(viewMenu);
|
loadviewMenu(viewMenu);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DesmumeFrame::Modify_AudioDriver(wxCommandEvent &event)
|
||||||
|
{
|
||||||
|
const int selection = event.GetId() - wAUDIODRIVER_SDL;
|
||||||
|
|
||||||
|
switch (selection) {
|
||||||
|
case AUDIODRIVER_DISABLE:
|
||||||
|
SPU_ChangeSoundCore(0, 0);
|
||||||
|
osd->addLine("Audio disabled\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
case AUDIODRIVER_SDL:
|
||||||
|
SPU_ChangeSoundCore(SNDCORE_SDL, 735 * 4);
|
||||||
|
osd->addLine("Audio enabled (SDL driver)\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DesmumeFrame::Modify_SPUMode(wxCommandEvent &event)
|
||||||
|
{
|
||||||
|
const int selection = event.GetId() - wSPUMODE_DUALASYNC;
|
||||||
|
uint syncMode, syncMethod;
|
||||||
|
|
||||||
|
switch (selection) {
|
||||||
|
case SPUMODE_SYNCN:
|
||||||
|
case SPUMODE_SYNCZ:
|
||||||
|
#ifdef HAVE_SPUMODE_SYNCP
|
||||||
|
case SPUMODE_SYNCP:
|
||||||
|
#endif
|
||||||
|
syncMode = 1;
|
||||||
|
syncMethod = selection - 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Default to DualASync mode on invalid selection
|
||||||
|
default:
|
||||||
|
case SPUMODE_DUALASYNC:
|
||||||
|
syncMode = 0;
|
||||||
|
syncMethod = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
SPU_SetSynchMode(syncMode, syncMethod);
|
||||||
|
}
|
||||||
|
|
|
@ -51,6 +51,14 @@ enum
|
||||||
wRot90,
|
wRot90,
|
||||||
wRot180,
|
wRot180,
|
||||||
wRot270,
|
wRot270,
|
||||||
|
wAUDIODRIVER_SDL,
|
||||||
|
wAUDIODRIVER_DISABLE,
|
||||||
|
wSPUMODE_DUALASYNC,
|
||||||
|
wSPUMODE_SYNCN,
|
||||||
|
wSPUMODE_SYNCZ,
|
||||||
|
#ifdef HAVE_LIBSOUNDTOUCH
|
||||||
|
wSPUMODE_SYNCP,
|
||||||
|
#endif
|
||||||
/* stupid enums: these two should be the at the end */
|
/* stupid enums: these two should be the at the end */
|
||||||
wLoadState01,
|
wLoadState01,
|
||||||
wSaveState01 = wLoadState01+20
|
wSaveState01 = wLoadState01+20
|
||||||
|
@ -88,7 +96,7 @@ public:
|
||||||
void onPaint(wxPaintEvent &event);
|
void onPaint(wxPaintEvent &event);
|
||||||
void onIdle(wxIdleEvent &event);
|
void onIdle(wxIdleEvent &event);
|
||||||
void pause(wxCommandEvent& event);
|
void pause(wxCommandEvent& event);
|
||||||
void reset(wxCommandEvent& event){NDS_Reset();}
|
void reset(wxCommandEvent& event){NDS_Reset();};
|
||||||
void frameCounter(wxCommandEvent& event);
|
void frameCounter(wxCommandEvent& event);
|
||||||
void FPS(wxCommandEvent& event);
|
void FPS(wxCommandEvent& event);
|
||||||
void displayInput(wxCommandEvent& event);
|
void displayInput(wxCommandEvent& event);
|
||||||
|
@ -152,6 +160,8 @@ public:
|
||||||
bool SaveSettings();
|
bool SaveSettings();
|
||||||
void OnClose(wxCloseEvent &event);
|
void OnClose(wxCloseEvent &event);
|
||||||
void OnOpenRecent(wxCommandEvent &event);
|
void OnOpenRecent(wxCommandEvent &event);
|
||||||
|
void Modify_AudioDriver(wxCommandEvent& event);
|
||||||
|
void Modify_SPUMode(wxCommandEvent& event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void loadfileMenu(wxMenu *fileMenu);
|
void loadfileMenu(wxMenu *fileMenu);
|
||||||
|
@ -163,6 +173,7 @@ private:
|
||||||
void loadviewMenu(wxMenu *viewMenu);
|
void loadviewMenu(wxMenu *viewMenu);
|
||||||
void loadrotateMenu(wxMenu *rotateMenu);
|
void loadrotateMenu(wxMenu *rotateMenu);
|
||||||
void loademulationMenu(wxMenu *emulationMenu);
|
void loademulationMenu(wxMenu *emulationMenu);
|
||||||
|
|
||||||
struct NDS_fw_config_data fw_config;
|
struct NDS_fw_config_data fw_config;
|
||||||
wxFileHistory* history;
|
wxFileHistory* history;
|
||||||
#ifdef GDB_STUB
|
#ifdef GDB_STUB
|
||||||
|
|
Loading…
Reference in New Issue