nyma big setting update

Moves a lot of settings around, hopefully addressing some concerns
This commit is contained in:
nattthebear 2020-06-14 16:02:33 -04:00
parent 99a5563490
commit ecdfc66617
15 changed files with 96 additions and 2 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -322,8 +322,9 @@ namespace BizHawk.BizInvoke
throw new InvalidOperationException("Savestate internal mismatch");
if (!r.ReadBytes(_hash.Length).SequenceEqual(_hash))
{
// TODO: We'll probably have to allow this for romhackurz
throw new InvalidOperationException("Waterbox consistency guarantee failed");
// romhackurz need this not to throw on them.
// anywhere where non-sync settings enter non-invisible ram, we need this not to throw
Console.Error.WriteLine("WARNING: MEMORY BLOCK CONSISTENCY CHECK FAILED");
}
var newCommittedSize = r.ReadUInt64();
if (newCommittedSize > CommittedSize)

View File

@ -46,6 +46,10 @@ namespace BizHawk.Emulation.Cores.Consoles.NEC.PCE
{ "nyma.rtcrealtime", new SettingOverride { Hide = true } },
{ "pce_fast.slstart", new SettingOverride { NonSync = true, NoRestart = true } },
{ "pce_fast.slend", new SettingOverride { NonSync = true, NoRestart = true } },
{ "pce_fast.correct_aspect", new SettingOverride { NonSync = true } },
{ "pce_fast.mouse_sensitivity", new SettingOverride { Hide = true } },
{ "pce_fast.nospritelimit", new SettingOverride { NonSync = true } },
};
// pce always has two layers, sgx always has 4, and mednafen knows this

View File

@ -56,6 +56,15 @@ namespace BizHawk.Emulation.Cores.Consoles.NEC.PCE
// these can be changed dynamically
{ "pce.slstart", new SettingOverride { NonSync = true, NoRestart = true } },
{ "pce.slend", new SettingOverride { NonSync = true, NoRestart = true } },
{ "pce.h_overscan", new SettingOverride { NonSync = true } },
{ "pce.mouse_sensitivity", new SettingOverride { Hide = true } },
{ "pce.nospritelimit", new SettingOverride { NonSync = true } },
{ "pce.resamp_quality", new SettingOverride { NonSync = true } },
{ "pce.cdpsgvolume", new SettingOverride { NonSync = true, NoRestart = true } },
{ "pce.cddavolume", new SettingOverride { NonSync = true, NoRestart = true } },
{ "pce.adpcmvolume", new SettingOverride { NonSync = true, NoRestart = true } },
};
protected override HashSet<string> ComputeHiddenPorts()

View File

@ -47,6 +47,17 @@ namespace BizHawk.Emulation.Cores.Consoles.NEC.PCFX
{ "pcfx.slstart", new SettingOverride { NonSync = true, NoRestart = true } },
{ "pcfx.slend", new SettingOverride { NonSync = true, NoRestart = true } },
{ "pcfx.mouse_sensitivity", new SettingOverride { Hide = true } },
{ "pcfx.nospritelimit", new SettingOverride { NonSync = true } },
{ "pcfx.high_dotclock_width", new SettingOverride { NonSync = true } },
{ "pcfx.rainbow.chromaip", new SettingOverride { NonSync = true } },
{ "pcfx.adpcm.suppress_channel_reset_clicks", new SettingOverride { NonSync = true } },
{ "pcfx.adpcm.emulate_buggy_codec", new SettingOverride { NonSync = true } },
{ "pcfx.resamp_quality", new SettingOverride { NonSync = true } },
{ "pcfx.resamp_rate_error", new SettingOverride { Hide = true } },
};
protected override HashSet<string> ComputeHiddenPorts()

View File

@ -46,6 +46,15 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Faust
{ "snes_faust.spex.sound", new SettingOverride { Hide = true } },
{ "nyma.rtcinitialtime", new SettingOverride { Hide = true } },
{ "nyma.rtcrealtime", new SettingOverride { Hide = true } },
{ "snes_faust.resamp_rate_error", new SettingOverride { Hide = true } },
{ "snes_faust.resamp_quality", new SettingOverride { NonSync = true } },
{ "snes_faust.correct_aspect", new SettingOverride { NonSync = true } },
{ "snes_faust.slstart", new SettingOverride { NonSync = true } },
{ "snes_faust.slend", new SettingOverride { NonSync = true } },
{ "snes_faust.slstartp", new SettingOverride { NonSync = true } },
{ "snes_faust.slendp", new SettingOverride { NonSync = true } },
{ "snes_faust.h_filter", new SettingOverride { NonSync = true } },
};
}
}

View File

