Nope, I think it's a good idea now.

Revert "This reverts commit c878c85daeaaf0cae3e28f24bc1a8b511293d7b6."
This reverts commit 1d1f2a18c6.
This commit is contained in:
zeromus 2020-04-23 21:20:59 -04:00
parent 3d3348d365
commit 10bceeb0dc
47 changed files with 199 additions and 180 deletions

View File

@ -195,7 +195,7 @@ namespace BizHawk.Client.Common
_ => (object) null _ => (object) null
}; };
public bool PutSettings(object settings) => Emulator switch public PutSettingsDirtyBits PutSettings(object settings) => Emulator switch
{ {
GPGX gpgx => gpgx.PutSettings((GPGX.GPGXSettings) settings), GPGX gpgx => gpgx.PutSettings((GPGX.GPGXSettings) settings),
LibsnesCore snes => snes.PutSettings((LibsnesCore.SnesSettings) settings), LibsnesCore snes => snes.PutSettings((LibsnesCore.SnesSettings) settings),
@ -204,7 +204,7 @@ namespace BizHawk.Client.Common
QuickNES quickNes => quickNes.PutSettings((QuickNES.QuickNESSettings) settings), QuickNES quickNes => quickNes.PutSettings((QuickNES.QuickNESSettings) settings),
SMS sms => sms.PutSettings((SMS.SmsSettings) settings), SMS sms => sms.PutSettings((SMS.SmsSettings) settings),
WonderSwan ws => ws.PutSettings((WonderSwan.Settings) settings), WonderSwan ws => ws.PutSettings((WonderSwan.Settings) settings),
_ => false _ => PutSettingsDirtyBits.None
}; };
public void SetRenderPlanes(params bool[] args) public void SetRenderPlanes(params bool[] args)

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using BizHawk.Emulation.Common;
namespace BizHawk.Client.Common namespace BizHawk.Client.Common
{ {
@ -26,7 +27,7 @@ namespace BizHawk.Client.Common
string GetDisplayType(); string GetDisplayType();
string GetBoardName(); string GetBoardName();
object GetSettings(); object GetSettings();
bool PutSettings(object settings); PutSettingsDirtyBits PutSettings(object settings);
void SetRenderPlanes(params bool[] args); void SetRenderPlanes(params bool[] args);
} }
} }

View File

@ -2305,10 +2305,11 @@ namespace BizHawk.Client.EmuHawk
public void PutCoreSettings(object o) public void PutCoreSettings(object o)
{ {
var settable = new SettingsAdapter(Emulator); var settable = new SettingsAdapter(Emulator);
if (settable.HasSettings && settable.PutSettings(o)) if (!settable.HasSettings)
{ return;
var dirty = settable.PutSettings(o);
if(dirty.HasFlag(PutSettingsDirtyBits.RebootCore))
FlagNeedsReboot(); FlagNeedsReboot();
}
} }
// TODO: Get/Put settings/sync settings methods could become a service we instantiate and use and pass to other forms // TODO: Get/Put settings/sync settings methods could become a service we instantiate and use and pass to other forms
@ -2322,9 +2323,13 @@ namespace BizHawk.Client.EmuHawk
{ {
AddOnScreenMessage("Attempt to change sync-relevant settings while recording BLOCKED."); AddOnScreenMessage("Attempt to change sync-relevant settings while recording BLOCKED.");
} }
else if (settable.HasSyncSettings && settable.PutSyncSettings(o)) else
{ {
FlagNeedsReboot(); if (!settable.HasSyncSettings)
return;
var dirty = settable.PutSyncSettings(o);
if(dirty.HasFlag(PutSettingsDirtyBits.RebootCore))
FlagNeedsReboot();
} }
} }

View File

