nyma big setting update
Moves a lot of settings around, hopefully addressing some concerns
This commit is contained in:
parent
99a5563490
commit
ecdfc66617
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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 } },
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue