libretro / RetroArch

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

6-button no-name USB gamepad setup for genesis/Mega Drive #16816

Closed slavixus closed 3 months ago

slavixus commented 3 months ago

First and foremost consider this:

Description

I have a noname Genesis 6-button gamepad which works fine in windows (it can see all buttons working), and regular emulators let me in normal way set up all the buttons to the corresponding buttons of the system (Fusion, Gens for Genesis, fceux, nestopia for NES), and all works fine there. But not in Retroarch (big respect for such a big work you've done). When I try to bind buttons, it sees it in Port 1 Controls as a SNES USB Gamepad for some reason (Win10 sees it just as usb gamepad), and thus Retroacrh only lets me setup usual SNES buttons, like B, A, Y, X. No C and Z. And even with those 4 buttons setup, they don't work as they should in 6-button games as UMK 3, mapping is messed up(core picodrive).

What should I do with that? Or should I just stop trying play genesis in Retroarch as it can't support correct gamepad input?

Thank you very much, best regards.

Win 10 64, build 1.19.1, but it didn't work wit several builds previously as well, and works great in normal emulators.

nanitaro commented 3 months ago

What is the official name of the “noname Genesis 6-button gamepad”? Retro Arch has a feature that automatically recognizes the controller model and assigns buttons. If you feel nosy, you can disable it from Settings->Input->Autoconfig Enable. Alternatively, updating the controller profile from the online updater may help. Also, if your controller is DirectInput capable, the behavior may be improved by changing the settings in Settings->Drivers->Controller. (xinput->dinput)

slavixus commented 3 months ago

20240725_142414 20240725_142402 That is my gamepad. No names, logos, etc, Win 10 sees it as "usb gamepad", still works in every emulator. After turning Settings->Input->Autoconfig off, Retroarch sees it as "usb gamepad" as well, still proposing to set up buttons that are absent like (shoulder and trigger) L, R, L2, R2, but doesn't let assign C and Z, which I need for Genesis/Mega Drive gameplay obviously. Online updater > Update controller profiles gave no result, switching to dinput either.

nanitaro commented 3 months ago

Really don't know the name...

Modern controllers are largely consistent with the Xbox style. Even if the pad looks like a Genesis-style pad, it is most often internally assigned to the L2, R2, etc. buttons, as well as the C and Z buttons.

If the automatic settings do not work, the controller profile must be set manually. Settings->input->RetroPad Binds->Port1 Controls Here you can check, set and save the controller inputs. For example, you can select the B button and hold down the controller button you wish to bind to. Retro Arch controllers are Xbox standard, so setting up a Genesis-style controller may be confusing. The important thing is to know which button name is really the button you are pressing. Maybe the A button is actually the L2 button, or maybe it is R2. Once you have finished setting up the profile, remember to save the controller profile.

slavixus commented 3 months ago

Thank you so much. "Settings->input->RetroPad Binds->Port1 Controls" - that's what I've done from very start, and there are no buttons for genesis/mega drive setup, only for x-box or SNES. No C and Z buttons to map. mega drive/genesis have 6 action buttons. I need to map those. Ok, I'm back to fusion and gens then.

nanitaro commented 3 months ago

Sorry for the lack of explanation. Settings->input->RetroPad Binds->Port1 Controls If you have correctly bind the controller buttons in Settings->input->RetroPad Binds->RetroPad Binds->Port1 Controls, you should now be able to set them correctly in the core's quick menu, Controls->Port1 Controls. Forget about the C and Z buttons in these settings. First, try to set them up with the idea that you are assigning the buttons of a Genesis-style controller to an Xbox-style controller. (This is where you might get confused.)

In the Quick Menu, Controls->Port1 Controls settings, For each controller button set in RetroPad Binds, set the corresponding Genesis or Saturn controller button. For example, if you try to set the A key, a list of Genesis or Saturn buttons will appear, so select the button you want to correspond to.

Settings->input->RetroPad Binds->Port1 Controls This is a setting to map a button on a real controller to a virtual controller called RetroPad.

Quick menu in the core, Controls->Port1 Controls This setting maps RetroPad buttons to game console buttons.

slavixus commented 3 months ago

I see. Thank you. Now it sort of worked. For those who comes after me: core used is Genesis Plus GX. it lets you assign buttons in quick menu (F1). Thank you very much nanitaro, explaining the pipeline of setting controls via RetroPad (sort of virtual gamepad bindings) helped.

gouchi commented 3 months ago

@slavixus If the issue is fixed, please close it.

You can try to read our documentation Input And Controls and Controller Auto-Configuration to get some information.

Thank you.