Fix some bk2 crash bugs

This commit is contained in:
adelikat 2014-06-18 19:18:35 +00:00
parent 3eff547413
commit 451049fee8
2 changed files with 38 additions and 27 deletions

View File

@ -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();
}
}
}
}

View File

@ -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;