BizHawk/BizHawk.Emulation.Cores/Consoles/Nintendo/NDS/MelonDS_SaveRam.cs

40 lines
846 B
C#

using System.Runtime.InteropServices;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Consoles.Nintendo.NDS
{
unsafe partial class MelonDS : ISaveRam
{
public bool SaveRamModified => IsSRAMModified();
public byte[] CloneSaveRam()
{
int length = GetSRAMLength();
byte[] data = new byte[length];
fixed (byte* dst = data)
{
GetSRAM(dst, length);
}
return data;
}
public void StoreSaveRam(byte[] data)
{
fixed (byte* src = data)
{
SetSRAM(src, data.Length);
}
}
[DllImport(dllPath)]
private static extern int GetSRAMLength();
[DllImport(dllPath)]
private static extern bool IsSRAMModified();
[DllImport(dllPath)]
private static extern void GetSRAM(byte* dst, int length);
[DllImport(dllPath)]
private static extern void SetSRAM(byte* src, int length);
}
}