BizHawk/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink3x/GBHawkLink3x.ISaveRam.cs

97 lines
1.7 KiB
C#

using System;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
{
public partial class GBHawkLink3x : ISaveRam
{
public byte[] CloneSaveRam()
{
if (L.cart_RAM != null || C.cart_RAM != null || R.cart_RAM != null)
{
int len1 = 0;
int len2 = 0;
int len3 = 0;
int index = 0;
if (L.cart_RAM != null)
{
len1 = L.cart_RAM.Length;
}
if (C.cart_RAM != null)
{
len2 = C.cart_RAM.Length;
}
if (R.cart_RAM != null)
{
len3 = R.cart_RAM.Length;
}
byte[] temp = new byte[len1 + len2 + len3];
if (L.cart_RAM != null)
{
for (int i = 0; i < L.cart_RAM.Length; i++)
{
temp[index] = L.cart_RAM[i];
index++;
}
}
if (C.cart_RAM != null)
{
for (int i = 0; i < C.cart_RAM.Length; i++)
{
temp[index] = C.cart_RAM[i];
index++;
}
}
if (R.cart_RAM != null)
{
for (int i = 0; i < R.cart_RAM.Length; i++)
{
temp[index] = R.cart_RAM[i];
index++;
}
}
return temp;
}
return null;
}
public void StoreSaveRam(byte[] data)
{
if (Link3xSyncSettings.Use_SRAM)
{
int temp = 0;
if (L.cart_RAM != null)
{
Buffer.BlockCopy(data, temp, L.cart_RAM, 0, L.cart_RAM.Length);
temp += L.cart_RAM.Length;
}
if (C.cart_RAM != null)
{
Buffer.BlockCopy(data, temp, C.cart_RAM, 0, C.cart_RAM.Length);
temp += C.cart_RAM.Length;
}
if (R.cart_RAM != null)
{
Buffer.BlockCopy(data, temp, R.cart_RAM, 0, R.cart_RAM.Length);
}
Console.WriteLine("loading SRAM here");
}
}
public bool SaveRamModified => (L.has_bat || C.has_bat || R.has_bat) & Link3xSyncSettings.Use_SRAM;
}
}