N64: a quick hack greatly reduces memory thrashing (on my machine, varied usage of 300-800MB with default rewind settings replaced with a rather steady 300-350MB
This commit is contained in:
parent
3b7f2a65a6
commit
f3eb9e7fc7
|
@ -222,13 +222,29 @@ namespace BizHawk.Emulation.Consoles.Nintendo.N64
|
||||||
Frame = reader.ReadInt32();
|
Frame = reader.ReadInt32();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
byte[] SaveStateBinaryPrivateBuff = new byte[0];
|
||||||
|
|
||||||
public byte[] SaveStateBinary()
|
public byte[] SaveStateBinary()
|
||||||
{
|
{
|
||||||
MemoryStream ms = new MemoryStream();
|
// WELCOME TO THE HACK ZONE
|
||||||
|
byte[] saveram = api.SaveSaveram();
|
||||||
|
|
||||||
|
int lenwant = 4 + SaveStatePrivateBuff.Length + saveram.Length + 1 + 4 + 4;
|
||||||
|
if (SaveStateBinaryPrivateBuff.Length != lenwant)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Allocating new N64 private buffer size {0}", lenwant);
|
||||||
|
SaveStateBinaryPrivateBuff = new byte[lenwant];
|
||||||
|
}
|
||||||
|
|
||||||
|
MemoryStream ms = new MemoryStream(SaveStateBinaryPrivateBuff);
|
||||||
BinaryWriter bw = new BinaryWriter(ms);
|
BinaryWriter bw = new BinaryWriter(ms);
|
||||||
SaveStateBinary(bw);
|
SaveStateBinary(bw);
|
||||||
bw.Flush();
|
bw.Flush();
|
||||||
return ms.ToArray();
|
|
||||||
|
if (ms.Length != SaveStateBinaryPrivateBuff.Length)
|
||||||
|
throw new Exception("Unexpected Length");
|
||||||
|
|
||||||
|
return SaveStateBinaryPrivateBuff;// ms.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool BinarySaveStatesPreferred { get { return true; } }
|
public bool BinarySaveStatesPreferred { get { return true; } }
|
||||||
|
|
Loading…
Reference in New Issue