diff --git a/src/BizHawk.Emulation.Cores/Consoles/Sega/gpgx64/GPGX.IStatable.cs b/src/BizHawk.Emulation.Cores/Consoles/Sega/gpgx64/GPGX.IStatable.cs index 9aee0aca00..f68907d68d 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Sega/gpgx64/GPGX.IStatable.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Sega/gpgx64/GPGX.IStatable.cs @@ -5,6 +5,8 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx { public partial class GPGX : IStatable { + private byte[] _stateBuffer; + public void LoadStateBinary(BinaryReader reader) { _elf.LoadStateBinary(reader); @@ -37,12 +39,23 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx public byte[] SaveStateBinary() { + if (_stateBuffer != null) + { + using var stream = new MemoryStream(_stateBuffer); + using var writer = new BinaryWriter(stream); + SaveStateBinary(writer); + writer.Flush(); + writer.Close(); + return _stateBuffer; + } + using var ms = new MemoryStream(); using var bw = new BinaryWriter(ms); SaveStateBinary(bw); bw.Flush(); - ms.Close(); - return ms.ToArray(); + _stateBuffer = ms.ToArray(); + bw.Close(); + return _stateBuffer; } } }