- Timestamp:
- Jun 30, 1999, 1:29:40 PM (26 years ago)
- Location:
- trunk/src/winmm
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/winmm/joy.cpp
r245 r249 1 /* $Id: joy.cpp,v 1. 4 1999-06-29 15:54:58sandervl Exp $ */1 /* $Id: joy.cpp,v 1.5 1999-06-30 11:29:40 sandervl Exp $ */ 2 2 /* 3 3 * Odin Joystick apis … … 31 31 GAME_STATUS_STRUCT gs; 32 32 33 if (wID >= MAXJOYDRIVERS) return JOYERR_PARMS;33 if (wID >= MAXJOYDRIVERS) return (JOYERR_PARMS); 34 34 35 35 if (hGame==0) return (JOYERR_NOCANDO); … … 42 42 lpInfo->wXpos = gs.curdata.A.x * 64; 43 43 else 44 lpInfo->wXpos = 65535; // _NOT_ 65536!!! 44 lpInfo->wXpos = 65535; // _NOT_ 65536!!! ;-) 45 45 46 46 if (gs.curdata.A.y < 1024) 47 47 lpInfo->wYpos = gs.curdata.A.y * 64; 48 48 else 49 lpInfo->wYpos = 65535; // _NOT_ 65536!!! 49 lpInfo->wYpos = 65535; // _NOT_ 65536!!! ;-) 50 50 51 51 lpInfo->wZpos = 0; … … 130 130 dprintf(("WINMM:joyGetDevCapsW = %d %X %d\n",wID, lpCaps, wSize)); 131 131 132 if (JoyInstalled(wID) == TRUE) 132 if (wID >= MAXJOYDRIVERS) return JOYERR_PARMS; 133 134 if (JoyInstalled(wID) == 0) 133 135 { 134 136 lpCaps->wMid = MM_MICROSOFT; … … 157 159 AsciiToUnicode("",lpCaps->szRegKey); 158 160 AsciiToUnicode("",lpCaps->szOEMVxD); 159 161 dprintf(("OK!!!\n")); 160 162 return JOYERR_NOERROR; 161 163 } … … 174 176 { 175 177 dprintf(("WINMM:joyGetDevCapsA = %d %X %d\n",wID, lpCaps, wSize)); 176 if (JoyInstalled(wID) == TRUE) 178 179 if (wID >= MAXJOYDRIVERS) return JOYERR_PARMS; 180 181 if (JoyInstalled(wID) == 0) 177 182 { 178 183 lpCaps->wMid = MM_MICROSOFT; … … 210 215 * Name : MMRESULT WIN32API joyGetPosEx 211 216 * Purpose : Get the extended actual joystick position 212 * Status : Not implemented yet - only stub. 213 * 214 * Author : Przemyslaw Dobrowolski [Tue, 1999/06/29 09:00] 217 * Status : Done (but not all functions are functionally but Quake2 218 * running with this function) 219 * 220 * Author : Przemyslaw Dobrowolski [Tue, 1999/06/29 23:42] 215 221 *****************************************************************************/ 216 222 MMRESULT WIN32API joyGetPosEx(UINT uJoyID, LPJOYINFOEX pji) 217 223 { 218 dprintf(("WINMM:joyGetPosEx %d %X - only stub\n",uJoyID, pji)); 219 220 return JOYERR_NOCANDO; 224 JOYINFO ji; 225 HANDLE hGamePort; 226 GAME_CALIB_STRUCT gc; 227 DWORD rc; 228 229 dprintf(("WINMM:joyGetPosEx %d %X",uJoyID, pji)); 230 231 if (uJoyID >= MAXJOYDRIVERS) return JOYERR_PARMS; 232 233 rc=JoyInstalled(uJoyID); 234 235 if (rc) return (rc); 236 237 rc=JoyOpen(&hGamePort); 238 239 if (rc) return (MMSYSERR_NODRIVER); 240 241 JoyGetPos(hGamePort,uJoyID,&ji); 242 JoyGetCalValues(hGamePort,&gc); 243 244 JoyClose(hGamePort); 245 246 if (pji->dwSize>11) pji->dwXpos = 0; 247 if (pji->dwSize>15) pji->dwYpos = 0; 248 if (pji->dwSize>19) pji->dwZpos = 0;// not supported for OS/2 driver! 249 if (pji->dwSize>23) pji->dwRpos = 0;// not supported for OS/2 driver! 250 if (pji->dwSize>27) pji->dwUpos = 0;// not supported for OS/2 driver! 251 if (pji->dwSize>31) pji->dwVpos = 0;// not supported for OS/2 driver! 252 if (pji->dwSize>35) pji->dwButtons = 0; 253 if (pji->dwSize>35) pji->dwButtonNumber = 0; 254 if (pji->dwSize>43) pji->dwPOV = -1;// FIXME: Win98 returns that code!!! Wrong? 255 if (pji->dwSize>47) pji->dwReserved1 = 0;// FIXME! 256 if (pji->dwSize>51) pji->dwReserved2 = 0;// FIXME! 257 258 if (pji->dwFlags & JOY_RETURNCENTERED) 259 { 260 if (uJoyID==JOYSTICKID1) 261 { 262 if (pji->dwSize>11) 263 if (gc.Ax.centre < 1024) 264 pji->dwXpos = gc.Ax.centre * 64; 265 else 266 pji->dwXpos = 65535; // _NOT_ 65536!!! ;-) 267 268 if (pji->dwSize>15) 269 if (gc.Ay.centre < 1024) 270 pji->dwYpos = gc.Ay.centre * 64; 271 else 272 pji->dwYpos = 65535; // _NOT_ 65536!!! ;-) 273 } 274 if (uJoyID==JOYSTICKID2) 275 { 276 if (pji->dwSize>11) 277 if (gc.Ax.centre < 1024) 278 pji->dwXpos = gc.Bx.centre * 64; 279 else 280 pji->dwXpos = 65535; // _NOT_ 65536!!! ;-) 281 282 if (pji->dwSize>15) 283 if (gc.Ay.centre < 1024) 284 pji->dwYpos = gc.By.centre * 64; 285 else 286 pji->dwYpos = 65535; // _NOT_ 65536!!! ;-) 287 } 288 } 289 290 if (pji->dwFlags & JOY_RETURNBUTTONS) 291 { 292 if (pji->dwSize>35) pji->dwButtons = ji.wButtons; 293 if (pji->dwSize>35) pji->dwButtonNumber = (ji.wButtons & 2) ? 2 : 1; 294 } 295 296 if (pji->dwFlags & JOY_RETURNX) 297 if (pji->dwSize>11) pji->dwXpos = ji.wXpos; 298 299 if (pji->dwFlags & JOY_RETURNY) 300 if (pji->dwSize>11) pji->dwYpos = ji.wXpos; 301 302 return JOYERR_NOERROR; 221 303 } 222 304 … … 236 318 if (uJoyID >= MAXJOYDRIVERS) return JOYERR_PARMS; 237 319 238 if (JoyInstalled(uJoyID) == FALSE) return (MMSYSERR_NODRIVER); 320 rc=JoyInstalled(uJoyID); 321 322 if (rc) return (rc); 239 323 240 324 if (JoyOpen(&hGame)) return (MMSYSERR_NODRIVER); … … 244 328 JoyClose(hGame); 245 329 246 return (rc);330 return JOYERR_NOERROR; 247 331 } 248 332 /***************************************************************************** … … 300 384 JOYTHREADOPT *newthr; 301 385 INT iThreadId; 386 DWORD rc; 302 387 303 388 dprintf(("WINMM:joySetCapture %x %d %d %d\n", hWnd, wID, wPeriod, bChanged)); … … 305 390 if (wID >= MAXJOYDRIVERS) return JOYERR_PARMS; 306 391 307 if (JoyInstalled(wID) == FALSE) return MMSYSERR_NODRIVER; 392 rc=JoyInstalled(wID); 393 if (rc != JOYERR_NOERROR) return (rc); 308 394 309 395 newthr=(PJOYTHREADOPT)malloc(sizeof(JOYTHREADOPT)); … … 348 434 /***************************************************************************** 349 435 * Name : MMRESULT WIN32API joyConfigChanged 350 * Status : S TUB ONLY!!!436 * Status : Stub but done ;-) 351 437 * 352 438 * Author : Przemyslaw Dobrowolski [Tue, 1999/06/29 09:00] … … 354 440 MMRESULT WIN32API joyConfigChanged( DWORD dwFlags ) 355 441 { 356 dprintf(("WINMM:joyConfigChanged - stub\n"));442 dprintf(("WINMM:joyConfigChanged %X\n",dwFlags)); 357 443 358 444 return JOYERR_NOERROR; … … 406 492 407 493 } 408 Sleep(opt->wPeriod+1 0); // Fixme!!!494 Sleep(opt->wPeriod+1); // Fixme!!! 409 495 jiOld=ji; 410 496 } 411 497 free(opt); 412 498 dprintf(("WINMM:Joystick-internal->joySendMessages ended!\n")); 413 } 499 // Huh... We must close thread ;-) 500 _endthread(); 501 } -
trunk/src/winmm/joyos2.cpp
r245 r249 1 /* $Id: joyos2.cpp,v 1. 1 1999-06-29 15:55:17sandervl Exp $ */1 /* $Id: joyos2.cpp,v 1.2 1999-06-30 11:29:40 sandervl Exp $ */ 2 2 /* 3 3 * OS/2 Joystick apis … … 126 126 //****************************************************************************** 127 127 //****************************************************************************** 128 BOOL JoyInstalled(USHORT wID)128 LONG JoyGetCalValues( HFILE hGame, GAME_CALIB_STRUCT *pGameCalib ) 129 129 { 130 BOOL flReturn=FALSE; 130 ULONG dataLen; 131 APIRET rc; 132 133 dataLen = sizeof( *pGameCalib ); 134 rc = DosDevIOCtl( hGame, 135 IOCTL_JOYSTICK, 136 GAME_GET_CALIB, // 0x80, 0x04 137 NULL, 138 0, 139 NULL, 140 pGameCalib, 141 dataLen, 142 &dataLen); 143 144 return (rc); 145 } 146 //****************************************************************************** 147 //****************************************************************************** 148 LONG JoyInstalled(USHORT wID) 149 { 150 BOOL flReturn=1; // MMSYSERR_NODRIVER 131 151 HFILE hJoy; 132 152 APIRET rc; 133 153 GAME_PARM_STRUCT GameParams; 154 134 155 135 156 rc=JoyOpen(&hJoy); … … 140 161 141 162 if (( wID == 0 ) && (GameParams.useA > 0)) 142 flReturn=TRUE; 143 144 if (( wID == 1 ) && (GameParams.useB > 0)) 145 flReturn=TRUE; 163 flReturn=0; // 164 else 165 if (( wID == 1 ) && (GameParams.useB > 0)) 166 flReturn=0; 167 else 168 flReturn=167; // JOYERR_UNPLUGGED 146 169 } 147 170 return (flReturn); -
trunk/src/winmm/joyos2.h
r245 r249 1 /* $Id: joyos2.h,v 1. 1 1999-06-29 15:55:17sandervl Exp $ */1 /* $Id: joyos2.h,v 1.2 1999-06-30 11:29:40 sandervl Exp $ */ 2 2 /* 3 3 * Odin Joystick apis … … 81 81 LONG JoyGetParams( HFILE hGame, GAME_PARM_STRUCT *pGameParams ); 82 82 LONG JoyCalibrate( HFILE hGame, GAME_CALIB_STRUCT gameCalib ); 83 LONG JoyGetCalValues( HFILE hGame, GAME_CALIB_STRUCT *pGameCalib ); 83 84 LONG JoyGetStatus( HFILE hGame, GAME_STATUS_STRUCT *pGameStatus ); 84 85 LONG JoyClose( HFILE hGame ); 85 BOOLJoyInstalled(USHORT wID);86 LONG JoyInstalled(USHORT wID); 86 87 87 88 #endif /* __JOYOS2_H__ */
Note:
See TracChangeset
for help on using the changeset viewer.