2019-11-11 08:21:38 +01:00
|
|
|
use num_enum::{TryFromPrimitive, IntoPrimitive};
|
2019-11-11 01:24:29 +01:00
|
|
|
|
2019-11-15 04:16:44 +01:00
|
|
|
use super::ffi::*;
|
2019-11-12 08:56:28 +01:00
|
|
|
|
|
|
|
// NB: commented-out stuff is from newer versions of libretro.h not yet represented in libretro-sys
|
|
|
|
|
2019-11-18 08:02:40 +01:00
|
|
|
#[derive(TryFromPrimitive, IntoPrimitive, Debug, Clone, Copy)]
|
2019-11-08 03:43:14 +01:00
|
|
|
#[repr(u32)]
|
|
|
|
pub enum DeviceType {
|
2019-11-12 08:46:53 +01:00
|
|
|
None = DEVICE_NONE,
|
|
|
|
Joypad = DEVICE_JOYPAD,
|
|
|
|
Mouse = DEVICE_MOUSE,
|
|
|
|
Keyboard = DEVICE_KEYBOARD,
|
|
|
|
LightGun = DEVICE_LIGHTGUN,
|
|
|
|
Analog = DEVICE_ANALOG,
|
|
|
|
Pointer = DEVICE_POINTER,
|
2019-11-08 03:43:14 +01:00
|
|
|
}
|
|
|
|
|
2019-11-17 11:42:13 +01:00
|
|
|
impl DeviceType {
|
2019-11-24 05:18:52 +01:00
|
|
|
// would be const fn, but const u32::from isn't stable
|
2019-11-18 08:02:40 +01:00
|
|
|
pub fn device_subclass(&self, id: u32) -> u32 {
|
|
|
|
((id + 1) << DEVICE_TYPE_SHIFT) | u32::from(*self)
|
2019-11-17 11:42:13 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(TryFromPrimitive, IntoPrimitive, Debug)]
|
2019-11-08 03:43:14 +01:00
|
|
|
#[repr(u32)]
|
2019-11-24 04:37:18 +01:00
|
|
|
pub enum InputIndex {
|
2019-11-12 08:46:53 +01:00
|
|
|
Left = DEVICE_INDEX_ANALOG_LEFT,
|
|
|
|
Right = DEVICE_INDEX_ANALOG_RIGHT,
|
|
|
|
// Button = DEVICE_INDEX_ANALOG_BUTTON,
|
2019-11-08 03:43:14 +01:00
|
|
|
}
|
|
|
|
|
2019-11-17 11:42:13 +01:00
|
|
|
#[derive(TryFromPrimitive, IntoPrimitive, Debug)]
|
2019-11-08 03:43:14 +01:00
|
|
|
#[repr(u32)]
|
|
|
|
pub enum JoypadButton {
|
2019-11-12 08:46:53 +01:00
|
|
|
B = DEVICE_ID_JOYPAD_B,
|
|
|
|
Y = DEVICE_ID_JOYPAD_Y,
|
|
|
|
Select = DEVICE_ID_JOYPAD_SELECT,
|
|
|
|
Start = DEVICE_ID_JOYPAD_START,
|
|
|
|
Up = DEVICE_ID_JOYPAD_UP,
|
|
|
|
Down = DEVICE_ID_JOYPAD_DOWN,
|
|
|
|
Left = DEVICE_ID_JOYPAD_LEFT,
|
|
|
|
Right = DEVICE_ID_JOYPAD_RIGHT,
|
|
|
|
A = DEVICE_ID_JOYPAD_A,
|
|
|
|
X = DEVICE_ID_JOYPAD_X,
|
|
|
|
L = DEVICE_ID_JOYPAD_L,
|
|
|
|
R = DEVICE_ID_JOYPAD_R,
|
|
|
|
L2 = DEVICE_ID_JOYPAD_L2,
|
|
|
|
R2 = DEVICE_ID_JOYPAD_R2,
|
|
|
|
L3 = DEVICE_ID_JOYPAD_L3,
|
|
|
|
R3 = DEVICE_ID_JOYPAD_R3,
|
2019-11-08 03:43:14 +01:00
|
|
|
}
|
|
|
|
|
2019-11-17 11:42:13 +01:00
|
|
|
#[derive(TryFromPrimitive, IntoPrimitive, Debug)]
|
2019-11-08 03:43:14 +01:00
|
|
|
#[repr(u32)]
|
|
|
|
pub enum AnalogAxis {
|
2019-11-12 08:46:53 +01:00
|
|
|
X = DEVICE_ID_ANALOG_X,
|
|
|
|
Y = DEVICE_ID_ANALOG_Y,
|
2019-11-08 03:43:14 +01:00
|
|
|
}
|
|
|
|
|
2019-11-17 11:42:13 +01:00
|
|
|
#[derive(TryFromPrimitive, IntoPrimitive, Debug)]
|
2019-11-08 03:43:14 +01:00
|
|
|
#[repr(u32)]
|
|
|
|
pub enum MouseButton {
|
2019-11-12 08:46:53 +01:00
|
|
|
X = DEVICE_ID_MOUSE_X,
|
|
|
|
Y = DEVICE_ID_MOUSE_Y,
|
|
|
|
Left = DEVICE_ID_MOUSE_LEFT,
|
|
|
|
Right = DEVICE_ID_MOUSE_RIGHT,
|
|
|
|
WheelUp = DEVICE_ID_MOUSE_WHEELUP,
|
|
|
|
WheelDown = DEVICE_ID_MOUSE_WHEELDOWN,
|
|
|
|
Middle = DEVICE_ID_MOUSE_MIDDLE,
|
|
|
|
HorizWheelUp = DEVICE_ID_MOUSE_HORIZ_WHEELUP,
|
|
|
|
HorizWheelDown = DEVICE_ID_MOUSE_HORIZ_WHEELDOWN,
|
2019-11-08 03:43:14 +01:00
|
|
|
}
|
|
|
|
|
2019-11-17 11:42:13 +01:00
|
|
|
#[derive(TryFromPrimitive, IntoPrimitive, Debug)]
|
2019-11-08 03:43:14 +01:00
|
|
|
#[repr(u32)]
|
|
|
|
pub enum LightGunButton {
|
2019-11-12 08:46:53 +01:00
|
|
|
// ScreenX = DEVICE_ID_LIGHTGUN_SCREEN_X,
|
|
|
|
// ScreenY = DEVICE_ID_LIGHTGUN_SCREEN_Y,
|
|
|
|
// IsOffscreen = DEVICE_ID_LIGHTGUN_IS_OFFSCREEN,
|
|
|
|
Trigger = DEVICE_ID_LIGHTGUN_TRIGGER,
|
|
|
|
// Reload = DEVICE_ID_LIGHTGUN_RELOAD,
|
|
|
|
Start = DEVICE_ID_LIGHTGUN_START,
|
|
|
|
// Select = DEVICE_ID_LIGHTGUN_SELECT,
|
|
|
|
// AuxC = DEVICE_ID_LIGHTGUN_AUX_C,
|
|
|
|
// DpadUp = DEVICE_ID_LIGHTGUN_DPAD_UP,
|
|
|
|
// DpadDown = DEVICE_ID_LIGHTGUN_DPAD_DOWN,
|
|
|
|
// DpadLeft = DEVICE_ID_LIGHTGUN_DPAD_LEFT,
|
|
|
|
// DpadRight = DEVICE_ID_LIGHTGUN_DPAD_RIGHT,
|
|
|
|
X = DEVICE_ID_LIGHTGUN_X,
|
|
|
|
Y = DEVICE_ID_LIGHTGUN_Y,
|
|
|
|
Cursor = DEVICE_ID_LIGHTGUN_CURSOR,
|
|
|
|
Turbo = DEVICE_ID_LIGHTGUN_TURBO,
|
|
|
|
Pause = DEVICE_ID_LIGHTGUN_PAUSE,
|
2019-11-08 03:43:14 +01:00
|
|
|
}
|
|
|
|
|
2019-11-17 11:42:13 +01:00
|
|
|
#[derive(TryFromPrimitive, IntoPrimitive, Debug)]
|
2019-11-08 03:43:14 +01:00
|
|
|
#[repr(u32)]
|
|
|
|
pub enum PointerStat {
|
2019-11-12 08:46:53 +01:00
|
|
|
X = DEVICE_ID_POINTER_X,
|
|
|
|
Y = DEVICE_ID_POINTER_Y,
|
|
|
|
Pressed = DEVICE_ID_POINTER_PRESSED,
|
2019-11-08 03:43:14 +01:00
|
|
|
}
|
|
|
|
|
2019-11-11 08:21:38 +01:00
|
|
|
#[derive(TryFromPrimitive, IntoPrimitive)]
|
2019-11-11 01:24:29 +01:00
|
|
|
#[repr(u32)]
|
|
|
|
pub enum EnvRotation {
|
|
|
|
None = 0,
|
|
|
|
CounterClockwise90 = 1,
|
|
|
|
CounterClockwise180 = 2,
|
|
|
|
CounterClockwise270 = 3,
|
|
|
|
}
|
2019-11-12 08:56:28 +01:00
|
|
|
|
2019-11-11 01:24:29 +01:00
|
|
|
// TODO: experimental calls
|
2019-11-17 10:31:45 +01:00
|
|
|
#[derive(TryFromPrimitive, IntoPrimitive, Debug)]
|
2019-11-11 08:21:38 +01:00
|
|
|
#[repr(u32)]
|
2019-11-12 08:46:53 +01:00
|
|
|
pub enum EnvCmd {
|
|
|
|
SetRotation = ENVIRONMENT_SET_ROTATION,
|
|
|
|
GetOverscan = ENVIRONMENT_GET_OVERSCAN,
|
|
|
|
GetCanDupe = ENVIRONMENT_GET_CAN_DUPE,
|
|
|
|
SetMessage = ENVIRONMENT_SET_MESSAGE,
|
|
|
|
Shutdown = ENVIRONMENT_SHUTDOWN,
|
|
|
|
SetPerformanceLevel = ENVIRONMENT_SET_PERFORMANCE_LEVEL,
|
|
|
|
GetSystemDirectory = ENVIRONMENT_GET_SYSTEM_DIRECTORY,
|
|
|
|
SetPixelFormat = ENVIRONMENT_SET_PIXEL_FORMAT,
|
|
|
|
SetInputDescriptors = ENVIRONMENT_SET_INPUT_DESCRIPTORS,
|
|
|
|
SetKeyboardCallback = ENVIRONMENT_SET_KEYBOARD_CALLBACK,
|
|
|
|
SetDiskControlInterface = ENVIRONMENT_SET_DISK_CONTROL_INTERFACE,
|
|
|
|
SetHwRender = ENVIRONMENT_SET_HW_RENDER,
|
|
|
|
GetVariable = ENVIRONMENT_GET_VARIABLE,
|
|
|
|
SetVariables = ENVIRONMENT_SET_VARIABLES,
|
|
|
|
GetVariableUpdate = ENVIRONMENT_GET_VARIABLE_UPDATE,
|
|
|
|
SetSupportNoGame = ENVIRONMENT_SET_SUPPORT_NO_GAME,
|
|
|
|
GetLibretroPath = ENVIRONMENT_GET_LIBRETRO_PATH,
|
|
|
|
SetFrameTimeCallback = ENVIRONMENT_SET_FRAME_TIME_CALLBACK,
|
|
|
|
SetAudioCallback = ENVIRONMENT_SET_AUDIO_CALLBACK,
|
|
|
|
GetRumbleInterface = ENVIRONMENT_GET_RUMBLE_INTERFACE,
|
|
|
|
GetInputDeviceCapabilities = ENVIRONMENT_GET_INPUT_DEVICE_CAPABILITIES,
|
|
|
|
GetSensorInterface = ENVIRONMENT_GET_SENSOR_INTERFACE,
|
|
|
|
GetCameraInterface = ENVIRONMENT_GET_CAMERA_INTERFACE,
|
|
|
|
GetLogInterface = ENVIRONMENT_GET_LOG_INTERFACE,
|
|
|
|
GetPerfInterface = ENVIRONMENT_GET_PERF_INTERFACE,
|
|
|
|
GetLocationInterface = ENVIRONMENT_GET_LOCATION_INTERFACE,
|
|
|
|
GetCoreAssetsDirectory = ENVIRONMENT_GET_CORE_ASSETS_DIRECTORY,
|
|
|
|
GetSaveDirectory = ENVIRONMENT_GET_SAVE_DIRECTORY,
|
|
|
|
SetSystemAvInfo = ENVIRONMENT_SET_SYSTEM_AV_INFO,
|
|
|
|
SetProcAddressCallback = ENVIRONMENT_SET_PROC_ADDRESS_CALLBACK,
|
|
|
|
SetSubsystemInfo = ENVIRONMENT_SET_SUBSYSTEM_INFO,
|
|
|
|
SetControllerInfo = ENVIRONMENT_SET_CONTROLLER_INFO,
|
|
|
|
SetMemoryMaps = ENVIRONMENT_SET_MEMORY_MAPS,
|
|
|
|
SetGeometry = ENVIRONMENT_SET_GEOMETRY,
|
|
|
|
GetUsername = ENVIRONMENT_GET_USERNAME,
|
|
|
|
GetLanguage = ENVIRONMENT_GET_LANGUAGE,
|
|
|
|
// SetSerializationQuirks = ENVIRONMENT_SET_SERIALIZATION_QUIRKS,
|
2019-11-11 01:24:29 +01:00
|
|
|
}
|