diff --git a/BizHawk.Client.Common/movie/bk2/Bk2LogEntryGenerator.cs b/BizHawk.Client.Common/movie/bk2/Bk2LogEntryGenerator.cs index ba13dec846..15acd07d97 100644 --- a/BizHawk.Client.Common/movie/bk2/Bk2LogEntryGenerator.cs +++ b/BizHawk.Client.Common/movie/bk2/Bk2LogEntryGenerator.cs @@ -78,42 +78,49 @@ namespace BizHawk.Client.Common private string CreateLogEntry(bool createEmpty = false) { - var sb = new StringBuilder(); - sb.Append('|'); - - foreach (var button in _source.Type.BoolButtons) + try { - if (createEmpty) - { - sb.Append('.'); - } - else - { - sb.Append(_source.IsPressed(button) ? Mnemonics[button] : '.'); - } - } + var sb = new StringBuilder(); + sb.Append('|'); - sb.Append('|'); - if (_source.Type.FloatControls.Any()) - { - foreach (var floatBtn in _source.Type.FloatControls) + foreach (var button in _source.Type.BoolButtons) { if (createEmpty) { - sb.Append("000,"); + sb.Append('.'); } else { - var val = (int)_source.GetFloat(floatBtn); - sb.Append(val.ToString().PadLeft(3, '0')).Append(','); + sb.Append(_source.IsPressed(button) ? Mnemonics[button] : '.'); } } - sb.Remove(sb.Length - 1, 1); - } + sb.Append('|'); + if (_source.Type.FloatControls.Any()) + { + foreach (var floatBtn in _source.Type.FloatControls) + { + if (createEmpty) + { + sb.Append("000,"); + } + else + { + var val = (int)_source.GetFloat(floatBtn); + sb.Append(val.ToString().PadLeft(3, '0')).Append(','); + } + } - sb.Append('|'); - return sb.ToString(); + sb.Remove(sb.Length - 1, 1); + } + + sb.Append('|'); + return sb.ToString(); + } + catch (Exception ex) + { + return ex.ToString(); + } } } } diff --git a/BizHawk.Client.EmuHawk/DisplayManager/OSDManager.cs b/BizHawk.Client.EmuHawk/DisplayManager/OSDManager.cs index cae29826f0..702872a6a1 100644 --- a/BizHawk.Client.EmuHawk/DisplayManager/OSDManager.cs +++ b/BizHawk.Client.EmuHawk/DisplayManager/OSDManager.cs @@ -239,11 +239,15 @@ namespace BizHawk.Client.EmuHawk public string InputPrevious() { - if (Global.MovieSession.Movie.IsActive) + if (Global.MovieSession.Movie.IsActive && !Global.MovieSession.Movie.IsFinished) { var lg = Global.MovieSession.Movie.LogGeneratorInstance(); - lg.SetSource(Global.MovieSession.Movie.GetInputState(Global.Emulator.Frame - 1)); - return lg.GenerateInputDisplay(); + var state = Global.MovieSession.Movie.GetInputState(Global.Emulator.Frame - 1); + if (state != null) + { + lg.SetSource(state); + return lg.GenerateInputDisplay(); + } } return string.Empty;