Sei sulla pagina 1di 14

x360ce Configuration File Guide

by resolutespider5 (June 2013)


1. Introduction
2. [Options] Section
3. [InputHook] Section
4. [Mappings] Section
5. Controller Sections
6. Possible Mappings with x360ce
7. Example x360ce.ini

x360ce Home at http://code.google.com/p/x360ce/
x360ce Forum at http://forums.ngemu.com/forumdisplay.php?f=140
Chapter 1. Introduction

The XBox360 Controller Emulator, or x360ce, is a program that allows DInput (DirectInput) only
controllers (i.e. most gamepads, joysticks, steering wheels, etc.) to be used with XInput-only
games and applications. XInput-only games are games that are normally only compatible with
controllers that support XInput, such as the x360c (XBox360 Controller), unless you use
emulation. See this for a more thorough description.

The main files x360ce uses are the following:

x360ce.exe : this is the x360ce App file. It (a) generates an x360ce Library file (if not
already present in the folder) that provides the actual XInput emulation; and (b) it
generates (if not already present in the folder), and edits, the x360ce Configuration file
(x360ce.ini). Not needed for x360ce operation.
xinput1_3.dll : this is the x360ce Library file. Although it is described as a library, it is
really an application, as it converts the DirectInput from a controller to XInput, that is
then used by XInput-only games. With some games it needs to be renamed. Do not
confuse it with the system file of the same name.
x360ce.ini : this is the x360ce Configuration file. It provides settings for the Library file,
which are controller and game specific. It can be edited by the x360ce App, or manually.
x360ce.gdb : this is the x360ce Game Database file. If the file is present, and the game is
listed in it, HookMasks should be automatic.
dinput8.dll : this is the x360ce Loader file. Goes in the same folder as the Library file. It is
a simple loader, which loads xinput1_3.dll only for the few games that need HookLL
enabled. Do not confuse it with the system file of the same name.

x360ce.ini and x360ce.gdb can be placed in the same folder as xinput1_3.dll. But they can also
be placed them in the following locations. With Windows XP, they can be put in the
%allusersprofile%\Application Data\x360ce folder, which is often C:\Documents and
Settings\All Users\Application Data\x360ce. With Windows Vista / 7 / 8 they can be put in the
%allusersprofile%\x360ce folder, which is often C:\ProgramData\x360ce.

This is a description of the contents of the x360ce Configuration file, i.e. x360ce.ini. It is a
standard text file that can be edited using programs such as Notepad and Notepad++. It is very
similar to to .ini files used by Windows, see this for details. Hopefully this guide will explain how
to generate a x360ce.ini file without using the App.

Like most .ini files, x360ce.ini consists of sections names, surrounded by square brackets, under
which the settings for that section are placed. Section and Settings names are not case
sensitive. For example:

[Section1] # Example section heading Section1
Setting1 = Value1 # Setting1 is assigned Value1
Setting2 = 0 # Setting2 is false (0 = false)
Setting3 = 1 # Setting3 is true (1 = true)

et cetera. Comments can be added by using the hash character, for example:

# This is a comment

The following sections are present in x360ce.ini:
[Options]
This section contains most general settings for the library file, which are not controller
or game specific.
[InputHook]
x360ce can provide Input Hooking for games that require it. This section specifies the
Input Hooking needed. It is game specific: not all games require Input Hooking. This
section is not needed if using the x360ce Game Database, and the game is included.
[Mappings]
This section maps each installed controller to one of four controller numbers, i.e. PAD1,
PAD2, PAD3 or PAD4. For example, the following maps the Controller Name Dual
Trigger 3-in-1 to controller one:
[Mappings]
PAD1=Dual Trigger 3-in-1
PAD2=
PAD3=
PAD4=

[PAD1] [PAD2] [PAD3] [PAD4]
These four sections are no longer used.
Controller Sections, e.g. [Dual Trigger 3-in-1]
There can be multiple Controller Sections. These contain the settings for each controller.
In the above example, the Controller Name is Dual Trigger 3-in-1. The Controller
Name is used in the Mappings section to map a controller to a controller number. When
the App creates the Controller Name, it is a 32-character hexadecimal number (=
InstanceGUID of controller) beginning with IG_.

Chapter 2 [Options] Section

This is a typical options section:

