Example #1
0
        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);
        }
Example #2
0
        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());
        }