libretro / vbam-libretro

A fork of VBA-M with libretro integration
25 stars 30 forks source link

rumble lags horribly #81

Open kcin2001 opened 5 years ago

kcin2001 commented 5 years ago

Please fill out this form:

Expected behavior

For the game to run normal speed with a game that uses rumble is played with a controller that can rumble

Actual behavior

slideshow (but normal speed if controller is unplugged)

Steps to reproduce the behavior

load up wario ware twisted or drill dozer, and have a rumble capable controller plugged in, watch as everything slows to a crawl

Crash bugs

If this is a crash bug, and you have the time and inclination, please provide a symblic backtrace.

Instructions for doing so are here.

ROM details

Which games are affected by the issue (please state if GBA or GB game): warioware twisted and drill dozer Which games, if any, are NOT affected by the issue (please state if GBA or GB game): surprisingly pokemon pinball is fine Include screenshots of ROM Information (File > ROM Information):

If you are using a BIOS file, please say which one.

Option details

Video driver (simple, opengl): gl Sound driver (directsound, xaudio, openal, SDL): xaudio

Build details

Operating System (Windows, Mac, Linux (state distribution), etc.): windows If using Linux, specify if using xorg or Wayland:

Version of code (pre-built binary version, or commit ref, or just "master"):

Hardware details:

If your joystick or gamepad isn't working in Linux, please try to troubleshoot using the information on this page: https://wiki.archlinux.org/index.php/Gamepad BEFORE filing an issue. We use SDL for joystick support, any problems will generally be an issue with SDL and NOT the emulator.

If relevant, the joystick you are using and the drivers you are using for it: a third party xbone controller with official xbone driver

negativeExponent commented 5 years ago

i cant replicate this both in drill dozer or the first round of wario twisted with my xbox 360 controller and linux. it rumbles as it should and stops.

negativeExponent commented 4 years ago

i can only guess that constantly running rumble callback function each frame is causing this issue. rumble cb should only be called when and if it was not already turned ON or OFF in the last frame, meaning if its already rumbling then skip callback. Rumble should also stop at a certain number of frames even when a "stop" request is not initiated by game/core. I have these implementation on my repo if you are able to compile and test.