diff --git a/BizHawk.Client.Common/movie/NewMnemonicsGenerator.cs b/BizHawk.Client.Common/movie/NewMnemonicsGenerator.cs index f14f3c1f60..d448cd4665 100644 --- a/BizHawk.Client.Common/movie/NewMnemonicsGenerator.cs +++ b/BizHawk.Client.Common/movie/NewMnemonicsGenerator.cs @@ -53,6 +53,25 @@ namespace BizHawk.Client.Common } } + public Dictionary ParseMnemonicString(string mnemonic) + { + // TODo: clean me up + var buttons = new Dictionary(); + var collections = AllCollections.SelectMany(mc => mc).ToList(); + var availMnemonics = AvailableMnemonics; + List mnemonicList = mnemonic.Replace("|", "").ToCharArray().ToList(); + + for (int i = 0; i < collections.Count; i++) + { + if (availMnemonics.ContainsKey(collections[i].Key)) + { + buttons.Add(collections[i].Key, mnemonicList[i] != '.'); + } + } + + return buttons; + } + public string GenerateMnemonicString(Dictionary buttons) { var collections = MnemonicLookup[Global.Emulator.SystemId].Where(x => ActivePlayers.Contains(x.Name)); @@ -129,5 +148,13 @@ namespace BizHawk.Client.Common return MnemonicLookup[Global.Emulator.SystemId].Where(x => ActivePlayers.Contains(x.Name)); } } + + private IEnumerable AllCollections + { + get + { + return MnemonicLookup[Global.Emulator.SystemId]; + } + } } } diff --git a/BizHawk.Client.Common/movie/TasMovie.cs b/BizHawk.Client.Common/movie/TasMovie.cs index d2ff56eb4c..94ef7b9c01 100644 --- a/BizHawk.Client.Common/movie/TasMovie.cs +++ b/BizHawk.Client.Common/movie/TasMovie.cs @@ -310,7 +310,20 @@ namespace BizHawk.Client.Common delegate(Stream s) { StreamReader sr = new StreamReader(s); - // TODO: deserialize input log here + string line = String.Empty; + while (true) + { + line = sr.ReadLine(); + if (line == null) + { + break; + } + else if (line.StartsWith("|")) + { + var parsedButtons = _mg.ParseMnemonicString(line); + _records.Add(new MovieRecord(parsedButtons, captureState: false)); + } + } }); if (Header.StartsFromSavestate) diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index dc9be244d1..ff385aba0b 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -292,6 +292,7 @@ namespace BizHawk.Client.EmuHawk _tas.Filename = file.FullName; _tas.Load(); Global.Config.RecentTas.Add(_tas.Filename); + TASView.ItemCount = _tas.InputLogLength; // TOOD: message to the user } }