1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
|
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 ***
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? ** (possibly starting_level?)
00 00
f7 17 - time?
00 80 - some kind of marker
00 00 - attack_length?
f6 7f - attack_level but with difference? ***
00 00 - fade_length?
f6 7f - fade_level but with difference? ***
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
|