BizHawk/BizHawk.Emulation.Cores/Consoles/Sega/GGHawkLink/GGHawkLink.ISaveRam.cs

82 lines
1.5 KiB
C#

using System;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Sega.GGHawkLink
{
public partial class GGHawkLink : ISaveRam
{
public byte[] CloneSaveRam()
{
if ((L.SaveRAM != null) || (R.SaveRAM != null))
{
int Len1 = 0;
int Len2 = 0;
int index = 0;
if (L.SaveRAM != null)
{
Len1 = L.SaveRAM.Length;
}
if (R.SaveRAM != null)
{
Len2 = R.SaveRAM.Length;
}
byte[] temp = new byte[Len1 + Len2];
if (L.SaveRAM != null)
{
for (int i = 0; i < L.SaveRAM.Length; i++)
{
temp[index] = L.SaveRAM[i];
index++;
}
}
if (R.SaveRAM != null)
{
for (int i = 0; i < L.SaveRAM.Length; i++)
{
temp[index] = R.SaveRAM[i];
index++;
}
}
return temp;
}
else
{
return null;
}
}
public void StoreSaveRam(byte[] data)
{
if ((L.SaveRAM != null) && (R.SaveRAM == null))
{
Buffer.BlockCopy(data, 0, L.SaveRAM, 0, L.SaveRAM.Length);
}
else if ((R.SaveRAM != null) && (L.SaveRAM == null))
{
Buffer.BlockCopy(data, 0, R.SaveRAM, 0, R.SaveRAM.Length);
}
else if ((R.SaveRAM != null) && (L.SaveRAM != null))
{
Buffer.BlockCopy(data, 0, L.SaveRAM, 0, L.SaveRAM.Length);
Buffer.BlockCopy(data, L.SaveRAM.Length, R.SaveRAM, 0, R.SaveRAM.Length);
}
Console.WriteLine("loading SRAM here");
}
public bool SaveRamModified
{
get
{
return linkSyncSettings.Use_SRAM;
}
}
}
}