natt forgot to ever hook up SGB saveram, so I took care of it
This commit is contained in:
parent
5a48f952f4
commit
f11ae17cfb
|
@ -57,6 +57,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
||||||
public byte* QUERY_get_memory_data(SNES_MEMORY id)
|
public byte* QUERY_get_memory_data(SNES_MEMORY id)
|
||||||
{
|
{
|
||||||
string name = QUERY_MemoryNameForId(id);
|
string name = QUERY_MemoryNameForId(id);
|
||||||
|
if (!SharedMemoryBlocks.ContainsKey(name)) return null;
|
||||||
var smb = SharedMemoryBlocks[name];
|
var smb = SharedMemoryBlocks[name];
|
||||||
return (byte*)smb.Ptr;
|
return (byte*)smb.Ptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -788,7 +788,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return api.QUERY_get_memory_size(LibsnesApi.SNES_MEMORY.CARTRIDGE_RAM) != 0;
|
return api.QUERY_get_memory_size(LibsnesApi.SNES_MEMORY.CARTRIDGE_RAM) != 0 || api.QUERY_get_memory_size(LibsnesApi.SNES_MEMORY.SGB_CARTRAM) != 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -796,6 +796,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
||||||
{
|
{
|
||||||
byte* buf = api.QUERY_get_memory_data(LibsnesApi.SNES_MEMORY.CARTRIDGE_RAM);
|
byte* buf = api.QUERY_get_memory_data(LibsnesApi.SNES_MEMORY.CARTRIDGE_RAM);
|
||||||
var size = api.QUERY_get_memory_size(LibsnesApi.SNES_MEMORY.CARTRIDGE_RAM);
|
var size = api.QUERY_get_memory_size(LibsnesApi.SNES_MEMORY.CARTRIDGE_RAM);
|
||||||
|
if (buf == null)
|
||||||
|
{
|
||||||
|
buf = api.QUERY_get_memory_data(LibsnesApi.SNES_MEMORY.SGB_CARTRAM);
|
||||||
|
size = api.QUERY_get_memory_size(LibsnesApi.SNES_MEMORY.SGB_CARTRAM);
|
||||||
|
}
|
||||||
var ret = new byte[size];
|
var ret = new byte[size];
|
||||||
Marshal.Copy((IntPtr)buf, ret, 0, size);
|
Marshal.Copy((IntPtr)buf, ret, 0, size);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -811,10 +816,15 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
||||||
|
|
||||||
public void StoreSaveRam(byte[] data)
|
public void StoreSaveRam(byte[] data)
|
||||||
{
|
{
|
||||||
|
byte* buf = api.QUERY_get_memory_data(LibsnesApi.SNES_MEMORY.CARTRIDGE_RAM);
|
||||||
var size = api.QUERY_get_memory_size(LibsnesApi.SNES_MEMORY.CARTRIDGE_RAM);
|
var size = api.QUERY_get_memory_size(LibsnesApi.SNES_MEMORY.CARTRIDGE_RAM);
|
||||||
|
if (buf == null)
|
||||||
|
{
|
||||||
|
buf = api.QUERY_get_memory_data(LibsnesApi.SNES_MEMORY.SGB_CARTRAM);
|
||||||
|
size = api.QUERY_get_memory_size(LibsnesApi.SNES_MEMORY.SGB_CARTRAM);
|
||||||
|
}
|
||||||
if (size == 0) return;
|
if (size == 0) return;
|
||||||
if (size != data.Length) throw new InvalidOperationException("Somehow, we got a mismatch between saveram size and what bsnes says the saveram size is");
|
if (size != data.Length) throw new InvalidOperationException("Somehow, we got a mismatch between saveram size and what bsnes says the saveram size is");
|
||||||
byte* buf = api.QUERY_get_memory_data(LibsnesApi.SNES_MEMORY.CARTRIDGE_RAM);
|
|
||||||
Marshal.Copy(data, 0, (IntPtr)buf, size);
|
Marshal.Copy(data, 0, (IntPtr)buf, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue