Help with controls

No matter what core I choose (N64, NES, SNES, etc) the input section always shows Retropad and always give the same options.

User 1 B button (down)

User 1 Y button (left)

User 1 Select button

etc…

A NES doesn’t even have a Y button and an N64 doesn’t have a Select button.

The two controllers I have are a DualShock4 (as a x360 controller via Input Mapper) and a Retrobit 8Bitdo NES, SNES, and N64 controllers. Each controller is correctly recognized shown by name in Retroarch.

Still, I can’t figure out how to map the buttons for each system. When using MAME it clearly shows only the available buttons for that specific system, but in Retroarch its all the same buttons (even inapplicable ones) no matter what core I load.

Does anyone know what I am doing wrong? Is there a way to make it only show the buttons available for the respective system selected?

Thanks!

The retropad is a virtual gamepad that we use to provide sane defaults for all cores without having to map them all individually. You can think of the retropad as similar to a Wii U Pro controller.

With that in mind, when you map your gamepad in settings > input > p1 input binds, you’re mapping your physical inputs to the retropad. In fact, if your gamepad is recognized and autoconfigured, you typically don’t need to even touch that menu at all.

Once you load a core plus some content, if you go back into the ‘quick menu’, there’s a submenu named ‘controls’ where you can move the currently loaded core’s buttons around on the retropad and then save those changes on a per-core or per-game basis. This is only necessary if you find the default mapping to be unsatisfactory for whatever reason.

Does that make sense?

I hear what you’re saying, but weather it makes sense is absolutely up for debate.

Arguably, this makes controller configuration more difficult, ultimately dependent and reliant on the auto-configurations, adding an unnecessary layer of complexity. To change a button on a controller, I have to determine which button it “would be” (based on someone else’s assessment) on a generic virtual controller. So instead of changing the B button, I have to figure out where the B button would be on some invisible controller and change that? That is asinine.

For example, the auto-configuration for my Retrobit 8Bitdo N64 controller has the A and B buttons swapped, and when I go to the Game Menu > Controls i see:

Auto: B (btn), (Key: z) = A Button (C-Down)

Y button (left) (Key: a) = B Button (C-Left)

What even is that? What buttons are those? Why can’t it just be system specific buttons (in the left column) and you assign them to buttons you want?

I am not trying to argue that auto-configurations are bad, but if you want to change anything, it is a serious clown fiesta in the controller menus.

Here is another example. For the Atari Jaguar, the controller has a 10-key pad on it. I feel like I need to be Sherlock Holmes in order to assign the 10 key to the top row of my keyboard. None of the buttons are clearly identified, its just cryptic buttons for the “retropad.” How is this problem even a thing? Basically, they have made a problem out of something that wasn’t a problem…

I just want to assign the controls to the buttons on my controller.

Well, conceptually, it can’t be that bad, since Steam adopted an almost identical strategy for their Big Picture Mode controller handling.

If you make an autoconfig profile for your pad, you can also add button labels (it’s a manual process, unfortunately, using a text editor) and the controls menu will show your actual gamepad button names instead of the retropad names.

N64 inputs are always weird because of the confusing labeling. If you’re going to be using an actual N64 pad, you might take a look at the ParaLLEl-N64 core’s “independent c-button mapping” (or something like that) core option, which gets the C buttons off of the right analog and streamlines remapping them to other digital buttons.

I do appreciate you responding. But, this is still driving me slightly mad.

For whatever reason, the A button on my Retrobit N64 controller does not register in game. It doesn’t work with either N64 core. I have also gone as far testing with a clean installation of Retroarch, but I still get the same result.

My controller appears in the Windows Game Controller window as the ‘8Bitdo N64’ and all the buttons work when I test it. In the test I can see the A button is button 1 (aka 0). I see it working in windows and I can also assign it to a Hotkey in Retroarch menus. It appears in the Retroarch interface as 0.

I have examined the ‘Retro-Bit_8Bitdo_RB8-64_USB.cfg’ file and can see the A button is assigned to button 0 and B is assigned to 1, which works fine. No changes have been made to this file.

The controller has the latest firmware updates (v2.00), and I get the same results using both Bluetooth and USB wire connection.

If you can let me know what you think it might be, I’d appreciate it.
Thanks

In the ‘controls’ menu, is anything assigned to that button? If the autoconfig profile is indeed working properly, it should have the buttons properly labeled (that is, not just the retropad defaults), so it should be straightforward to check.

Here what the controls menu shows and below that is the Retro-Bit_8Bitdo_RB8-64_USB.cfg.

Whats going on in the left column? Some start with “Auto:” some don’t. All the buttons say “User #1 RB8-64” under each one, even the ones without “Auto:” in front. The stuff in the parenthesis is strange too. What is (left), what is (btn), and what is (hat)? HAT generally has 4 directions. Why would B be described as (btn) while Y button is described as (left)?

And whats going on in the right column? Where are the button labels from the .cfg file? What is the stuff in the parenthesis supposed to mean? A Button (C-Down)??? What is that? Left (digital)??? Dpad, hat, and digital? Those are all the same thing right? Why the different names?

This is ultra confusing. Please help!

Retro-Bit_8Bitdo_RB8-64_USB.cfg:

input_driver = “xinput”

input_device = "8Bitdo N64 "

input_device_display_name = “RB8-64”

Hex vid:pid and Decimal vid:pid is shown in the “log_verbosity” window, enable “log_verbosity” in retroarch.cfg and run RetroArch.

Hex vid:pid = 2DC8:9002 -> Decimal vid:pid = 11720:36866

input_vendor_id = “11720”

input_product_id = “36866”

input_b_btn = “1”

input_start_btn = “11”

input_up_btn = “h0up”

input_down_btn = “h0down”

input_left_btn = “h0left”

input_right_btn = “h0right”

input_a_btn = “0”

input_l_btn = “6”

input_r_btn = “7”

input_l2_btn = “10”

input_l_x_plus_axis = “+0”

input_l_x_minus_axis = “-0”

input_l_y_plus_axis = “+1”

input_l_y_minus_axis = “-1”

input_r_x_plus_btn = “9”

input_r_x_minus_btn = “4”

input_r_y_plus_btn = “3”

input_r_y_minus_btn = “8”

input_b_btn_label = “B”

input_start_btn_label = “Start”

input_up_btn_label = “Dpad Up”

input_down_btn_label = “Dpad Down”

input_left_btn_label = “Dpad Left”

input_right_btn_label = “Dpad Right”

input_a_btn_label = “A”

input_l_btn_label = “L”

input_r_btn_label = “R”

input_l2_btn_label = “Z”

input_l_x_plus_axis_label = “Joystick Right”

input_l_x_minus_axis_label = “Joystick Left”

input_l_y_plus_axis_label = “Joystick Down”

input_l_y_minus_axis_label = “Joystick Up”

input_r_x_plus_btn_label = “C Right”

input_r_x_minus_btn_label = “C Left”

input_r_y_plus_btn_label = “C Down”

input_r_y_minus_btn_label = “C Up”