diff --git a/BizHawk.Client.Common/BizHawk.Client.Common.csproj b/BizHawk.Client.Common/BizHawk.Client.Common.csproj
index f551a77dd7..013fea1fd2 100644
--- a/BizHawk.Client.Common/BizHawk.Client.Common.csproj
+++ b/BizHawk.Client.Common/BizHawk.Client.Common.csproj
@@ -151,6 +151,7 @@
+
diff --git a/BizHawk.Client.Common/movie/MovieService.cs b/BizHawk.Client.Common/movie/MovieService.cs
index 25207b3577..4f0fbde76d 100644
--- a/BizHawk.Client.Common/movie/MovieService.cs
+++ b/BizHawk.Client.Common/movie/MovieService.cs
@@ -6,6 +6,7 @@ using System.Reflection;
using System.Text;
using BizHawk.Common;
+using BizHawk.Client.Common.MovieConversionExtensions;
namespace BizHawk.Client.Common
{
@@ -26,7 +27,17 @@ namespace BizHawk.Client.Common
}
else
{
- return new BkmMovie(path);
+ var movie = new BkmMovie(path);
+
+ if (VersionInfo.DeveloperBuild)
+ {
+ movie.Load();
+ return movie.ToBk2();
+ }
+ else
+ {
+ return movie;
+ }
}
}
diff --git a/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs b/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs
index 8d6b4576f2..ed48a2c4ac 100644
--- a/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs
+++ b/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs
@@ -36,7 +36,8 @@ namespace BizHawk.Client.Common
public string Filename { get; set; }
- public virtual string PreferredExtension { get { return "bk2"; } }
+ public virtual string PreferredExtension { get { return Extension; } }
+ public const string Extension = "bk2";
public bool Changes { get; private set; }
public bool IsCountingRerecords { get; set; }
diff --git a/BizHawk.Client.Common/movie/bkm/BkmMovie.cs b/BizHawk.Client.Common/movie/bkm/BkmMovie.cs
index 7477a7c758..9797534e84 100644
--- a/BizHawk.Client.Common/movie/bkm/BkmMovie.cs
+++ b/BizHawk.Client.Common/movie/bkm/BkmMovie.cs
@@ -37,7 +37,9 @@ namespace BizHawk.Client.Common
return new BkmLogEntryGenerator();
}
- public string PreferredExtension { get { return "bkm"; } }
+ public string PreferredExtension { get { return Extension; } }
+ public const string Extension = "bkm";
+
public BkmHeader Header { get; private set; }
public string Filename { get; set; }
public bool IsCountingRerecords { get; set; }
diff --git a/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs b/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs
new file mode 100644
index 0000000000..95a6e7c70c
--- /dev/null
+++ b/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+
+namespace BizHawk.Client.Common.MovieConversionExtensions
+{
+ public static class MovieConversionExtensions
+ {
+ public static Bk2Movie ToBk2(this BkmMovie bkm)
+ {
+ var newFilename = bkm.Filename + "." + Bk2Movie.Extension;
+ var bk2 = new Bk2Movie(bkm.Filename);
+ bk2.HeaderEntries.Clear();
+ foreach(var kvp in bkm.HeaderEntries)
+ {
+ bk2.HeaderEntries[kvp.Key] = kvp.Value;
+ }
+
+ bk2.SyncSettingsJson = bkm.SyncSettingsJson;
+
+ bk2.Comments.Clear();
+ foreach(var comment in bkm.Comments)
+ {
+ bk2.Comments.Add(comment);
+ }
+
+ bk2.Subtitles.Clear();
+ foreach(var sub in bkm.Subtitles)
+ {
+ bk2.Subtitles.Add(sub);
+ }
+
+ // TODO: savestate
+ // TODO: input log
+
+ return bk2;
+ }
+ }
+}
diff --git a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs
index 0428dd793d..66c30c9f0a 100644
--- a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs
+++ b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs
@@ -31,7 +31,7 @@ namespace BizHawk.Client.Common
}
}
- public const string Extension = "tasproj";
+ public new const string Extension = "tasproj";
public MovieRecord this[int index]
{