Grumbel / xboxdrv

Xbox Gamepad Userspace Driver for Linux

This URL has Read+Write access

xboxdrv / TODO
100644 514 lines (411 sloc) 20.509 kb
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
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
Pre Release Testing:
====================
 
* default, test all axis and buttons
* --dpad-only check that X/Y act properly
* --dpad-as-button check buttons are working and no useless axis present
* check the version number
 
VERSION="0.4.8"
TAG="v${VERSION}"
git tag -s "${TAG}" -m "xboxdrv ${TAG}"
git archive --format=tar --prefix="xboxdrv-linux-${VERSION}/" ${TAG} | bzip2 -c > /tmp/xboxdrv-linux-${VERSION}.tar.bz2
git push --tags
 
Stuff to do before 0.5 release:
===============================
 
* src/xbox_controller.cpp:71: Make endpoint variable
  http://ubuntuforums.org/showthread.php?p=7538167#post7538167
 
* figure out a way to make userspace force feedback driver not become dead processes
 
* add a --mimic-xpad option that behaves exactly like xpad
 
* better keyboard emulation via analog sticks: axis must not be
  handled separately as this leads to issues with the diagonals (see
  mail from Matthew G <matt@remort.org>)
 
* build packages and put into Ubuntu PPA (suggested by MÃ¥rten Woxberg <marten.woxberg@gmail.com>)
 
* test TR:Anniversary with max effect 16
 
* create dummy joystick, mouse and keyboard buttons so that the
  devices always act as they should, also figure out the exakt minimum
  requirements for each device (i.e. if a device is a
  joystick/mouse/keyboard is determined if it as certain button or
  axis).
 
* add a way to not create a joystick/event device
 
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0) <- 21 == EV_FF (status report?)
 
http://www.immersion.com/developer/downloads/ImmFundamentals/HTML/
http://msdn.microsoft.com/en-us/library/bb219655(VS.85).aspx
 
Later versions:
===============
 
* The World Tour wireless guitar have 5 buttons and a
  slide. Currently, the slide is mapped to the x axis, but I don't
  know if it allows multiple presses at once. I don't have a Xbox, so
  I don't know if it is allowed at all in the console.
 
Colour: Button: Value in X1 (slide):
Green A -27500
Red B -12900
Yellow Y +7000
Blue X +18500
Orange LB1 +32767
(None) (None) -300
 
* get rid of guitar, merge into xbox360
 
* send FF status reports (maybe, is that used by anything?)
 
* figure out the max values of force feedback effects so that stuff is
  mapped more properly (kind of done, could need verification)
 
* add --detach option that detaches any existing driver (needed for
  gamepads that use HID)
 
* figure out which devices xorg/hal handles as keyboard and how to
  make it always happen, seems to require two keyboard keys, devices
  with only one aren't registered
 
* display ui-buttonmap in the configuration overview, tricky since we
  don't differ between default bindings and user created ones, also
  which bindings get used depends on other configuration options
 
* report more precisly what devices got created, include device name (HAL has that information)
 
* add support for LED messages (can this be used by anything?)
 
* add support for analog buttons (not all that useful, but would still be nice to have)
 
* include id/wid in device name (would be cleaner, since it makes the
  device unique, but would make Xorg trouble worse)
 
 
http://lists.libsdl.org/pipermail/sdl-libsdl.org/2007-March/060263.html
 
- fix http://userweb.kernel.org/~dtor/eviocgbit-bug.html in evtest
- cleanup evtest some more, add more features
- using rumble in scripts doesn't work, since you can't reset rumble back to 0,0
- thread away on all endpoints
- read from stdin on the main thread
- send output to file or so
usb -d 005:006 -c 5:in,5:out,6:in,7:in,8:out -o /tmp/out, else stdin
 
Daemon Mode:
SYSFS{idVendor}=="045e", SYSFS{idProduct}=="028e", RUN+="/home/ingo/projects/xboxdrv/trunk/xboxdrv --daemon"
 
Unpluging doesn't work and causes xboxdrv processing running amok
 
Pictures of Xbox360 and controller:
http://g-prime.net/x360/
 
Add examples to Readme for specific games
 
Use cases:
==========
* flightsim:
   expects: X/Y Rudder Throttle
   XBox: Left-Stick LT+RT Right-Stick(rel)
 
* FPS:
   expects: Mouse-X/Y Walk-X/Y Trigger
   XBox: Left-Stick RickStick Trigger(btn)
 
* 2D Jump Run (done)
   needs dpad first
 
 
FIX:
=====
  filter auto known unknown messages
  uinput name should be configurable
  uinput busid/devid shouldn't be hardcoded
 