[Options]
# General options, not game or controller specific
# Note: True = 1, False = 0
UseInitBeep=1 # 1 = Beep on startup of Library / App
Log=0 # 0 = Log file creation is off (default)
Console=0 # 0 = Console mode is off (default)
DebugMode=0 # 0 = Debug mode is off (default)
InternetDatabaseUrl=http://www.x360ce.com/webservices/x360ce.asm
x # standard URL for App web features
InternetFeatures=1 # Only needed if using x360ce App
InternetAutoload=1 # Only needed if using x360ce App
AllowOnlyOneCopy=1 # 1 = Only one App copy can be loaded
Version=1 # 1 stops x360ce App / Library mismatch error
Override=0 # 0 = uses GDB from %ProgramData%\x360ce

UseInitBeep creates a beep when the library file is loaded by a game, or the App is
started, or the App changes a setting.
Log allows a creation of a log file at %ProgramData%\x360ce\logs (or
%allusersprofile%\Application Data\x360ce\logs with Windows XP) when the library
file or app file is loaded.
Console mode and debug mode are normally for developers.
Internet settings (Internet*=value) are only used if using the x360ce App. If these are
enabled, the App can attempt to get the correct controller configuration from the
Internet. The url of http://www.x360ce.com/webservices/x360ce.asmx is standard.
AllowOnlyOneCopy=1 stops more than one copy of x360ce from being loaded at any
one time.
If Version=1, an error does not occur if using the x360ce App with a different x360ce
library version.
If Override=1, the x360ce Game Database used is the one in the local folder (if present),
rather than that at %ProgramData%\x360ce (or %allusersprofile%\Application
Data\x360ce with Windows XP) (if present).
Chapter 3 [InputHook] Section

This section is not needed if using the x360ce Game Database, and the game is included
(Library R578 onwards). x360ce can provide Input Hooking for games that require it. This
section specifies the Input Hooking needed. It is game specific: not all games require Input
Hooking.

What is Input Hooking? When x360ce is active, the general scheme of things is: Controller >
Controller Driver > System dinput8.dll (not the x360ce version) > x360ce library > game or
application. Hooking alters the messaging between the system dinput8.dll, and the game or
application.

Before x360ce Library R574 (3.3.1.574) it would have looked something like this:

[InputHook]
HookMode=1

From x360ce Library R574 (3.3.1.574) onwards, HookMode was removed, and replaced with
HookMask. It now looks something like this:

[InputHook]
HookLL=0
HookCOM=1
HookSA=0
HookWT=0
HookDI=0
HookPIDVID=0
HookName=0

HookLL etc. are termed hooks. Games requiring hooks would need to have these enabled. For
example Assassins Creed needs the HookCOM, HookDI and HookPIDVID enabled, so the
correct [InputHook] is:

[InputHook]
HookLL=0
HookCOM=1
HookSA=0
HookWT=0
HookDI=1
HookPIDVID=1
HookName=0

The above can be replaced with the following if desired, see
http://forums.ngemu.com/showthread.php?t=155113 for why:

[InputHook]
HookMask=0x0000000E

The old HookMode=0 is like disabling all hooks. The old HookMode=1 (Normal) is like enabling
both HookLL (only implemented R553 onwards) and HookCOM. The old HookMode=2
(Compatibility) is a like HookLL, HookCOM, HookDI and HookPIDVID enabled. The old
HookMode=3 (Full or All) is like HookLL, HookCOM, HookDI, HookPIDVID and HookName
enabled. So far, only Beat Hazard titles needs HookSA enabled; so far, only Gears of War
needs HookWT enabled. NB prior to R604, HookPIDVID was titled HookVIDPID.

This should not be needed, but with HookPIDVID enabled, FakePID and FakeVID can be altered
(default values of 0x028E and 0x045E respectively). Additional hooks HookStop and
HookDisable (HookEnable before R601) should not be accessed. See
http://code.google.com/p/x360ce/source/detail?r=574 for details.

Chapter 4 [Mappings] Section

This section must be present .This section maps each installed controller to one of four
controller numbers, i.e. PAD1, PAD2, PAD3 or PAD4. For example, the following maps the
Controller Name Dual Trigger 3-in-1 to controller one:

[Mappings]
PAD1=Dual Trigger 3-in-1
PAD2=
PAD3=
PAD4=
In the above example, there MUST also be a [Dual Trigger 3-in-1] Controller Section, specifying
how the controller is configured. PAD2=Dual Trigger 3-in-1 would make it controller 2.

If any XInput controllers are also used, they should be put in slots before any DirectInput
controllers, for example:

