On Wed, Feb 19, 2014 at 11:36 PM, Elias Vanderstuyft elias.vds@gmail.com wrote:
Hi,
Two weeks ago, I started working on reverse engineering the FFE file format, because the functionality to load and write is currently not available in Wine: http://wiki.winehq.org/ForceFeedbackSummerOfCode2005Summary " Missing functionality:
- 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. "
So I wrote a Python program that can read and validate FFE files, based on my assumption of the file format structure. In the Python file:
- I tried to maximally expose the relation of the FFE file contents
and the RIFF structure.
- Every single bit in the FFE file will be tested/validated, and the
program will throw a 'Warning' when something odd/against my assumptions, occurred with the file of interest. I did not yet implement write functionality in the Python file, but it should not be difficult (~inverse operation of read). For the CustomForce effect, my assumptions are hypothetical: there was no way to test it, because:
- I did not find any file containing such effect
- I couldn't create such file, because FEdit.exe does not support
CustomForce effects to be created.
This should be a starting point to implement these read and write stubs in Wine. I don't have time to do that now, so, maybe someone else is interested to do so?
Any feedback is welcome,
Best regards, Elias
Because some people had trouble with the attachment of my previous mail, I reattach it (as it contains a slightly updated version), and provide a link to a Google Drive folder containing the latest version: https://drive.google.com/folderview?id=0B9DBGF77AW7eblFwQWhoSVRvTHM&usp=... If you want to open the attachment in this mail, you should first download "attachment-0001.bin" and rename it to "FFE_RevEng.tar.xz". The reason I had to compress it using the XZ compression method, is because I send this via GMail, and it does not allow to send ZIP archives containing exe-files (in this case "fedit.exe").
Elias