public void LoadStateBinary(BinaryReader reader)
        {
            UpdateCallbackHandler();

            var newlen = reader.ReadInt32();

            if (newlen > _stateBuf.Length)
            {
                throw new Exception("Unexpected buffer size");
            }

            reader.Read(_stateBuf, 0, newlen);
            var d = new RetroData(_stateBuf, _stateLen);

            api.retro_unserialize(d.PinnedData, d.Length);
            // other variables
            Frame      = reader.ReadInt32();
            LagCount   = reader.ReadInt32();
            IsLagFrame = reader.ReadBoolean();
        }
        public void SaveStateBinary(BinaryWriter writer)
        {
            UpdateCallbackHandler();

            _stateLen = api.retro_serialize_size();
            if (_stateBuf.LongLength != _stateLen)
            {
                _stateBuf = new byte[_stateLen];
            }

            var d = new RetroData(_stateBuf, _stateLen);

            api.retro_serialize(d.PinnedData, d.Length);
            writer.Write(_stateBuf.Length);
            writer.Write(_stateBuf);
            // other variables
            writer.Write(Frame);
            writer.Write(LagCount);
            writer.Write(IsLagFrame);
        }
Exemple #3
0
 public RetroController(RetroData retroData)
 {
     Retro = retroData;
 }