diff --git a/BizHawk.MultiClient/LuaImplementation.cs b/BizHawk.MultiClient/LuaImplementation.cs index 8e2a391596..aca9a8f2f8 100644 --- a/BizHawk.MultiClient/LuaImplementation.cs +++ b/BizHawk.MultiClient/LuaImplementation.cs @@ -1862,7 +1862,7 @@ namespace BizHawk.MultiClient if (x < 0 || x > 9) return; - Global.MainForm.LoadState("QuickLoad" + x.ToString()); + Global.MainForm.LoadState("QuickLoad" + x.ToString(), true); } public void savestate_save(object lua_input) @@ -1879,7 +1879,7 @@ namespace BizHawk.MultiClient { if (lua_input.GetType() == typeof(string)) { - Global.MainForm.LoadStateFile(lua_input.ToString(), Path.GetFileName(lua_input.ToString())); + Global.MainForm.LoadStateFile(lua_input.ToString(), Path.GetFileName(lua_input.ToString()), true); } } diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index 7e49272f71..457be1297a 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -2357,12 +2357,13 @@ namespace BizHawk.MultiClient /// /// Update all tools that are frame dependent like Ram Search before processing /// - public void UpdateToolsBefore() + public void UpdateToolsBefore(bool fromLua = false) { #if WINDOWS - LuaConsole1.StartLuaDrawing(); + if (!fromLua) + LuaConsole1.StartLuaDrawing(); LuaConsole1.LuaImp.FrameRegisterBefore(); - + #endif NESNameTableViewer1.UpdateValues(); NESPPU1.UpdateValues(); @@ -2377,26 +2378,29 @@ namespace BizHawk.MultiClient /// /// Update all tools that are frame dependent like Ram Search after processing /// - public void UpdateToolsAfter() + public void UpdateToolsAfter(bool fromLua = false) { #if WINDOWS - - LuaConsole1.ResumeScripts(true); - + if (!fromLua) + LuaConsole1.ResumeScripts(true); + #endif RamWatch1.UpdateValues(); RamSearch1.UpdateValues(); HexEditor1.UpdateValues(); //The other tool updates are earlier, TAStudio needs to be later so it can display the latest //frame of execution in its list view. - + TAStudio1.UpdateValues(); SNESGraphicsDebugger1.UpdateToolsAfter(); TraceLogger1.UpdateValues(); #if WINDOWS LuaConsole1.LuaImp.FrameRegisterAfter(); - Global.DisplayManager.PreFrameUpdateLuaSource(); - LuaConsole1.EndLuaDrawing(); + if (!fromLua) + { + Global.DisplayManager.PreFrameUpdateLuaSource(); + LuaConsole1.EndLuaDrawing(); + } #endif } @@ -2528,7 +2532,7 @@ namespace BizHawk.MultiClient SaveStateFile(writer, sfd.FileName, false); } - public void LoadStateFile(string path, string name) + public void LoadStateFile(string path, string name, bool fromLua = false) { if (HandleMovieLoadState(path)) { @@ -2550,16 +2554,17 @@ namespace BizHawk.MultiClient reader.Close(); Global.OSD.ClearGUIText(); - UpdateToolsBefore(); - UpdateToolsAfter(); + UpdateToolsBefore(fromLua); + UpdateToolsAfter(fromLua); UpdateToolsLoadstate(); Global.OSD.AddMessage("Loaded state: " + name); + LuaConsole1.LuaImp.SavestateRegisterLoad(name); } else Global.OSD.AddMessage("Loadstate error!"); } - public void LoadState(string name) + public void LoadState(string name, bool fromLua = false) { string path = PathManager.SaveStatePrefix(Global.Game) + "." + name + ".State"; if (File.Exists(path) == false) @@ -2568,8 +2573,7 @@ namespace BizHawk.MultiClient return; } - LoadStateFile(path, name); - LuaConsole1.LuaImp.SavestateRegisterLoad(name); + LoadStateFile(path, name, fromLua); } private void LoadStateAs()