[Mappings]
PAD1=Controller (Cyborg Rumble Pad - PC/Xbox 360)
PAD2=Dual Trigger 3-in-1
PAD3=
PAD4=
XInput controllers are usually only specified to enable passthrough. With the above example
there must be a [Dual Trigger 3-in-1] Controller Section and a [Controller (Cyborg Rumble Pad -
PC/Xbox 360)] Controller Section. This is an example Controller (Cyborg Rumble Pad - PC/Xbox
360) Controller Section.

[Controller (Cyborg Rumble Pad - PC/Xbox 360)]
#GUID's are only needed for InputHook
ProductGUID=cb020738-0000-0000-0000-504944564944
InstanceGUID=7cba3720-8627-11e0-8002-444553540000
PassThrough=1 # Passed through as already XInput
Chapter 5 Controller Sections

The controller sections have settings for individual controllers. It begins [Controller_Name],
where the controller name can be anything, but it must be what is specified in the [Mappings]
section. An example is:

[IG_d7ff4a1052b011e28001444553540000]
# Controller Section for my DInput gamepad
# Name based on InstanceGUID without hyphens
# Find the GUIDs for yours using using ditool.exe
ProductName=Dual Analog Pad
ProductGuid=01120f30-0000-0000-0000-504944564944
InstanceGuid=d7ff4a10-52b0-11e2-8001-444553540000
PassThrough=0 # 0 if a DInput controller
ControllerType=1 # 1 = gamepad

The ProductName, ProductGuid (GUID = Globally Unique Identifier) and InstanceGuid
can be found out using the ditool.exe , which can had from the x360ce download page.
The controller name I have chosen is IG_ plus the InstanceGUID (excluding the
hyphens): the advantage of naming it this is that it is recognised by the x360ce App.
PassThrough=0 means that the library processes the DInput of the controller, turning it
into XInput. If set to 1 the library would leave the controller unprocessed.
ControllerType=1 identifies the controller as a gamepad. Unknown=0, Gamepad=1,
Wheel=2, ArcadeStick=3, FlightStick=4, DancePad=5, Guitar=6, AlternateGuitar=7,
DrumKit=8, BigButtonPad=768.

# Button setup: use joy.cpl to find.
X=1
Y=2
A=3
B=4
Left Shoulder=5
Left Trigger=6
Right Shoulder=7
Right Trigger=8
Back=9
Start=10
Left Thumb=11
Right Thumb=12

The buttons need to be set to the corresponding DInput button number. This can be
found by running joy.cpl > Properties.

# D-pad setup
D-pad POV=1
D-pad Down=DOWN
D-pad Left=LEFT
D-pad Right=RIGHT
D-pad Up=UP

The D-pad settings allow the D-pad to be used by the library. They are standard settings
common to most controllers.
If you disable the D-pad POV (D-pad POV=0), you can map digital buttons to x360ce D-
pad.

# Analog sticks mappings to buttons
Left Analog Y- Button=0 # 0 = disabled
Left Analog X- Button=0
Left Analog X+ Button=0
Left Analog Y+ Button=0
Right Analog Y- Button=0
Right Analog X- Button=0
Right Analog X+ Button=0
Right Analog Y+ Button=0

The left and right and left analog sticks can assigned to controller buttons if desired. For
example Left Analog Y+ Button=4 would map button 4 to x360ce Left Analog Y+. In the
above example this is disabled. These entries are not required.

# Analog stick settings
Left Analog X=1 # 1 = Axis 1
Left Analog Y=-2 # -2 = inverted axis 2
Right Analog X=6 # 6 = Axis 6
Right Analog Y=-3 # -3 = inverted axis 3

The above settings assign axes to the analog sticks.
Axis 1 to axis 8 are assigned 1 to 8.
Inverted axis 1 to 8 are assigned -1 to -8.
Half axis 1 to 8 are assigned x1 to x8.
Inverted-Half axis 1 to 8 are assigned x-1 to x-8.
Slider 1 to 8 are assigned s1 to s8.
Inverted slider 1 to 8 are assigned s-1 to s-8.
Half slider 1 to 8 are assigned h1 to h8.
Inverted half slider 1 to 8 are assigned h-1 to h-8.
Sticks can be assigned to D-pad, e.g. Left Analog X=UP.

# Force feedback settings
UseForceFeedback=0 # 0 = force feedback is false
FFBType=0 # 0 = default type
ForcePercent=0 # 0 = 0%
SwapMotor=0 # 0 = false
RightMotorPeriod=0 # 0 = 0 milliseconds
LeftMotorPeriod=0 # 0 = 0 milliseconds

