add general emu settings dialog
This commit is contained in:
parent
69bc06402c
commit
172babe9d0
|
@ -191,6 +191,8 @@
|
||||||
<Unit filename="src/SPU.h" />
|
<Unit filename="src/SPU.h" />
|
||||||
<Unit filename="src/Wifi.cpp" />
|
<Unit filename="src/Wifi.cpp" />
|
||||||
<Unit filename="src/Wifi.h" />
|
<Unit filename="src/Wifi.h" />
|
||||||
|
<Unit filename="src/libui_sdl/DlgEmuSettings.cpp" />
|
||||||
|
<Unit filename="src/libui_sdl/DlgEmuSettings.h" />
|
||||||
<Unit filename="src/libui_sdl/Platform.cpp" />
|
<Unit filename="src/libui_sdl/Platform.cpp" />
|
||||||
<Unit filename="src/libui_sdl/libui/common/areaevents.c">
|
<Unit filename="src/libui_sdl/libui/common/areaevents.c">
|
||||||
<Option compilerVar="CC" />
|
<Option compilerVar="CC" />
|
||||||
|
|
|
@ -0,0 +1,113 @@
|
||||||
|
/*
|
||||||
|
Copyright 2016-2017 StapleButter
|
||||||
|
|
||||||
|
This file is part of melonDS.
|
||||||
|
|
||||||
|
melonDS 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, either version 3 of the License, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
melonDS 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 for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along
|
||||||
|
with melonDS. If not, see http://www.gnu.org/licenses/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "libui/ui.h"
|
||||||
|
|
||||||
|
#include "../types.h"
|
||||||
|
#include "../Config.h"
|
||||||
|
|
||||||
|
#include "DlgEmuSettings.h"
|
||||||
|
|
||||||
|
|
||||||
|
void ApplyNewSettings();
|
||||||
|
|
||||||
|
|
||||||
|
namespace DlgEmuSettings
|
||||||
|
{
|
||||||
|
|
||||||
|
uiWindow* win;
|
||||||
|
|
||||||
|
uiCheckbox* cbDirectBoot;
|
||||||
|
uiCheckbox* cbThreaded3D;
|
||||||
|
uiCheckbox* cbBindAnyAddr;
|
||||||
|
|
||||||
|
|
||||||
|
int OnCloseWindow(uiWindow* window, void* blarg)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnCancel(uiButton* btn, void* blarg)
|
||||||
|
{
|
||||||
|
uiControlDestroy(uiControl(win));
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnOk(uiButton* btn, void* blarg)
|
||||||
|
{
|
||||||
|
Config::DirectBoot = uiCheckboxChecked(cbDirectBoot);
|
||||||
|
Config::Threaded3D = uiCheckboxChecked(cbThreaded3D);
|
||||||
|
Config::SocketBindAnyAddr = uiCheckboxChecked(cbBindAnyAddr);
|
||||||
|
|
||||||
|
Config::Save();
|
||||||
|
|
||||||
|
uiControlDestroy(uiControl(win));
|
||||||
|
|
||||||
|
ApplyNewSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Open()
|
||||||
|
{
|
||||||
|
win = uiNewWindow("Emu settings - melonDS", 300, 200, 0);
|
||||||
|
uiWindowSetMargined(win, 1);
|
||||||
|
uiWindowOnClosing(win, OnCloseWindow, NULL);
|
||||||
|
|
||||||
|
uiBox* top = uiNewVerticalBox();
|
||||||
|
uiWindowSetChild(win, uiControl(top));
|
||||||
|
|
||||||
|
{
|
||||||
|
uiBox* in_ctrl = uiNewVerticalBox();
|
||||||
|
uiBoxAppend(top, uiControl(in_ctrl), 1);
|
||||||
|
|
||||||
|
cbDirectBoot = uiNewCheckbox("Boot game directly");
|
||||||
|
uiBoxAppend(in_ctrl, uiControl(cbDirectBoot), 0);
|
||||||
|
|
||||||
|
cbThreaded3D = uiNewCheckbox("Threaded 3D renderer");
|
||||||
|
uiBoxAppend(in_ctrl, uiControl(cbThreaded3D), 0);
|
||||||
|
|
||||||
|
cbBindAnyAddr = uiNewCheckbox("Wifi: bind socket to any address");
|
||||||
|
uiBoxAppend(in_ctrl, uiControl(cbBindAnyAddr), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
uiBox* in_ctrl = uiNewHorizontalBox();
|
||||||
|
uiBoxSetPadded(in_ctrl, 1);
|
||||||
|
uiBoxAppend(top, uiControl(in_ctrl), 0);
|
||||||
|
|
||||||
|
uiLabel* dummy = uiNewLabel("");
|
||||||
|
uiBoxAppend(in_ctrl, uiControl(dummy), 1);
|
||||||
|
|
||||||
|
uiButton* btncancel = uiNewButton("Cancel");
|
||||||
|
uiButtonOnClicked(btncancel, OnCancel, NULL);
|
||||||
|
uiBoxAppend(in_ctrl, uiControl(btncancel), 0);
|
||||||
|
|
||||||
|
uiButton* btnok = uiNewButton("Ok");
|
||||||
|
uiButtonOnClicked(btnok, OnOk, NULL);
|
||||||
|
uiBoxAppend(in_ctrl, uiControl(btnok), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
uiCheckboxSetChecked(cbDirectBoot, Config::DirectBoot);
|
||||||
|
uiCheckboxSetChecked(cbThreaded3D, Config::Threaded3D);
|
||||||
|
uiCheckboxSetChecked(cbBindAnyAddr, Config::SocketBindAnyAddr);
|
||||||
|
|
||||||
|
uiControlShow(uiControl(win));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
Copyright 2016-2017 StapleButter
|
||||||
|
|
||||||
|
This file is part of melonDS.
|
||||||
|
|
||||||
|
melonDS 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, either version 3 of the License, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
melonDS 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 for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along
|
||||||
|
with melonDS. If not, see http://www.gnu.org/licenses/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef DLGEMUSETTINGS_H
|
||||||
|
#define DLGEMUSETTINGS_H
|
||||||
|
|
||||||
|
namespace DlgEmuSettings
|
||||||
|
{
|
||||||
|
|
||||||
|
void Open();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // DLGEMUSETTINGS_H
|
|
@ -27,9 +27,13 @@
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
#include "../Config.h"
|
#include "../Config.h"
|
||||||
|
|
||||||
|
#include "DlgEmuSettings.h"
|
||||||
|
|
||||||
#include "../NDS.h"
|
#include "../NDS.h"
|
||||||
#include "../GPU.h"
|
#include "../GPU.h"
|
||||||
#include "../SPU.h"
|
#include "../SPU.h"
|
||||||
|
#include "../Wifi.h"
|
||||||
|
#include "../Platform.h"
|
||||||
|
|
||||||
|
|
||||||
uiWindow* MainWindow;
|
uiWindow* MainWindow;
|
||||||
|
@ -161,7 +165,7 @@ int EmuThreadFunc(void* burp)
|
||||||
fpslimitcount = 0;
|
fpslimitcount = 0;
|
||||||
|
|
||||||
uiAreaQueueRedrawAll(MainDrawArea);
|
uiAreaQueueRedrawAll(MainDrawArea);
|
||||||
SDL_Delay(50);
|
SDL_Delay(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -405,6 +409,31 @@ void OnStop(uiMenuItem* item, uiWindow* window, void* blarg)
|
||||||
Stop();
|
Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OnOpenEmuSettings(uiMenuItem* item, uiWindow* window, void* blarg)
|
||||||
|
{
|
||||||
|
DlgEmuSettings::Open();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ApplyNewSettings()
|
||||||
|
{
|
||||||
|
if (!RunningSomething) return;
|
||||||
|
|
||||||
|
int prevstatus = EmuRunning;
|
||||||
|
EmuRunning = 2;
|
||||||
|
while (EmuStatus != 2);
|
||||||
|
|
||||||
|
GPU3D::SoftRenderer::SetupRenderThread();
|
||||||
|
|
||||||
|
if (Wifi::MPInited)
|
||||||
|
{
|
||||||
|
Platform::MP_DeInit();
|
||||||
|
Platform::MP_Init();
|
||||||
|
}
|
||||||
|
|
||||||
|
EmuRunning = prevstatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool _fileexists(char* name)
|
bool _fileexists(char* name)
|
||||||
{
|
{
|
||||||
|
@ -484,6 +513,10 @@ int main(int argc, char** argv)
|
||||||
uiMenuItemOnClicked(menuitem, OnStop, NULL);
|
uiMenuItemOnClicked(menuitem, OnStop, NULL);
|
||||||
MenuItem_Stop = menuitem;
|
MenuItem_Stop = menuitem;
|
||||||
|
|
||||||
|
menu = uiNewMenu("Config");
|
||||||
|
menuitem = uiMenuAppendItem(menu, "Emu settings");
|
||||||
|
uiMenuItemOnClicked(menuitem, OnOpenEmuSettings, NULL);
|
||||||
|
|
||||||
MainWindow = uiNewWindow("melonDS " MELONDS_VERSION, 256, 384, 1);
|
MainWindow = uiNewWindow("melonDS " MELONDS_VERSION, 256, 384, 1);
|
||||||
uiWindowOnClosing(MainWindow, OnCloseWindow, NULL);
|
uiWindowOnClosing(MainWindow, OnCloseWindow, NULL);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue