tweaks
This commit is contained in:
parent
e44aa5d94a
commit
4597e8b334
|
@ -8,15 +8,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
||||||
const string dll = "mgba.dll";
|
const string dll = "mgba.dll";
|
||||||
const CallingConvention cc = CallingConvention.Cdecl;
|
const CallingConvention cc = CallingConvention.Cdecl;
|
||||||
|
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
|
||||||
public static extern void BizDestroy(IntPtr ctx);
|
|
||||||
|
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
|
||||||
public static extern IntPtr BizCreate(byte[] bios, byte[] data, int length, [In]OverrideInfo dbinfo, bool skipBios);
|
|
||||||
|
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
|
||||||
public static extern void BizReset(IntPtr ctx);
|
|
||||||
|
|
||||||
public enum SaveType : int
|
public enum SaveType : int
|
||||||
{
|
{
|
||||||
Autodetect = -1,
|
Autodetect = -1,
|
||||||
|
@ -41,6 +32,35 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
||||||
NoOverride = 0x8000 // can probably ignore this
|
NoOverride = 0x8000 // can probably ignore this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Flags]
|
||||||
|
public enum Layers : int
|
||||||
|
{
|
||||||
|
BG0 = 1,
|
||||||
|
BG1 = 2,
|
||||||
|
BG2 = 4,
|
||||||
|
BG3 = 8,
|
||||||
|
OBJ = 16
|
||||||
|
}
|
||||||
|
|
||||||
|
[Flags]
|
||||||
|
public enum Sounds : int
|
||||||
|
{
|
||||||
|
CH0 = 1,
|
||||||
|
CH1 = 2,
|
||||||
|
CH2 = 4,
|
||||||
|
CH3 = 8,
|
||||||
|
CHA = 16,
|
||||||
|
CHB = 32
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum mWatchpointType
|
||||||
|
{
|
||||||
|
WATCHPOINT_WRITE = 1,
|
||||||
|
WATCHPOINT_READ = 2,
|
||||||
|
WATCHPOINT_RW = 3,
|
||||||
|
WATCHPOINT_WRITE_CHANGE = 4,
|
||||||
|
};
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential)]
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
public class OverrideInfo
|
public class OverrideInfo
|
||||||
{
|
{
|
||||||
|
@ -50,13 +70,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
||||||
public const uint IDLE_LOOP_NONE = unchecked((uint)0xffffffff);
|
public const uint IDLE_LOOP_NONE = unchecked((uint)0xffffffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
|
||||||
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);
|
|
||||||
|
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
|
||||||
public static extern void BizSetPalette(IntPtr ctx, int[] palette);
|
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential)]
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
public class MemoryAreas
|
public class MemoryAreas
|
||||||
{
|
{
|
||||||
|
@ -72,11 +85,28 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
||||||
public int sram_size;
|
public int sram_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
|
public static extern void BizDestroy(IntPtr ctx);
|
||||||
|
|
||||||
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
|
public static extern IntPtr BizCreate(byte[] bios, byte[] data, int length, [In]OverrideInfo dbinfo, bool skipBios);
|
||||||
|
|
||||||
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
|
public static extern void BizReset(IntPtr ctx);
|
||||||
|
|
||||||
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
|
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);
|
||||||
|
|
||||||
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
|
public static extern void BizSetPalette(IntPtr ctx, int[] palette);
|
||||||
|
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
public static extern void BizGetMemoryAreas(IntPtr ctx, [Out]MemoryAreas dst);
|
public static extern void BizGetMemoryAreas(IntPtr ctx, [Out]MemoryAreas dst);
|
||||||
|
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
public static extern int BizGetSaveRam(IntPtr ctx, byte[] dest, int maxsize);
|
public static extern int BizGetSaveRam(IntPtr ctx, byte[] dest, int maxsize);
|
||||||
|
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
public static extern void BizPutSaveRam(IntPtr ctx, byte[] src, int size);
|
public static extern void BizPutSaveRam(IntPtr ctx, byte[] src, int size);
|
||||||
|
|
||||||
|
@ -101,30 +131,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
public static extern bool BizPutState(IntPtr ctx, byte[] src, int size);
|
public static extern bool BizPutState(IntPtr ctx, byte[] src, int size);
|
||||||
|
|
||||||
[Flags]
|
|
||||||
public enum Layers : int
|
|
||||||
{
|
|
||||||
BG0 = 1,
|
|
||||||
BG1 = 2,
|
|
||||||
BG2 = 4,
|
|
||||||
BG3 = 8,
|
|
||||||
OBJ = 16
|
|
||||||
}
|
|
||||||
|
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
public static extern void BizSetLayerMask(IntPtr ctx, Layers mask);
|
public static extern void BizSetLayerMask(IntPtr ctx, Layers mask);
|
||||||
|
|
||||||
[Flags]
|
|
||||||
public enum Sounds : int
|
|
||||||
{
|
|
||||||
CH0 = 1,
|
|
||||||
CH1 = 2,
|
|
||||||
CH2 = 4,
|
|
||||||
CH3 = 8,
|
|
||||||
CHA = 16,
|
|
||||||
CHB = 32
|
|
||||||
}
|
|
||||||
|
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
public static extern void BizSetSoundMask(IntPtr ctx, Sounds mask);
|
public static extern void BizSetSoundMask(IntPtr ctx, Sounds mask);
|
||||||
|
|
||||||
|
@ -139,21 +148,23 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
||||||
|
|
||||||
[UnmanagedFunctionPointer(cc)]
|
[UnmanagedFunctionPointer(cc)]
|
||||||
public delegate void TraceCallback(string msg);
|
public delegate void TraceCallback(string msg);
|
||||||
|
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
public static extern void BizSetTraceCallback(TraceCallback cb);
|
public static extern void BizSetTraceCallback(TraceCallback cb);
|
||||||
|
|
||||||
public enum mWatchpointType {
|
|
||||||
WATCHPOINT_WRITE = 1,
|
|
||||||
WATCHPOINT_READ = 2,
|
|
||||||
WATCHPOINT_RW = 3,
|
|
||||||
WATCHPOINT_WRITE_CHANGE = 4,
|
|
||||||
};
|
|
||||||
|
|
||||||
[UnmanagedFunctionPointer(cc)]
|
[UnmanagedFunctionPointer(cc)]
|
||||||
public delegate void MemCallback(uint addr, mWatchpointType type, uint oldValue, uint newValue);
|
public delegate void MemCallback(uint addr, mWatchpointType type, uint oldValue, uint newValue);
|
||||||
|
|
||||||
[DllImport(dll, CallingConvention = cc)]
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
public static extern void BizSetMemCallback(MemCallback cb);
|
public static extern void BizSetMemCallback(MemCallback cb);
|
||||||
|
|
||||||
|
[UnmanagedFunctionPointer(cc)]
|
||||||
|
public delegate void ExecCallback(uint pc);
|
||||||
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
|
public static extern void BizSetExecCallback(ExecCallback cb);
|
||||||
|
|
||||||
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
|
public static extern int BizSetWatchpoint(IntPtr ctx, uint addr, mWatchpointType type);
|
||||||
|
|
||||||
|
[DllImport(dll, CallingConvention = cc)]
|
||||||
|
public static extern bool BizClearWatchpoint(IntPtr ctx, int id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
||||||
|
|
||||||
var container = new CallbackContainer(callback);
|
var container = new CallbackContainer(callback);
|
||||||
|
|
||||||
LibmGBA.BizSetMemCallback(container.Call);
|
if (container.Callback.Type != MemoryCallbackType.Execute)
|
||||||
|
{
|
||||||
|
LibmGBA.BizSetMemCallback(container.Call);
|
||||||
|
//LibmGBA.BizSetWatchpoint(_core, callback.Address, container.WatchPointType);
|
||||||
|
}
|
||||||
|
|
||||||
_callbacks.Add(container);
|
_callbacks.Add(container);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue