Changeset 249 for trunk/src


Ignore:
Timestamp:
Jun 30, 1999, 1:29:40 PM (26 years ago)
Author:
sandervl
Message:

Joystick changes

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:58 sandervl Exp $ */
     1/* $Id: joy.cpp,v 1.5 1999-06-30 11:29:40 sandervl Exp $ */
    22/*
    33 * Odin Joystick apis
     
    3131  GAME_STATUS_STRUCT gs;
    3232
    33   if (wID >= MAXJOYDRIVERS) return JOYERR_PARMS;
     33  if (wID >= MAXJOYDRIVERS) return (JOYERR_PARMS);
    3434
    3535  if (hGame==0) return (JOYERR_NOCANDO);
     
    4242      lpInfo->wXpos    = gs.curdata.A.x * 64;
    4343    else
    44       lpInfo->wXpos    = 65535; // _NOT_ 65536!!!
     44      lpInfo->wXpos    = 65535; // _NOT_ 65536!!! ;-)
    4545
    4646    if (gs.curdata.A.y < 1024)
    4747      lpInfo->wYpos    = gs.curdata.A.y * 64;
    4848    else
    49       lpInfo->wYpos    = 65535; // _NOT_ 65536!!!
     49      lpInfo->wYpos    = 65535; // _NOT_ 65536!!! ;-)
    5050
    5151    lpInfo->wZpos    = 0;
     
    130130    dprintf(("WINMM:joyGetDevCapsW = %d %X %d\n",wID, lpCaps, wSize));
    131131
    132     if (JoyInstalled(wID) == TRUE)
     132    if (wID >= MAXJOYDRIVERS) return JOYERR_PARMS;
     133
     134    if (JoyInstalled(wID) == 0)
    133135    {
    134136      lpCaps->wMid = MM_MICROSOFT;
     
    157159      AsciiToUnicode("",lpCaps->szRegKey);
    158160      AsciiToUnicode("",lpCaps->szOEMVxD);
    159 
     161      dprintf(("OK!!!\n"));
    160162      return JOYERR_NOERROR;
    161163    }
     
    174176{
    175177    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)
    177182    {
    178183      lpCaps->wMid = MM_MICROSOFT;
     
    210215 * Name      : MMRESULT WIN32API joyGetPosEx
    211216 * 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]
    215221 *****************************************************************************/
    216222MMRESULT WIN32API joyGetPosEx(UINT uJoyID, LPJOYINFOEX pji)
    217223{
    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;
    221303}
    222304
     
    236318  if (uJoyID >= MAXJOYDRIVERS) return JOYERR_PARMS;
    237319
    238   if (JoyInstalled(uJoyID) == FALSE) return (MMSYSERR_NODRIVER);
     320  rc=JoyInstalled(uJoyID);
     321
     322  if (rc) return (rc);
    239323
    240324  if (JoyOpen(&hGame)) return (MMSYSERR_NODRIVER);
     
    244328  JoyClose(hGame);
    245329
    246   return (rc);
     330  return JOYERR_NOERROR;
    247331}
    248332/*****************************************************************************
     
    300384   JOYTHREADOPT *newthr;
    301385   INT          iThreadId;
     386   DWORD        rc;
    302387
    303388   dprintf(("WINMM:joySetCapture %x %d %d %d\n", hWnd, wID, wPeriod, bChanged));
     
    305390   if (wID >= MAXJOYDRIVERS) return JOYERR_PARMS;
    306391
    307    if (JoyInstalled(wID) == FALSE) return MMSYSERR_NODRIVER;
     392   rc=JoyInstalled(wID);
     393   if (rc != JOYERR_NOERROR) return (rc);
    308394
    309395   newthr=(PJOYTHREADOPT)malloc(sizeof(JOYTHREADOPT));
     
    348434/*****************************************************************************
    349435 * Name      : MMRESULT WIN32API joyConfigChanged
    350  * Status    : STUB ONLY!!!
     436 * Status    : Stub but done ;-)
    351437 *
    352438 * Author    : Przemyslaw Dobrowolski [Tue, 1999/06/29 09:00]
     
    354440MMRESULT WIN32API joyConfigChanged( DWORD dwFlags )
    355441{
    356   dprintf(("WINMM:joyConfigChanged - stub\n"));
     442  dprintf(("WINMM:joyConfigChanged %X\n",dwFlags));
    357443
    358444  return JOYERR_NOERROR;
     
    406492
    407493     }
    408      Sleep(opt->wPeriod+10); // Fixme!!!
     494     Sleep(opt->wPeriod+1); // Fixme!!!
    409495     jiOld=ji;
    410496  }
    411497  free(opt);
    412498  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:17 sandervl Exp $ */
     1/* $Id: joyos2.cpp,v 1.2 1999-06-30 11:29:40 sandervl Exp $ */
    22/*
    33 * OS/2 Joystick apis
     
    126126//******************************************************************************
    127127//******************************************************************************
    128 BOOL JoyInstalled(USHORT wID)
     128LONG JoyGetCalValues( HFILE hGame, GAME_CALIB_STRUCT  *pGameCalib )
    129129{
    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//******************************************************************************
     148LONG JoyInstalled(USHORT wID)
     149{
     150  BOOL             flReturn=1; // MMSYSERR_NODRIVER
    131151  HFILE            hJoy;
    132152  APIRET           rc;
    133153  GAME_PARM_STRUCT GameParams;
     154
    134155
    135156  rc=JoyOpen(&hJoy);
     
    140161
    141162    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
    146169  }
    147170  return (flReturn);
  • trunk/src/winmm/joyos2.h

    r245 r249  
    1 /* $Id: joyos2.h,v 1.1 1999-06-29 15:55:17 sandervl Exp $ */
     1/* $Id: joyos2.h,v 1.2 1999-06-30 11:29:40 sandervl Exp $ */
    22/*
    33 * Odin Joystick apis
     
    8181LONG JoyGetParams( HFILE hGame, GAME_PARM_STRUCT *pGameParams );
    8282LONG JoyCalibrate( HFILE hGame, GAME_CALIB_STRUCT  gameCalib );
     83LONG JoyGetCalValues( HFILE hGame, GAME_CALIB_STRUCT *pGameCalib );
    8384LONG JoyGetStatus( HFILE hGame, GAME_STATUS_STRUCT  *pGameStatus );
    8485LONG JoyClose( HFILE hGame );
    85 BOOL JoyInstalled(USHORT wID);
     86LONG JoyInstalled(USHORT wID);
    8687
    8788#endif /* __JOYOS2_H__ */
Note: See TracChangeset for help on using the changeset viewer.