Here I will gather all info I can find out about the different force effects and
their USB commands. All values seem to be little-endian.
Also, general note, it seems like some effects are affected by the direction of
the force, denoted by ***
GENERAL:

    Playing:
    60 00 - standard header
    01 - ID
    89 - playing options
    01 - play
    00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


    Stopping/removing: (why are they rolled into one?)
    60 00 - standard header 
    01 - ID
    89 - playing options
    00 - stop
    00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

FF_CONSTANT:
    Initialization:
    60 00 - standard header
    01 - ID
    6a - new constant effect(?)
    fe ff - strength ***
    00 00 - attack_length
    00 00 - attack_level ***
    00 00 - fade_length
    00 00 - fade_level ***
    00 4f - ?
    f7 17 - time in milliseconds, unsigned
    00 00
    07 00 - offset from start(?)
    00 ff ff - end of new effect(?)
    00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


    Modifying: (It may be possible to modify the effects all at once, not sure)
        Direction: n/a
        
        Constant force:
        60 00 - standard header
        01 - ID
        0a - modify constant force
        05 16 - constant force
        00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        
        Envelope:
        60 00 - standard header
        01 - ID
        31 - modify envelope
        84 - ID of envelope attribute ( attack_level 82,
                                        attack_length 81,
                                        fade_level 88,
                                        fade_length 84  )
        63 04 - value attribute should be set to
        00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

        Duration:
        60 00 - standard header
        01 - ID
        49 00 41 - modify timing?
        6c 20 - length in milliseconds
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


FF_RAMP:
    (Why on earth is it this difficult to figure out how a fucking ramp works?)
    Init:
    60 00 - standard header
    01 - ID
    6b - new ramp effect 
    f6 7f - ? *** (these two have something in common but no idea what yet) 
    fe ff - ?
    00 00
    f7 17 - time?
    00 80 - some kind of marker
    00 00 - attack_length? 
    f6 7f - attack_level? ***
    00 00 - fade_length?
    f6 7f - fade_level? ***
    04 - invert (going "down", 05, going "up", 04)
    4f  
    f7 17 - time again?
    00 00
    00 00 - offset 
    00 ff ff - end of init
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

FF_SPRING:
    Init:
    60 00 - standard header
    01 - ID
    64 - new conditional effect
    fc 7f - positive coefficient (right?)
    fc 7f - negative coefficient (left?)
    fe ff - deadband (left?) (deadband + offset) (fe ff means no deadband)
    fe ff - deadband (right?) (deadband + offset)
    a6 6a a6 6a fe ff fe ff fe ff fe ff df 58 a6 6a 06 4f f7 17
    00 00 - some weird hard-coded values to do with springs?
    00 00 - offset 
    00 ff ff - end of init
    00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

FF_DAMPER + FF_FRICTION + FF_INERTIA:
    Init:
    60 00 - standard header
    02 -ID
    64 - new conditional effect
    fc 7f - positive coefficient (right?)
    fc 7f - negative coefficient (left?)
    fe ff - deadband (left?) (deadband + offset) (fe ff means no deadband)
    fe ff - deadband (right?) (deadband + offset)
    fc 7f fc 7f fe ff fe ff fe ff fe ff fc 7f fc 7f 07 4f f7 17
    00 00 - some weird hard-coded values to do with friction?
    00 00 - offset
    00 ff ff - end of init 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

FF_PERIODIC:
FF_SQUARE:
    60 00 - standard header
    01 - ID
    6b - new periodic effect
    00 00 - direction
    fe ff - ?
    00 00 - offset
    e8 03 00 80 00 00
    00 00 00 00 00 00 01 4f f7 17 00 00 00 00 00 ff
    ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

