using BizHawk.Common.BizInvoke; using BizHawk.Emulation.Cores.Consoles.Sega.Saturn; 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.NEC.PCFX { public abstract class LibTst : LibWaterboxCore { [StructLayout(LayoutKind.Sequential)] public new class FrameInfo : LibWaterboxCore.FrameInfo { public uint Port1Buttons; public uint Port2Buttons; public uint ConsoleButtons; } [Flags] public enum Layers : int { None = 0, BG0 = 1, BG1 = 2, BG2 = 4, BG3 = 8, VDCA_BG = 16, VDCA_SPR = 32, VDCB_BG = 64, VDCB_SPR = 128, RAINBOW = 256 } [StructLayout(LayoutKind.Sequential)] public class FrontendSettings { public int AdpcmEmulateBuggyCodec; public int AdpcmSuppressChannelResetClicks; public int HiResEmulation; public int DisableSpriteLimit; public int ChromaInterpolation; public int ScanlineStart; public int ScanlineEnd; public int CdSpeed; public int CpuEmulation; public int Port1; public int Port2; public int PixelPro; } [BizImport(CC)] public abstract void SetCDCallbacks(LibSaturnus.CDTOCCallback toccallback, LibSaturnus.CDSectorCallback sectorcallback); [BizImport(CC)] public abstract bool Init(int numDisks, byte[] bios); [BizImport(CC)] public abstract void EnableLayers(Layers mask); [BizImport(CC)] public abstract void PutSettingsBeforeInit(FrontendSettings s); } }