From 9bd14af8b8a4d11ede9dec9b547bb6f14b677101 Mon Sep 17 00:00:00 2001 From: pagefault <> Date: Mon, 18 Jun 2001 19:13:50 +0000 Subject: [PATCH] Added joystick POV hat support --- zsnes/src/win/winlink.cpp | 92 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 2 deletions(-) diff --git a/zsnes/src/win/winlink.cpp b/zsnes/src/win/winlink.cpp index 522ac0fa..c6128592 100644 --- a/zsnes/src/win/winlink.cpp +++ b/zsnes/src/win/winlink.cpp @@ -98,6 +98,8 @@ DWORD S01Disable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; DWORD S02Disable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; DWORD S11Disable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; DWORD S12Disable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +DWORD POVDisable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +DWORD NumPOV[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; DWORD CurrentJoy=0; @@ -817,6 +819,16 @@ BOOL FAR PASCAL InitJoystickInput(LPCDIDEVICEINSTANCE pdinst, LPVOID pvRef) S12Disable[CurrentJoy]=1; } + for (int i=0; i<5; i++) + { + diprg.diph.dwObj = DIJOFS_POV(i); + if (FAILED(JoystickInput[CurrentJoy]->SetProperty(DIPROP_RANGE, &diprg.diph))) + { + POVDisable[CurrentJoy]=1; + } + else NumPOV[i]++; + } + DIPROPDWORD dipdw; dipdw.diph.dwSize = sizeof(DIPROPDWORD); @@ -847,6 +859,12 @@ BOOL FAR PASCAL InitJoystickInput(LPCDIDEVICEINSTANCE pdinst, LPVOID pvRef) dipdw.diph.dwObj = DIJOFS_SLIDER(1); JoystickInput[CurrentJoy]->SetProperty(DIPROP_DEADZONE, &dipdw.diph); + for (int i2=0; i<5; i++) + { + dipdw.diph.dwObj = DIJOFS_POV(i2); + JoystickInput[CurrentJoy]->SetProperty(DIPROP_DEADZONE, &dipdw.diph); + } + dipdw.diph.dwSize = sizeof(DIPROPDWORD); dipdw.diph.dwHeaderSize = sizeof(dipdw.diph); dipdw.diph.dwHow = DIPH_DEVICE; @@ -988,10 +1006,10 @@ bool InitInput() hr=KeyboardInput->SetCooperativeLevel(hMainWindow,DISCL_NONEXCLUSIVE | DISCL_FOREGROUND ); - hr=DInput->CreateDevice(GUID_SysMouse, &MouseInput,NULL); + hr=DInput->CreateDevice(GUID_SysMouse, &MouseInput,NULL); if (FAILED(hr)) {DInputError();return FALSE;} - hr=MouseInput->SetDataFormat(&c_dfDIMouse); + hr=MouseInput->SetDataFormat(&c_dfDIMouse); if (FAILED(hr)) {DInputError();return FALSE;} hr=MouseInput->SetCooperativeLevel(hMainWindow,DISCL_EXCLUSIVE|DISCL_FOREGROUND); @@ -2354,6 +2372,76 @@ void WinUpdateDevices() if (js[i].rglSlider[1]<0) keys[0x100+i*32+13]=1; } + if (!POVDisable[i]) + { + for (int i2=0; i2