Next Generation Emulation banner

1 - 20 of 256 Posts

·
Maybe I'm a Lion
Joined
·
5,057 Posts
Discussion Starter #1 (Edited)
For games NOT listed in the Game Compatibility List

As of r574, compatibility is very different, this thread will be for reporting which hookmasks work for which games, how to use the hookmasks and I will compile a list of games already included in the GDB and link each post for each game in the list.

HookMode is removed entirely as of r574!.

Some games do not require a hookmask for some reason, but others do, particularly those that use unusual methods for detecting Xbox360 pads or support both Xinput and DirectInput pads(these are usually requiring HookCOM).


X360CE.GDB
In the GDB file, the HookMasks (HookMask=) are written using a combination of these hex values

  • LoadLibrary(HookLL) = 0x00000001;
  • COM(HookCOM) = 0x00000002;
  • SetupAPI (HookSA) = 0x00000020;
  • WinVerifyTrust(HookWT) = 0x01000000
  • DirectInput (HookDI) = 0x00000004;
  • ProductID/VendorID (HookPIDVID) = 0x00000008;
  • Spoof name (HookName) = 0x00000010;
Hookmask 0x0100003F enables all of the above for example.
Typically, only a single value will be required in the GDB.

There are also some other values that are really only useful to the developers such as

  • Stop hooking(HOOKSTOP) = 0x02000000;
  • Disable (HOOKDISABLE) = 0x80000000;
X360CE.INI
In the INI, they are entered under the [InputHook] section as

  • HookLL=(0/1)
  • HookCOM=(0/1)
  • HookSA=(0/1)
  • HookWT=(0/1)
  • HOOKDI=(0/1)
  • HOOKPIDVID=(0/1)
  • HookName=(0/1)
Whilst you can just enable all 4 and forget it, it is advised to only use one of the first 3 at a time, with the 4th (HookWT) only being used specifically in games that require it, we will not simply enable all modes for a game in the GDB without significant proof (and self replication) of it being required as this may introduce undesired behavior
Don't hesitate to report if you find any games that crash with all them set, it would be good if it could eventually default to all on and be done with it.
See the thread rules below for further information.

HookCOM
Games that support both Direct and X Input API's may end up displaying both controllers in game, resulting in ghosted input or being able to start a 2 player game using a single control (SF4/SSF4 and DMC for example). HookCOM allows the game to mask the controller's directinput capabilities, which is advised by microsoft themselves on TechNet. HookCOM is the method required in most cases of games not working.​
HookLL
Many XACT games (that is, the Xbox360/PC cross platform games) require HookLL to run properly. As they do not load the xinput runtime directly, Dinput8 wrapper is required to redirect back to the local X360CE binary instead of loading the default xinput1/9_x binary.
HookSA
This enables the hooking of SetupAPI, only the BeatHazard titles are known to require it thus far, so it should almost never be needed.
HookWT
This enables the hooking of WinVerifyTrust. This is required for games which utilise WVT for Process Integrity checking.
Only Gears of War is known to use it at this point, so it should almost never be needed.
HOOKDI
This allows the wrapper to trick some games that detect the controller GUID via DirectInput, The first Assassins Creed is one such title.​
HOOKPIDVID
This works in conjunction with FakePID= and FakeVID=
Without these, it defaults to the Wired Xbox 360 Controller which are 0x28E and 0x45E respectively.
HookName
This allows x360ce to return a different oemname than that of the controller installed. For instance, in Assassins Creed it changes the name of the xinput device to Xbox 360 Controller. While this is generally not required for functionality, the game mini ninja's is known to check for "Xbox 360 Controller" in the registry and will not work if the name is anything else.
Some games will work even without any of the above set, It would be good to know these as well.

Thread Rules:

  1. This thread is specifically for reporting games found to be compatible.
  2. When reporting game compatibility, the HookMask(s) used, full game title and executable name are required for adding to the GDB.
  3. If you find a game crashing that is listed in the second post, its likely not the wrapper, but an issue with your controllers drivers - particularly if it uses an obscure (probably bad) Force Feedback driver. Start your own thread or report the issue to the issue tracker.
  4. If a game is not working with any settings, start a thread of your own or report it to the issue tracker.
  5. Do not post in this thread about a game already listed unless you have evidence that settings provided by the original reporter are wrong.
 

·
Maybe I'm a Lion
Joined
·
5,057 Posts
Discussion Starter #2 (Edited)
Does my game use XInput? Is it 32-bit or 64-bit? What xinput dll filename does it need?

This is how you can find out, for games not on the Game Compatibility List.

1. CTRL-ALT-DEL > Task Manager > Right click on application name > Select "Go To Process" to get name of process.
2. NB If 32-bit will have " *32" besides process image name, and needs 32-bit x360ce. Otherwise will need 64-bit x360ce.
3. In Task Manager > Performance Tab > Click on "Resource Monitor" to bring up Resource Monitor.
4. In Resorce Manager click on CPU tab. Locate name of process under "Processes" and click box to select.
5. Go to Associated Modules. Click on Module Name to sort alphabetically. Scroll down to see if any "C:\Windows\System32\xinput*.dll" are loaded. Note xinput dll name, and check it is in Windows\System32.
6. NB In "Resource Manager > CPU > Associated Modules" there may be two scroll bars, you have to scroll using both of these.





If you require additional help and information, please read the
x360ce Libraries Tutorial by resolutespider5
 

·
Hackin 'n Slashin
Joined
·
28,630 Posts
Mini Ninjas requires a rename to be an XBOX 360 pad in the registry and then it works with whatever the default hook mode was.

Split/Second should work out of the box.
 

