namespace VirtualNes.Core { public struct RAMSTAT : IStateBufferObject { /// <summary> Internal NES RAM </summary> public byte[] RAM; /// <summary> BG Palette </summary> public byte[] BGPAL; /// <summary> SP Palette </summary> public byte[] SPPAL; /// <summary> Sprite RAM </summary> public byte[] SPRAM; public static RAMSTAT GetDefault() { var res = new RAMSTAT(); res.RAM = new byte[2 * 1024]; res.BGPAL = new byte[16]; res.SPPAL = new byte[16]; res.SPRAM = new byte[256]; return res; } public uint GetSize() { return (uint)(RAM.Length + BGPAL.Length + SPPAL.Length + SPRAM.Length); } public void SaveState(StateBuffer buffer) { buffer.Write(RAM); buffer.Write(BGPAL); buffer.Write(SPPAL); buffer.Write(SPRAM); } public void LoadState(StateReader buffer) { RAM = buffer.Read_bytes(2 * 1024); BGPAL = buffer.Read_bytes(16); SPPAL = buffer.Read_bytes(16); SPRAM = buffer.Read_bytes(256); } } }