40 lines
846 B
C#
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);
|
|
}
|
|
}
|