Ryochan7 / DS4Windows

Like those other ds4tools, but sexier
https://ryochan7.github.io/ds4windows-site/
GNU General Public License v3.0
7.01k stars 810 forks source link

Press LT and RT at the same time #2957

Closed Ruymanphone closed 1 year ago

Ruymanphone commented 1 year ago

Hello, I am going to explain a problem that I have, I am using ds4 Windows to play ninja gaiden 3

The controller works perfectly fine when I press L2 (LT) and R2 (RT) separately

The problem occurs when the game asks me to use LT and RT at the same time to climb but the problem is that both signals cancel each other, I can quickly press LT and RT, but not at the same time, so the game won't let me continue

I leave a video of what I try to explain:

https://youtu.be/0X3eFO7CAh4

Min 0:52

It also doesn't let me aim and shoot if I have control in E mode (aiming with LT and shooting with RT)

The game itself does not allow you to change the LT and RT keys to climb, you cannot change that

I have to also mention that the game only works with a real or virtual xbox 360 controller, in this case I use the virtual ds4 controller [Emulated controller Xbox 360], but I have this small problem that does not let me continue the game

20230528_104634.jpg

The rest of the things in the game work very well and correctly, it's just this "little" huge detail that doesn't let me move forward

Ryochan7 commented 1 year ago

Not sure how you are playing that game but I would assume that the DirectInput interface is being used for connecting with the virtual Xbox 360 controller. In that case, there is nothing you can really do. That was a design choice by Microsoft to join both triggers to a single axis for the DirectInput interface. Trying to engage both triggers at the same time will just cancel each other out and move the axis back to the center position.

A game needs to be using XInput libraries to be able to use the Xbox 360 triggers as two separate axes.

Ruymanphone commented 1 year ago

Not sure how you are playing that game but I would assume that the DirectInput interface is being used for connecting with the virtual Xbox 360 controller. In that case, there is nothing you can really do. That was a design choice by Microsoft to join both triggers to a single axis for the DirectInput interface. Trying to engage both triggers at the same time will just cancel each other out and move the axis back to the center position.

A game needs to be using XInput libraries to be able to use the Xbox 360 triggers as two separate axes.

Interesting, it could certainly be that, in other video games that doesn't happen to me at all

Definitely Microsoft and its terrible decisions

At least knowing what it is, I'll try to find a solution on my own, try to find something, a program or something that can put those libraries or fix it, I think you can close the thread without any problem, if I find a solution I'll write to inform you, maybe if I find something it could help someone else, so that people would know how to act to be able to use the ds4 with video games with this type of problems

Ruymanphone commented 1 year ago

It seems that I have found a partial solution but I still have not succeeded, I have found a program called Xinput Plus, choosing any version of Xinput dll x64 bits in its configuration selecting the exe does not crash the game, but with the version Xinput1_3.dll Specifically if it crashes, but well

The thing is that when I activate the DirectInput Output to put LT/RT as a button 11/12 or 12/13 (But I think this is not necessary or is it? It was enough to introduce xinput, wouldn't it be necessary to establish DirectInput right? I don't know, I'm really lost xD), when Dinput.dll and Dinput8. dll are installed in the game directory, it crashes yes or yes, so I will continue investigating

https://reflot.es/d/17-convertir-un-mando-xinput-al-antiguo-dinput

https://learn.microsoft.com/es-es/windows/win32/xinput/xinput-versions

Obviously from this point in which I am trying to using a complementary external program not related to you with the ds4, it is not under your responsibility xD but I continue giving information in case it can be useful to someone

As I say, I still haven't succeeded

Ruymanphone commented 1 year ago

Look, that tool that I passed (XinputPlus) can work with other videogames, it can be a perfect solution for other videogames, but not for ninja gaiden master collection, because this particular game crashes with this tool, but I finally solved it, i gave up trying to achieve something with XinputPlus, and i started searching the internet, and found that ninja gaiden has native support for ps4 controllers, so i just went to DS4Windows settings and changed the virtual emulated controller from xbox360 to dualshock 4, and now the triggers work perfectly, so I have solved it!

XinputPlus can be a partial solution to games that allow it, in my specific case it couldn't, but I found another even easier alternative to be able to play the game I wanted to play, I've been lucky because this game had support for PS4 controllers, thanks to that I can continue playing it

There are even videogames with xbox 360 controller support that correct the LT+RT problem automatically without having to do anything, I've played many games with the x360 virtual controller and never had any problems, but this game in particular, as it's old, I guess they never fixed it

Obviously, with other games, my controller is detected as an Xbox One controller so I've never had any problems there, but this particular game only allowed Xbox360 controllers, what I didn't know is that it also allowed Ps4 controllers, what I've achieved is a solution to adapt to the circumstances, it works and for that I am happy, it does not solve the main problem, but as I say, there are almost always alternative routes to achieve success

So good, summarizing in a paragraph, XinputPlus can be a good tool in other games, but if someone in particular wants to play a ninja gaiden, use Ds4Windows and change from X360 controller to Dualshock 4 controller

Also while I was searching the Internet where I got to this conclusion, I found a mod to play Ninja gaiden with keyboard and mouse with Ds4Windows, since the game does not natively support keyboard and mouse

https://www.nexusmods.com/ninjagaidenmastercollection/mods/13

This may help people who don't have controllers to play this game

Luckily I have a controller (Razer Raiju with the original PC driver, but modified with Vjoy to make it compatible with Ds4Windows, i did experiments months ago searchings ways to be able to use the touch panel since the original driver provided by Razer to PC does not offer that support to the touch panel, making it unusable)

But that is other story xDDDD

As you say, Microsoft's controller design for old controllers is a huge mistake, but I don't know if that could have a solution or not, I know there are tools like X2DCLI, but that's for people who have a physical x360 controller and it's nothing more than a CMD emulating a second virtual controller to emulate separated triggers, but it wouldn't work in a game that doesn't let you change the controller in its settings as it was in the specific case of this videogame

https://youtu.be/UERyvjPWFsQ

If you want to find a main solution as a programmer you can do it on your own, but with my alternative solution in this specific context I am satisfied and I feel closed this thread

You can close this thread if you want, you can save it to keep in mind for yourself, I no longer need technical support at the moment

Thank you for the information and I hope that the information I have given you will also be useful

I have solved it, I succeeded, thanks

My greetings to you