42 #define INITGUIDS // Make GUID available
74 if(hWnd == NULL || ppDI == NULL || ppDIDevice == NULL)
104 hResult = (*ppDI)->CreateDevice(DIDeviceInstance.
guidInstance, &pDIDevice, NULL);
116 pDIDevice->Release();
122 pDIDevice->Release();
129 (*ppDIDevice)->Release();
140 (*ppDIDevice)->Release();
166 hResult = (*ppDIDevice)->Acquire();
169 (*ppDIDevice)->Release();
199 if(hWnd == NULL || hInstance == NULL || ppDI == NULL || ppDIDevice == NULL)
229 hResult = (*ppDI)->CreateDevice(DIDeviceInstance.
guidInstance, &pDIDevice, NULL);
241 pDIDevice->Release();
247 pDIDevice->Release();
254 (*ppDIDevice)->Release();
262 hResult = (*ppDIDevice)->SetCooperativeLevel(hWnd, dwFlags);
265 (*ppDIDevice)->Release();
274 DIPropAutoCenter.
diph.
dwSize =
sizeof(DIPropAutoCenter);
278 DIPropAutoCenter.
dwData = 0;
283 (*ppDIDevice)->Release();
291 hResult = (*ppDIDevice)->Acquire();
294 (*ppDIDevice)->Release();
307 if(pDIDeviceInstance == NULL)
314 memcpy((
LPVOID)pDIDeviceInstance, (
LPVOID)lpddi,
sizeof(*pDIDeviceInstance));
338 if(pDIEffect != NULL)
340 pDIEffect->Release();
362 if(pDIDevice == NULL)
370 #pragma warning(disable:4100) // unreferenced formal parameter
373 pDIEffect->Release();
377 #pragma warning(default:4100) // unreferenced formal parameter
393 if(pDIEffect == NULL)
397 thisEffect.
dwGain = dwGain;
398 return pDIEffect->SetParameters(&thisEffect,
DIEP_GAIN);
416 if(pDIEffect == NULL)
420 LONG rglDirection[2];
423 thisEffect.
cAxes = 2;
435 if(pDIEffect == NULL)
439 LONG rglDirection[2];
443 thisEffect.
cAxes = 2;
447 thisEffect.
dwGain = dwGain;
465 if(pDIEffect == NULL)
489 IN
DWORD dwDirection)
491 if(pDIEffect == NULL)
495 DIConstantForceStruct.
lMagnitude = lMagnitude;
501 LONG rglDirection[2];
502 rglDirection[0] = dwDirection;
507 thisEffect.
cAxes = 2;
531 if(pDIEffect == NULL)
535 DIConstantForceStruct.
lMagnitude = lMagnitude;
563 IN
DWORD dwDirection)
565 if(pDIDevice == NULL || ppDIEffect == NULL)
573 DIConstantForceStruct.
lMagnitude = lMagnitude;
579 LONG rglDirection[2];
580 rglDirection[0] = dwDirection;
599 hRet = pDIDevice->CreateEffect(GUID_RawForce, &DIEffect, &pRawForce, NULL);
600 if(FAILED(hRet))
return hRet;
602 *ppDIEffect = pRawForce;
628 if(pDIDevice == NULL || ppDIEffect == NULL)
640 DIConstantForceStruct.
lMagnitude = lMagnitude;
648 LONG rglDirection[1];
667 hRet = pDIDevice->CreateEffect(GUID_RawForce, &DIEffect, &pRawForce, NULL);
668 if(FAILED(hRet))
return hRet;
670 *ppDIEffect = pRawForce;
697 IN
DWORD dwDirection,
700 if(pDIDevice == NULL || ppDIEffect == NULL)
720 LONG rglDirection[2];
721 rglDirection[0] = dwDirection;
741 HRESULT hRet = pDIDevice->CreateEffect(refGUID, &DIEffect, &pROMEffect, NULL);
742 if(FAILED(hRet))
return hRet;
744 *ppDIEffect = pROMEffect;
766 if(pszKey == NULL || pszValue == NULL)
770 hKey = HKEY_CLASSES_ROOT;
771 lRet = RegCreateKey(hKey, pszKey, &hKey);
772 if(lRet != ERROR_SUCCESS)
776 nLen = strlen(pszValue);
777 lRet = RegSetValueEx(hKey, NULL, 0, REG_SZ, (PBYTE)pszValue, nLen + 1);
778 if(lRet != ERROR_SUCCESS)
803 #define GUID_VFX_Object "{04ace0a7-1fa8-11d0-aa22-00a0c911f471}"
806 if(pszVFXPath == NULL)
835 IN
const TCHAR *pszFileName)
837 if(pDIDevice == NULL || ppDIEffect == NULL || pszFileName == NULL)
855 LONG rglDirection[2];
867 DIEffectStruct.
cAxes = 2;
875 hResult = pDIDevice->CreateEffect(GUID_VFXEffect, &DIEffectStruct, &pVFXEffect, NULL);
876 if(FAILED(hResult))
return hResult;
878 *ppDIEffect = pVFXEffect;
901 IN
const TCHAR *pszFileName,
904 IN
DWORD dwDirection)
906 if(pDIDevice == NULL || ppDIEffect == NULL || pszFileName == NULL)
923 LONG rglDirection[2];
924 rglDirection[0] = dwDirection;
932 DIEffectStruct.
dwGain = dwGain;
935 DIEffectStruct.
cAxes = 2;
943 hResult = pDIDevice->CreateEffect(GUID_VFXEffect, &DIEffectStruct, &pVFXEffect, NULL);
944 if(FAILED(hResult))
return hResult;
946 *ppDIEffect = pVFXEffect;
978 IN
DWORD dwBufferSize)
980 if(pDIDevice == NULL || ppDIEffect == NULL || pBuffer == NULL)
998 LONG rglDirection[2];
1000 rglDirection[1] = 0;
1010 DIEffectStruct.
cAxes = 2;
1011 DIEffectStruct.
rgdwAxes = rgdwAxes;
1018 hResult = pDIDevice->CreateEffect(GUID_VFXEffect, &DIEffectStruct, &pVFXEffect, NULL);
1019 if(FAILED(hResult))
return hResult;
1021 *ppDIEffect = pVFXEffect;
1047 IN
DWORD dwBufferSize,
1048 IN
DWORD dwDuration,
1050 IN
DWORD dwDirection)
1052 if(pDIDevice == NULL || ppDIEffect == NULL || pBuffer == NULL)
1069 LONG rglDirection[2];
1070 rglDirection[0] = dwDirection;
1071 rglDirection[1] = 0;
1078 DIEffectStruct.
dwGain = dwGain;
1081 DIEffectStruct.
cAxes = 2;
1082 DIEffectStruct.
rgdwAxes = rgdwAxes;
1089 hResult = pDIDevice->CreateEffect(GUID_VFXEffect, &DIEffectStruct, &pVFXEffect, NULL);
1090 if(FAILED(hResult))
return hResult;
1092 *ppDIEffect = pVFXEffect;
1113 IN
const TCHAR *pszFileName)
1118 if(pDIDevice == NULL || pszFileName == NULL || ppDIEffect == NULL)
1123 hResult = CoInitialize(NULL);
1127 hResult = CoCreateInstance(CLSID_VFX,
1129 CLSCTX_INPROC_SERVER,
1146 hResult = pIVFX->CreateEffectFromFile(pDIDevice, ppDIEffect,
1147 0, pszFileName, NULL, NULL, dwInFlags, NULL);
1153 if(FAILED(hResult))
return hResult;
1188 IN OUT
PDWORD pdwEffectCount,
1189 IN
const TCHAR *pszFileName,
1190 IN OUT
void** ppUDBuffer,
1191 IN OUT
PDWORD pdwOutFlags)
1194 if(pDIDevice == NULL || pszFileName == NULL || pppDIEffect == NULL ||
1195 pdwEffectCount == NULL || ppUDBuffer == NULL || pdwOutFlags == NULL)
1201 *pppDIEffect = NULL;
1202 *pdwEffectCount = 0;
1209 hResult = CoInitialize(NULL);
1213 hResult = CoCreateInstance(CLSID_VFX,
1215 CLSCTX_INPROC_SERVER,
1233 DWORD dwEffectCount;
1235 hResult = pIVFX->CreateEffectFromFile(NULL, NULL,
1236 &dwEffectCount, pszFileName, NULL, &dwBufferSize, dwInFlags, NULL);
1246 if(ppDIEffect == NULL)
1254 PVOID pUDBuffer = NULL;
1255 if(dwBufferSize > 0)
1257 pUDBuffer =
new BYTE[dwBufferSize];
1258 if(pUDBuffer == NULL)
1260 delete [] ppDIEffect;
1271 hResult = pIVFX->CreateEffectFromFile(pDIDevice, ppDIEffect,
1272 &dwEffectCount, pszFileName, pUDBuffer, &dwBufferSize, dwInFlags, &dwOutFlags);
1276 delete [] ppDIEffect;
1278 delete [] pUDBuffer;
1289 if(FAILED(hResult))
return hResult;
1292 *pppDIEffect = ppDIEffect;
1293 *pdwEffectCount = dwEffectCount;
1294 *ppUDBuffer = pUDBuffer;
1295 *pdwOutFlags = dwOutFlags;
1319 IN
DWORD dwBufferSize)
1324 if(pDIDevice == NULL || pBuffer == NULL || ppDIEffect == NULL)
1329 hResult = CoInitialize(NULL);
1333 hResult = CoCreateInstance(CLSID_VFX,
1335 CLSCTX_INPROC_SERVER,
1352 hResult = pIVFX->CreateEffectFromBuffer(pDIDevice, ppDIEffect,
1353 0, pBuffer, dwBufferSize, NULL, NULL, dwInFlags, NULL);
1359 if(FAILED(hResult))
return hResult;
1395 IN OUT
PDWORD pdwEffectCount,
1397 IN
DWORD dwBufferSize,
1398 IN OUT
void** ppUDBuffer,
1399 IN OUT
PDWORD pdwOutFlags)
1402 if(pDIDevice == NULL || pBuffer == NULL || pppDIEffect == NULL||
1403 pdwEffectCount == NULL || ppUDBuffer == NULL || pdwOutFlags == NULL)
1409 *pppDIEffect = NULL;
1410 *pdwEffectCount = 0;
1419 hResult = CoInitialize(NULL);
1423 hResult = CoCreateInstance(CLSID_VFX,
1425 CLSCTX_INPROC_SERVER,
1443 DWORD dwEffectCount;
1444 DWORD dwUDBufferSize;
1445 hResult = pIVFX->CreateEffectFromBuffer(NULL, NULL,
1446 &dwEffectCount, pBuffer, dwBufferSize, NULL, &dwUDBufferSize, dwInFlags, NULL);
1456 if(ppDIEffect == NULL)
1464 PVOID pUDBuffer = NULL;
1465 if(dwUDBufferSize > 0)
1467 pUDBuffer =
new BYTE[dwUDBufferSize];
1468 if(pUDBuffer == NULL)
1470 delete [] ppDIEffect;
1481 hResult = pIVFX->CreateEffectFromBuffer(pDIDevice, ppDIEffect,
1482 &dwEffectCount, pBuffer, dwBufferSize, pUDBuffer, &dwUDBufferSize, dwInFlags, &dwOutFlags);
1486 delete [] ppDIEffect;
1488 delete [] pUDBuffer;
1499 if(FAILED(hResult))
return hResult;
1502 *pppDIEffect = ppDIEffect;
1503 *pdwEffectCount = dwEffectCount;
1504 *ppUDBuffer = pUDBuffer;
1505 *pdwOutFlags = dwOutFlags;
1536 IN
DWORD dwDuration,
1538 IN
DWORD dwDirection,
1539 IN
DWORD dwMagnitude,
1541 IN
DWORD dwAttackTime,
1542 IN
DWORD dwAttackLevel,
1543 IN
DWORD dwFadeTime,
1544 IN
DWORD dwFadeLevel,
1547 if(pDIDevice == NULL || ppDIEffect == NULL)
1572 guid = GUID_Triangle;
1575 guid = GUID_Triangle;
1579 guid = GUID_SawtoothUp;
1582 guid = GUID_SawtoothDown;
1591 DIPeriodicStruct.
lOffset = lOffset;
1592 DIPeriodicStruct.
dwPhase = dwPhase;
1593 DIPeriodicStruct.
dwPeriod = dwPeriod;
1606 LONG rglDirection[2];
1607 rglDirection[0] = dwDirection;
1608 rglDirection[1] = 0;
1615 DIEffectStruct.
dwGain = 10000;
1618 DIEffectStruct.
cAxes = 2;
1619 DIEffectStruct.
rgdwAxes = rgdwAxes;
1621 DIEffectStruct.
lpEnvelope = &DIEnvelopeStruct;
1626 hResult = pDIDevice->CreateEffect(guid, &DIEffectStruct, ppDIEffect, NULL);
1653 IN
DWORD dwDuration,
1660 if(pDIDevice == NULL || ppDIEffect == NULL)
1699 IN
DWORD dwDuration,
1706 if(pDIDevice == NULL || ppDIEffect == NULL)
1746 IN
DWORD dwDuration,
1753 if(pDIDevice == NULL || ppDIEffect == NULL)
1790 IN
DWORD dwDuration,
1795 if(pDIDevice == NULL || ppDIEffect == NULL)
1817 IN
DWORD dwDuration,
1818 IN
LONG lXCoefficient,
1820 IN
LONG lYCoefficient,
1824 if(pDIDevice == NULL || ppDIEffect == NULL)
1837 guid = GUID_Inertia;
1843 guid = GUID_Friction;
1864 if(lXCoefficient != 0)
1870 if(lYCoefficient != 0)
1876 if(lXCoefficient == 0 && lYCoefficient == 0)
1883 DWORD cbTypeSpecificParams;
1884 PVOID pvTypeSpecificParams;
1886 if (nAxisCount == 1) {
1916 hResult = pDIDevice->CreateEffect(guid, &ptr->
DIEffectStruct, ppDIEffect, NULL);
1945 IN
DWORD dwDuration,
1946 IN
LONG lXCoefficient,
1948 IN
LONG lYCoefficient,
1952 if(pDIDevice == NULL || ppDIEffect == NULL)
1965 guid = GUID_Inertia;
1971 guid = GUID_Friction;
1978 DIConditionStruct[0].
lOffset = lXOffset;
1984 DIConditionStruct[1].
lOffset = lYOffset;
1993 if(lXCoefficient != 0)
1998 if(lYCoefficient != 0)
2003 if(lXCoefficient == 0 && lYCoefficient == 0)
2010 DWORD cbTypeSpecificParams;
2011 PVOID pvTypeSpecificParams;
2015 if(lXCoefficient != 0)
2016 pvTypeSpecificParams = &DIConditionStruct[0];
2018 pvTypeSpecificParams = &DIConditionStruct[1];
2023 pvTypeSpecificParams = &DIConditionStruct[0];
2026 LONG rglDirection[2];
2027 rglDirection[0] = 0;
2028 rglDirection[1] = 0;
2035 DIEffectStruct.
dwGain = 10000;
2038 DIEffectStruct.
cAxes = nAxisCount;
2039 DIEffectStruct.
rgdwAxes = rgdwAxes;
2046 hResult = pDIDevice->CreateEffect(guid, &DIEffectStruct, ppDIEffect, NULL);
2073 IN
DWORD dwDuration,
2074 IN
DWORD dwDirection,
2077 IN
DWORD dwAttackTime,
2078 IN
DWORD dwAttackLevel,
2079 IN
DWORD dwFadeTime,
2080 IN
DWORD dwFadeLevel,
2083 if(pDIDevice == NULL || ppDIEffect == NULL)
2090 DIRampStruct.
lStart = lStart;
2091 DIRampStruct.
lEnd = lEnd;
2104 LONG rglDirection[2];
2105 rglDirection[0] = dwDirection;
2106 rglDirection[1] = 0;
2113 DIEffectStruct.
dwGain = 10000;
2116 DIEffectStruct.
cAxes = 2;
2117 DIEffectStruct.
rgdwAxes = rgdwAxes;
2119 DIEffectStruct.
lpEnvelope = &DIEnvelopeStruct;
2124 hResult = pDIDevice->CreateEffect(GUID_RampForce, &DIEffectStruct, ppDIEffect, NULL);
2150 IN
DWORD dwDuration,
2151 IN
DWORD dwDirection,
2153 IN
DWORD dwAttackTime,
2154 IN
DWORD dwAttackLevel,
2155 IN
DWORD dwFadeTime,
2156 IN
DWORD dwFadeLevel,
2159 if(pDIDevice == NULL || ppDIEffect == NULL)
2166 DIConstantForceStruct.
lMagnitude = lMagnitude;
2179 LONG rglDirection[2];
2180 rglDirection[0] = dwDirection;
2181 rglDirection[1] = 0;
2188 DIEffectStruct.
dwGain = 10000;
2191 DIEffectStruct.
cAxes = 2;
2192 DIEffectStruct.
rgdwAxes = rgdwAxes;
2194 DIEffectStruct.
lpEnvelope = &DIEnvelopeStruct;
2199 hResult = pDIDevice->CreateEffect(GUID_ConstantForce, &DIEffectStruct, ppDIEffect, NULL);
2225 IN
DWORD dwDuration,
2226 IN
DWORD dwDirection,
2227 IN
DWORD dwDistance,
2229 IN
LONG lWallCoefficient,
2232 if(pDIDevice == NULL || ppDIEffect == NULL)
2239 WallStruct.
m_Bytes =
sizeof(WallStruct);
2250 LONG rglDirection[2];
2251 rglDirection[0] = 0;
2252 rglDirection[1] = 0;
2259 DIEffectStruct.
dwGain = 10000;
2262 DIEffectStruct.
cAxes = 2;
2263 DIEffectStruct.
rgdwAxes = rgdwAxes;
2270 hResult = pDIDevice->CreateEffect(GUID_Wall, &DIEffectStruct, ppDIEffect, NULL);
2306 if(pjix == NULL || pszErr == NULL)
2309 memset(pjix, 0x00,
sizeof(JOYINFOEX));
2310 pjix->dwSize =
sizeof(JOYINFOEX);
2316 pjix->dwFlags = JOY_RETURNALL;
2323 switch(joyGetPosEx(nJoyID, pjix))
2325 case JOYERR_NOERROR:
2326 strcpy(pszErr,
"SUCCESS");
2329 case MMSYSERR_NODRIVER:
2330 strcpy(pszErr,
"The joystick driver is not present.");
2333 case MMSYSERR_INVALPARAM:
2334 strcpy(pszErr,
"An invalid parameter was passed.");
2337 case MMSYSERR_BADDEVICEID:
2338 strcpy(pszErr,
"The specified joystick identifier is invalid.");
2341 case JOYERR_UNPLUGGED:
2342 strcpy(pszErr,
"Your joystick is unplugged.");
2346 strcpy(pszErr,
"Unknown joystick error.");
2417 if(pszCodeString == NULL)
2424 case S_FALSE: strcpy(pszCodeString,
"S_FALSE");
break;
2425 case DI_POLLEDDEVICE: strcpy(pszCodeString,
"DI_POLLEDDEVICE");
break;
2432 case DIERR_NOTFOUND: strcpy(pszCodeString,
"DIERR_NOTFOUND" );
break;
2435 case DIERR_GENERIC: strcpy(pszCodeString,
"DIERR_GENERIC" );
break;
2441 case DIERR_INPUTLOST: strcpy(pszCodeString,
"DIERR_INPUTLOST" );
break;
2442 case DIERR_ACQUIRED: strcpy(pszCodeString,
"DIERR_ACQUIRED" );
break;
2444 case E_ACCESSDENIED: strcpy(pszCodeString,
"E_ACCESSDENIED: DIERR_OTHERAPPHASPRIO, DIERR_READONLY, DIERR_HANDLEEXISTS");
break;
2445 case E_PENDING: strcpy(pszCodeString,
"E_PENDING" );
break;
2448 case DIERR_MOREDATA: strcpy(pszCodeString,
"DIERR_MOREDATA" );
break;
2485 default:
sprintf(pszCodeString,
"%x", hResult);
break;
HRESULT SWFF_CreateVFXEffectFromFile(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN const TCHAR *pszFileName)
HRESULT SWFF_CreateConstantForceEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN DWORD dwDuration, IN DWORD dwDirection, IN LONG lMagnitude, IN DWORD dwAttackTime, IN DWORD dwAttackLevel, IN DWORD dwFadeTime, IN DWORD dwFadeLevel, IN LONG lButton)
#define SWDEV_ERR_UNKNOWN_CMD
BOOL SWFF_RegisterVFXObject(IN LPCTSTR pszVFXPath)
HRESULT SWFF_CreateDIEffectFromBuffer(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN const LPVOID pBuffer, IN DWORD dwBufferSize)
HRESULT SWFF_CreateDamperEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN DWORD dwDuration, IN LONG lBx, IN LONG lV0x, IN LONG lBy, IN LONG lV0y, IN LONG lButton)
#define SFERR_INVALID_PARAM
BOOL CALLBACK DIEnumAndDestroyCreatedEffectsProc(LPDIRECTINPUTEFFECT pDIEffect, LPVOID lpvRef)
HRESULT SWFF_CreateROMEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN REFGUID refGUID, IN DWORD dwDuration, IN DWORD dwGain, IN DWORD dwDirection, IN LONG lButton)
DWORD cbTypeSpecificParams
HRESULT SWFF_CreateConditionEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN DWORD dwType, IN DWORD dwDuration, IN LONG lXCoefficient, IN LONG lXOffset, IN LONG lYCoefficient, IN LONG lYOffset, IN LONG lButton)
HRESULT SWFF_SetDirectionGain(IN LPDIRECTINPUTEFFECT pDIEffect, IN DWORD dwAngle, IN DWORD dwGain)
DWORD dwNegativeSaturation
#define DEFAULT_VFX_EFFECT_DIRECTION
BOOL CALLBACK DIEnumDevicesProc(LPCDIDEVICEINSTANCE lpddi, LPVOID lpvContext)
#define SWDEV_ERR_PROCESSLIST_FULL
#define VFXCE_CALC_EFFECT_COUNT
#define SFERR_SYSTEM_INIT
void SWFF_ErrorCodeToString(HRESULT hResult, TCHAR *pszCodeString)
#define SWDEV_ERR_PLAYLIST_FULL
#define SWDEV_ERR_CHECKSUM
HRESULT SWFF_SetDuration(IN LPDIRECTINPUTEFFECT pDIEffect, IN DWORD dwDuration)
#define DEFAULT_VFX_EFFECT_DURATION
LONG lPositiveCoefficient
HRESULT SWFF_DestroyEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN LPDIRECTINPUTEFFECT pDIEffect)
HRESULT SWFF_CreateRawForceEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN LONG lMagnitude, IN DWORD dwDirection)
HRESULT SWFF_CreateVFXEffectFromFileEx(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN const TCHAR *pszFileName, IN DWORD dwDuration, IN DWORD dwGain, IN DWORD dwDirection)
HRESULT SWFF_CreateConditionEffectStruct(di_condition_effect_struct *ptr, IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN DWORD dwType, IN DWORD dwDuration, IN LONG lXCoefficient, IN LONG lXOffset, IN LONG lYCoefficient, IN LONG lYOffset, IN LONG lButton)
#define VFX_ERR_FILE_BAD_FORMAT
PVOID m_pFileNameOrBuffer
#define SFERR_DRIVER_ERROR
DICONDITION DIConditionStruct[2]
HRESULT SWFF_CreateVFXEffectFromBufferEx(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN const LPVOID pBuffer, IN DWORD dwBufferSize, IN DWORD dwDuration, IN DWORD dwGain, IN DWORD dwDirection)
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
#define SFERR_RAW_OUT_DATAEVENT_CREATION
HRESULT SWFF_CreateInertiaEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN DWORD dwDuration, IN LONG lMx, IN LONG lA0x, IN LONG lMy, IN LONG lA0y, IN LONG lButton)
#define VFX_ERR_FILE_UNKNOWN_ERROR
LPVOID lpvTypeSpecificParams
#define SFERR_NON_FF_DEVICE
BOOL SWFF_GetJoyData(int nJoyID, JOYINFOEX *pjix, char *pszErr)
HRESULT SWFF_OpenDefaultFFJoystick(IN HWND hWnd, LPDIRECTINPUT *ppDI, LPDIRECTINPUTDEVICE2 *ppDIDevice)
HRESULT SWFF_CreateVFXEffectFromBuffer(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN const LPVOID pBuffer, IN DWORD dwBufferSize)
HRESULT SWFF_CreatePeriodicEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN DWORD dwType, IN DWORD dwDuration, IN DWORD dwPeriod, IN DWORD dwDirection, IN DWORD dwMagnitude, IN LONG lOffset, IN DWORD dwAttackTime, IN DWORD dwAttackLevel, IN DWORD dwFadeTime, IN DWORD dwFadeLevel, IN LONG lButton)
#define SFERR_DEVICE_NACK
#define SWDEV_ERR_INVALID_PARAM
#define VFXCE_CALC_BUFFER_SIZE
HRESULT SWFF_CreateSpringEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN DWORD dwDuration, IN LONG lKx, IN LONG lCenterx, IN LONG lKy, IN LONG lCentery, IN LONG lButton)
HRESULT SWFF_PutRawForce(IN LPDIRECTINPUTEFFECT pDIEffect, IN LONG lMagnitude, IN DWORD dwDirection)
#define DEFAULT_ROM_EFFECT_OUTPUTRATE
LONG lNegativeCoefficient
#define VFXCE_CREATE_MULTIPLE
#define DEFAULT_VFX_EFFECT_GAIN
HRESULT SWFF_OpenDefaultFFJoystickEx(IN HWND hWnd, IN HINSTANCE hInstance, OUT LPDIRECTINPUT *ppDI, OUT LPDIRECTINPUTDEVICE2 *ppDIDevice, IN DWORD dwFlags)
DWORD dwPositiveSaturation
HRESULT SWFF_CreateDIEffectFromBufferEx(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT **pppDIEffect, IN OUT PDWORD pdwEffectCount, IN const LPVOID pBuffer, IN DWORD dwBufferSize, IN OUT void **ppUDBuffer, IN OUT PDWORD pdwOutFlags)
HRESULT SWFF_SetGain(IN LPDIRECTINPUTEFFECT pDIEffect, IN DWORD dwGain)
HRESULT SWFF_CreateWallEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN DWORD dwDuration, IN DWORD dwDirection, IN DWORD dwDistance, IN BOOL bInner, IN LONG lWallCoefficient, IN LONG lButton)
HRESULT SWFF_CreateDIEffectFromFileEx(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT **pppDIEffect, IN OUT PDWORD pdwEffectCount, IN const TCHAR *pszFileName, IN OUT void **ppUDBuffer, IN OUT PDWORD pdwOutFlags)
BOOL SWFF_WriteRegString(IN LPCTSTR pszKey, IN LPCTSTR pszValue)
#define VFX_ERR_FILE_END_OF_FILE
#define SWDEV_ERR_INVALID_ID
DWORD dwTriggerRepeatInterval
#define SFERR_INVALID_HAL_OBJECT
struct _VFX_PARAM VFX_PARAM
HRESULT SWFF_CreateDIEffectFromFile(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN const TCHAR *pszFileName)
#define SFERR_RAW_OUT_THREAD_CREATION
#define SWDEV_ERR_TYPE_FULL
#define SFERR_END_OF_LIST
HRESULT SWFF_CreateRawAxisForceEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN LONG lMagnitude, IN DWORD dwAxis)
HRESULT SWFF_DestroyAllEffects(IN LPDIRECTINPUTDEVICE2 pDIDevice)
HRESULT SWFF_SetDirection(IN LPDIRECTINPUTEFFECT pDIEffect, IN DWORD dwAngle)
#define SFERR_INVALID_OBJECT
HRESULT SWFF_CreateFrictionEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN DWORD dwDuration, IN LONG lFx, IN LONG lFy, IN LONG lButton)
HRESULT SWFF_CreateRampEffect(IN LPDIRECTINPUTDEVICE2 pDIDevice, IN OUT LPDIRECTINPUTEFFECT *ppDIEffect, IN DWORD dwDuration, IN DWORD dwDirection, IN LONG lStart, IN LONG lEnd, IN DWORD dwAttackTime, IN DWORD dwAttackLevel, IN DWORD dwFadeTime, IN DWORD dwFadeLevel, IN LONG lButton)
HRESULT SWFF_PutRawAxisForce(IN LPDIRECTINPUTEFFECT pDIEffect, IN LONG lMagnitude)
#define VFXCE_CREATE_SINGLE