@ -53,6 +53,30 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.Saturn
{ "ss.dbg_exe_cdpath", new SettingOverride { Hide = true } },
{ "ss.dbg_exe_cem", new SettingOverride { Hide = true } },
{ "ss.dbg_exe_hh", new SettingOverride { Hide = true } },
{ "ss.scsp.resamp_quality", new SettingOverride { NonSync = true } }, // Don't set NoRestart = true for this
{ "ss.input.mouse_sensitivity", new SettingOverride { Hide = true } },
{ "ss.input.port1.gun_chairs", new SettingOverride { NonSync = true } },
{ "ss.input.port2.gun_chairs", new SettingOverride { NonSync = true } },
{ "ss.input.port3.gun_chairs", new SettingOverride { NonSync = true } },
{ "ss.input.port4.gun_chairs", new SettingOverride { NonSync = true } },
{ "ss.input.port5.gun_chairs", new SettingOverride { NonSync = true } },
{ "ss.input.port6.gun_chairs", new SettingOverride { NonSync = true } },
{ "ss.input.port7.gun_chairs", new SettingOverride { NonSync = true } },
{ "ss.input.port8.gun_chairs", new SettingOverride { NonSync = true } },
{ "ss.input.port9.gun_chairs", new SettingOverride { NonSync = true } },
{ "ss.input.port10.gun_chairs", new SettingOverride { NonSync = true } },
{ "ss.input.port11.gun_chairs", new SettingOverride { NonSync = true } },
{ "ss.input.port12.gun_chairs", new SettingOverride { NonSync = true } },
{ "ss.slstart", new SettingOverride { NonSync = true } },
{ "ss.slend", new SettingOverride { NonSync = true } },
{ "ss.h_overscan", new SettingOverride { NonSync = true } },
{ "ss.h_blend", new SettingOverride { NonSync = true } },
{ "ss.correct_aspect", new SettingOverride { NonSync = true } },
{ "ss.slstartp", new SettingOverride { NonSync = true } },
{ "ss.slendp", new SettingOverride { NonSync = true } },
};
protected override HashSet<string> ComputeHiddenPorts()

View File

@ -157,6 +157,13 @@ namespace BizHawk.Emulation.Cores.Waterbox
[BizImport(CC)]
public abstract void DumpSettings();
/// <summary>
/// Call when a non-sync setting changes value after emulation started.
/// The new value should already be available from FrontendSettingQuery
/// </summary>
[BizImport(CC)]
public abstract void NotifySettingChanged(string name);
public delegate void FrontendSettingQuery(string setting, IntPtr dest);
[BizImport(CC)]
public abstract void SetFrontendSettingQuery(FrontendSettingQuery q);

View File

@ -36,6 +36,7 @@ namespace BizHawk.Emulation.Cores.Waterbox
var n = o.Clone();
n.Normalize(SettingsInfo);
var ret = NymaSettings.Reboot(_settings, n, SettingsInfo);
var notifies = NymaSettings.ChangedKeys(_settings, n, SettingsInfo).ToList();
_settings = n;
if (SettingsInfo.LayerNames.Count > 0)
@ -48,6 +49,10 @@ namespace BizHawk.Emulation.Cores.Waterbox
}
_nyma.SetLayers(layers);
}
foreach (var key in notifies)
{
_nyma.NotifySettingChanged(key);
}
return ret;
}
@ -105,6 +110,17 @@ namespace BizHawk.Emulation.Cores.Waterbox
DisabledLayers = new HashSet<string>(DisabledLayers.Where(l => info.LayerNames.Contains(l)));
}
public static IEnumerable<string> ChangedKeys(NymaSettings x, NymaSettings y, NymaSettingsInfo info)
{
var possible = info.AllOverrides.Where(kvp => kvp.Value.NonSync && kvp.Value.NoRestart).Select(kvp => kvp.Key);
return possible.Where(key =>
{
x.MednafenValues.TryGetValue(key, out var xx);
y.MednafenValues.TryGetValue(key, out var yy);
return xx != yy;
});
}
public static PutSettingsDirtyBits Reboot(NymaSettings x, NymaSettings y, NymaSettingsInfo info)
{
var restarters = info.AllOverrides.Where(kvp => kvp.Value.NonSync && !kvp.Value.NoRestart).Select(kvp => kvp.Key);

View File

@ -440,6 +440,19 @@ ECL_EXPORT void DumpSettings()
}
}
ECL_EXPORT void NotifySettingChanged(const char* name)
{
for (auto a = Game->Settings; a->name; a++)
{
if (strcmp(a->name, name) == 0)
{
if (a->ChangeNotification)
a->ChangeNotification(name);
return;
}
}
}
static FrameCallback FrameThreadProc = nullptr;
void RegisterFrameThreadProc(FrameCallback threadproc)