Jump to content
  • Advertisement
Sign in to follow this  
bugtrain

Is it Possible to Remove In-Game Mouse Acceleration with these Methods?

This topic is 2987 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I have a game that uses inbuilt mouse acceleration which is impossible to disable and really ruins the experience for me and many others who play it. It seems that the game uses DirectX, as the windows mouse setting don't affect the in-game mouse in any way. I would love to create a fix and do have a couple of theories on how to fix this, but would need some feedback from someone with experience in game technology/programming. 1. Would it be possible to use some kind of hook and capture the input from the mouse and modify it with an inverse function of the acceleration before passing it on to DirectX and the game? 2. Maybe one could use a program to emulate a virtual mouse with inverse acceleration and then let DirectX take input from that virtual mouse? Or would the emulator run on a too high level for it to work with DirectX? 3. Do you think the game could use some of its run-time memory to store mouse movement data so that one could use a memory editor and apply the inverse function with a code injection?

Share this post


Link to post
Share on other sites
Advertisement
One of the many reasons I say to never use DirectInput for keyboard or mouse input...

It should be reasonably easy to do. I'd create a fake dinput8.dll, which contains exports similar to the real dinput8.dll. When the game loads your DLL and tries to create a mouse device, you can then return your own interface that inherits from IDirectInputDevice8, and reads the mouse position using normal Win32 methods.
Googling for "Proxy DLL" should provide plenty of relevant links (Although probably not for DirectInput), and the MSDN / DirectX docs and Dependency Walker and dumpbin (Both come with the Platform SDK) should tell you what functions you need to export and what function signature they need to be.

Share this post


Link to post
Share on other sites
Alright cool. Thanks for the advice.

The game in question is Assassin's Creed 2 PC, which as far as I understand is just a console-port with added mouse functionality. I guess the acceleration was to make it easier to play with an XBOX analog stick, but when making the port they just added a directx mouse device without adjusting the game code.

I'm gonna read all the introduction tutorials to directinput and see what I can do with the SDK. Would be awesome if I could somehow get a template of the dinput8.dll wrapper, which would have all the stuff needed to run without changing anything already there. Then one could just add the inverse function and adjust it to the acceleration.

Share this post


Link to post
Share on other sites
wait, isn't it possible that the game applies the acceleration within its own code so that even if I feed it normal win32 mouse input through the wrapper, it'll still accelerate it when playing?

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!