@ -41,7 +41,7 @@ namespace BizHawk.Emulation.Common
/// </summary> /// </summary>
/// <param name="o">an object of the same type as the return for GetSettings</param> /// <param name="o">an object of the same type as the return for GetSettings</param>
/// <returns>true if a core reboot will be required to make the changes effective</returns> /// <returns>true if a core reboot will be required to make the changes effective</returns>
bool PutSettings(TSettings o); PutSettingsDirtyBits PutSettings(TSettings o);
/// <summary> /// <summary>
/// changes the movie-sync relevant settings. THIS SHOULD NEVER BE CALLED WHILE RECORDING /// changes the movie-sync relevant settings. THIS SHOULD NEVER BE CALLED WHILE RECORDING
@ -49,7 +49,19 @@ namespace BizHawk.Emulation.Common
/// </summary> /// </summary>
/// <param name="o">an object of the same type as the return for GetSyncSettings</param> /// <param name="o">an object of the same type as the return for GetSyncSettings</param>
/// <returns>true if a core reboot will be required to make the changes effective</returns> /// <returns>true if a core reboot will be required to make the changes effective</returns>
bool PutSyncSettings(TSync o); PutSettingsDirtyBits PutSyncSettings(TSync o);
}
//note: this is a bit of a frail API. If a frontend wants a new flag, cores won't know to yea or nay it
//this could be solved by adding a KnownSettingsDirtyBits on the settings interface
//or, in a pinch, the same thing could be done with THESE flags, so that the interface doesn't
//change but newly-aware cores can simply manifest that they know about more bits, in the same variable they return the bits in
[Flags]
public enum PutSettingsDirtyBits
{
None = 0,
RebootCore = 1,
ScreenLayoutChanged = 2,
} }
/// <summary> /// <summary>
@ -126,7 +138,7 @@ namespace BizHawk.Emulation.Common
} }
/// <exception cref="InvalidOperationException">does not have non-sync settings</exception> /// <exception cref="InvalidOperationException">does not have non-sync settings</exception>
public bool PutSettings(object o) public PutSettingsDirtyBits PutSettings(object o)
{ {
if (!HasSettings) if (!HasSettings)
{ {
@ -134,11 +146,11 @@ namespace BizHawk.Emulation.Common
} }
_tmp1[0] = o; _tmp1[0] = o;
return (bool)_puts.Invoke(_emu, _tmp1); return (PutSettingsDirtyBits)_puts.Invoke(_emu, _tmp1);
} }
/// <exception cref="InvalidOperationException">does not have sync settings</exception> /// <exception cref="InvalidOperationException">does not have sync settings</exception>
public bool PutSyncSettings(object o) public PutSettingsDirtyBits PutSyncSettings(object o)
{ {
if (!HasSyncSettings) if (!HasSyncSettings)
{ {
@ -146,7 +158,7 @@ namespace BizHawk.Emulation.Common
} }
_tmp1[0] = o; _tmp1[0] = o;
return (bool)_putss.Invoke(_emu, _tmp1); return (PutSettingsDirtyBits)_putss.Invoke(_emu, _tmp1);
} }
} }
} }

View File

@ -257,18 +257,18 @@ namespace BizHawk.Emulation.Cores.Arcades.MAME
#region ISettable #region ISettable
public object GetSettings() => null; public object GetSettings() => null;
public bool PutSettings(object o) => false; public PutSettingsDirtyBits PutSettings(object o) => PutSettingsDirtyBits.None;
public SyncSettings GetSyncSettings() public SyncSettings GetSyncSettings()
{ {
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
bool ret = SyncSettings.NeedsReboot(o, _syncSettings); bool ret = SyncSettings.NeedsReboot(o, _syncSettings);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public class SyncSettings public class SyncSettings

View File

@ -11,10 +11,10 @@ namespace BizHawk.Emulation.Cores.Calculators
return _settings.Clone(); return _settings.Clone();
} }
public bool PutSettings(TI83Settings o) public PutSettingsDirtyBits PutSettings(TI83Settings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public object GetSyncSettings() public object GetSyncSettings()
@ -22,9 +22,9 @@ namespace BizHawk.Emulation.Cores.Calculators
return null; return null;
} }
public bool PutSyncSettings(object o) public PutSettingsDirtyBits PutSyncSettings(object o)
{ {
return false; return PutSettingsDirtyBits.None;
} }
public class TI83Settings public class TI83Settings

View File

