Report game compatibility here.

Discussion in 'x360ce' started by Squall-Leonh@rt, Feb 11, 2013.

  1. Squall-Leonh@rt

    Squall-Leonh@rt Maybe I'm a Lion

    Messages:
    4,997
    Likes Received:
    110
    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.
    Last edited: Oct 12, 2014
  2. NGEmu.com Advertisement

  3. Squall-Leonh@rt

    Squall-Leonh@rt Maybe I'm a Lion

    Messages:
    4,997
    Likes Received:
    110
    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.


    [​IMG]


    If you require additional help and information, please read the
    x360ce Libraries Tutorial by resolutespider5
    Last edited: Oct 12, 2014
  4. SCHUMI_4EVER

    SCHUMI_4EVER Hackin 'n Slashin Staff Member Award Winner!

    Messages:
    28,624
    Likes Received:
    18
    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.
  5. resolutespider5

    resolutespider5 I mustache you a queshtion

    Messages:
    1,943
    Likes Received:
    269
    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]
    Last edited: Feb 11, 2013
  6. Squall-Leonh@rt

    Squall-Leonh@rt Maybe I'm a Lion

    Messages:
    4,997
    Likes Received:
    110
    Hookmode is deprecated, it can be removed from the ini

    Ejocy will need to remove the Hook mode menu in the future.
  7. tapeq

    tapeq Member

    Messages:
    538
    Likes Received:
    74
    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
    Last edited: Feb 11, 2013
  8. Squall-Leonh@rt

    Squall-Leonh@rt Maybe I'm a Lion

    Messages:
    4,997
    Likes Received:
    110

    Yes, Mini Ninja's queries OEMName and checks for "XBOX 360 For Windows (Controller)"
  9. tapeq

    tapeq Member

    Messages:
    538
    Likes Received:
    74
    OEMName is also queried by DirectInput GetProperty/GetDeviceInfo. So, "Mini Ninja's" exe queries OEMName or DirectInput does this for it? This is main question.
  10. Squall-Leonh@rt

    Squall-Leonh@rt Maybe I'm a Lion

    Messages:
    4,997
    Likes Received:
    110
    Good question :( i don't have it myself :(
  11. tapeq

    tapeq Member

    Messages:
    538
    Likes Received:
    74
    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.
    Last edited: Feb 11, 2013
  12. tapeq

    tapeq Member

    Messages:
    538
    Likes Received:
    74
    [HAWX2.exe]
    HookMask=0x0000000E

    [HAWX2_DX11.exe]
    HookMask=0x0000000E

    I do not know HAWX 1 exe names but mask should be same as above.
  13. Squall-Leonh@rt

    Squall-Leonh@rt Maybe I'm a Lion

    Messages:
    4,997
    Likes Received:
    110
    gdb committed, incl HAWX binary names.

    working nicely in hawx btw :D
    Last edited: Feb 16, 2013
  14. resolutespider5

    resolutespider5 I mustache you a queshtion

    Messages:
    1,943
    Likes Received:
    269
    Shouldnt that be 0x0100002F ?
    Last edited: Feb 16, 2013
  15. tapeq

    tapeq Member

    Messages:
    538
    Likes Received:
    74
    Yes, it should...
  16. Squall-Leonh@rt

    Squall-Leonh@rt Maybe I'm a Lion

    Messages:
    4,997
    Likes Received:
    110
    hex calculator stuffed up >.<

    or i entered a value twice :|

    im guessing i entered 0x2 twice - seems like it....
    Last edited: Feb 16, 2013
  17. tapeq

    tapeq Member

    Messages:
    538
    Likes Received:
    74
    But 0xF | 0x2 is 0xF. Maybe you use Add instead of Or ?

    PS: Whatever... (like Squall) it is fixed now :p
  18. Squall-Leonh@rt

    Squall-Leonh@rt Maybe I'm a Lion

    Messages:
    4,997
    Likes Received:
    110
    yeah, i just realised if i had done 0x2 twice it would be 0x31 XD

    i must have failed to hit CLR properly and ended up doing 0x1 and 0x2 twice
  19. resolutespider5

    resolutespider5 I mustache you a queshtion

    Messages:
    1,943
    Likes Received:
    269
    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.
  20. Squall-Leonh@rt

    Squall-Leonh@rt Maybe I'm a Lion

    Messages:
    4,997
    Likes Received:
    110
    Yup, good catch.

    The bool is HookDI and HookPIDVID
  21. resolutespider5

    resolutespider5 I mustache you a queshtion

    Messages:
    1,943
    Likes Received:
    269
    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

Share This Page