kodi-game/game.libretro.genplus

Only 1 controller works in the game menus

Closed this issue · 4 comments

Bug report

Describe the bug

Here is a clear and concise description of what the problem is:

Most of the games can only be played in 1 player mode:
Sonic the Hedgehog (2 and 3)
Micro Machines (several versions)
WWF WrestleMania

Mega Bomberman, on the other hand, can be played even in 4 players, but still only one controller works in the game menus. However once the game is started all 4 players can play. In the other games it is impossible to even start the game in 2 player mode without player 2 interaction in the menu.

Would it be possible that there is a difference between assigning the controllers for the in the game menus and for the game itself in the Genesis Plus GX?

RetroArch Behavior

Here is a clear and concise description of what happens in RetroArch with the same core/game:

To Reproduce

Steps to reproduce the behavior:

Debuglog

The debuglog can be found here:

Screenshots

Here are some links or screenshots to help explain the problem:

Your Environment

Used Operating system:

  • Android
  • iOS
  • Linux
  • OSX
  • Raspberri-Pi
  • Windows
  • Windows UWP

Operating system version/name:

Kodi version: 18.9 (LibreELEC on Amlogic SoC)

note: Once the issue is made we require you to update it with new information or Kodi versions should that be required.
Team Kodi will consider your problem report however, we will not make any promises the problem will be solved.

This issue persists even in Nexus.

Observations:

  1. Mega Bomberman works for 4 players even though there are only 2 ports set up in the port setup dialog.
  2. All other games work only for 1 player even though there are 2 ports set in the port setup dialog.
  3. The same games work for 2 players in Picodrive (but there is no 4 player support for Mega Bomberman in Picodrive).
  4. When playing Mega Bomberman in Genplus with 4 players, only the player 1 can control the menus.

So I believe the Genplus has some kind of special support for 4 players games which breaks regular 2 players support. Like there is a kind of multitap hard connected to port 2, no matter what we set in the port setup. Possibly we do not have a correct topology.xml for Genplus?

EDIT:
A workaround is to use the Picodrive for 2 player games for now.

I've checked the Retroarch and compared the controller options.

In Retroarch there are following controllers for Genesis Plus GX:

  1. Empty / Disabled
  2. Joypad Auto
  3. MD Joypad 3 Button
  4. MD Joypad 6 Button
  5. MD Joypad 3 Button + 4 Way Play
  6. MD Joypad 6 Button + 4 Way Play
  7. MD Joypad 3 Button + Team Player
  8. MD Joypad 6 Button + Team Player
  9. MD XE-1AP
  10. MD Mouse
    And there are several other controllers from Sega Master System as Genesis Plus GX also can emulate it.

For reference:
https://segaretro.org/Team_Player
https://segaretro.org/4_Way_Play

The current topology.xml for Genesis Plus GX has 8 primary ports:

<?xml version="1.0" encoding="UTF-8"?>

Probably we should introduce the 4 Way Play and the Team Player controllers and then adjust the topology.xml to 2 primary ports similar to SNES.

Ok, so I've digged a little more:

Here we set the genesis.6button as subclass 4:

<controller id="game.controller.genesis.6button" type="RETRO_DEVICE_JOYPAD" subclass="4">

And here you can see that the subclass 4 is actually the Joypad 6 Button + 4 Way Play:
https://github.com/libretro/Genesis-Plus-GX/blob/4d400a673daa2ff393f21ef48fd6a10a6150bd0b/libretro/libretro.c#L61

So when we select the Genesis 6 Button controller in the port setup, we actually select the 4 Way Play "multitap" and that breaks games without 4 Way Play support.

The correct subclass for a standalone 6 button controller should be 1 instead of 4.

Changing the subclass should fix the 1 player only problem for most of the games, but it will break the 4 players support for the 4 Way Play games. Those should be fixed by adding more controller types and by fixing the topology.

I'm going to test it and try to figure out the best way to support 4 players in Genesis Plus GX.

I've tested it. Changing subclass="4" to subclass="1" fixes the issue (1 player only) for most of the games in Genesis Plus GX, but it breaks the 4 players support in Mega Bomberman as expected.

I'll try to create the 4 Way Play controller and see if we can get the 4 players support back.