Force Feedback

From GIMX
Jump to: navigation, search

This page contains changes which are not marked for translation.


Other languages:
English • ‎français

Force feedback support is available for all Logitech wheel emulations:

  • EMUG29PS4: G29, for PS4 (does not work with PC as target)
  • EMUG27PS3: G27, for PS3 (does not work with PC as target)
  • EMUGTFPS2: GT Force, for PS2 (may work with PC as target)
  • EMUDFPS2: Driving Force, for PS2 (may work with PC as target)
  • EMUDFPPS2: Driving Force Pro, for PS2 (may work with PC as target)
  • EMUG27PC: G27, for PC

There are two force feedback conversion methods: direct translation and OS translation.

Notes

Compatibility mode

This concerns at least the EMUG27PS3 firmware.
The G27 is supposed to switch to compatibility mode (behaving as a Driving Force) when in the XMB. GIMX does not do this. As a consequence the controls do not work correctly in the XMB.
To work-around this issue, start the game with a Dualshock 3, and then reassign controllers.

Device selection strategy

GIMX considers the first joystick device controlling the wheel axis as the target for force feedback effects.
If the first joystick device controlling the wheel axis has no force feedback capabilities, then no device receives the force feedback effects.

--todo: add screenshot

Direct translation

It works for the following Logitech wheels:

  • Formula Force GP
  • Driving Force
  • Driving Force Ex
  • Momo Force
  • Momo Racing Force
  • Driving Force Pro
  • G25
  • Driving Force GT
  • G27
  • G29

It also should work for all Fanatec wheels that have a Logitech compatibility mode.

OS translation

  • Windows: any wheel supporting force feedback over DirectInput should work
All PC/Windows-compatible force feedback wheels should work.
  • GNU/Linux: any wheel with force feedback support at driver level should work
Currently only the G29/G920 wheels have good support at driver level on GNU/Linux, with Linux kernel 4.6+.
The G29 has direct translation, and the G920 will have OS translation from GIMX 6.3 (with Linux kernel 4.6+ only).

Pedal axis correction

Joystick correction is only useful if the axis value can take both negative and positive values.

  1. rest = 32767, full = -32767: low_value = 32767, low_coef = -8192, high_value = 0, high_coef = 0 (Logitech case)
  2. rest = -32767, full = 32767: low_value = -32767, low_coef = 0, high_value = -32767, high_coef = 8192
  3. rest = 32767 full = 0: low_value = 32767, low_coef = -16384, high_value = 0, high_coef = 0
  4. rest = -32767 full = 0: low_value = -32767, low_coef = 0, high_value = -32767, high_coef = 16384
  5. rest = 0 full = 32767: no correction needed
  6. rest = 0 full = -32767: set the sensitivity to -0.008 instead of 0.008

If your pedals are just reversed with no half-way dead zone, you should try 4. first.

Direct Input

Direct Input is a very tricky interface, and some wheels may require adjustments to have force feedback working.
Use the instructions below to provide useful information to the GIMX devs.

API monitor

This tools allows to observe how an application uses the Windows APIs.
Download: http://www.rohitab.com/download/api-monitor-v2r13-x86-x64.zip
Make sure to extract the whole archive.

fedit

This tool was provided by Microsoft in the DirectX 8 SDK.
Download: https://gimx.fr/download/b882e209a0ac023d03abbf560dfc3f25fe6367ca/fedit.zip
API capture instructions:

  • run the x86 version of API monitor (fedit is a 32-bit application)
  • in the "API filter" area on the left, unfold "Graphics and Gaming" and "DirectX Graphics and Gaming", and select "DirectX Input"
  • in the near "Monitored Processes" area, click on "Monitor New Process", and select fedit.exe
  • in fedit, select the wheel: File>Select Device
  • insert the desired effect: Effect>Insert>...
  • play the effect: click on the play button
  • quit fedit
  • save the capture

Make a capture for each of the following effects: constant, spring and damper.

ffb_x

This tool mimics the GIMX interactions with the Direct Input API.
Download: https://gimx.fr/download/4777c33d5c1b29f40605b3f898b6ed92d9a6eead/ffb_3.zip
In the following instructions, replace ffb_x with ffb_3.
Getting the tool text output:

  • open a command window (run cmd.exe)
  • click on the icon in the top left corner
  • click on Properties
  • click on the Layout tab
  • set the width of the Window Size to 240
  • go to the ffb_x.exe directory (cd C:\Users\<username>\Downloads\ffb_x)
  • run ffb_x.exe
  • select the device matching your wheel
  • let the test finish
  • right-click on the command window
  • click on Select all
  • press enter (this will copy the window contents)
  • paste in a text editor and save in a file

API capture instructions:

  • run the x64 version of API monitor (ffb_x is a 64-bit application)
  • in the "API filter" area on the left, unfold "Graphics and Gaming" and "DirectX Graphics and Gaming", and select "DirectX Input"
  • in the near "Monitored Processes" area, click on "Monitor New Process", and select ffb_x.exe
  • select the device matching your wheel
  • let the test finish
  • save the capture

Report

Make sure that your report contains all the following details:

  • fedit API capture, constant force
  • fedit API capture, spring force
  • fedit API capture, damper force
  • ffb_x command output as text
  • ffb_x spring force result OK/KO (move the wheel during the test)
  • ffb_x damper force result OK/KO (move the wheel during the test)
  • ffb_x API capture