diff --git a/mgba b/mgba index 4536ce6af0..c70b9a56dc 160000 --- a/mgba +++ b/mgba @@ -1 +1 @@ -Subproject commit 4536ce6af06ca80d34fd4c70b54083889b2d74bf +Subproject commit c70b9a56dc3e197f400061b9635d4d9c1996e282 diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs index f10acfda1e..2dda8a0df0 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -1531,7 +1531,7 @@ namespace BizHawk.Client.EmuHawk private void BatchRunnerMenuItem_Click(object sender, EventArgs e) { - using var form = new BatchRun(); + using var form = new BatchRun(this); form.ShowDialog(); } diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 310f093b9d..a0c1384fe0 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -83,14 +83,18 @@ namespace BizHawk.Client.EmuHawk // its.. weird. don't ask. } - private CoreComm CreateCoreComm() + public CoreComm CreateCoreComm() { var cfp = new CoreFileProvider( ShowMessageCoreComm, Global.FirmwareManager, Config.PathEntries, Config.FirmwareUserSpecifications); - return new CoreComm(ShowMessageCoreComm, NotifyCoreComm, cfp); + var prefs = CoreComm.CorePreferencesFlags.None; + if (Config.SkipWaterboxIntegrityChecks) + prefs = CoreComm.CorePreferencesFlags.WaterboxCoreConsistencyCheck | CoreComm.CorePreferencesFlags.WaterboxMemoryConsistencyCheck; + + return new CoreComm(ShowMessageCoreComm, NotifyCoreComm, cfp, prefs); } public MainForm(string[] args) diff --git a/src/BizHawk.Client.EmuHawk/OpenAdvancedChooser.cs b/src/BizHawk.Client.EmuHawk/OpenAdvancedChooser.cs index 915b11bd74..09262ab1a8 100644 --- a/src/BizHawk.Client.EmuHawk/OpenAdvancedChooser.cs +++ b/src/BizHawk.Client.EmuHawk/OpenAdvancedChooser.cs @@ -71,12 +71,7 @@ namespace BizHawk.Client.EmuHawk // scan the current libretro core to see if it can be launched with NoGame,and other stuff try { - var cfp = new CoreFileProvider( - Console.WriteLine, - Global.FirmwareManager, - Global.Config.PathEntries, - Global.Config.FirmwareUserSpecifications); - var coreComm = new CoreComm(Console.WriteLine, Console.WriteLine, cfp); + var coreComm = _mainForm.CreateCoreComm(); using var retro = new LibretroCore(coreComm, Global.Game, core); btnLibretroLaunchGame.Enabled = true; if (retro.Description.SupportsNoGame) diff --git a/src/BizHawk.Client.EmuHawk/tools/BatchRun.cs b/src/BizHawk.Client.EmuHawk/tools/BatchRun.cs index c9ca3c4ce4..fac654c1e4 100644 --- a/src/BizHawk.Client.EmuHawk/tools/BatchRun.cs +++ b/src/BizHawk.Client.EmuHawk/tools/BatchRun.cs @@ -10,9 +10,11 @@ namespace BizHawk.Client.EmuHawk { private Thread _thread; private List _mostRecentResults; + private MainForm _mainForm; - public BatchRun() + public BatchRun(MainForm mainForm) { + this._mainForm = mainForm; InitializeComponent(); } @@ -81,7 +83,7 @@ namespace BizHawk.Client.EmuHawk try { var pp = (Tuple>)o; - BatchRunner br = new BatchRunner(pp.Item2, pp.Item1); + BatchRunner br = new BatchRunner(_mainForm, pp.Item2, pp.Item1); br.OnProgress += br_OnProgress; var results = br.Run(); this.Invoke(() => { label3.Text = "Status: Finished!"; _mostRecentResults = results; }); diff --git a/src/BizHawk.Client.EmuHawk/tools/BatchRunner.cs b/src/BizHawk.Client.EmuHawk/tools/BatchRunner.cs index c0f11d6a3d..c77e2f9461 100644 --- a/src/BizHawk.Client.EmuHawk/tools/BatchRunner.cs +++ b/src/BizHawk.Client.EmuHawk/tools/BatchRunner.cs @@ -65,7 +65,7 @@ namespace BizHawk.Client.EmuHawk } } - public BatchRunner(IEnumerable files, int numFrames) + public BatchRunner(MainForm mainForm, IEnumerable files, int numFrames) { _files = new List(files); _numFrames = numFrames; @@ -74,7 +74,7 @@ namespace BizHawk.Client.EmuHawk _ldr.OnLoadError += OnLoadError; _ldr.ChooseArchive = ChooseArchive; var cfp = new CoreFileProvider(CommMessage, Global.FirmwareManager, Global.Config.PathEntries, Global.Config.FirmwareUserSpecifications); - _comm = new CoreComm(CommMessage, CommMessage, cfp); + _comm = mainForm.CreateCoreComm(); } private void OnLoadError(object sender, RomLoader.RomErrorArgs e) diff --git a/src/BizHawk.Emulation.Common/CoreComms.cs b/src/BizHawk.Emulation.Common/CoreComms.cs index da09f0e590..e2106acf6a 100644 --- a/src/BizHawk.Emulation.Common/CoreComms.cs +++ b/src/BizHawk.Emulation.Common/CoreComms.cs @@ -13,11 +13,14 @@ namespace BizHawk.Emulation.Common public CoreComm( Action showMessage, Action notifyMessage, - ICoreFileProvider coreFileProvider) + ICoreFileProvider coreFileProvider, + CorePreferencesFlags prefs + ) { ShowMessage = showMessage; Notify = notifyMessage; CoreFileProvider = coreFileProvider; + CorePreferences = prefs; } public ICoreFileProvider CoreFileProvider { get; } @@ -31,5 +34,18 @@ namespace BizHawk.Emulation.Common /// Gets a message to show. less annoying (OSD message). Should be used for ignorable helpful messages /// public Action Notify { get; } + + [Flags] + public enum CorePreferencesFlags + { + None = 0, + WaterboxCoreConsistencyCheck = 1, + WaterboxMemoryConsistencyCheck = 2 + } + + /// + /// Yeah, I put more stuff in corecomm. If you don't like it, change the settings/syncsettings stuff to support multiple "settings sets" to act like ini file sections kind of, so that we can hand a generic settings object to cores instead of strictly ones defined by the cores + /// + public CorePreferencesFlags CorePreferences { get; } } }