elishacloud / dinputto8

A dll module that is designed to improve compatibility in games using DirectInput 1-7 (dinput.dll) by converting all API calls to their equivalent DirectInput 8 (dinput8.dll) ones. This allows older games to be able to use newer tools and wrappers written for DirectInput 8.
zlib License
99 stars 9 forks source link

Die by the Sword -- in-game mouse input laggy and imprecise #13

Open jan-kleks opened 3 years ago

jan-kleks commented 3 years ago

This game has an option called VSIM which allows to precisely control weapon movements using the mouse (DbtS was famous for this at the time of the release). However, on Windows 10 64-bit the setting does not work correctly, and unfortunately the latest version of dinputto8 does not help.

Die by the Sword demo (Glide wrapper might be necessary on newer systems): https://archive.org/details/DiebytheSword_1020

Workaround for the problem with unresponsive in-game menus on newer systems: https://support.gog.com/hc/en-us/articles/212450929-Die-By-The-Sword-Limb-From-Limb-In-game-menu-problem

elishacloud commented 3 years ago

dinputto8 is mainly just designed to convert DirectInput to DirectInput8, not necessarily fix compatibility issues in specific games. However, I will look into this and see if this is something I can fix. I may put the fix in my dxwrapper project.

jan-kleks commented 3 years ago

Thank you that you consider looking into this. The mouse lag issue is probably the most serious one, here are two other problems that I have encountered:

-- DirectX 5 and software rendering do not work (at least on my Windows 10 64-bit installation)

-- the problem with unresponsive in-game menus on newer systems that I also mentioned in my first comment. The DbtS Xtended DirectX 9 engine (http://hazardx.com/files/dbts_xtended-86) generally seems to be fixing this issue, but for instance, the menu that you evoke with the Esc key during the actual gameplay is still very choppy, and even other menus can be slightly unresponsive from time to time. The discussion about the problem on Wine bug tracker: https://bugs.winehq.org/show_bug.cgi?id=27814

If you need any info or help with testing, please let me know.

elishacloud commented 10 months ago

I used a dinput8wrapper to solve a similar issue in another game, namely Call to Power 2. Try using this to see if it solves the issue: https://github.com/geeky/dinput8wrapper

Just use dinputto8 to redirect the game to use DInput8 and then use geeky's dinput8wrapper to fix the issue.

elishacloud commented 3 weeks ago

I just added some features to my dxwrapper project that should help with this:

  1. FixHighFrequencyMouse
  2. DeviceLookupCacheTime

Enabling FixHighFrequencyMouse will help with a number of issues, including cases where the games frame rate is too slow or the mouse input speed is too fast. It also helps if the game does not correctly support DirectInput's buffer overflow code.

Setting DeviceLookupCacheTime to a larger number helps with games that try and enumerate the attached devices too often, leading to shuttering and other input slowdowns.

Try this update: dxwrapper.zip