diff --git a/src/BizHawk.Client.Common/IQuickBmpFile.cs b/src/BizHawk.Client.Common/IQuickBmpFile.cs
deleted file mode 100644
index c85494d0ca..0000000000
--- a/src/BizHawk.Client.Common/IQuickBmpFile.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System.IO;
-
-using BizHawk.Emulation.Common;
-
-namespace BizHawk.Client.Common
-{
- public interface IQuickBmpFile
- {
- void Copy(IVideoProvider src, IVideoProvider dst);
-
- bool Load(IVideoProvider v, Stream s);
-
- bool LoadAuto(Stream s, out IVideoProvider vp);
-
- void Save(IVideoProvider v, Stream s, int w, int h);
- }
-}
diff --git a/src/BizHawk.Client.EmuHawk/QuickBmpFile.cs b/src/BizHawk.Client.Common/QuickBmpFile.cs
similarity index 87%
rename from src/BizHawk.Client.EmuHawk/QuickBmpFile.cs
rename to src/BizHawk.Client.Common/QuickBmpFile.cs
index 261560a58b..4e7d18136d 100644
--- a/src/BizHawk.Client.EmuHawk/QuickBmpFile.cs
+++ b/src/BizHawk.Client.Common/QuickBmpFile.cs
@@ -2,18 +2,14 @@
using System.IO;
using System.Runtime.InteropServices;
-using BizHawk.Client.Common;
using BizHawk.Common;
using BizHawk.Emulation.Common;
// ReSharper disable FieldCanBeMadeReadOnly.Local
// ReSharper disable InconsistentNaming
-// ReSharper disable StyleCop.SA1304
-// ReSharper disable StyleCop.SA1307
-// ReSharper disable StyleCop.SA1401
-namespace BizHawk.Client.EmuHawk
+namespace BizHawk.Client.Common
{
- public readonly struct QuickBmpFile : IQuickBmpFile
+ public readonly struct QuickBmpFile
{
[StructLayout(LayoutKind.Sequential, Pack = 1)]
private class BITMAPFILEHEADER
@@ -332,14 +328,6 @@ namespace BizHawk.Client.EmuHawk
s.Write(dst, 0, dst.Length);
}
- public static readonly QuickBmpFile INSTANCE = default;
-
- readonly void IQuickBmpFile.Copy(IVideoProvider src, IVideoProvider dst) => Copy(src, dst);
-
- readonly bool IQuickBmpFile.Load(IVideoProvider v, Stream s) => Load(v, s);
-
- public readonly bool LoadAuto(Stream s, out IVideoProvider vp) => Load(vp = new LoadedBMP(), s);
-
- readonly void IQuickBmpFile.Save(IVideoProvider v, Stream s, int w, int h) => Save(v, s, w, h);
+ public static bool LoadAuto(Stream s, out IVideoProvider vp) => Load(vp = new LoadedBMP(), s);
}
}
diff --git a/src/BizHawk.Client.Common/movie/MovieSession.cs b/src/BizHawk.Client.Common/movie/MovieSession.cs
index 0343f39fbf..d430004ff4 100644
--- a/src/BizHawk.Client.Common/movie/MovieSession.cs
+++ b/src/BizHawk.Client.Common/movie/MovieSession.cs
@@ -17,20 +17,16 @@ namespace BizHawk.Client.Common
private IMovie _queuedMovie;
- private readonly IQuickBmpFile _quickBmpFile;
-
public MovieSession(
IMovieConfig settings,
string backDirectory,
IDialogParent dialogParent,
- IQuickBmpFile quickBmpFile,
Action pauseCallback,
Action modeChangedCallback)
{
Settings = settings;
BackupDirectory = backDirectory;
_dialogParent = dialogParent;
- _quickBmpFile = quickBmpFile;
_pauseCallback = pauseCallback
?? throw new ArgumentNullException(paramName: nameof(pauseCallback));
_modeChangedCallback = modeChangedCallback
@@ -313,7 +309,7 @@ namespace BizHawk.Client.Common
// TODO: change IMovies to take HawkFiles only and not path
if (Path.GetExtension(path)?.EndsWith("tasproj") ?? false)
{
- return new TasMovie(this, path, _quickBmpFile);
+ return new TasMovie(this, path);
}
return new Bk2Movie(this, path);
diff --git a/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.IO.cs b/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.IO.cs
index 4441908e01..31ca8f137e 100644
--- a/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.IO.cs
+++ b/src/BizHawk.Client.Common/movie/bk2/Bk2Movie.IO.cs
@@ -160,9 +160,8 @@ namespace BizHawk.Client.Common
bl.GetLump(BinaryStateLump.Framebuffer, false,
br =>
{
- var fb = br.ReadAllBytes();
- SavestateFramebuffer = new int[fb.Length / sizeof(int)];
- Buffer.BlockCopy(fb, 0, SavestateFramebuffer, 0, fb.Length);
+ QuickBmpFile.LoadAuto(br.BaseStream, out var bmp);
+ SavestateFramebuffer = bmp.GetVideoBuffer();
});
}
else if (StartsFromSaveRam)
diff --git a/src/BizHawk.Client.Common/movie/tasproj/TasBranch.cs b/src/BizHawk.Client.Common/movie/tasproj/TasBranch.cs
index ddc5d3f6ed..b4ace9f0c5 100644
--- a/src/BizHawk.Client.Common/movie/tasproj/TasBranch.cs
+++ b/src/BizHawk.Client.Common/movie/tasproj/TasBranch.cs
@@ -58,12 +58,9 @@ namespace BizHawk.Client.Common
{
private readonly ITasMovie _movie;
- private readonly IQuickBmpFile _quickBmpFile;
-
- public TasBranchCollection(ITasMovie movie, IQuickBmpFile quickBmpFile)
+ public TasBranchCollection(ITasMovie movie)
{
_movie = movie;
- _quickBmpFile = quickBmpFile;
}
public int Current { get; set; } = -1;
@@ -155,13 +152,13 @@ namespace BizHawk.Client.Common
bs.PutLump(nframebuffer, s =>
{
var vp = new BitmapBufferVideoProvider(b.OSDFrameBuffer);
- _quickBmpFile.Save(vp, s, b.OSDFrameBuffer.Width, b.OSDFrameBuffer.Height);
+ QuickBmpFile.Save(vp, s, b.OSDFrameBuffer.Width, b.OSDFrameBuffer.Height);
});
bs.PutLump(ncoreframebuffer, s =>
{
var vp = new BitmapBufferVideoProvider(b.CoreFrameBuffer);
- _quickBmpFile.Save(vp, s, b.CoreFrameBuffer.Width, b.CoreFrameBuffer.Height);
+ QuickBmpFile.Save(vp, s, b.CoreFrameBuffer.Width, b.CoreFrameBuffer.Height);
});
bs.PutLump(nmarkers, tw => tw.WriteLine(b.Markers.ToString()));
@@ -241,13 +238,13 @@ namespace BizHawk.Client.Common
bl.GetLump(nframebuffer, abort: true, (s, _) =>
{
- _quickBmpFile.LoadAuto(s, out var vp);
+ QuickBmpFile.LoadAuto(s, out var vp);
b.OSDFrameBuffer = new BitmapBuffer(vp.BufferWidth, vp.BufferHeight, vp.GetVideoBuffer());
});
bl.GetLump(ncoreframebuffer, abort: false, (s, _) =>
{
- _quickBmpFile.LoadAuto(s, out var vp);
+ QuickBmpFile.LoadAuto(s, out var vp);
b.CoreFrameBuffer = new BitmapBuffer(vp.BufferWidth, vp.BufferHeight, vp.GetVideoBuffer());
});
diff --git a/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs
index 8f591884ed..20199cb1c3 100644
--- a/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs
+++ b/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs
@@ -18,10 +18,10 @@ namespace BizHawk.Client.Common
public const double CurrentVersion = 1.1;
/// loaded core does not implement
- internal TasMovie(IMovieSession session, string path, IQuickBmpFile quickBmpFile)
+ internal TasMovie(IMovieSession session, string path)
: base(session, path)
{
- Branches = new TasBranchCollection(this, quickBmpFile);
+ Branches = new TasBranchCollection(this);
ChangeLog = new TasMovieChangeLog(this);
Header[HeaderKeys.MovieVersion] = $"BizHawk v2.0 Tasproj v{CurrentVersion.ToString(CultureInfo.InvariantCulture)}";
Markers = new TasMovieMarkerList(this);
diff --git a/src/BizHawk.Client.Common/savestates/SavestateFile.cs b/src/BizHawk.Client.Common/savestates/SavestateFile.cs
index 951a86d191..36643397bf 100644
--- a/src/BizHawk.Client.Common/savestates/SavestateFile.cs
+++ b/src/BizHawk.Client.Common/savestates/SavestateFile.cs
@@ -18,14 +18,11 @@ namespace BizHawk.Client.Common
private readonly IVideoProvider _videoProvider;
private readonly IMovieSession _movieSession;
- private readonly IQuickBmpFile _quickBmpFile;
-
private readonly IDictionary _userBag;
public SavestateFile(
IEmulator emulator,
IMovieSession movieSession,
- IQuickBmpFile quickBmpFile,
IDictionary userBag)
{
if (!emulator.HasSavestates())
@@ -41,7 +38,6 @@ namespace BizHawk.Client.Common
}
_movieSession = movieSession;
- _quickBmpFile = quickBmpFile;
_userBag = userBag;
}
@@ -88,7 +84,7 @@ namespace BizHawk.Client.Common
using (new SimpleTime("Save Framebuffer"))
{
- bs.PutLump(BinaryStateLump.Framebuffer, s => _quickBmpFile.Save(_videoProvider, s, outWidth, outHeight));
+ bs.PutLump(BinaryStateLump.Framebuffer, s => QuickBmpFile.Save(_videoProvider, s, outWidth, outHeight));
}
}
}
@@ -168,7 +164,7 @@ namespace BizHawk.Client.Common
if (_videoProvider != null)
{
- bl.GetLump(BinaryStateLump.Framebuffer, false, br => PopulateFramebuffer(br, _videoProvider, _quickBmpFile));
+ bl.GetLump(BinaryStateLump.Framebuffer, false, br => PopulateFramebuffer(br, _videoProvider));
}
string userData = "";
@@ -199,13 +195,13 @@ namespace BizHawk.Client.Common
return true;
}
- private static void PopulateFramebuffer(BinaryReader br, IVideoProvider videoProvider, IQuickBmpFile quickBmpFile)
+ private static void PopulateFramebuffer(BinaryReader br, IVideoProvider videoProvider)
{
try
{
using (new SimpleTime("Load Framebuffer"))
{
- quickBmpFile.Load(videoProvider, br.BaseStream);
+ QuickBmpFile.Load(videoProvider, br.BaseStream);
}
}
catch
diff --git a/src/BizHawk.Client.EmuHawk/IMainFormForTools.cs b/src/BizHawk.Client.EmuHawk/IMainFormForTools.cs
index c40fa2e72c..34414c5243 100644
--- a/src/BizHawk.Client.EmuHawk/IMainFormForTools.cs
+++ b/src/BizHawk.Client.EmuHawk/IMainFormForTools.cs
@@ -41,9 +41,6 @@ namespace BizHawk.Client.EmuHawk
/// only referenced from
bool PressRewind { get; set; }
- /// only referenced from
- IQuickBmpFile QuickBmpFile { get; }
-
/// only referenced from
event Action OnPauseChanged;
diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs
index ea8ce20429..2ca287af51 100644
--- a/src/BizHawk.Client.EmuHawk/MainForm.cs
+++ b/src/BizHawk.Client.EmuHawk/MainForm.cs
@@ -407,7 +407,6 @@ namespace BizHawk.Client.EmuHawk
Config.Movies,
Config.PathEntries.MovieBackupsAbsolutePath(),
this,
- QuickBmpFile,
PauseEmulator,
SetMainformMovieInfo);
@@ -4235,7 +4234,7 @@ namespace BizHawk.Client.EmuHawk
if (!Emulator.HasSavestates()) return false;
if (IsSavestateSlave) return Master.LoadState();
- if (!new SavestateFile(Emulator, MovieSession, QuickBmpFile, MovieSession.UserBag).Load(path, this))
+ if (!new SavestateFile(Emulator, MovieSession, MovieSession.UserBag).Load(path, this))
{
AddOnScreenMessage("Loadstate error!");
return false;
@@ -4305,7 +4304,7 @@ namespace BizHawk.Client.EmuHawk
try
{
- new SavestateFile(Emulator, MovieSession, QuickBmpFile, MovieSession.UserBag).Create(path, Config.Savestates);
+ new SavestateFile(Emulator, MovieSession, MovieSession.UserBag).Create(path, Config.Savestates);
EmuClient.OnStateSaved(this, userFriendlyStateName);
RA?.OnSaveState(path);
@@ -4851,8 +4850,6 @@ namespace BizHawk.Client.EmuHawk
_ = LoadRom(args[0]);
}
- public IQuickBmpFile QuickBmpFile { get; } = EmuHawk.QuickBmpFile.INSTANCE;
-
private IRetroAchievements RA { get; set; }
private void OpenRetroAchievements()
diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs
index 7c44d6bc6d..646414646f 100644
--- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs
@@ -220,7 +220,7 @@ namespace BizHawk.Client.EmuHawk
Movie.LoadBranch(branch);
Tastudio.LoadState(new(branch.Frame, new MemoryStream(branch.CoreData, false)));
Movie.TasStateManager.Capture(Tastudio.Emulator.Frame, Tastudio.Emulator.AsStatable());
- Tastudio.MainForm.QuickBmpFile.Copy(new BitmapBufferVideoProvider(branch.CoreFrameBuffer), Tastudio.VideoProvider);
+ QuickBmpFile.Copy(new BitmapBufferVideoProvider(branch.CoreFrameBuffer), Tastudio.VideoProvider);
if (Tastudio.Settings.OldControlSchemeForBranches && Tastudio.TasPlaybackBox.RecordingMode)
Movie.Truncate(branch.Frame);