Retroarch not recognizing simultaneous button presses

I’m not sure if there’s a setting I’m missing, but I’m using a GPD XD, and I’m trying to play the old WWF Arcade games on Retroarch (Wrestlefest and Superstars) I’ve tried using both the FBA core and the MAME core, but on both games, it doesn’t allow me to run, which is done in the game by simultaneously pressing both buttons. It works fine in MAME4droid, so I know it’s not an issue with the buttons or unit themselves.

Yeah, this is a known issue. We’re not sure exactly what’s going on, though. You might be better off using an overlay that has a single combined button (I’m not sure which ones have that right off the top of my head, though).

If it is touch controls,that explains everything,because they can be awful at times on devices themselves or certain onscreen control sets,not allowing multiple touch points for some random reason despite everything.

If you tried some hardware buttons and still had issues,it may be in the core,because some console cores differ like comparing one to Genesis Plus GX,in Sonic 1,I can press left and right simultaneously (on a keyboard though) to do that slow walk trick while other cores seem to have unique input limits not allowing left and right simultaneously,though that is not buttons a,b,x,y related exactly.

I have noticed even when using a external gamepad that simultaneous button presses are inconsistent in the fba core for some reason, just play marvel vs capcom in easy mode using a gamepad and you will see, to do a special move you have to press 3 buttons at the same time, count how many times it works. Hope it gets fixed.

I also have a GPD XD and enjoy WWF Superstars! Yes, I have the same problem.

First noticed it when I tried a JXD handheld; couldn’t peform any throw techniques in Tekken using the PCSX reARMed core. It’s as if one press of any hardware button cancels any others. Interesting to note that it doesn’t happen on my Xperia Play.

@Modeler Ah, that’s interesting that your Xperia Play isn’t affected. I know we do some weird hacks to make it work correctly but that could help us nail down where the issue is happening.

@hunterk I would be happy to help find the root cause here. My Xperia Play is running CM 10 (Jelly Bean) from the Free Xperia Project, it barely functions but it somehow runs Megadrive games beautifully.

Easiest way to test is with the MD version of Golden Axe, you press A and B together and your player should do a spinning strike behind them. If you press A and B on the touchscreen overlay, it works but the hardware buttons don’t.

I also have another JXD in the post as well as my GPD XD, plus I have an 8bitdo SFC30 gamepad that also suffers from this, it allows me to reproduce the problem on any Android device.

Good info. I may PM you next time someone takes a look at it.

I have this same problem with the xvsf series. Tried- FBA, all the MAMEs, ShieldTV, Nexus Player, Asus Gamepad, Shield Controller and GS Gamepad… All fail to even switch characters accurately in-game, losing playability by some factor.

It’s a well known problem. It’s not core specific, it’s something in the RetroArch polling code for android

It should be

It’s interesting that the problem is specific to Android. If I use my 8bitdo controller with the Linux build of RetroArch, it works flawlessly. As the OP noted there are other Android apps that don’t suffer from this issue such as MAME.

My JXD arrived (flashed it with the official 4.4.4 Kitkat ROM) and it’s the same as the GPD. It would be great to see this fixed. It’s mostly beat-'em-ups that require simultaneous button presses, e.g. Tekken, Final Fight, Streets of Rage, TMNT, Double Dragon…

I confirm this issue using Nvidia Shield Portable with Kitkat. The bug is present in all cores and makes most emulators pretty much unusable on Android, especially with fighting games. The bug prevents the system from recognizing two button presses at the “same time,” Golden Axe Genesis A+B is a good test. The Android polling code must have a slight delay between recognizing button 1 and button 2 “down” action, maybe there is one frame lag or something. I can certainly hold jump and then press attack and that gives the expected “slash while jumping” action, but the overhead slash does not work.

The code is here:

I think the bug is probably in the functions

android_input_poll_event_type_key, android_input_poll, or android_input_poll_input (sic)

or maybe in one of the functions below those last two.

I cannot see anything wrong immediately, comparing to a much older version of this. But quite a bit of complexity has been added over the versions, and maybe some delay was introduced due to the handling of all these events that causes button presses that happen “almost” simultaneously to be recognized with a few frames delay between them in current versions of Retroarch android?

The fact that it works with touch events seems to speak against this hypotheses.

Also, the fact that it works on Xperia means that the bug does not happen when the two buttons are on different controller IDs (the Xperia hack simply combines two controller IDs into one). This should help, but I cannot see where that distinction comes into play during the pollAll loop really.

Man sounds serious, this bug makes a ton of games unplayable hope they find what is the problem.

Guys is this bug present in 1.3.2?

yes it is. we still haven’t figured out why it’s happening, and until we do, we can’t really fix it.

I added some logging to my local copy of the Android input code and can see all presses being registered (it’s not like pressing two at once masks one of them) so it appears to be a timing issue of some sort. I’m currently not sure if it’s just that they’re not registering close-enough together in time for the emulator to realize that two presses are occurring at essentially the same time (the logcat messages indicate this may be the case, but I don’t know how accurate those are) or if perhaps this is some sort of odd race condition that could be occurring or the like. I’ll continue investigating tonight once I’ve got access to my Shield TV. :slight_smile:

When I swapped out the stock kernel for the Faux123 kernel on my Nexus tablet, it fixed the issue… (Don’t know if that helps, maybe you can compare the two and see what’s different)

Just the sort of thing I don’t think we want to hear since I’d hope kernel parameters and tuning wouldn’t affect this sort of thing. :confused: Since it seems other Android emulators don’t have this problem (though before I kill myself with trying to debug this more I suppose I’ll verify that by installing MD.emu or the like on my Shield TV :p) and even (much) older versions of Retroarch apparently didn’t, I’m still hopeful we can find a solution for this.

That is great man! keep the good work, hope you find a solution.