using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Essgee.EventArguments; using Essgee.Emulation.Configuration; namespace Essgee.Emulation.Machines { public interface IMachine { event EventHandler SendLogMessage; event EventHandler EmulationReset; event EventHandler RenderScreen; event EventHandler SizeScreen; event EventHandler ChangeViewport; event EventHandler PollInput; event EventHandler EnqueueSamples; event EventHandler SaveExtraData; event EventHandler EnableRumble; string ManufacturerName { get; } string ModelName { get; } string DatFilename { get; } (string Extension, string Description) FileFilter { get; } bool HasBootstrap { get; } double RefreshRate { get; } double PixelAspectRatio { get; } (string Name, string Description)[] RuntimeOptions { get; } Dictionary GetDebugInformation(); void SetConfiguration(IConfiguration config); object GetRuntimeOption(string name); void SetRuntimeOption(string name, object value); void Initialize(); void Startup(); void Reset(); void Shutdown(); void SetState(Dictionary state); Dictionary GetState(); void Load(byte[] romData, byte[] ramData, Type mapperType); byte[] GetCartridgeRam(); bool IsCartridgeRamSaveNeeded(); void RunFrame(); } }