BizHawk/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/LibmGBA.cs

80 lines
2.4 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Nintendo.GBA
{
public static class LibmGBA
{
const string dll = "mgba.dll";
const CallingConvention cc = CallingConvention.Cdecl;
[DllImport(dll, CallingConvention = cc)]
public static extern void BizDestroy(IntPtr ctx);
[DllImport(dll, CallingConvention = cc)]
2015-06-05 00:12:12 +00:00
public static extern IntPtr BizCreate(byte[] bios);
[DllImport(dll, CallingConvention = cc)]
public static extern void BizReset(IntPtr ctx);
2015-06-13 18:01:26 +00:00
[DllImport(dll, CallingConvention = cc)]
public static extern void BizSkipBios(IntPtr ctx);
[DllImport(dll, CallingConvention = cc)]
public static extern bool BizLoad(IntPtr ctx, byte[] data, int length);
[DllImport(dll, CallingConvention = cc)]
2015-06-10 01:19:09 +00:00
public static extern bool BizAdvance(IntPtr ctx, LibVBANext.Buttons keys, int[] vbuff, ref int nsamp, short[] sbuff,
long time, short gyrox, short gyroy, short gyroz, byte luma);
[StructLayout(LayoutKind.Sequential)]
public class MemoryAreas
{
public IntPtr bios;
public IntPtr wram;
public IntPtr iwram;
public IntPtr mmio;
public IntPtr palram;
public IntPtr vram;
public IntPtr oam;
public IntPtr rom;
2016-04-19 02:46:27 +00:00
public IntPtr sram;
public int sram_size;
}
[DllImport(dll, CallingConvention = cc)]
public static extern void BizGetMemoryAreas(IntPtr ctx, [Out]MemoryAreas dst);
2015-06-06 12:49:31 +00:00
[DllImport(dll, CallingConvention = cc)]
public static extern int BizGetSaveRamSize(IntPtr ctx);
[DllImport(dll, CallingConvention = cc)]
public static extern void BizGetSaveRam(IntPtr ctx, byte[] dest);
[DllImport(dll, CallingConvention = cc)]
public static extern void BizPutSaveRam(IntPtr ctx, byte[] src);
2015-06-06 17:34:19 +00:00
[DllImport(dll, CallingConvention = cc)]
2016-02-21 21:14:43 +00:00
public static extern int BizGetStateMaxSize(IntPtr ctx);
2015-06-06 17:34:19 +00:00
[DllImport(dll, CallingConvention = cc)]
2016-02-21 21:14:43 +00:00
public static extern int BizGetState(IntPtr ctx, byte[] dest, int maxsize);
2015-06-06 17:34:19 +00:00
[DllImport(dll, CallingConvention = cc)]
2016-02-21 21:14:43 +00:00
public static extern bool BizPutState(IntPtr ctx, byte[] src, int size);
2016-02-21 13:54:00 +00:00
[Flags]
public enum Layers : int
{
BG0 = 1,
BG1 = 2,
BG2 = 4,
BG3 = 8,
OBJ = 16
}
[DllImport(dll, CallingConvention = cc)]
public static extern void BizSetLayerMask(IntPtr ctx, Layers mask);
}
}