setup some stylus control
This commit is contained in:
parent
bce9b6f33d
commit
0a412f779e
|
@ -104,150 +104,150 @@ namespace BizHawk.Emulation.Cores
|
||||||
|
|
||||||
public enum RETRO_KEY
|
public enum RETRO_KEY
|
||||||
{
|
{
|
||||||
UNKNOWN = 0,
|
UNKNOWN = 0,
|
||||||
FIRST = 0,
|
FIRST = 0,
|
||||||
BACKSPACE = 8,
|
BACKSPACE = 8,
|
||||||
TAB = 9,
|
TAB = 9,
|
||||||
CLEAR = 12,
|
CLEAR = 12,
|
||||||
RETURN = 13,
|
RETURN = 13,
|
||||||
PAUSE = 19,
|
PAUSE = 19,
|
||||||
ESCAPE = 27,
|
ESCAPE = 27,
|
||||||
SPACE = 32,
|
SPACE = 32,
|
||||||
EXCLAIM = 33,
|
EXCLAIM = 33,
|
||||||
QUOTEDBL = 34,
|
QUOTEDBL = 34,
|
||||||
HASH = 35,
|
HASH = 35,
|
||||||
DOLLAR = 36,
|
DOLLAR = 36,
|
||||||
AMPERSAND = 38,
|
AMPERSAND = 38,
|
||||||
QUOTE = 39,
|
QUOTE = 39,
|
||||||
LEFTPAREN = 40,
|
LEFTPAREN = 40,
|
||||||
RIGHTPAREN = 41,
|
RIGHTPAREN = 41,
|
||||||
ASTERISK = 42,
|
ASTERISK = 42,
|
||||||
PLUS = 43,
|
PLUS = 43,
|
||||||
COMMA = 44,
|
COMMA = 44,
|
||||||
MINUS = 45,
|
MINUS = 45,
|
||||||
PERIOD = 46,
|
PERIOD = 46,
|
||||||
SLASH = 47,
|
SLASH = 47,
|
||||||
_0 = 48,
|
_0 = 48,
|
||||||
_1 = 49,
|
_1 = 49,
|
||||||
_2 = 50,
|
_2 = 50,
|
||||||
_3 = 51,
|
_3 = 51,
|
||||||
_4 = 52,
|
_4 = 52,
|
||||||
_5 = 53,
|
_5 = 53,
|
||||||
_6 = 54,
|
_6 = 54,
|
||||||
_7 = 55,
|
_7 = 55,
|
||||||
_8 = 56,
|
_8 = 56,
|
||||||
_9 = 57,
|
_9 = 57,
|
||||||
COLON = 58,
|
COLON = 58,
|
||||||
SEMICOLON = 59,
|
SEMICOLON = 59,
|
||||||
LESS = 60,
|
LESS = 60,
|
||||||
EQUALS = 61,
|
EQUALS = 61,
|
||||||
GREATER = 62,
|
GREATER = 62,
|
||||||
QUESTION = 63,
|
QUESTION = 63,
|
||||||
AT = 64,
|
AT = 64,
|
||||||
LEFTBRACKET = 91,
|
LEFTBRACKET = 91,
|
||||||
BACKSLASH = 92,
|
BACKSLASH = 92,
|
||||||
RIGHTBRACKET = 93,
|
RIGHTBRACKET = 93,
|
||||||
CARET = 94,
|
CARET = 94,
|
||||||
UNDERSCORE = 95,
|
UNDERSCORE = 95,
|
||||||
BACKQUOTE = 96,
|
BACKQUOTE = 96,
|
||||||
a = 97,
|
a = 97,
|
||||||
b = 98,
|
b = 98,
|
||||||
c = 99,
|
c = 99,
|
||||||
d = 100,
|
d = 100,
|
||||||
e = 101,
|
e = 101,
|
||||||
f = 102,
|
f = 102,
|
||||||
g = 103,
|
g = 103,
|
||||||
h = 104,
|
h = 104,
|
||||||
i = 105,
|
i = 105,
|
||||||
j = 106,
|
j = 106,
|
||||||
k = 107,
|
k = 107,
|
||||||
l = 108,
|
l = 108,
|
||||||
m = 109,
|
m = 109,
|
||||||
n = 110,
|
n = 110,
|
||||||
o = 111,
|
o = 111,
|
||||||
p = 112,
|
p = 112,
|
||||||
q = 113,
|
q = 113,
|
||||||
r = 114,
|
r = 114,
|
||||||
s = 115,
|
s = 115,
|
||||||
t = 116,
|
t = 116,
|
||||||
u = 117,
|
u = 117,
|
||||||
v = 118,
|
v = 118,
|
||||||
w = 119,
|
w = 119,
|
||||||
x = 120,
|
x = 120,
|
||||||
y = 121,
|
y = 121,
|
||||||
z = 122,
|
z = 122,
|
||||||
DELETE = 127,
|
DELETE = 127,
|
||||||
|
|
||||||
KP0 = 256,
|
KP0 = 256,
|
||||||
KP1 = 257,
|
KP1 = 257,
|
||||||
KP2 = 258,
|
KP2 = 258,
|
||||||
KP3 = 259,
|
KP3 = 259,
|
||||||
KP4 = 260,
|
KP4 = 260,
|
||||||
KP5 = 261,
|
KP5 = 261,
|
||||||
KP6 = 262,
|
KP6 = 262,
|
||||||
KP7 = 263,
|
KP7 = 263,
|
||||||
KP8 = 264,
|
KP8 = 264,
|
||||||
KP9 = 265,
|
KP9 = 265,
|
||||||
KP_PERIOD = 266,
|
KP_PERIOD = 266,
|
||||||
KP_DIVIDE = 267,
|
KP_DIVIDE = 267,
|
||||||
KP_MULTIPLY = 268,
|
KP_MULTIPLY = 268,
|
||||||
KP_MINUS = 269,
|
KP_MINUS = 269,
|
||||||
KP_PLUS = 270,
|
KP_PLUS = 270,
|
||||||
KP_ENTER = 271,
|
KP_ENTER = 271,
|
||||||
KP_EQUALS = 272,
|
KP_EQUALS = 272,
|
||||||
|
|
||||||
UP = 273,
|
UP = 273,
|
||||||
DOWN = 274,
|
DOWN = 274,
|
||||||
RIGHT = 275,
|
RIGHT = 275,
|
||||||
LEFT = 276,
|
LEFT = 276,
|
||||||
INSERT = 277,
|
INSERT = 277,
|
||||||
HOME = 278,
|
HOME = 278,
|
||||||
END = 279,
|
END = 279,
|
||||||
PAGEUP = 280,
|
PAGEUP = 280,
|
||||||
PAGEDOWN = 281,
|
PAGEDOWN = 281,
|
||||||
|
|
||||||
F1 = 282,
|
F1 = 282,
|
||||||
F2 = 283,
|
F2 = 283,
|
||||||
F3 = 284,
|
F3 = 284,
|
||||||
F4 = 285,
|
F4 = 285,
|
||||||
F5 = 286,
|
F5 = 286,
|
||||||
F6 = 287,
|
F6 = 287,
|
||||||
F7 = 288,
|
F7 = 288,
|
||||||
F8 = 289,
|
F8 = 289,
|
||||||
F9 = 290,
|
F9 = 290,
|
||||||
F10 = 291,
|
F10 = 291,
|
||||||
F11 = 292,
|
F11 = 292,
|
||||||
F12 = 293,
|
F12 = 293,
|
||||||
F13 = 294,
|
F13 = 294,
|
||||||
F14 = 295,
|
F14 = 295,
|
||||||
F15 = 296,
|
F15 = 296,
|
||||||
|
|
||||||
NUMLOCK = 300,
|
NUMLOCK = 300,
|
||||||
CAPSLOCK = 301,
|
CAPSLOCK = 301,
|
||||||
SCROLLOCK = 302,
|
SCROLLOCK = 302,
|
||||||
RSHIFT = 303,
|
RSHIFT = 303,
|
||||||
LSHIFT = 304,
|
LSHIFT = 304,
|
||||||
RCTRL = 305,
|
RCTRL = 305,
|
||||||
LCTRL = 306,
|
LCTRL = 306,
|
||||||
RALT = 307,
|
RALT = 307,
|
||||||
LALT = 308,
|
LALT = 308,
|
||||||
RMETA = 309,
|
RMETA = 309,
|
||||||
LMETA = 310,
|
LMETA = 310,
|
||||||
LSUPER = 311,
|
LSUPER = 311,
|
||||||
RSUPER = 312,
|
RSUPER = 312,
|
||||||
MODE = 313,
|
MODE = 313,
|
||||||
COMPOSE = 314,
|
COMPOSE = 314,
|
||||||
|
|
||||||
HELP = 315,
|
HELP = 315,
|
||||||
PRINT = 316,
|
PRINT = 316,
|
||||||
SYSREQ = 317,
|
SYSREQ = 317,
|
||||||
BREAK = 318,
|
BREAK = 318,
|
||||||
MENU = 319,
|
MENU = 319,
|
||||||
POWER = 320,
|
POWER = 320,
|
||||||
EURO = 321,
|
EURO = 321,
|
||||||
UNDO = 322,
|
UNDO = 322,
|
||||||
|
|
||||||
LAST
|
LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
[Flags]
|
[Flags]
|
||||||
|
|
|
@ -151,9 +151,19 @@ namespace BizHawk.Emulation.Cores
|
||||||
IntPtr pKey = new IntPtr(*variables++);
|
IntPtr pKey = new IntPtr(*variables++);
|
||||||
string key = Marshal.PtrToStringAnsi(pKey);
|
string key = Marshal.PtrToStringAnsi(pKey);
|
||||||
Console.WriteLine("Requesting variable: {0}", key);
|
Console.WriteLine("Requesting variable: {0}", key);
|
||||||
*variables = unmanagedResources.StringToHGlobalAnsi("0").ToPointer();
|
//always return default
|
||||||
|
//TODO: cache settings atoms
|
||||||
|
if(!Description.Variables.ContainsKey(key))
|
||||||
|
return false;
|
||||||
|
//HACK: return pointer for desmume mouse, i want to implement that first
|
||||||
|
if (key == "desmume_pointer_type")
|
||||||
|
{
|
||||||
|
*variables = unmanagedResources.StringToHGlobalAnsi("touch").ToPointer();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
*variables = unmanagedResources.StringToHGlobalAnsi(Description.Variables[key].DefaultOption).ToPointer();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
case LibRetro.RETRO_ENVIRONMENT.SET_VARIABLES:
|
case LibRetro.RETRO_ENVIRONMENT.SET_VARIABLES:
|
||||||
{
|
{
|
||||||
void** variables = (void**)data.ToPointer();
|
void** variables = (void**)data.ToPointer();
|
||||||
|
@ -165,7 +175,11 @@ namespace BizHawk.Emulation.Cores
|
||||||
break;
|
break;
|
||||||
string key = Marshal.PtrToStringAnsi(pKey);
|
string key = Marshal.PtrToStringAnsi(pKey);
|
||||||
string value = Marshal.PtrToStringAnsi(pValue);
|
string value = Marshal.PtrToStringAnsi(pValue);
|
||||||
environmentInfo.Variables.Add(Tuple.Create(key, value));
|
var vd = new VariableDescription() { Name = key};
|
||||||
|
var parts = value.Split(';');
|
||||||
|
vd.Description = parts[0];
|
||||||
|
vd.Options = parts[1].TrimStart(' ').Split('|');
|
||||||
|
Description.Variables[vd.Name] = vd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -223,14 +237,29 @@ namespace BizHawk.Emulation.Cores
|
||||||
else return false;
|
else return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//meanings (they are kind of hazy, but once we're done implementing this it will be completely defined by example)
|
||||||
//port = console physical port?
|
//port = console physical port?
|
||||||
//device = logical device type
|
//device = logical device type
|
||||||
//index = sub device index? (multitap?)
|
//index = sub device index? (multitap?)
|
||||||
//id = button id
|
//id = button id
|
||||||
short retro_input_state(uint port, uint device, uint index, uint id)
|
short retro_input_state(uint port, uint device, uint index, uint id)
|
||||||
{
|
{
|
||||||
|
//helpful debugging
|
||||||
|
//Console.WriteLine("{0} {1} {2} {3}", port, device, index, id);
|
||||||
|
|
||||||
switch ((LibRetro.RETRO_DEVICE)device)
|
switch ((LibRetro.RETRO_DEVICE)device)
|
||||||
{
|
{
|
||||||
|
case LibRetro.RETRO_DEVICE.POINTER:
|
||||||
|
{
|
||||||
|
switch ((LibRetro.RETRO_DEVICE_ID_POINTER)id)
|
||||||
|
{
|
||||||
|
case LibRetro.RETRO_DEVICE_ID_POINTER.X: return (short)Controller.GetFloat("Pointer X");
|
||||||
|
case LibRetro.RETRO_DEVICE_ID_POINTER.Y: return (short)Controller.GetFloat("Pointer Y");
|
||||||
|
case LibRetro.RETRO_DEVICE_ID_POINTER.PRESSED: return (short)(Controller["Pointer Pressed"] ? 1 : 0);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
case LibRetro.RETRO_DEVICE.JOYPAD:
|
case LibRetro.RETRO_DEVICE.JOYPAD:
|
||||||
{
|
{
|
||||||
//The JOYPAD is sometimes called RetroPad (and we'll call it that in user-facing stuff cos retroarch does)
|
//The JOYPAD is sometimes called RetroPad (and we'll call it that in user-facing stuff cos retroarch does)
|
||||||
|
@ -274,7 +303,6 @@ namespace BizHawk.Emulation.Cores
|
||||||
class RetroEnvironmentInfo
|
class RetroEnvironmentInfo
|
||||||
{
|
{
|
||||||
public bool SupportNoGame;
|
public bool SupportNoGame;
|
||||||
public List<Tuple<string, string>> Variables = new List<Tuple<string, string>>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//disposable resources
|
//disposable resources
|
||||||
|
@ -402,14 +430,8 @@ namespace BizHawk.Emulation.Cores
|
||||||
Description.LibraryVersion = system_info.library_version;
|
Description.LibraryVersion = system_info.library_version;
|
||||||
Description.ValidExtensions = system_info.valid_extensions;
|
Description.ValidExtensions = system_info.valid_extensions;
|
||||||
Description.SupportsNoGame = environmentInfo.SupportNoGame;
|
Description.SupportsNoGame = environmentInfo.SupportNoGame;
|
||||||
foreach (var vv in environmentInfo.Variables)
|
//variables need to be done ahead of time, when theyre set through the environment
|
||||||
{
|
//some retro_init (for example, desmume) will continue to use variables (and maybe other parts of the environment) from within retro_init
|
||||||
var vd = new VariableDescription() { Name = vv.Item1 };
|
|
||||||
var parts = vv.Item2.Split(';');
|
|
||||||
vd.Description = parts[0];
|
|
||||||
vd.Options = parts[1].TrimStart(' ').Split('|');
|
|
||||||
Description.Variables[vd.Name] = vd;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
@ -493,6 +515,12 @@ namespace BizHawk.Emulation.Cores
|
||||||
})
|
})
|
||||||
definition.BoolButtons.Add(string.Format(item,"RetroPad"));
|
definition.BoolButtons.Add(string.Format(item,"RetroPad"));
|
||||||
|
|
||||||
|
definition.BoolButtons.Add("Pointer Pressed");
|
||||||
|
definition.FloatControls.Add("Pointer X");
|
||||||
|
definition.FloatControls.Add("Pointer Y");
|
||||||
|
definition.FloatRanges.Add(new ControllerDefinition.FloatRange(-32767, 0, 32767));
|
||||||
|
definition.FloatRanges.Add(new ControllerDefinition.FloatRange(-32767, 0, 32767));
|
||||||
|
|
||||||
return definition;
|
return definition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,8 @@
|
||||||
"P2 RetroPad X": "",
|
"P2 RetroPad X": "",
|
||||||
"P2 RetroPad A": "",
|
"P2 RetroPad A": "",
|
||||||
"P2 RetroPad L": "",
|
"P2 RetroPad L": "",
|
||||||
"P2 RetroPad R": ""
|
"P2 RetroPad R": "",
|
||||||
|
"Pointer Pressed": "WMouse L",
|
||||||
},
|
},
|
||||||
"NES Controller": {
|
"NES Controller": {
|
||||||
"P1 Up": "UpArrow, J1 POV1U, X1 DpadUp, X1 LStickUp",
|
"P1 Up": "UpArrow, J1 POV1U, X1 DpadUp, X1 LStickUp",
|
||||||
|
@ -1142,6 +1143,28 @@
|
||||||
"Deadzone": 0.1
|
"Deadzone": 0.1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Apple IIe Keyboard": {}
|
"Apple IIe Keyboard": {},
|
||||||
|
"LibRetro Controls": {
|
||||||
|
"Pointer X": {
|
||||||
|
"Value": "WMouse X",
|
||||||
|
"Mult": 1.0,
|
||||||
|
"Deadzone": 0.1
|
||||||
|
},
|
||||||
|
"Pointer Y": {
|
||||||
|
"Value": "WMouse Y",
|
||||||
|
"Mult": 1.0,
|
||||||
|
"Deadzone": 0.1
|
||||||
|
},
|
||||||
|
"P1 Pointer X": {
|
||||||
|
"Value": "",
|
||||||
|
"Mult": 1.0,
|
||||||
|
"Deadzone": 0.1
|
||||||
|
},
|
||||||
|
"P1 Pointer Y": {
|
||||||
|
"Value": "",
|
||||||
|
"Mult": 1.0,
|
||||||
|
"Deadzone": 0.1
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue