Jump to content
LaunchBox Community Forums

Figuring out some new controls in Retroarch with 8bitdo conversion kit for NES/SNES classic


Recommended Posts

Yo all.

I just got a few kits I ordered to convert my NES and SNES classic controllers into 8bitdo Bluetooth controllers (seen here: https://shop.8bitdo.com/products/mod-kit-for-nes-classic-controller). It looks like things connect alright; however the button auto-layout is incorrect. I need to go to work shortly, but I'll spend some time now or on the weekend dealing with button configuration.

My objectives:

- The XB1 must remain my primary controller and configuring the new one cannot displace the old configuration.

- The XB1 uses a savestate scheme where R-stick + (key) control Retroarch functionality. Example: R-stick + start = Retroarch menu, R-stick + select = exit Retroarch, R-stick + dpad-down = save state, R-stick + dpad-up = load state. That scheme has to stay (I worked hard to get other emulators to play nice with the scheme).

- I will need to get the bluetooth controller layout correct. Right now I think B is mapped to A and A is mapped to A-turbo. Select doesn't work.

- It will try to get a second custom savestate scheme to work, controlled by select similar to Retropie.


If anyone sees any roadblocks or "ummm"s, let me know.


Link to comment
Share on other sites

I use the 8bitdo controllers. The manual will show you how to boot it in xinput, dinput, swtich mode, etc... dinput should set the correct button layout. A is A, B is B. 

If I remember correctly though the kits actually have a hotkey swap for switching A/B X/Y in the user manual. 

edited: added manual link take a look at the button mapping section. 

Link to comment
Share on other sites

I believe that when you do the initial start option (choosing to start as xinput, dinput, switch mode) you do the proper start method such as start+up then each subsequent start if you just hit the start button it starts in the last mode you chose. So you dont need to do start+up each time after you do it once. 

You should be able to start using the start+up method than follow the remap options listed in the manual. Hold Select+Down for 3 seconds to saw A-B and X-Y. I have not messed with that so I cannot confirm it will do what you want. 

Link to comment
Share on other sites

Well, no luck this evening unfortunately.

The controller options are really limited it turns out. If I press Sel + down I can swab A and B and X and Y but I cannot switch them independently. This is too bad because A is correct while B is set to "turbo A" (mario jumps with A and jumps repeatedly with B, no running)

I can't seem to figure out how to get an input profile to stick only to the one the device; not sure what configuration files keep the controller assignments. Changing the button assignments on the 8bitdo also changes my XB1 layout and I have to change it back. I've tried changing the buttons assignments several times and cannot seem to figure out what the B button is mapped to. Yeah, this is definitely not one of those moments where the Retroarch controller schemes "just work".

Link to comment
Share on other sites

Not really sure. I have not messed with the DIY kits in RA and I do not have one anymore as I gave it to a coworker. I know for the other controllers that if I start in d-input mode (I think the manual lists it as Android) I can map the buttons in RA to the correct A and B. Just double checked and the SF30 Pro and A and B are correctly mapped. Hopefully a firmware update down the line will allow better mapping on the DIY kits. 

Link to comment
Share on other sites

Thanks for responding. Yeah, I'm trying it again when I'm not dead tired and I still can't get any change proper change. Moreover for some reason my keyboard f1 key won't go into the menu. Would it help if I reported the input button number when I try and set a key? (like 0-11 kind of thing)

Link to comment
Share on other sites

So going through all the buttons:

  • B 0
  • A 1
  • Start 11
  • Select 10
  • Rpad +0
  • Lpad -0
  • Upad -1
  • Dpad +1

Now if I do a button swap (hold select + down)

  • B 1
  • A 0

This means that with the current connection I actually can't use the DiY kit with Retroarch because the button input that supposedly maps to Retroarch's B button doesn't actually exist. I suppose I'll have to contact 8bitdo support unless someone has some insight or can correct some misunderstanding I have.

Link to comment
Share on other sites

Are you talking about the "0"? That does register as a button from the 8bitdo controllers. Below is how my SN30 Pro is set in RA and A/B are correct when playing SNES games. I wonder if the kits just do not work right. I would probably email 8bitdo. Cam you edit the core's config file you are using in RA and see if it will work?

input_player1_b_btn = "1"
input_player1_y_btn = "4"
input_player1_select_btn = "10"
input_player1_start_btn = "11"
input_player1_a_btn = "0"
input_player1_x_btn = "3"

Link to comment
Share on other sites

Well that was interesting. So now I understand what Retroarch was doing. The controller is auto-detecting as RB8-64 under xinput. I have no idea why, though. The button numbering on user 1 in the autoconfig file reads the same as yours except for select which... does not exist on the n64 controller. Curioser and curioser.

Is there a way to force which device the autodetect discovers? I'm wondering if forcing it to read as 8Bitdo_Pro_NES30_BT will help at all.

Edited by Bedwyr
Link to comment
Share on other sites

So looks like he is saying in that post if you delete the autoconfig file for that controller name you should be able to generate a new one. The other issue though is it is recognizing it as an xinput. I believe in order to be able to make the effective swap you have to set the controller to dinput mode (Android). Try starting it with Start+B and see if you can change the map better. As mentioned earlier that is the only way I can get the non DIY kit controllers to work properly for the correct A/B mappings.

Xinput mode will continue to recognize Xbox style controller binds.

Link to comment
Share on other sites

So you tested it and it doesn't work? If so, then the kits are different as all other 8bitdo controllers work like that. Its not just Android mode it is their d-input mode for windows also. On this model (image below) it is just start, most other models it is Start+B. 

D-input mode connects to windows just fine and I see that mode is available in the diy kits manual. If it does not work for you then you may just be stuck waiitng for a workaround or a firmware upgrade. 


Link to comment
Share on other sites

  • 4 weeks later...

I'm getting stuck in a similar situation.  I have plenty of 8bit do's production controllers and none have this problem.   I have a pair of their USB Receivers for PC/Switch.  I use them with 2 N30 Arcade sticks and SF Pro, SN Pro.  With my N30 Arcade sticks for MAME to work correctly I leave it in Xinput with X/Y set.  For Retroarch (like NES) I have to switch to Dpad from X/Y for directional control to register.  With my SF and SN Pro, I had to boot them in Android mode (which I'm pretty sure just means Dinput) and then they work great in Retroarch (BNES and other Cores) I have correct control of games.  But last night I built my first Mod Kit (from the NES Classic version) and while the controller looks and feels excellent, it seems to be stuck on X/Y for directional.  No combination of startup choices is allowing me to get it to take inputs like the SN/SF Pro does - so I can't control directionals, but A/B I think are correct (Select,Start,A and B all work).  I have a second kit to build, and I am about to order 2 of the Genesis kits - but I really need to get this working or it will all be for no reason.

Link to comment
Share on other sites

Hey, I just got back from a trip and haven't checked the Retroarch repository yet to see if someone else beat me, but I did get the modkit working correctly. The autoconfigs I have are finally correct and use the right Bluetooth IDs. If you want to look at the discussion thread to see my learning process, look here: https://forums.libretro.com/t/trying-to-get-a-second-controller-to-work-without-breaking-the-first/17433

It's a bit long, but I think the system is better run in Android mode because for some reason, the N30 and SN30 (SNES modkit) report the exact same PID of 02E0 in hex. Which is stupid and I can't figure out why. I never got a final response so when I get a chance and if it hasn't been done already, the advice will be to assume Android mode and use the proper VID and PID for that. It'll confuse the hell out of people starting up in Windows mode, but at least it avoids the PID conflict.

Hope that helps.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...