Is n64 input bugged on android?

I am on RetroArch Version 1.22.2, the core I’m testing is Mupen64Plus-Next GLES3 (but the GLES2 showed the same issues), my phone is a Poco X4 GT with HyperOs 2.0.3.0

My controllers are a Dualshock 4 and a Gamesir X5 Lite, and both behave normally when testing the retropad.

Log: https://pastebin.com/a3DhBD5Y

I can play NDS, GBA, SNES and PSX games no problem with the on-screen overlay and my controllers, but n64 seems to be bugged. A and B buttons function normally, but not the C buttons. C_Down activates both C_Down and A while C_Left activates both C_Left and B, making some games unplayable. Even with no controller connected, this happens.

While trying to research a lil bit on the matter, I saw that when you connect a controller, it is supposed to map the C buttons to the right stick while at the same time create a “macro” where R2/RT+face_button results in the corresponding C direction. On my controllers, pressing R2 does activate the C buttons on top of the face buttons, but with the issue I described above, where C_Down=C_Down+A. And on top of that, the right analog stick is not recognized at all, even though it seems to be mapped to the C buttons (as seen bellow).

First, I tried changing things around while the “Independent C-Button Controls” turned off, but the C buttons seem to be linked with the A and B buttons, as seen bellow. So assigning them to the right stick just made it behave exactly like the face buttons.

Then I tried turning on “Independent C-Button Controls” and restoring the bindings to default, same behavior. But when I tried to assign the right stick, as seen bellow, some weird things happened.

Now, all of a sudden, right_stick_left inputs L, right_stick_right inputs R, right_stick_up and right_stick_down inputs nothing. And when pressing R2 to enable C_buttons, left and right behave the same, but right_stick_up inputs C_up (correctly) and right_stick_down inputs C_right.

What I want is:

1- Assign the C_buttons to the right analog stick, without needing to press R2 to use them

2- (if above is not possible) Make so R2+Cross inputs only C_Down instead of C_Down+A and R2+Square inputs only C_Left instead of C_Left+B

3- (ideal scenario) All of the above at the same time

I already spent two days trying to fix this with no results.

Every controller has a different mapping in RetroArch… You first have to set your controller’s inputs via:

Main Menu -> Settings -> Inputs -> RetroPad Binds -> Port 1 Controls -> Set All Controls

This will correctly map your current controller’s inputs. These inputs are NOT the same with all controllers, so for instance, let’s say you first map an 8Bit Do controller, and then you try to use a PS3 controller… the inputs will all be wrong because they’re not the same. This can be cleared by adding a second controller in a second Device Index and choosing the right Device Index for every controller you own.

That said, first, try mapping your current controller’s inputs via the aforementioned steps… then try to map your Core’s Controllers again.

Even after setting the retropad’s binds, the issue continues as described, tested on both controllers.

Go to your RetroArch Folder in your device, delete all settings related files, usually in: Device’s Root -> Retroarch -> Config

Alternatively, hold your RetroArch Icon, choose it’s information, delete cache and data.

If neither of these fixes your issue, reinstall.

Tried all 3. Deleted the settings, nothing. Deleted data and cache, nothing. Reinstalled, nothing. Deleted the installer and downloaded it again from the website, nothing. The very same problems show up at the exact same way.

Yikes.

Last I can think of:

  • Downgrade your installation to previous Stable.

OR

  • Update to current Nightly

If either of those still fails, then it might be an actual issue with how your Controller communicates with Android… for this you could try using an “OTG” connection as a last resort.