libretro / beetle-pce-fast-libretro

Standalone fork of Mednafen PCE Fast to libretro
GNU General Public License v2.0
29 stars 56 forks source link

Pressing Opposing and / or Multiple Directional Inputs causes glitched behavior. #92

Open ghost opened 6 years ago

ghost commented 6 years ago

Description

Sent here as per https://github.com/libretro/RetroArch/issues/6573#issuecomment-383895667 Tagging @twinaphex since he assisted with the other cores.

When simultaenously pressing, quickly alternating between, and / or holding both left and right (or up and down in some games) directions at the same time, unusual behavior can be observed. For example, in "New Adventure Island", if both Up and Down are held at the same time, Master Higgins will use a different animation than normal and if performed in the air, he'll hover indefinitely. In "Die Hard (Japan)", the player can get stuck spinning in place indefinitely if they press any 3 directions at once, or press directions at a fast enough speed to register as being pressed simultaneously. The latter example will softlock the player, preventing any further progress.

There could be many more games that exhibit similar symptoms when pressing opposing or multiple directional inputs, but I can't test every game.

Standalone emulators like FCEUX and several other RetroArch cores have an option disabled by default labeled Allow Opposing Directions. I feel it'd be best if this core adopted this as well.


Expected behavior

Pressing left and right / up and down simultaneously is not physically possible except on a keyboard (unless the d-pad has been remapped to buttons) and shouldn't be allowed, at least by default. It's also banned universally on speedrun.com. Standalone emulators like FCEUX and several other RetroArch cores have an option disabled by default labeled Allow Opposing Directions. I feel it'd be best if this core adopted this as well.


Actual behavior

Video of issue in Die Hard: https://streamable.com/i61vi

See also: 2018-04-24--171844_1600x900 2018-04-24--171839_1600x900


Steps to reproduce the bug


Bisect Results

Did not bisect. Pretty sure issue has been present since Day 1.


Version/Commit

Environment information

negativeExponent commented 4 years ago

this is already fixed on latest commit

i30817 commented 4 years ago

From this? https://github.com/libretro/beetle-pce-fast-libretro/pull/161

negativeExponent commented 4 years ago

my bad. its not on pce_fast. should be easy to add though...

https://github.com/libretro/beetle-supergrafx-libretro/blob/20ce77366a09fa4c5dc3aa6897b5c65e2b43834b/libretro.cpp#L1036-L1043

but to be honest. such feature should be a frontend option.