public byte[] ReadSaveRam() { int size = (int)retro.retro_get_memory_size(LibRetro.RETRO_MEMORY.SAVE_RAM); if (saverambuff.Length != size) { saverambuff = new byte[size]; } IntPtr src = retro.retro_get_memory_data(LibRetro.RETRO_MEMORY.SAVE_RAM); if (src == IntPtr.Zero) { throw new Exception("retro_get_memory_data(RETRO_MEMORY_SAVE_RAM) returned NULL"); } Marshal.Copy(src, saverambuff, 0, size); return(saverambuff); }
public byte[] CloneSaveRam() { int size = (int)retro.retro_get_memory_size(LibRetro.RETRO_MEMORY.SAVE_RAM); if (saverambuff.Length != size) { saverambuff = new byte[size]; } IntPtr src = retro.retro_get_memory_data(LibRetro.RETRO_MEMORY.SAVE_RAM); if (src == IntPtr.Zero) { return(null); } Marshal.Copy(src, saverambuff, 0, size); return((byte[])saverambuff.Clone()); }