Nuke IMovieHeader, put necessary methods into IMovie instead, and some todos on trouble spots for movie 2.0
This commit is contained in:
parent
47d5b1e2e2
commit
a682c667dd
|
@ -141,7 +141,6 @@
|
|||
<Compile Include="movie\HeaderKeys.cs" />
|
||||
<Compile Include="movie\InputAdapters.cs" />
|
||||
<Compile Include="movie\interfaces\IMovie.cs" />
|
||||
<Compile Include="movie\interfaces\IMovieHeader.cs" />
|
||||
<Compile Include="movie\MnemonicGenerators\BooleanControllerMnemonicGenerator.cs" />
|
||||
<Compile Include="movie\MnemonicGenerators\IMnemonicGenerator.cs" />
|
||||
<Compile Include="movie\MnemonicGenerators\IMnemonicPorts.cs" />
|
||||
|
|
|
@ -123,7 +123,7 @@ namespace BizHawk.Client.Common
|
|||
)]
|
||||
public static string RerecordCount()
|
||||
{
|
||||
return Global.MovieSession.Movie.Header.Rerecords.ToString();
|
||||
return Global.MovieSession.Movie.Rerecords.ToString();
|
||||
}
|
||||
|
||||
[LuaMethodAttributes(
|
||||
|
|
|
@ -419,13 +419,14 @@ namespace BizHawk.Client.Common
|
|||
// Try to parse the re-record count as an integer, defaulting to 0 if it fails.
|
||||
try
|
||||
{
|
||||
rerecordCount = int.Parse(ParseHeader(line, "rerecordCount"));
|
||||
rerecordCount = int.Parse(ParseHeader(line, "rerecordCount"));
|
||||
}
|
||||
catch
|
||||
{
|
||||
rerecordCount = 0;
|
||||
rerecordCount = 0;
|
||||
}
|
||||
m.Header.Rerecords = (ulong)rerecordCount;
|
||||
|
||||
m.Rerecords = (ulong)rerecordCount;
|
||||
}
|
||||
else if (line.ToLower().StartsWith("guid"))
|
||||
{
|
||||
|
@ -582,7 +583,7 @@ namespace BizHawk.Client.Common
|
|||
uint frameCount = r.ReadUInt32();
|
||||
// 010 4-byte little-endian unsigned int: rerecord count
|
||||
uint rerecordCount = r.ReadUInt32();
|
||||
m.Header.Rerecords = rerecordCount;
|
||||
m.Rerecords = rerecordCount;
|
||||
/*
|
||||
018 4-byte little-endian unsigned int: offset to the savestate inside file
|
||||
The savestate offset is <header_size + length_of_metadata_in_bytes + padding>. The savestate offset should be
|
||||
|
@ -828,7 +829,7 @@ namespace BizHawk.Client.Common
|
|||
loaded, the number is 0. Famtasia however displays "1" in such case. It always adds 1 to the number found in
|
||||
the file.
|
||||
*/
|
||||
m.Header.Rerecords = rerecordCount + 1;
|
||||
m.Rerecords = rerecordCount + 1;
|
||||
// 00E 2-byte little-endian unsigned int: unknown, set to 0000
|
||||
r.ReadInt16();
|
||||
// 010 64-byte zero-terminated emulator identifier string
|
||||
|
@ -933,7 +934,7 @@ namespace BizHawk.Client.Common
|
|||
m.Comments.Add(EMULATIONORIGIN + " Gens");
|
||||
// 010 4-byte little-endian unsigned int: rerecord count
|
||||
uint rerecordCount = r.ReadUInt32();
|
||||
m.Header.Rerecords = rerecordCount;
|
||||
m.Rerecords = rerecordCount;
|
||||
// 014 ASCII-encoded controller config for player 1. '3' or '6'.
|
||||
string player1Config = r.ReadStringFixedAscii(1);
|
||||
// 015 ASCII-encoded controller config for player 2. '3' or '6'.
|
||||
|
@ -1203,7 +1204,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
rerecordCount = 0;
|
||||
}
|
||||
m.Header.Rerecords = (ulong)rerecordCount;
|
||||
m.Rerecords = (ulong)rerecordCount;
|
||||
hf.Unbind();
|
||||
}
|
||||
else if (item.Name.EndsWith(".sha256"))
|
||||
|
@ -1298,7 +1299,7 @@ namespace BizHawk.Client.Common
|
|||
m.Header[HeaderKeys.GAMENAME] = gameName;
|
||||
// 070 uint32 Re-record Count
|
||||
uint rerecordCount = r.ReadUInt32();
|
||||
m.Header.Rerecords = (ulong)rerecordCount;
|
||||
m.Rerecords = (ulong)rerecordCount;
|
||||
// 074 5-byte Console indicator (pce, ngp, pcfx, wswan)
|
||||
string platform = NullTerminated(r.ReadStringFixedAscii(5));
|
||||
Dictionary<string, Dictionary<string, object>> platforms = new Dictionary<string, Dictionary<string, object>>
|
||||
|
@ -1411,7 +1412,7 @@ namespace BizHawk.Client.Common
|
|||
uint frameCount = r.ReadUInt32();
|
||||
// 000c: 4-byte little endian unsigned int: rerecord count
|
||||
uint rerecordCount = r.ReadUInt32();
|
||||
m.Header.Rerecords = rerecordCount;
|
||||
m.Rerecords = rerecordCount;
|
||||
// 0010: 4-byte little endian flag: begin from reset?
|
||||
uint reset = r.ReadUInt32();
|
||||
if (reset == 0)
|
||||
|
@ -1674,7 +1675,7 @@ namespace BizHawk.Client.Common
|
|||
m.Header[HeaderKeys.PAL] = pal.ToString();
|
||||
// 004 4-byte little-endian unsigned int: rerecord count
|
||||
uint rerecordCount = r.ReadUInt32();
|
||||
m.Header.Rerecords = rerecordCount;
|
||||
m.Rerecords = rerecordCount;
|
||||
/*
|
||||
008 4-byte little-endian unsigned int: length of movie description
|
||||
00C (variable) null-terminated UTF-8 text, movie description (currently not implemented)
|
||||
|
@ -1774,7 +1775,7 @@ namespace BizHawk.Client.Common
|
|||
uint uid = r.ReadUInt32();
|
||||
|
||||
// 00C 4-byte little-endian unsigned int: rerecord count
|
||||
m.Header.Rerecords = r.ReadUInt32();
|
||||
m.Rerecords = r.ReadUInt32();
|
||||
// 010 4-byte little-endian unsigned int: number of frames
|
||||
uint frameCount = r.ReadUInt32();
|
||||
// 014 1-byte flags "controller mask"
|
||||
|
@ -2034,7 +2035,7 @@ namespace BizHawk.Client.Common
|
|||
uint frameCount = r.ReadUInt32();
|
||||
// 010 4-byte little-endian unsigned int: rerecord count
|
||||
uint rerecordCount = r.ReadUInt32();
|
||||
m.Header.Rerecords = rerecordCount;
|
||||
m.Rerecords = rerecordCount;
|
||||
// 014 1-byte flags: (movie start flags)
|
||||
byte flags = r.ReadByte();
|
||||
// bit 0: if "1", movie starts from an embedded "quicksave" snapshot
|
||||
|
@ -2334,7 +2335,7 @@ namespace BizHawk.Client.Common
|
|||
r.ReadBytes(2);
|
||||
// 01C 4-byte little-endian integer: rerecord count
|
||||
uint rerecordCount = r.ReadUInt32();
|
||||
m.Header.Rerecords = rerecordCount;
|
||||
m.Rerecords = rerecordCount;
|
||||
/*
|
||||
020 BYTE RenderMethod
|
||||
0=POST_ALL,1=PRE_ALL
|
||||
|
@ -2521,7 +2522,7 @@ namespace BizHawk.Client.Common
|
|||
uint frameCount = r.ReadUInt32();
|
||||
// 00D 4-byte little-endian unsigned int: number of rerecords
|
||||
uint rerecordCount = r.ReadUInt32();
|
||||
m.Header.Rerecords = rerecordCount;
|
||||
m.Rerecords = rerecordCount;
|
||||
// 011 4-byte little-endian unsigned int: number of frames removed by rerecord
|
||||
r.ReadBytes(4);
|
||||
// 015 4-byte little-endian unsigned int: number of frames advanced step by step
|
||||
|
|
|
@ -21,15 +21,14 @@ namespace BizHawk.Client.Common
|
|||
public Movie2(string filename, bool startsFromSavestate = false)
|
||||
: this(startsFromSavestate)
|
||||
{
|
||||
Header.Rerecords = 0;
|
||||
Rerecords = 0;
|
||||
Filename = filename;
|
||||
}
|
||||
|
||||
public Movie2(bool startsFromSavestate = false)
|
||||
{
|
||||
Header = new MovieHeader2();
|
||||
Filename = string.Empty;
|
||||
Header.StartsFromSavestate = startsFromSavestate;
|
||||
StartsFromSavestate = startsFromSavestate;
|
||||
|
||||
IsCountingRerecords = true;
|
||||
_mode = Moviemode.Inactive;
|
||||
|
@ -39,9 +38,8 @@ namespace BizHawk.Client.Common
|
|||
#region Implementation
|
||||
|
||||
public string PreferredExtension { get { return "bk2"; } }
|
||||
|
||||
public bool IsCountingRerecords { get; set; }
|
||||
public IMovieHeader Header { get; private set; }
|
||||
|
||||
public SubtitleList Subtitles
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
|
@ -78,6 +76,58 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
}
|
||||
|
||||
public ulong Rerecords
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public bool StartsFromSavestate
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public string GameName
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public string SystemID
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsActive
|
||||
{
|
||||
get { return _mode != Moviemode.Inactive; }
|
||||
|
|
|
@ -5,172 +5,8 @@ using System.Text;
|
|||
|
||||
namespace BizHawk.Client.Common
|
||||
{
|
||||
public class MovieHeader2 : IMovieHeader
|
||||
public class MovieHeader2
|
||||
{
|
||||
public ulong Rerecords
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public bool StartsFromSavestate
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public string SavestateBinaryBase64Blob
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public string GameName
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public string SystemID
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public bool ParseLineFromFile(string line)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void Add(string key, string value)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public bool ContainsKey(string key)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public ICollection<string> Keys
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public bool Remove(string key)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public bool TryGetValue(string key, out string value)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public ICollection<string> Values
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public string this[string key]
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public void Add(KeyValuePair<string, string> item)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public bool Contains(KeyValuePair<string, string> item)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void CopyTo(KeyValuePair<string, string>[] array, int arrayIndex)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public int Count
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public bool IsReadOnly
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public bool Remove(KeyValuePair<string, string> item)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public IEnumerator<KeyValuePair<string, string>> GetEnumerator()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
#region Won't implement
|
||||
|
||||
public SubtitleList Subtitles
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public List<string> Comments
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace BizHawk.Client.Common
|
|||
public Movie(string filename, bool startsFromSavestate = false)
|
||||
: this(startsFromSavestate)
|
||||
{
|
||||
Header.Rerecords = 0;
|
||||
Rerecords = 0;
|
||||
Filename = filename;
|
||||
Loaded = !string.IsNullOrWhiteSpace(filename);
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ namespace BizHawk.Client.Common
|
|||
Header = new MovieHeader();
|
||||
Filename = string.Empty;
|
||||
_preloadFramecount = 0;
|
||||
Header.StartsFromSavestate = startsFromSavestate;
|
||||
StartsFromSavestate = startsFromSavestate;
|
||||
|
||||
IsCountingRerecords = true;
|
||||
_mode = Moviemode.Inactive;
|
||||
|
@ -79,14 +79,66 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
(Header as MovieHeader).SavestateBinaryBase64Blob = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ulong Rerecords
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Header as MovieHeader).Rerecords;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
(Header as MovieHeader).Rerecords = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool StartsFromSavestate
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Header as MovieHeader).StartsFromSavestate;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
(Header as MovieHeader).StartsFromSavestate = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string GameName
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Header as MovieHeader).GameName;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
(Header as MovieHeader).GameName = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string SystemID
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Header as MovieHeader).SystemID;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
(Header as MovieHeader).SystemID = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string PreferredExtension { get { return "bkm"; } }
|
||||
|
||||
// TODO: delete me
|
||||
public static string Extension { get { return "bkm"; } }
|
||||
|
||||
public IMovieHeader Header { get; private set; }
|
||||
public MovieHeader Header { get; private set; }
|
||||
|
||||
public string Filename { get; set; }
|
||||
public bool IsCountingRerecords { get; set; }
|
||||
|
@ -151,7 +203,7 @@ namespace BizHawk.Client.Common
|
|||
// If Starting a new recording requires clearing sram it shoudl be done at a higher layer and not rely on all IMovies doing this
|
||||
// Haven't removed it yet because I coudln't guarantee that power-on movies coudl live without it
|
||||
// And the immediate fire is that Savestate movies are breaking
|
||||
if (!Header.StartsFromSavestate) // && Global.Emulator.SystemId != "WSWAN")
|
||||
if (!StartsFromSavestate)
|
||||
{
|
||||
Global.Emulator.ClearSaveRam();
|
||||
}
|
||||
|
@ -169,7 +221,7 @@ namespace BizHawk.Client.Common
|
|||
public void StartNewPlayback()
|
||||
{
|
||||
// See StartNewRecording for details as to why this savestate check is here
|
||||
if (!Header.StartsFromSavestate) // && Global.Emulator.SystemId != "WSWAN")
|
||||
if (!StartsFromSavestate)
|
||||
{
|
||||
Global.Emulator.ClearSaveRam();
|
||||
}
|
||||
|
@ -688,7 +740,7 @@ namespace BizHawk.Client.Common
|
|||
|
||||
if (IsCountingRerecords)
|
||||
{
|
||||
Header.Rerecords++;
|
||||
Rerecords++;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -3,7 +3,7 @@ using System.Text;
|
|||
|
||||
namespace BizHawk.Client.Common
|
||||
{
|
||||
public class MovieHeader : Dictionary<string, string>, IMovieHeader
|
||||
public class MovieHeader : Dictionary<string, string>
|
||||
{
|
||||
public MovieHeader()
|
||||
{
|
||||
|
|
|
@ -55,10 +55,14 @@ namespace BizHawk.Client.Common
|
|||
/// </summary>
|
||||
string SyncSettingsJson { get; set; }
|
||||
|
||||
IMovieHeader Header { get; }
|
||||
// TODO: document these
|
||||
SubtitleList Subtitles { get; }
|
||||
IList<string> Comments { get; }
|
||||
string SavestateBinaryBase64Blob { get; set; }
|
||||
ulong Rerecords { get; set; }
|
||||
bool StartsFromSavestate { get; set; }
|
||||
string GameName { get; set; }
|
||||
string SystemID { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace BizHawk.Client.Common
|
||||
{
|
||||
public interface IMovieHeader : IDictionary<string, string>
|
||||
{
|
||||
ulong Rerecords { get; set; }
|
||||
bool StartsFromSavestate { get; set; }
|
||||
string GameName { get; set; }
|
||||
string SystemID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Receives a line and attempts to add as a header
|
||||
/// </summary>
|
||||
/// <param name="line">
|
||||
/// The line of text loaded from a movie file.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// returns false if not a useable header line
|
||||
/// </returns>
|
||||
bool ParseLineFromFile(string line);
|
||||
}
|
||||
}
|
|
@ -122,9 +122,61 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
}
|
||||
|
||||
public ulong Rerecords
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Header as MovieHeader).Rerecords;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
(Header as MovieHeader).Rerecords = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool StartsFromSavestate
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Header as MovieHeader).StartsFromSavestate;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
(Header as MovieHeader).StartsFromSavestate = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string GameName
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Header as MovieHeader).GameName;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
(Header as MovieHeader).GameName = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string SystemID
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Header as MovieHeader).SystemID;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
(Header as MovieHeader).SystemID = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string Filename { get; set; }
|
||||
|
||||
public IMovieHeader Header { get; private set; }
|
||||
public MovieHeader Header { get; private set; }
|
||||
|
||||
public bool IsActive
|
||||
{
|
||||
|
@ -372,7 +424,7 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
});
|
||||
|
||||
if (Header.StartsFromSavestate)
|
||||
if (StartsFromSavestate)
|
||||
{
|
||||
// should we raise some sort of error if there's a savestate in the archive but Header.StartsFromSavestate is false?
|
||||
bl.GetCoreState(
|
||||
|
@ -417,7 +469,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
bs.PutLump(BinaryStateLump.Movieheader, (tw) => tw.WriteLine(Header.ToString()));
|
||||
bs.PutLump(BinaryStateLump.Input, (tw) => tw.WriteLine(GetInputLog()));
|
||||
if (Header.StartsFromSavestate)
|
||||
if (StartsFromSavestate)
|
||||
{
|
||||
#if true
|
||||
bs.PutLump(BinaryStateLump.CorestateText, (tw) => Global.Emulator.SaveStateText(tw));
|
||||
|
|
|
@ -319,7 +319,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
if (Global.MovieSession.Movie.IsActive)
|
||||
{
|
||||
return "Rerecord Count: " + Global.MovieSession.Movie.Header.Rerecords;
|
||||
return "Rerecord Count: " + Global.MovieSession.Movie.Rerecords;
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
|
|
|
@ -41,11 +41,13 @@ namespace BizHawk.Client.EmuHawk
|
|||
if (!record && Global.Emulator.SystemId == "NES") // For NES we need special logic since the movie will drive which core to load
|
||||
{
|
||||
// If either is specified use that, else use whatever is currently set
|
||||
if (Global.MovieSession.Movie.Header[HeaderKeys.CORE] == quicknesName)
|
||||
// Movies 2.0 TODO
|
||||
if ((Global.MovieSession.Movie as Movie).Header[HeaderKeys.CORE] == quicknesName)
|
||||
{
|
||||
Global.Config.NES_InQuickNES = true;
|
||||
}
|
||||
else if (Global.MovieSession.Movie.Header[HeaderKeys.CORE] == neshawkName)
|
||||
// Movies 2.0 TODO
|
||||
else if ((Global.MovieSession.Movie as Movie).Header[HeaderKeys.CORE] == neshawkName)
|
||||
{
|
||||
Global.Config.NES_InQuickNES = false;
|
||||
}
|
||||
|
@ -75,7 +77,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
Global.Config.RecentMovies.Add(movie.Filename);
|
||||
}
|
||||
|
||||
if (Global.MovieSession.Movie.Header.StartsFromSavestate)
|
||||
if (Global.MovieSession.Movie.StartsFromSavestate)
|
||||
{
|
||||
var state = Convert.FromBase64String(Global.MovieSession.Movie.SavestateBinaryBase64Blob);
|
||||
Global.Emulator.LoadStateBinary(new BinaryReader(new MemoryStream(state)));
|
||||
|
@ -155,7 +157,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
if (Global.MovieSession.Movie.IsActive)
|
||||
{
|
||||
LoadRom(CurrentlyOpenRom);
|
||||
if (Global.MovieSession.Movie.Header.StartsFromSavestate)
|
||||
if (Global.MovieSession.Movie.StartsFromSavestate)
|
||||
{
|
||||
var state = Convert.FromBase64String(Global.MovieSession.Movie.SavestateBinaryBase64Blob);
|
||||
Global.Emulator.LoadStateBinary(new BinaryReader(new MemoryStream(state)));
|
||||
|
|
|
@ -53,12 +53,12 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
if (column == 1) // System
|
||||
{
|
||||
text = _movieList[index].Header.SystemID;
|
||||
text = _movieList[index].SystemID;
|
||||
}
|
||||
|
||||
if (column == 2) // Game
|
||||
{
|
||||
text = _movieList[index].Header.GameName;
|
||||
text = _movieList[index].GameName;
|
||||
}
|
||||
|
||||
if (column == 3) // Time
|
||||
|
@ -188,7 +188,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
// Pull out matching names
|
||||
for (var i = 0; i < _movieList.Count; i++)
|
||||
{
|
||||
if (PathManager.FilesystemSafeName(Global.Game) == _movieList[i].Header.GameName)
|
||||
if (PathManager.FilesystemSafeName(Global.Game) == _movieList[i].GameName)
|
||||
{
|
||||
indices.Add(i);
|
||||
}
|
||||
|
@ -340,8 +340,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
copyStr
|
||||
.Append(_movieList[index].Filename).Append('\t')
|
||||
.Append(_movieList[index].Header.SystemID).Append('\t')
|
||||
.Append(_movieList[index].Header.GameName).Append('\t')
|
||||
.Append(_movieList[index].SystemID).Append('\t')
|
||||
.Append(_movieList[index].GameName).Append('\t')
|
||||
.Append(_movieList[index].Time.ToString(@"hh\:mm\:ss\.fff"))
|
||||
.AppendLine();
|
||||
|
||||
|
@ -372,8 +372,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
_movieList = _movieList
|
||||
.OrderByDescending(x => Path.GetFileName(x.Filename))
|
||||
.ThenBy(x => x.Header.SystemID)
|
||||
.ThenBy(x => x.Header.GameName)
|
||||
.ThenBy(x => x.SystemID)
|
||||
.ThenBy(x => x.GameName)
|
||||
.ThenBy(x => x.FrameCount)
|
||||
.ToList();
|
||||
}
|
||||
|
@ -381,8 +381,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
_movieList = _movieList
|
||||
.OrderBy(x => Path.GetFileName(x.Filename))
|
||||
.ThenBy(x => x.Header.SystemID)
|
||||
.ThenBy(x => x.Header.GameName)
|
||||
.ThenBy(x => x.SystemID)
|
||||
.ThenBy(x => x.GameName)
|
||||
.ThenBy(x => x.FrameCount)
|
||||
.ToList();
|
||||
}
|
||||
|
@ -391,18 +391,18 @@ namespace BizHawk.Client.EmuHawk
|
|||
if (_sortReverse)
|
||||
{
|
||||
_movieList = _movieList
|
||||
.OrderByDescending(x => x.Header.SystemID)
|
||||
.OrderByDescending(x => x.SystemID)
|
||||
.ThenBy(x => Path.GetFileName(x.Filename))
|
||||
.ThenBy(x => x.Header.GameName)
|
||||
.ThenBy(x => x.GameName)
|
||||
.ThenBy(x => x.FrameCount)
|
||||
.ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
_movieList = _movieList
|
||||
.OrderBy(x => x.Header.SystemID)
|
||||
.OrderBy(x => x.SystemID)
|
||||
.ThenBy(x => Path.GetFileName(x.Filename))
|
||||
.ThenBy(x => x.Header.GameName)
|
||||
.ThenBy(x => x.GameName)
|
||||
.ThenBy(x => x.FrameCount)
|
||||
.ToList();
|
||||
}
|
||||
|
@ -411,18 +411,18 @@ namespace BizHawk.Client.EmuHawk
|
|||
if (_sortReverse)
|
||||
{
|
||||
_movieList = _movieList
|
||||
.OrderByDescending(x => x.Header.GameName)
|
||||
.OrderByDescending(x => x.GameName)
|
||||
.ThenBy(x => Path.GetFileName(x.Filename))
|
||||
.ThenBy(x => x.Header.SystemID)
|
||||
.ThenBy(x => x.SystemID)
|
||||
.ThenBy(x => x.FrameCount)
|
||||
.ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
_movieList = _movieList
|
||||
.OrderBy(x => x.Header.GameName)
|
||||
.OrderBy(x => x.GameName)
|
||||
.ThenBy(x => Path.GetFileName(x.Filename))
|
||||
.ThenBy(x => x.Header.SystemID)
|
||||
.ThenBy(x => x.SystemID)
|
||||
.ThenBy(x => x.FrameCount)
|
||||
.ToList();
|
||||
}
|
||||
|
@ -433,7 +433,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_movieList = _movieList
|
||||
.OrderByDescending(x => x.FrameCount)
|
||||
.ThenBy(x => Path.GetFileName(x.Filename))
|
||||
.ThenBy(x => x.Header.SystemID)
|
||||
.ThenBy(x => x.SystemID)
|
||||
.ThenBy(x => x.FrameCount)
|
||||
.ToList();
|
||||
}
|
||||
|
@ -442,8 +442,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
_movieList = _movieList
|
||||
.OrderBy(x => x.FrameCount)
|
||||
.ThenBy(x => Path.GetFileName(x.Filename))
|
||||
.ThenBy(x => x.Header.SystemID)
|
||||
.ThenBy(x => x.Header.GameName)
|
||||
.ThenBy(x => x.SystemID)
|
||||
.ThenBy(x => x.GameName)
|
||||
.ToList();
|
||||
}
|
||||
break;
|
||||
|
@ -469,7 +469,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
var firstIndex = MovieView.SelectedIndices[0];
|
||||
MovieView.ensureVisible(firstIndex);
|
||||
|
||||
foreach (var kvp in _movieList[firstIndex].Header)
|
||||
// Movies 2.0 TODO - what responsibility should a mvoie implementation have here?
|
||||
foreach (var kvp in (_movieList[firstIndex] as Movie).Header)
|
||||
{
|
||||
var item = new ListViewItem(kvp.Key);
|
||||
item.SubItems.Add(kvp.Value);
|
||||
|
|
Loading…
Reference in New Issue