·
I mustache you a queshtion
Joined
·
1,972 Posts
Bastion works with HookMode=Normal, no HookMask, and with no renaming of xinput1_3.dll. Tested with x360ce.App-2.1.2.190. My x360ce.ini file InputHook section read:

[InputHook]
HookMode=1
HookLL=0
HookCOM=0
HookSA=0
HookWT=0

You need to enable controllers: in the game go to Help & Options > Controls > click on the gamepad icon.

I can confirm that Grand Theft Auto IV doesn't need a HookMask, as it worked with the above ini. Everything as in Bastion.

One question I've got: if a game needs a HookMask, what is the best HookMode to run it under?
[highlight]
Thanks for the info. Just to clarify, Bastion and GTAIV are fine with the following InputHook

[InputHook]
HookLL=0
HookCOM=0
HookSA=0
HookWT=0
HOOK_DI=0
HOOK_VIDPID=0

Also, both work with:
[InputHook]
HookLL=1
HookCOM=1
HookSA=1
HookWT=1
HOOK_DI=1
HOOK_VIDPID=1
[/highlight]
 

·
Registered
Joined
·
559 Posts
Bastion works with HookMode=Normal, no HookMask, and with no renaming of xinput1_3.dll. Tested with x360ce.App-2.1.2.190. My x360ce.ini file InputHook section read:

[InputHook]
HookMode=1
HookLL=0
HookCOM=0
HookSA=0
HookWT=0

You need to enable controllers: in the game go to Help & Options > Controls > click on the gamepad icon.

I can confirm that Grand Theft Auto IV doesn't need a HookMask, as it worked with the above ini. Everything as in Bastion.

One question I've got: if a game needs a HookMask, what is the best HookMode to run it under?
Useless, HookMode=X was removed in r574
HOOK_NAME work with conjunction with HOOK_DI, in GetDeviceInfo method, GetProperty method and DirectInput enumeration callback, ie. it have limited functionality. I must know what API Mini Ninja's use to hook it... Maybe RegistryAPI ? (RegQueryValue).

For clarity old HookMode states (HookLL was added in r553 to all states):
Code:
HookMode==1 -> HOOK_LL | HOOK_COM
HookMode==2 -> HOOK_LL | HOOK_COM | HOOK_VIDPID | HOOK_DI
HookMode==3 -> HOOK_LL | HOOK_COM | HOOK_VIDPID | HOOK_DI | HOOK_NAME
HookMode> 3 -> HOOK_LL | HOOK_COM | HOOK_VIDPID | HOOK_DI | HOOK_NAME | HOOK_STOP
 

·
Registered
Joined
·
559 Posts
Seems "Mini Ninja's" check for "*xbox*" in pad name inside DirectInput enumeration callback, so it should work with HOOK_DI | HOOK_NAME.

EDIT: or not... I see that current HOOK_DI code is forcing VIDPID to Microsoft one, always... This need to be changed.
PS: Also VIDPID is incorrect name somekind, it should be PIDVID ...
PS2: Interesting: DirectInput device GUIDs have always last part "504944564944", if you write this bytes binary you get "PIDVID" in ANSI. Also Instance GUIDs have a "444553540000" this is "DEST" and null padding.
 

·
Registered
Joined
·
559 Posts
[HAWX2.exe]
HookMask=0x0000000E

[HAWX2_DX11.exe]
HookMask=0x0000000E

I do not know HAWX 1 exe names but mask should be same as above.
 

·
I mustache you a queshtion
Joined
·
1,972 Posts
X360CE.GDB
In the GDB file, the HookMasks (HookMask=) are written using a combination of these hex values

  • LoadLibrary(HookLL) = 0x00000001;
  • COM(HookCOM) = 0x00000002;
  • SetupAPI (HookSA) = 0x00000020;
  • WinVerifyTrust(HookWT) = 0x01000000
  • HOOK_DI = 0x00000004;
  • HOOK_PIDVID = 0x00000008;
Hookmask 0x01000032 enables all of the above for example.
Shouldnt that be 0x0100002F ?
 

·
I mustache you a queshtion
Joined
·
1,972 Posts
I've been testing HookMasks a bit with R629, and have noticed when I have the following HookMask in the x360ce.ini file:

[InputHook]
HookLL=1
HookCOM=1
HookSA=1
HookWT=1
HOOK_DI=1
HOOK_PIDVID=1

the HookMask in the log file is only 0x01000023, i.e HookDI and HookPIDVID are not being set. But with the following HookMask in the x360ce.ini file:

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

the HookMask sets up correctly, i.e. 0x0100002F.

It seems that having underscores in the name of the hooks stops them from being set.
 

·
I mustache you a queshtion
Joined
·
1,972 Posts
Game: FlatOut Ultimate Carnage
Version: File 1.0.0.1
Executable: fouc.exe (through launcher.exe)
My system: Dell Inspiron 15R SE (7520), Intel i7-3612QM, 8GB RAM, 2GB AMD Radeon HD 7730M / Intel HD 4000 graphics, 1920 x 1080 screen, 1 TB hard disk. MS Win7 Home Premium SP1 64-bit, DirectX 9.0c / 11, MS Visual C++ 2010/12 Re-distributable x86/x64, MS .Net Framework 4.5
Controller: Saitek P380 Controller.
Controller Driver: HID compliant game controller MS 21/06/2006 6.1.7601.17514
x360ce library: R642 32-bit (3.4.0.642)
x360ce library filename: xinput1_3.dll
[InputHook]
HookLL=0
HookCOM=1
HookSA=0
HookWT=0
HookDI=0
HookPIDVID=0
HookName=0
Comments: Needs HookCOM. Also works with all hooks enabled, i.e. HookMask=0x0100003F
 
1 - 20 of 256 Posts
Top