using System.IO; namespace BizHawk.Emulation.Common { /// /// Binary save and load state only without any trappings. At the moment, an emulator core should not implement this directly /// public interface IBinaryStateable { void SaveStateBinary(BinaryWriter writer); void LoadStateBinary(BinaryReader reader); } /// /// This service manages the logic of sending and receiving savestates from the core /// If this service is available, client apps will expose features for making savestates and that utilize savestates (such as rewind)) /// If unavailable these options will not be exposed /// Additionally many tools depend on savestates such as TAStudio, these will only be available if this service is implemented /// public interface IStatable : IBinaryStateable, IEmulatorService { /// /// Gets a value indicating whether the core would rather give a binary savestate than a text one. Both must function regardless /// bool BinarySaveStatesPreferred { get; } void SaveStateText(TextWriter writer); void LoadStateText(TextReader reader); /// /// save state binary to a byte buffer /// /// you may NOT modify this. if you call SaveStateBinary() again with the same core, the old data MAY be overwritten. byte[] SaveStateBinary(); } }