Battery warning: LEDs 1,4 then 2,3 over and over ~10 times rapidly
 
* a way to send keyboard combination sequences or more general event sequences
* abs input must be normalized to min/max
* rel input must be scaleable
* Cleanup naming conventions
 
sending rumble is slow and delayed, gets buffered up
 
* examples in doc for --dpad as buttons and other options
 
Figure out:
===========
Unknown data: bytes: 3 Data: 0x01 0x03 0x0e
Unknown data: bytes: 3 Data: 0x02 0x03 0x00
Unknown data: bytes: 3 Data: 0x03 0x03 0x03
Unknown data: bytes: 3 Data: 0x08 0x03 0x00
Unknown data: bytes: 3 Data: 0x01 0x03 0x00
 
Different Computer/Pad:
Unknown data: bytes: 3 Data: 0x01 0x03 0x0e
Unknown data: bytes: 3 Data: 0x02 0x03 0x00
Unknown data: bytes: 3 Data: 0x03 0x03 0x03
Unknown data: bytes: 3 Data: 0x08 0x03 0x00
Unknown data: bytes: 3 Data: 0x01 0x03 0x00
 
                      /* Happens with XBox360 Controller sometimes
                         Unknown data: bytes: 3 Data: 0x01 0x03 0x0e
                         Unknown data: bytes: 3 Data: 0x02 0x03 0x00
                         Unknown data: bytes: 3 Data: 0x03 0x03 0x03
                         Unknown data: bytes: 3 Data: 0x08 0x03 0x00
                         -- different session:
                         Unknown data: bytes: 3 Data: 0x01 0x03 0x0e
                         Unknown data: bytes: 3 Data: 0x02 0x03 0x00
                         Unknown data: bytes: 3 Data: 0x03 0x03 0x03
                         Unknown data: bytes: 3 Data: 0x08 0x03 0x00
                         Unknown data: bytes: 3 Data: 0x01 0x03 0x06
 
                      */
 
-----
Guitar:
 
Tilt Sensor: is mapped to the second axis of S2, to LT and RT (three parts)
- Range for 2nd axis of S2 : -32768 when guitar is straight down and 32767 when she is straight up.
- Range for LT : ~200 not very precise and ~60 at min.
- Range for RT : ~190 not very precise and ~55 at min.
 
    dummy should stay mostly 0, except the position five and six, which
    are the LT/RT trigger. We can either just ignore them or you can try
    to find out if they have any meaning.
     
 
They control guitar rotation, hmm hard to explain, it's when I rotate the guitar in front of me, it detects if the guitar is in the correct position.
-----
 
* Question: Firestorm Dual Power: How to get rumble to work when there is no endpoint to send data to?
 
* Guitar Hero Controller:
  - lsusb -v output looks like a XBox360 controller
  - usbcat looks like an XBox360 controller
  - it doesn't report events
 
http://forums.gentoo.org/viewtopic-p-5061825.html
http://gentoo-wiki.com/HOWTO_Xbox_360_controller_on_Linux
http://happypenguin.org/show?xboxdrv
http://ubuntuforums.org/showthread.php?t=404577&page=16
http://tattiebogle.net/index.php/ProjectRoot/Xbox360Controller/OsxDriver
 
 
 WirelessHIDDevice::receivedMessage(IOMemoryDescriptor *data)
 
* wireless reports battery level
 
* disconnecting the pad in use will just let the driver wait forever
  for new data, any way we can catch a disconnect?
 
* a way to configure the deadzone for axis (might be needed for some games)
 
* Add support for dancepad/mats (should just mean cleanup up the
  buttons/axis not provided by the dancepad/mat)
 
New Command Line Options:
 
--button-map BTN
 
  BTN is a list of integers, where each integer corresponds to the
  event that gets send
 
  A,B,X,Y,LB,RB,SL,SR,LT,RT,Start,Mode,Back,DPAD-UP,DPAD-DOWN,DPAD-LEFT,DPAD-RIGHT
  A,B,X,Y,TL2,TR2,TL,TR,
 
#define BTN_A 0x130
#define BTN_B 0x131
#define BTN_C 0x132
#define BTN_X 0x133
#define BTN_Y 0x134
#define BTN_Z 0x135
#define BTN_TL 0x136
#define BTN_TR 0x137
#define BTN_TL2 0x138
#define BTN_TR2 0x139
#define BTN_SELECT 0x13a
#define BTN_START 0x13b
#define BTN_MODE 0x13c
#define BTN_THUMBL 0x13d
#define BTN_THUMBR 0x13e
 
* add support to remap keys
 
