using AxibugProtobuf; using UnityEngine; using UnityEngine.UI; namespace AxibugEmuOnline.Client { public abstract class IEmuCore : MonoBehaviour { /// 获得模拟器核心中的状态快照对象 public abstract object GetState(); /// 获得模拟器核心中的状态快照字节数据 public abstract byte[] GetStateBytes(); /// 加载状态快照 /// 该对象应该来自核心的方法的返回值,或是从返回的byte数组构建 public abstract void LoadState(object state); /// 加载状态快照 /// 该对象应该来自核心的返回的byte数组 public abstract void LoadStateFromBytes(byte[] data); /// 暂停核心推帧 public abstract void Pause(); /// 恢复核心推帧(从Pause状态恢复) public abstract void Resume(); /// 启动模拟器逻辑 public abstract MsgBool StartGame(RomFile romFile); /// 释放模拟器核心 public abstract void Dispose(); /// 重置核心,通常由模拟器核心提供的功能 public abstract void DoReset(); /// 获得模拟器核心的控制器设置器 /// public abstract IControllerSetuper GetControllerSetuper(); /// 核心所属平台 public abstract RomPlatformType Platform { get; } /// 获取当前模拟器帧序号,在加载快照和Reset后,应当重置为0 public abstract uint Frame { get; } /// 模拟器核心推帧 public abstract bool PushEmulatorFrame(); /// 模拟器核心推帧结束 public abstract void AfterPushFrame(); public abstract void GetAudioParams(out int frequency, out int channels); public abstract Texture OutputPixel { get; } public abstract RawImage DrawCanvas { get; } } }