The above settings are the Force Feedback settings.
Use Force Feedback, 0 = false, 1 = true.
FF Type: 0=default, 1= Type 1, 2 = Type 2.
Force Percent is the strength (from 0 to 100).
Swap motor: 0 = false, 1 = true.
Right and Left Motor periods are in 0 to 500 milliseconds.

# Increase deadzone setttings
TriggerDeadzone=26 # 26 = 10% increase
RightTriggerDeadZone=26 # 26 = 10% increase
Left Analog X DeadZone=3277 # 3277 = 10% increase
Left Analog Y DeadZone=3277 # 3277 = 10% increase
Right Analog X DeadZone=3277 # 3277 = 10% increase
Right Analog Y DeadZone=3277 # 3277 = 10% increase

The above settings are dead zone settings. They increase dead zone. These are all settings for
10% dead zone.
For the Left Trigger (TriggerDeadZone) and the Right Trigger (RightTriggerDeadZone) it is
the percentage multiplied by 2.56. So 100%=256.
For the analog sticks it is the percentage multiplied by 327.67. So 100%=32767.

# Anti-Deadzone settings: decrease deadzone
Left Analog X AntiDeadZone=784 # 784 = 10% decrease
Left Analog Y AntiDeadZone=784 # 784 = 10% decrease
Right Analog X AntiDeadZone=868 # 868 = 10% decrease
Right Analog Y AntiDeadZone=868 # 868 = 10% decrease

The above settings are anti dead zone settings for 10%. This reduces dead zone on controllers.
Left analog anti-dead zones are percentages multiplied by 78.49. So 100%= 7849.
Right analog anti-dead zones are percentages multiplied by 86.89. So 100%=8689.

# Axis to D-pad settings
AxisToDPad=0 # 0 = false
AxisToDPadDeadZone=256 # 256 = 100%
AxisToDPadOffset=0 # 0 = 0%

Above settings are for axis to D-pad.
AxisToDPad=0 means Axis to D-Pad disabled (1 = enabled)
AxisToDPadDeadZone=256 means dead zone = 100% (percentage multipled by 2.56
gives value)
AxisToDPadOffset=0 means axis to d-pad offset = 0% (percentage multiplied by 2.56
gives value).

Chaper 6 Possible Mappings with x360ce
Mapping to the x360ce D-Pad (a.k.a. POV Hat, Direction Pad, etc.)
App refers to x360ce Application (x360ce.exe). > means maps to.
Obviously the normal mapping is DInput D-Pad > x360ce D-Pad. This works as long as D-
pad POV=1 is in .ini file. To set it in the App, set the drop down menu for D-Pad to D-Pad
1.
It is not possible to set e.g. Up to Down.
DInput Digital Buttons > x360ce D-Pad. Need D-Pad POV=0 for this to work, then you
have e.g. D-pad Down=3 for button 3 to map to x360ce D-Pad down. To set this in the
App set the D-Pad drop down to <empty>. Then set e.g. D-Pad Up drop down menu to
Buttons > Button 2.
DInput Axes and Sliders > x360ce D-Pad. Although it is possible to set this in the App,
this does not work.
DInput Left Analog Stick > x360ce D-Pad. See Axis to D-pad in the controller section. In
the App Controller 1 > Advanced > Axis to D-Pad. This works, but not very well with
current x360ce Libraries. In particular Left and Right are inverted, and you can't change
this.
Mapping to the x360ce Analog Sticks
DInput Axes or Sliders > x360ce Analog Stick. This is the normal way of setting up
x360ce. e.g. in the Stick Axis X drop down menu set to Axis 1 etc.
DInput Digital Buttons > x360ce Analog Stick digital direction. This can be done by
setting e.g. Stick Up drop down menu to Button 2.
DInput D-Pad, Axes or Sliders > x360ce Analog Stick digital direction. This can be set in
the App but does not work with current x360ce Libraries.
Mapping to the x360ce Digital Buttons
Digital buttons are X, Y, A, B, Left and Right Bumpers, Start, Back, Guide.
DInput Buttons > x360ce Digital Buttons: can be set up with the drop down menus for
each button.
Although you can set it in the App, Axes, Sliders or D-Pad buttons can not map to x360ce
digital buttons.
Mapping to the x360ce Analog Buttons, i.e. Left and Right Triggers
DInput Digital Buttons > x360ce Trigger Digital Buttons. This is the usual set up with
controllers with digital trigger buttons.
DInput Axes > x360ce Trigger Analog Buttons. This is the usual set-up for controllers
with analog trigger buttons.
Although you can set it in the App, D-Pad buttons can not map to x360ce Trigger Digital
Buttons.

