ForceFeedbackSummerOfCode2005Summary

Introduction

The overall goal of this project was to get Wine's implementation of the joystick/gamepad/wheel part of the DirectInput API up to standard. The greatest bulk of the work was involved in getting force feedback functionality working.

What Got Done

  • Slider support and non-zero-based axes were fixed
  • Force feedback functionality implemented
    • Capability queries to devices
    • Status queries on effects and devices
    • Complete enumeration of compatible standard effects
    • Creation of standard effects of all types with any flags
    • Effect playback and retreval with any flags except DIES_SOLO

What is Left to Do

  • Known Bugs
    • Directional force feedback effects with non-cardinal directions don't work properly yet due to some bad assumptions. I (DanielRemenak) have a patch in my tree which partially fixes this, but it's not complete.

    • DirectInput provides a way to trigger an effect on a given button push, with the DIEP_TRIGGERBUTTON flag. Right now it will work only if your force feedback device is in fact a joystick, not a gamepad or wheel. Some serious changes to the the device class w.r.t. button mapping will be needed for this to work universally.

  • Missing Functionality
    • Solo mode (DIES_SOLO) is not implemented.

    • Custom force types (DIEFT_CUSTOMFORCE) are not supported.

    • Reading and writing FF effects to files (IDirectInputDevice8::WriteEffectToFile and IDirectInputDevice8::EnumEffectsInFile) have not been implemented. They are stored in a RIFF file, the details of which are undocumented. Given the nature of RIFF, it should be relatively simple (albeit time-consuming) to determine the exact format of the effect files.

---

ForceFeedbackSummerOfCode2005Summary (last edited 2008-05-03 02:08:51 by nathan.n)