51 lines
2.0 KiB
C#
51 lines
2.0 KiB
C#
using System.Runtime.InteropServices;
|
|
|
|
internal static class Nova64Core
|
|
{
|
|
private const string LibName = "nova64_core";
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
|
public delegate void DisplayFlushDelegate(IntPtr buffer, ushort width, ushort height);
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
|
public delegate void AudioOutputDelegate(IntPtr samples, uint count);
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
|
|
public delegate int SdReadFileDelegate(uint slotIdx, string filePath, IntPtr destinationBuffer, uint destinationLength);
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
|
|
public delegate int SdGetFileSizeDelegate(uint slotIdx, string filePath);
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
|
public delegate void CartridgeStatusDelegate(uint slotIdx, bool isInserted);
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
|
|
public delegate void LogMessageDelegate([MarshalAs(UnmanagedType.LPStr)] string message);
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct Nova64IoInterface
|
|
{
|
|
public IntPtr display_flush;
|
|
public IntPtr audio_output;
|
|
public IntPtr sd_read_file;
|
|
public IntPtr sd_get_file_size;
|
|
public IntPtr cartridge_status;
|
|
public IntPtr log_message;
|
|
}
|
|
|
|
[DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern bool nova64_init(IntPtr io_interface);
|
|
|
|
[DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern int nova64_main();
|
|
|
|
[DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern bool nova64_shutdown();
|
|
|
|
[DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern bool nova64_is_finalized();
|
|
|
|
[DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern uint nova64_get_version();
|
|
}
|