aboutsummaryrefslogtreecommitdiff
path: root/force-effects.txt
diff options
context:
space:
mode:
Diffstat (limited to 'force-effects.txt')
-rw-r--r--force-effects.txt240
1 files changed, 240 insertions, 0 deletions
diff --git a/force-effects.txt b/force-effects.txt
new file mode 100644
index 0000000..6c205f7
--- /dev/null
+++ b/force-effects.txt
@@ -0,0 +1,240 @@
+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 ***
+
+As far as I can tell, fade_level and attack_level values are calculated by
+mapping the u16 into s16 and taking the absolute value, and after that
+multiplying by the direction.
+
+All values are examples of actual commands that I captured on the USB interface,
+not the only ones available.
+
+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)
+ (In any case, so far I only investigated the constant modifiers)
+ 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 - difference ***
+ fe ff - level? *** (level = (if end_level > start_level, end_level, else
+ start_level) - difference?) (signed)
+ 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 - some weird hard-coded
+ values to do with springs?
+
+ 4f
+ f7 17 - duration
+ 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
+
+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 - some weird hard-coded
+ values to do with friction?
+ 4f
+ f7 17 - duration
+ 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
+
+FF_PERIODIC:
+ 60 00 - standard header
+ 01 - ID
+ 6b - new periodic effect
+ 00 00 - magnitude ***
+ fe ff - phase (left/right)
+ 00 00 - offset of effect (forward/backward)
+ e8 03 - period
+ 00 80
+ 00 00 - attack_length
+ 00 00 - attack_level ***
+ 00 00 - fade_length
+ 00 00 - fade_level ***
+ 01 - type of periodic ( square 01,
+ sine 03,
+ triangle 02,
+ sawtooth down 05,
+ sawtooth up 04 )
+ 4f
+ f7 17 - duration
+ 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_AUTOCENTER:
+ 60 08 - header plus settings?
+ 03 - set autocenter force
+ 8f 02 - force (between ff ff and 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 00 00
+
+FF_GAIN:
+ 60 02 - header plus gain?
+ bf - gain (between ff and 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 00 00 00
+
+Rotation angle:
+ 60 08 - header plus settings?
+ 11 - set rotation angle
+ 55 d5 - angle (between ff ff and 7b 09, one degree is roughly 3c)
+ 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
+
+Open:
+ 60 01 - standard header?
+ 04 - ?
+ 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 00 00
+
+ (this command doesn't appear every time, odd)
+ 60 12 - ?
+ bf 04 00 00 03 b7 1e - ?
+ 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
+
+ 60 01 - ?
+ 05 - ?
+ 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 00 00
+
+Close:
+ 60 01 - standard header?
+ 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 00 00 00
+