PDP1: USB game controllers for Spacewar.
This commit is contained in:
parent
750b8f40cb
commit
4eaf4f1bdc
1 changed files with 33 additions and 1 deletions
|
@ -153,14 +153,46 @@ t_stat dpy_svc (UNIT *uptr)
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void dpy_joy_motion (int device, int axis, int value)
|
||||||
|
{
|
||||||
|
if (device < 2 && axis < 1) {
|
||||||
|
int mask = 0;
|
||||||
|
int shift = 14 * device;
|
||||||
|
if (value < -10000)
|
||||||
|
mask = 010;
|
||||||
|
else if (value > 1000)
|
||||||
|
mask = 004;
|
||||||
|
spacewar_switches &= ~(014 << shift);
|
||||||
|
spacewar_switches |= mask << shift;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void dpy_joy_button (int device, int button, int state)
|
||||||
|
{
|
||||||
|
if (device < 2 && button < 2) {
|
||||||
|
/* Button 0 is fire, 1 is thrust. */
|
||||||
|
int mask = 1 << button;
|
||||||
|
mask <<= 14 * device;
|
||||||
|
if (state)
|
||||||
|
spacewar_switches |= mask;
|
||||||
|
else
|
||||||
|
spacewar_switches &= ~mask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Reset routine */
|
/* Reset routine */
|
||||||
|
|
||||||
t_stat dpy_reset (DEVICE *dptr)
|
t_stat dpy_reset (DEVICE *dptr)
|
||||||
{
|
{
|
||||||
if (!(dptr->flags & DEV_DIS)) {
|
if (dptr->flags & DEV_DIS) {
|
||||||
|
display_close(dptr);
|
||||||
|
}
|
||||||
|
else {
|
||||||
display_init(DISPLAY_TYPE, PIX_SCALE, dptr);
|
display_init(DISPLAY_TYPE, PIX_SCALE, dptr);
|
||||||
display_reset();
|
display_reset();
|
||||||
vid_register_quit_callback (&dpy_quit_callback);
|
vid_register_quit_callback (&dpy_quit_callback);
|
||||||
|
vid_register_gamepad_motion_callback (dpy_joy_motion);
|
||||||
|
vid_register_gamepad_button_callback (dpy_joy_button);
|
||||||
cpls = cpls & ~CPLS_DPY;
|
cpls = cpls & ~CPLS_DPY;
|
||||||
iosta = iosta & ~(IOS_PNT | IOS_SPC); /* clear flags */
|
iosta = iosta & ~(IOS_PNT | IOS_SPC); /* clear flags */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue