darthcloud / BlueRetro

Multiplayer Bluetooth controllers adapter for retro video game consoles
https://blueretro.io
Apache License 2.0
1.23k stars 104 forks source link

GamePadALT doesn't seem to work for Sega Genesis #638

Closed vicsidious closed 2 months ago

vicsidious commented 1 year ago

BlueRetro firmware version

1.8.3

BlueRetro firmware specification

HW1

BlueRetro firmware variant

Universal

BlueRetro hardware type

External adapter with detachable cord

Manufacturer

Myself

System used

SEGA MegaDrive Genesis

Bluetooth controller brand & name

8BitDo Arcade Stick / 8BitDo DIY Kit for Sega Genesis

What is problem? (only list ONE problem per report)

Selecting GamePadAlt and power cycling the Esp32 doesn't change to 6 buttons gamepad for Sega Genesis. Firmware 1.7.3 didn't have this issue. I noticed it since I've updated to 1.8.3. I went from 173 to 183 directly.

What did you expect to happen?

Enabling X, Y, Z and Mode button.

Attach files like logs or Bluetooth traces here

I don't know how to do that, but am willing to learn!

retrofank commented 1 year ago

1.8.3 works for Sony official DS4 controllers in ALT mode 6 button and a 8bitDo M30 i tried. Make sure the setting in the web GUI is saved and a hard power cycle (not via button hold) is done.

Chandler-Kluser commented 1 year ago

I am using v1.8.3 HW1 with 8BitDo M30. GamePad and GamePadAlt have only Start button working, I am using the BlueRetro Core from AliExpress with the MD adapter. Using DS4 is working as expected.

darthcloud commented 8 months ago

Please try in v1.9 https://github.com/darthcloud/BlueRetro/releases/tag/v1.9

Tested in MK1 two player gamepadalt myself today.

Raton-Laveur commented 8 months ago

Different behavior on 1.9; X, Y and Z are ok, but Start and Mode are weird:

BlueRetro firmware version 1.9

BlueRetro firmware specification HW1

BlueRetro firmware variant Universal

BlueRetro hardware type External adapter with detachable cord

Manufacturer Aliexpress

System used SEGA Mega Drive II

Bluetooth controller brand & name 2x 8BitDo M30

What is problem? (only list ONE problem per report) On both Player 1 and 2 on GamepadAlt: Pressing Start gives Start + Mode Pressing Select gives nothing.

Remapping Mode to another button, such as R, also gives nothing.

What did you expect to happen? On both Player 1 and 2 on GamepadAlt: Pressing Start giving Start Pressing Select giving Mode.

Tested with 240p test suite and compared behavior to a standard Sega 6-button pad.

scrap-a commented 2 months ago

I also experienced the symptom of mixed START and MODE. (v1.9.2) I am just guessing from looking at the source, as I think the cause is that START and MODE are in the same place in the mapping table of "genesis_btns_mask" in "main/adapter/wired/genesis.c".

    /* TH LOW */
    {
        0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, BIT(P1_LD_DOWN), BIT(P1_LD_UP),
        0, 0, 0, 0,
        BIT(P1_A), 0, 0, 0,
        BIT(P1_START), 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0,
    },
    /* 6BTNS */
    {
        0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, BIT(P1_Y),
        BIT(P1_MODE), 0, 0, 0,
        BIT(P1_X), BIT(P1_X), 0, 0,
        BIT(P1_Z), BIT(P1_Z), 0, 0,
    },

The BIT(P1_START) for TH LOW and the BIT(P1_MODE) for 6BTNS are both located in row 6, column 1. I believe that the BIT(P1_MODE) for 6BTNS is probably correct in row 2. 0, BIT(P1_MODE), 0, 0,

The mapping for 2P is the same.

darthcloud commented 2 months ago

Very good catch @scrap-a

Feel free to send a PR or I can fix it later today.

scrap-a commented 2 months ago

Unfortunately, I have not the build environment, so I cannot verify this right away. If you need a PR, please wait a few days.

darthcloud commented 2 months ago

That beta should fix the overlap between start and mode: https://github.com/darthcloud/BlueRetro/actions/runs/8760755824

scrap-a commented 2 months ago

Excellent! The OVERLAP symptom has been completely fixed about both 1P and 2P.

darthcloud commented 2 months ago

Fixed in v24.04