diff --git a/BizHawk.MultiClient/MainForm.Movie.cs b/BizHawk.MultiClient/MainForm.Movie.cs index d5cfd6a95d..223ac5c927 100644 --- a/BizHawk.MultiClient/MainForm.Movie.cs +++ b/BizHawk.MultiClient/MainForm.Movie.cs @@ -34,7 +34,7 @@ namespace BizHawk.MultiClient SetSyncDependentSettings(); } - LoadRom(Global.MainForm.CurrentlyOpenRom, true); + LoadRom(Global.MainForm.CurrentlyOpenRom, true, !record); Global.Config.RecentMovies.Add(m.Filename); if (Global.MovieSession.Movie.StartsFromSavestate) @@ -111,7 +111,7 @@ namespace BizHawk.MultiClient { if (Global.MovieSession.Movie.IsActive) { - LoadRom(CurrentlyOpenRom, true); + LoadRom(CurrentlyOpenRom, true, true); if (Global.MovieSession.Movie.StartsFromSavestate) { LoadStateFile(Global.MovieSession.Movie.Filename, Path.GetFileName(Global.MovieSession.Movie.Filename)); diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index 9aa063dc72..a472ab8ec8 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -2023,7 +2023,7 @@ namespace BizHawk.MultiClient Global.MovieOutputHardpoint.Source = Global.MovieInputSourceAdapter; } - public bool LoadRom(string path, bool deterministicemulation = false) + public bool LoadRom(string path, bool deterministicemulation = false, bool hasmovie = false) { if (path == null) return false; using (var file = new HawkFile()) @@ -2485,7 +2485,7 @@ namespace BizHawk.MultiClient if (INTERIM) { Global.Game = game; - VideoPluginSettings video_settings = N64GenerateVideoSettings(game); + VideoPluginSettings video_settings = N64GenerateVideoSettings(game, hasmovie); int SaveType = 0; if (game.OptionValue("SaveType") == "EEPROM_16K") { @@ -3867,22 +3867,22 @@ namespace BizHawk.MultiClient Cheats1.Focus(); } - public VideoPluginSettings N64GenerateVideoSettings(GameInfo game) + public VideoPluginSettings N64GenerateVideoSettings(GameInfo game, bool hasmovie) { - VideoPluginSettings video_settings = new VideoPluginSettings(Global.Config.N64VidPlugin, Global.Config.N64VideoSizeX, Global.Config.N64VideoSizeY); - string PluginToUse = ""; - /* - if (Global.MovieSession.Movie.Header.HeaderParams[MovieHeader.PLATFORM] == "N64") + + if (hasmovie && Global.MovieSession.Movie.Header.HeaderParams[MovieHeader.PLATFORM] == "N64" && Global.MovieSession.Movie.Header.HeaderParams.ContainsKey(MovieHeader.VIDEOPLUGIN)) { PluginToUse = Global.MovieSession.Movie.Header.HeaderParams[MovieHeader.VIDEOPLUGIN]; } - */ - if (PluginToUse == "") + + if (PluginToUse == "" || (PluginToUse != "Rice" && PluginToUse != "Glide64")) { PluginToUse = Global.Config.N64VidPlugin; } + VideoPluginSettings video_settings = new VideoPluginSettings(PluginToUse, Global.Config.N64VideoSizeX, Global.Config.N64VideoSizeY); + if (PluginToUse == "Rice") { Global.Config.RicePlugin.FillPerGameHacks(game); @@ -3893,19 +3893,44 @@ namespace BizHawk.MultiClient Global.Config.GlidePlugin.FillPerGameHacks(game); video_settings.Parameters = Global.Config.GlidePlugin.GetPluginSettings(); } - /* - if (Global.MovieSession.Movie.Header.HeaderParams[MovieHeader.PLATFORM] == "N64") + + if (hasmovie && Global.MovieSession.Movie.Header.HeaderParams[MovieHeader.PLATFORM] == "N64" && Global.MovieSession.Movie.Header.HeaderParams.ContainsKey(MovieHeader.VIDEOPLUGIN)) { List settings = new List(video_settings.Parameters.Keys); foreach (string setting in settings) { if (Global.MovieSession.Movie.Header.HeaderParams.ContainsKey(setting)) { - video_settings.Parameters[setting] = Global.MovieSession.Movie.Header.HeaderParams[setting]; + string Value = Global.MovieSession.Movie.Header.HeaderParams[setting]; + if (video_settings.Parameters[setting].GetType() == typeof(bool)) + { + try + { + video_settings.Parameters[setting] = bool.Parse(Value); + } + catch { } + /* + if (Value == "True") + { + video_settings.Parameters[setting] = true; + } + else if (Value == "False") + { + video_settings.Parameters[setting] = false; + }*/ + } + else if (video_settings.Parameters[setting].GetType() == typeof(int)) + { + try + { + video_settings.Parameters[setting] = int.Parse(Value); + } + catch { } + } } } } - */ + return video_settings; } diff --git a/BizHawk.MultiClient/movie/MovieHeader.cs b/BizHawk.MultiClient/movie/MovieHeader.cs index 1c2e1b1136..e3621b9f9a 100644 --- a/BizHawk.MultiClient/movie/MovieHeader.cs +++ b/BizHawk.MultiClient/movie/MovieHeader.cs @@ -224,29 +224,32 @@ namespace BizHawk.MultiClient { if (HeaderParams[PLATFORM] == "N64") { - if (HeaderParams[VIDEOPLUGIN] == "Rice") + if (HeaderParams.ContainsKey(VIDEOPLUGIN)) { - ICollection settings = Global.Config.RicePlugin.GetPluginSettings().Keys; - foreach (string setting in settings) + if (HeaderParams[VIDEOPLUGIN] == "Rice") { - if (line.Contains(setting)) + ICollection settings = Global.Config.RicePlugin.GetPluginSettings().Keys; + foreach (string setting in settings) { - line = ParseHeader(line, setting); - AddHeaderLine(setting, line); - break; + if (line.Contains(setting)) + { + line = ParseHeader(line, setting); + AddHeaderLine(setting, line); + break; + } } } - } - else if (HeaderParams[VIDEOPLUGIN] == "Glide64") - { - ICollection settings = Global.Config.GlidePlugin.GetPluginSettings().Keys; - foreach (string setting in settings) + else if (HeaderParams[VIDEOPLUGIN] == "Glide64") { - if (line.Contains(setting)) + ICollection settings = Global.Config.GlidePlugin.GetPluginSettings().Keys; + foreach (string setting in settings) { - line = ParseHeader(line, setting); - AddHeaderLine(setting, line); - break; + if (line.Contains(setting)) + { + line = ParseHeader(line, setting); + AddHeaderLine(setting, line); + break; + } } } }