From 2229b0ab93605bae4ee7c7bd75f3e7d4b4d5073f Mon Sep 17 00:00:00 2001 From: goyuken Date: Fri, 5 Oct 2012 21:04:46 +0000 Subject: [PATCH] add "FirmwareSHA1" to movie header for SGB and PCECD --- BizHawk.Emulation/Database/GameInfo.cs | 1 + BizHawk.MultiClient/MainForm.cs | 3 +++ BizHawk.MultiClient/RecordMovie.cs | 8 +++++--- BizHawk.MultiClient/movie/MovieHeader.cs | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/BizHawk.Emulation/Database/GameInfo.cs b/BizHawk.Emulation/Database/GameInfo.cs index 97a38e5ba6..461bb0878d 100644 --- a/BizHawk.Emulation/Database/GameInfo.cs +++ b/BizHawk.Emulation/Database/GameInfo.cs @@ -29,6 +29,7 @@ namespace BizHawk public string Hash; public RomStatus Status = RomStatus.NotInDatabase; public bool NotInDatabase = true; + public string FirmwareHash; Dictionary Options = new Dictionary(); diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index 942cec052f..932583bf8a 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -1385,6 +1385,8 @@ namespace BizHawk.MultiClient if (Global.Config.PceEqualizeVolume) game.AddOption("EqualizeVolumes"); if (Global.Config.PceArcadeCardRewindHack) game.AddOption("ArcadeRewindHack"); + game.FirmwareHash = Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(rom.RomData)); + nextEmulator = new PCEngine(game, disc, rom.RomData); break; } @@ -1506,6 +1508,7 @@ namespace BizHawk.MultiClient game.AddOption("SGB"); var snes = new LibsnesCore(); nextEmulator = snes; + game.FirmwareHash = Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(sgbrom)); snes.Load(game, rom.FileData, sgbrom, deterministicemulation); } } diff --git a/BizHawk.MultiClient/RecordMovie.cs b/BizHawk.MultiClient/RecordMovie.cs index 061c2f1196..1512a38f7a 100644 --- a/BizHawk.MultiClient/RecordMovie.cs +++ b/BizHawk.MultiClient/RecordMovie.cs @@ -58,8 +58,8 @@ namespace BizHawk.MultiClient if (result == System.Windows.Forms.DialogResult.Cancel) return; } - - + + MovieToRecord = new Movie(path); //Header @@ -72,6 +72,8 @@ namespace BizHawk.MultiClient { MovieToRecord.Header.SetHeaderLine(MovieHeader.GAMENAME, PathManager.FilesystemSafeName(Global.Game)); MovieToRecord.Header.SetHeaderLine(MovieHeader.SHA1, Global.Game.Hash); + if (Global.Game.FirmwareHash != null) + MovieToRecord.Header.SetHeaderLine(MovieHeader.FIRMWARESHA1, Global.Game.FirmwareHash); } else { @@ -123,7 +125,7 @@ namespace BizHawk.MultiClient } else MessageBox.Show("Please select a movie to record", "File selection error", MessageBoxButtons.OK, MessageBoxIcon.Error); - + } private void Cancel_Click(object sender, EventArgs e) diff --git a/BizHawk.MultiClient/movie/MovieHeader.cs b/BizHawk.MultiClient/movie/MovieHeader.cs index be5acfbde9..0c0220a2e0 100644 --- a/BizHawk.MultiClient/movie/MovieHeader.cs +++ b/BizHawk.MultiClient/movie/MovieHeader.cs @@ -28,6 +28,7 @@ namespace BizHawk.MultiClient public const string STARTSFROMSAVESTATE = "StartsFromSavestate"; public const string FOURSCORE = "FourScore"; public const string SHA1 = "SHA1"; + public const string FIRMWARESHA1 = "FirmwareSHA1"; //Gameboy Settings that affect sync public const string GB_FORCEDMG = "Force_DMG_Mode";