libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
9.8k stars 1.78k forks source link

SNES multitap doesn't work with netplay #10424

Open NanoDrivee opened 4 years ago

NanoDrivee commented 4 years ago

Description

When doing SNES netplay with 3 players (bsnes or snes9x core) the third player can't enter any inputs. Tested several games locally and there was no issue controlling 3 player inputs at once. This behaviour is core agnostic, only difference is that with bsnes core port 3 is labeled RetroPad instead of SNES pad. I could still control port 3 locally.

Expected behavior

Player 3 should be able to connect and use their controller the same as player 1 and 2 when doing SNES netplay.

Actual behavior

Player 3 can connect to host and everyone (host and clients) have player 2 set to multitap in their local configuration but no inputs are being registered.

Steps to reproduce the bug

  1. Host starts netplay session and first client connects, requesting player 2 slot. Second client connects, requesting player 3 slot.
  2. Player 1 sets port 2 controller to multitap.
  3. Player 2 goes to menu, binds their controls for port 2. Sets port 2 to multitap, netplay session still registers inputs from port 2.
  4. Player 3 goes to menu, binds their controls for port 3. Sets port 2 to multitap.
  5. Player 3 tries to enter inputs. None registered by netplay session.

Bisect Results

No errors and we've never been able to get this working successfully. Started happening a few hours ago when our group was trying to play Trials of Mana with the 3 player hack. I've tested this locally and I've confirmed that the patch itself is working. We also tried binding everyone's controls to port 1 but RetroArch doesn't seem to handle switching port inputs on the fly for netplay. Player 2 was only able to get input when they bound their controls to port 2. Changing the controller type from SNES pad to multitap (everyone did this to eliminate variables) didn't seem to have any effect.

Version/Commit

Environment information

MrCantaloupe commented 3 years ago

Can confirm this bug is still present for 3-player patch of Seiken Densetsu 3 / Trials of Mana on Retroarch 1.9.0, however third-player input has tremendous update lag for clients, updating only one frame every five seconds or so. First and second player update correctly in real(ish) time. The host sees third player's movements update correctly as well.

Chaos81 commented 3 years ago

My community (NHL94) has played numerous games with 4 players co-op with no issues using the Snes9x core.

Steps:

The other players do not need to bind to port 2 and 3, only to their LOCAL port 1. Also, if the host has local binds set up for port 2 and 3, they need to set the Device Index in those port binds to disabled.

When they connect, they will automatically connect to player 2 and 3 (depending on the order).

Saving the game remap file allows you to not have to go through this setup the next time for that game. Just load the core and the game, host, have others connect, and away you go.

kevinvlowell commented 2 months ago

Anyone solve this issue? The bug is still present exactly as described by the OP, and the solution presented after does not work for me.

robberval commented 2 days ago

Anyone solve this issue? The bug is still present exactly as described by the OP, and the solution presented after does not work for me.

Chaos81's reply worked for me. No perceivable lag.