* allow mouse emulation
 
* allow swapping of dpad and analog axis, so that dpad is first instead of last
 
* merge this thing with Pingus Input handling to get a very flexible framework?
 
* ...
 
[[ InputDrv ]]
==============
 
Needed features:
================
* stick to mouse
* relative-axis (throttle doesn't flip back, a stick does, need to handle that)
* trigger to button
* dpad to axis
* dpad to button
* inversal of axis
* soft-axis for dpad
 
(controller
  (button (name "BTN_X") ;; X and Y send out BTN_X events
          (device (xbox360-button "Y")
                  (xbox360-button "X")))
  (button (name "BTN_A")
          (device (inverse (xbox360-button "Y"))))
  (axis (name "ABS_X")
          ...
)
 
 
Controls:
=========
 * invert button
 * toggle button
 * autofire button
 
 * invert axis
 * deadzone axis
 * split axis (gas/break)
 * join axis (trigger -> zaxis)
 * non-linear axis (gamma or so)
 
 
[[ Xorg Input Hotplug ]]
========================
 
Not available in Ubuntu and still rough, would work via Dbus, see:
 
http://www.x.org/wiki/XInputHotplug
 
d-feet is a Dbus debuging/viewing tool.
 
Example Dbus stuff:
-------------------
 
dbus-send --system --type=method_call --print-reply --dest=org.x.config.display0 /org/x/config/0 org.x.config.input.remove uint32:5
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.x.config.display0 was not provi
 
Doing polling seems to lose some events
 
dbus-send --dest=org.gnome.ScreenSaver
  /
 
dbus-send --dest=org.freedesktop.ExampleName \
 /org/freedesktop/sample/object/name
 org.freedesktop.ExampleInterface.ExampleMethod \
                   int32:47 string:'hello world' double:65.32 \
                   array:string:"1st item","next item","last item" \
                   dict:string:int32:"one",1,"two",2,"three",3 \
                   variant:int32:-8 \
                   objpath:/org/freedesktop/sample/object/name
 
 
dbus-send --dest=org.x.config.display0 \
 /org/x/config/0
 org.x.config.input.add
 
 
dbus-send --dest=org.x.config.display0 /org/x/config/0 org.x.config.input.remove int32:5
 
dbus-send \
  --dest=org.x.config.display0 \
  org.freedesktop.DBus.Introspectable \
org.freedesktop.DBus.Introspectable.Introspect \
 
 
Wine Force Feedback:
 
 
[ingo@duo:~/projects/xboxdrv/trunk/experimental]$ ~/bin/tombraider-anniversary
ERROR: Module xpad does not exist in /proc/modules
USB Device: 003:002
Controller: "Microsoft Xbox 360 Controller" (idVendor: 0x045e, idProduct: 0x028e)
Controller Type: Xbox360
Deadzone: 0
Rumble Debug: off
Rumble Speed: left: 0 right: 0
LED Status: auto
ButtonMap: none
AxisMap: none
Square Axis: no
RelativeAxisMap: none
AutoFireMap: none
ForceFeedback: enabled
Starting with uinput... done
 
Your Xbox/Xbox360 controller should now be available as:
  /dev/input/js1
  /dev/input/event10
 
Press Ctrl-c to quit
 
Unknown: len: 3 data: 0x02 0x03 0x00
user.reg is not a valid registry file
fixme:ole:CoInitializeSecurity ((nil),-1,(nil),(nil),0,3,(nil),0,(nil)) - stub!
err:ole:CoGetClassObject class {9a5ea990-3034-4d6f-9128-01f3c61022bc} not registered
err:ole:CoGetClassObject class {9a5ea990-3034-4d6f-9128-01f3c61022bc} not registered
err:ole:create_server class {9a5ea990-3034-4d6f-9128-01f3c61022bc} not registered
fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported
err:ole:CoGetClassObject no class object {9a5ea990-3034-4d6f-9128-01f3c61022bc} could be created for context 0x17
fixme:win:EnumDisplayDevicesW ((null),0,0x33ef54,0x00000000), stub!
fixme:system:SystemParametersInfoW Unimplemented action: 59 (SPI_SETSTICKYKEYS)
fixme:d3d:IWineD3DDeviceImpl_EvictManagedResources (0x140a78) : stub
fixme:d3d:IWineD3DDeviceImpl_EvictManagedResources (0x140a78) : stub
fixme:d3d:IWineD3DDeviceImpl_EvictManagedResources (0x140a78) : stub
fixme:d3d:IWineD3DDeviceImpl_EvictManagedResources (0x140a78) : stub
fixme:d3d:IWineD3DDeviceImpl_EvictManagedResources (0x140a78) : stub
fixme:d3d:IWineD3DDeviceImpl_EvictManagedResources (0x140a78) : stub
err:ole:CoGetClassObject class {4590f811-1d3a-11d0-891f-00aa004b2e24} not registered
err:ole:CoGetClassObject no class object {4590f811-1d3a-11d0-891f-00aa004b2e24} could be created for context 0x1
err:ole:CoGetClassObject class {4590f811-1d3a-11d0-891f-00aa004b2e24} not registered
err:ole:CoGetClassObject no class object {4590f811-1d3a-11d0-891f-00aa004b2e24} could be created for context 0x1
err:ole:CoGetClassObject class {4590f811-1d3a-11d0-891f-00aa004b2e24} not registered
err:ole:CoGetClassObject no class object {4590f811-1d3a-11d0-891f-00aa004b2e24} could be created for context 0x1
err:ole:CoGetClassObject class {4590f811-1d3a-11d0-891f-00aa004b2e24} not registered
err:ole:CoGetClassObject no class object {4590f811-1d3a-11d0-891f-00aa004b2e24} could be created for context 0x1
err:ole:CoGetClassObject class {4590f811-1d3a-11d0-891f-00aa004b2e24} not registered
err:ole:CoGetClassObject no class object {4590f811-1d3a-11d0-891f-00aa004b2e24} could be created for context 0x1
err:ole:CoGetClassObject class {4590f811-1d3a-11d0-891f-00aa004b2e24} not registered
err:ole:CoGetClassObject no class object {4590f811-1d3a-11d0-891f-00aa004b2e24} could be created for context 0x1
err:ole:CoGetClassObject class {4590f811-1d3a-11d0-891f-00aa004b2e24} not registered
err:ole:CoGetClassObject no class object {4590f811-1d3a-11d0-891f-00aa004b2e24} could be created for context 0x1
fixme:dinput:JoystickAImpl_SetProperty DIPROP_AUTOCENTER(0)
fixme:dinput:LinuxInputEffectImpl_Download Could not upload effect. Assuming a disconnected device.
err:ole:CoGetClassObject class {4590f811-1d3a-11d0-891f-00aa004b2e24} not registered
err:ole:CoGetClassObject no class object {4590f811-1d3a-11d0-891f-00aa004b2e24} could be created for context 0x1
err:ole:CoGetClassObject class {4590f811-1d3a-11d0-891f-00aa004b2e24} not registered
err:ole:CoGetClassObject no class object {4590f811-1d3a-11d0-891f-00aa004b2e24} could be created for context 0x1
Headset: nonetype: 257 code: 1 value: 0
XXX FF_UPLOAD: rumble upload: effect_id: 0 effect_type: 82
EFFECT: FF_CONSTANT level: 0 envelope: attack_length: 16 attack_level: 32767 fade_length: 16 fade_level: 32767
--------------------------------
type: 21 code: 0 value: 1
EV_FF: playing effect: effect_id = 0 value: 1
--------------------------------
type: 257 code: 1 value: 0
XXX FF_UPLOAD: rumble upload: effect_id: 0 effect_type: 82
EFFECT: FF_CONSTANT level: 26880 envelope: attack_length: 16 attack_level: 32767 fade_length: 16 fade_level: 32767
--------------------------------
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
type: 21 code: 0 value: 1
EV_FF: playing effect: effect_id = 0 value: 1
--------------------------------
type: 257 code: 1 value: 0
XXX FF_UPLOAD: rumble upload: effect_id: 0 effect_type: 82
EFFECT: FF_CONSTANT level: 26880 envelope: attack_length: 16 attack_level: 32767 fade_length: 16 fade_level: 32767
--------------------------------
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
type: 21 code: 0 value: 1
EV_FF: playing effect: effect_id = 0 value: 1
--------------------------------
type: 257 code: 1 value: 0
XXX FF_UPLOAD: rumble upload: effect_id: 0 effect_type: 82
EFFECT: FF_CONSTANT level: 26880 envelope: attack_length: 16 attack_level: 32767 fade_length: 16 fade_level: 32767
--------------------------------
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
type: 21 code: 0 value: 1
EV_FF: playing effect: effect_id = 0 value: 1
--------------------------------
type: 257 code: 1 value: 0
XXX FF_UPLOAD: rumble upload: effect_id: 0 effect_type: 82
EFFECT: FF_CONSTANT level: 26880 envelope: attack_length: 16 attack_level: 32767 fade_length: 16 fade_level: 32767
--------------------------------
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
type: 21 code: 0 value: 1
EV_FF: playing effect: effect_id = 0 value: 1
--------------------------------
type: 257 code: 1 value: 0
XXX FF_UPLOAD: rumble upload: effect_id: 0 effect_type: 82
EFFECT: FF_CONSTANT level: 26880 envelope: attack_length: 16 attack_level: 32767 fade_length: 16 fade_level: 32767
--------------------------------
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
type: 21 code: 0 value: 1
EV_FF: playing effect: effect_id = 0 value: 1
--------------------------------
type: 257 code: 1 value: 0
XXX FF_UPLOAD: rumble upload: effect_id: 0 effect_type: 82
EFFECT: FF_CONSTANT level: 26880 envelope: attack_length: 16 attack_level: 32767 fade_length: 16 fade_level: 32767
--------------------------------
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
type: 21 code: 0 value: 1
EV_FF: playing effect: effect_id = 0 value: 1
--------------------------------
type: 257 code: 1 value: 0
XXX FF_UPLOAD: rumble upload: effect_id: 0 effect_type: 82
EFFECT: FF_CONSTANT level: 26880 envelope: attack_length: 16 attack_level: 32767 fade_length: 16 fade_level: 32767
--------------------------------
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
type: 21 code: 0 value: 1
EV_FF: playing effect: effect_id = 0 value: 1
--------------------------------
type: 257 code: 1 value: 0
XXX FF_UPLOAD: rumble upload: effect_id: 0 effect_type: 82
EFFECT: FF_CONSTANT level: 26880 envelope: attack_length: 16 attack_level: 32767 fade_length: 16 fade_level: 32767
--------------------------------
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
type: 21 code: 0 value: 1
EV_FF: playing effect: effect_id = 0 value: 1
--------------------------------
type: 21 code: 0 value: 0
EV_FF: playing effect: effect_id = 0 value: 0
--------------------------------
type: 21 code: 0 value: 0
EV_FF: playing effect: effect_id = 0 value: 0
--------------------------------
type: 257 code: 2 value: 0
FF_ERASE: rumble erase: effect_id = 0
--------------------------------
 
 
fixme:dinput:LinuxInputEffectImpl_Download Could not upload effect. Assuming a disconnected device.
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
fixme:dinput:LinuxInputEffectImpl_Download Could not upload effect. Assuming a disconnected device.
fixme:dinput:LinuxInputEffectImpl_Download Could not upload effect. Assuming a disconnected device.
fixme:dinput:LinuxInputEffectImpl_Download Could not upload effect. Assuming a disconnected device.
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
fixme:dinput:LinuxInputEffectImpl_Download Could not upload effect. Assuming a disconnected device.
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
fixme:dinput:LinuxInputEffectImpl_Download Could not upload effect. Assuming a disconnected device.
fixme:dinput:LinuxInputEffectImpl_Download Could not upload effect. Assuming a disconnected device.
fixme:dinput:LinuxInputEffectImpl_Download Could not upload effect. Assuming a disconnected device.
fixme:dinput:joy_polldev joystick cannot handle type 21 event (code 0)
wine: Unhandled page fault on read access to 0x35545844 at address 0x35545844 (thread 0009), starting debugger...
Unhandled exception: page fault on read access to 0x35545844 in 32-bit code (0x35545844).
Register dump:
 CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
 EIP:35545844 ESP:0033f2f8 EBP:0033f324 EFLAGS:00210206( - 00 - RIP1)
 EAX:12b895d0 EBX:7c08fff4 ECX:116fe938 EDX:1294b6e8
 ESI:12c59178 EDI:116fe920
Stack dump:
0x0033f2f8: 7c07d52a 12b895d0 b7ed0094 116fe938
0x0033f308: 0033f344 0033f344 b7ed0189 7c07d45b
0x0033f318: 7c08fff4 116fe920 00000000 0033f344
0x0033f328: 7c06f45f 116fe920 00000001 12b895d0
0x0033f338: 00000011 03a23650 039fbac0 03a2369c
0x0033f348: 00412e8a 116fe920 039fbbb0 03a23650
Backtrace:
=>1 0x35545844 (0x0033f324)
  2 0x7c06f45f IDirectInputDevice2AImpl_Release+0x4f() in dinput (0x0033f344)
  3 0x00412e8a in tra (+0x12e8a) (0x03a2369c)
  4 0x00000000 (0x00000000)
0x35545844: addb %al,0x0(%eax)
Modules:
Module Address Debug info Name (88 modules)
PE 400000- c5b000 Export tra
PE 18000000-18033000 Deferred binkw32
ELF 7b800000-7b93d000 Deferred kernel32<elf>
 
 
# EOF #