using BizHawk.Common.BizInvoke; using BizHawk.Emulation.Cores.Waterbox; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace BizHawk.Emulation.Cores.Consoles.SNK { public abstract class LibNeoGeoPort : LibWaterboxCore { [StructLayout(LayoutKind.Sequential)] public new class FrameInfo : LibWaterboxCore.FrameInfo { public long FrontendTime; public int SkipRendering; public int Buttons; } public enum Language { Japanese, English } [UnmanagedFunctionPointer(CC)] public delegate void SaveRamCallback(IntPtr data, int length); [BizImport(CC)] public abstract bool LoadSystem(byte[] rom, int romlength, Language language); [BizImport(CC)] public abstract void SetLayers(int enable); // 1, 2, 4 bg,fg,sprites [BizImport(CC)] public abstract void HardReset(); [BizImport(CC)] public abstract void SetCommsCallbacks(IntPtr readcb, IntPtr pollcb, IntPtr writecb); [BizImport(CC)] public abstract bool HasSaveRam(); [BizImport(CC)] public abstract bool PutSaveRam(byte[] data, int length); [BizImport(CC)] public abstract void GetSaveRam(SaveRamCallback callback); } }