2016-08-10 19:27:46 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.IO;
|
|
|
|
|
|
|
|
|
|
using BizHawk.Common.BufferExtensions;
|
|
|
|
|
using BizHawk.Emulation.Common;
|
|
|
|
|
using System.Runtime.InteropServices;
|
2017-05-28 17:46:08 +00:00
|
|
|
|
using BizHawk.Common;
|
2016-08-10 19:27:46 +00:00
|
|
|
|
|
2017-07-09 14:21:03 +00:00
|
|
|
|
namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
|
2016-08-10 19:27:46 +00:00
|
|
|
|
{
|
|
|
|
|
public partial class GPGX : ISaveRam
|
|
|
|
|
{
|
|
|
|
|
public byte[] CloneSaveRam()
|
|
|
|
|
{
|
|
|
|
|
int size = 0;
|
|
|
|
|
IntPtr area = Core.gpgx_get_sram(ref size);
|
|
|
|
|
if (size == 0 || area == IntPtr.Zero)
|
|
|
|
|
return new byte[0];
|
|
|
|
|
|
|
|
|
|
byte[] ret = new byte[size];
|
2017-05-28 17:46:08 +00:00
|
|
|
|
using (_elf.EnterExit())
|
|
|
|
|
Marshal.Copy(area, ret, 0, size);
|
2016-08-10 19:27:46 +00:00
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void StoreSaveRam(byte[] data)
|
|
|
|
|
{
|
|
|
|
|
if (!Core.gpgx_put_sram(data, data.Length))
|
|
|
|
|
throw new Exception("Core rejected saveram");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool SaveRamModified
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
int size = 0;
|
|
|
|
|
IntPtr area = Core.gpgx_get_sram(ref size);
|
|
|
|
|
return size > 0 && area != IntPtr.Zero;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|