Skip to content

Commit 00bd756

Browse files
author
N3xoX1
committed
be able to configure audioOutputEngine
1 parent 5aed642 commit 00bd756

40 files changed

Lines changed: 584 additions & 130 deletions

config/NxEmu - Copy.config

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"Core" : {
3+
"ModuleDirectory-x64" : "..\\..\\..\\modules\\x64",
4+
"ShowConsole" : true,
5+
"modules" : {
6+
"loader" : "loader\\yuzu-loader_d.dll"
7+
}
8+
},
9+
"UI" : {
10+
"EnableModuleConfiguration" : true,
11+
"LanguageDirectory" : "..\\..\\..\\lang",
12+
"RecentFiles" : [
13+
"D:\\Emulation\\switch\\Games\\Sonic Mania.xci",
14+
"D:\\Emulation\\switch\\Games\\2048.nro"
15+
]
16+
}
17+
}

lang/english/html/system_config.html

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@
9494
style-set: std-hslider;
9595
}
9696

97+
ComboBox
98+
{
99+
width: 100%%;
100+
}
101+
97102
@set std-hslider < std-hslider-base {
98103
:root {
99104
background: #565a5e;
@@ -146,6 +151,7 @@
146151
border: 1px solid #818183;
147152
background: none;
148153
border-radius: 0.3em;
154+
margin: 0 0.5em 0 0;
149155
}
150156

151157
input[type="checkbox"]:checked {
@@ -169,7 +175,7 @@
169175
<div id="ConfigContents" />
170176
</div>
171177
<div class="footer">
172-
<button role="window-close">OK</button>
178+
<button role="window-ok">OK</button>
173179
<button role="window-close">Cancel</button>
174180
</div>
175181
</body>

lang/english/html/system_config_audio.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22
<div class="group-title">Audio</div>
33
<div class="form-row">
44
<div class="left"><label for="audioOutputEngine">Output Engine:</label></div>
5-
<div class="right"><select id="audioOutputEngine"></select></div>
5+
<div class="right"><ComboBox id="audioOutputEngine" /></div>
66
</div>
77
<div class="form-row">
88
<div class="left"><label for="audioOutputDevice">Output Device:</label></div>
9-
<div class="right"><select id="audioOutputDevice"></select></div>
9+
<div class="right"><ComboBox id="audioOutputDevice" /></div>
1010
</div>
1111
<div class="form-row">
1212
<div class="left"><label for="inputDevice">Input Device:</label></div>
13-
<div class="right"><select id="inputDevice"></select></div>
13+
<div class="right"><ComboBox id="inputDevice" /></div>
1414
</div>
1515
<div class="form-row">
1616
<div class="left"><label for="soundMode">Sound Output Mode:</label></div>
17-
<div class="right"><select id="soundMode"></select></div>
17+
<div class="right"><ComboBox id="soundMode" /></div>
1818
</div>
1919
<div class="form-row slider-row">
2020
<div class="left"><label for="volume">Volume:</label></div>

src/nxemu-core/app_init.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ extern "C" int __stdcall AllocConsole();
99
bool AppInit(INotification * notification)
1010
{
1111
g_notify = notification;
12-
if (!Settings::GetInstance().Initialize())
12+
if (!SettingsStore::GetInstance().Initialize())
1313
{
1414
return false;
1515
}
@@ -35,5 +35,5 @@ bool AppInit(INotification * notification)
3535
void AppCleanup(void)
3636
{
3737
SwitchSystem::ShutDown();
38-
Settings::CleanUp();
38+
SettingsStore::CleanUp();
3939
}

src/nxemu-core/machine/switch_system.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ bool SwitchSystem::Initialize(IRenderWindow & window)
5252

5353
void SwitchSystem::StartEmulation(void)
5454
{
55-
Settings & settings = Settings::GetInstance();
55+
SettingsStore & settings = SettingsStore::GetInstance();
5656
settings.SetBool(NXCoreSetting::EmulationRunning, true);
5757
m_emulationRunning = true;
5858
m_modules.StartEmulation();
@@ -68,6 +68,11 @@ void SwitchSystem::StopEmulation(void)
6868
m_modules.StopEmulation();
6969
}
7070

71+
void SwitchSystem::FlushSettings(void)
72+
{
73+
m_modules.FlushSettings();
74+
}
75+
7176
IVideo & SwitchSystem::Video(void)
7277
{
7378
return *m_modules.Video();

src/nxemu-core/machine/switch_system.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class SwitchSystem :
1414

1515
void StartEmulation(void);
1616
void StopEmulation(void);
17+
void FlushSettings(void);
1718

1819
//ISwitchSystem
1920
ISystemloader & Systemloader();

src/nxemu-core/modules/module_base.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ ModuleBase::ModuleBase() :
55
m_moduleInfo({0}),
66
EmulationStarting(nullptr),
77
EmulationStopping(nullptr),
8-
ModuleCleanup(nullptr)
8+
ModuleCleanup(nullptr),
9+
FlushSettings(nullptr)
910
{
1011
}
1112

@@ -43,11 +44,13 @@ bool ModuleBase::Load(const char * fileName, IModuleNotification * notification,
4344
ModuleCleanup = (ModuleBase::tyModuleCleanup)DynamicLibraryGetProc(m_lib, "ModuleCleanup");
4445
EmulationStarting = (ModuleBase::tyEmulationStarting)DynamicLibraryGetProc(m_lib, "EmulationStarting");
4546
EmulationStopping = (ModuleBase::tyEmulationStopping)DynamicLibraryGetProc(m_lib, "EmulationStopping");
47+
FlushSettings = (ModuleBase::tyFlushSettings)DynamicLibraryGetProc(m_lib, "FlushSettings");
4648

4749
if (ModuleInitialize == nullptr ||
4850
ModuleCleanup == nullptr ||
4951
EmulationStarting == nullptr ||
50-
EmulationStopping == nullptr)
52+
EmulationStopping == nullptr ||
53+
FlushSettings == nullptr)
5154
{
5255
return false;
5356
}
@@ -107,4 +110,5 @@ void ModuleBase::ModuleDone(bool callUnloadModule)
107110
ModuleCleanup = nullptr;
108111
EmulationStarting = nullptr;
109112
EmulationStopping = nullptr;
113+
FlushSettings = nullptr;
110114
}

src/nxemu-core/modules/module_base.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class ModuleBase
1717
typedef void(CALL * tyModuleCleanup)();
1818
typedef void(CALL * tyEmulationStarting)();
1919
typedef void(CALL * tyEmulationStopping)();
20+
typedef void(CALL * tyFlushSettings)();
2021

2122
public:
2223
ModuleBase();
@@ -26,6 +27,7 @@ class ModuleBase
2627
ModuleBase::tyEmulationStarting EmulationStarting;
2728
ModuleBase::tyEmulationStopping EmulationStopping;
2829
ModuleBase::tyModuleCleanup ModuleCleanup;
30+
ModuleBase::tyFlushSettings FlushSettings;
2931

3032
protected:
3133
virtual void UnloadModule(void) = 0;
Lines changed: 63 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,80 @@
11
#include "module_settings.h"
22
#include "settings/settings.h"
33

4-
std::string ModuleSettings::GetString(const char * setting) const
4+
const char * ModuleSettings::GetString(const char * setting) const
55
{
6-
return Settings::GetInstance().GetString(setting);
6+
return SettingsStore::GetInstance().GetString(setting);
77
}
88

99
bool ModuleSettings::GetBool(const char * setting) const
1010
{
11-
return Settings::GetInstance().GetBool(setting);
11+
return SettingsStore::GetInstance().GetBool(setting);
12+
}
13+
14+
int32_t ModuleSettings::GetInt(const char* setting) const
15+
{
16+
return SettingsStore::GetInstance().GetInt(setting);
1217
}
1318

1419
void ModuleSettings::SetString(const char * setting, const char * value)
1520
{
16-
Settings::GetInstance().SetString(setting, value);
21+
SettingsStore::GetInstance().SetString(setting, value);
1722
}
1823

1924
void ModuleSettings::SetBool(const char * setting, bool value)
2025
{
21-
Settings::GetInstance().SetBool(setting, value);
26+
SettingsStore::GetInstance().SetBool(setting, value);
27+
}
28+
29+
void ModuleSettings::SetInt(const char * setting, int32_t value)
30+
{
31+
SettingsStore::GetInstance().SetInt(setting, value);
32+
}
33+
34+
void ModuleSettings::SetDefaultBool(const char * setting, bool value)
35+
{
36+
SettingsStore::GetInstance().SetDefaultBool(setting, value);
37+
}
38+
39+
void ModuleSettings::SetDefaultInt(const char * setting, int32_t value)
40+
{
41+
SettingsStore::GetInstance().SetDefaultInt(setting, value);
42+
}
43+
44+
void ModuleSettings::SetDefaultString(const char * setting, const char * value)
45+
{
46+
SettingsStore::GetInstance().SetDefaultString(setting, value);
47+
}
48+
49+
const char * ModuleSettings::GetSectionSettings(const char * section) const
50+
{
51+
JsonValue json = SettingsStore::GetInstance().GetSettings(section);
52+
m_sectionSetting = json.isNull() ? "" : JsonStyledWriter().write(json);
53+
return m_sectionSetting.c_str();
54+
}
55+
56+
void ModuleSettings::SetSectionSettings(const char * section, const std::string & json)
57+
{
58+
JsonValue root;
59+
if (!json.empty())
60+
{
61+
JsonReader reader;
62+
if (!reader.Parse(json.data(), json.data() + json.size(), root))
63+
{
64+
return;
65+
}
66+
}
67+
SettingsStore& settings = SettingsStore::GetInstance();
68+
settings.SetSettings(section, root);
69+
settings.Save();
70+
}
71+
72+
void ModuleSettings::RegisterCallback(const char* setting, SettingChangeCallback callback, void * userData)
73+
{
74+
SettingsStore::GetInstance().RegisterCallback(setting, callback, userData);
75+
}
76+
77+
void ModuleSettings::UnregisterCallback(const char* setting, SettingChangeCallback callback, void* userData)
78+
{
79+
__debugbreak();
2280
}

0 commit comments

Comments
 (0)