XBCD - XBox Controller Driver for Windows 98/2000/XP

Frequently Asked Questions
DVD Remote Control Version


Version 1.07

Exports ~32 controls to Windows:
   - Up to 24 digital buttons.
   - 7 axes(X, Y, Z, RX, RY, RZ, Slider) in Windows 2000/XP.
     6 axes(X, Y, Z, RX, RZ, Slider) in 98/ME.
   - POV hat switch with 8 directions

Controller buttons, axes, and the digital pad can be mapped to any of the controls exported to Windows.

Supports up to 8 different configurations. The active configuration can be selected by pressing both Analog Sticks simultaneously.

Controller can be reported to Windows as a gamepad or a joystick.

Threshold settings for Buttons, Triggers, and Axes.

Deadzone settings for Analog Sticks.

Scaling of axes for sensitivity.

Gamepad settings can be saved to a file for later use.

Rumble support. Adjustable maximum force for each actuator.

Version 0.57

All buttons are supported as digital buttons.

Supports different configuration for the Left Analog Stick, Digital Pad, and Right Analog Stick. Configurations can be switched by pressing both Analog Sticks.

Triggers can be used as buttons, Slider X+, Slider X-, Slider Y+, or Slider Y-.

Supports separate custom Threshold for Buttons and Triggers.

Custom settings for dead zones of Analog Sticks.

Configuration of buttons and axes supported through XBCD Setup application.

Start+Back can be used as a shortcut to switch Slider Y control.

Slider axes can be used as Throttle, Rudder, Z, X Rotation, Y Rotation, or Z Rotation.

Digital Pad can be used as 4 extra buttons(13-16).

Floating-point calculations can be enabled for more accurate Analog Stick precision.

Gamepad settings can be saved to a file for later use.

Rumble support. Adjustable maximum force for each actuator.

Version 0.35
Made some minor changes. The problem with button configuration in some games where the same button would be assigned to another action without pressing it should now be fixed.

Dance Dance Revolution Pad Version
This version is designed to work with the DDR Pad. It sets up the D-Pad as separate buttons plus A, B, X, Y, Start, and Back. I don't have any information on how the DDR Pad sends its data to the XBox, so even though this will work with a regular XBox Gamepad it might not work with the DDR Pad. If anyone is interested in using a debugging version so that I can get more information about how the DDR Pad works, let me know in the Message Board.

Version 0.40
Rumble support has been added. Currently supports all effects but converts all periodic effects into constant effects, will be fixed in next version. Also supports setting the maximum value for Force Feedback.

Version 0.43
Added the option to use Start+Back to switch Throttle control. Now, the Slider axes can be switched around. Y-axis can be Rudder and X-axis can be Throttle.
A lot of changes were made to the Rumble dll. I recommend everyone to upgrade to the latest one.

Version 0.43 with rumble version 0.65
Made some small changes to the rumble dll which fix some problems with Need for Speed Underground, Nascar Racing 2003, and other games.

Version 0.50
2 new axes configurations. Left Analog Stick and Digital Pad can be used for X/Y while Right Analog Stick can be used for POV or Throttle and Rudder.
Digital Pad can now be used as 4 extra buttons(13-16).
New version of the rumble dll with support for more games.
Also a new version of XBCDSetup with support for the new features in the driver.

Version 0.52
Now XBCD Supports using X/Y Rotation instead of Throttle and Rudder. In Windows 98 it will always use Throttle and Rudder or else the driver doesn't work.

Version 0.55
Slider axes can be configured as Rudder, Throttle, Z, X Rotation, Y Rotation, or Z Rotation. Gamepad settings can be saved to files. Removed some features that weren't needed anymore and fixed others.
I also included a version of XBCDRC (remote control utility) with the driver which works with the gamepad. For more information on this see the link "DVD Remote Control Version" above.

Version 0.56
Now Triggers can act as buttons, Slider X+, Slider X-, Slider Y+, or Slider Y-. The default functions for the Slider control are X/Y Rotation. I've changed some of the layout of the setup utility to give it a more organized look.

Version 0.57
Fixed a bug which would crash Windows 2000 when unplugging gamepad. Installer now includes the source code.

Version 1.00
I would just like to give credit to Mez for all of his time and help in programming this version of the driver.
This driver has a version of 1.00 because of all the changes in it and because I don't see it getting much better than this.
Some bugs in the previous version have been fixed. The installer now offers an option of installing the driver's Rumble support.

Version 1.01
Fixed a problem in the setup utility where some of the input boxes for the axis scales weren't in the right order.
Added the ability to turn off all axes except X and Y. For Need for Speed Underground, the controller won't be recognized unless the RZ axis is turned off.
I also forgot to mention that this driver should work with a DDR pad; that means you don't need to download a separate driver for it.

