diff --git a/output/dll/faust.wbx.gz b/output/dll/faust.wbx.gz index 49a92c5073..832e4355bb 100644 Binary files a/output/dll/faust.wbx.gz and b/output/dll/faust.wbx.gz differ diff --git a/output/dll/hyper.wbx.gz b/output/dll/hyper.wbx.gz index 44b4d62806..97b6f60b46 100644 Binary files a/output/dll/hyper.wbx.gz and b/output/dll/hyper.wbx.gz differ diff --git a/output/dll/ngp.wbx.gz b/output/dll/ngp.wbx.gz index 9ba4413704..915f4c9268 100644 Binary files a/output/dll/ngp.wbx.gz and b/output/dll/ngp.wbx.gz differ diff --git a/output/dll/pcfx.wbx.gz b/output/dll/pcfx.wbx.gz index 8f5ce553cd..91fd86b8aa 100644 Binary files a/output/dll/pcfx.wbx.gz and b/output/dll/pcfx.wbx.gz differ diff --git a/output/dll/ss.wbx.gz b/output/dll/ss.wbx.gz index 613c0ebc82..cb87bbc06d 100644 Binary files a/output/dll/ss.wbx.gz and b/output/dll/ss.wbx.gz differ diff --git a/output/dll/turbo.wbx.gz b/output/dll/turbo.wbx.gz index cfe81d322e..8ad2df8ac9 100644 Binary files a/output/dll/turbo.wbx.gz and b/output/dll/turbo.wbx.gz differ diff --git a/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Settings.ComponentModel.cs b/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Settings.ComponentModel.cs index e5e48a7fdf..fbaf099b42 100644 --- a/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Settings.ComponentModel.cs +++ b/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Settings.ComponentModel.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Globalization; @@ -170,12 +171,16 @@ namespace BizHawk.Emulation.Cores.Waterbox private class MyTypeConverter : TypeConverter { public SettingT Setting { get; set; } + // Mednafen includes extra fallback aliases of enums that are nameless, just one way value aliases. + // They confuse our code and are not needed here. + private IEnumerable ValidSettingEnums => Setting.SettingEnums + .Where(e => e.Name != null); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) => sourceType == typeof(string); public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) => destinationType == typeof(string); public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { - return Setting.SettingEnums + return ValidSettingEnums .SingleOrDefault(d => d.Name == (string)value) ?.Value ?? Setting.DefaultValue; @@ -183,16 +188,16 @@ namespace BizHawk.Emulation.Cores.Waterbox } public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { - return Setting.SettingEnums + return ValidSettingEnums .SingleOrDefault(d => d.Value == (string)value) ?.Name - ?? Setting.SettingEnums + ?? ValidSettingEnums .Single(d => d.Value == Setting.DefaultValue) .Name; } public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) => new StandardValuesCollection( - Setting.SettingEnums.Select(e => e.Value).ToList() + ValidSettingEnums.Select(e => e.Value).ToList() ); public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) => true; diff --git a/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Settings.cs b/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Settings.cs index 975785ab84..7c9ec9f69f 100644 --- a/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Settings.cs +++ b/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Settings.cs @@ -289,7 +289,8 @@ namespace BizHawk.Emulation.Cores.Waterbox { s.AllOverrides[kvp.Key] = kvp.Value; } - foreach (var setting in GetSettingsData().Concat(ExtraSettings)) + var originalSettings = GetSettingsData(); + foreach (var setting in originalSettings.Concat(ExtraSettings)) { s.AllSettingsByKey.Add(setting.SettingsKey, setting); s.AllSettings.Add(setting); diff --git a/waterbox/nyma/Interfaces.cpp b/waterbox/nyma/Interfaces.cpp index 4fe7f1793f..1d9ee1a596 100644 --- a/waterbox/nyma/Interfaces.cpp +++ b/waterbox/nyma/Interfaces.cpp @@ -176,9 +176,7 @@ namespace Mednafen } bool MDFN_GetSettingB(const char *name) { - char tmp[SETTING_VALUE_MAX_LENGTH]; - FrontendSettingQuery(name, tmp); - return strtol(tmp, nullptr, 10) != 0; + return (bool)MDFN_GetSettingUI(name); } std::string MDFN_GetSettingS(const char *name) {