@ -25,7 +25,7 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
return SyncSettings.Clone(); return SyncSettings.Clone();
} }
public bool PutSettings(AmstradCPCSettings o) public PutSettingsDirtyBits PutSettings(AmstradCPCSettings o)
{ {
// restore user settings to devices // restore user settings to devices
@ -42,14 +42,14 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
Settings = o; Settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(AmstradCPCSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(AmstradCPCSyncSettings o)
{ {
bool ret = AmstradCPCSyncSettings.NeedsReboot(SyncSettings, o); bool ret = AmstradCPCSyncSettings.NeedsReboot(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public class AmstradCPCSettings public class AmstradCPCSettings

View File

@ -20,16 +20,16 @@ namespace BizHawk.Emulation.Cores.Computers.AppleII
public object GetSyncSettings() => null; public object GetSyncSettings() => null;
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
_settings = o; _settings = o;
_machine.Video.IsMonochrome = _settings.Monochrome; _machine.Video.IsMonochrome = _settings.Monochrome;
SetCallbacks(); SetCallbacks();
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(object o) => false; public PutSettingsDirtyBits PutSyncSettings(object o) => PutSettingsDirtyBits.None;
} }
} }

View File

@ -16,16 +16,16 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64
return SyncSettings.Clone(); return SyncSettings.Clone();
} }
public bool PutSettings(C64Settings o) public PutSettingsDirtyBits PutSettings(C64Settings o)
{ {
Settings = o; Settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(C64SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(C64SyncSettings o)
{ {
SyncSettings = o; SyncSettings = o;
return false; return PutSettingsDirtyBits.None;
} }
internal C64Settings Settings { get; private set; } internal C64Settings Settings { get; private set; }

View File

@ -16,18 +16,18 @@ namespace BizHawk.Emulation.Cores.Computers.MSX
return SyncSettings.Clone(); return SyncSettings.Clone();
} }
public bool PutSettings(MSXSettings o) public PutSettingsDirtyBits PutSettings(MSXSettings o)
{ {
bool ret = MSXSettings.RebootNeeded(Settings, o); bool ret = MSXSettings.RebootNeeded(Settings, o);
Settings = o; Settings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(MSXSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(MSXSyncSettings o)
{ {
bool ret = MSXSyncSettings.RebootNeeded(SyncSettings, o); bool ret = MSXSyncSettings.RebootNeeded(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
internal MSXSettings Settings { get; private set; } internal MSXSettings Settings { get; private set; }

View File

@ -20,7 +20,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
public ZXSpectrumSyncSettings GetSyncSettings() => SyncSettings.Clone(); public ZXSpectrumSyncSettings GetSyncSettings() => SyncSettings.Clone();
public bool PutSettings(ZXSpectrumSettings o) public PutSettingsDirtyBits PutSettings(ZXSpectrumSettings o)
{ {
// restore user settings to devices // restore user settings to devices
if (_machine?.AYDevice != null) if (_machine?.AYDevice != null)
@ -39,14 +39,14 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
Settings = o; Settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(ZXSpectrumSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(ZXSpectrumSyncSettings o)
{ {
bool ret = ZXSpectrumSyncSettings.NeedsReboot(SyncSettings, o); bool ret = ZXSpectrumSyncSettings.NeedsReboot(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public class ZXSpectrumSettings public class ZXSpectrumSettings

View File

@ -21,7 +21,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
return SyncSettings.Clone(); return SyncSettings.Clone();
} }
public bool PutSettings(A2600Settings o) public PutSettingsDirtyBits PutSettings(A2600Settings o)
{ {
if (Settings == null || Settings.SECAMColors != o.SECAMColors) if (Settings == null || Settings.SECAMColors != o.SECAMColors)
{ {
@ -29,14 +29,14 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
} }
Settings = o; Settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(A2600SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(A2600SyncSettings o)
{ {
bool ret = A2600SyncSettings.NeedsReboot(SyncSettings, o); bool ret = A2600SyncSettings.NeedsReboot(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
internal A2600Settings Settings { get; private set; } internal A2600Settings Settings { get; private set; }

View File

@ -18,17 +18,17 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(A7800Settings o) public PutSettingsDirtyBits PutSettings(A7800Settings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(A7800SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(A7800SyncSettings o)
{ {
bool ret = A7800SyncSettings.NeedsReboot(_syncSettings, o); bool ret = A7800SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private A7800Settings _settings = new A7800Settings(); private A7800Settings _settings = new A7800Settings();

View File

@ -18,18 +18,18 @@ namespace BizHawk.Emulation.Cores.ColecoVision
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(ColecoSettings o) public PutSettingsDirtyBits PutSettings(ColecoSettings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(ColecoSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(ColecoSyncSettings o)
{ {
bool ret = o.SkipBiosIntro != _syncSettings.SkipBiosIntro; bool ret = o.SkipBiosIntro != _syncSettings.SkipBiosIntro;
ret |= ColecoSyncSettings.NeedsReboot(_syncSettings, o); ret |= ColecoSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public class ColecoSettings public class ColecoSettings

View File

@ -19,17 +19,17 @@ namespace BizHawk.Emulation.Cores.Consoles.ChannelF
return SyncSettings.Clone(); return SyncSettings.Clone();
} }
public bool PutSettings(ChannelFSettings o) public PutSettingsDirtyBits PutSettings(ChannelFSettings o)
{ {
Settings = o; Settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(ChannelFSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(ChannelFSyncSettings o)
{ {
bool ret = ChannelFSyncSettings.NeedsReboot(SyncSettings, o); bool ret = ChannelFSyncSettings.NeedsReboot(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public class ChannelFSettings public class ChannelFSettings

View File

@ -19,17 +19,17 @@ namespace BizHawk.Emulation.Cores.Consoles.Vectrex
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(VectrexSettings o) public PutSettingsDirtyBits PutSettings(VectrexSettings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(VectrexSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(VectrexSyncSettings o)
{ {
bool ret = VectrexSyncSettings.NeedsReboot(_syncSettings, o); bool ret = VectrexSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private VectrexSettings _settings = new VectrexSettings(); private VectrexSettings _settings = new VectrexSettings();

View File

@ -18,17 +18,17 @@ namespace BizHawk.Emulation.Cores.Intellivision
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(IntvSettings o) public PutSettingsDirtyBits PutSettings(IntvSettings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(IntvSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(IntvSyncSettings o)
{ {
bool ret = IntvSyncSettings.NeedsReboot(_syncSettings, o); bool ret = IntvSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private IntvSettings _settings = new IntvSettings(); private IntvSettings _settings = new IntvSettings();

View File

@ -16,17 +16,17 @@ namespace BizHawk.Emulation.Cores.Consoles.O2Hawk
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(O2Settings o) public PutSettingsDirtyBits PutSettings(O2Settings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(O2SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(O2SyncSettings o)
{ {
bool ret = O2SyncSettings.NeedsReboot(_syncSettings, o); bool ret = O2SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public O2Settings _settings = new O2Settings(); public O2Settings _settings = new O2Settings();

View File

@ -330,19 +330,19 @@ namespace BizHawk.Emulation.Cores.Consoles.NEC.PCFX
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
var ret = Settings.NeedsReboot(_settings, o); var ret = Settings.NeedsReboot(_settings, o);
_settings = o; _settings = o;
SetLayerSettings(); SetLayerSettings();
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, o); var ret = SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private void SetNativeSettingsBeforeInit() private void SetNativeSettingsBeforeInit()

View File

@ -15,7 +15,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
return _settings.Clone(); return _settings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
LibmGBA.Layers mask = 0; LibmGBA.Layers mask = 0;
if (o.DisplayBG0) mask |= LibmGBA.Layers.BG0; if (o.DisplayBG0) mask |= LibmGBA.Layers.BG0;
@ -51,7 +51,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
LibmGBA.BizSetPalette(Core, palette); LibmGBA.BizSetPalette(Core, palette);
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
private Settings _settings; private Settings _settings;
@ -139,11 +139,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
bool ret = SyncSettings.NeedsReboot(o, _syncSettings); bool ret = SyncSettings.NeedsReboot(o, _syncSettings);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private SyncSettings _syncSettings; private SyncSettings _syncSettings;

View File

@ -18,16 +18,16 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(object o) public PutSettingsDirtyBits PutSettings(object o)
{ {
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
bool ret = SyncSettings.NeedsReboot(o, _syncSettings); bool ret = SyncSettings.NeedsReboot(o, _syncSettings);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private SyncSettings _syncSettings; private SyncSettings _syncSettings;

View File

@ -20,17 +20,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(GBSettings o) public PutSettingsDirtyBits PutSettings(GBSettings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(GBSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GBSyncSettings o)
{ {
bool ret = GBSyncSettings.NeedsReboot(_syncSettings, o); bool ret = GBSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private GBSettings _settings = new GBSettings(); private GBSettings _settings = new GBSettings();

View File

@ -14,17 +14,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink
public GBLinkSyncSettings GetSyncSettings() => linkSyncSettings.Clone(); public GBLinkSyncSettings GetSyncSettings() => linkSyncSettings.Clone();
public bool PutSettings(GBLinkSettings o) public PutSettingsDirtyBits PutSettings(GBLinkSettings o)
{ {
linkSettings = o; linkSettings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(GBLinkSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GBLinkSyncSettings o)
{ {
bool ret = GBLinkSyncSettings.NeedsReboot(linkSyncSettings, o); bool ret = GBLinkSyncSettings.NeedsReboot(linkSyncSettings, o);
linkSyncSettings = o; linkSyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private GBLinkSettings linkSettings = new GBLinkSettings(); private GBLinkSettings linkSettings = new GBLinkSettings();

View File

@ -14,17 +14,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
public GBLink3xSyncSettings GetSyncSettings() => Link3xSyncSettings.Clone(); public GBLink3xSyncSettings GetSyncSettings() => Link3xSyncSettings.Clone();
public bool PutSettings(GBLink3xSettings o) public PutSettingsDirtyBits PutSettings(GBLink3xSettings o)
{ {
Link3xSettings = o; Link3xSettings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(GBLink3xSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GBLink3xSyncSettings o)
{ {
bool ret = GBLink3xSyncSettings.NeedsReboot(Link3xSyncSettings, o); bool ret = GBLink3xSyncSettings.NeedsReboot(Link3xSyncSettings, o);
Link3xSyncSettings = o; Link3xSyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private GBLink3xSettings Link3xSettings = new GBLink3xSettings(); private GBLink3xSettings Link3xSettings = new GBLink3xSettings();

View File

@ -14,17 +14,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink4x
public GBLink4xSyncSettings GetSyncSettings() => Link4xSyncSettings.Clone(); public GBLink4xSyncSettings GetSyncSettings() => Link4xSyncSettings.Clone();
public bool PutSettings(GBLink4xSettings o) public PutSettingsDirtyBits PutSettings(GBLink4xSettings o)
{ {
Link4xSettings = o; Link4xSettings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(GBLink4xSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GBLink4xSyncSettings o)
{ {
bool ret = GBLink4xSyncSettings.NeedsReboot(Link4xSyncSettings, o); bool ret = GBLink4xSyncSettings.NeedsReboot(Link4xSyncSettings, o);
Link4xSyncSettings = o; Link4xSyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private GBLink4xSettings Link4xSettings = new GBLink4xSettings(); private GBLink4xSettings Link4xSettings = new GBLink4xSettings();

View File

@ -14,7 +14,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
return _settings.Clone(); return _settings.Clone();
} }
public bool PutSettings(GambatteSettings o) public PutSettingsDirtyBits PutSettings(GambatteSettings o)
{ {
_settings = o; _settings = o;
if (IsCGBMode()) if (IsCGBMode())
@ -26,7 +26,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
ChangeDMGColors(_settings.GBPalette); ChangeDMGColors(_settings.GBPalette);
} }
return false; return PutSettingsDirtyBits.None;
} }
public GambatteSyncSettings GetSyncSettings() public GambatteSyncSettings GetSyncSettings()
@ -34,11 +34,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSyncSettings(GambatteSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GambatteSyncSettings o)
{ {
bool ret = GambatteSyncSettings.NeedsReboot(_syncSettings, o); bool ret = GambatteSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private GambatteSettings _settings; private GambatteSettings _settings;

View File

@ -21,14 +21,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
); );
} }
public bool PutSettings(GambatteLinkSettings o) public PutSettingsDirtyBits PutSettings(GambatteLinkSettings o)
{ {
return L.PutSettings(o.L) || R.PutSettings(o.R); return (PutSettingsDirtyBits)((int)L.PutSettings(o.L) | (int)R.PutSettings(o.R));
} }
public bool PutSyncSettings(GambatteLinkSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GambatteLinkSyncSettings o)
{ {
return L.PutSyncSettings(o.L) || R.PutSyncSettings(o.R); return (PutSettingsDirtyBits)((int)L.PutSyncSettings(o.L) | (int)R.PutSyncSettings(o.R));
} }
public class GambatteLinkSettings public class GambatteLinkSettings

View File

@ -245,18 +245,18 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
var ret = Settings.NeedsReboot(_settings, o); var ret = Settings.NeedsReboot(_settings, o);
_settings = o; _settings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, o); var ret = SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
#endregion #endregion

View File

@ -14,17 +14,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(N64Settings o) public PutSettingsDirtyBits PutSettings(N64Settings o)
{ {
_settings = o; _settings = o;
return true; return PutSettingsDirtyBits.RebootCore;
} }
public bool PutSyncSettings(N64SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(N64SyncSettings o)
{ {
_syncSettings = o; _syncSettings = o;
SetControllerButtons(); SetControllerButtons();
return true; return PutSettingsDirtyBits.RebootCore;
} }
private void SetControllerButtons() private void SetControllerButtons()

View File

@ -30,14 +30,14 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.NDS
return ret; return ret;
} }
public bool PutSettings(MelonSettings o) public PutSettingsDirtyBits PutSettings(MelonSettings o)
{ {
_settings = o ?? new MelonSettings(); _settings = o ?? new MelonSettings();
SetScaleFactor(_settings.ScaleFactor); SetScaleFactor(_settings.ScaleFactor);
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(MelonSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(MelonSyncSettings o)
{ {
if (o == null) if (o == null)
{ {
@ -54,7 +54,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.NDS
SetTimeAtBoot(o.TimeAtBoot); SetTimeAtBoot(o.TimeAtBoot);
// At present, no sync settings can be modified without requiring a reboot. // At present, no sync settings can be modified without requiring a reboot.
return true; return PutSettingsDirtyBits.RebootCore;
} }
[DllImport(dllPath)] [DllImport(dllPath)]

View File

@ -12,7 +12,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
public NESSyncSettings GetSyncSettings() => SyncSettings.Clone(); public NESSyncSettings GetSyncSettings() => SyncSettings.Clone();
public bool PutSettings(NESSettings o) public PutSettingsDirtyBits PutSettings(NESSettings o)
{ {
Settings = o; Settings = o;
if (Settings.ClipLeftAndRight) if (Settings.ClipLeftAndRight)
@ -30,14 +30,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
apu.m_vol = Settings.APU_vol; apu.m_vol = Settings.APU_vol;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(NESSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(NESSyncSettings o)
{ {
bool ret = NESSyncSettings.NeedsReboot(SyncSettings, o); bool ret = NESSyncSettings.NeedsReboot(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
internal NESSettings Settings = new NESSettings(); internal NESSettings Settings = new NESSettings();

View File

@ -21,21 +21,21 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES
return _syncSettingsNext.Clone(); return _syncSettingsNext.Clone();
} }
public bool PutSettings(QuickNESSettings o) public PutSettingsDirtyBits PutSettings(QuickNESSettings o)
{ {
_settings = o; _settings = o;
QN.qn_set_sprite_limit(Context, _settings.NumSprites); QN.qn_set_sprite_limit(Context, _settings.NumSprites);
RecalculateCrops(); RecalculateCrops();
CalculatePalette(); CalculatePalette();
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(QuickNESSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(QuickNESSyncSettings o)
{ {
bool ret = QuickNESSyncSettings.NeedsReboot(_syncSettings, o); bool ret = QuickNESSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettingsNext = o; _syncSettingsNext = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private QuickNESSettings _settings; private QuickNESSettings _settings;

View File

@ -14,7 +14,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(SnesSettings o) public PutSettingsDirtyBits PutSettings(SnesSettings o)
{ {
bool refreshNeeded = o.Palette != _settings.Palette; bool refreshNeeded = o.Palette != _settings.Palette;
_settings = o; _settings = o;
@ -23,17 +23,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
RefreshPalette(); RefreshPalette();
} }
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SnesSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SnesSyncSettings o)
{ {
bool ret = o.LeftPort != _syncSettings.LeftPort bool ret = o.LeftPort != _syncSettings.LeftPort
|| o.RightPort != _syncSettings.RightPort || o.RightPort != _syncSettings.RightPort
|| o.LimitAnalogChangeSensitivity != _syncSettings.LimitAnalogChangeSensitivity; || o.LimitAnalogChangeSensitivity != _syncSettings.LimitAnalogChangeSensitivity;
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private SnesSettings _settings; private SnesSettings _settings;

View File

@ -308,7 +308,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES9X
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
_settings = o; _settings = o;
int s = 0; int s = 0;
@ -334,14 +334,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES9X
if (o.ShowSprites3) l |= 2048; if (o.ShowSprites3) l |= 2048;
_core.biz_set_layers(l); _core.biz_set_layers(l);
return false; // no reboot needed return PutSettingsDirtyBits.None; // no reboot needed
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, o); var ret = SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public class Settings public class Settings

View File

@ -58,7 +58,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SubGBHawk
public GBHawk.GBHawk.GBSettings GetSettings() => _GBCore.GetSettings(); public GBHawk.GBHawk.GBSettings GetSettings() => _GBCore.GetSettings();
public GBHawk.GBHawk.GBSyncSettings GetSyncSettings() => _GBCore.GetSyncSettings(); public GBHawk.GBHawk.GBSyncSettings GetSyncSettings() => _GBCore.GetSyncSettings();
public bool PutSettings(GBHawk.GBHawk.GBSettings o) => _GBCore.PutSettings(o); public PutSettingsDirtyBits PutSettings(GBHawk.GBHawk.GBSettings o) => _GBCore.PutSettings(o);
public bool PutSyncSettings(GBHawk.GBHawk.GBSyncSettings o) => _GBCore.PutSyncSettings(o); public PutSettingsDirtyBits PutSyncSettings(GBHawk.GBHawk.GBSyncSettings o) => _GBCore.PutSyncSettings(o);
} }
} }

View File

@ -84,7 +84,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SubNESHawk
public NES.NES.NESSettings GetSettings() => _nesCore.GetSettings(); public NES.NES.NESSettings GetSettings() => _nesCore.GetSettings();
public NES.NES.NESSyncSettings GetSyncSettings() => _nesCore.GetSyncSettings(); public NES.NES.NESSyncSettings GetSyncSettings() => _nesCore.GetSyncSettings();
public bool PutSettings(NES.NES.NESSettings o) => _nesCore.PutSettings(o); public PutSettingsDirtyBits PutSettings(NES.NES.NESSettings o) => _nesCore.PutSettings(o);
public bool PutSyncSettings(NES.NES.NESSyncSettings o) => _nesCore.PutSyncSettings(o); public PutSettingsDirtyBits PutSyncSettings(NES.NES.NESSyncSettings o) => _nesCore.PutSyncSettings(o);
} }
} }

View File

@ -234,18 +234,18 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.VB
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
var ret = Settings.NeedsReboot(_settings, o); var ret = Settings.NeedsReboot(_settings, o);
_settings = o; _settings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, o); var ret = SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
#endregion #endregion

View File

@ -17,7 +17,7 @@ namespace BizHawk.Emulation.Cores.PCEngine
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(PCESettings o) public PutSettingsDirtyBits PutSettings(PCESettings o)
{ {
bool ret; bool ret;
if (o.ArcadeCardRewindHack != Settings.ArcadeCardRewindHack if (o.ArcadeCardRewindHack != Settings.ArcadeCardRewindHack
@ -32,14 +32,14 @@ namespace BizHawk.Emulation.Cores.PCEngine
Settings = o; Settings = o;
return ret; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(PCESyncSettings o) public PutSettingsDirtyBits PutSyncSettings(PCESyncSettings o)
{ {
bool ret = PCESyncSettings.NeedsReboot(o, _syncSettings); bool ret = PCESyncSettings.NeedsReboot(o, _syncSettings);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public PCESettings Settings; public PCESettings Settings;

View File

@ -166,16 +166,16 @@ namespace BizHawk.Emulation.Cores.Consoles.SNK
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(object o) public PutSettingsDirtyBits PutSettings(object o)
{ {
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, o); var ret = SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
#endregion #endregion

View File

@ -16,17 +16,17 @@ namespace BizHawk.Emulation.Cores.Sega.GGHawkLink
return linkSyncSettings.Clone(); return linkSyncSettings.Clone();
} }
public bool PutSettings(GGLinkSettings o) public PutSettingsDirtyBits PutSettings(GGLinkSettings o)
{ {
linkSettings = o; linkSettings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(GGLinkSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GGLinkSyncSettings o)
{ {
bool ret = GGLinkSyncSettings.NeedsReboot(linkSyncSettings, o); bool ret = GGLinkSyncSettings.NeedsReboot(linkSyncSettings, o);
linkSyncSettings = o; linkSyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private GGLinkSettings linkSettings = new GGLinkSettings(); private GGLinkSettings linkSettings = new GGLinkSettings();

View File

@ -229,16 +229,16 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.PicoDrive
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(object o) public PutSettingsDirtyBits PutSettings(object o)
{ {
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, o); var ret = SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
#endregion #endregion

View File

@ -9,18 +9,18 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
public SmsSyncSettings GetSyncSettings() => SyncSettings.Clone(); public SmsSyncSettings GetSyncSettings() => SyncSettings.Clone();
public bool PutSettings(SmsSettings o) public PutSettingsDirtyBits PutSettings(SmsSettings o)
{ {
bool ret = SmsSettings.RebootNeeded(Settings, o); bool ret = SmsSettings.RebootNeeded(Settings, o);
Settings = o; Settings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SmsSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SmsSyncSettings o)
{ {
bool ret = SmsSyncSettings.RebootNeeded(SyncSettings, o); bool ret = SmsSyncSettings.RebootNeeded(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
internal SmsSettings Settings { get; private set; } internal SmsSettings Settings { get; private set; }

View File

@ -439,7 +439,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.Saturn
return _settings.Clone(); return _settings.Clone();
} }
public bool PutSettings(Settings s) public PutSettingsDirtyBits PutSettings(Settings s)
{ {
var ret = Settings.NeedsReboot(_settings, s); var ret = Settings.NeedsReboot(_settings, s);
_settings = s; _settings = s;
@ -449,7 +449,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.Saturn
//(the correct aspect ratio is no longer an option for other reasons) //(the correct aspect ratio is no longer an option for other reasons)
//_core.SetVideoParameters(s.CorrectAspectRatio, s.HBlend, s.HOverscan, sls, sle); //_core.SetVideoParameters(s.CorrectAspectRatio, s.HBlend, s.HOverscan, sls, sle);
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public SyncSettings GetSyncSettings() public SyncSettings GetSyncSettings()
@ -457,11 +457,11 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.Saturn
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSyncSettings(SyncSettings s) public PutSettingsDirtyBits PutSyncSettings(SyncSettings s)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, s); var ret = SyncSettings.NeedsReboot(_syncSettings, s);
_syncSettings = s; _syncSettings = s;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private void SetVideoParameters() private void SetVideoParameters()

View File

@ -21,19 +21,19 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(GPGXSettings o) public PutSettingsDirtyBits PutSettings(GPGXSettings o)
{ {
bool ret = GPGXSettings.NeedsReboot(_settings, o); bool ret = GPGXSettings.NeedsReboot(_settings, o);
_settings = o; _settings = o;
Core.gpgx_set_draw_mask(_settings.GetDrawMask()); Core.gpgx_set_draw_mask(_settings.GetDrawMask());
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(GPGXSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GPGXSyncSettings o)
{ {
bool ret = GPGXSyncSettings.NeedsReboot(_syncSettings, o); bool ret = GPGXSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private class UintToHexConverter : TypeConverter private class UintToHexConverter : TypeConverter

View File

@ -1271,17 +1271,17 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
return _SyncSettings.Clone(); return _SyncSettings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
_Settings.Validate(); _Settings.Validate();
_Settings = o; _Settings = o;
//TODO - store settings into core? or we can just keep doing it before frameadvance //TODO - store settings into core? or we can just keep doing it before frameadvance
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
//currently LEC and pad settings changes both require reboot //currently LEC and pad settings changes both require reboot
bool reboot = true; bool reboot = true;
@ -1293,7 +1293,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
_SyncSettings = o; _SyncSettings = o;
return reboot; return reboot ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
#endregion #endregion

View File

@ -158,19 +158,19 @@ namespace BizHawk.Emulation.Cores.WonderSwan
public SyncSettings GetSyncSettings() => _syncSettings.Clone(); public SyncSettings GetSyncSettings() => _syncSettings.Clone();
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
_settings = o; _settings = o;
var native = _settings.GetNativeSettings(); var native = _settings.GetNativeSettings();
BizSwan.bizswan_putsettings(Core, ref native); BizSwan.bizswan_putsettings(Core, ref native);
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
bool ret = SyncSettings.NeedsReboot(o, _syncSettings); bool ret = SyncSettings.NeedsReboot(o, _syncSettings);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
} }

View File

@ -1,5 +1,6 @@
using Newtonsoft.Json; using Newtonsoft.Json;
using BizHawk.Common; using BizHawk.Common;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Libretro namespace BizHawk.Emulation.Cores.Libretro
{ {
@ -49,17 +50,17 @@ namespace BizHawk.Emulation.Cores.Libretro
return _SyncSettings.Clone(); return _SyncSettings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
_Settings.Validate(); _Settings.Validate();
_Settings = o; _Settings = o;
//TODO - store settings into core? or we can just keep doing it before frameadvance //TODO - store settings into core? or we can just keep doing it before frameadvance
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
bool reboot = false; bool reboot = false;
@ -68,7 +69,7 @@ namespace BizHawk.Emulation.Cores.Libretro
_SyncSettings = o; _SyncSettings = o;
return reboot; return reboot ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
} }