Version 1.03
Added support for the spring and friction effects in the Rumble DLL. Fixed some of the registry entries for the force feedback effects.
Removed all of the needless floating point math in the driver to make it more stable.
Added XP Visual Themes support to the Setup Utility and fixed the flickering effect in it.
The XBCD installer can also be run silently now.

Version 1.06
New option added to expand analog stick movement to full range.
The number of buttons reported to Windows can now be set through an option in the Setup Utility.
Now, the controller can be reported to Windows as a gamepad or a joystick.
The Setup Utility now uses a plain text file to export and import gamepad configurations.
A new DLL (XBCDIF.dll) is included with the Setup Utility; it is only used to enumerate XBCD controllers but more functionality will be added to it.
The rumble DLL has been ported to C++ and other changes were made to make it more stable. The new rumble DLL was compiled using Dev-C++, a free MinGW C++ IDE.

Version 1.07
The Setup Utility can detect XBCD gamepads under the original version of Windows 98.

I have made the source code for the driver available for download. If anyone wants to program for the XBox gamepad, at least they'll have a starting point. I'm not an expert at programming so the driver is not perfect but it works. I will continue working on the driver and commenting as much as I can of the source code. I will gladly post new versions of the driver that anyone makes on this page.


NEW XBCD Version 1.07 Windows 98/2000/XP - XBCDv107.exe

XBCD Version 1.06 Windows 98/2000/XP - XBCDv106.exe

XBCD Version 1.03 Windows 98/2000/XP - XBCDv103.exe

XBCD Version 1.01 Windows 98/2000/XP - XBCDv101.exe

XBCD Version 1.00 Windows 98/2000/XP - XBCDv100.exe

XBCD Version 0.57 Windows 98/2000/XP - XBCDv057.exe

XBCD Version 0.56 Windows 98/2000/XP - XBCDv056.exe

XBCD Version 0.55 Windows 98/2000/XP - XBCD_v55.cab

XBCD Version 0.52 Windows 98/2000/XP - XBCD_v52.cab

XBCD Version 0.50 Windows 98/2000/XP - XBCD_v50.cab

XBCD Source Code Windows 98/2000/XP - XBCD_all_src.cab
Includes XBCD v0.50, XBCDR.dll(Rumble dll) v0.70, and XBCDSetup v0.95.

All Digital Buttons Version 0.43 Windows 98/2000/XP - XBCD_digital_v43.cab

All Digital Buttons Version 0.40 Windows 98/2000/XP - XBCD_digital_v40.cab

All Digital Buttons Version 0.40 Source Code Windows 98/2000/XP - XBCD_v40_src.cab

Dance Dance Revolution Pad Version Windows 98/2000/XP - XBCD_DDR.cab

Dance Dance Revolution Pad Version Source Code Windows 98/2000/XP - XBCD_DDR_src.cab

All Digital Buttons Version 0.35 Windows 98/2000/XP - XBCD_digital_v35.cab

XBCDSetup has been integrated into the driver. The following are outdated.

XBCDSetup Utility Version 0.95 - XBCDSetup_v95.cab

XBCDSetup Utility Version 0.92 - XBCDSetup_v92.cab

XBCDSetup Utility Version 0.90 - XBCDSetup_v90.cab


If Windows says that it couldn't find a driver for the device, download USB View here, USBView.cab.

Run usbview.exe and look for something like this. The XBox gamepad will come up as a Generic USB Hub with 3 ports. The gamepad is connected to the first port and the memory card slots are connected to the other two ports.

Click on port 1 of the Generic USB Hub and notice the values idVendor and idProduct on the right side panel.

Open "xbcd.inf" with Notepad and look for the following entries.

"XBCD XBox Gamepad"=Install, USB\VID_0738&PID_4516
"XBCD XBox Gamepad"=Install, USB\VID_0738&PID_4526
"XBCD XBox Gamepad"=Install, USB\VID_0738&PID_4536
"XBCD XBox Gamepad"=Install, USB\VID_045E&PID_0285
"XBCD XBox Gamepad"=Install, USB\VID_045E&PID_0202

These entries belong to different gamepads from different manufacturers. As you might have noticed, VID_xxxx contains the value from idVendor in USB View and PID_xxxx contains the value from idProduct. For your gamepad to be recognized during the driver installation, just make a new entry in "xbcd.inf" with the idVendor and idProduct of your gamepad, save the file, and try installing the driver again.

All Digital Buttons Version 0.40 DEBUG Windows 98/2000/XP - XBCD_v40_debug.cab
To see the debug output, download DebugView from the link below. Maintain DebugView open at all times while working with the driver. That includes install and uninstall.


Here are a few links that will help understand how to program the XBox Controller Driver.

Inside XBox Controller
USB.org - HID Page
Programming the MS Windows Driver Model - HID Sample Chapter
MSDN Library - Windows Development
Systernals - DebugView Utility

The XBCD Logo was contributed by jfb9301.