BizHawk/BizHawk.Emulation.Cores/Consoles/Sony/PSP/PPSSPPDll.cs

89 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace BizHawk.Emulation.Cores.Sony.PSP
{
public static class PPSSPPDll
{
const CallingConvention cc = CallingConvention.StdCall;
const string dd = "PPSSPPBizhawk.dll";
[UnmanagedFunctionPointer(cc)]
public delegate void LogCB(char type, string message);
[DllImport(dd, CallingConvention = cc)]
public static extern bool BizInit(string fn, LogCB logcallback);
//[DllImport(dd, CallingConvention = cc)]
//public static extern void setvidbuff(IntPtr buff);
[DllImport(dd, CallingConvention = cc)]
public static extern int BizClose();
[DllImport(dd, CallingConvention = cc)]
public static extern void BizAdvance(int[] vidbuff, [In]Input input);
[DllImport(dd, CallingConvention = cc)]
public static extern int MixSound(short[] buff, int nsamp);
public enum Buttons : int
{
/*
A = 1, // this is what they're called in the source...
B = 2,
X = 4,
Y = 8,
LBUMPER = 16,
RBUMPER = 32,
START = 64,
SELECT = 128,
UP = 256,
DOWN = 512,
LEFT = 1024,
RIGHT = 2048,
MENU = 4096,
BACK = 8192*/
/*SQUARE*/ A= 0x8000,
/*TRIANGLE*/ B= 0x1000,
/*CIRCLE*/ X= 0x2000,
/*CROSS*/ Y= 0x4000,
UP = 0x0010,
DOWN = 0x0040,
LEFT = 0x0080,
RIGHT = 0x0020,
START = 0x0008,
SELECT = 0x0001,
/*LTRIGGER*/ LBUMPER= 0x0100,
/*RTRIGGER*/ RBUMPER= 0x0200,
MENU=0,
BACK=0
}
[StructLayout(LayoutKind.Sequential)]
public class Input
{
public Buttons CurrentButtons; // this frame
public Buttons LastButtons; // last frame
public Buttons DownButtons; // rising edge
public Buttons UpButtons; // falling edge
public float LeftStickX;
public float LeftStickY;
public float RightStickX;
public float RightStickY;
public float LeftTrigger;
public float RightTrigger;
public void SetButtons(Buttons newButtons)
{
LastButtons = CurrentButtons;
CurrentButtons = newButtons;
DownButtons = (LastButtons ^ CurrentButtons) & CurrentButtons;
UpButtons = (LastButtons ^ CurrentButtons) & LastButtons;
}
}
}
}