BizHawk/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.ISaveRam.cs

40 lines
835 B
C#

using System;
using System.Runtime.InteropServices;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Atari.Lynx
{
public partial class Lynx : ISaveRam
{
public byte[] CloneSaveRam()
{
if (!LibLynx.GetSaveRamPtr(Core, out var size, out var data))
{
return null;
}
byte[] ret = new byte[size];
Marshal.Copy(data, ret, 0, size);
return ret;
}
public void StoreSaveRam(byte[] srcData)
{
if (!LibLynx.GetSaveRamPtr(Core, out var size, out var data))
{
throw new InvalidOperationException();
}
if (size != srcData.Length)
{
throw new ArgumentOutOfRangeException();
}
Marshal.Copy(srcData, 0, data, size);
}
public bool SaveRamModified => LibLynx.GetSaveRamPtr(Core, out int unused, out IntPtr unused2);
}
}