PCSX2 / pcsx2

PCSX2 - The Playstation 2 Emulator
https://pcsx2.net
GNU General Public License v3.0
11.71k stars 1.62k forks source link

[BUG] Controller rumbles never stops in Ratchet Going Commando when shooting with a weapon. #4215

Closed ghost closed 1 year ago

ghost commented 3 years ago

Describe the bug When shooting with a weapon in the game "Ratchet and Clank Going Commando" the controller will always vibrate even after pcsx2 shutdown.

To Reproduce Load the game, select the bouncer and shoot with it.

Expected behavior The controller should stop vibrate after the weapons have stopped shooting.

Emulation Settings EE Timing hack, all default.

System Info (please complete the following information): PCSX2 Revision: pcsx2-v1.7.0-dev-925-ge0394921e-windows-x86 OS: Windows 10 CPU: I9 9900k GPU: RTX 3070

Logs and Dumps https://drive.google.com/file/d/1Nj12Ya4-m8Po-BH4hynbnwSFKcn-D7np/view?usp=sharing

bigol83 commented 3 years ago

This also happens in Budokai Tenkaichi 3 and in Ghosthunter. Using Dualshock 4.

The only way it stops it's when controller receives another rumble input. Or disconnecting the controller, obviously.

I'm using the latest revision.

RedDevilus commented 3 years ago

I could also trigger endless rumbling when a game triggers rumbling and you pause the emulation, only fix was to disconnect the controller (resuming didn't fix it)

Squall-Leonhart commented 3 years ago

This is a controller/driver fault.

refractionpcsx2 commented 3 years ago

This is a controller/driver fault.

Not necessarily, we might not be sending the "motor stop" message, especially if you quit out while the rumble is happening, I doubt there's anything that tells the controller to stop doing that. Unless for some weird reason on PC controllers you have to tell it to keep rumbling, rather than start/stop.

Squall-Leonhart commented 3 years ago

especially if you quit out while the rumble is happening

If you quit out while rumbling, known good driver/controllers stop vibrating.

I doubt there's anything that tells the controller to stop doing that.

The HID driver or wrapper implementing the API.

Unless for some weird reason on PC controllers you have to tell it to keep rumbling, rather than start/stop.

Vibration in Xinput and FFB on PC are a playback type effect, you specify a direction and a period for it to rumble and it stops after that period, or continues if the effect is overwritten, theres no Start/Stop unless you're intending to lock vibration.

This is an old(er) issue known with the DS4 controller and its various methods of using it on windows, particularly with USB3 and BT connections, the device driver doesn't forward onto the control hardware that the vibration period has concluded and it is locked on.

CookiePLMonster commented 3 years ago

FYI even some XInput-compliant controllers can't always handle rumble requests being sent too often, rate-limiting API to calls may be a good idea.

Mrlinkwii commented 1 year ago

can this be checked on latest nightly?

MrCK1 commented 1 year ago

Tested on 1.7.4919 with padtest elf. Started all motors and they stopped vibrating on emulator shutdown. This is all set.