mirror of
https://github.com/ogoguel/activegs-ios.git
synced 2024-10-09 04:56:38 +00:00
124 lines
3.3 KiB
C++
124 lines
3.3 KiB
C++
/************************************************************************/
|
|
/* KEGS: Apple //gs Emulator */
|
|
/* Copyright 2002 by Kent Dickey */
|
|
/* */
|
|
/* This code is covered by the GNU GPL */
|
|
/* */
|
|
/* The KEGS web page is kegs.sourceforge.net */
|
|
/* You may contact the author at: kadickey@alumni.princeton.edu */
|
|
/************************************************************************/
|
|
|
|
const char rcsid_joystick_driver_c[] = "@(#)$KmKId: joystick_driver.c,v 1.12 2004-10-17 21:28:48-04 kentd Exp $";
|
|
|
|
#include "../src/defc.h"
|
|
#include "../src/moremem.h"
|
|
#include "../src/paddles.h"
|
|
|
|
# include <windows.h>
|
|
# include <mmsystem.h>
|
|
|
|
|
|
void joystick_init()
|
|
{
|
|
JOYINFO info;
|
|
JOYCAPS joycap;
|
|
MMRESULT ret1, ret2;
|
|
int i;
|
|
|
|
// Check that there is a joystick device
|
|
if(joyGetNumDevs() <= 0) {
|
|
printf("No joystick hardware detected\n");
|
|
g_joystick_native_type1 = -1;
|
|
g_joystick_native_type2 = -1;
|
|
return;
|
|
}
|
|
|
|
g_joystick_native_type1 = -1;
|
|
g_joystick_native_type2 = -1;
|
|
|
|
// Check that at least joystick 1 or joystick 2 is available
|
|
ret1 = joyGetPos(JOYSTICKID1, &info);
|
|
ret2 = joyGetDevCaps(JOYSTICKID1, &joycap, sizeof(joycap));
|
|
if(ret1 == JOYERR_NOERROR && ret2 == JOYERR_NOERROR) {
|
|
g_joystick_native_type1 = JOYSTICKID1;
|
|
printf("Joystick #1 = %s\n", joycap.szPname);
|
|
g_joystick_native_type = JOYSTICKID1;
|
|
}
|
|
ret1 = joyGetPos(JOYSTICKID2, &info);
|
|
ret2 = joyGetDevCaps(JOYSTICKID2, &joycap, sizeof(joycap));
|
|
if(ret1 == JOYERR_NOERROR && ret2 == JOYERR_NOERROR) {
|
|
g_joystick_native_type2 = JOYSTICKID2;
|
|
printf("Joystick #2 = %s\n", joycap.szPname);
|
|
if(g_joystick_native_type < 0) {
|
|
g_joystick_native_type = JOYSTICKID2;
|
|
}
|
|
}
|
|
|
|
for(i = 0; i < 4; i++) {
|
|
g_paddles.g_paddle_val[i] = 32767;
|
|
}
|
|
g_moremem.g_paddle_buttons = 0xc;
|
|
|
|
joystick_update(0.0);
|
|
}
|
|
|
|
void
|
|
joystick_update(double dcycs)
|
|
{
|
|
JOYCAPS joycap;
|
|
JOYINFO info;
|
|
UINT id;
|
|
MMRESULT ret1, ret2;
|
|
|
|
id = g_joystick_native_type;
|
|
|
|
ret1 = joyGetDevCaps(id, &joycap, sizeof(joycap));
|
|
ret2 = joyGetPos(id, &info);
|
|
if(ret1 == JOYERR_NOERROR && ret2 == JOYERR_NOERROR) {
|
|
// OG Convert to -32767/32767
|
|
g_paddles.g_paddle_val[0] = (info.wXpos - joycap.wXmin) * 65535 / (joycap.wXmax - joycap.wXmin) - 32768;
|
|
g_paddles.g_paddle_val[1] = (info.wYpos - joycap.wYmin) * 65535 / (joycap.wYmax - joycap.wYmin) - 32768;
|
|
|
|
if(info.wButtons & JOY_BUTTON1) {
|
|
g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons | 1;
|
|
} else {
|
|
g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons & (~1);
|
|
}
|
|
if(info.wButtons & JOY_BUTTON2) {
|
|
g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons | 2;
|
|
} else {
|
|
g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons & (~2);
|
|
}
|
|
paddle_update_trigger_dcycs(dcycs);
|
|
}
|
|
}
|
|
|
|
void
|
|
joystick_update_buttons()
|
|
{
|
|
JOYINFOEX info;
|
|
UINT id;
|
|
|
|
id = g_joystick_native_type;
|
|
|
|
info.dwSize = sizeof(JOYINFOEX);
|
|
info.dwFlags = JOY_RETURNBUTTONS;
|
|
if(joyGetPosEx(id, &info) == JOYERR_NOERROR) {
|
|
if(info.dwButtons & JOY_BUTTON1) {
|
|
g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons | 1;
|
|
} else {
|
|
g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons & (~1);
|
|
}
|
|
if(info.dwButtons & JOY_BUTTON2) {
|
|
g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons | 2;
|
|
} else {
|
|
g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons & (~2);
|
|
}
|
|
}
|
|
}
|
|
|
|
// OG
|
|
void joystick_shut()
|
|
{
|
|
}
|