trying to get a second controller to work without breaking the first

I need help dealing with some confusion. Normally I use an XB1 controller that is set up very well to my preferences. I keep the configuration to default except for Retroarch controls including savestate management (right-stick-click + ).

I bought one of the new 8bitdo mod kits for the NES classic controller to turn it into a bluetooth device and… I’m lost. I’m trying to get the controller to a) behave correctly and b) have its own savestate controls c) without breaking the XB1 configuration.

First, regarding c), how do I do that? I know that that I can save and load custom cfgs for Retroarch, but are there separate controller configurations that load when a different controller is connected?

On a), currently the kit appears to connect via xinput. I tried changing the joypad driver to dinput to see if that changed anything, but no luck. The d-pad, A button, and start button operate correctly in NES cores, but the B button appears to be mapped to a turbo mode and the select button doesn’t work (I think; I’ll test another game to make sure). I’m guessing what is happening is that the controller is presenting itself as a four button gamepad and the button I want on B is assigned someplace else.

This controller kit has a configuration function (hold select + down) but it says in the instructions that it swaps A-B and X-Y. See: http://download.8bitdo.com/Manual/Mod-Kit/Mod-Kit-for-NES-Original&Classic-controller.pdf lower right, button mapping section.

I’m really not clear where to go from here. Adjust the controller or adjust Retroarch? And if in Retroarch, what imaginary button am I changing to regain access to the NES “B”?

Thanks!

Ok, so I’m trying to understand what’s happening better. Apparently my device autodetects as RB-64 under xinput. I do not know why. I do see that an autoconfig for this devices simply doesn’t exist yet. I would volunteer but have no idea how/whether to do it.

someone submitted a profile for it already, but I think it got the vid/pid wrong, so I haven’t committed it yet.

Saving your own autoconfig profile should hopefully override that false match, but if not, you can delete the bad one.

Let me see if I can help you with the PID/VID. I’m not too familiar with getting the right numbers for bluetooth but under the device properties and “Bluetooth HID Device” I have: BTHENUM{00001124-0000-1000-8000-00805f9b34fb}_VID&00022dc8_PID&5104

Under HID compliant game controller I have this entry as well as: HID\VID_2DC8&UP:0001_U:0005

Does that help?

1 Like

BTW: this is for the NES kit. I haven’t assembled the SNES kit yet.

Hi. If I want to follow up on inclusion of the autoconfig, where may i find the commit on Github? (I’m new to navigating larger projects on the site.)

Edit: never-mind, I found it. https://github.com/libretro/retroarch-joypad-autoconfig, correct?

1 Like

Is this the commit I was waiting for? If so I shall break the modded controllers out of their box again.

those are from someone else, but yeah, give 'em a shot :slight_smile:

So, I saw that the modkit cfg files were already in my system, but the PID and VID still don’t match. Mine are 5104 and 2DC8, respectively (cross checked with Retroarch verbose log). Checking the configs, the default modkit numbers are: 736 and 1118. I commented those out and replaced them with 5104 and 11720. Retroarch still chose the RB8-64 device which has IDs of 14384 and 11720. So I assume I got the vendor ID correct, but why did Retroarch choose 14384 over 5104?

RetroArch uses a scoring method where each thing that matches is worth some number of “points” and then the highest score gets used. I know vid and pid are in that system, along with reported name and maybe a few others…? So, maybe something else matched (like name or something equally unimportant) and that caused one of the others to have a higher score /shrug

Where may I find the scoring inputs? I could probably make adjustments and test if I know the system a bit better.

I think it’s in tasks/task_autodetect.c:

Cool, I’ll look for that.

I’m an idiot. I never changed 5104 to decimal because thinking is hard. Changing the VID and PID now works correctly.

I think what I’ll do now is test my second N30 modkit and make sure the vendor ID is the same. If it is, shall I submit a change to the repository or is there a possible secondary conflict where I have a weirdly unique PID?

I think I’m in the right because other config files use the 8bitdo VID of 11720 vs. the submitted 1118, but I still don’t know enough about these systems to really understand the context fully.

Yeah, I think 11720 is the correct VID.

A PR fixing it would be very much appreciated :slight_smile:

What I’ll do:

  • Test the layout
  • Crosscheck my second board ID
  • Install the SN30 modkit and adjust IDs if necessary
  • Test the SN30 layout
  • Crosscheck the second board ID
  • Submit changes

Sound good?

1 Like

yeah, sounds great. btw, someone just submitted (and I merged) some more autoconfigs (mostly for Android, IIRC). You might check them out as well while you’re at it

Ok, before we were so rudely interrupted by that brain of mine forgetting how shaders worked, the layout is wrong too. I think I have it straight for the n30 now.

I would like to ask if it’s possible to keep separate hotkey bindings per controller. For example, on the XB1 I have hotkey-enable bound to the right-stick click and use d-pad inputs to manage save states. Retropie uses the select button similarly and I think that’s a good setup, but I don’t want to lose the XB1 settings. For the XB1, hotkey-enable will be button 9 and for the modkit, hotkey-enable will be button 10.

No, we have no way of setting per-controller hotkeys. However, you can add them yourself to your local autoconfig profiles. We just don’t want them in the repo, since it’s a personal/subjective preference

Yeah, I was about to ask whether autoconfig supported that. I shall give it a try and attempt to remember to delete it from the repo copy. I assume the hotkey input commands follow the same syntax as the other assignments?