Merge pull request #1946 from jriwanek-forks/patch-joystick
More Joysticks
This commit is contained in:
@@ -80,16 +80,18 @@ static const struct {
|
|||||||
const char *internal_name;
|
const char *internal_name;
|
||||||
const joystick_if_t *joystick;
|
const joystick_if_t *joystick;
|
||||||
} joysticks[] = {
|
} joysticks[] = {
|
||||||
{ "none", &joystick_none },
|
{ "none", &joystick_none },
|
||||||
{ "standard_2button", &joystick_standard },
|
{ "2axis_2button", &joystick_2axis_2button },
|
||||||
{ "standard_4button", &joystick_standard_4button },
|
{ "2axis_4button", &joystick_2axis_4button },
|
||||||
{ "standard_6button", &joystick_standard_6button },
|
{ "2axis_6button", &joystick_2axis_6button },
|
||||||
{ "standard_8button", &joystick_standard_8button },
|
{ "2axis_8button", &joystick_2axis_8button },
|
||||||
{ "4axis_4button", &joystick_4axis_4button },
|
{ "3axis_2button", &joystick_3axis_2button },
|
||||||
|
{ "3axis_4button", &joystick_3axis_4button },
|
||||||
|
{ "4axis_4button", &joystick_4axis_4button },
|
||||||
{ "ch_flighstick_pro", &joystick_ch_flightstick_pro },
|
{ "ch_flighstick_pro", &joystick_ch_flightstick_pro },
|
||||||
{ "sidewinder_pad", &joystick_sw_pad },
|
{ "sidewinder_pad", &joystick_sw_pad },
|
||||||
{ "thrustmaster_fcs", &joystick_tm_fcs },
|
{ "thrustmaster_fcs", &joystick_tm_fcs },
|
||||||
{ "", NULL }
|
{ "", NULL }
|
||||||
};
|
};
|
||||||
static joystick_instance_t *joystick_instance = NULL;
|
static joystick_instance_t *joystick_instance = NULL;
|
||||||
|
|
||||||
@@ -452,6 +454,15 @@ const device_t gameport_201_device = {
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const device_t gameport_208_device = {
|
||||||
|
"Game port (Port 208h-20fh)",
|
||||||
|
0, 0x080208,
|
||||||
|
gameport_init,
|
||||||
|
gameport_close,
|
||||||
|
NULL, { NULL }, NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
const device_t gameport_pnp_device = {
|
const device_t gameport_pnp_device = {
|
||||||
"Game port (Plug and Play only)",
|
"Game port (Plug and Play only)",
|
||||||
0, 0x080000,
|
0, 0x080000,
|
||||||
|
@@ -145,6 +145,26 @@ static int joystick_standard_read_axis_4button(void *p, int axis)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int joystick_standard_read_axis_3axis(void *p, int axis)
|
||||||
|
{
|
||||||
|
if (!JOYSTICK_PRESENT(0))
|
||||||
|
return AXIS_NOT_PRESENT;
|
||||||
|
|
||||||
|
switch (axis)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
return joystick_state[0].axis[0];
|
||||||
|
case 1:
|
||||||
|
return joystick_state[0].axis[1];
|
||||||
|
case 2:
|
||||||
|
return joystick_state[0].axis[2];
|
||||||
|
case 3:
|
||||||
|
return 0;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int joystick_standard_read_axis_4axis(void *p, int axis)
|
static int joystick_standard_read_axis_4axis(void *p, int axis)
|
||||||
{
|
{
|
||||||
if (!JOYSTICK_PRESENT(0))
|
if (!JOYSTICK_PRESENT(0))
|
||||||
@@ -216,9 +236,9 @@ static void joystick_standard_a0_over(void *p)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
const joystick_if_t joystick_standard =
|
const joystick_if_t joystick_2axis_2button =
|
||||||
{
|
{
|
||||||
"Standard 2-button joystick(s)",
|
"2-axis, 2-button joystick(s)",
|
||||||
joystick_standard_init,
|
joystick_standard_init,
|
||||||
joystick_standard_close,
|
joystick_standard_close,
|
||||||
joystick_standard_read,
|
joystick_standard_read,
|
||||||
@@ -232,9 +252,9 @@ const joystick_if_t joystick_standard =
|
|||||||
{"X axis", "Y axis"},
|
{"X axis", "Y axis"},
|
||||||
{"Button 1", "Button 2"}
|
{"Button 1", "Button 2"}
|
||||||
};
|
};
|
||||||
const joystick_if_t joystick_standard_4button =
|
const joystick_if_t joystick_2axis_4button =
|
||||||
{
|
{
|
||||||
"Standard 4-button joystick",
|
"2-axis, 4-button joystick",
|
||||||
joystick_standard_init,
|
joystick_standard_init,
|
||||||
joystick_standard_close,
|
joystick_standard_close,
|
||||||
joystick_standard_read_4button,
|
joystick_standard_read_4button,
|
||||||
@@ -248,9 +268,41 @@ const joystick_if_t joystick_standard_4button =
|
|||||||
{"X axis", "Y axis"},
|
{"X axis", "Y axis"},
|
||||||
{"Button 1", "Button 2", "Button 3", "Button 4"}
|
{"Button 1", "Button 2", "Button 3", "Button 4"}
|
||||||
};
|
};
|
||||||
|
const joystick_if_t joystick_3axis_2button =
|
||||||
|
{
|
||||||
|
"3-axis, 2-button joystick",
|
||||||
|
joystick_standard_init,
|
||||||
|
joystick_standard_close,
|
||||||
|
joystick_standard_read,
|
||||||
|
joystick_standard_write,
|
||||||
|
joystick_standard_read_axis_3axis,
|
||||||
|
joystick_standard_a0_over,
|
||||||
|
3,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
{"X axis", "Y axis", "Z axis"},
|
||||||
|
{"Button 1", "Button 2"}
|
||||||
|
};
|
||||||
|
const joystick_if_t joystick_3axis_4button =
|
||||||
|
{
|
||||||
|
"3-axis, 4-button joystick",
|
||||||
|
joystick_standard_init,
|
||||||
|
joystick_standard_close,
|
||||||
|
joystick_standard_read_4button,
|
||||||
|
joystick_standard_write,
|
||||||
|
joystick_standard_read_axis_3axis,
|
||||||
|
joystick_standard_a0_over,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
{"X axis", "Y axis", "Z axis"},
|
||||||
|
{"Button 1", "Button 2", "Button 3", "Button 4"}
|
||||||
|
};
|
||||||
const joystick_if_t joystick_4axis_4button =
|
const joystick_if_t joystick_4axis_4button =
|
||||||
{
|
{
|
||||||
"4-axis 4-button joystick",
|
"4-axis, 4-button joystick",
|
||||||
joystick_standard_init,
|
joystick_standard_init,
|
||||||
joystick_standard_close,
|
joystick_standard_close,
|
||||||
joystick_standard_read_4button,
|
joystick_standard_read_4button,
|
||||||
@@ -264,9 +316,9 @@ const joystick_if_t joystick_4axis_4button =
|
|||||||
{"X axis", "Y axis", "Z axis", "zX axis"},
|
{"X axis", "Y axis", "Z axis", "zX axis"},
|
||||||
{"Button 1", "Button 2", "Button 3", "Button 4"}
|
{"Button 1", "Button 2", "Button 3", "Button 4"}
|
||||||
};
|
};
|
||||||
const joystick_if_t joystick_standard_6button =
|
const joystick_if_t joystick_2axis_6button =
|
||||||
{
|
{
|
||||||
"Standard 6-button joystick",
|
"2-axis, 6-button joystick",
|
||||||
joystick_standard_init,
|
joystick_standard_init,
|
||||||
joystick_standard_close,
|
joystick_standard_close,
|
||||||
joystick_standard_read_4button,
|
joystick_standard_read_4button,
|
||||||
@@ -280,9 +332,9 @@ const joystick_if_t joystick_standard_6button =
|
|||||||
{"X axis", "Y axis"},
|
{"X axis", "Y axis"},
|
||||||
{"Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6"}
|
{"Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6"}
|
||||||
};
|
};
|
||||||
const joystick_if_t joystick_standard_8button =
|
const joystick_if_t joystick_2axis_8button =
|
||||||
{
|
{
|
||||||
"Standard 8-button joystick",
|
"2-axis, 8-button joystick",
|
||||||
joystick_standard_init,
|
joystick_standard_init,
|
||||||
joystick_standard_close,
|
joystick_standard_close,
|
||||||
joystick_standard_read_4button,
|
joystick_standard_read_4button,
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* connected
|
* connected
|
||||||
* - Packet preceeded by high data (currently 50us), and
|
* - Packet preceeded by high data (currently 50us), and
|
||||||
* followed by low data (currently 160us) - timings are
|
* followed by low data (currently 160us) - timings are
|
||||||
* probably wrong, but good enoughfor everything I've tried
|
* probably wrong, but good enough for everything I've tried
|
||||||
* - Analog inputs are only used to time ID packet request.
|
* - Analog inputs are only used to time ID packet request.
|
||||||
* If A0 timing out is followed after ~64us by another 0x201
|
* If A0 timing out is followed after ~64us by another 0x201
|
||||||
* write then an ID packet is triggered
|
* write then an ID packet is triggered
|
||||||
@@ -259,7 +259,7 @@ static void sw_a0_over(void *p)
|
|||||||
{
|
{
|
||||||
sw_data *sw = (sw_data *)p;
|
sw_data *sw = (sw_data *)p;
|
||||||
|
|
||||||
timer_set_delay_u64(&sw->trigger_timer, TIMER_USEC * 10000);
|
timer_set_delay_u64(&sw->trigger_timer, TIMER_USEC * 10000);
|
||||||
}
|
}
|
||||||
|
|
||||||
const joystick_if_t joystick_sw_pad =
|
const joystick_if_t joystick_sw_pad =
|
||||||
@@ -273,7 +273,7 @@ const joystick_if_t joystick_sw_pad =
|
|||||||
sw_a0_over,
|
sw_a0_over,
|
||||||
2,
|
2,
|
||||||
10,
|
10,
|
||||||
0,
|
0,
|
||||||
4,
|
4,
|
||||||
{"X axis", "Y axis"},
|
{"X axis", "Y axis"},
|
||||||
{"A", "B", "C", "X", "Y", "Z", "L", "R", "Start", "M"}
|
{"A", "B", "C", "X", "Y", "Z", "L", "R", "Start", "M"}
|
||||||
|
@@ -108,6 +108,7 @@ extern "C" {
|
|||||||
#ifdef EMU_DEVICE_H
|
#ifdef EMU_DEVICE_H
|
||||||
extern const device_t gameport_device;
|
extern const device_t gameport_device;
|
||||||
extern const device_t gameport_201_device;
|
extern const device_t gameport_201_device;
|
||||||
|
extern const device_t gameport_208_device;
|
||||||
extern const device_t gameport_pnp_device;
|
extern const device_t gameport_pnp_device;
|
||||||
extern const device_t gameport_pnp_6io_device;
|
extern const device_t gameport_pnp_6io_device;
|
||||||
extern const device_t gameport_sio_device;
|
extern const device_t gameport_sio_device;
|
||||||
|
@@ -35,8 +35,10 @@
|
|||||||
* USA.
|
* USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern const joystick_if_t joystick_standard;
|
extern const joystick_if_t joystick_2axis_2button;
|
||||||
extern const joystick_if_t joystick_standard_4button;
|
extern const joystick_if_t joystick_2axis_4button;
|
||||||
|
extern const joystick_if_t joystick_3axis_2button;
|
||||||
|
extern const joystick_if_t joystick_3axis_4button;
|
||||||
extern const joystick_if_t joystick_4axis_4button;
|
extern const joystick_if_t joystick_4axis_4button;
|
||||||
extern const joystick_if_t joystick_standard_6button;
|
extern const joystick_if_t joystick_2axis_6button;
|
||||||
extern const joystick_if_t joystick_standard_8button;
|
extern const joystick_if_t joystick_2axis_8button;
|
||||||
|
Reference in New Issue
Block a user