Purpose Of This Guide:
This is a guide to help people understand the difference between Xinput and DirectInput (Dinput), hence allowing people to understand the newly implemented DirectX overrides better. I will also touch on the purpose of DirectX with regards to Controllers.
What Does All This Input & DirectX Stuff Mean?:
Input is how a peripheral device communicates with a Computer. This Concept may seem quite simplistic. Right now lets Apply this Concept to a Controller. That is what the Input part means. DirectX is a Collection of Core System files that allows the Computer to recognise Controller Input, as well as allows a lot of other stuff essential for playing Games. DirectX can understand two types of Input for Games Controllers. DirectInput and Xinput.
What Is DirectInput?:
Direct Input (often informally called Dinput) is the Input Type that is used in all Controllers. Every Controller will Use DirectInput in some form. DirectInput allows for an unlimited amount of Buttons, Axes, Joysticks, and D-pads to be included on the Controller. However because DirectInput is Inconsistent, Many DirectInput pads will have a different number of Buttons, Axes, Joysticks, and D-pads to another DirectInput Controller. For Example the 360 pad has 10 Buttons, 1 Axis, 2 Joysticks, and 1 D-pad. Where a Logitech Rumblepad will have 12 Buttons, 0 Axes, 2 Joysticks and 1 D-pad. In this case the change may not seem significant however many controllers have far more noticeable changes than this.
What is Xinput?:
Xinput is a Standard created by Microsoft in 2006 to allow PC gamers to use a Console Gamepad on their PC, without the need for lengthy configurations. The Console Gamepad was the Xbox 360 Controller. Therefore Xinput is for the Xbox 360 Controller and it's clones Only (Hence why it is called Xinput, the X being for Xbox). An Xinput Device (aka an Xbox 360 Controller) will have 10 Buttons, 2 Analogue Triggers, 2 Sticks, and a D-Pad. All Xinput devices will have this Standard and nothing will ever be different for any Xinput Device. Of Course all Xinput Devices will also work as DirectInput Device's, However when using DirectInput with an Xbox 360 Controller it becomes impossible to press both Triggers at Once, as they are on the same axis. Many games will not let you make use of the Triggers at all when using DirectInput, because it is expecting a Button to be assigned not an Axis.
A DirectInput Game:
A DirectInput game is a Game that supports DirectInput Only. The Xinput standard is not recognised in these games and manual configuration of a gamepad is common. The Xbox 360 Controller will work but will not allow the Triggers to be used correctly (explained above), and the Right Stick may also not work as expected. Most other Controllers Should work fine with these games but there are some exceptions.
An Xinput Game:
An Xinput Game is a Game that supports the Xbox 360 Controller Only. No Other Controller will work or be recognised. Because of this a Standard is adopted, and most Xinput games are already configured for the Xbox 360 Controller, and no change is usually needed. It is also common for Xinput games to have 360 Button Bindings appear on Screen.
Some Games support both types of Input (DirectInput and Xinput). These games will work with Both DirectInput Only Controllers (Not the 360 pad) and the Xbox 360 Controller in Xinput Mode. Here the Xinput Standard is adopted for the Xbox 360 Controller. And in Many cases most Console-Like controllers are also pre-configured.
Emulation of Xinput:
Emulation means to mimic Something Else. So In This Case We are Emulating the Xbox 360 Controller with another Controller. This allows an Owner of any Standard DirectInput Only Pad (I.E. not the 360 pad) to play an Xinput Only Game with their DirectInput Only Controller. This method may also be used in Xinput/DirectInput Games to ensure a pad is pre-configured like the 360 pad. To see how to emulate Xinput with a DirectInput Only Gamepad see here.
As Xinput Can be emulated DirectInput can be manipulated. I will go through some common uses for this. A very common use would be to Manipulate the Analogue Triggers of the 360 so they are read as DirectInput Buttons instead of an DirectInput Axis where they are useless in many cases. Another Use would be to remap buttons on any Controller. Xinput can also be manipulated in a similar way if a game supports Xinput. Manipulation of DirectInput can also be done within PGP however Support is far lower. Manipulation of Xinput should have the same support as Xinput Emulation.
A Dual System (2 In 1 Controller):
Within the last year the idea of a Controller that supports DirectInput Only In One Mode and Xinput (and DirectInput) in the other has been created. This may seem odd having one controller operate as two but it actually works well. An example of this is the PS3 Controller and the MotioninJoy Driver, It allows a User to switch from DirectInput Only Mode to Xbox 360 Controller mode where Xinput is fully Supported. Logitech's latest range of FXXX also has this functionality.
Ditching Xinput With an Xbox 360 Controller:
It is Possible to Ditch Xinput with an Xbox 360 Controller Completely, and use it as a DirectInput Only Controller. Xinput Emulation (See Above) can still be used to play Xinput Games. This requires the use of 3rd party XBCD Drivers which are kind of outdated, but greater customization of an Xbox 360 Controller is given. If you are interested in these drivers then please Google them. However it should be noted that most the features included are Possible via Pinnacle using Manipulation features (See Above).
The "Hook" Files Used by PGP:
The "Hook" files are a collection of Modified DirectX System Files used by PGP to allow Pinnacle to Modify (Emulate or Manipulate) in Game Support. These Files are Installed into the Game's Directory so that they are read directly (not from System32). These files are required and in most cases should be ignored unless you are experiencing problems with them or another file is better suited to your needs. For example there are several versions of Dinput8.dll around, The Default one will normally work fine however sometimes In game support may need to be blocked or a Controller ID may need to be blocked (where PGP Isn't Working) in which case you would use one of TocaEdit's files. However in some cases this may prevent some of the modification's in PGP from working Correctly.
I Hope this Guide has helped people to understand Xinput and DirectInput better. Allowing more users to make use of the brilliant DirectX Override feature. Any questions about the guide and/or Xinput/DirectInput should be posted below and I will try my best to answer them.