libretro / flycast

Flycast is a multiplatform Sega Dreamcast emulator. NOTE: No longer actively developed, use upstream repo for libretro from now on - https://github.com/flyinghead/flycast
http://reicast.com
GNU General Public License v2.0
155 stars 77 forks source link

Vibration motors staying on #47

Closed Nine-H closed 5 years ago

Nine-H commented 6 years ago

I tested cannon spike and zero gunner 2 and the rumble motors just stay on constantly.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/59683026-vibration-motors-staying-on?utm_campaign=plugin&utm_content=tracker%2F49543223&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F49543223&utm_medium=issues&utm_source=github).
hiddenasbestos commented 6 years ago

I've found the same with the opening 'engine rev' in F355 Challenge. It's more than just Psikyo games.

Looking at a copy of the SDK and in one of the samples there's a couple of different flags for the rumble on the game side:

PDD_VIB_FLAG_EXHALATION PDD_VIB_FLAG_CONVERGENCE PDD_VIB_FLAG_CONTINUOUS

I have a feeling that one or both of the first two flags might cause the Dreamcast to automatically fade out its rumble over time - if that's not emulated correctly then it perhaps explains why it's staying on. I'm not really sure how to fix that but hopefully it shines a light on the problem.

As a workaround you can open the Quick Menu and it should stop the residual vibration.

Nine-H commented 6 years ago

alright, I changed the title of the bug.

rcaridade145 commented 6 years ago

PurupuruPack must be enabled by default. Took a look into the source don't seem to find where it changes vibration :|

Metasynic commented 5 years ago

After messing around for a while (on Sonic Adventure 2 - controller starts vibrating and won't stop when Knuckles or Rouge climb on a wall) I found a quick way to clear out the vibration signal. Going into the RetroArch "Quick Menu" (F1 by default) and out again fixes it until the next time the game tells the controller to start vibrating. I suggest assigning it to something on your controller (I have L3+R3) to make things easier until the bug is fixed.