Chapter 7 Example x360ce.ini

My x360ce.ini, for my Saitek P380 controller, with HookCOM enabled, is:

# Example x360ce.ini. Can be edited to your own one with care!

[Options]
# General options, not game or controller specific
# Note: True = 1, False = 0
UseInitBeep=1 # 1 = Beep on startup of Library / App
Log=0 # 0 = Log file creation is off (default)
Console=0 # 0 = Console mode is off (default)
DebugMode=0 # 0 = Debug mode is off (default)
InternetDatabaseUrl=http://www.x360ce.com/webservices/x360ce.asm
x # standard URL for App web features
InternetFeatures=1 # Only needed if using x360ce App
InternetAutoload=1 # Only needed if using x360ce App
AllowOnlyOneCopy=1 # 1 = Only one App copy can be loaded
Version=1 # 1 stops x360ce App / Library mismatch error
Override=0 # 0 = uses GDB from %ProgramData%\x360ce

[InputHook]
# These HookMasks are game specific
# = 1 to set, = 0 to unset
HookLL=0
HookCOM=1 # 1 = HookCOM set
HookSA=0
HookWT=0
HookDI=0
HookPIDVID=0
HookName=0

[Mappings]
# DirectInput devices should be put in the slots after XInput
devices, to not collide.
PAD1=IG_d7ff4a1052b011e28001444553540000
PAD2=
PAD3=
PAD4=

# [Controller (Cyborg Rumble Pad - PC/Xbox 360)]
## Example XInput controller. GUID's are only needed for
InputHook. Find the GUIDs using using ditool.exe
# ProductGUID=cb020738-0000-0000-0000-504944564944
# InstanceGUID=7cba3720-8627-11e0-8002-444553540000
# PassThrough=1 # Xinput controllers to be passed through.


[IG_d7ff4a1052b011e28001444553540000]
# Controller Section for my DInput gamepad
# Name based on InstanceGUID without hyphens
# Find the GUIDs for yours using using ditool.exe
ProductName=Dual Analog Pad
ProductGuid=01120f30-0000-0000-0000-504944564944
InstanceGuid=d7ff4a10-52b0-11e2-8001-444553540000
PassThrough=0 # 0 if a DInput controller
ControllerType=1 # 1 = gamepad

# Button setup: use joy.cpl to find.
X=1
Y=2
A=3
B=4
Left Shoulder=5
Left Trigger=6
Right Shoulder=7
Right Trigger=8
Back=9
Start=10
Left Thumb=11
Right Thumb=12

# D-pad setup
D-pad POV=1
D-pad Down=DOWN
D-pad Left=LEFT
D-pad Right=RIGHT
D-pad Up=UP

# Analog sticks mappings to buttons
Left Analog Y- Button=0 # 0 = disabled
Left Analog X- Button=0
Left Analog X+ Button=0
Left Analog Y+ Button=0
Right Analog Y- Button=0
Right Analog X- Button=0
Right Analog X+ Button=0
Right Analog Y+ Button=0

# Analog stick settings
Left Analog X=1 # 1 = Axis 1
Left Analog Y=-2 # -2 = inverted axis 2
Right Analog X=6 # 6 = Axis 6
Right Analog Y=-3 # -3 = inverted axis 3

# Force feedback settings
UseForceFeedback=0 # 0 = force feedback is false
FFBType=0 # 0 = default type
ForcePercent=0 # 0 = 0%
SwapMotor=0 # 0 = false
RightMotorPeriod=0 # 0 = 0 milliseconds
LeftMotorPeriod=0 # 0 = 0 milliseconds

# Increase deadzone setttings
TriggerDeadzone=0 # 0 = 0% increase
RightTriggerDeadZone=0 # 0 = 0% increase
Left Analog X DeadZone=0 # 0 = 0% increase
Left Analog Y DeadZone=0 # 0 = 0% increase
Right Analog X DeadZone=0 # 0 = 0% increase
Right Analog Y DeadZone=0 # 0 = 0% increase

# Anti-Deadzone settings: decrease deadzone
Left Analog X AntiDeadZone=0 # 0 = 0% decrease
Left Analog Y AntiDeadZone=0 # 0 = 0% decrease
Right Analog X AntiDeadZone=0 # 0 = 0% decrease
Right Analog Y AntiDeadZone=0 # 0 = 0% decrease

# Axis to D-pad settings
AxisToDPad=0 # 0 = false
AxisToDPadDeadZone=256 # 256 = 100%
AxisToDPadOffset=0 # 0 = 0%

Potrebbero piacerti anche