From 9b88ae48e8dc3e0516501ef69690bee96dcc0645 Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Thu, 6 Jan 2022 13:49:04 -0800 Subject: [PATCH] fix this annoying line ending thing --- .../movie/MovieConversionExtensions.cs | 592 +++++++++--------- 1 file changed, 296 insertions(+), 296 deletions(-) diff --git a/src/BizHawk.Client.Common/movie/MovieConversionExtensions.cs b/src/BizHawk.Client.Common/movie/MovieConversionExtensions.cs index 9cf8ec5f99..875dd67251 100644 --- a/src/BizHawk.Client.Common/movie/MovieConversionExtensions.cs +++ b/src/BizHawk.Client.Common/movie/MovieConversionExtensions.cs @@ -1,300 +1,300 @@ -using System; -using System.IO; -using System.Linq; - -using BizHawk.Common; -using BizHawk.Emulation.Common; -using BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy; -using BizHawk.Emulation.Cores.Consoles.Sega.gpgx; -using BizHawk.Emulation.Cores.Consoles.Sega.PicoDrive; -using BizHawk.Emulation.Cores.Nintendo.NES; -using BizHawk.Emulation.Cores.Nintendo.SubNESHawk; -using BizHawk.Emulation.Cores.Sega.MasterSystem; - -namespace BizHawk.Client.Common -{ - public static class MovieConversionExtensions - { - public static ITasMovie ToTasMovie(this IMovie old) - { - string newFilename = ConvertFileNameToTasMovie(old.Filename); - var tas = (ITasMovie)old.Session.Get(newFilename); - tas.CopyLog(old.GetLogEntries()); - - old.Truncate(0); // Trying to minimize ram usage - - tas.HeaderEntries.Clear(); - foreach (var (k, v) in old.HeaderEntries) tas.HeaderEntries[k] = v; - - // TODO: we have this version number string generated in multiple places - tas.HeaderEntries[HeaderKeys.MovieVersion] = $"BizHawk v2.0 Tasproj v{TasMovie.CurrentVersion}"; - - tas.SyncSettingsJson = old.SyncSettingsJson; - - tas.Comments.Clear(); - foreach (var comment in old.Comments) - { - tas.Comments.Add(comment); - } - - tas.Subtitles.Clear(); - foreach (var sub in old.Subtitles) - { - tas.Subtitles.Add(sub); - } - - tas.StartsFromSavestate = old.StartsFromSavestate; - tas.TextSavestate = old.TextSavestate; - tas.BinarySavestate = old.BinarySavestate; - tas.SaveRam = old.SaveRam; - - return tas; - } - - public static IMovie ToBk2(this IMovie old) - { - var bk2 = old.Session.Get(old.Filename.Replace(old.PreferredExtension, Bk2Movie.Extension)); - bk2.CopyLog(old.GetLogEntries()); - - bk2.HeaderEntries.Clear(); - foreach (var (k, v) in old.HeaderEntries) bk2.HeaderEntries[k] = v; - - // TODO: we have this version number string generated in multiple places - bk2.HeaderEntries[HeaderKeys.MovieVersion] = "BizHawk v2.0"; - - bk2.SyncSettingsJson = old.SyncSettingsJson; - - bk2.Comments.Clear(); - foreach (var comment in old.Comments) - { - bk2.Comments.Add(comment); - } - - bk2.Subtitles.Clear(); - foreach (var sub in old.Subtitles) - { - bk2.Subtitles.Add(sub); - } - - bk2.TextSavestate = old.TextSavestate; - bk2.BinarySavestate = old.BinarySavestate; - bk2.SaveRam = old.SaveRam; - - return bk2; - } - - public static ITasMovie ConvertToSavestateAnchoredMovie(this ITasMovie old, int frame, byte[] savestate) - { - string newFilename = ConvertFileNameToTasMovie(old.Filename); - - var tas = (ITasMovie)old.Session.Get(newFilename); - tas.BinarySavestate = savestate; - tas.LagLog.Clear(); - - var entries = old.GetLogEntries(); - - tas.CopyLog(entries.Skip(frame)); - tas.CopyVerificationLog(old.VerificationLog); - tas.CopyVerificationLog(entries.Take(frame)); - - // States can't be easily moved over, because they contain the frame number. - // TODO? I'm not sure how this would be done. - old.TasStateManager.Clear(); - - // Lag Log - tas.LagLog.FromLagLog(old.LagLog); - tas.LagLog.StartFromFrame(frame); - - tas.HeaderEntries.Clear(); - foreach (var (k, v) in old.HeaderEntries) tas.HeaderEntries[k] = v; - - tas.StartsFromSavestate = true; - tas.SyncSettingsJson = old.SyncSettingsJson; - - tas.Comments.Clear(); - foreach (string comment in old.Comments) - { - tas.Comments.Add(comment); - } - - tas.Subtitles.Clear(); - foreach (Subtitle sub in old.Subtitles) - { - tas.Subtitles.Add(sub); - } - - foreach (TasMovieMarker marker in old.Markers) - { - if (marker.Frame > frame) - { - tas.Markers.Add(new TasMovieMarker(marker.Frame - frame, marker.Message)); - } - } - - tas.TasStateManager.UpdateSettings(old.TasStateManager.Settings); - - tas.Save(); - return tas; - } - - public static ITasMovie ConvertToSaveRamAnchoredMovie(this ITasMovie old, byte[] saveRam) - { - string newFilename = ConvertFileNameToTasMovie(old.Filename); - - var tas = (ITasMovie)old.Session.Get(newFilename); - tas.SaveRam = saveRam; - tas.TasStateManager.Clear(); - tas.LagLog.Clear(); - - var entries = old.GetLogEntries(); - - tas.CopyVerificationLog(old.VerificationLog); - tas.CopyVerificationLog(entries); - - tas.HeaderEntries.Clear(); - foreach (var (k, v) in old.HeaderEntries) tas.HeaderEntries[k] = v; - - tas.StartsFromSaveRam = true; - tas.SyncSettingsJson = old.SyncSettingsJson; - - tas.Comments.Clear(); - foreach (string comment in old.Comments) - { - tas.Comments.Add(comment); - } - - tas.Subtitles.Clear(); - foreach (Subtitle sub in old.Subtitles) - { - tas.Subtitles.Add(sub); - } - - tas.TasStateManager.UpdateSettings(old.TasStateManager.Settings); - - tas.Save(); - return tas; - } - - // TODO: This doesn't really belong here, but not sure where to put it - public static void PopulateWithDefaultHeaderValues( - this IMovie movie, - IEmulator emulator, - IGameInfo game, - FirmwareManager firmwareManager, - string author) - { - movie.Author = author; - movie.EmulatorVersion = VersionInfo.GetEmuVersion(); - movie.OriginalEmulatorVersion = VersionInfo.GetEmuVersion(); - movie.SystemID = emulator.SystemId; - - var settable = new SettingsAdapter(emulator); - if (settable.HasSyncSettings) - { - movie.SyncSettingsJson = ConfigService.SaveWithType(settable.GetSyncSettings()); - } - - if (game.IsNullInstance()) - { - movie.GameName = "NULL"; - } - else - { - movie.GameName = game.FilesystemSafeName(); - movie.Hash = game.Hash; - if (game.FirmwareHash != null) - { - movie.FirmwareHash = game.FirmwareHash; - } - } - - if (emulator.HasBoardInfo()) - { - movie.BoardName = emulator.AsBoardInfo().BoardName; - } - - if (emulator.HasRegions()) - { - var region = emulator.AsRegionable().Region; - if (region == DisplayType.PAL) - { - movie.HeaderEntries.Add(HeaderKeys.Pal, "1"); - } - } - - if (firmwareManager.RecentlyServed.Count != 0) - { - foreach (var firmware in firmwareManager.RecentlyServed) - { - var key = firmware.ID.MovieHeaderKey; - if (!movie.HeaderEntries.ContainsKey(key)) - { - movie.HeaderEntries.Add(key, firmware.Hash); - } - } - } - - if ((emulator is NES nes && nes.IsVS) - || (emulator is SubNESHawk subnes && subnes.IsVs)) +using System; +using System.IO; +using System.Linq; + +using BizHawk.Common; +using BizHawk.Emulation.Common; +using BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy; +using BizHawk.Emulation.Cores.Consoles.Sega.gpgx; +using BizHawk.Emulation.Cores.Consoles.Sega.PicoDrive; +using BizHawk.Emulation.Cores.Nintendo.NES; +using BizHawk.Emulation.Cores.Nintendo.SubNESHawk; +using BizHawk.Emulation.Cores.Sega.MasterSystem; + +namespace BizHawk.Client.Common +{ + public static class MovieConversionExtensions + { + public static ITasMovie ToTasMovie(this IMovie old) + { + string newFilename = ConvertFileNameToTasMovie(old.Filename); + var tas = (ITasMovie)old.Session.Get(newFilename); + tas.CopyLog(old.GetLogEntries()); + + old.Truncate(0); // Trying to minimize ram usage + + tas.HeaderEntries.Clear(); + foreach (var (k, v) in old.HeaderEntries) tas.HeaderEntries[k] = v; + + // TODO: we have this version number string generated in multiple places + tas.HeaderEntries[HeaderKeys.MovieVersion] = $"BizHawk v2.0 Tasproj v{TasMovie.CurrentVersion}"; + + tas.SyncSettingsJson = old.SyncSettingsJson; + + tas.Comments.Clear(); + foreach (var comment in old.Comments) + { + tas.Comments.Add(comment); + } + + tas.Subtitles.Clear(); + foreach (var sub in old.Subtitles) + { + tas.Subtitles.Add(sub); + } + + tas.StartsFromSavestate = old.StartsFromSavestate; + tas.TextSavestate = old.TextSavestate; + tas.BinarySavestate = old.BinarySavestate; + tas.SaveRam = old.SaveRam; + + return tas; + } + + public static IMovie ToBk2(this IMovie old) + { + var bk2 = old.Session.Get(old.Filename.Replace(old.PreferredExtension, Bk2Movie.Extension)); + bk2.CopyLog(old.GetLogEntries()); + + bk2.HeaderEntries.Clear(); + foreach (var (k, v) in old.HeaderEntries) bk2.HeaderEntries[k] = v; + + // TODO: we have this version number string generated in multiple places + bk2.HeaderEntries[HeaderKeys.MovieVersion] = "BizHawk v2.0"; + + bk2.SyncSettingsJson = old.SyncSettingsJson; + + bk2.Comments.Clear(); + foreach (var comment in old.Comments) + { + bk2.Comments.Add(comment); + } + + bk2.Subtitles.Clear(); + foreach (var sub in old.Subtitles) + { + bk2.Subtitles.Add(sub); + } + + bk2.TextSavestate = old.TextSavestate; + bk2.BinarySavestate = old.BinarySavestate; + bk2.SaveRam = old.SaveRam; + + return bk2; + } + + public static ITasMovie ConvertToSavestateAnchoredMovie(this ITasMovie old, int frame, byte[] savestate) + { + string newFilename = ConvertFileNameToTasMovie(old.Filename); + + var tas = (ITasMovie)old.Session.Get(newFilename); + tas.BinarySavestate = savestate; + tas.LagLog.Clear(); + + var entries = old.GetLogEntries(); + + tas.CopyLog(entries.Skip(frame)); + tas.CopyVerificationLog(old.VerificationLog); + tas.CopyVerificationLog(entries.Take(frame)); + + // States can't be easily moved over, because they contain the frame number. + // TODO? I'm not sure how this would be done. + old.TasStateManager.Clear(); + + // Lag Log + tas.LagLog.FromLagLog(old.LagLog); + tas.LagLog.StartFromFrame(frame); + + tas.HeaderEntries.Clear(); + foreach (var (k, v) in old.HeaderEntries) tas.HeaderEntries[k] = v; + + tas.StartsFromSavestate = true; + tas.SyncSettingsJson = old.SyncSettingsJson; + + tas.Comments.Clear(); + foreach (string comment in old.Comments) + { + tas.Comments.Add(comment); + } + + tas.Subtitles.Clear(); + foreach (Subtitle sub in old.Subtitles) + { + tas.Subtitles.Add(sub); + } + + foreach (TasMovieMarker marker in old.Markers) + { + if (marker.Frame > frame) + { + tas.Markers.Add(new TasMovieMarker(marker.Frame - frame, marker.Message)); + } + } + + tas.TasStateManager.UpdateSettings(old.TasStateManager.Settings); + + tas.Save(); + return tas; + } + + public static ITasMovie ConvertToSaveRamAnchoredMovie(this ITasMovie old, byte[] saveRam) + { + string newFilename = ConvertFileNameToTasMovie(old.Filename); + + var tas = (ITasMovie)old.Session.Get(newFilename); + tas.SaveRam = saveRam; + tas.TasStateManager.Clear(); + tas.LagLog.Clear(); + + var entries = old.GetLogEntries(); + + tas.CopyVerificationLog(old.VerificationLog); + tas.CopyVerificationLog(entries); + + tas.HeaderEntries.Clear(); + foreach (var (k, v) in old.HeaderEntries) tas.HeaderEntries[k] = v; + + tas.StartsFromSaveRam = true; + tas.SyncSettingsJson = old.SyncSettingsJson; + + tas.Comments.Clear(); + foreach (string comment in old.Comments) + { + tas.Comments.Add(comment); + } + + tas.Subtitles.Clear(); + foreach (Subtitle sub in old.Subtitles) + { + tas.Subtitles.Add(sub); + } + + tas.TasStateManager.UpdateSettings(old.TasStateManager.Settings); + + tas.Save(); + return tas; + } + + // TODO: This doesn't really belong here, but not sure where to put it + public static void PopulateWithDefaultHeaderValues( + this IMovie movie, + IEmulator emulator, + IGameInfo game, + FirmwareManager firmwareManager, + string author) + { + movie.Author = author; + movie.EmulatorVersion = VersionInfo.GetEmuVersion(); + movie.OriginalEmulatorVersion = VersionInfo.GetEmuVersion(); + movie.SystemID = emulator.SystemId; + + var settable = new SettingsAdapter(emulator); + if (settable.HasSyncSettings) + { + movie.SyncSettingsJson = ConfigService.SaveWithType(settable.GetSyncSettings()); + } + + if (game.IsNullInstance()) + { + movie.GameName = "NULL"; + } + else + { + movie.GameName = game.FilesystemSafeName(); + movie.Hash = game.Hash; + if (game.FirmwareHash != null) + { + movie.FirmwareHash = game.FirmwareHash; + } + } + + if (emulator.HasBoardInfo()) + { + movie.BoardName = emulator.AsBoardInfo().BoardName; + } + + if (emulator.HasRegions()) + { + var region = emulator.AsRegionable().Region; + if (region == DisplayType.PAL) + { + movie.HeaderEntries.Add(HeaderKeys.Pal, "1"); + } + } + + if (firmwareManager.RecentlyServed.Count != 0) + { + foreach (var firmware in firmwareManager.RecentlyServed) + { + var key = firmware.ID.MovieHeaderKey; + if (!movie.HeaderEntries.ContainsKey(key)) + { + movie.HeaderEntries.Add(key, firmware.Hash); + } + } + } + + if ((emulator is NES nes && nes.IsVS) + || (emulator is SubNESHawk subnes && subnes.IsVs)) { movie.HeaderEntries.Add("IsVS", "1"); - } - - if (emulator is IGameboyCommon gb) - { - if (gb.IsCGBMode()) + } + + if (emulator is IGameboyCommon gb) + { + if (gb.IsCGBMode()) { movie.HeaderEntries.Add(gb.IsCGBDMGMode() ? "IsCGBDMGMode" : "IsCGBMode", "1"); - } - - movie.HeaderEntries.Add(HeaderKeys.CycleCount, "0"); - } - - if (emulator is SMS sms) - { - if (sms.IsSG1000) - { - movie.HeaderEntries.Add("IsSGMode", "1"); - } - - if (sms.IsGameGear) - { - movie.HeaderEntries.Add("IsGGMode", "1"); - } - } - - if (emulator is GPGX gpgx && gpgx.IsMegaCD) - { - movie.HeaderEntries.Add("IsSegaCDMode", "1"); - } - - if (emulator is PicoDrive pico && pico.Is32XActive) - { - movie.HeaderEntries.Add("Is32X", "1"); - } - - if (emulator is SubNESHawk) - { - movie.HeaderEntries.Add(HeaderKeys.VBlankCount, "0"); - } - - movie.Core = ((CoreAttribute)Attribute - .GetCustomAttribute(emulator.GetType(), typeof(CoreAttribute))) - .CoreName; - } - - internal static string ConvertFileNameToTasMovie(string oldFileName) - { - string newFileName = Path.ChangeExtension(oldFileName, $".{TasMovie.Extension}"); - int fileSuffix = 0; - while (File.Exists(newFileName)) - { - // Using this should hopefully be system agnostic - var temp_path = Path.Combine(Path.GetDirectoryName(oldFileName), Path.GetFileNameWithoutExtension(oldFileName)); - newFileName = $"{temp_path} {++fileSuffix}.{TasMovie.Extension}"; - } - - return newFileName; - } - } -} + } + + movie.HeaderEntries.Add(HeaderKeys.CycleCount, "0"); + } + + if (emulator is SMS sms) + { + if (sms.IsSG1000) + { + movie.HeaderEntries.Add("IsSGMode", "1"); + } + + if (sms.IsGameGear) + { + movie.HeaderEntries.Add("IsGGMode", "1"); + } + } + + if (emulator is GPGX gpgx && gpgx.IsMegaCD) + { + movie.HeaderEntries.Add("IsSegaCDMode", "1"); + } + + if (emulator is PicoDrive pico && pico.Is32XActive) + { + movie.HeaderEntries.Add("Is32X", "1"); + } + + if (emulator is SubNESHawk) + { + movie.HeaderEntries.Add(HeaderKeys.VBlankCount, "0"); + } + + movie.Core = ((CoreAttribute)Attribute + .GetCustomAttribute(emulator.GetType(), typeof(CoreAttribute))) + .CoreName; + } + + internal static string ConvertFileNameToTasMovie(string oldFileName) + { + string newFileName = Path.ChangeExtension(oldFileName, $".{TasMovie.Extension}"); + int fileSuffix = 0; + while (File.Exists(newFileName)) + { + // Using this should hopefully be system agnostic + var temp_path = Path.Combine(Path.GetDirectoryName(oldFileName), Path.GetFileNameWithoutExtension(oldFileName)); + newFileName = $"{temp_path} {++fileSuffix}.{TasMovie.Extension}"; + } + + return newFileName; + } + } +}